KVM: selftests: Trust that MAXPHYADDR > memslot0 in vmx_apic_access_test
Use vm->max_gfn to compute the highest gpa in vmx_apic_access_test, and blindly trust that the highest gfn/gpa will be well above the memory carved out for memslot0. The existing check is beyond paranoid; KVM doesn't support CPUs with host.MAXPHYADDR < 32, and the selftests are all kinds of hosed if memslot0 overlaps the local xAPIC, which resides above "lower" (below 4gb) DRAM. Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Родитель
6e1d13bf38
Коммит
38081d2883
|
@ -72,8 +72,6 @@ static void l1_guest_code(struct vmx_pages *vmx_pages, unsigned long high_gpa)
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
unsigned long apic_access_addr = ~0ul;
|
unsigned long apic_access_addr = ~0ul;
|
||||||
unsigned int paddr_width;
|
|
||||||
unsigned int vaddr_width;
|
|
||||||
vm_vaddr_t vmx_pages_gva;
|
vm_vaddr_t vmx_pages_gva;
|
||||||
unsigned long high_gpa;
|
unsigned long high_gpa;
|
||||||
struct vmx_pages *vmx;
|
struct vmx_pages *vmx;
|
||||||
|
@ -86,12 +84,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
vm = vm_create_with_one_vcpu(&vcpu, l1_guest_code);
|
vm = vm_create_with_one_vcpu(&vcpu, l1_guest_code);
|
||||||
|
|
||||||
kvm_get_cpu_address_width(&paddr_width, &vaddr_width);
|
high_gpa = (vm->max_gfn - 1) << vm->page_shift;
|
||||||
high_gpa = (1ul << paddr_width) - getpagesize();
|
|
||||||
if ((unsigned long)DEFAULT_GUEST_PHY_PAGES * getpagesize() > high_gpa) {
|
|
||||||
print_skip("No unbacked physical page available");
|
|
||||||
exit(KSFT_SKIP);
|
|
||||||
}
|
|
||||||
|
|
||||||
vmx = vcpu_alloc_vmx(vm, &vmx_pages_gva);
|
vmx = vcpu_alloc_vmx(vm, &vmx_pages_gva);
|
||||||
prepare_virtualize_apic_accesses(vmx, vm);
|
prepare_virtualize_apic_accesses(vmx, vm);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче