kernel_optimize_test/arch/x86/kvm
Jan Kiszka 42dbaa5a05 KVM: x86: Virtualize debug registers
So far KVM only had basic x86 debug register support, once introduced to
realize guest debugging that way. The guest itself was not able to use
those registers.

This patch now adds (almost) full support for guest self-debugging via
hardware registers. It refactors the code, moving generic parts out of
SVM (VMX was already cleaned up by the KVM_SET_GUEST_DEBUG patches), and
it ensures that the registers are properly switched between host and
guest.

This patch also prepares debug register usage by the host. The latter
will (once wired-up by the following patch) allow for hardware
breakpoints/watchpoints in guest code. If this is enabled, the guest
will only see faked debug registers without functionality, but with
content reflecting the guest's modifications.

Tested on Intel only, but SVM /should/ work as well, but who knows...

Known limitations: Trapping on tss switch won't work - most probably on
Intel.

Credits also go to Joerg Roedel - I used his once posted debugging
series as platform for this patch.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
2009-03-24 11:02:49 +02:00
..
i8254.c KVM: PIT: fix i8254 pending count read 2009-02-15 02:47:36 +02:00
i8254.h KVM: Fix guest shared interrupt with in-kernel irqchip 2008-10-28 14:21:34 +02:00
i8259.c KVM: Add locking to virtual i8259 interrupt controller 2008-12-31 16:55:48 +02:00
irq.c KVM: x86: fix LAPIC pending count calculation 2009-02-15 02:47:38 +02:00
irq.h KVM: x86: fix LAPIC pending count calculation 2009-02-15 02:47:38 +02:00
Kconfig KVM: Require the PCI subsystem 2008-11-11 20:56:13 +02:00
kvm_cache_regs.h KVM: x86: accessors for guest registers 2008-10-15 10:13:57 +02:00
kvm_svm.h KVM: x86: Virtualize debug registers 2009-03-24 11:02:49 +02:00
lapic.c KVM: x86: fix LAPIC pending count calculation 2009-02-15 02:47:38 +02:00
lapic.h KVM: x86: fix LAPIC pending count calculation 2009-02-15 02:47:38 +02:00
Makefile KVM: change KVM to use IOMMU API 2009-01-03 14:11:07 +01:00
mmu.c KVM: MMU: Map device MMIO as UC in EPT 2009-02-15 02:47:37 +02:00
mmu.h KVM: MMU: Fix false flooding when a pte points to page table 2008-07-20 12:40:50 +03:00
paging_tmpl.h KVM: MMU: handle large host sptes on invlpg/resync 2008-12-31 16:55:49 +02:00
svm.c KVM: x86: Virtualize debug registers 2009-03-24 11:02:49 +02:00
tss.h KVM: x86: hardware task switching support 2008-04-27 12:00:39 +03:00
vmx.c KVM: x86: Virtualize debug registers 2009-03-24 11:02:49 +02:00
x86_emulate.c KVM: x86 emulator: Fix handling of VMMCALL instruction 2008-12-31 16:55:43 +02:00
x86.c KVM: x86: Virtualize debug registers 2009-03-24 11:02:49 +02:00
x86.h KVM: Add a pending interrupt queue 2008-10-15 10:15:13 +02:00