Lines Matching +full:gpa +full:- +full:1
1 // SPDX-License-Identifier: GPL-2.0
11 static bool ucall_mmio_init(struct kvm_vm *vm, vm_paddr_t gpa) in ucall_mmio_init() argument
13 if (kvm_userspace_memory_region_find(vm, gpa, gpa + 1)) in ucall_mmio_init()
16 virt_pg_map(vm, gpa, gpa); in ucall_mmio_init()
18 ucall_exit_mmio_addr = (vm_vaddr_t *)gpa; in ucall_mmio_init()
26 vm_paddr_t gpa, start, end, step, offset; in ucall_init() local
31 gpa = (vm_paddr_t)arg; in ucall_init()
32 ret = ucall_mmio_init(vm, gpa); in ucall_init()
33 TEST_ASSERT(ret, "Can't set ucall mmio address to %lx", gpa); in ucall_init()
46 * up from there in 1/16th allowed space sized steps. in ucall_init()
48 * Note, we need to use VA-bits - 1 when calculating the allowed in ucall_init()
53 bits = vm->va_bits - 1; in ucall_init()
54 bits = min(vm->pa_bits, bits); in ucall_init()
55 end = 1ul << bits; in ucall_init()
58 for (offset = 0; offset < end - start; offset += step) { in ucall_init()
59 if (ucall_mmio_init(vm, start - offset)) in ucall_init()
92 struct kvm_run *run = vcpu->run; in get_ucall()
98 if (run->exit_reason == KVM_EXIT_MMIO && in get_ucall()
99 run->mmio.phys_addr == (uint64_t)ucall_exit_mmio_addr) { in get_ucall()
102 TEST_ASSERT(run->mmio.is_write && run->mmio.len == 8, in get_ucall()
104 memcpy(&gva, run->mmio.data, sizeof(gva)); in get_ucall()
105 memcpy(&ucall, addr_gva2hva(vcpu->vm, gva), sizeof(ucall)); in get_ucall()