summaryrefslogtreecommitdiffstats
path: root/sys/amd64/vmm/amd/amdv.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2014-05-17 19:11:08 +0000
committerjhb <jhb@FreeBSD.org>2014-05-17 19:11:08 +0000
commitbbf655f9b49cc39db4559ede5c58d302ff8f3de2 (patch)
treef6cf26193250fdea84a6946390d9759716c70b5c /sys/amd64/vmm/amd/amdv.c
parent7e7928763170f8b10771c099cf46224daaf67bca (diff)
downloadFreeBSD-src-bbf655f9b49cc39db4559ede5c58d302ff8f3de2.zip
FreeBSD-src-bbf655f9b49cc39db4559ede5c58d302ff8f3de2.tar.gz
MFC 259641,259863,259924,259937,259961,259978,260380,260383,260410,260466,
260531,260532,260550,260619,261170,261453,261621,263280,263290,264516: Add support for local APIC hardware-assist. - Restructure vlapic access and register handling to support hardware-assist for the local APIC. - Use the 'Virtual Interrupt Delivery' and 'Posted Interrupt Processing' feature of Intel VT-x if supported by hardware. - Add an API to rendezvous all active vcpus in a virtual machine and use it to support level triggered interrupts with VT-x 'Virtual Interrupt Delivery'. - Use a cheaper IPI handler than IPI_AST for nested page table shootdowns and avoid doing unnecessary nested TLB invalidations. Reviewed by: neel
Diffstat (limited to 'sys/amd64/vmm/amd/amdv.c')
-rw-r--r--sys/amd64/vmm/amd/amdv.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/sys/amd64/vmm/amd/amdv.c b/sys/amd64/vmm/amd/amdv.c
index 6c87901..00484c7 100644
--- a/sys/amd64/vmm/amd/amdv.c
+++ b/sys/amd64/vmm/amd/amdv.c
@@ -38,7 +38,7 @@ __FBSDID("$FreeBSD$");
#include "io/iommu.h"
static int
-amdv_init(void)
+amdv_init(int ipinum)
{
printf("amdv_init: not implemented\n");
@@ -67,7 +67,7 @@ amdv_vminit(struct vm *vm, struct pmap *pmap)
}
static int
-amdv_vmrun(void *arg, int vcpu, register_t rip, struct pmap *pmap)
+amdv_vmrun(void *arg, int vcpu, register_t rip, struct pmap *pmap, void *cookie)
{
printf("amdv_vmrun: not implemented\n");
@@ -155,6 +155,20 @@ amdv_vmspace_free(struct vmspace *vmspace)
return;
}
+static struct vlapic *
+amdv_vlapic_init(void *arg, int vcpuid)
+{
+
+ panic("amdv_vlapic_init: not implmented");
+}
+
+static void
+amdv_vlapic_cleanup(void *arg, struct vlapic *vlapic)
+{
+
+ panic("amdv_vlapic_cleanup: not implemented");
+}
+
struct vmm_ops vmm_ops_amd = {
amdv_init,
amdv_cleanup,
@@ -171,6 +185,8 @@ struct vmm_ops vmm_ops_amd = {
amdv_setcap,
amdv_vmspace_alloc,
amdv_vmspace_free,
+ amdv_vlapic_init,
+ amdv_vlapic_cleanup,
};
static int
OpenPOWER on IntegriCloud