• Suzuki K Poulose's avatar
    kvm: arm/arm64: Rework gpa callback handlers · 056aad67
    Suzuki K Poulose authored
    In order to perform an operation on a gpa range, we currently iterate
    over each page in a user memory slot for the given range. This is
    inefficient while dealing with a big range (e.g, a VMA), especially
    while unmaping a range. At present, with stage2 unmap on a range with
    a hugepage backed region, we clear the PMD when we unmap the first
    page in the loop. The remaining iterations simply traverse the page table
    down to the PMD level only to see that nothing is in there.
    
    This patch reworks the code to invoke the callback handlers on the
    biggest range possible within the memory slot to to reduce the number of
    times the handler is called.
    
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: default avatarChristoffer Dall <cdall@linaro.org>
    Signed-off-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
    Signed-off-by: default avatarChristoffer Dall <cdall@linaro.org>
    056aad67
mmu.c 51.2 KB