Skip to content

Commit

Permalink
Workaround iwlwifi load issue for AX200-series when MSI-X is unavailable
Browse files Browse the repository at this point in the history
  • Loading branch information
marmarek committed Sep 2, 2022
1 parent b1bc9ec commit 5fcfe0f
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 0 deletions.
46 changes: 46 additions & 0 deletions 0001-Re-enable-interrupts-before-loading-PNVM.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
From b4024bb479b2ee9b34125b65472a0537043c8dc4 Mon Sep 17 00:00:00 2001
From: Chris Rogers <crogers122@gmail.com>
Date: Thu, 1 Sep 2022 15:56:14 +0200
Subject: [PATCH] Re-enable interrupts before loading PNVM.

For cards in the AX210+ family that advertise a SKU and try to load a PNVM,
in the non-MSIX (MSI) case the normal firmware load flow disables all interrupts
from the card except ALIVE and RX. This is primarily to enforce the driver's
assumption that we will not receive RF_KILL before the firmware has finished
loading, or else an unintelligible error is dumped.

This unfortunately also prevents us from responding to an interrupt from the
card after 'kicking the doorbell' (UREG_DOORBELL_TO_ISR6_PNVM). We therefore
wait until the specified timeout and report "Timeout waiting for PNVM load!"
and fail out of driver initialization.

This patch re-enables interrupts prior to loading the PNVM so we can respond
properly when the card notifies us of a successful PNVM load. Since the FW is
technically 'ALIVE' at this point, it should be ok to also re-enable RF_KILL.
---
drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index f041e77af059..ec982ddce196 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -404,6 +404,15 @@ static int iwl_mvm_load_ucode_wait_alive(struct iwl_mvm *mvm,
return -EIO;
}

+ /*
+ * re-enable interrupts so we can get a response from
+ * the card when kicking the doorbell during pnvm load.
+ * This is only needed in the non-msix case. FW is
+ * technically alive at this point so re-enabling rf-kill
+ * interrupt is probably ok.
+ */
+ iwl_trans_interrupts(mvm->trans, true);
+
ret = iwl_pnvm_load(mvm->trans, &mvm->notif_wait);
if (ret) {
IWL_ERR(mvm, "Timeout waiting for PNVM load!\n");
--
2.35.3

1 change: 1 addition & 0 deletions kernel.spec.in
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ Patch21: v6-ACPI-skip-IRQ-override-on-AMD-Zen-platforms.patch
Patch22: 0001-xen-blkback-Advertise-feature-persistent-as-user-req.patch
Patch23: 0002-xen-blkfront-Advertise-feature-persistent-as-user-re.patch
Patch24: 0003-xen-blkfront-Cache-feature_persistent-value-before-a.patch
Patch25: 0001-Re-enable-interrupts-before-loading-PNVM.patch

%description
Qubes Dom0 kernel.
Expand Down

0 comments on commit 5fcfe0f

Please sign in to comment.