• Quentin Perret's avatar
    KVM: arm64: Unify MMIO and mem host stage-2 pools · 7c350ea3
    Quentin Perret authored
    We currently maintain two separate memory pools for the host stage-2,
    one for pages used in the page-table when mapping memory regions, and
    the other to map MMIO regions. The former is large enough to map all of
    memory with page granularity and the latter can cover an arbitrary
    portion of IPA space, but allows to 'recycle' pages.
    
    However, this split makes accounting difficult to manage as pages at
    intermediate levels of the page-table may be used to map both memory and
    MMIO regions. Simplify the scheme by merging both pools into one. This
    means we can now hit the -ENOMEM case in the memory abort path, but
    we're still guaranteed forward-progress in the worst case by unmapping
    MMIO regions. On the plus side this also means we can usually map a lot
    more MMIO space at once if memory ranges happen to be mapped with block
    mappings.
    Signed-off-by: default avatarQuentin Perret <qperret@google.com>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20210608114518.748712-5-qperret@google.com
    7c350ea3
mm.h 2.57 KB