freebsd-nq/sys/amd64/vmm
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
..
amd vlapic code restructuring to make it easy to support hardware-assist for APIC 2013-12-25 06:46:31 +00:00
intel Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by 2014-01-07 21:04:49 +00:00
io Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by 2014-01-07 21:04:49 +00:00
vmm_dev.c Extend the support for local interrupts on the local APIC: 2013-12-23 19:29:07 +00:00
vmm_host.c Corral all the host state associated with the virtual machine into its own file. 2012-10-29 01:51:24 +00:00
vmm_host.h Corral all the host state associated with the virtual machine into its own file. 2012-10-29 01:51:24 +00:00
vmm_instruction_emul.c Remove unnecessary includes of <machine/pmap.h> 2013-10-29 02:25:18 +00:00
vmm_ipi.c Provide per-vcpu locks instead of relying on a single big lock. 2012-10-12 18:32:44 +00:00
vmm_ipi.h Provide per-vcpu locks instead of relying on a single big lock. 2012-10-12 18:32:44 +00:00
vmm_ktr.h Add support for level triggered interrupt pins on the vioapic. Prior to this 2013-11-27 22:18:08 +00:00
vmm_lapic.c Allow vlapic_set_intr_ready() to return a value that indicates whether or not 2014-01-07 00:38:22 +00:00
vmm_lapic.h vlapic code restructuring to make it easy to support hardware-assist for APIC 2013-12-25 06:46:31 +00:00
vmm_mem.c Merge projects/bhyve_npt_pmap into head. 2013-10-05 21:22:35 +00:00
vmm_mem.h Merge projects/bhyve_npt_pmap into head. 2013-10-05 21:22:35 +00:00
vmm_msr.c Fix x2apic support in bhyve. 2013-12-10 22:56:51 +00:00
vmm_msr.h Fix x2apic support in bhyve. 2013-12-10 22:56:51 +00:00
vmm_stat.c Support array-type of stats in bhyve. 2013-05-10 02:59:49 +00:00
vmm_stat.h Support array-type of stats in bhyve. 2013-05-10 02:59:49 +00:00
vmm_support.S
vmm_util.c
vmm_util.h
vmm.c Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by 2014-01-07 21:04:49 +00:00
x86.c Add a new capability, VM_CAP_ENABLE_INVPCID, that can be enabled to expose 2013-10-16 18:20:27 +00:00
x86.h Allow CPUID leaf 0xD to be read as zeroes. 2013-09-06 05:16:10 +00:00