mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
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>
This commit is contained in:
commit
7c652c0ddd
|
|
@ -90,6 +90,9 @@
|
|||
#define TCR_TG0_64K (UL(1) << TCR_TG0_SHIFT)
|
||||
#define TCR_TG0_16K (UL(2) << TCR_TG0_SHIFT)
|
||||
|
||||
#define TCR_EPD1_SHIFT 23
|
||||
#define TCR_EPD1_MASK (UL(1) << TCR_EPD1_SHIFT)
|
||||
|
||||
#define TCR_IPS_SHIFT 32
|
||||
#define TCR_IPS_MASK (UL(7) << TCR_IPS_SHIFT)
|
||||
#define TCR_IPS_52_BITS (UL(6) << TCR_IPS_SHIFT)
|
||||
|
|
@ -97,6 +100,7 @@
|
|||
#define TCR_IPS_40_BITS (UL(2) << TCR_IPS_SHIFT)
|
||||
#define TCR_IPS_36_BITS (UL(1) << TCR_IPS_SHIFT)
|
||||
|
||||
#define TCR_TBI1 (UL(1) << 38)
|
||||
#define TCR_HA (UL(1) << 39)
|
||||
#define TCR_DS (UL(1) << 59)
|
||||
|
||||
|
|
|
|||
|
|
@ -939,7 +939,7 @@ void *vcpu_map_dirty_ring(struct kvm_vcpu *vcpu);
|
|||
* VM VCPU Args Set
|
||||
*
|
||||
* Input Args:
|
||||
* vm - Virtual Machine
|
||||
* vcpu - vCPU
|
||||
* num - number of arguments
|
||||
* ... - arguments, each of type uint64_t
|
||||
*
|
||||
|
|
@ -1258,8 +1258,13 @@ static inline int __vm_disable_nx_huge_pages(struct kvm_vm *vm)
|
|||
return __vm_enable_cap(vm, KVM_CAP_VM_DISABLE_NX_HUGE_PAGES, 0);
|
||||
}
|
||||
|
||||
static inline uint64_t vm_page_align(struct kvm_vm *vm, uint64_t v)
|
||||
{
|
||||
return (v + vm->page_size - 1) & ~(vm->page_size - 1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Arch hook that is invoked via a constructor, i.e. before exeucting main(),
|
||||
* Arch hook that is invoked via a constructor, i.e. before executing main(),
|
||||
* to allow for arch-specific setup that is common to all tests, e.g. computing
|
||||
* the default guest "mode".
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -21,11 +21,6 @@
|
|||
|
||||
static vm_vaddr_t exception_handlers;
|
||||
|
||||
static uint64_t page_align(struct kvm_vm *vm, uint64_t v)
|
||||
{
|
||||
return (v + vm->page_size) & ~(vm->page_size - 1);
|
||||
}
|
||||
|
||||
static uint64_t pgd_index(struct kvm_vm *vm, vm_vaddr_t gva)
|
||||
{
|
||||
unsigned int shift = (vm->pgtable_levels - 1) * (vm->page_shift - 3) + vm->page_shift;
|
||||
|
|
@ -115,7 +110,7 @@ static uint64_t __maybe_unused ptrs_per_pte(struct kvm_vm *vm)
|
|||
|
||||
void virt_arch_pgd_alloc(struct kvm_vm *vm)
|
||||
{
|
||||
size_t nr_pages = page_align(vm, ptrs_per_pgd(vm) * 8) / vm->page_size;
|
||||
size_t nr_pages = vm_page_align(vm, ptrs_per_pgd(vm) * 8) / vm->page_size;
|
||||
|
||||
if (vm->pgd_created)
|
||||
return;
|
||||
|
|
@ -384,6 +379,8 @@ void aarch64_vcpu_setup(struct kvm_vcpu *vcpu, struct kvm_vcpu_init *init)
|
|||
|
||||
tcr_el1 |= TCR_IRGN0_WBWA | TCR_ORGN0_WBWA | TCR_SH0_INNER;
|
||||
tcr_el1 |= TCR_T0SZ(vm->va_bits);
|
||||
tcr_el1 |= TCR_TBI1;
|
||||
tcr_el1 |= TCR_EPD1_MASK;
|
||||
if (use_lpa2_pte_format(vm))
|
||||
tcr_el1 |= TCR_DS;
|
||||
|
||||
|
|
|
|||
|
|
@ -1351,7 +1351,7 @@ struct kvm_vcpu *__vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpu_id)
|
|||
* Output Args: None
|
||||
*
|
||||
* Return:
|
||||
* Lowest virtual address at or below vaddr_min, with at least
|
||||
* Lowest virtual address at or above vaddr_min, with at least
|
||||
* sz unused bytes. TEST_ASSERT failure if no area of at least
|
||||
* size sz is available.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -26,11 +26,6 @@ bool __vcpu_has_ext(struct kvm_vcpu *vcpu, uint64_t ext)
|
|||
return !ret && !!value;
|
||||
}
|
||||
|
||||
static uint64_t page_align(struct kvm_vm *vm, uint64_t v)
|
||||
{
|
||||
return (v + vm->page_size) & ~(vm->page_size - 1);
|
||||
}
|
||||
|
||||
static uint64_t pte_addr(struct kvm_vm *vm, uint64_t entry)
|
||||
{
|
||||
return ((entry & PGTBL_PTE_ADDR_MASK) >> PGTBL_PTE_ADDR_SHIFT) <<
|
||||
|
|
@ -68,7 +63,7 @@ static uint64_t pte_index(struct kvm_vm *vm, vm_vaddr_t gva, int level)
|
|||
|
||||
void virt_arch_pgd_alloc(struct kvm_vm *vm)
|
||||
{
|
||||
size_t nr_pages = page_align(vm, ptrs_per_pte(vm) * 8) / vm->page_size;
|
||||
size_t nr_pages = vm_page_align(vm, ptrs_per_pte(vm) * 8) / vm->page_size;
|
||||
|
||||
if (vm->pgd_created)
|
||||
return;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user