static const u16 init_complete[] = {
                INIT_COMPLETE_NOTIF,
        };
+       u32 sb_cfg;
        int ret;
 
        if (mvm->trans->cfg->tx_with_siso_diversity)
 
        mvm->rfkill_safe_init_done = false;
 
+       sb_cfg = iwl_read_umac_prph(mvm->trans, SB_MODIFY_CFG_FLAG);
+       /* if needed, we'll reset this on our way out later */
+       mvm->pldr_sync = !(sb_cfg & SB_CFG_RESIDES_IN_OTP_MASK);
+       if (mvm->pldr_sync && iwl_mei_pldr_req())
+               return -EBUSY;
+
        iwl_init_notification_wait(&mvm->notif_wait,
                                   &init_wait,
                                   init_complete,
        ret = iwl_mvm_load_ucode_wait_alive(mvm, IWL_UCODE_REGULAR);
        if (ret) {
                IWL_ERR(mvm, "Failed to start RT ucode: %d\n", ret);
+
+               /* if we needed reset then fail here, but notify and remove */
+               if (mvm->pldr_sync) {
+                       iwl_mei_alive_notif(false);
+                       iwl_trans_pcie_remove(mvm->trans, true);
+               }
+
                goto error;
        }
        iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_AFTER_ALIVE,
        struct ieee80211_channel *chan;
        struct cfg80211_chan_def chandef;
        struct ieee80211_supported_band *sband = NULL;
-       u32 sb_cfg;
 
        lockdep_assert_held(&mvm->mutex);
 
        if (ret)
                return ret;
 
-       sb_cfg = iwl_read_umac_prph(mvm->trans, SB_MODIFY_CFG_FLAG);
-       mvm->pldr_sync = !(sb_cfg & SB_CFG_RESIDES_IN_OTP_MASK);
-       if (mvm->pldr_sync && iwl_mei_pldr_req())
-               return -EBUSY;
-
        ret = iwl_mvm_load_rt_fw(mvm);
        if (ret) {
                IWL_ERR(mvm, "Failed to start RT ucode: %d\n", ret);
 
 
        for (retry = 0; retry <= max_retry; retry++) {
                ret = __iwl_mvm_mac_start(mvm);
-               if (!ret)
-                       break;
-
-               /*
-                * In PLDR sync PCI re-enumeration is needed. no point to retry
-                * mac start before that.
-                */
-               if (mvm->pldr_sync) {
-                       iwl_mei_alive_notif(false);
-                       iwl_trans_pcie_remove(mvm->trans, true);
+               if (!ret || mvm->pldr_sync)
                        break;
-               }
 
                IWL_ERR(mvm, "mac start retry %d\n", retry);
        }