Home | History | Annotate | Download | only in nvmm

Lines Matching defs:vcpu

200 	struct nvmm_cpu *vcpu;
205 vcpu = &mach->cpus[cpuid];
207 mutex_enter(&vcpu->lock);
208 if (vcpu->present) {
209 mutex_exit(&vcpu->lock);
213 vcpu->present = true;
214 vcpu->comm = NULL;
215 vcpu->hcpu_last = -1;
216 *ret = vcpu;
221 nvmm_vcpu_free(struct nvmm_machine *mach, struct nvmm_cpu *vcpu)
223 KASSERT(mutex_owned(&vcpu->lock));
224 vcpu->present = false;
225 if (vcpu->comm != NULL) {
226 uvm_deallocate(kernel_map, (vaddr_t)vcpu->comm, PAGE_SIZE);
234 struct nvmm_cpu *vcpu;
239 vcpu = &mach->cpus[cpuid];
241 mutex_enter(&vcpu->lock);
242 if (__predict_false(!vcpu->present)) {
243 mutex_exit(&vcpu->lock);
246 *ret = vcpu;
252 nvmm_vcpu_put(struct nvmm_cpu *vcpu)
254 mutex_exit(&vcpu->lock);
263 struct nvmm_cpu *vcpu;
278 error = nvmm_vcpu_get(mach, j, &vcpu);
281 (*nvmm_impl->vcpu_destroy)(mach, vcpu);
282 nvmm_vcpu_free(mach, vcpu);
283 nvmm_vcpu_put(vcpu);
356 struct nvmm_cpu *vcpu;
365 error = nvmm_vcpu_get(mach, i, &vcpu);
369 (*nvmm_impl->vcpu_destroy)(mach, vcpu);
370 nvmm_vcpu_free(mach, vcpu);
371 nvmm_vcpu_put(vcpu);
434 struct nvmm_cpu *vcpu;
441 error = nvmm_vcpu_alloc(mach, args->cpuid, &vcpu);
447 error = uvm_map(kernel_map, (vaddr_t *)&vcpu->comm, PAGE_SIZE,
452 nvmm_vcpu_free(mach, vcpu);
453 nvmm_vcpu_put(vcpu);
456 error = uvm_map_pageable(kernel_map, (vaddr_t)vcpu->comm,
457 (vaddr_t)vcpu->comm + PAGE_SIZE, false, 0);
459 nvmm_vcpu_free(mach, vcpu);
460 nvmm_vcpu_put(vcpu);
463 memset(vcpu->comm, 0, PAGE_SIZE);
465 error = (*nvmm_impl->vcpu_create)(mach, vcpu);
467 nvmm_vcpu_free(mach, vcpu);
468 nvmm_vcpu_put(vcpu);
472 nvmm_vcpu_put(vcpu);
484 struct nvmm_cpu *vcpu;
491 error = nvmm_vcpu_get(mach, args->cpuid, &vcpu);
495 (*nvmm_impl->vcpu_destroy)(mach, vcpu);
496 nvmm_vcpu_free(mach, vcpu);
497 nvmm_vcpu_put(vcpu);
510 struct nvmm_cpu *vcpu;
529 error = nvmm_vcpu_get(mach, args->cpuid, &vcpu);
541 error = (*nvmm_impl->vcpu_configure)(vcpu, op, data);
544 nvmm_vcpu_put(vcpu);
555 struct nvmm_cpu *vcpu;
562 error = nvmm_vcpu_get(mach, args->cpuid, &vcpu);
566 (*nvmm_impl->vcpu_setstate)(vcpu);
567 nvmm_vcpu_put(vcpu);
579 struct nvmm_cpu *vcpu;
586 error = nvmm_vcpu_get(mach, args->cpuid, &vcpu);
590 (*nvmm_impl->vcpu_getstate)(vcpu);
591 nvmm_vcpu_put(vcpu);
602 struct nvmm_cpu *vcpu;
609 error = nvmm_vcpu_get(mach, args->cpuid, &vcpu);
613 error = (*nvmm_impl->vcpu_inject)(vcpu);
614 nvmm_vcpu_put(vcpu);
622 nvmm_do_vcpu_run(struct nvmm_machine *mach, struct nvmm_cpu *vcpu,
630 if (__predict_false(nvmm_return_needed(vcpu, exit))) {
634 /* Run the VCPU. */
635 ret = (*nvmm_impl->vcpu_run)(mach, vcpu, exit);
659 struct nvmm_cpu *vcpu = NULL;
666 error = nvmm_vcpu_get(mach, args->cpuid, &vcpu);
670 error = nvmm_do_vcpu_run(mach, vcpu, &args->exit);
671 nvmm_vcpu_put(vcpu);
675 if (vcpu)
676 vcpu->comm->stop = 0;
1305 nvmm_suspend_vcpu(struct nvmm_machine *mach, struct nvmm_cpu *vcpu)
1308 mutex_enter(&vcpu->lock);
1309 if (vcpu->present && nvmm_impl->vcpu_suspend)
1310 (*nvmm_impl->vcpu_suspend)(mach, vcpu);
1311 mutex_exit(&vcpu->lock);
1315 nvmm_resume_vcpu(struct nvmm_machine *mach, struct nvmm_cpu *vcpu)
1318 mutex_enter(&vcpu->lock);
1319 if (vcpu->present && nvmm_impl->vcpu_resume)
1320 (*nvmm_impl->vcpu_resume)(mach, vcpu);
1321 mutex_exit(&vcpu->lock);