Thanks for the quick response.

On Wed, Oct 15, 2008 at 5:13 PM, Juergen Keil <[EMAIL PROTECTED]> wrote:
>> This panic happened between line 729 and 730. The disassemble of this code 
>> is:
>>
>> [0]> ec_bind_virq_to_irq::dis
>> ec_bind_virq_to_irq+0x95:       call   -0x97a   <alloc_irq>
>> ec_bind_virq_to_irq+0x9a:
>> movw   %ax,0xfffffffffbc46ac0(%r12)     <virq_info+0x200>
>> ec_bind_virq_to_irq+0xa3:       movq   %r13,%rdi
>> ec_bind_virq_to_irq+0xa6:       call   +0x16d35 <mutex_exit>
>> ec_bind_virq_to_irq+0xab:       addb   %al,(%rax)
>> ec_bind_virq_to_irq+0xad:       addb   %al,(%rax)
>> ec_bind_virq_to_irq+0xaf:       addb   %al,(%rax)
>> ec_bind_virq_to_irq+0xb1:       addb   %al,(%rax)
>> ec_bind_virq_to_irq+0xb3:       sti
>> ec_bind_virq_to_irq+0xb4:       popq   %r14
>> ec_bind_virq_to_irq+0xb6:       popq   %r13
>> ec_bind_virq_to_irq+0xb8:       popq   %r12
>> ec_bind_virq_to_irq+0xba:       popq   %rbx
>> ec_bind_virq_to_irq+0xbb:       leave
>> ec_bind_virq_to_irq+0xbc:       ret
>
>
> The code starting at ec_bind_virq_to_irq+0xab looks corrupted.
>
> Seems as if someone stored a 64-bit "0" to that location, corrupting
> the original code.
>
>
> When you boot the dom0 kernel with options "-kd" and disassemble
> ec_bind_virq_to_irq+0xab (before the kernel starts running),
> does the code look different?

Yes. Before the kernel starts running, the disassemble code looks like

 [0]> ec_bind_virq_to_irq::dis
 ec_bind_virq_to_irq+0x95:       call   -0x97a   <alloc_irq>
 ec_bind_virq_to_irq+0x9a:
 movw   %ax,0xfffffffffbc46ac0(%r12)     <virq_info+0x200>
 ec_bind_virq_to_irq+0xa3:       movq   %r13,%rdi
 ec_bind_virq_to_irq+0xa6:       call   +0x16d35 <mutex_exit>
 ec_bind_virq_to_irq+0xb4:       popq   %r14
 ec_bind_virq_to_irq+0xb6:       popq   %r13
 ec_bind_virq_to_irq+0xb8:       popq   %r12
 ec_bind_virq_to_irq+0xba:       popq   %rbx
 ec_bind_virq_to_irq+0xbb:       leave
 ec_bind_virq_to_irq+0xbc:       ret

Above aren't exactly copied and pasted from the real serial output
since I can't access the develop mechines when writing this email. But
I am quit sure that there are no addb's there.

Actually, this function has been called twice before it runs into
panic at the third time. For the first 2 calls, there seems no addb's
there and no panic's.

>
> In case it's already corrupted before the kernel starts running:
> try to check the dom0 kernel binary /platform/i86xpv/kernel/amd64/unix
> with "dis -F ec_bind_virq_to_irq /platform/i86xpv/kernel/amd64/unix",
> check if ec_bind_virq_to_irq+0xab contains reasonble code there.
>
>
> If case the corruption happens at kernel runtime, it might be possble
> to find the source of the corruption using kmdb and a write watchpoint:
>
>  ec_bind_virq_to_irq+0xab::wp -w -L 8

Will verify this, and post the result.

>
>
>
_______________________________________________
xen-discuss mailing list
[email protected]

Reply via email to