Re: Device hang when offlining a CPU due to IRQ misrouting

From: Darrick J. Wong
Date: Wed Jun 06 2007 - 19:15:14 EST


On Wed, Jun 06, 2007 at 12:35:14PM -0700, Siddha, Suresh B wrote:

> Weird. Then the bug can only happen if for some reason, "mask = map"
> didn't happen in fixup_irqs(). Can you send us the disassembly of the
> fixup_irqs()?

Attached.

--D
(gdb) disassemble fixup_irqs
Dump of assembler code for function fixup_irqs:
0xffffffff8020bf50 <fixup_irqs+0>: push %rbp
0xffffffff8020bf51 <fixup_irqs+1>: mov %rsp,%rbp
0xffffffff8020bf54 <fixup_irqs+4>: push %r13
0xffffffff8020bf56 <fixup_irqs+6>: xor %r13d,%r13d
0xffffffff8020bf59 <fixup_irqs+9>: push %r12
0xffffffff8020bf5b <fixup_irqs+11>: push %rbx
0xffffffff8020bf5c <fixup_irqs+12>: sub $0x28,%rsp
0xffffffff8020bf60 <fixup_irqs+16>: mov %rdi,0xffffffffffffffc0(%rbp)
0xffffffff8020bf64 <fixup_irqs+20>: mov %rsi,0xffffffffffffffc8(%rbp)
0xffffffff8020bf68 <fixup_irqs+24>: jmp 0xffffffff8020bf73 <fixup_irqs+35>
0xffffffff8020bf6a <fixup_irqs+26>: inc %r13d
0xffffffff8020bf6d <fixup_irqs+29>: cmp $0x2,%r13d
0xffffffff8020bf71 <fixup_irqs+33>: je 0xffffffff8020bf6a <fixup_irqs+26>
0xffffffff8020bf73 <fixup_irqs+35>: mov %r13d,%r12d
0xffffffff8020bf76 <fixup_irqs+38>: lea 0xffffffffffffffd0(%rbp),%rbx
0xffffffff8020bf7a <fixup_irqs+42>: lea 0xffffffffffffffc0(%rbp),%rdx
0xffffffff8020bf7e <fixup_irqs+46>: shl $0x8,%r12
0xffffffff8020bf82 <fixup_irqs+50>: mov $0x80,%ecx
0xffffffff8020bf87 <fixup_irqs+55>: lea 0xffffffff805505f8(%r12),%rsi
0xffffffff8020bf8f <fixup_irqs+63>: mov %rbx,%rdi
0xffffffff8020bf92 <fixup_irqs+66>: callq 0xffffffff802fb606 <__bitmap_and>
0xffffffff8020bf97 <fixup_irqs+71>: mov %rbx,%rdi
0xffffffff8020bf9a <fixup_irqs+74>: callq 0xffffffff802fc6ad <__any_online_cpu>
0xffffffff8020bf9f <fixup_irqs+79>: add $0xffffffffffffff80,%eax
0xffffffff8020bfa2 <fixup_irqs+82>: jne 0xffffffff8020bfc5 <fixup_irqs+117>
0xffffffff8020bfa4 <fixup_irqs+84>: mov %r13d,%esi
0xffffffff8020bfa7 <fixup_irqs+87>: mov $0xffffffff804a52b0,%rdi
0xffffffff8020bfae <fixup_irqs+94>: xor %eax,%eax
0xffffffff8020bfb0 <fixup_irqs+96>: callq 0xffffffff80233d28 <printk>
0xffffffff8020bfb5 <fixup_irqs+101>: mov 0xffffffffffffffc0(%rbp),%rax
0xffffffff8020bfb9 <fixup_irqs+105>: mov %rax,0xffffffffffffffd0(%rbp)
0xffffffff8020bfbd <fixup_irqs+109>: mov 0xffffffffffffffc8(%rbp),%rax
0xffffffff8020bfc1 <fixup_irqs+113>: mov %rax,0xffffffffffffffd8(%rbp)
0xffffffff8020bfc5 <fixup_irqs+117>: mov 0xffffffff80550588(%r12),%rax
0xffffffff8020bfcd <fixup_irqs+125>: mov 0x58(%rax),%rax
0xffffffff8020bfd1 <fixup_irqs+129>: test %rax,%rax
0xffffffff8020bfd4 <fixup_irqs+132>: je 0xffffffff8020bfe5 <fixup_irqs+149>
0xffffffff8020bfd6 <fixup_irqs+134>: mov 0xffffffffffffffd0(%rbp),%rsi
0xffffffff8020bfda <fixup_irqs+138>: mov 0xffffffffffffffd8(%rbp),%rdx
0xffffffff8020bfde <fixup_irqs+142>: mov %r13d,%edi
0xffffffff8020bfe1 <fixup_irqs+145>: callq *%rax
0xffffffff8020bfe3 <fixup_irqs+147>: jmp 0xffffffff8020c013 <fixup_irqs+195>
0xffffffff8020bfe5 <fixup_irqs+149>: cmpq $0x0,0xffffffff805505a8(%r12)
0xffffffff8020bfee <fixup_irqs+158>: je 0xffffffff8020c013 <fixup_irqs+195>
0xffffffff8020bff0 <fixup_irqs+160>: mov 5181486(%rip),%eax # 0xffffffff806fd024 <warned.11720>
0xffffffff8020bff6 <fixup_irqs+166>: inc %eax
0xffffffff8020bff8 <fixup_irqs+168>: mov %eax,5181478(%rip) # 0xffffffff806fd024 <warned.11720>
0xffffffff8020bffe <fixup_irqs+174>: dec %eax
0xffffffff8020c000 <fixup_irqs+176>: jne 0xffffffff8020c013 <fixup_irqs+195>
0xffffffff8020c002 <fixup_irqs+178>: mov %r13d,%esi
0xffffffff8020c005 <fixup_irqs+181>: mov $0xffffffff804a52ce,%rdi
0xffffffff8020c00c <fixup_irqs+188>: xor %eax,%eax
0xffffffff8020c00e <fixup_irqs+190>: callq 0xffffffff80233d28 <printk>
0xffffffff8020c013 <fixup_irqs+195>: lea 0x1(%r13),%eax
0xffffffff8020c017 <fixup_irqs+199>: cmp $0x10ff,%eax
0xffffffff8020c01c <fixup_irqs+204>: jbe 0xffffffff8020bf6a <fixup_irqs+26>
0xffffffff8020c022 <fixup_irqs+210>: callq 0xffffffff8024e46e <trace_hardirqs_on>
0xffffffff8020c027 <fixup_irqs+215>: sti
0xffffffff8020c028 <fixup_irqs+216>: mov $0x418958,%edi
0xffffffff8020c02d <fixup_irqs+221>: callq 0xffffffff803018cf <__const_udelay>
0xffffffff8020c032 <fixup_irqs+226>: cli
0xffffffff8020c033 <fixup_irqs+227>: callq 0xffffffff8024cf31 <trace_hardirqs_off>
0xffffffff8020c038 <fixup_irqs+232>: add $0x28,%rsp
0xffffffff8020c03c <fixup_irqs+236>: pop %rbx
0xffffffff8020c03d <fixup_irqs+237>: pop %r12
0xffffffff8020c03f <fixup_irqs+239>: pop %r13
0xffffffff8020c041 <fixup_irqs+241>: leaveq
0xffffffff8020c042 <fixup_irqs+242>: retq

Attachment: signature.asc
Description: Digital signature