summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include
diff options
context:
space:
mode:
authorneel <neel@FreeBSD.org>2012-10-12 18:32:44 +0000
committerneel <neel@FreeBSD.org>2012-10-12 18:32:44 +0000
commite3e8a520e280f32230da3ddfa4c5260fea0e15a1 (patch)
tree0bfaa9a4adf32c0b651f9959696d1a24545e8bd8 /sys/amd64/include
parent4829fce72f3af3b96bc018ac20f556ee33b7f44f (diff)
downloadFreeBSD-src-e3e8a520e280f32230da3ddfa4c5260fea0e15a1.zip
FreeBSD-src-e3e8a520e280f32230da3ddfa4c5260fea0e15a1.tar.gz
Provide per-vcpu locks instead of relying on a single big lock.
This also gets rid of all the witness.watch warnings related to calling malloc(M_WAITOK) while holding a mutex. Reviewed by: grehan
Diffstat (limited to 'sys/amd64/include')
-rw-r--r--sys/amd64/include/vmm.h19
1 files changed, 12 insertions, 7 deletions
diff --git a/sys/amd64/include/vmm.h b/sys/amd64/include/vmm.h
index be22eec..4dfdd04 100644
--- a/sys/amd64/include/vmm.h
+++ b/sys/amd64/include/vmm.h
@@ -130,19 +130,24 @@ int vmm_is_pptdev(int bus, int slot, int func);
void *vm_iommu_domain(struct vm *vm);
-#define VCPU_STOPPED 0
-#define VCPU_RUNNING 1
-void vm_set_run_state(struct vm *vm, int vcpu, int running);
-int vm_get_run_state(struct vm *vm, int vcpu, int *hostcpu);
+enum vcpu_state {
+ VCPU_IDLE,
+ VCPU_RUNNING,
+ VCPU_CANNOT_RUN,
+};
-void *vcpu_stats(struct vm *vm, int vcpu);
+int vcpu_set_state(struct vm *vm, int vcpu, enum vcpu_state state);
+enum vcpu_state vcpu_get_state(struct vm *vm, int vcpu);
static int __inline
-vcpu_is_running(struct vm *vm, int vcpu, int *hostcpu)
+vcpu_is_running(struct vm *vm, int vcpu)
{
- return (vm_get_run_state(vm, vcpu, hostcpu) == VCPU_RUNNING);
+ return (vcpu_get_state(vm, vcpu) == VCPU_RUNNING);
}
+void *vcpu_stats(struct vm *vm, int vcpu);
+void vm_interrupt_hostcpu(struct vm *vm, int vcpu);
+
#endif /* KERNEL */
#define VM_MAXCPU 8 /* maximum virtual cpus */
OpenPOWER on IntegriCloud