Bug 217606
Summary: | firewire S3 resume failure (TSB43AB23 on AMD 770) | ||
---|---|---|---|
Product: | Drivers | Reporter: | mmyangfl |
Component: | IEEE1394 | Assignee: | drivers_ieee1394 |
Status: | NEW --- | ||
Severity: | normal | CC: | bagasdotme |
Priority: | P3 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | Subsystem: | ||
Regression: | No | Bisected commit-id: | |
Attachments: |
console output
lspci -vvv console output 6.4 |
Description
mmyangfl
2023-06-28 23:49:55 UTC
Created attachment 304501 [details]
console output
Created attachment 304502 [details]
lspci -vvv
What Debian version are you running? Can you check v6.1.y stable series and latest mainline? Debian testing. I upgraded from linux-image-6.1.0-9-amd64 to linux-image-6.3.0-1-amd64 and both kernels suffer from same issue. Same issue upgrading to 6.4~rc7 and BIOS version FKb. ... [ 57.202706] BUG: kernel NULL pointer dereference, address: 0000000000000000 [ 57.202715] #PF: supervisor read access in kernel mode [ 57.202718] #PF: error_code(0x0000) - not-present page [ 57.202721] PGD 0 P4D 0 [ 57.202725] Oops: 0000 [#1] PREEMPT SMP NOPTI [ 57.202729] CPU: 0 PID: 1457 Comm: kworker/u16:13 Not tainted 6.4.0-0-amd64 #1 Debian 6.4~rc7-1~exp1 [ 57.202735] Hardware name: Gigabyte Technology Co., Ltd. GA-MA770-US3/GA-MA770-US3, BIOS FKb 01/06/2011 [ 57.202738] Workqueue: events_unbound async_run_entry_fn [ 57.202748] RIP: 0010:ohci_enable+0x2c7/0x5c0 [firewire_ohci] [ 57.202762] Code: e8 fe 1a 73 f9 48 89 83 70 08 00 00 48 89 c7 48 85 c0 0f 84 00 03 00 00 4c 89 e2 48 89 ee e8 70 ca ff ff 48 8b 83 70 08 00 00 <8b> 10 89 93 80 08 00 00 31 d2 c7 00 00 00 00 00 48 8b 83 a8 05 00 [ 57.202765] RSP: 0018:ffffb85d40a87da0 EFLAGS: 00010246 [ 57.202768] RAX: 0000000000000000 RBX: ffff8f070400a000 RCX: ffffb85d402ca000 [ 57.202771] RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffff8f070400a5d8 [ 57.202773] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 [ 57.202774] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000 [ 57.202776] R13: ffff8f070400a5d8 R14: 0000000000000001 R15: ffff8f0706866568 [ 57.202778] FS: 0000000000000000(0000) GS:ffff8f07b9c00000(0000) knlGS:0000000000000000 [ 57.202781] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 57.202783] CR2: 0000000000000000 CR3: 0000000135b20000 CR4: 00000000000006f0 [ 57.202785] Call Trace: [ 57.202789] <TASK> [ 57.202793] ? __die+0x23/0x70 [ 57.202798] ? page_fault_oops+0x17d/0x4c0 [ 57.202804] ? exc_page_fault+0x77/0x170 [ 57.202808] ? asm_exc_page_fault+0x26/0x30 [ 57.202815] ? ohci_enable+0x2c7/0x5c0 [firewire_ohci] [ 57.202825] pci_resume+0x7e/0x160 [firewire_ohci] [ 57.202833] ? __pfx_pci_pm_resume+0x10/0x10 [ 57.202839] dpm_run_callback+0x89/0x1e0 [ 57.202845] device_resume+0x88/0x190 [ 57.202849] async_resume+0x1e/0x60 [ 57.202852] async_run_entry_fn+0x31/0x130 [ 57.202856] process_one_work+0x1c5/0x3c0 [ 57.202862] worker_thread+0x51/0x390 [ 57.202866] ? __pfx_worker_thread+0x10/0x10 [ 57.202869] kthread+0xf4/0x130 [ 57.202874] ? __pfx_kthread+0x10/0x10 [ 57.202879] ret_from_fork+0x29/0x50 [ 57.202887] </TASK> ... Created attachment 304504 [details]
console output 6.4
After simple experiment I found [1] was never called, which is called by irq_handler, thus [2] immediately got null pointer after resume. Quick fix ... copy_config_rom(ohci->next_config_rom, config_rom, length); } else if (!ohci->config_rom || !ohci->config_rom_bus) { ohci_err(ohci, "failed to resume ohci card\n"); return -EIO; } else { ... does prevent system from hanging after resume. All I can figure out is that irq_handler always gets irq mask 0, so no subsequent action is made. Since I don't have any firewire devices, I can't really dig out why irq does not work, thus I don't know if this workaround is appropriate... [1] https://elixir.bootlin.com/linux/v6.4/source/drivers/firewire/ohci.c#L2022 [2] https://elixir.bootlin.com/linux/v6.4/source/drivers/firewire/ohci.c#L2393 |