mirror of
https://github.com/torvalds/linux.git
synced 2026-05-25 15:41:52 +02:00
Now that KVM selftests use gva_t instead of vm_vaddr_t, rename the API for finding an unused range of virtual memory to drop the defunct terminology and use "vm" for the scope. Opportunistically clean up the function comment to drop superfluous and redundant information. No functional change intended. Link: https://patch.msgid.link/20260420212004.3938325-13-seanjc@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
35 lines
840 B
C
35 lines
840 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* ucall support. A ucall is a "hypercall to userspace".
|
|
*
|
|
* Copyright (C) 2018, Red Hat, Inc.
|
|
*/
|
|
#include "kvm_util.h"
|
|
|
|
gva_t *ucall_exit_mmio_addr;
|
|
|
|
void ucall_arch_init(struct kvm_vm *vm, gpa_t mmio_gpa)
|
|
{
|
|
gva_t mmio_gva = vm_unused_gva_gap(vm, vm->page_size, KVM_UTIL_MIN_VADDR);
|
|
|
|
virt_map(vm, mmio_gva, mmio_gpa, 1);
|
|
|
|
vm->ucall_mmio_addr = mmio_gpa;
|
|
|
|
write_guest_global(vm, ucall_exit_mmio_addr, (gva_t *)mmio_gva);
|
|
}
|
|
|
|
void *ucall_arch_get_ucall(struct kvm_vcpu *vcpu)
|
|
{
|
|
struct kvm_run *run = vcpu->run;
|
|
|
|
if (run->exit_reason == KVM_EXIT_MMIO &&
|
|
run->mmio.phys_addr == vcpu->vm->ucall_mmio_addr) {
|
|
TEST_ASSERT(run->mmio.is_write && run->mmio.len == sizeof(u64),
|
|
"Unexpected ucall exit mmio address access");
|
|
return (void *)(*((u64 *)run->mmio.data));
|
|
}
|
|
|
|
return NULL;
|
|
}
|