lkml.org 
[lkml]   [2020]   [Oct]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC v2 3/7] KVM: MMU: Rename the pkru to pkr
    Date
    PKRU represents the PKU register utilized in the protection key rights
    check for user pages. Protection Keys for Superviosr Pages (PKS) extends
    the protection key architecture to cover supervisor pages.

    Rename the *pkru* related variables and functions to *pkr* which stands
    for both of the PKRU and PKRS. It makes sense because both registers
    have the same format. PKS and PKU can also share the same bitmap to
    cache the conditions where protection key checks are needed.

    Signed-off-by: Chenyi Qiang <chenyi.qiang@intel.com>
    ---
    arch/x86/include/asm/kvm_host.h | 2 +-
    arch/x86/kvm/mmu.h | 12 ++++++------
    arch/x86/kvm/mmu/mmu.c | 18 +++++++++---------
    3 files changed, 16 insertions(+), 16 deletions(-)

    diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
    index 5303dbc5c9bc..dd3af15e109f 100644
    --- a/arch/x86/include/asm/kvm_host.h
    +++ b/arch/x86/include/asm/kvm_host.h
    @@ -381,7 +381,7 @@ struct kvm_mmu {
    * with PFEC.RSVD replaced by ACC_USER_MASK from the page tables.
    * Each domain has 2 bits which are ANDed with AD and WD from PKRU.
    */
    - u32 pkru_mask;
    + u32 pkr_mask;

    u64 *pae_root;
    u64 *lm_root;
    diff --git a/arch/x86/kvm/mmu.h b/arch/x86/kvm/mmu.h
    index 5efc6081ca13..306608248594 100644
    --- a/arch/x86/kvm/mmu.h
    +++ b/arch/x86/kvm/mmu.h
    @@ -195,8 +195,8 @@ static inline u8 permission_fault(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
    u32 errcode = PFERR_PRESENT_MASK;

    WARN_ON(pfec & (PFERR_PK_MASK | PFERR_RSVD_MASK));
    - if (unlikely(mmu->pkru_mask)) {
    - u32 pkru_bits, offset;
    + if (unlikely(mmu->pkr_mask)) {
    + u32 pkr_bits, offset;

    /*
    * PKRU defines 32 bits, there are 16 domains and 2
    @@ -204,15 +204,15 @@ static inline u8 permission_fault(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
    * index of the protection domain, so pte_pkey * 2 is
    * is the index of the first bit for the domain.
    */
    - pkru_bits = (vcpu->arch.pkru >> (pte_pkey * 2)) & 3;
    + pkr_bits = (vcpu->arch.pkru >> (pte_pkey * 2)) & 3;

    /* clear present bit, replace PFEC.RSVD with ACC_USER_MASK. */
    offset = (pfec & ~1) +
    ((pte_access & PT_USER_MASK) << (PFERR_RSVD_BIT - PT_USER_SHIFT));

    - pkru_bits &= mmu->pkru_mask >> offset;
    - errcode |= -pkru_bits & PFERR_PK_MASK;
    - fault |= (pkru_bits != 0);
    + pkr_bits &= mmu->pkr_mask >> offset;
    + errcode |= -pkr_bits & PFERR_PK_MASK;
    + fault |= (pkr_bits != 0);
    }

    return -(u32)fault & errcode;
    diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c
    index 71aa3da2a0b7..834a95cf49fa 100644
    --- a/arch/x86/kvm/mmu/mmu.c
    +++ b/arch/x86/kvm/mmu/mmu.c
    @@ -4695,20 +4695,20 @@ static void update_permission_bitmask(struct kvm_vcpu *vcpu,
    * away both AD and WD. For all reads or if the last condition holds, WD
    * only will be masked away.
    */
    -static void update_pkru_bitmask(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
    +static void update_pkr_bitmask(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
    bool ept)
    {
    unsigned bit;
    bool wp;

    if (ept) {
    - mmu->pkru_mask = 0;
    + mmu->pkr_mask = 0;
    return;
    }

    /* PKEY is enabled only if CR4.PKE and EFER.LMA are both set. */
    if (!kvm_read_cr4_bits(vcpu, X86_CR4_PKE) || !is_long_mode(vcpu)) {
    - mmu->pkru_mask = 0;
    + mmu->pkr_mask = 0;
    return;
    }

    @@ -4742,7 +4742,7 @@ static void update_pkru_bitmask(struct kvm_vcpu *vcpu, struct kvm_mmu *mmu,
    /* PKRU.WD stops write access. */
    pkey_bits |= (!!check_write) << 1;

    - mmu->pkru_mask |= (pkey_bits & 3) << pfec;
    + mmu->pkr_mask |= (pkey_bits & 3) << pfec;
    }
    }

    @@ -4764,7 +4764,7 @@ static void paging64_init_context_common(struct kvm_vcpu *vcpu,

    reset_rsvds_bits_mask(vcpu, context);
    update_permission_bitmask(vcpu, context, false);
    - update_pkru_bitmask(vcpu, context, false);
    + update_pkr_bitmask(vcpu, context, false);
    update_last_nonleaf_level(vcpu, context);

    MMU_WARN_ON(!is_pae(vcpu));
    @@ -4794,7 +4794,7 @@ static void paging32_init_context(struct kvm_vcpu *vcpu,

    reset_rsvds_bits_mask(vcpu, context);
    update_permission_bitmask(vcpu, context, false);
    - update_pkru_bitmask(vcpu, context, false);
    + update_pkr_bitmask(vcpu, context, false);
    update_last_nonleaf_level(vcpu, context);

    context->page_fault = paging32_page_fault;
    @@ -4913,7 +4913,7 @@ static void init_kvm_tdp_mmu(struct kvm_vcpu *vcpu)
    }

    update_permission_bitmask(vcpu, context, false);
    - update_pkru_bitmask(vcpu, context, false);
    + update_pkr_bitmask(vcpu, context, false);
    update_last_nonleaf_level(vcpu, context);
    reset_tdp_shadow_zero_bits_mask(vcpu, context);
    }
    @@ -5061,7 +5061,7 @@ void kvm_init_shadow_ept_mmu(struct kvm_vcpu *vcpu, bool execonly,
    context->mmu_role.as_u64 = new_role.as_u64;

    update_permission_bitmask(vcpu, context, true);
    - update_pkru_bitmask(vcpu, context, true);
    + update_pkr_bitmask(vcpu, context, true);
    update_last_nonleaf_level(vcpu, context);
    reset_rsvds_bits_mask_ept(vcpu, context, execonly);
    reset_ept_shadow_zero_bits_mask(vcpu, context, execonly);
    @@ -5132,7 +5132,7 @@ static void init_kvm_nested_mmu(struct kvm_vcpu *vcpu)
    }

    update_permission_bitmask(vcpu, g_context, false);
    - update_pkru_bitmask(vcpu, g_context, false);
    + update_pkr_bitmask(vcpu, g_context, false);
    update_last_nonleaf_level(vcpu, g_context);
    }

    --
    2.17.1
    \
     
     \ /
      Last update: 2020-10-14 04:11    [W:2.777 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site