linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [BUG] ohci_enable() fails during resume
@ 2015-06-21 21:00 Lukasz Stelmach
  2015-06-23  7:56 ` Clemens Ladisch
  0 siblings, 1 reply; 2+ messages in thread
From: Lukasz Stelmach @ 2015-06-21 21:00 UTC (permalink / raw)
  To: Stefan Richter, linux1394-devel, LKML


[-- Attachment #1.1: Type: text/plain, Size: 1887 bytes --]

Hi,

A bit, suddenly by desktop PC started to fail to resume. I have
redirected the console to ttyS0 and managed to caputere the oops
(attached). I am not a dissassebling expert and I have built my
kernel without full debuging symbold but here is what I found
(at least for the first trace in the attached oops.txt).

The failing code is somewhere around line 2400 of
drivers/firewire/ohci.c (the latest mainline). There is a note
about some values beeing NULL during the resume process but it
appears there are more NULLs then expected.

(%rbx) points to ohci structure.

I attach:

oops.txt - full dump of oops from console.

oops_code.txt - disassembled Code from the oops.

ohci_enable_disassembled.txt - dissassembled ohci_enable function
from my kernel (gentoo v3.18.8, but as far as I can tell there
haven't been much changes around).

I have marked the failing instruction in the disassembler dumps
with "-->".

There are two conditinons I *suspect* being responsible for this
situation.

Hardware failure. There was a storm a week ago recently which might
damaged the hardware. It appears it hit my SB Audigy very slightly
(the card's PCI interface appears OK but the AC97 codec is glitching
when setting mixer registers)

Hardware bug in the on-board firewire controller *and* a bug in the
driver. The code around the line 2400 appears to handle multiple
firewire ports (if I recognise variable names correctly, e.g.
next_config_rom). Now, without the SB card, I've got only one
firewire port so this is what has changed.

Please tell me how can I help more to debug this problem. (I may
have some problems using the firewire port because I don't have any
firewire devices)

Kind regards,
-- 
Było mi bardzo miło.                   Twoje oczy lubią mnie
>Łukasz<                                     i to mnie zgubi  (c)SNL

[-- Attachment #1.2: oops.txt --]
[-- Type: text/plain, Size: 14851 bytes --]

root@kotik ~ # dmesg -n8
root@kotik ~ # modprobe firewire_ohci
[  232.783281] calling  fw_core_init+0x0/0xfb [firewire_core] @ 1944
[  232.789425] initcall fw_core_init+0x0/0xfb [firewire_core] returned 0 after 39 usecs
[  232.798059] calling  fw_ohci_init+0x0/0x4d [firewire_ohci] @ 1944
[  232.855042] firewire_ohci 0000:04:03.0: added OHCI v1.0 device as card 0, 8 IR + 8 IT contexts, quirks 0x0
[  232.864724] firewire_ohci 0000:04:03.0: bad self ID 0/1 (00000000 != ~00000000)
[  232.864862] initcall fw_ohci_init+0x0/0x4d [firewire_ohci] returned 0 after 59285 usecs
root@kotik ~ # systemctl suspend
[  311.223312] PM: Syncing filesystems ... done.
[  311.301192] Freezing user space processes ... (elapsed 0.001 seconds) done.
[  311.309337] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[  311.318148] wlan0: deauthenticating from 28:be:9b:d2:ce:ce by local choice (Reason: 3=DEAUTH_LEAVING)
[  311.416471] cfg80211: Calling CRDA to update world regulatory domain

[  <some RS-232 garbage>usb usb5: root hub lost power or was reset
[  340.411105] snd_hda_intel 0000:00:1b.0: irq 28 for MSI/MSI-X
[  340.411222] usb usb6: root hub lost power or was reset
[  340.411302] usb usb7: root hub lost power or was reset
[  340.411380] usb usb8: root hub lost power or was reset
[  340.411711] usb usb4: root hub lost power or was reset
[  340.411737] rtc_cmos 00:01: System wakeup disabled by ACPI
[  340.412285] serial 00:05: activated
[  341.759829] BUG: unable to handle kernel NULL pointer dereference at           (null)
[  341.759834] IP: [<ffffffffa069a7c4>] ohci_enable+0x274/0x570 [firewire_ohci]
[  341.759836] PGD 0 
[  341.759837] Oops: 0000 [#1] PREEMPT SMP 
[  341.759859] Modules linked in: firewire_ohci firewire_core crc_itu_t ctr ccm snd_usb_audio snd_usbmidi_lib snd_rawmidi snd_seq_device snd_hda_codec_analog snd_hda_codec_generic arc4 iTCO_wdt coretemp kvm_intel kvm microcode sr_mod rtl8187 serio_raw cdrom eeprom_93cx6 mac80211 mousedev gspca_zc3xx gspca_main uas videodev cfg80211 btusb usb_storage media bluetooth rfkill i2c_i801 i2c_core sky2 lpc_ich mfd_core snd_hda_intel snd_hda_controller floppy snd_hda_codec snd_hwdep snd_pcm snd_timer asus_atk0110 acpi_cpufreq snd processor soundcore button thermal_sys hwmon binfmt_misc dm_mod ext4 crc16 mbcache jbd2 usbhid hid_generic hid
[  341.759861] CPU: 0 PID: 2033 Comm: kworker/u8:84 Not tainted 3.18.7-gentoo #3
[  341.759862] Hardware name: System manufacturer P5K-E/P5K-E, BIOS 1305    06/19/2009
[  341.759866] Workqueue: events_unbound async_run_entry_fn
[  341.759867] task: ffff88019262e010 ti: ffff880191770000 task.ti: ffff880191770000
[  341.759869] RIP: 0010:[<ffffffffa069a7c4>]  [<ffffffffa069a7c4>] ohci_enable+0x274/0x570 [firewire_ohci]
[  341.759870] RSP: 0018:ffff880191773cb8  EFLAGS: 00010246
[  341.759871] RAX: 0000000000000000 RBX: ffff88019140a000 RCX: 00000000000000c0
[  341.759872] RDX: 0000000000000000 RSI: 0000000000000004 RDI: ffff88019140a5f8
[  341.759873] RBP: ffff880191773ce8 R08: ffff880191770000 R09: ffff8800c9bb97e0
[  341.759873] R10: 000000000000000f R11: 0000000000000001 R12: 0000000000000000
[  341.759874] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000001
[  341.759875] FS:  0000000000000000(0000) GS:ffff8801afc00000(0000) knlGS:0000000000000000
[  341.759876] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[  341.759877] CR2: 0000000000000000 CR3: 0000000192666000 CR4: 00000000000007f0
[  341.759877] Stack:
[  341.759879]  ffff880191773cc8 ffff88019140a000 0000000000000000 ffff8801a9302000
[  341.759880]  ffff8801a93020f8 ffff8801a9049000 ffff880191773d08 ffffffffa069ab36
[  341.759881]  ffff8801a9302000 ffffffffa069bc00 ffff880191773d28 ffffffff81208c63
[  341.759882] Call Trace:
[  341.759885]  [<ffffffffa069ab36>] pci_resume+0x76/0x162 [firewire_ohci]
[  341.759888]  [<ffffffff81208c63>] pci_legacy_resume+0x33/0x50
[  341.759890]  [<ffffffff81209b78>] pci_pm_resume+0x78/0xb0
[  341.759892]  [<ffffffff81209b00>] ? pci_pm_thaw+0xa0/0xa0
[  341.759894]  [<ffffffff8128a2b6>] dpm_run_callback.isra.19+0x16/0x50
[  341.759895]  [<ffffffff8128a626>] device_resume+0x96/0x140
[  341.759897]  [<ffffffff8128a6ec>] async_resume+0x1c/0x50
[  341.759898]  [<ffffffff81060596>] async_run_entry_fn+0x36/0xf0
[  341.759900]  [<ffffffff8105932a>] process_one_work+0x12a/0x310
[  341.759901]  [<ffffffff81059be9>] worker_thread+0x119/0x450
[  341.759902]  [<ffffffff81059ad0>] ? cancel_delayed_work_sync+0x10/0x10
[  341.759904]  [<ffffffff8105df84>] kthread+0xc4/0xe0
[  341.759906]  [<ffffffff8105dec0>] ? kthread_create_on_node+0x180/0x180
[  341.759908]  [<ffffffff814241ec>] ret_from_fork+0x7c/0xb0
[  341.759909]  [<ffffffff8105dec0>] ? kthread_create_on_node+0x180/0x180
[  341.759923] Code: 00 04 00 00 ff d0 48 85 c0 48 89 c7 48 89 83 98 08 00 00 0f 84 07 01 00 00 4c 89 f2 4c 89 ee e8 f3 af ff ff 48 8b 83 98 08 00 00 <8b> 10 89 93 a8 08 00 00 c7 00 00 00 00 00 31 c0 48 8b 93 c8 05 
[  341.759925] RIP  [<ffffffffa069a7c4>] ohci_enable+0x274/0x570 [firewire_ohci]
[  341.759925]  RSP <ffff880191773cb8>
[  341.759926] CR2: 0000000000000000
[  341.759927] ---[ end trace 0f215659818bf259 ]---
[  341.759942] BUG: unable to handle kernel paging request at ffffffffffffffd8
[  341.759944] IP: [<ffffffff8105e4ac>] kthread_data+0xc/0x20
[  341.759946] PGD 1812067 PUD 1814067 PMD 0 
[  341.759947] Oops: 0000 [#2] PREEMPT SMP 
[  341.759965] Modules linked in: firewire_ohci firewire_core crc_itu_t ctr ccm snd_usb_audio snd_usbmidi_lib snd_rawmidi snd_seq_device snd_hda_codec_analog snd_hda_codec_generic arc4 iTCO_wdt coretemp kvm_intel kvm microcode sr_mod rtl8187 serio_raw cdrom eeprom_93cx6 mac80211 mousedev gspca_zc3xx gspca_main uas videodev cfg80211 btusb usb_storage media bluetooth rfkill i2c_i801 i2c_core sky2 lpc_ich mfd_core snd_hda_intel snd_hda_controller floppy snd_hda_codec snd_hwdep snd_pcm snd_timer asus_atk0110 acpi_cpufreq snd processor soundcore button thermal_sys hwmon binfmt_misc dm_mod ext4 crc16 mbcache jbd2 usbhid hid_generic hid
[  341.759966] CPU: 0 PID: 2033 Comm: kworker/u8:84 Tainted: G      D        3.18.7-gentoo #3
[  341.759967] Hardware name: System manufacturer P5K-E/P5K-E, BIOS 1305    06/19/2009
[  341.759974] task: ffff88019262e010 ti: ffff880191770000 task.ti: ffff880191770000
[  341.759976] RIP: 0010:[<ffffffff8105e4ac>]  [<ffffffff8105e4ac>] kthread_data+0xc/0x20
[  341.759977] RSP: 0018:ffff880191773810  EFLAGS: 00010096
[  341.759977] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 000000000000000f
[  341.759978] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff88019262e010
[  341.759979] RBP: ffff880191773828 R08: 0000000000000001 R09: 000000000000001f
[  341.759980] R10: ffffffff8199c684 R11: 000000000000001a R12: ffff88019262e438
[  341.759980] R13: 0000000000000000 R14: 0000000000000000 R15: ffff88019262e010
[  341.759981] FS:  0000000000000000(0000) GS:ffff8801afc00000(0000) knlGS:0000000000000000
[  341.759982] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[  341.759983] CR2: 0000000000000028 CR3: 0000000192666000 CR4: 00000000000007f0
[  341.759983] Stack:
[  341.759985]  ffffffff81059f90 ffff880191773828 ffff8801afc10700 ffff880191773938
[  341.759986]  ffffffff81420803 ffff880191773893 0000000000009000 ffff88019262e010
[  341.759988]  ffff880191773fd8 0000000000000008 ffff880192547240 0000000000000001
[  341.759988] Call Trace:
[  341.759990]  [<ffffffff81059f90>] ? wq_worker_sleeping+0x10/0xa0
[  341.759991]  [<ffffffff81420803>] __schedule+0x403/0x870
[  341.759994]  [<ffffffff8108bd52>] ? call_rcu+0x12/0x20
[  341.759995]  [<ffffffff8108bd52>] ? call_rcu+0x12/0x20
[  341.759997]  [<ffffffff81045b0b>] ? release_task+0x38b/0x490
[  341.759998]  [<ffffffff81420c94>] schedule+0x24/0x70
[  341.760000]  [<ffffffff810462ba>] do_exit+0x6aa/0xa00
[  341.760002]  [<ffffffff81006109>] oops_end+0x89/0xd0
[  341.760004]  [<ffffffff8141da72>] no_context+0x2e5/0x343
[  341.760006]  [<ffffffff8106d80f>] ? set_next_entity+0x5f/0x80
[  341.760008]  [<ffffffff8141db4b>] __bad_area_nosemaphore+0x7b/0x1d1
[  341.760009]  [<ffffffff8141dcaf>] bad_area_nosemaphore+0xe/0x10
[  341.760011]  [<ffffffff81038612>] __do_page_fault+0x2d2/0x4b0
[  341.760013]  [<ffffffff8126d61a>] ? acpi_rs_get_prt_method_data+0x3c/0x45
[  341.760016]  [<ffffffff810332ce>] ? mp_map_pin_to_irq+0xee/0x250
[  341.760018]  [<ffffffff8108ee96>] ? lock_timer_base.isra.31+0x26/0x50
[  341.760020]  [<ffffffff8108f2f3>] ? try_to_del_timer_sync+0x43/0x60
[  341.760021]  [<ffffffff8103882c>] do_page_fault+0xc/0x10
[  341.760023]  [<ffffffff814257b2>] page_fault+0x22/0x30
[  341.760025]  [<ffffffffa069a7c4>] ? ohci_enable+0x274/0x570 [firewire_ohci]
[  341.760027]  [<ffffffffa069a715>] ? ohci_enable+0x1c5/0x570 [firewire_ohci]
[  341.760029]  [<ffffffffa069ab36>] pci_resume+0x76/0x162 [firewire_ohci]
[  341.760031]  [<ffffffff81208c63>] pci_legacy_resume+0x33/0x50
[  341.760032]  [<ffffffff81209b78>] pci_pm_resume+0x78/0xb0
[  341.760034]  [<ffffffff81209b00>] ? pci_pm_thaw+0xa0/0xa0
[  341.760035]  [<ffffffff8128a2b6>] dpm_run_callback.isra.19+0x16/0x50
[  341.760036]  [<ffffffff8128a626>] device_resume+0x96/0x140
[  341.760038]  [<ffffffff8128a6ec>] async_resume+0x1c/0x50
[  341.760039]  [<ffffffff81060596>] async_run_entry_fn+0x36/0xf0
[  341.760040]  [<ffffffff8105932a>] process_one_work+0x12a/0x310
[  341.760041]  [<ffffffff81059be9>] worker_thread+0x119/0x450
[  341.760043]  [<ffffffff81059ad0>] ? cancel_delayed_work_sync+0x10/0x10
[  341.760044]  [<ffffffff8105df84>] kthread+0xc4/0xe0
[  341.760046]  [<ffffffff8105dec0>] ? kthread_create_on_node+0x180/0x180
[  341.760047]  [<ffffffff814241ec>] ret_from_fork+0x7c/0xb0
[  341.760049]  [<ffffffff8105dec0>] ? kthread_create_on_node+0x180/0x180
[  341.760062] Code: 48 89 e5 5d 48 8b 40 c8 48 c1 e8 02 83 e0 01 c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 48 8b 87 d0 03 00 00 55 48 89 e5 5d <48> 8b 40 d8 c3 66 66 66 66 66 66 2e 0f 1f 84 00 00 00 00 00 55 
[  341.760063] RIP  [<ffffffff8105e4ac>] kthread_data+0xc/0x20
[  341.760064]  RSP <ffff880191773810>
[  341.760064] CR2: ffffffffffffffd8
[  341.760065] ---[ end trace 0f215659818bf25a ]---
[  341.760065] Fixing recursive fault but reboot is needed!
[  341.760067] BUG: scheduling while atomic: kworker/u8:84/2033/0x00000004
[  341.760084] Modules linked in: firewire_ohci firewire_core crc_itu_t ctr ccm snd_usb_audio snd_usbmidi_lib snd_rawmidi snd_seq_device snd_hda_codec_analog snd_hda_codec_generic arc4 iTCO_wdt coretemp kvm_intel kvm microcode sr_mod rtl8187 serio_raw cdrom eeprom_93cx6 mac80211 mousedev gspca_zc3xx gspca_main uas videodev cfg80211 btusb usb_storage media bluetooth rfkill i2c_i801 i2c_core sky2 lpc_ich mfd_core snd_hda_intel snd_hda_controller floppy snd_hda_codec snd_hwdep snd_pcm snd_timer asus_atk0110 acpi_cpufreq snd processor soundcore button thermal_sys hwmon binfmt_misc dm_mod ext4 crc16 mbcache jbd2 usbhid hid_generic hid
[  341.760086] CPU: 0 PID: 2033 Comm: kworker/u8:84 Tainted: G      D        3.18.7-gentoo #3
[  341.760086] Hardware name: System manufacturer P5K-E/P5K-E, BIOS 1305    06/19/2009
[  341.760093]  ffff880191773768 ffff880191773378 ffffffff8141f0f1 0000000000008c8c
[  341.760094]  ffff8801afc10700 ffff880191773388 ffffffff8141e269 ffff880191773498
[  341.760096]  ffffffff81420991 0000000000000000 0000000000009000 ffff88019262e010
[  341.760096] Call Trace:
[  341.760098]  [<ffffffff8141f0f1>] dump_stack+0x4e/0x71
[  341.760100]  [<ffffffff8141e269>] __schedule_bug+0x42/0x50
[  341.760101]  [<ffffffff81420991>] __schedule+0x591/0x870
[  341.760103]  [<ffffffff81081b15>] ? vprintk_emit+0x215/0x4d0
[  341.760105]  [<ffffffff8141e4b9>] ? printk+0x48/0x4a
[  341.760106]  [<ffffffff81420c94>] schedule+0x24/0x70
[  341.760107]  [<ffffffff810464f8>] do_exit+0x8e8/0xa00
[  341.760109]  [<ffffffff81082ce9>] ? kmsg_dump+0xb9/0xd0
[  341.760111]  [<ffffffff81006109>] oops_end+0x89/0xd0
[  341.760112]  [<ffffffff8141da72>] no_context+0x2e5/0x343
[  341.760114]  [<ffffffff8141db4b>] __bad_area_nosemaphore+0x7b/0x1d1
[  341.760115]  [<ffffffff8141dcaf>] bad_area_nosemaphore+0xe/0x10
[  341.760117]  [<ffffffff81038612>] __do_page_fault+0x2d2/0x4b0
[  341.760119]  [<ffffffff811dfa42>] ? put_dec+0x72/0x90
[  341.760120]  [<ffffffff811e063c>] ? number.isra.2+0x35c/0x3a0
[  341.760122]  [<ffffffff8103882c>] do_page_fault+0xc/0x10
[  341.760123]  [<ffffffff814257b2>] page_fault+0x22/0x30
[  341.760125]  [<ffffffff8105e4ac>] ? kthread_data+0xc/0x20
[  341.760126]  [<ffffffff81059f90>] ? wq_worker_sleeping+0x10/0xa0
[  341.760127]  [<ffffffff81420803>] __schedule+0x403/0x870
[  341.760129]  [<ffffffff8108bd52>] ? call_rcu+0x12/0x20
[  341.760130]  [<ffffffff8108bd52>] ? call_rcu+0x12/0x20
[  341.760132]  [<ffffffff81045b0b>] ? release_task+0x38b/0x490
[  341.760133]  [<ffffffff81420c94>] schedule+0x24/0x70
[  341.760134]  [<ffffffff810462ba>] do_exit+0x6aa/0xa00
[  341.760135]  [<ffffffff81006109>] oops_end+0x89/0xd0
[  341.760137]  [<ffffffff8141da72>] no_context+0x2e5/0x343
[  341.760138]  [<ffffffff8106d80f>] ? set_next_entity+0x5f/0x80
[  341.760140]  [<ffffffff8141db4b>] __bad_area_nosemaphore+0x7b/0x1d1
[  341.760141]  [<ffffffff8141dcaf>] bad_area_nosemaphore+0xe/0x10
[  341.760143]  [<ffffffff81038612>] __do_page_fault+0x2d2/0x4b0
[  341.760144]  [<ffffffff8126d61a>] ? acpi_rs_get_prt_method_data+0x3c/0x45
[  341.760146]  [<ffffffff810332ce>] ? mp_map_pin_to_irq+0xee/0x250
[  341.760147]  [<ffffffff8108ee96>] ? lock_timer_base.isra.31+0x26/0x50
[  341.760149]  [<ffffffff8108f2f3>] ? try_to_del_timer_sync+0x43/0x60
[  341.760150]  [<ffffffff8103882c>] do_page_fault+0xc/0x10
[  341.760152]  [<ffffffff814257b2>] page_fault+0x22/0x30
[  341.760154]  [<ffffffffa069a7c4>] ? ohci_enable+0x274/0x570 [firewire_ohci]
[  341.760156]  [<ffffffffa069a715>] ? ohci_enable+0x1c5/0x570 [firewire_ohci]
[  341.760158]  [<ffffffffa069ab36>] pci_resume+0x76/0x162 [firewire_ohci]
[  341.760159]  [<ffffffff81208c63>] pci_legacy_resume+0x33/0x50
[  341.760161]  [<ffffffff81209b78>] pci_pm_resume+0x78/0xb0
[  341.760162]  [<ffffffff81209b00>] ? pci_pm_thaw+0xa0/0xa0
[  341.760164]  [<ffffffff8128a2b6>] dpm_run_callback.isra.19+0x16/0x50
[  341.760165]  [<ffffffff8128a626>] device_resume+0x96/0x140
[  341.760166]  [<ffffffff8128a6ec>] async_resume+0x1c/0x50
[  341.760167]  [<ffffffff81060596>] async_run_entry_fn+0x36/0xf0
[  341.760169]  [<ffffffff8105932a>] process_one_work+0x12a/0x310
[  341.760170]  [<ffffffff81059be9>] worker_thread+0x119/0x450
[  341.760171]  [<ffffffff81059ad0>] ? cancel_delayed_work_sync+0x10/0x10
[  341.760173]  [<ffffffff8105df84>] kthread+0xc4/0xe0
[  341.760174]  [<ffffffff8105dec0>] ? kthread_create_on_node+0x180/0x180
[  341.760176]  [<ffffffff814241ec>] ret_from_fork+0x7c/0xb0
[  341.760177]  [<ffffffff8105dec0>] ? kthread_create_on_node+0x180/0x180

[-- Attachment #1.3: oops_code.txt --]
[-- Type: text/plain, Size: 953 bytes --]

   0x0000000000000020 <+0>: add    %al,(%rax,%rax,1)
   0x0000000000000023 <+3>: add    %bh,%bh
   0x0000000000000025 <+5>: rorb   -0x7b(%rax)
   0x0000000000000028 <+8>: rorb   $0xc7,-0x77(%rax)
   0x000000000000002c <+12>: mov    %rax,0x898(%rbx)
   0x0000000000000033 <+19>: je     0x140
   0x0000000000000039 <+25>: mov    %r14,%rdx
   0x000000000000003c <+28>: mov    %r13,%rsi
   0x000000000000003f <+31>: callq  0xffffffffffffb037 <copy_config_rom>
   0x0000000000000044 <+36>: mov    0x898(%rbx),%rax
-->0x000000000000004b <+43>: mov    (%rax),%edx       <--
   0x000000000000004d <+45>: mov    %edx,0x8a8(%rbx)
   0x0000000000000053 <+51>: movl   $0x0,(%rax)
   0x0000000000000059 <+57>: xor    %eax,%eax
   0x000000000000005b <+59>: rex.W
   0x000000000000005c <+60>: .byte 0x8b
   0x000000000000005d <+61>: xchg   %eax,%ebx
   0x000000000000005e <+62>: .byte 0xc8
   0x000000000000005f <+63>: .byte 0x5
   0x0000000000000060 <+64>: .byte 0x0

[-- Attachment #1.4: ohci_enable_disassembled.txt --]
[-- Type: text/plain, Size: 16822 bytes --]

Dump of assembler code for function ohci_enable:
   0x0000000000005550 <+0>:     push   %rbp
   0x0000000000005551 <+1>:     mov    %rsp,%rbp
   0x0000000000005554 <+4>:     push   %r15
   0x0000000000005556 <+6>:     push   %r14
   0x0000000000005558 <+8>:     mov    %rdx,%r14
   0x000000000000555b <+11>:    push   %r13
   0x000000000000555d <+13>:    mov    %rsi,%r13
   0x0000000000005560 <+16>:    push   %r12
   0x0000000000005562 <+18>:    push   %rbx
   0x0000000000005563 <+19>:    mov    %rdi,%rbx
   0x0000000000005566 <+22>:    sub    $0x8,%rsp
   0x000000000000556a <+26>:    callq  0x410 <software_reset>
   0x000000000000556f <+31>:    test   %eax,%eax
   0x0000000000005571 <+33>:    mov    %eax,%r12d
   0x0000000000005574 <+36>:    jne    0x5a4e <ohci_enable+1278>
   0x000000000000557a <+42>:    mov    0x5c8(%rbx),%rdx
   0x0000000000005581 <+49>:    mov    $0xc0000,%eax
   0x0000000000005586 <+54>:    mov    %eax,0x50(%rdx)
   0x0000000000005589 <+57>:    mov    0x5c8(%rbx),%rax
   0x0000000000005590 <+64>:    mov    (%rax),%eax
   0x0000000000005592 <+66>:    xor    %r15d,%r15d
   0x0000000000005595 <+69>:    jmp    0x55a6 <ohci_enable+86>
   0x0000000000005597 <+71>:    nopw   0x0(%rax,%rax,1)
   0x00000000000055a0 <+80>:    cmp    $0x2,%r15d
   0x00000000000055a4 <+84>:    jg     0x55c5 <ohci_enable+117>
   0x00000000000055a6 <+86>:    mov    $0x32,%edi
   0x00000000000055ab <+91>:    callq  0x55b0 <ohci_enable+96>
   0x00000000000055b0 <+96>:    mov    0x5c8(%rbx),%rax
   0x00000000000055b7 <+103>:   mov    0x50(%rax),%eax
   0x00000000000055ba <+106>:   add    $0x1,%r15d
   0x00000000000055be <+110>:   and    $0x80000,%eax
   0x00000000000055c3 <+115>:   je     0x55a0 <ohci_enable+80>
   0x00000000000055c5 <+117>:   test   %eax,%eax
   0x00000000000055c7 <+119>:   je     0x5a6b <ohci_enable+1307>
   0x00000000000055cd <+125>:   testb  $0x20,0x5dc(%rbx)
   0x00000000000055d4 <+132>:   jne    0x591d <ohci_enable+973>
   0x00000000000055da <+138>:   mov    0x5c8(%rbx),%rdx
   0x00000000000055e1 <+145>:   mov    $0x40000000,%eax
   0x00000000000055e6 <+150>:   mov    %eax,0x54(%rdx)
   0x00000000000055e9 <+153>:   mov    0x8b8(%rbx),%rax
   0x00000000000055f0 <+160>:   mov    0x5c8(%rbx),%rdx
   0x00000000000055f7 <+167>:   mov    %eax,0x64(%rdx)
   0x00000000000055fa <+170>:   mov    $0x300000,%eax
   0x00000000000055ff <+175>:   mov    0x5c8(%rbx),%rdx
   0x0000000000005606 <+182>:   mov    %eax,0xe0(%rdx)
   0x000000000000560c <+188>:   mov    $0xc8082f,%eax
   0x0000000000005611 <+193>:   mov    0x5c8(%rbx),%rdx
   0x0000000000005618 <+200>:   mov    %eax,0x8(%rdx)
   0x000000000000561b <+203>:   mov    $0x404,%eax
   0x0000000000005620 <+208>:   movb   $0x0,0x5e8(%rbx)
   0x0000000000005627 <+215>:   xor    %ecx,%ecx
   0x0000000000005629 <+217>:   mov    $0x1,%esi
   0x000000000000562e <+222>:   mov    $0x10000000,%edi
   0x0000000000005633 <+227>:   nopl   0x0(%rax,%rax,1)
   0x0000000000005638 <+232>:   mov    %esi,%edx
   0x000000000000563a <+234>:   shl    %cl,%edx
   0x000000000000563c <+236>:   test   %edx,0x868(%rbx)
   0x0000000000005642 <+242>:   je     0x5650 <ohci_enable+256>
   0x0000000000005644 <+244>:   mov    %rax,%rdx
   0x0000000000005647 <+247>:   add    0x5c8(%rbx),%rdx
   0x000000000000564e <+254>:   mov    %edi,(%rdx)
   0x0000000000005650 <+256>:   add    $0x1,%ecx
   0x0000000000005653 <+259>:   add    $0x20,%rax
   0x0000000000005657 <+263>:   cmp    $0x20,%ecx
   0x000000000000565a <+266>:   jne    0x5638 <ohci_enable+232>
   0x000000000000565c <+268>:   mov    0x5c8(%rbx),%rax
   0x0000000000005663 <+275>:   mov    (%rax),%eax
   0x0000000000005665 <+277>:   and    $0xff00ff,%eax
   0x000000000000566a <+282>:   cmp    $0x1000f,%eax
   0x000000000000566f <+287>:   ja     0x5890 <ohci_enable+832>
   0x0000000000005675 <+293>:   mov    0x5c8(%rbx),%rdx
   0x000000000000567c <+300>:   mov    $0x3f,%eax
   0x0000000000005681 <+305>:   mov    %eax,0xdc(%rdx)
   0x0000000000005687 <+311>:   mov    0x5c8(%rbx),%rax
   0x000000000000568e <+318>:   mov    0xdc(%rax),%eax
   0x0000000000005694 <+324>:   and    $0x3f,%eax
   0x0000000000005697 <+327>:   mov    0x5c8(%rbx),%rdx
   0x000000000000569e <+334>:   mov    %eax,0x5e0(%rbx)
   0x00000000000056a4 <+340>:   xor    %eax,%eax
   0x00000000000056a6 <+342>:   mov    %eax,0xdc(%rdx)
   0x00000000000056ac <+348>:   mov    0x5e0(%rbx),%eax
   0x00000000000056b2 <+354>:   mov    0x5c8(%rbx),%rdx
   0x00000000000056b9 <+361>:   test   %eax,%eax
   0x00000000000056bb <+363>:   mov    $0x10000,%eax
   0x00000000000056c0 <+368>:   setne  0x1bd(%rbx)
   0x00000000000056c7 <+375>:   mov    %eax,0x120(%rdx)
   0x00000000000056cd <+381>:   mov    $0xffffffff,%eax
   0x00000000000056d2 <+386>:   mov    0x5c8(%rbx),%rdx
   0x00000000000056d9 <+393>:   mov    %eax,0x84(%rdx)
   0x00000000000056df <+399>:   mov    0x5c8(%rbx),%rdx
   0x00000000000056e6 <+406>:   mov    %eax,0x8c(%rdx)
   0x00000000000056ec <+412>:   mov    0x5c8(%rbx),%rax
   0x00000000000056f3 <+419>:   mov    0x50(%rax),%eax
   0x00000000000056f6 <+422>:   test   $0x800000,%eax
   0x00000000000056fb <+427>:   jne    0x58d8 <ohci_enable+904>
   0x0000000000005701 <+433>:   xor    %edx,%edx
   0x0000000000005703 <+435>:   mov    $0xc0,%ecx
   0x0000000000005708 <+440>:   mov    $0x4,%esi
   0x000000000000570d <+445>:   mov    %rbx,%rdi
   0x0000000000005710 <+448>:   callq  0x2d80 <ohci_update_phy_reg>
   0x0000000000005715 <+453>:   test   %eax,%eax
   0x0000000000005717 <+455>:   js     0x5918 <ohci_enable+968>
   0x000000000000571d <+461>:   test   %r13,%r13
   0x0000000000005720 <+464>:   je     0x59a1 <ohci_enable+1105>
   0x0000000000005726 <+470>:   mov    0x8(%rbx),%rdi
   0x000000000000572a <+474>:   test   %rdi,%rdi
   0x000000000000572d <+477>:   je     0x5a9e <ohci_enable+1358>
   0x0000000000005733 <+483>:   mov    0x148(%rdi),%rax
   0x000000000000573a <+490>:   test   %rax,%rax
   0x000000000000573d <+493>:   cmove  0x0(%rip),%rax        # 0x5745 <ohci_enable+501>
   0x0000000000005745 <+501>:   mov    0x110(%rdi),%rdx
   0x000000000000574c <+508>:   test   %rdx,%rdx
   0x000000000000574f <+511>:   je     0x58ae <ohci_enable+862>
   0x0000000000005755 <+517>:   cmpq   $0x0,(%rdx)
   0x0000000000005759 <+521>:   je     0x58ae <ohci_enable+862>
   0x000000000000575f <+527>:   mov    (%rax),%rax
   0x0000000000005762 <+530>:   test   %rax,%rax
   0x0000000000005765 <+533>:   je     0x58ae <ohci_enable+862>
   0x000000000000576b <+539>:   mov    0x118(%rdi),%rdx
   0x0000000000005772 <+546>:   mov    $0xd4,%ecx
   0x0000000000005777 <+551>:   test   %rdx,%rdx
   0x000000000000577a <+554>:   je     0x578e <ohci_enable+574>
   0x000000000000577c <+556>:   cmp    $0xffffff,%rdx
   0x0000000000005783 <+563>:   ja     0x5a86 <ohci_enable+1334>
   0x0000000000005789 <+569>:   mov    $0xd1,%ecx
   0x000000000000578e <+574>:   lea    0x8a0(%rbx),%rdx
   0x0000000000005795 <+581>:   xor    %r8d,%r8d
   0x0000000000005798 <+584>:   mov    $0x400,%esi
   0x000000000000579d <+589>:   callq  *%rax
   0x000000000000579f <+591>:   test   %rax,%rax
   0x00000000000057a2 <+594>:   mov    %rax,%rdi
   0x00000000000057a5 <+597>:   mov    %rax,0x898(%rbx)
   0x00000000000057ac <+604>:   je     0x58b9 <ohci_enable+873>
   0x00000000000057b2 <+610>:   mov    %r14,%rdx
   0x00000000000057b5 <+613>:   mov    %r13,%rsi
   0x00000000000057b8 <+616>:   callq  0x7b0 <copy_config_rom>
   0x00000000000057bd <+621>:   mov    0x898(%rbx),%rax
-->0x00000000000057c4 <+628>:   mov    (%rax),%edx<--
   0x00000000000057c6 <+630>:   mov    %edx,0x8a8(%rbx)
   0x00000000000057cc <+636>:   movl   $0x0,(%rax)
   0x00000000000057d2 <+642>:   xor    %eax,%eax
   0x00000000000057d4 <+644>:   mov    0x5c8(%rbx),%rdx
   0x00000000000057db <+651>:   mov    %eax,0x18(%rdx)
   0x00000000000057de <+654>:   mov    0x898(%rbx),%rax
   0x00000000000057e5 <+661>:   mov    0x5c8(%rbx),%rdx
   0x00000000000057ec <+668>:   mov    0x8(%rax),%eax
   0x00000000000057ef <+671>:   bswap  %eax
   0x00000000000057f1 <+673>:   mov    %eax,0x20(%rdx)
   0x00000000000057f4 <+676>:   mov    0x8a0(%rbx),%rax
   0x00000000000057fb <+683>:   mov    0x5c8(%rbx),%rdx
   0x0000000000005802 <+690>:   mov    %eax,0x34(%rdx)
   0x0000000000005805 <+693>:   mov    $0x80000000,%eax
   0x000000000000580a <+698>:   mov    0x5c8(%rbx),%rdx
   0x0000000000005811 <+705>:   mov    %eax,0x100(%rdx)
   0x0000000000005817 <+711>:   mov    0x0(%rip),%eax        # 0x581d <ohci_enable+717>
   0x000000000000581d <+717>:   mov    0x5c8(%rbx),%rdx
   0x0000000000005824 <+724>:   and    $0x8,%eax
   0x0000000000005827 <+727>:   cmp    $0x1,%eax
   0x000000000000582a <+730>:   sbb    %eax,%eax
   0x000000000000582c <+732>:   and    $0xfffe0000,%eax
   0x0000000000005831 <+737>:   sub    $0x7c78fe0d,%eax
   0x0000000000005836 <+742>:   mov    %eax,0x88(%rdx)
   0x000000000000583c <+748>:   mov    $0x80020000,%eax
   0x0000000000005841 <+753>:   mov    0x5c8(%rbx),%rdx
   0x0000000000005848 <+760>:   mov    %eax,0x50(%rdx)
   0x000000000000584b <+763>:   mov    $0x600,%eax
   0x0000000000005850 <+768>:   mov    0x5c8(%rbx),%rdx
   0x0000000000005857 <+775>:   mov    %eax,0xe0(%rdx)
   0x000000000000585d <+781>:   lea    0x630(%rbx),%rdi
   0x0000000000005864 <+788>:   callq  0x50 <ar_context_run>
   0x0000000000005869 <+793>:   lea    0x6c8(%rbx),%rdi
   0x0000000000005870 <+800>:   callq  0x50 <ar_context_run>
   0x0000000000005875 <+805>:   mov    0x5c8(%rbx),%rax
   0x000000000000587c <+812>:   mov    (%rax),%eax
   0x000000000000587e <+814>:   mov    $0x1,%edx
   0x0000000000005883 <+819>:   xor    %esi,%esi
   0x0000000000005885 <+821>:   mov    %rbx,%rdi
   0x0000000000005888 <+824>:   callq  0x588d <ohci_enable+829>
   0x000000000000588d <+829>:   jmp    0x58bf <ohci_enable+879>
   0x000000000000588f <+831>:   nop
   0x0000000000005890 <+832>:   mov    0x5c8(%rbx),%rdx
   0x0000000000005897 <+839>:   mov    $0xfffffffe,%eax
   0x000000000000589c <+844>:   mov    %eax,0xb4(%rdx)
   0x00000000000058a2 <+850>:   movb   $0x1,0x1be(%rbx)
   0x00000000000058a9 <+857>:   jmpq   0x5675 <ohci_enable+293>
   0x00000000000058ae <+862>:   movq   $0x0,0x898(%rbx)
   0x00000000000058b9 <+873>:   mov    $0xfffffff4,%r12d
   0x00000000000058bf <+879>:   add    $0x8,%rsp
   0x00000000000058c3 <+883>:   mov    %r12d,%eax
   0x00000000000058c6 <+886>:   pop    %rbx
   0x00000000000058c7 <+887>:   pop    %r12
   0x00000000000058c9 <+889>:   pop    %r13
   0x00000000000058cb <+891>:   pop    %r14
   0x00000000000058cd <+893>:   pop    %r15
   0x00000000000058cf <+895>:   pop    %rbp
   0x00000000000058d0 <+896>:   retq   
   0x00000000000058d1 <+897>:   nopl   0x0(%rax)
   0x00000000000058d8 <+904>:   mov    $0x2,%esi
   0x00000000000058dd <+909>:   mov    %rbx,%rdi
   0x00000000000058e0 <+912>:   callq  0x2c70 <read_phy_reg>
   0x00000000000058e5 <+917>:   test   %eax,%eax
   0x00000000000058e7 <+919>:   js     0x5918 <ohci_enable+968>
   0x00000000000058e9 <+921>:   and    $0xe0,%eax
   0x00000000000058ee <+926>:   cmp    $0xe0,%eax
   0x00000000000058f3 <+931>:   je     0x59c2 <ohci_enable+1138>
   0x00000000000058f9 <+937>:   xor    %ecx,%ecx
   0x00000000000058fb <+939>:   mov    $0x3,%edx
   0x0000000000005900 <+944>:   mov    $0x5,%esi
   0x0000000000005905 <+949>:   mov    %rbx,%rdi
   0x0000000000005908 <+952>:   callq  0x2d30 <update_phy_reg>
   0x000000000000590d <+957>:   test   %eax,%eax
   0x000000000000590f <+959>:   jns    0x5ab1 <ohci_enable+1377>
   0x0000000000005915 <+965>:   nopl   (%rax)
   0x0000000000005918 <+968>:   mov    %eax,%r12d
   0x000000000000591b <+971>:   jmp    0x58bf <ohci_enable+879>
   0x000000000000591d <+973>:   mov    $0x2,%esi
   0x0000000000005922 <+978>:   mov    %rbx,%rdi
   0x0000000000005925 <+981>:   callq  0x2c70 <read_phy_reg>
   0x000000000000592a <+986>:   test   %eax,%eax
   0x000000000000592c <+988>:   js     0x5918 <ohci_enable+968>
   0x000000000000592e <+990>:   and    $0xe0,%eax
   0x0000000000005933 <+995>:   cmp    $0xe0,%eax
   0x0000000000005938 <+1000>:  je     0x5946 <ohci_enable+1014>
   0x000000000000593a <+1002>:  andl   $0xffffffdf,0x5dc(%rbx)
   0x0000000000005941 <+1009>:  jmpq   0x55da <ohci_enable+138>
   0x0000000000005946 <+1014>:  xor    %r15d,%r15d
   0x0000000000005949 <+1017>:  mov    $0x20,%ecx
   0x000000000000594e <+1022>:  mov    $0xe0,%edx
   0x0000000000005953 <+1027>:  mov    $0x7,%esi
   0x0000000000005958 <+1032>:  mov    %rbx,%rdi
   0x000000000000595b <+1035>:  callq  0x2d30 <update_phy_reg>
   0x0000000000005960 <+1040>:  test   %eax,%eax
   0x0000000000005962 <+1042>:  js     0x5918 <ohci_enable+968>
   0x0000000000005964 <+1044>:  lea    0xf(%r15),%esi
   0x0000000000005968 <+1048>:  mov    %rbx,%rdi
   0x000000000000596b <+1051>:  callq  0x2c70 <read_phy_reg>
   0x0000000000005970 <+1056>:  test   %eax,%eax
   0x0000000000005972 <+1058>:  js     0x5918 <ohci_enable+968>
   0x0000000000005974 <+1060>:  movzbl 0x0(%r15),%edx
   0x000000000000597c <+1068>:  cmp    %eax,%edx
   0x000000000000597e <+1070>:  jne    0x593a <ohci_enable+1002>
   0x0000000000005980 <+1072>:  sub    $0x1,%r15
   0x0000000000005984 <+1076>:  cmp    $0xfffffffffffffffa,%r15
   0x0000000000005988 <+1080>:  jne    0x5949 <ohci_enable+1017>
   0x000000000000598a <+1082>:  mov    0x8(%rbx),%rdi
   0x000000000000598e <+1086>:  mov    $0x0,%rsi
   0x0000000000005995 <+1093>:  xor    %eax,%eax
   0x0000000000005997 <+1095>:  callq  0x599c <ohci_enable+1100>
   0x000000000000599c <+1100>:  jmpq   0x55da <ohci_enable+138>
   0x00000000000059a1 <+1105>:  mov    0x888(%rbx),%rax
   0x00000000000059a8 <+1112>:  mov    0x890(%rbx),%rdx
   0x00000000000059af <+1119>:  mov    %rax,0x898(%rbx)
   0x00000000000059b6 <+1126>:  mov    %rdx,0x8a0(%rbx)
   0x00000000000059bd <+1133>:  jmpq   0x57c4 <ohci_enable+628>
   0x00000000000059c2 <+1138>:  mov    $0x20,%ecx
   0x00000000000059c7 <+1143>:  mov    $0xe0,%edx
   0x00000000000059cc <+1148>:  mov    $0x7,%esi
   0x00000000000059d1 <+1153>:  mov    %rbx,%rdi
   0x00000000000059d4 <+1156>:  callq  0x2d30 <update_phy_reg>
   0x00000000000059d9 <+1161>:  test   %eax,%eax
   0x00000000000059db <+1163>:  js     0x5918 <ohci_enable+968>
   0x00000000000059e1 <+1169>:  mov    $0x8,%esi
   0x00000000000059e6 <+1174>:  mov    %rbx,%rdi
   0x00000000000059e9 <+1177>:  callq  0x2c70 <read_phy_reg>
   0x00000000000059ee <+1182>:  test   %eax,%eax
   0x00000000000059f0 <+1184>:  js     0x5918 <ohci_enable+968>
   0x00000000000059f6 <+1190>:  testb  $0x8,0x5dc(%rbx)
   0x00000000000059fd <+1197>:  jne    0x58f9 <ohci_enable+937>
   0x0000000000005a03 <+1203>:  test   %eax,%eax
   0x0000000000005a05 <+1205>:  je     0x58f9 <ohci_enable+937>
   0x0000000000005a0b <+1211>:  xor    %edx,%edx
   0x0000000000005a0d <+1213>:  mov    $0x3,%ecx
   0x0000000000005a12 <+1218>:  mov    $0x5,%esi
   0x0000000000005a17 <+1223>:  mov    %rbx,%rdi
   0x0000000000005a1a <+1226>:  callq  0x2d30 <update_phy_reg>
   0x0000000000005a1f <+1231>:  test   %eax,%eax
   0x0000000000005a21 <+1233>:  js     0x5918 <ohci_enable+968>
   0x0000000000005a27 <+1239>:  mov    $0x50,%edx
   0x0000000000005a2c <+1244>:  add    0x5c8(%rbx),%rdx
   0x0000000000005a33 <+1251>:  mov    $0x400000,%eax
   0x0000000000005a38 <+1256>:  mov    %eax,(%rdx)
   0x0000000000005a3a <+1258>:  mov    $0x800000,%eax
   0x0000000000005a3f <+1263>:  mov    0x5c8(%rbx),%rdx
   0x0000000000005a46 <+1270>:  mov    %eax,0x54(%rdx)
   0x0000000000005a49 <+1273>:  jmpq   0x5701 <ohci_enable+433>
   0x0000000000005a4e <+1278>:  mov    0x8(%rbx),%rdi
   0x0000000000005a52 <+1282>:  mov    $0x0,%rsi
   0x0000000000005a59 <+1289>:  xor    %eax,%eax
   0x0000000000005a5b <+1291>:  mov    $0xfffffff0,%r12d
   0x0000000000005a61 <+1297>:  callq  0x5a66 <ohci_enable+1302>
   0x0000000000005a66 <+1302>:  jmpq   0x58bf <ohci_enable+879>
   0x0000000000005a6b <+1307>:  mov    0x8(%rbx),%rdi
   0x0000000000005a6f <+1311>:  mov    $0x0,%rsi
   0x0000000000005a76 <+1318>:  mov    $0xfffffffb,%r12d
   0x0000000000005a7c <+1324>:  callq  0x5a81 <ohci_enable+1329>
   0x0000000000005a81 <+1329>:  jmpq   0x58bf <ohci_enable+879>
   0x0000000000005a86 <+1334>:  mov    $0xffffffff,%ecx
   0x0000000000005a8b <+1339>:  cmp    %rdx,%rcx
   0x0000000000005a8e <+1342>:  sbb    %ecx,%ecx
   0x0000000000005a90 <+1344>:  and    $0xfffffffc,%ecx
   0x0000000000005a93 <+1347>:  add    $0xd4,%ecx
   0x0000000000005a99 <+1353>:  jmpq   0x578e <ohci_enable+574>
   0x0000000000005a9e <+1358>:  mov    0x0(%rip),%rax        # 0x5aa5 <ohci_enable+1365>
   0x0000000000005aa5 <+1365>:  mov    $0x0,%rdi
   0x0000000000005aac <+1372>:  jmpq   0x5745 <ohci_enable+501>
   0x0000000000005ab1 <+1377>:  mov    $0x54,%edx
   0x0000000000005ab6 <+1382>:  jmpq   0x5a2c <ohci_enable+1244>


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [BUG] ohci_enable() fails during resume
  2015-06-21 21:00 [BUG] ohci_enable() fails during resume Lukasz Stelmach
@ 2015-06-23  7:56 ` Clemens Ladisch
  0 siblings, 0 replies; 2+ messages in thread
From: Clemens Ladisch @ 2015-06-23  7:56 UTC (permalink / raw)
  To: Lukasz Stelmach, Stefan Richter, linux1394-devel, LKML

Lukasz Stelmach wrote:
> A bit, suddenly by desktop PC started to fail to resume. [...]
> The failing code is somewhere around line 2400 of
> drivers/firewire/ohci.c (the latest mainline).

>    0x000000000000003f <+31>: callq  0xffffffffffffb037 <copy_config_rom>
>    0x0000000000000044 <+36>: mov    0x898(%rbx),%rax
> -->0x000000000000004b <+43>: mov    (%rax),%edx       <--

(The copy_config_rom call was not actually executed; the else branch
jumped to 44.)

ohci->next_config_rom is NULL because ohci->config_rom is NULL.

> The code around the line 2400 appears to handle multiple
> firewire ports (if I recognise variable names correctly, e.g.
> next_config_rom).

No, this code handles multiple versions of the same data structure.

> Hardware bug in the on-board firewire controller *and* a bug in the
> driver.

Indeed; this appears to be the culprit:
> [  232.855042] firewire_ohci 0000:04:03.0: added OHCI v1.0 device as card 0, 8 IR + 8 IT contexts, quirks 0x0
> [  232.864724] firewire_ohci 0000:04:03.0: bad self ID 0/1 (00000000 != ~00000000)

With the "bad self ID", bus_reset_work() just aborts, and the controller
is never completely initialized (therefore the unexpected NULL).

Try unloading and reloading the firewire-ohci module to see if you can
ever avoid the "bad self ID" error.  But if it stays, your hardware
indeed appears to be broken.


Regards,
Clemens

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2015-06-23  8:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-21 21:00 [BUG] ohci_enable() fails during resume Lukasz Stelmach
2015-06-23  7:56 ` Clemens Ladisch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).