svn commit: r258859 - in head/sys/amd64: include vmm
Neel Natu
neel at FreeBSD.org
Tue Dec 3 00:43:32 UTC 2013
Author: neel
Date: Tue Dec 3 00:43:31 2013
New Revision: 258859
URL: http://svnweb.freebsd.org/changeset/base/258859
Log:
Rename 'vm_interrupt_hostcpu()' to 'vcpu_notify_event()' because the function
has outgrown its original name. Originally this function simply sent an IPI
to the host cpu that a vcpu was executing on but now it does a lot more than
just that.
Reviewed by: grehan@
Modified:
head/sys/amd64/include/vmm.h
head/sys/amd64/vmm/vmm.c
head/sys/amd64/vmm/vmm_lapic.c
Modified: head/sys/amd64/include/vmm.h
==============================================================================
--- head/sys/amd64/include/vmm.h Mon Dec 2 22:34:47 2013 (r258858)
+++ head/sys/amd64/include/vmm.h Tue Dec 3 00:43:31 2013 (r258859)
@@ -156,7 +156,7 @@ vcpu_is_running(struct vm *vm, int vcpu,
}
void *vcpu_stats(struct vm *vm, int vcpu);
-void vm_interrupt_hostcpu(struct vm *vm, int vcpu);
+void vcpu_notify_event(struct vm *vm, int vcpuid);
struct vmspace *vm_get_vmspace(struct vm *vm);
int vm_assign_pptdev(struct vm *vm, int bus, int slot, int func);
int vm_unassign_pptdev(struct vm *vm, int bus, int slot, int func);
Modified: head/sys/amd64/vmm/vmm.c
==============================================================================
--- head/sys/amd64/vmm/vmm.c Mon Dec 2 22:34:47 2013 (r258858)
+++ head/sys/amd64/vmm/vmm.c Tue Dec 3 00:43:31 2013 (r258859)
@@ -1099,7 +1099,7 @@ vm_inject_nmi(struct vm *vm, int vcpuid)
vcpu = &vm->vcpu[vcpuid];
vcpu->nmi_pending = 1;
- vm_interrupt_hostcpu(vm, vcpuid);
+ vcpu_notify_event(vm, vcpuid);
return (0);
}
@@ -1319,8 +1319,15 @@ vm_set_x2apic_state(struct vm *vm, int v
return (0);
}
+/*
+ * This function is called to ensure that a vcpu "sees" a pending event
+ * as soon as possible:
+ * - If the vcpu thread is sleeping then it is woken up.
+ * - If the vcpu is running on a different host_cpu then an IPI will be directed
+ * to the host_cpu to cause the vcpu to trap into the hypervisor.
+ */
void
-vm_interrupt_hostcpu(struct vm *vm, int vcpuid)
+vcpu_notify_event(struct vm *vm, int vcpuid)
{
int hostcpu;
struct vcpu *vcpu;
Modified: head/sys/amd64/vmm/vmm_lapic.c
==============================================================================
--- head/sys/amd64/vmm/vmm_lapic.c Mon Dec 2 22:34:47 2013 (r258858)
+++ head/sys/amd64/vmm/vmm_lapic.c Tue Dec 3 00:43:31 2013 (r258859)
@@ -75,7 +75,7 @@ lapic_set_intr(struct vm *vm, int cpu, i
vlapic = vm_lapic(vm, cpu);
vlapic_set_intr_ready(vlapic, vector, level);
- vm_interrupt_hostcpu(vm, cpu);
+ vcpu_notify_event(vm, cpu);
return (0);
}
More information about the svn-src-head
mailing list