• Mark Rutland's avatar
    arm/kvm: excise redundant cache maintenance · dcadda14
    Mark Rutland authored
    When modifying Stage-2 page tables, we perform cache maintenance to
    account for non-coherent page table walks. However, this is unnecessary,
    as page table walks are guaranteed to be coherent in the presence of the
    virtualization extensions.
    
    Per ARM DDI 0406C.c, section B1.7 ("The Virtualization Extensions"), the
    virtualization extensions mandate the multiprocessing extensions.
    
    Per ARM DDI 0406C.c, section B3.10.1 ("General TLB maintenance
    requirements"), as described in the sub-section titled "TLB maintenance
    operations and the memory order model", this maintenance is not required
    in the presence of the multiprocessing extensions.
    
    Hence, we need not perform this cache maintenance when modifying Stage-2
    entries.
    
    This patch removes the logic for performing the redundant maintenance.
    To ensure visibility and ordering of updates, a dsb(ishst) that was
    otherwise implicit in the maintenance is folded into kvm_set_pmd() and
    kvm_set_pte().
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Cc: Christoffer Dall <christoffer.dall@linaro.org>
    Cc: Marc Zyngier <marc.zyngier@arm.com>
    Cc: kvmarm@lists.cs.columbia.edu
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    dcadda14
kvm_mmu.h 5.98 KB