Added the hmp command to query IO- and Local APIC registers state, it can be very useful to identify problems related to the emulation devices.
(qemu) info apic-local apic.lvt 00-timer 000300fd int=fd .H.EMP delmod=0:Fixed apic.lvt 00-thermal 00010000 int=00 .H.EM. delmod=0:Fixed apic.lvt 00-perfmon 000000fe int=fe .H.E.. delmod=0:Fixed apic.lvt 00-LINT0 0001001f int=1f .H.EM. delmod=0:Fixed apic.lvt 00-LINT1 000004ff int=ff .H.E.. delmod=4:NMI apic.lvt 00-Error 000000e3 int=e3 .H.E.. delmod=0:Fixed apic.error 00 esr 00000000 S:... R:... . apic.timer 00 DCR=0000000b(b) initial_count=1000090000 apic.icr 00 02000000000c00d1: int=d1 delmod=0:Fixed P..E shorthand=3:all dest=2 apic.prio 00 apr=00(0:0) tpr=40(4:0) apic.dest 00 dfr=f0(f) ldr=01(01) apic.svr 00 0000011f vec=1f on focus=off apic.interrupt 00 065:R.E (qemu) info apic-io ioapic ID=00 IRR=00000000 SEL=18 ioapic 00 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 01 0300000000000993: int=93 delmod=1:LowPri L.H.E. dest=3 ioapic 02 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 03 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 04 0300000000000992: int=92 delmod=1:LowPri L.H.E. dest=3 ioapic 05 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 06 02000000000109b3: int=b3 delmod=1:LowPri L.H.EM dest=2 ioapic 07 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 08 01000000000008d1: int=d1 delmod=0:Fixed L.H.E. dest=1 ioapic 09 03000000000089b1: int=b1 delmod=1:LowPri L.H.L. dest=3 ioapic 10 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 11 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 12 03000000000009a3: int=a3 delmod=1:LowPri L.H.E. dest=3 ioapic 13 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 14 0300000000000962: int=62 delmod=1:LowPri L.H.E. dest=3 ioapic 15 0300000000000982: int=82 delmod=1:LowPri L.H.E. dest=3 ioapic 16 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 17 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 18 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 19 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 20 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 21 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 22 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 ioapic 23 00000000000100ff: int=ff delmod=0:Fixed P.H.EM dest=0 Signed-off-by: Pavel Butsykin <pbutsy...@virtuozzo.com> Signed-off-by: Denis V. Lunev <d...@openvz.org> CC: Paolo Bonzini <pbonz...@redhat.com> Pavel Butsykin (8): apic_internal.h: move apic_get_bit(), apic_set_bit() to apic_internal.h apic_internal.h: rename ESR_ILLEGAL_ADDRESS to APIC_ESR_ILLEGAL_ADDRESS apic_internal.h: added more constants apic_internal.h: Fix formatting and drop unused consts hmp: added local apic dump state ioapic_internal.h: added more constants hmp: added io apic dump state hmp: implemented io apic dump state for emulator hmp-commands.hx | 4 + hw/i386/kvm/ioapic.c | 10 +++ hw/intc/apic.c | 20 +---- hw/intc/ioapic.c | 12 +++ hw/intc/ioapic_common.c | 31 ++++++++ include/hw/i386/apic_internal.h | 90 +++++++++++++++++++--- include/hw/i386/ioapic_internal.h | 7 ++ include/hw/i386/pc.h | 5 ++ include/qom/cpu.h | 14 ++++ monitor.c | 38 ++++++++++ qom/cpu.c | 11 +++ target-i386/cpu-qom.h | 2 + target-i386/cpu.c | 1 + target-i386/helper.c | 155 ++++++++++++++++++++++++++++++++++++++ 14 files changed, 371 insertions(+), 29 deletions(-)