Re: [RFC PATCH v3 0/4] Real mode interrupt injection

Avi Kivity
2010-08-16T08:52:02Z

On 08/16/2010 02:37 AM, Mohammed Gamal wrote:
>
> Here is a full trace of a MINIX guest since bootup. Looks like we get
> stuck somewhere in the BIOS.
> https://docs.google.com/leaf?id=0B9UodZT1IuENMzJhNWQxM2YtYzE3YS00YWY4LTk2YTgtZWY3ODNhMWUxMDkx&sort=name&layout=list&num=50

> qemu-system-x86-28953 [000] 1927.399942: kvm_inj_virq: irq 16
> qemu-system-x86-28953 [000] 1927.399949:
> kvm_inject_realmode_interrupt: cs=c000
> qemu-system-x86-28953 [000] 1927.399951:
> kvm_inject_realmode_interrupt: eip=40a3
> qemu-system-x86-28953 [000] 1927.399957:
> kvm_inject_realmode_interrupt: cs=c000
> qemu-system-x86-28953 [000] 1927.399958:
> kvm_inject_realmode_interrupt: eip=8339
> qemu-system-x86-28953 [000] 1927.399960: kvm_entry: vcpu 0
> qemu-system-x86-28953 [000] 1927.399965: kvm_exit: reason
> EXCEPTION_NMI rip 0x8339
> qemu-system-x86-28953 [000] 1927.399966: kvm_page_fault: address
> c8339 error_code 1d
> qemu-system-x86-28953 [000] 1927.399970: kvm_entry: vcpu 0
> qemu-system-x86-28953 [000] 1927.399975: kvm_exit: reason
> IO_INSTRUCTION rip 0x67d9
> qemu-system-x86-28953 [000] 1927.399976: kvm_pio: pio_read at 0x3c4
> size 2 count 1
> qemu-system-x86-28953 [000] 1927.399985: kvm_entry: vcpu 0
> qemu-system-x86-28953 [000] 1927.399991: kvm_exit: reason
> EXCEPTION_NMI rip 0x3d4

This is bogus, it's in the middle of an instruction:

f93d1: 2e 67 8b 9a 00 00 f1 addr32 mov %cs:-0xf0000(%edx),%bx
f93d8: ff
f93d9: 66 0f b7 eb movzwl %bx,%ebp

Everything after that is invalid.

So we need to know how we got to rip = 0x3d4, it looks like an I/O port
used by vga. Please rerun with emulation on all real mode instructions.

> qemu-system-x86-28953 [000] 1927.399992: kvm_page_fault: address
> f93d4 error_code 1d
> qemu-system-x86-28953 [000] 1927.399996: kvm_entry: vcpu 0
> qemu-system-x86-28953 [000] 1927.400000: kvm_exit: reason
> EXCEPTION_NMI rip 0x0
> qemu-system-x86-28953 [000] 1927.400003: kvm_inj_exception: #DB (0x0)
> qemu-system-x86-28953 [000] 1927.400005:
> kvm_inject_realmode_interrupt: cs=fff1
> qemu-system-x86-28953 [000] 1927.400006:
> kvm_inject_realmode_interrupt: eip=0
> qemu-system-x86-28953 [000] 1927.400011:
> kvm_inject_realmode_interrupt: cs=f000
> qemu-system-x86-28953 [000] 1927.400012:
> kvm_inject_realmode_interrupt: eip=ff53
> qemu-system-x86-28953 [000] 1927.400014: kvm_entry: vcpu 0

--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.