if (ret)
                goto err_pci_disable_msi;
 
+       ret = ath11k_pci_set_irq_affinity_hint(ab_pci, cpumask_of(0));
+       if (ret) {
+               ath11k_err(ab, "failed to set irq affinity %d\n", ret);
+               goto err_pci_disable_msi;
+       }
+
        ret = ath11k_mhi_register(ab_pci);
        if (ret) {
                ath11k_err(ab, "failed to register mhi: %d\n", ret);
-               goto err_pci_disable_msi;
+               goto err_irq_affinity_cleanup;
        }
 
        ret = ath11k_hal_srng_init(ab);
                goto err_ce_free;
        }
 
-       ret = ath11k_pci_set_irq_affinity_hint(ab_pci, cpumask_of(0));
-       if (ret) {
-               ath11k_err(ab, "failed to set irq affinity %d\n", ret);
-               goto err_free_irq;
-       }
-
        /* kernel may allocate a dummy vector before request_irq and
         * then allocate a real vector when request_irq is called.
         * So get msi_data here again to avoid spurious interrupt
        ret = ath11k_pci_config_msi_data(ab_pci);
        if (ret) {
                ath11k_err(ab, "failed to config msi_data: %d\n", ret);
-               goto err_irq_affinity_cleanup;
+               goto err_free_irq;
        }
 
        ret = ath11k_core_init(ab);
        if (ret) {
                ath11k_err(ab, "failed to init core: %d\n", ret);
-               goto err_irq_affinity_cleanup;
+               goto err_free_irq;
        }
        ath11k_qmi_fwreset_from_cold_boot(ab);
        return 0;
 
-err_irq_affinity_cleanup:
-       ath11k_pci_set_irq_affinity_hint(ab_pci, NULL);
-
 err_free_irq:
        ath11k_pcic_free_irq(ab);
 
 err_mhi_unregister:
        ath11k_mhi_unregister(ab_pci);
 
+err_irq_affinity_cleanup:
+       ath11k_pci_set_irq_affinity_hint(ab_pci, NULL);
+
 err_pci_disable_msi:
        ath11k_pci_free_msi(ab_pci);