Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

KVM: selftests: introduce P47V64 for s390x

s390x can have up to 47bits of physical guest and 64bits of virtual
address bits. Add a new address mode to avoid errors of testcases
going beyond 47bits.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Message-Id: <20210608123954.10991-1-borntraeger@de.ibm.com>
Fixes: ef4c9f4f6546 ("KVM: selftests: Fix 32-bit truncation of vm_get_max_gfn()")
Cc: stable@vger.kernel.org
Reviewed-by: David Matlack <dmatlack@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

authored by

Christian Borntraeger and committed by
Paolo Bonzini
1bc603af af3511ff

+7 -1
+2 -1
tools/testing/selftests/kvm/include/kvm_util.h
··· 43 43 VM_MODE_P40V48_4K, 44 44 VM_MODE_P40V48_64K, 45 45 VM_MODE_PXXV48_4K, /* For 48bits VA but ANY bits PA */ 46 + VM_MODE_P47V64_4K, 46 47 NUM_VM_MODES, 47 48 }; 48 49 ··· 61 60 62 61 #elif defined(__s390x__) 63 62 64 - #define VM_MODE_DEFAULT VM_MODE_P52V48_4K 63 + #define VM_MODE_DEFAULT VM_MODE_P47V64_4K 65 64 #define MIN_PAGE_SHIFT 12U 66 65 #define ptes_per_page(page_size) ((page_size) / 16) 67 66
+5
tools/testing/selftests/kvm/lib/kvm_util.c
··· 175 175 [VM_MODE_P40V48_4K] = "PA-bits:40, VA-bits:48, 4K pages", 176 176 [VM_MODE_P40V48_64K] = "PA-bits:40, VA-bits:48, 64K pages", 177 177 [VM_MODE_PXXV48_4K] = "PA-bits:ANY, VA-bits:48, 4K pages", 178 + [VM_MODE_P47V64_4K] = "PA-bits:47, VA-bits:64, 4K pages", 178 179 }; 179 180 _Static_assert(sizeof(strings)/sizeof(char *) == NUM_VM_MODES, 180 181 "Missing new mode strings?"); ··· 193 192 { 40, 48, 0x1000, 12 }, 194 193 { 40, 48, 0x10000, 16 }, 195 194 { 0, 0, 0x1000, 12 }, 195 + { 47, 64, 0x1000, 12 }, 196 196 }; 197 197 _Static_assert(sizeof(vm_guest_mode_params)/sizeof(struct vm_guest_mode_params) == NUM_VM_MODES, 198 198 "Missing new mode params?"); ··· 278 276 #else 279 277 TEST_FAIL("VM_MODE_PXXV48_4K not supported on non-x86 platforms"); 280 278 #endif 279 + break; 280 + case VM_MODE_P47V64_4K: 281 + vm->pgtable_levels = 5; 281 282 break; 282 283 default: 283 284 TEST_FAIL("Unknown guest mode, mode: 0x%x", mode);