mt7915e card fails to init on Linux 6.3 and newer

Jared Van Bortel jared.e.vb at gmail.com
Sun Jan 19 18:24:29 PST 2025


Hi all,

I recently purchased a WallysTech DR7915 mPCIe Wi-Fi card (PCI ID
14c3:7915) for my ThinkPad W500. It is ostensibly based on the MT7915
and MT7975 chips, using the mt7915e driver. I tried it on linux-stable
6.12.10 and was unable to get it to work. But it works fine on 6.1 LTS.

(As an aside - why is the latest firmware provided by mainline Linux
version 20220929104113a, while OpenWRT is providing 20240429200502?)

I bisected the issue to commit 9e81c2c7b9af6a5f160e0a9a7f009c37910402ee
("wifi: mt76: mt7915: enable per-phy led support"), which is included in
kernel 6.3. This is what I get in dmesg before this commit (good
behavior):

[   34.976575] mt7915e 0000:03:00.0: HW/SW Version: 0x8a108a10, Build Time: 20220929104113a
[   34.990089] mt7915e 0000:03:00.0: WM Firmware Version: ____000000, Build Time: 20220929104145
[   35.012664] mt7915e 0000:03:00.0: WA Firmware Version: DEV_000000, Build Time: 20220929104205
[   35.178619] mt7915e 0000:03:00.0 wlp3s0: renamed from wlan0
[   44.588223] wlan0: authenticate with XX:XX:XX:XX:XX:XX
[   44.598831] wlan0: send auth to XX:XX:XX:XX:XX:XX (try 1/3)
[   44.601589] wlan0: authenticate with XX:XX:XX:XX:XX:XX
[   44.601594] wlan0: send auth to XX:XX:XX:XX:XX:XX (try 1/3)
[   44.611058] wlan0: authenticate with XX:XX:XX:XX:XX:XX
[   44.611064] wlan0: send auth to XX:XX:XX:XX:XX:XX (try 1/3)
[   44.612714] wlan0: authenticated

This is what I get after that commit (bad behavior):

[   37.507795] mt7915e 0000:03:00.0: HW/SW Version: 0x8a108a10, Build Time: 20220929104113a
[   37.521157] mt7915e 0000:03:00.0: WM Firmware Version: ____000000, Build Time: 20220929104145
[   37.541817] mt7915e 0000:03:00.0: WA Firmware Version: DEV_000000, Build Time: 20220929104205
[   37.707782] mt7915e 0000:03:00.0 wlp3s0: renamed from wlan0
[   42.984991] pcieport 0000:00:1c.1: pciehp: Slot(1-2): Link Down
[   42.984999] pcieport 0000:00:1c.1: pciehp: Slot(1-2): Card not present
[   64.651072] mt7915e 0000:03:00.0: Message 00001eed (seq 9) timeout
[   85.131081] mt7915e 0000:03:00.0: Message 000007ed (seq 11) timeout
[   85.132693] mt7915e 0000:03:00.0 wlp3s0f0: renamed from wlan0
[  105.614421] mt7915e 0000:03:00.0: Message 000007ed (seq 1) timeout
[  107.701101] mt7915e 0000:03:00.0: Timeout for initializing firmware
[  107.701154] mt7915e 0000:03:00.0: Failed to exit mcu
[  107.844646] pci 0000:03:00.0: Removing from iommu group 6
[  107.844679] pcieport 0000:00:1c.1: pciehp: Slot(1-2): Card present
[  109.541013] pcieport 0000:00:1c.1: pciehp: Slot(1-2): No link
[  109.541024] pcieport 0000:00:1c.1: pciehp: Slot(1-2): Card present
[  111.234338] pcieport 0000:00:1c.1: pciehp: Slot(1-2): No link

On kernel 6.12.10, this failure leads to a page fault, sometimes
immediately:

[  127.807503] [     T73] mt7915e 0000:03:00.0: Message 00001eed (seq 7) timeout
[  127.914244] [     T73] BUG: unable to handle page fault for address: ffffabc5c0628ff0
[  127.914294] [     T73] #PF: supervisor write access in kernel mode
[  127.914329] [     T73] #PF: error_code(0x0002) - not-present page
[  127.914363] [     T73] PGD 100000067 P4D 100000067 PUD 100209067 PMD 103e7f067 PTE 0
[  127.914406] [     T73] Oops: Oops: 0002 [#1] PREEMPT SMP NOPTI
[  127.914429] [     T73] CPU: 0 UID: 0 PID: 73 Comm: kworker/u16:6 Kdump: loaded Tainted: G          I        6.12.10-arch1-1 #1 ac0cff2c6581af0a10f6e278cbc98026cc1e3dec
[  127.914489] [     T73] Tainted: [I]=FIRMWARE_WORKAROUND
[  127.914510] [     T73] Hardware name: LENOVO 40612ZU/40612ZU, BIOS 6FET93WW (3.23 ) 10/12/2012
[  127.914538] [     T73] Workqueue: mt76 mt7915_mac_reset_work [mt7915e]
[  127.914578] [     T73] RIP: 0010:mt76_dma_rx_fill+0x157/0x4c0 [mt76]
[  127.914615] [     T73] Code: 8b 54 24 40 85 c0 4c 8b 44 24 18 4c 8b 4c 24 20 4c 8b 5c 24 28 0f 88 2a 03 00 00 c1 e0 10 44 89 ce 44 09 d8 81 ce 00 01 00 00 <45> 89 34 24 41 89 44 24 08 41 89 74 24 04 41 c7 44 24 0c 00 00 00
[  127.914677] [     T73] RSP: 0018:ffffabc5c03afcf8 EFLAGS: 00010246
[  127.914699] [     T73] RAX: 0000000000000000 RBX: ffff9b694630d800 RCX: 0000000000000000
[  127.914726] [     T73] RDX: 0000000000000000 RSI: 0000000006c00000 RDI: 0000000000000000
[  127.914753] [     T73] RBP: ffff9b6947ef45d8 R08: ffff9b6948210000 R09: 0000000006c00000
[  127.914779] [     T73] R10: 00000000000006c0 R11: 0000000000000000 R12: ffffabc5c0628ff0
[  127.914806] [     T73] R13: ffff9b69c630d800 R14: 00000000ffd15800 R15: 0000000000000000
[  127.914833] [     T73] FS:  0000000000000000(0000) GS:ffff9b6a77c00000(0000) knlGS:0000000000000000
[  127.914868] [     T73] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  127.914891] [     T73] CR2: ffffabc5c0628ff0 CR3: 000000004b622000 CR4: 00000000000426f0
[  127.914918] [     T73] Call Trace:
[  127.914930] [     T73]  <TASK>
[  127.914942] [     T73]  ? __die_body.cold+0x19/0x27
[  127.914967] [     T73]  ? page_fault_oops+0x15a/0x2d0
[  127.914992] [     T73]  ? search_bpf_extables+0x5f/0x80
[  127.915016] [     T73]  ? exc_page_fault+0x18a/0x190
[  127.915035] [     T73]  ? asm_exc_page_fault+0x26/0x30
[  127.915056] [     T73]  ? mt76_dma_rx_fill+0x157/0x4c0 [mt76 8ebc1f1034fdcf4b82c21f7f79b6854fd3dd0e30]
[  127.915096] [     T73]  ? mt76_dma_rx_fill+0x1ef/0x4c0 [mt76 8ebc1f1034fdcf4b82c21f7f79b6854fd3dd0e30]
[  127.915137] [     T73]  ? mt76_dma_rx_cleanup.part.0+0x5e/0x160 [mt76 8ebc1f1034fdcf4b82c21f7f79b6854fd3dd0e30]
[  127.915185] [     T73]  ? mt76_dma_rx_cleanup.part.0+0x6c/0x160 [mt76 8ebc1f1034fdcf4b82c21f7f79b6854fd3dd0e30]
[  127.915233] [     T73]  mt7915_dma_reset+0x1e1/0x230 [mt7915e 7945e3c7bfde237a78fef4a04127eb6221537724]
[  127.915280] [     T73]  mt7915_mac_reset_work+0x67e/0xcd0 [mt7915e 7945e3c7bfde237a78fef4a04127eb6221537724]
[  127.915323] [     T73]  process_one_work+0x17b/0x330
[  127.915343] [     T73]  worker_thread+0x2ce/0x3f0
[  127.915365] [     T73]  ? __pfx_worker_thread+0x10/0x10
[  127.915389] [     T73]  kthread+0xcf/0x100
[  127.915406] [     T73]  ? __pfx_kthread+0x10/0x10
[  127.915428] [     T73]  ret_from_fork+0x31/0x50
[  127.915449] [     T73]  ? __pfx_kthread+0x10/0x10
[  127.915470] [     T73]  ret_from_fork_asm+0x1a/0x30
[  127.915494] [     T73]  </TASK>
[  127.915507] [     T73] Modules linked in: mt7915e mt76_connac_lib mt76 mac80211 libarc4 cfg80211 snd_seq_dummy snd_hrtimer snd_seq snd_seq_device ip6t_REJECT nf_reject_ipv6 ipt_REJECT xt_multiport xt_cgroup xt_mark xt_owner xt_tcpudp nft_compat amdgpu amdxcp drm_exec gpu_sched nft_masq drm_buddy nft_ct nft_reject_ipv4 nf_reject_ipv4 nft_reject act_csum cls_u32 sch_htb nft_chain_nat nf_nat nf_conntrack nf_defrag_ipv6 nf_defrag_ipv4 nf_tables bridge stp llc btusb btrtl btintel btbcm btmtk bluetooth crc16 joydev mousedev snd_hda_codec_hdmi snd_hda_codec_conexant kvm_intel iTCO_wdt snd_hda_codec_generic intel_pmc_bxt radeon snd_hda_intel mei_wdt iTCO_vendor_support snd_intel_dspcfg kvm i2c_algo_bit snd_intel_sdw_acpi pcmcia i2c_i801 drm_suballoc_helper snd_hda_codec drm_ttm_helper i2c_smbus snd_hda_core sha512_ssse3 ttm i2c_mux sha1_ssse3 snd_hwdep yenta_socket psmouse acpi_cpufreq pcspkr e1000e r592 pcmcia_rsrc pktcdvd mei_me snd_pcm memstick ptp drm_display_helper pcmcia_core lpc_ich intel_agp snd_timer mei pps_core cec intel_gtt
[  127.915596] [     T73]  think_lmi mac_hid firmware_attributes_class wmi_bmof coretemp thinkpad_acpi platform_profile sparse_keymap rfkill snd soundcore video wmi sg crypto_user dm_mod loop nfnetlink ip_tables x_tables btrfs blake2b_generic libcrc32c crc32c_generic serio_raw sdhci_pci xor atkbd raid6_pq libps2 vivaldi_fmap firewire_ohci cqhci sr_mod sdhci firewire_core sha256_ssse3 mmc_core cdrom i8042 crc_itu_t serio
[  127.916035] [     T73] CR2: ffffabc5c0628ff0


It would be nice to be able to use this card on a more recent kernel. I
can assist with debugging and testing, assuming I haven't somehow gotten
a defective unit - but I don't think that would really explain why I can
use it just fine on 6.1 LTS.

Thanks,
Jared Van Bortel



More information about the Linux-mediatek mailing list