]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: iwlwifi: mvm: pause TCM on fast resume
authorMiri Korenblit <miriam.rachel.korenblit@intel.com>
Thu, 29 Jan 2026 19:27:10 +0000 (21:27 +0200)
committerMiri Korenblit <miriam.rachel.korenblit@intel.com>
Tue, 3 Feb 2026 13:02:05 +0000 (15:02 +0200)
Not pausing it means that we can have the TCM work queued into a
non-freezable workqueue, which, in resume, is re-activated before the
driver's resume is called.
The TCM work might send commands to the FW before we resumed the device,
leading to an assert.

Closes: https://lore.kernel.org/linux-wireless/aTDoDiD55qlUZ0pn@debian.local/
Tested-by: Chris Bainbridge <chris.bainbridge@gmail.com>
Fixes: e8bb19c1d590 ("wifi: iwlwifi: support fast resume")
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20260129212650.05621f3faedb.I44df9cf9183b5143df8078131e0d87c0fd7e1763@changeid
drivers/net/wireless/intel/iwlwifi/mvm/d3.c

index 07f1a84c274efe9e110c53b859fb08b72642fd94..af1a45845999bbac2823510eb2f49f05fab8285a 100644 (file)
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
 /*
- * Copyright (C) 2012-2014, 2018-2025 Intel Corporation
+ * Copyright (C) 2012-2014, 2018-2026 Intel Corporation
  * Copyright (C) 2013-2015 Intel Mobile Communications GmbH
  * Copyright (C) 2016-2017 Intel Deutschland GmbH
  */
@@ -3239,6 +3239,8 @@ void iwl_mvm_fast_suspend(struct iwl_mvm *mvm)
 
        IWL_DEBUG_WOWLAN(mvm, "Starting fast suspend flow\n");
 
+       iwl_mvm_pause_tcm(mvm, true);
+
        mvm->fast_resume = true;
        set_bit(IWL_MVM_STATUS_IN_D3, &mvm->status);
 
@@ -3295,6 +3297,8 @@ int iwl_mvm_fast_resume(struct iwl_mvm *mvm)
                mvm->trans->state = IWL_TRANS_NO_FW;
        }
 
+       iwl_mvm_resume_tcm(mvm);
+
 out:
        clear_bit(IWL_MVM_STATUS_IN_D3, &mvm->status);
        mvm->fast_resume = false;