[Crash-utility] [PATCH] Fix x86 initialization for {hard, soft}irq_ctx

OGAWA Hirofumi hirofumi at mail.parknet.co.jp
Thu Feb 16 05:49:25 UTC 2017


Dave Anderson <anderson at redhat.com> writes:

> Hi Ogawa,

Hi,

> It's been quite some time since I've done any 32-bit x86 maintenance,
> and any help/time you can afford would be appreciated.

I've tried some on latest git with i386 linux-v4.9. And the results are
seems not working yet. I'm not checking the detail of crash failure yet,
sorry.

[In latest few commits, using "handle_IRQ" symbol though, at least v4.9
kernel doesn't have "handle_IRQ". So I changed from "handle_IRQ" to
"do_IRQ".]

The following is some cases of "kernel stack dump" and "bt".

crash> log
[    2.493782] ------------[ cut here ]------------
[    2.493783] kernel BUG at /devel/linux/works/tux3/linux-tux3/drivers/ata/libata-sff.c:1573!
[    2.493784] invalid opcode: 0000 [#1] PREEMPT SMP
[    2.493785] Modules linked in:
[    2.493789] CPU: 3 PID: 45 Comm: kworker/3:1 Not tainted 4.9.0-03202-g815a856e470a-dirty #15
[    2.493789] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.1-0-g8891697-prebuilt.qemu-project.org 04/01/2014
[    2.493799] Workqueue: ata_sff ata_sff_pio_task
[    2.493800] task: f57d3a00 task.stack: f4cd8000
[    2.493803] EIP: 0060:[<c172b046>] EFLAGS: 00210002 CPU: 3
[    2.493804] EIP is at __ata_sff_port_intr+0x146/0x150
[    2.493805] EAX: f57d3a00 EBX: f3a98000 ECX: 00000041 EDX: 0000c06a
[    2.493806] ESI: f3a9954c EDI: 00000000 EBP: f56d3f28 ESP: f56d3f14
[    2.493806]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[    2.493807] CR0: 80050033 CR2: ffffffff CR3: 020bb000 CR4: 000006d0
[    2.493809] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[    2.493809] DR6: fffe0ff0 DR7: 00000400
[    2.493809] Stack:
[    2.493812]  00000000 41000000 f3a98000 f3a9954c 00000000 f56d3f4c c172b338 00000000
[    2.493814]  00000001 00000000 c172b3f7 00001458 00000001 f3fc047c f56d3f80 c172b57b
[    2.493817]  00200086 f3fc047c 00000000 00dcd658 00000001 00000001 f3a9954c 00000000
[    2.493817] Call Trace:
[    2.493820]  <IRQ> 
[    2.493820]  [<c172b338>] ata_bmdma_port_intr+0x28/0xd0
[    2.493822]  [<c172b3f7>] ? ata_bmdma_interrupt+0x17/0x200
[    2.493824]  [<c172b57b>] ata_bmdma_interrupt+0x19b/0x200
[    2.493829]  [<c10cf378>] __handle_irq_event_percpu+0x38/0x470
[    2.493831]  [<c10cf827>] ? handle_irq_event+0x27/0x50
[    2.493832]  [<c10cf7ce>] handle_irq_event_percpu+0x1e/0x50
[    2.493833]  [<c10cf82e>] handle_irq_event+0x2e/0x50
[    2.493834]  [<c10d295d>] handle_edge_irq+0xad/0x130
[    2.493835]  [<c10d28b0>] ? handle_level_irq+0x110/0x110
[    2.493837]  [<c101cfbd>] handle_irq+0x9d/0xd0
[    2.493838]  <EOI> 
[    2.493841]  <IRQ> 
[    2.493841]  [<c1a0630e>] do_IRQ+0x5e/0x130
[    2.493842]  [<c1a067b0>] ? __irqentry_text_end+0x3/0x3
[    2.493844]  [<c1a059b1>] common_interrupt+0x31/0x38
[    2.493845]  [<c1a067b0>] ? __irqentry_text_end+0x3/0x3
[    2.493846]  [<c1a06835>] ? __do_softirq+0x85/0x565
[    2.493848]  [<c1a067b0>] ? __irqentry_text_end+0x3/0x3
[    2.493849]  [<c101cf12>] do_softirq_own_stack+0x32/0x40
[    2.493852]  <EOI> 
[    2.493852]  [<c10631d9>] irq_exit+0xa9/0xc0
[    2.493853]  [<c1a06418>] smp_apic_timer_interrupt+0x38/0x50
[    2.493853]  [<c1a05c86>] apic_timer_interrupt+0x32/0x38
[    2.493855]  [<c1a04819>] ? _raw_spin_unlock_irq+0x29/0x50
[    2.493857]  [<c172ade8>] ata_sff_pio_task+0x78/0x190
[    2.493858]  [<c1078a37>] process_one_work+0x207/0x700
[    2.493860]  [<c107899b>] ? process_one_work+0x16b/0x700
[    2.493861]  [<c1078f71>] worker_thread+0x41/0x470
[    2.493862]  [<c1078f30>] ? process_one_work+0x700/0x700
[    2.493864]  [<c107ed46>] kthread+0xa6/0xc0
[    2.493866]  [<c107eca0>] ? kthread_park+0x50/0x50
[    2.493867]  [<c107eca0>] ? kthread_park+0x50/0x50
[    2.493868]  [<c1a05177>] ret_from_fork+0x1b/0x28
[    2.493889] Code: c0 74 1a 83 8e 80 00 00 00 02 c7 83 20 2d 00 00 04 00 00 00 e9 39 ff ff ff 8d 74 26 00 83 83 94 29 00 00 01 31 f6 e9 67 ff ff ff <0f> 0b 90 8d b4 26 00 00 00 00 55 89 e5 3e 8d 74 26 00 31 c9 e8
[    2.493891] EIP: [<c172b046>] 
[    2.493892] __ata_sff_port_intr+0x146/0x150
[    2.493892]  SS:ESP 0068:f56d3f14
[    2.493895] ---[ end trace 362d4d3f42fbe108 ]---
[    2.493896] Kernel panic - not syncing: Fatal exception in interrupt
[    2.494103] Kernel Offset: disabled
[    2.509246] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
crash> bt
PID: 0      TASK: c1da8b00  CPU: 0   COMMAND: "swapper/0"
 #0 [c1da1f60] __schedule at c19fe305
 #1 [c1da1fa0] schedule at c19febb3
 #2 [c1da1fac] schedule_preempt_disabled at c19ff0a2
 #3 [c1da1fb4] cpu_startup_entry at c10a9580
crash> bt 45
PID: 45     TASK: f57d3a00  CPU: 3   COMMAND: "kworker/3:1"
bt: cannot resolve stack trace:
bt: Task in user space -- no backtrace

In above case, looks like failed to detect panic cpu, and "bt 45" also
not working.



crash> log
[    2.406255] ------------[ cut here ]------------
[    2.406391] kernel BUG at /devel/linux/works/tux3/linux-tux3/drivers/ata/libata-sff.c:1573!
[    2.406565] invalid opcode: 0000 [#1] PREEMPT SMP
[    2.407285] Modules linked in:
[    2.407442] CPU: 1 PID: 31 Comm: kworker/1:1 Not tainted 4.9.0-03202-g815a856e470a-dirty #15
[    2.407643] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.10.1-0-g8891697-prebuilt.qemu-project.org 04/01/2014
[    2.407986] Workqueue: ata_sff ata_sff_pio_task
[    2.408145] task: f505e080 task.stack: f5060000
[    2.408296] EIP: 0060:[<c172b046>] EFLAGS: 00210006 CPU: 1
[    2.408441] EIP is at __ata_sff_port_intr+0x146/0x150
[    2.408640] EAX: f505e080 EBX: f3da0000 ECX: 00000041 EDX: 0000c06a
[    2.408865] ESI: f3da154c EDI: 00000000 EBP: f5a73f28 ESP: f5a73f14
[    2.409077]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068
[    2.409266] CR0: 80050033 CR2: ffffffff CR3: 020bb000 CR4: 000006d0
[    2.409464] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
[    2.409621] DR6: fffe0ff0 DR7: 00000400
[    2.409772] Stack:
[    2.409952]  00000000 41000000 f3da0000 f3da154c 00000000 f5a73f4c c172b338 00000000
[    2.410374]  00000001 00000000 c172b3f7 00001458 00000001 f42b532c f5a73f80 c172b57b
[    2.410775]  00200086 f42b532c 00000000 00dcd658 00000001 00000001 f3da154c 00000000
[    2.411140] Call Trace:
[    2.411252]  <IRQ> 
[    2.411287]  [<c172b338>] ata_bmdma_port_intr+0x28/0xd0
[    2.411453]  [<c172b3f7>] ? ata_bmdma_interrupt+0x17/0x200
[    2.411597]  [<c172b57b>] ata_bmdma_interrupt+0x19b/0x200
[    2.411747]  [<c10cf378>] __handle_irq_event_percpu+0x38/0x470
[    2.411925]  [<c10cf827>] ? handle_irq_event+0x27/0x50
[    2.412108]  [<c10cf7ce>] handle_irq_event_percpu+0x1e/0x50
[    2.412313]  [<c10cf82e>] handle_irq_event+0x2e/0x50
[    2.412511]  [<c10d295d>] handle_edge_irq+0xad/0x130
[    2.412713]  [<c10d28b0>] ? handle_level_irq+0x110/0x110
[    2.413029]  [<c101cfbd>] handle_irq+0x9d/0xd0
[    2.413196]  <EOI> 
[    2.413237]  [<c1a0630e>] do_IRQ+0x5e/0x130
[    2.413397]  [<c1a059b1>] common_interrupt+0x31/0x38
[    2.413536]  [<c1a04819>] ? _raw_spin_unlock_irq+0x29/0x50
[    2.413691]  [<c172ade8>] ata_sff_pio_task+0x78/0x190
[    2.413832]  [<c1078a37>] process_one_work+0x207/0x700
[    2.419333]  [<c107899b>] ? process_one_work+0x16b/0x700
[    2.419477]  [<c1078f71>] worker_thread+0x41/0x470
[    2.419615]  [<c1078f30>] ? process_one_work+0x700/0x700
[    2.419758]  [<c107ed46>] kthread+0xa6/0xc0
[    2.419887]  [<c107eca0>] ? kthread_park+0x50/0x50
[    2.420022]  [<c107eca0>] ? kthread_park+0x50/0x50
[    2.420159]  [<c1a05177>] ret_from_fork+0x1b/0x28
[    2.420295] Code: c0 74 1a 83 8e 80 00 00 00 02 c7 83 20 2d 00 00 04 00 00 00 e9 39 ff ff ff 8d 74 26 00 83 83 94 29 00 00 01 31 f6 e9 67 ff ff ff <0f> 0b 90 8d b4 26 00 00 00 00 55 89 e5 3e 8d 74 26 00 31 c9 e8
[    2.422387] EIP: [<c172b046>] 
[    2.422431] __ata_sff_port_intr+0x146/0x150
[    2.422585]  SS:ESP 0068:f5a73f14
[    2.422711] ---[ end trace 8465c4f061d2e6ad ]---
[    2.422845] Kernel panic - not syncing: Fatal exception in interrupt
[    2.423137] Kernel Offset: disabled
[    2.423264] ---[ end Kernel panic - not syncing: Fatal exception in interrupt
crash> bt
PID: 31     TASK: f505e080  CPU: 1   COMMAND: "kworker/1:1"
 #0 [f5a73de8] die at c101dc04
 #1 [f5a73dfc] notify_die at c10809fc
 #2 [f5a73e24] do_error_trap at c101ab1c
 #3 [f5a73ec4] do_invalid_op at c101b2cf
 #4 [f5a73ed4] error_code (via invalid_op) at c1a060fd
    EAX: f505e080  EBX: f3da0000  ECX: 00000041  EDX: 0000c06a  EBP: f5a73f28 
    DS:  007b      ESI: f3da154c  ES:  007b      EDI: 00000000  GS:  ffffb2b0
    CS:  0060      EIP: c172b046  ERR: ffffffff  EFLAGS: 00210006 
 #5 [f5a73f08] __ata_sff_port_intr at c172b046
 #6 [f5a73f2c] ata_bmdma_port_intr at c172b333
 #7 [f5a73f50] ata_bmdma_interrupt at c172b576
 #8 [f5a73f84] __handle_irq_event_percpu at c10cf376
 #9 [f5a73fc0] handle_irq_event_percpu at c10cf7c9
#10 [f5a73fd4] handle_irq_event at c10cf829
#11 [f5a73fe8] handle_edge_irq at c10d2958
--- <hard IRQ> ---
bt: cannot resolve stack trace:
bt: text symbols on stack:

Thanks.
-- 
OGAWA Hirofumi <hirofumi at mail.parknet.co.jp>




More information about the Crash-utility mailing list