• Russell King's avatar
    arm64: kvm: Fix IDMAP overlap with HYP VA · f5523423
    Russell King authored
    Booting 5.4 on LX2160A reveals that KVM is non-functional:
    
    kvm: Limiting the IPA size due to kernel Virtual Address limit
    kvm [1]: IPA Size Limit: 43bits
    kvm [1]: IDMAP intersecting with HYP VA, unable to continue
    kvm [1]: error initializing Hyp mode: -22
    
    Debugging shows:
    
    kvm [1]: IDMAP page: 81a26000
    kvm [1]: HYP VA range: 0:22ffffffff
    
    as RAM is located at:
    
    80000000-fbdfffff : System RAM
    2080000000-237fffffff : System RAM
    
    Comparing this with the same kernel on Armada 8040 shows:
    
    kvm: Limiting the IPA size due to kernel Virtual Address limit
    kvm [1]: IPA Size Limit: 43bits
    kvm [1]: IDMAP page: 2a26000
    kvm [1]: HYP VA range: 4800000000:493fffffff
    ...
    kvm [1]: Hyp mode initialized successfully
    
    which indicates that hyp_va_msb is set, and is always set to the
    opposite value of the idmap page to avoid the overlap. This does not
    happen with the LX2160A.
    
    Further debugging shows vabits_actual = 39, kva_msb = 38 on LX2160A and
    kva_msb = 33 on Armada 8040. Looking at the bit layout of the HYP VA,
    there is still one bit available for hyp_va_msb. Set this bit
    appropriately. This allows KVM to be functional on the LX2160A, but
    without any HYP VA randomisation:
    
    kvm: Limiting the IPA size due to kernel Virtual Address limit
    kvm [1]: IPA Size Limit: 43bits
    kvm [1]: IDMAP page: 81a24000
    kvm [1]: HYP VA range: 4000000000:62ffffffff
    ...
    kvm [1]: Hyp mode initialized successfully
    
    Fixes: ed57cac8 ("arm64: KVM: Introduce EL2 VA randomisation")
    Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
    [maz: small additional cleanups, preserved case where the tag
     is legitimately 0 and we can just use the mask, Fixes tag]
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/E1ilAiY-0000MA-RG@rmk-PC.armlinux.org.uk
    f5523423
va_layout.c 5.09 KB