freebsd-nq/sys/amd64/vmm/intel
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
..
ept.c Re-arrange bits in the amd64/pmap 'pm_flags' field. 2013-12-20 05:50:22 +00:00
ept.h Merge projects/bhyve_npt_pmap into head. 2013-10-05 21:22:35 +00:00
vmcs.c Split the VMCS setup between 'vmcs_init()' that does initialization and 2014-01-06 23:16:39 +00:00
vmcs.h Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by 2014-01-07 21:04:49 +00:00
vmx_controls.h Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by 2014-01-07 21:04:49 +00:00
vmx_cpufunc.h Fix issue found with clang build. Avoid code insertion by the compiler 2012-11-06 02:43:41 +00:00
vmx_genassym.c Restructure the VMX code to enter and exit the guest. In large part this change 2014-01-01 21:17:08 +00:00
vmx_msr.c Get rid of redundant comparision which is guaranteed to be "true" for unsigned 2012-11-22 00:08:20 +00:00
vmx_msr.h
vmx_support.S Use the same label name for ENTRY() and END() macros for 'vmx_enter_guest'. 2014-01-03 19:29:33 +00:00
vmx.c Use the 'Virtual Interrupt Delivery' feature of Intel VT-x if supported by 2014-01-07 21:04:49 +00:00
vmx.h Restructure the VMX code to enter and exit the guest. In large part this change 2014-01-01 21:17:08 +00:00
vtd.c Fix undefined behavior: (1 << 31) is not defined as 1 is an int and this 2013-11-30 22:17:27 +00:00