mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 22:14:04 +02:00
KVM: arm64: Simplify nested VMA shift calculation
In the kvm_s2_resolve_vma_size() helper, the local variable vma_pagesize is calculated from vma_shift, only to be used to bound the vma_pagesize by max_map_size and subsequently convert it back to a shift via __ffs(). Because vma_pagesize and max_map_size are both powers of two, we can simplify the logic by omitting vma_pagesize entirely and bounding the vma_shift directly using the shift of max_map_size. This achieves the same result while keeping the size-to-shift conversion out of the helper logic. Signed-off-by: Fuad Tabba <tabba@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org>
This commit is contained in:
parent
5557a3f843
commit
2175ca5384
|
|
@ -1646,7 +1646,6 @@ static short kvm_s2_resolve_vma_size(struct vm_area_struct *vma,
|
|||
bool *force_pte, phys_addr_t *ipa)
|
||||
{
|
||||
short vma_shift;
|
||||
long vma_pagesize;
|
||||
|
||||
if (*force_pte)
|
||||
vma_shift = PAGE_SHIFT;
|
||||
|
|
@ -1677,8 +1676,6 @@ static short kvm_s2_resolve_vma_size(struct vm_area_struct *vma,
|
|||
WARN_ONCE(1, "Unknown vma_shift %d", vma_shift);
|
||||
}
|
||||
|
||||
vma_pagesize = 1UL << vma_shift;
|
||||
|
||||
if (nested) {
|
||||
unsigned long max_map_size;
|
||||
|
||||
|
|
@ -1703,8 +1700,7 @@ static short kvm_s2_resolve_vma_size(struct vm_area_struct *vma,
|
|||
max_map_size = PAGE_SIZE;
|
||||
|
||||
*force_pte = (max_map_size == PAGE_SIZE);
|
||||
vma_pagesize = min_t(long, vma_pagesize, max_map_size);
|
||||
vma_shift = __ffs(vma_pagesize);
|
||||
vma_shift = min_t(short, vma_shift, __ffs(max_map_size));
|
||||
}
|
||||
|
||||
return vma_shift;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user