freebsd-dev/sys/amd64/vmm/io
Neel Natu 88c4b8d145 Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by
hardware. It is possible to turn this feature off and fall back to software
emulation of the APIC by setting the tunable hw.vmm.vmx.use_apic_vid to 0.

We now start handling two new types of VM-exits:

APIC-access: This is a fault-like VM-exit and is triggered when the APIC
register access is not accelerated (e.g. apic timer CCR). In response to
this we do emulate the instruction that triggered the APIC-access exit.

APIC-write: This is a trap-like VM-exit which does not require any instruction
emulation but it does require the hypervisor to emulate the access to the
specified register (e.g. icrlo register).

Introduce 'vlapic_ops' which are function pointers to vector the various
vlapic operations into processor-dependent code. The 'Virtual Interrupt
Delivery' feature installs 'ops' for setting the IRR bits in the virtual
APIC page and to return whether any interrupts are pending for this vcpu.

Tested on an "Intel Xeon E5-2620 v2" courtesy of Allan Jude at ScaleEngine.
2014-01-07 21:04:49 +00:00
..
iommu.c Allocate memory pages for the guest from the host's free page queue. 2012-10-08 23:41:26 +00:00
iommu.h Allocate memory pages for the guest from the host's free page queue. 2012-10-08 23:41:26 +00:00
ppt.c Add an API to deliver message signalled interrupts to vcpus. This allows 2013-12-16 19:59:31 +00:00
ppt.h Add an API to deliver message signalled interrupts to vcpus. This allows 2013-12-16 19:59:31 +00:00
vhpet.c Fix a bug in the HPET emulation where a timer interrupt could be lost when the 2014-01-03 19:25:52 +00:00
vhpet.h Add HPET device emulation to bhyve. 2013-11-25 19:04:51 +00:00
vioapic.c Add an API to deliver message signalled interrupts to vcpus. This allows 2013-12-16 19:59:31 +00:00
vioapic.h Add support for level triggered interrupt pins on the vioapic. Prior to this 2013-11-27 22:18:08 +00:00
vlapic_priv.h Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by 2014-01-07 21:04:49 +00:00
vlapic.c Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by 2014-01-07 21:04:49 +00:00
vlapic.h Allow vlapic_set_intr_ready() to return a value that indicates whether or not 2014-01-07 00:38:22 +00:00