• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Streamline setting of reference and change bits · f7caf712
    Paul Mackerras authored
    When using the radix MMU, we can get hypervisor page fault interrupts
    with the DSISR_SET_RC bit set in DSISR/HSRR1, indicating that an
    attempt to set the R (reference) or C (change) bit in a PTE atomically
    failed.  Previously we would find the corresponding Linux PTE and
    check the permission and dirty bits there, but this is not really
    necessary since we only need to do what the hardware was trying to
    do, namely set R or C atomically.  This removes the code that reads
    the Linux PTE and just update the partition-scoped PTE, having first
    checked that it is still present, and if the access is a write, that
    the PTE still has write permission.
    
    Furthermore, we now check whether any other relevant bits are set
    in DSISR, and if there are, then we proceed with the rest of the
    function in order to handle whatever condition they represent,
    instead of returning to the guest as we did previously.
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    f7caf712
book3s_64_mmu_radix.c 18 KB