Ben Hutchings <b...@decadent.org.uk> writes:
> It's a kernel feature to be more efficient when running in a recognised
> virtual machine implementation (PV = paravirtualisation).

thanks. I think it is the following code from vmi_32.c:

/*
 * Apply patch if appropriate, return length of new instruction
 * sequence.  The callee does nop padding for us.
 */
static unsigned vmi_patch(u8 type, u16 clobbers, void *insns,
                          unsigned long ip, unsigned len)
{
        switch (type) {
                case PARAVIRT_PATCH(pv_irq_ops.irq_disable):
                        return patch_internal(VMI_CALL_DisableInterrupts, len,
                                              insns, ip);
                case PARAVIRT_PATCH(pv_irq_ops.irq_enable):
                        return patch_internal(VMI_CALL_EnableInterrupts, len,
                                              insns, ip);
                case PARAVIRT_PATCH(pv_irq_ops.restore_fl):
                        return patch_internal(VMI_CALL_SetInterruptMask, len,
                                              insns, ip);
                case PARAVIRT_PATCH(pv_irq_ops.save_fl):
                        return patch_internal(VMI_CALL_GetInterruptMask, len,
                                              insns, ip);
                case PARAVIRT_PATCH(pv_cpu_ops.iret):
                        return patch_internal(VMI_CALL_IRET, len, insns, ip);
                case PARAVIRT_PATCH(pv_cpu_ops.irq_enable_sysexit):
                        return patch_internal(VMI_CALL_SYSEXIT, len, insns, ip);
                default:
                        break;
        }
        return len;
}

I don't understand how the first xchg instruction in

0x0000000000600889 <f+41>:       57     push   %rdi
0x000000000060088a <f+42>:       9d     popfq
0x000000000060088b <f+43>:       66 66 90       xchg   %ax,%ax
0x000000000060088e <f+46>:       66 90  xchg   %ax,%ax

can generate a general protection fault. I googled around and found

   "yes - it smells like it tries to deliver vector 0, after the panic
    code has deinitialized the lapic / ioapic"

which suggests a qemu bug from
http://linux.derkeiler.com/Mailing-Lists/Kernel/2008-09/msg09652.html

Shall I reassign the bug or do you know how to investigate this more?




-- 
To UNSUBSCRIBE, email to debian-kernel-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/84oc6d5jga....@sauna.l.org

Reply via email to