Re: PROBLEM: Linux 5.5 fails to load firmware for Intel(R) Dual Band Wireless AC 3168

From: Stuart Little
Date: Fri Feb 07 2020 - 21:03:00 EST


I have done the bisect on this issue. The log is attached, along with the end summary the bisect returned. The latter is also pasted here:

--- cut here ---

b3f20e098293892388d6a0491d6bbb2efb46fbff is the first bad commit
commit b3f20e098293892388d6a0491d6bbb2efb46fbff
Author: Luca Coelho <luciano.coelho@xxxxxxxxx>
Date: Mon Nov 25 13:21:58 2019 +0200

iwlwifi: mvm: fix NVM check for 3168 devices

We had a check on !NVM_EXT and then a check for NVM_SDP in the else
block of this if. The else block, obviously, could only be reached if
using NVM_EXT, so it would never be NVM_SDP.

Fix that by checking whether the nvm_type is IWL_NVM instead of
checking for !IWL_NVM_EXT to solve this issue.

Reported-by: Stefan Sperling <stsp@xxxxxxxxx>
Signed-off-by: Luca Coelho <luciano.coelho@xxxxxxxxx>

:040000 040000 923b8f7ba8a5826190d4b1b52a00a2fca0304687 529cfe362357c9ec6d411a687d9e41ac86a94d91 M drivers

--- end ---

On Fri, Feb 07, 2020 at 08:09:03PM -0500, Stuart Little wrote:
> I am on an
>
> Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz
>
> with an Intel wifi card:
>
> Intel(R) Dual Band Wireless AC 3168, REV=0x220
>
> The machine is running Slackware 14.2 with a custom-compiled 5.5 kernel (from source; commit d5226fa6dbae Linux 5.5).
>
> The issue:
>
> Booting into that kernel results in failure to load the wifi card firmware. The relevant dmesg portion is attached (these are all of the lines containing 'iwlwifi').
>
> I have checked that it breaks between
>
> def9d2780727 Linux 5.5-rc7 (good)
>
> and
>
> d5226fa6dbae Linux 5.5 (bad)
>
> I will attempt a bisect to track down the precise faulty commit, but this is all I have for now. Please let me know if I can provide more info short of the bisect.
>
> P.S.
>
> I have checked that the very latest commit at the time of this writing (41dcd67e88688afbeb3b2bd23960eed5daec74e7 at Fri Feb 7 20:07:29 EST 2020) is still broken on this machine.

> [ 1.210208] iwlwifi 0000:02:00.0: loaded firmware version 29.1654887522.0 op_mode iwlmvm
> [ 1.218505] r8168: This product is covered by one or more of the following patents: US6,570,884, US6,115,776, and US6,327,625.
> [ 1.223892] r8168 Copyright (C) 2019 Realtek NIC software team <nicfae@xxxxxxxxxxx>
> This program comes with ABSOLUTELY NO WARRANTY; for details, please see <http://www.gnu.org/licenses/>.
> This is free software, and you are welcome to redistribute it under certain conditions; see <http://www.gnu.org/licenses/>.
> [ 1.230349] xhci_hcd 0000:00:14.0: xHCI Host Controller
> [ 1.230500] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 1
> [ 1.231808] xhci_hcd 0000:00:14.0: hcc params 0x200077c1 hci version 0x100 quirks 0x0000000081109810
> [ 1.232080] xhci_hcd 0000:00:14.0: cache line size of 64 is not supported
> [ 1.232486] hub 1-0:1.0: USB hub found
> [ 1.232640] hub 1-0:1.0: 12 ports detected
> [ 1.233280] xhci_hcd 0000:00:14.0: xHCI Host Controller
> [ 1.233440] xhci_hcd 0000:00:14.0: new USB bus registered, assigned bus number 2
> [ 1.233690] xhci_hcd 0000:00:14.0: Host supports USB 3.0 SuperSpeed
> [ 1.233883] AVX2 version of gcm_enc/dec engaged.
> [ 1.234067] AES CTR mode by8 optimization enabled
> [ 1.234279] hub 2-0:1.0: USB hub found
> [ 1.234446] hub 2-0:1.0: 6 ports detected
> [ 1.277853] iwlwifi 0000:02:00.0: Detected Intel(R) Dual Band Wireless AC 3168, REV=0x220
> [ 1.297761] iwlwifi 0000:02:00.0: Can't parse phy_sku in B0, empty sections
> [ 1.297916] iwlwifi 0000:02:00.0: Failed to read NVM: -61
> [ 1.298063] iwlwifi 0000:02:00.0: Collecting data: trigger 16 fired.
> [ 1.299371] iwlwifi 0000:02:00.0: Start IWL Error Log Dump:
> [ 1.299521] iwlwifi 0000:02:00.0: Status: 0x00000040, count: 6
> [ 1.299673] iwlwifi 0000:02:00.0: Loaded firmware version: 29.1654887522.0
> [ 1.299829] iwlwifi 0000:02:00.0: 0x00000084 | NMI_INTERRUPT_UNKNOWN
> [ 1.299983] iwlwifi 0000:02:00.0: 0x000002F0 | trm_hw_status0
> [ 1.300132] iwlwifi 0000:02:00.0: 0x00000000 | trm_hw_status1
> [ 1.300291] iwlwifi 0000:02:00.0: 0x0004171E | branchlink2
> [ 1.300442] iwlwifi 0000:02:00.0: 0x000446B2 | interruptlink1
> [ 1.300595] iwlwifi 0000:02:00.0: 0x000446B2 | interruptlink2
> [ 1.300747] iwlwifi 0000:02:00.0: 0x00000000 | data1
> [ 1.300895] iwlwifi 0000:02:00.0: 0x00000080 | data2
> [ 1.301041] iwlwifi 0000:02:00.0: 0x07030000 | data3
> [ 1.301190] iwlwifi 0000:02:00.0: 0x00000000 | beacon time
> [ 1.301341] iwlwifi 0000:02:00.0: 0x00001451 | tsf low
> [ 1.301491] iwlwifi 0000:02:00.0: 0x00000000 | tsf hi
> [ 1.301642] iwlwifi 0000:02:00.0: 0x00000000 | time gp1
> [ 1.301793] iwlwifi 0000:02:00.0: 0x00001452 | time gp2
> [ 1.301943] iwlwifi 0000:02:00.0: 0x00000009 | uCode revision type
> [ 1.302094] iwlwifi 0000:02:00.0: 0x0000001D | uCode version major
> [ 1.302245] iwlwifi 0000:02:00.0: 0x62A39462 | uCode version minor
> [ 1.302397] iwlwifi 0000:02:00.0: 0x00000220 | hw version
> [ 1.302548] iwlwifi 0000:02:00.0: 0x00C89200 | board version
> [ 1.302701] iwlwifi 0000:02:00.0: 0x00110188 | hcmd
> [ 1.302852] iwlwifi 0000:02:00.0: 0x00022000 | isr0
> [ 1.303003] iwlwifi 0000:02:00.0: 0x00000000 | isr1
> [ 1.303152] iwlwifi 0000:02:00.0: 0x00000002 | isr2
> [ 1.303301] iwlwifi 0000:02:00.0: 0x004000C0 | isr3
> [ 1.303448] iwlwifi 0000:02:00.0: 0x00000000 | isr4
> [ 1.303596] iwlwifi 0000:02:00.0: 0x00110188 | last cmd Id
> [ 1.303746] iwlwifi 0000:02:00.0: 0x00000000 | wait_event
> [ 1.303897] iwlwifi 0000:02:00.0: 0x00000080 | l2p_control
> [ 1.304047] iwlwifi 0000:02:00.0: 0x00000000 | l2p_duration
> [ 1.304197] iwlwifi 0000:02:00.0: 0x00000000 | l2p_mhvalid
> [ 1.304346] iwlwifi 0000:02:00.0: 0x00000000 | l2p_addr_match
> [ 1.304496] iwlwifi 0000:02:00.0: 0x00000007 | lmpm_pmg_sel
> [ 1.304652] iwlwifi 0000:02:00.0: 0x16070617 | timestamp
> [ 1.304798] iwlwifi 0000:02:00.0: 0x00341018 | flow_handler
> [ 1.304966] iwlwifi 0000:02:00.0: Fseq Registers:
> [ 1.305139] iwlwifi 0000:02:00.0: 0x00000000 | FSEQ_ERROR_CODE
> [ 1.305306] iwlwifi 0000:02:00.0: 0x00000000 | FSEQ_TOP_INIT_VERSION
> [ 1.305475] iwlwifi 0000:02:00.0: 0x00000000 | FSEQ_CNVIO_INIT_VERSION
> [ 1.305652] iwlwifi 0000:02:00.0: 0x00000000 | FSEQ_OTP_VERSION
> [ 1.305822] iwlwifi 0000:02:00.0: 0x00000000 | FSEQ_TOP_CONTENT_VERSION
> [ 1.305995] iwlwifi 0000:02:00.0: 0x00000000 | FSEQ_ALIVE_TOKEN
> [ 1.306175] iwlwifi 0000:02:00.0: 0x00000000 | FSEQ_CNVI_ID
> [ 1.306356] iwlwifi 0000:02:00.0: 0x00000000 | FSEQ_CNVR_ID
> [ 1.306524] iwlwifi 0000:02:00.0: 0x00000000 | CNVI_AUX_MISC_CHIP
> [ 1.306695] iwlwifi 0000:02:00.0: 0x00000000 | CNVR_AUX_MISC_CHIP
> [ 1.306870] iwlwifi 0000:02:00.0: 0x00000000 | CNVR_SCU_SD_REGS_SD_REG_DIG_DCDC_VTRIM
> [ 1.307135] iwlwifi 0000:02:00.0: 0x00000000 | CNVR_SCU_SD_REGS_SD_REG_ACTIVE_VDIG_MIRROR
> [ 1.307402] iwlwifi 0000:02:00.0: Firmware not running - cannot dump error
> [ 1.319717] iwlwifi 0000:02:00.0: Failed to run INIT ucode: -61

git bisect start
# bad: [d5226fa6dbae0569ee43ecfc08bdcd6770fc4755] Linux 5.5
git bisect bad d5226fa6dbae0569ee43ecfc08bdcd6770fc4755
# good: [def9d2780727cec3313ed3522d0123158d87224d] Linux 5.5-rc7
git bisect good def9d2780727cec3313ed3522d0123158d87224d
# bad: [722943a54de95343c97c2a9ad658253393632f97] Merge tag 'mlx5-fixes-2020-01-24' of git://git.kernel.org/pub/scm/linux/kernel/git/saeed/linux
git bisect bad 722943a54de95343c97c2a9ad658253393632f97
# bad: [5169adbc982400f214bc0bcad1fcc076bd342987] Merge tag 'wireless-drivers-2020-01-23' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers
git bisect bad 5169adbc982400f214bc0bcad1fcc076bd342987
# good: [d7f1b59655efb5a285d227c8f9853a98eab5c2fd] r8152: disable test IO for RTL8153B
git bisect good d7f1b59655efb5a285d227c8f9853a98eab5c2fd
# bad: [b9f726c94224e863d4d3458dfec2e7e1284a39ce] iwlwifi: mvm: fix SKB leak on invalid queue
git bisect bad b9f726c94224e863d4d3458dfec2e7e1284a39ce
# good: [c4a786b32621850775dedd1a329de0c060f9c904] iwlwifi: pcie: work around DMA hardware bug
git bisect good c4a786b32621850775dedd1a329de0c060f9c904
# bad: [b3f20e098293892388d6a0491d6bbb2efb46fbff] iwlwifi: mvm: fix NVM check for 3168 devices
git bisect bad b3f20e098293892388d6a0491d6bbb2efb46fbff
# good: [a89c72ffd07369f5ccc74f0332d2785a7077241d] iwlwifi: pcie: allocate smaller dev_cmd for TX headers
git bisect good a89c72ffd07369f5ccc74f0332d2785a7077241d
# good: [4f565ee2999960d541854389e20b78e7105e3afc] iwlwifi: fix TLV fragment allocation loop
git bisect good 4f565ee2999960d541854389e20b78e7105e3afc
# first bad commit: [b3f20e098293892388d6a0491d6bbb2efb46fbff] iwlwifi: mvm: fix NVM check for 3168 devices
b3f20e098293892388d6a0491d6bbb2efb46fbff is the first bad commit
commit b3f20e098293892388d6a0491d6bbb2efb46fbff
Author: Luca Coelho <luciano.coelho@xxxxxxxxx>
Date: Mon Nov 25 13:21:58 2019 +0200

iwlwifi: mvm: fix NVM check for 3168 devices

We had a check on !NVM_EXT and then a check for NVM_SDP in the else
block of this if. The else block, obviously, could only be reached if
using NVM_EXT, so it would never be NVM_SDP.

Fix that by checking whether the nvm_type is IWL_NVM instead of
checking for !IWL_NVM_EXT to solve this issue.

Reported-by: Stefan Sperling <stsp@xxxxxxxxx>
Signed-off-by: Luca Coelho <luciano.coelho@xxxxxxxxx>

:040000 040000 923b8f7ba8a5826190d4b1b52a00a2fca0304687 529cfe362357c9ec6d411a687d9e41ac86a94d91 M drivers