• Suzuki K Poulose's avatar
    kvm: arm64: Set a limit on the IPA size · 0f62f0e9
    Suzuki K Poulose authored
    So far we have restricted the IPA size of the VM to the default
    value (40bits). Now that we can manage the IPA size per VM and
    support dynamic stage2 page tables, we can allow VMs to have
    larger IPA. This patch introduces a the maximum IPA size
    supported on the host. This is decided by the following factors :
    
     1) Maximum PARange supported by the CPUs - This can be inferred
        from the system wide safe value.
     2) Maximum PA size supported by the host kernel (48 vs 52)
     3) Number of levels in the host page table (as we base our
        stage2 tables on the host table helpers).
    
    Since the stage2 page table code is dependent on the stage1
    page table, we always ensure that :
    
      Number of Levels at Stage1 >= Number of Levels at Stage2
    
    So we limit the IPA to make sure that the above condition
    is satisfied. This will affect the following combinations
    of VA_BITS and IPA for different page sizes.
    
      Host configuration | Unsupported IPA ranges
      39bit VA, 4K       | [44, 48]
      36bit VA, 16K      | [41, 48]
      42bit VA, 64K      | [47, 52]
    
    Supporting the above combinations need independent stage2
    page table manipulation code, which would need substantial
    changes. We could purse the solution independently and
    switch the page table code once we have it ready.
    
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: Christoffer Dall <cdall@kernel.org>
    Reviewed-by: default avatarEric Auger <eric.auger@redhat.com>
    Signed-off-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    0f62f0e9
kvm_mmu.h 8.72 KB