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

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch kvm-arm64/selftests-6.20 into kvmarm-master/next

* kvm-arm64/selftests-6.20:
: .
: Some selftest fixes addressing page alignment issues as well as
: a bad MMU setup bug, courtesy of Fuad Tabba.
: .
KVM: selftests: Fix typos and stale comments in kvm_util
KVM: selftests: Move page_align() to shared header
KVM: riscv: selftests: Fix incorrect rounding in page_align()
KVM: arm64: selftests: Fix incorrect rounding in page_align()
KVM: arm64: selftests: Disable unused TTBR1_EL1 translations

Signed-off-by: Marc Zyngier <maz@kernel.org>

+16 -15
+4
tools/testing/selftests/kvm/include/arm64/processor.h
··· 90 90 #define TCR_TG0_64K (UL(1) << TCR_TG0_SHIFT) 91 91 #define TCR_TG0_16K (UL(2) << TCR_TG0_SHIFT) 92 92 93 + #define TCR_EPD1_SHIFT 23 94 + #define TCR_EPD1_MASK (UL(1) << TCR_EPD1_SHIFT) 95 + 93 96 #define TCR_IPS_SHIFT 32 94 97 #define TCR_IPS_MASK (UL(7) << TCR_IPS_SHIFT) 95 98 #define TCR_IPS_52_BITS (UL(6) << TCR_IPS_SHIFT) ··· 100 97 #define TCR_IPS_40_BITS (UL(2) << TCR_IPS_SHIFT) 101 98 #define TCR_IPS_36_BITS (UL(1) << TCR_IPS_SHIFT) 102 99 100 + #define TCR_TBI1 (UL(1) << 38) 103 101 #define TCR_HA (UL(1) << 39) 104 102 #define TCR_DS (UL(1) << 59) 105 103
+7 -2
tools/testing/selftests/kvm/include/kvm_util.h
··· 939 939 * VM VCPU Args Set 940 940 * 941 941 * Input Args: 942 - * vm - Virtual Machine 942 + * vcpu - vCPU 943 943 * num - number of arguments 944 944 * ... - arguments, each of type uint64_t 945 945 * ··· 1258 1258 return __vm_enable_cap(vm, KVM_CAP_VM_DISABLE_NX_HUGE_PAGES, 0); 1259 1259 } 1260 1260 1261 + static inline uint64_t vm_page_align(struct kvm_vm *vm, uint64_t v) 1262 + { 1263 + return (v + vm->page_size - 1) & ~(vm->page_size - 1); 1264 + } 1265 + 1261 1266 /* 1262 - * Arch hook that is invoked via a constructor, i.e. before exeucting main(), 1267 + * Arch hook that is invoked via a constructor, i.e. before executing main(), 1263 1268 * to allow for arch-specific setup that is common to all tests, e.g. computing 1264 1269 * the default guest "mode". 1265 1270 */
+3 -6
tools/testing/selftests/kvm/lib/arm64/processor.c
··· 21 21 22 22 static vm_vaddr_t exception_handlers; 23 23 24 - static uint64_t page_align(struct kvm_vm *vm, uint64_t v) 25 - { 26 - return (v + vm->page_size) & ~(vm->page_size - 1); 27 - } 28 - 29 24 static uint64_t pgd_index(struct kvm_vm *vm, vm_vaddr_t gva) 30 25 { 31 26 unsigned int shift = (vm->pgtable_levels - 1) * (vm->page_shift - 3) + vm->page_shift; ··· 110 115 111 116 void virt_arch_pgd_alloc(struct kvm_vm *vm) 112 117 { 113 - size_t nr_pages = page_align(vm, ptrs_per_pgd(vm) * 8) / vm->page_size; 118 + size_t nr_pages = vm_page_align(vm, ptrs_per_pgd(vm) * 8) / vm->page_size; 114 119 115 120 if (vm->pgd_created) 116 121 return; ··· 379 384 380 385 tcr_el1 |= TCR_IRGN0_WBWA | TCR_ORGN0_WBWA | TCR_SH0_INNER; 381 386 tcr_el1 |= TCR_T0SZ(vm->va_bits); 387 + tcr_el1 |= TCR_TBI1; 388 + tcr_el1 |= TCR_EPD1_MASK; 382 389 if (use_lpa2_pte_format(vm)) 383 390 tcr_el1 |= TCR_DS; 384 391
+1 -1
tools/testing/selftests/kvm/lib/kvm_util.c
··· 1351 1351 * Output Args: None 1352 1352 * 1353 1353 * Return: 1354 - * Lowest virtual address at or below vaddr_min, with at least 1354 + * Lowest virtual address at or above vaddr_min, with at least 1355 1355 * sz unused bytes. TEST_ASSERT failure if no area of at least 1356 1356 * size sz is available. 1357 1357 *
+1 -6
tools/testing/selftests/kvm/lib/riscv/processor.c
··· 26 26 return !ret && !!value; 27 27 } 28 28 29 - static uint64_t page_align(struct kvm_vm *vm, uint64_t v) 30 - { 31 - return (v + vm->page_size) & ~(vm->page_size - 1); 32 - } 33 - 34 29 static uint64_t pte_addr(struct kvm_vm *vm, uint64_t entry) 35 30 { 36 31 return ((entry & PGTBL_PTE_ADDR_MASK) >> PGTBL_PTE_ADDR_SHIFT) << ··· 63 68 64 69 void virt_arch_pgd_alloc(struct kvm_vm *vm) 65 70 { 66 - size_t nr_pages = page_align(vm, ptrs_per_pte(vm) * 8) / vm->page_size; 71 + size_t nr_pages = vm_page_align(vm, ptrs_per_pte(vm) * 8) / vm->page_size; 67 72 68 73 if (vm->pgd_created) 69 74 return;