2020-08-20 01:26:24

by Connor Davis

[permalink] [raw]
Subject: [PATCH] iwlwifi: mvm: fix RFH_QUEUE_CONFIG_CMD bug

If iwl_configure_rxq is called when mvm->trans->num_rx_queues == 1,
an RFH_QUEUE_CONFIG_CMD is sent with cmd->num_queues == 0. This results
in an error when the interface is brought up:

[ 10.073760] iwlwifi 0000:3b:00.0: Applying debug destination EXTERNAL_DRAM
[ 10.239723] iwlwifi 0000:3b:00.0: FW already configured (0) - re-configuring
[ 10.441592] iwlwifi 0000:3b:00.0: Microcode SW error detected. Restarting 0x2000000.
[ 10.442812] iwlwifi 0000:3b:00.0: Start IWL Error Log Dump:
[ 10.442815] iwlwifi 0000:3b:00.0: Status: 0x00000040, count: 6
[ 10.442817] iwlwifi 0000:3b:00.0: Loaded firmware version: 48.4fa0041f.0 cc-a0-48.ucode
[ 10.442818] iwlwifi 0000:3b:00.0: 0x00000071 | NMI_INTERRUPT_UMAC_FATAL
[ 10.442820] iwlwifi 0000:3b:00.0: 0x000022F0 | trm_hw_status0
[ 10.442821] iwlwifi 0000:3b:00.0: 0x00000000 | trm_hw_status1
[ 10.442822] iwlwifi 0000:3b:00.0: 0x004F8E3C | branchlink2
[ 10.442823] iwlwifi 0000:3b:00.0: 0x004E4FF4 | interruptlink1
[ 10.442825] iwlwifi 0000:3b:00.0: 0x004E4FF4 | interruptlink2
[ 10.442826] iwlwifi 0000:3b:00.0: 0x00016FF4 | data1
[ 10.442827] iwlwifi 0000:3b:00.0: 0x00001000 | data2
[ 10.442828] iwlwifi 0000:3b:00.0: 0xF0000008 | data3
[ 10.442829] iwlwifi 0000:3b:00.0: 0x00000000 | beacon time
[ 10.442831] iwlwifi 0000:3b:00.0: 0x00053105 | tsf low
[ 10.442832] iwlwifi 0000:3b:00.0: 0x00000000 | tsf hi
[ 10.442833] iwlwifi 0000:3b:00.0: 0x00000000 | time gp1
[ 10.442834] iwlwifi 0000:3b:00.0: 0x00059A51 | time gp2
[ 10.442835] iwlwifi 0000:3b:00.0: 0x00000001 | uCode revision type
[ 10.442836] iwlwifi 0000:3b:00.0: 0x00000030 | uCode version major
[ 10.442838] iwlwifi 0000:3b:00.0: 0x4FA0041F | uCode version minor
[ 10.442839] iwlwifi 0000:3b:00.0: 0x00000340 | hw version
[ 10.442840] iwlwifi 0000:3b:00.0: 0x18C89000 | board version
[ 10.442841] iwlwifi 0000:3b:00.0: 0x801FF500 | hcmd
[ 10.442842] iwlwifi 0000:3b:00.0: 0x00020000 | isr0
[ 10.442843] iwlwifi 0000:3b:00.0: 0x00000000 | isr1
[ 10.442845] iwlwifi 0000:3b:00.0: 0x08F00002 | isr2
[ 10.442846] iwlwifi 0000:3b:00.0: 0x00C00008 | isr3
[ 10.442847] iwlwifi 0000:3b:00.0: 0x00000000 | isr4
[ 10.442848] iwlwifi 0000:3b:00.0: 0x000301D1 | last cmd Id
[ 10.442849] iwlwifi 0000:3b:00.0: 0x00016FF4 | wait_event
[ 10.442850] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_control
[ 10.442851] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_duration
[ 10.442852] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_mhvalid
[ 10.442853] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_addr_match
[ 10.442855] iwlwifi 0000:3b:00.0: 0x00000009 | lmpm_pmg_sel
[ 10.442856] iwlwifi 0000:3b:00.0: 0x00000000 | timestamp
[ 10.442857] iwlwifi 0000:3b:00.0: 0x00000828 | flow_handler
[ 10.443452] iwlwifi 0000:3b:00.0: Start IWL Error Log Dump:
[ 10.443453] iwlwifi 0000:3b:00.0: Status: 0x00000040, count: 7
[ 10.443454] iwlwifi 0000:3b:00.0: 0x20000034 | NMI_INTERRUPT_WDG
[ 10.443456] iwlwifi 0000:3b:00.0: 0x00000000 | umac branchlink1
[ 10.443456] iwlwifi 0000:3b:00.0: 0xC008CC3C | umac branchlink2
[ 10.443458] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac interruptlink1
[ 10.443459] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac interruptlink2
[ 10.443460] iwlwifi 0000:3b:00.0: 0x00000004 | umac data1
[ 10.443461] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac data2
[ 10.443462] iwlwifi 0000:3b:00.0: 0x00000000 | umac data3
[ 10.443463] iwlwifi 0000:3b:00.0: 0x00000030 | umac major
[ 10.443464] iwlwifi 0000:3b:00.0: 0x4FA0041F | umac minor
[ 10.443465] iwlwifi 0000:3b:00.0: 0x00059A43 | frame pointer
[ 10.443466] iwlwifi 0000:3b:00.0: 0xC0886A48 | stack pointer
[ 10.443468] iwlwifi 0000:3b:00.0: 0x000B050D | last host cmd
[ 10.443469] iwlwifi 0000:3b:00.0: 0x00000000 | isr status reg
[ 10.443553] iwlwifi 0000:3b:00.0: Fseq Registers:
[ 10.443605] iwlwifi 0000:3b:00.0: 0xE0000101 | FSEQ_ERROR_CODE
[ 10.443657] iwlwifi 0000:3b:00.0: 0x00290011 | FSEQ_TOP_INIT_VERSION
[ 10.443709] iwlwifi 0000:3b:00.0: 0x80050008 | FSEQ_CNVIO_INIT_VERSION
[ 10.443775] iwlwifi 0000:3b:00.0: 0x0000A503 | FSEQ_OTP_VERSION
[ 10.443912] iwlwifi 0000:3b:00.0: 0x80000003 | FSEQ_TOP_CONTENT_VERSION
[ 10.443958] iwlwifi 0000:3b:00.0: 0x4552414E | FSEQ_ALIVE_TOKEN
[ 10.444011] iwlwifi 0000:3b:00.0: 0x00100530 | FSEQ_CNVI_ID
[ 10.444062] iwlwifi 0000:3b:00.0: 0x00000532 | FSEQ_CNVR_ID
[ 10.444113] iwlwifi 0000:3b:00.0: 0x00100530 | CNVI_AUX_MISC_CHIP
[ 10.444166] iwlwifi 0000:3b:00.0: 0x00000532 | CNVR_AUX_MISC_CHIP
[ 10.444220] iwlwifi 0000:3b:00.0: 0x05B0905B | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
[ 10.444275] iwlwifi 0000:3b:00.0: 0x0000025B | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
[ 10.445696] iwlwifi 0000:3b:00.0: Collecting data: trigger 2 fired.
[ 10.445710] iwlwifi 0000:3b:00.0: FW error in SYNC CMD RFH_QUEUE_CONFIG_CMD
[ 10.445873] iwlwifi 0000:3b:00.0: Failed to configure RX queues: -5

that has been seen on several AX200/9462 devices running in a Xen HVM domain
with PCI passthrough [0][1]. It can also be seen natively with a Killer AX1650x
by coaxing the value of num_rx_queues to 1 in iwl_pcie_set_interrupt_capa.

Fix this by returning early from iwl_configure_rxq whenever num_rx_queues is 1.

[0] https://github.com/QubesOS/qubes-issues/issues/5616
[1] https://lore.kernel.org/linux-wireless/[email protected]/T/

Signed-off-by: Connor Davis <[email protected]>
---
drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 3 +++
1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 95a613537047..36066a11f835 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -132,6 +132,9 @@ static int iwl_configure_rxq(struct iwl_mvm *mvm)
.dataflags[0] = IWL_HCMD_DFL_NOCOPY,
};

+ if (mvm->trans->num_rx_queues == 1)
+ return 0;
+
/* Do not configure default queue, it is configured via context info */
num_queues = mvm->trans->num_rx_queues - 1;

--
2.25.1



2020-10-01 13:26:07

by Jason Andryuk

[permalink] [raw]
Subject: Re: [PATCH] iwlwifi: mvm: fix RFH_QUEUE_CONFIG_CMD bug

On Wed, Aug 19, 2020 at 9:28 PM Connor Davis <[email protected]> wrote:
>
> If iwl_configure_rxq is called when mvm->trans->num_rx_queues == 1,
> an RFH_QUEUE_CONFIG_CMD is sent with cmd->num_queues == 0. This results
> in an error when the interface is brought up:
>
> [ 10.073760] iwlwifi 0000:3b:00.0: Applying debug destination EXTERNAL_DRAM
> [ 10.239723] iwlwifi 0000:3b:00.0: FW already configured (0) - re-configuring
> [ 10.441592] iwlwifi 0000:3b:00.0: Microcode SW error detected. Restarting 0x2000000.
> [ 10.442812] iwlwifi 0000:3b:00.0: Start IWL Error Log Dump:
> [ 10.442815] iwlwifi 0000:3b:00.0: Status: 0x00000040, count: 6
> [ 10.442817] iwlwifi 0000:3b:00.0: Loaded firmware version: 48.4fa0041f.0 cc-a0-48.ucode
> [ 10.442818] iwlwifi 0000:3b:00.0: 0x00000071 | NMI_INTERRUPT_UMAC_FATAL
> [ 10.442820] iwlwifi 0000:3b:00.0: 0x000022F0 | trm_hw_status0
> [ 10.442821] iwlwifi 0000:3b:00.0: 0x00000000 | trm_hw_status1
> [ 10.442822] iwlwifi 0000:3b:00.0: 0x004F8E3C | branchlink2
> [ 10.442823] iwlwifi 0000:3b:00.0: 0x004E4FF4 | interruptlink1
> [ 10.442825] iwlwifi 0000:3b:00.0: 0x004E4FF4 | interruptlink2
> [ 10.442826] iwlwifi 0000:3b:00.0: 0x00016FF4 | data1
> [ 10.442827] iwlwifi 0000:3b:00.0: 0x00001000 | data2
> [ 10.442828] iwlwifi 0000:3b:00.0: 0xF0000008 | data3
> [ 10.442829] iwlwifi 0000:3b:00.0: 0x00000000 | beacon time
> [ 10.442831] iwlwifi 0000:3b:00.0: 0x00053105 | tsf low
> [ 10.442832] iwlwifi 0000:3b:00.0: 0x00000000 | tsf hi
> [ 10.442833] iwlwifi 0000:3b:00.0: 0x00000000 | time gp1
> [ 10.442834] iwlwifi 0000:3b:00.0: 0x00059A51 | time gp2
> [ 10.442835] iwlwifi 0000:3b:00.0: 0x00000001 | uCode revision type
> [ 10.442836] iwlwifi 0000:3b:00.0: 0x00000030 | uCode version major
> [ 10.442838] iwlwifi 0000:3b:00.0: 0x4FA0041F | uCode version minor
> [ 10.442839] iwlwifi 0000:3b:00.0: 0x00000340 | hw version
> [ 10.442840] iwlwifi 0000:3b:00.0: 0x18C89000 | board version
> [ 10.442841] iwlwifi 0000:3b:00.0: 0x801FF500 | hcmd
> [ 10.442842] iwlwifi 0000:3b:00.0: 0x00020000 | isr0
> [ 10.442843] iwlwifi 0000:3b:00.0: 0x00000000 | isr1
> [ 10.442845] iwlwifi 0000:3b:00.0: 0x08F00002 | isr2
> [ 10.442846] iwlwifi 0000:3b:00.0: 0x00C00008 | isr3
> [ 10.442847] iwlwifi 0000:3b:00.0: 0x00000000 | isr4
> [ 10.442848] iwlwifi 0000:3b:00.0: 0x000301D1 | last cmd Id
> [ 10.442849] iwlwifi 0000:3b:00.0: 0x00016FF4 | wait_event
> [ 10.442850] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_control
> [ 10.442851] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_duration
> [ 10.442852] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_mhvalid
> [ 10.442853] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_addr_match
> [ 10.442855] iwlwifi 0000:3b:00.0: 0x00000009 | lmpm_pmg_sel
> [ 10.442856] iwlwifi 0000:3b:00.0: 0x00000000 | timestamp
> [ 10.442857] iwlwifi 0000:3b:00.0: 0x00000828 | flow_handler
> [ 10.443452] iwlwifi 0000:3b:00.0: Start IWL Error Log Dump:
> [ 10.443453] iwlwifi 0000:3b:00.0: Status: 0x00000040, count: 7
> [ 10.443454] iwlwifi 0000:3b:00.0: 0x20000034 | NMI_INTERRUPT_WDG
> [ 10.443456] iwlwifi 0000:3b:00.0: 0x00000000 | umac branchlink1
> [ 10.443456] iwlwifi 0000:3b:00.0: 0xC008CC3C | umac branchlink2
> [ 10.443458] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac interruptlink1
> [ 10.443459] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac interruptlink2
> [ 10.443460] iwlwifi 0000:3b:00.0: 0x00000004 | umac data1
> [ 10.443461] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac data2
> [ 10.443462] iwlwifi 0000:3b:00.0: 0x00000000 | umac data3
> [ 10.443463] iwlwifi 0000:3b:00.0: 0x00000030 | umac major
> [ 10.443464] iwlwifi 0000:3b:00.0: 0x4FA0041F | umac minor
> [ 10.443465] iwlwifi 0000:3b:00.0: 0x00059A43 | frame pointer
> [ 10.443466] iwlwifi 0000:3b:00.0: 0xC0886A48 | stack pointer
> [ 10.443468] iwlwifi 0000:3b:00.0: 0x000B050D | last host cmd
> [ 10.443469] iwlwifi 0000:3b:00.0: 0x00000000 | isr status reg
> [ 10.443553] iwlwifi 0000:3b:00.0: Fseq Registers:
> [ 10.443605] iwlwifi 0000:3b:00.0: 0xE0000101 | FSEQ_ERROR_CODE
> [ 10.443657] iwlwifi 0000:3b:00.0: 0x00290011 | FSEQ_TOP_INIT_VERSION
> [ 10.443709] iwlwifi 0000:3b:00.0: 0x80050008 | FSEQ_CNVIO_INIT_VERSION
> [ 10.443775] iwlwifi 0000:3b:00.0: 0x0000A503 | FSEQ_OTP_VERSION
> [ 10.443912] iwlwifi 0000:3b:00.0: 0x80000003 | FSEQ_TOP_CONTENT_VERSION
> [ 10.443958] iwlwifi 0000:3b:00.0: 0x4552414E | FSEQ_ALIVE_TOKEN
> [ 10.444011] iwlwifi 0000:3b:00.0: 0x00100530 | FSEQ_CNVI_ID
> [ 10.444062] iwlwifi 0000:3b:00.0: 0x00000532 | FSEQ_CNVR_ID
> [ 10.444113] iwlwifi 0000:3b:00.0: 0x00100530 | CNVI_AUX_MISC_CHIP
> [ 10.444166] iwlwifi 0000:3b:00.0: 0x00000532 | CNVR_AUX_MISC_CHIP
> [ 10.444220] iwlwifi 0000:3b:00.0: 0x05B0905B | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
> [ 10.444275] iwlwifi 0000:3b:00.0: 0x0000025B | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
> [ 10.445696] iwlwifi 0000:3b:00.0: Collecting data: trigger 2 fired.
> [ 10.445710] iwlwifi 0000:3b:00.0: FW error in SYNC CMD RFH_QUEUE_CONFIG_CMD
> [ 10.445873] iwlwifi 0000:3b:00.0: Failed to configure RX queues: -5
>
> that has been seen on several AX200/9462 devices running in a Xen HVM domain
> with PCI passthrough [0][1]. It can also be seen natively with a Killer AX1650x
> by coaxing the value of num_rx_queues to 1 in iwl_pcie_set_interrupt_capa.
>
> Fix this by returning early from iwl_configure_rxq whenever num_rx_queues is 1.
>
> [0] https://github.com/QubesOS/qubes-issues/issues/5616
> [1] https://lore.kernel.org/linux-wireless/[email protected]/T/
>
> Signed-off-by: Connor Davis <[email protected]>

Tested-by: Jason Andryuk <[email protected]>

This should be CC Stable as well.

Thanks for fixing, Connor.

-Jason

> ---
> drivers/net/wireless/intel/iwlwifi/mvm/fw.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> index 95a613537047..36066a11f835 100644
> --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
> @@ -132,6 +132,9 @@ static int iwl_configure_rxq(struct iwl_mvm *mvm)
> .dataflags[0] = IWL_HCMD_DFL_NOCOPY,
> };
>
> + if (mvm->trans->num_rx_queues == 1)
> + return 0;
> +
> /* Do not configure default queue, it is configured via context info */
> num_queues = mvm->trans->num_rx_queues - 1;
>
> --
> 2.25.1
>
>

2020-10-02 06:12:18

by Luciano Coelho

[permalink] [raw]
Subject: Re: [PATCH] iwlwifi: mvm: fix RFH_QUEUE_CONFIG_CMD bug

On Thu, 2020-10-01 at 09:25 -0400, Jason Andryuk wrote:
> On Wed, Aug 19, 2020 at 9:28 PM Connor Davis <[email protected]> wrote:
> > If iwl_configure_rxq is called when mvm->trans->num_rx_queues == 1,
> > an RFH_QUEUE_CONFIG_CMD is sent with cmd->num_queues == 0. This results
> > in an error when the interface is brought up:
> >
> > [ 10.073760] iwlwifi 0000:3b:00.0: Applying debug destination EXTERNAL_DRAM
> > [ 10.239723] iwlwifi 0000:3b:00.0: FW already configured (0) - re-configuring
> > [ 10.441592] iwlwifi 0000:3b:00.0: Microcode SW error detected. Restarting 0x2000000.
> > [ 10.442812] iwlwifi 0000:3b:00.0: Start IWL Error Log Dump:
> > [ 10.442815] iwlwifi 0000:3b:00.0: Status: 0x00000040, count: 6
> > [ 10.442817] iwlwifi 0000:3b:00.0: Loaded firmware version: 48.4fa0041f.0 cc-a0-48.ucode
> > [ 10.442818] iwlwifi 0000:3b:00.0: 0x00000071 | NMI_INTERRUPT_UMAC_FATAL
> > [ 10.442820] iwlwifi 0000:3b:00.0: 0x000022F0 | trm_hw_status0
> > [ 10.442821] iwlwifi 0000:3b:00.0: 0x00000000 | trm_hw_status1
> > [ 10.442822] iwlwifi 0000:3b:00.0: 0x004F8E3C | branchlink2
> > [ 10.442823] iwlwifi 0000:3b:00.0: 0x004E4FF4 | interruptlink1
> > [ 10.442825] iwlwifi 0000:3b:00.0: 0x004E4FF4 | interruptlink2
> > [ 10.442826] iwlwifi 0000:3b:00.0: 0x00016FF4 | data1
> > [ 10.442827] iwlwifi 0000:3b:00.0: 0x00001000 | data2
> > [ 10.442828] iwlwifi 0000:3b:00.0: 0xF0000008 | data3
> > [ 10.442829] iwlwifi 0000:3b:00.0: 0x00000000 | beacon time
> > [ 10.442831] iwlwifi 0000:3b:00.0: 0x00053105 | tsf low
> > [ 10.442832] iwlwifi 0000:3b:00.0: 0x00000000 | tsf hi
> > [ 10.442833] iwlwifi 0000:3b:00.0: 0x00000000 | time gp1
> > [ 10.442834] iwlwifi 0000:3b:00.0: 0x00059A51 | time gp2
> > [ 10.442835] iwlwifi 0000:3b:00.0: 0x00000001 | uCode revision type
> > [ 10.442836] iwlwifi 0000:3b:00.0: 0x00000030 | uCode version major
> > [ 10.442838] iwlwifi 0000:3b:00.0: 0x4FA0041F | uCode version minor
> > [ 10.442839] iwlwifi 0000:3b:00.0: 0x00000340 | hw version
> > [ 10.442840] iwlwifi 0000:3b:00.0: 0x18C89000 | board version
> > [ 10.442841] iwlwifi 0000:3b:00.0: 0x801FF500 | hcmd
> > [ 10.442842] iwlwifi 0000:3b:00.0: 0x00020000 | isr0
> > [ 10.442843] iwlwifi 0000:3b:00.0: 0x00000000 | isr1
> > [ 10.442845] iwlwifi 0000:3b:00.0: 0x08F00002 | isr2
> > [ 10.442846] iwlwifi 0000:3b:00.0: 0x00C00008 | isr3
> > [ 10.442847] iwlwifi 0000:3b:00.0: 0x00000000 | isr4
> > [ 10.442848] iwlwifi 0000:3b:00.0: 0x000301D1 | last cmd Id
> > [ 10.442849] iwlwifi 0000:3b:00.0: 0x00016FF4 | wait_event
> > [ 10.442850] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_control
> > [ 10.442851] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_duration
> > [ 10.442852] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_mhvalid
> > [ 10.442853] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_addr_match
> > [ 10.442855] iwlwifi 0000:3b:00.0: 0x00000009 | lmpm_pmg_sel
> > [ 10.442856] iwlwifi 0000:3b:00.0: 0x00000000 | timestamp
> > [ 10.442857] iwlwifi 0000:3b:00.0: 0x00000828 | flow_handler
> > [ 10.443452] iwlwifi 0000:3b:00.0: Start IWL Error Log Dump:
> > [ 10.443453] iwlwifi 0000:3b:00.0: Status: 0x00000040, count: 7
> > [ 10.443454] iwlwifi 0000:3b:00.0: 0x20000034 | NMI_INTERRUPT_WDG
> > [ 10.443456] iwlwifi 0000:3b:00.0: 0x00000000 | umac branchlink1
> > [ 10.443456] iwlwifi 0000:3b:00.0: 0xC008CC3C | umac branchlink2
> > [ 10.443458] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac interruptlink1
> > [ 10.443459] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac interruptlink2
> > [ 10.443460] iwlwifi 0000:3b:00.0: 0x00000004 | umac data1
> > [ 10.443461] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac data2
> > [ 10.443462] iwlwifi 0000:3b:00.0: 0x00000000 | umac data3
> > [ 10.443463] iwlwifi 0000:3b:00.0: 0x00000030 | umac major
> > [ 10.443464] iwlwifi 0000:3b:00.0: 0x4FA0041F | umac minor
> > [ 10.443465] iwlwifi 0000:3b:00.0: 0x00059A43 | frame pointer
> > [ 10.443466] iwlwifi 0000:3b:00.0: 0xC0886A48 | stack pointer
> > [ 10.443468] iwlwifi 0000:3b:00.0: 0x000B050D | last host cmd
> > [ 10.443469] iwlwifi 0000:3b:00.0: 0x00000000 | isr status reg
> > [ 10.443553] iwlwifi 0000:3b:00.0: Fseq Registers:
> > [ 10.443605] iwlwifi 0000:3b:00.0: 0xE0000101 | FSEQ_ERROR_CODE
> > [ 10.443657] iwlwifi 0000:3b:00.0: 0x00290011 | FSEQ_TOP_INIT_VERSION
> > [ 10.443709] iwlwifi 0000:3b:00.0: 0x80050008 | FSEQ_CNVIO_INIT_VERSION
> > [ 10.443775] iwlwifi 0000:3b:00.0: 0x0000A503 | FSEQ_OTP_VERSION
> > [ 10.443912] iwlwifi 0000:3b:00.0: 0x80000003 | FSEQ_TOP_CONTENT_VERSION
> > [ 10.443958] iwlwifi 0000:3b:00.0: 0x4552414E | FSEQ_ALIVE_TOKEN
> > [ 10.444011] iwlwifi 0000:3b:00.0: 0x00100530 | FSEQ_CNVI_ID
> > [ 10.444062] iwlwifi 0000:3b:00.0: 0x00000532 | FSEQ_CNVR_ID
> > [ 10.444113] iwlwifi 0000:3b:00.0: 0x00100530 | CNVI_AUX_MISC_CHIP
> > [ 10.444166] iwlwifi 0000:3b:00.0: 0x00000532 | CNVR_AUX_MISC_CHIP
> > [ 10.444220] iwlwifi 0000:3b:00.0: 0x05B0905B | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
> > [ 10.444275] iwlwifi 0000:3b:00.0: 0x0000025B | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
> > [ 10.445696] iwlwifi 0000:3b:00.0: Collecting data: trigger 2 fired.
> > [ 10.445710] iwlwifi 0000:3b:00.0: FW error in SYNC CMD RFH_QUEUE_CONFIG_CMD
> > [ 10.445873] iwlwifi 0000:3b:00.0: Failed to configure RX queues: -5
> >
> > that has been seen on several AX200/9462 devices running in a Xen HVM domain
> > with PCI passthrough [0][1]. It can also be seen natively with a Killer AX1650x
> > by coaxing the value of num_rx_queues to 1 in iwl_pcie_set_interrupt_capa.
> >
> > Fix this by returning early from iwl_configure_rxq whenever num_rx_queues is 1.
> >
> > [0] https://github.com/QubesOS/qubes-issues/issues/5616
> > [1] https://lore.kernel.org/linux-wireless/[email protected]/T/
> >
> > Signed-off-by: Connor Davis <[email protected]>
>
> Tested-by: Jason Andryuk <[email protected]>
>
> This should be CC Stable as well.
>
> Thanks for fixing, Connor.

Thanks for the patch!

Sorry for the delay in replying.

We have a similar patch in our internal tree that is queued for
upstreaming. It's probably too late to have it in v5.9, but we will
apply it as soon as possible.

--
Cheers,
Luca.

2020-10-03 05:00:41

by Connor Davis

[permalink] [raw]
Subject: Re: [PATCH] iwlwifi: mvm: fix RFH_QUEUE_CONFIG_CMD bug

On Friday, October 2, 2020 12:11 AM, Coelho, Luciano <[email protected]> wrote:

> On Thu, 2020-10-01 at 09:25 -0400, Jason Andryuk wrote:
>
> > On Wed, Aug 19, 2020 at 9:28 PM Connor Davis [email protected] wrote:
> >
> > > If iwl_configure_rxq is called when mvm->trans->num_rx_queues == 1,
> > > an RFH_QUEUE_CONFIG_CMD is sent with cmd->num_queues == 0. This results
> > > in an error when the interface is brought up:
> > > [ 10.073760] iwlwifi 0000:3b:00.0: Applying debug destination EXTERNAL_DRAM
> > > [ 10.239723] iwlwifi 0000:3b:00.0: FW already configured (0) - re-configuring
> > > [ 10.441592] iwlwifi 0000:3b:00.0: Microcode SW error detected. Restarting 0x2000000.
> > > [ 10.442812] iwlwifi 0000:3b:00.0: Start IWL Error Log Dump:
> > > [ 10.442815] iwlwifi 0000:3b:00.0: Status: 0x00000040, count: 6
> > > [ 10.442817] iwlwifi 0000:3b:00.0: Loaded firmware version: 48.4fa0041f.0 cc-a0-48.ucode
> > > [ 10.442818] iwlwifi 0000:3b:00.0: 0x00000071 | NMI_INTERRUPT_UMAC_FATAL
> > > [ 10.442820] iwlwifi 0000:3b:00.0: 0x000022F0 | trm_hw_status0
> > > [ 10.442821] iwlwifi 0000:3b:00.0: 0x00000000 | trm_hw_status1
> > > [ 10.442822] iwlwifi 0000:3b:00.0: 0x004F8E3C | branchlink2
> > > [ 10.442823] iwlwifi 0000:3b:00.0: 0x004E4FF4 | interruptlink1
> > > [ 10.442825] iwlwifi 0000:3b:00.0: 0x004E4FF4 | interruptlink2
> > > [ 10.442826] iwlwifi 0000:3b:00.0: 0x00016FF4 | data1
> > > [ 10.442827] iwlwifi 0000:3b:00.0: 0x00001000 | data2
> > > [ 10.442828] iwlwifi 0000:3b:00.0: 0xF0000008 | data3
> > > [ 10.442829] iwlwifi 0000:3b:00.0: 0x00000000 | beacon time
> > > [ 10.442831] iwlwifi 0000:3b:00.0: 0x00053105 | tsf low
> > > [ 10.442832] iwlwifi 0000:3b:00.0: 0x00000000 | tsf hi
> > > [ 10.442833] iwlwifi 0000:3b:00.0: 0x00000000 | time gp1
> > > [ 10.442834] iwlwifi 0000:3b:00.0: 0x00059A51 | time gp2
> > > [ 10.442835] iwlwifi 0000:3b:00.0: 0x00000001 | uCode revision type
> > > [ 10.442836] iwlwifi 0000:3b:00.0: 0x00000030 | uCode version major
> > > [ 10.442838] iwlwifi 0000:3b:00.0: 0x4FA0041F | uCode version minor
> > > [ 10.442839] iwlwifi 0000:3b:00.0: 0x00000340 | hw version
> > > [ 10.442840] iwlwifi 0000:3b:00.0: 0x18C89000 | board version
> > > [ 10.442841] iwlwifi 0000:3b:00.0: 0x801FF500 | hcmd
> > > [ 10.442842] iwlwifi 0000:3b:00.0: 0x00020000 | isr0
> > > [ 10.442843] iwlwifi 0000:3b:00.0: 0x00000000 | isr1
> > > [ 10.442845] iwlwifi 0000:3b:00.0: 0x08F00002 | isr2
> > > [ 10.442846] iwlwifi 0000:3b:00.0: 0x00C00008 | isr3
> > > [ 10.442847] iwlwifi 0000:3b:00.0: 0x00000000 | isr4
> > > [ 10.442848] iwlwifi 0000:3b:00.0: 0x000301D1 | last cmd Id
> > > [ 10.442849] iwlwifi 0000:3b:00.0: 0x00016FF4 | wait_event
> > > [ 10.442850] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_control
> > > [ 10.442851] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_duration
> > > [ 10.442852] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_mhvalid
> > > [ 10.442853] iwlwifi 0000:3b:00.0: 0x00000000 | l2p_addr_match
> > > [ 10.442855] iwlwifi 0000:3b:00.0: 0x00000009 | lmpm_pmg_sel
> > > [ 10.442856] iwlwifi 0000:3b:00.0: 0x00000000 | timestamp
> > > [ 10.442857] iwlwifi 0000:3b:00.0: 0x00000828 | flow_handler
> > > [ 10.443452] iwlwifi 0000:3b:00.0: Start IWL Error Log Dump:
> > > [ 10.443453] iwlwifi 0000:3b:00.0: Status: 0x00000040, count: 7
> > > [ 10.443454] iwlwifi 0000:3b:00.0: 0x20000034 | NMI_INTERRUPT_WDG
> > > [ 10.443456] iwlwifi 0000:3b:00.0: 0x00000000 | umac branchlink1
> > > [ 10.443456] iwlwifi 0000:3b:00.0: 0xC008CC3C | umac branchlink2
> > > [ 10.443458] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac interruptlink1
> > > [ 10.443459] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac interruptlink2
> > > [ 10.443460] iwlwifi 0000:3b:00.0: 0x00000004 | umac data1
> > > [ 10.443461] iwlwifi 0000:3b:00.0: 0x8048E6D8 | umac data2
> > > [ 10.443462] iwlwifi 0000:3b:00.0: 0x00000000 | umac data3
> > > [ 10.443463] iwlwifi 0000:3b:00.0: 0x00000030 | umac major
> > > [ 10.443464] iwlwifi 0000:3b:00.0: 0x4FA0041F | umac minor
> > > [ 10.443465] iwlwifi 0000:3b:00.0: 0x00059A43 | frame pointer
> > > [ 10.443466] iwlwifi 0000:3b:00.0: 0xC0886A48 | stack pointer
> > > [ 10.443468] iwlwifi 0000:3b:00.0: 0x000B050D | last host cmd
> > > [ 10.443469] iwlwifi 0000:3b:00.0: 0x00000000 | isr status reg
> > > [ 10.443553] iwlwifi 0000:3b:00.0: Fseq Registers:
> > > [ 10.443605] iwlwifi 0000:3b:00.0: 0xE0000101 | FSEQ_ERROR_CODE
> > > [ 10.443657] iwlwifi 0000:3b:00.0: 0x00290011 | FSEQ_TOP_INIT_VERSION
> > > [ 10.443709] iwlwifi 0000:3b:00.0: 0x80050008 | FSEQ_CNVIO_INIT_VERSION
> > > [ 10.443775] iwlwifi 0000:3b:00.0: 0x0000A503 | FSEQ_OTP_VERSION
> > > [ 10.443912] iwlwifi 0000:3b:00.0: 0x80000003 | FSEQ_TOP_CONTENT_VERSION
> > > [ 10.443958] iwlwifi 0000:3b:00.0: 0x4552414E | FSEQ_ALIVE_TOKEN
> > > [ 10.444011] iwlwifi 0000:3b:00.0: 0x00100530 | FSEQ_CNVI_ID
> > > [ 10.444062] iwlwifi 0000:3b:00.0: 0x00000532 | FSEQ_CNVR_ID
> > > [ 10.444113] iwlwifi 0000:3b:00.0: 0x00100530 | CNVI_AUX_MISC_CHIP
> > > [ 10.444166] iwlwifi 0000:3b:00.0: 0x00000532 | CNVR_AUX_MISC_CHIP
> > > [ 10.444220] iwlwifi 0000:3b:00.0: 0x05B0905B | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
> > > [ 10.444275] iwlwifi 0000:3b:00.0: 0x0000025B | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
> > > [ 10.445696] iwlwifi 0000:3b:00.0: Collecting data: trigger 2 fired.
> > > [ 10.445710] iwlwifi 0000:3b:00.0: FW error in SYNC CMD RFH_QUEUE_CONFIG_CMD
> > > [ 10.445873] iwlwifi 0000:3b:00.0: Failed to configure RX queues: -5
> > > that has been seen on several AX200/9462 devices running in a Xen HVM domain
> > > with PCI passthrough [0][1]. It can also be seen natively with a Killer AX1650x
> > > by coaxing the value of num_rx_queues to 1 in iwl_pcie_set_interrupt_capa.
> > > Fix this by returning early from iwl_configure_rxq whenever num_rx_queues is 1.
> > > [0] https://github.com/QubesOS/qubes-issues/issues/5616
> > > [1] https://lore.kernel.org/linux-wireless/[email protected]/T/
> > > Signed-off-by: Connor Davis [email protected]
> >
> > Tested-by: Jason Andryuk [email protected]
> > This should be CC Stable as well.
> > Thanks for fixing, Connor.
>
> Thanks for the patch!

No problem, it's my pleasure! Thanks for the review.

>
> Sorry for the delay in replying.
>
> We have a similar patch in our internal tree that is queued for
> upstreaming. It's probably too late to have it in v5.9, but we will
> apply it as soon as possible.
>
> --
> Cheers,
> Luca.

- Connor