Move locking out of vcpu_on to callers.
Also introduces vcpu_lock and related functions for locking a vcpu struct.
Change-Id: I870b9fb7786f7e31ff424c9debbb0dbf72a770e4
diff --git a/src/load.c b/src/load.c
index 56751aa..aa1f19d 100644
--- a/src/load.c
+++ b/src/load.c
@@ -131,6 +131,7 @@
{
struct vm *vm;
+ struct vcpu_locked vcpu_locked;
if (!vm_init(MAX_CPUS, ppool, &vm)) {
dlog("Unable to initialise primary vm\n");
@@ -157,7 +158,9 @@
return false;
}
- vcpu_on(&vm->vcpus[0], ipa_from_pa(primary_begin), kernel_arg);
+ vcpu_locked = vcpu_lock(&vm->vcpus[0]);
+ vcpu_on(vcpu_locked, ipa_from_pa(primary_begin), kernel_arg);
+ vcpu_unlock(&vcpu_locked);
}
return true;