Re: [PATCH v2] KVM: x86: use wrpkru directly in kvm_load_{guest|host}_xsave_state

From: Jon Kohler
Date: Tue May 11 2021 - 12:51:01 EST




> On May 11, 2021, at 12:45 PM, Dave Hansen <dave.hansen@xxxxxxxxx> wrote:
>
> On 5/11/21 8:59 AM, Jon Kohler wrote:
>> diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
>> index b1099f2d9800..20f1fb8be7ef 100644
>> --- a/arch/x86/include/asm/pgtable.h
>> +++ b/arch/x86/include/asm/pgtable.h
>> @@ -151,7 +151,7 @@ static inline void write_pkru(u32 pkru)
>> fpregs_lock();
>> if (pk)
>> pk->pkru = pkru;
>> - __write_pkru(pkru);
>> + wrpkru(pkru);
>> fpregs_unlock();
>> }
>
> This removes the:
>
> if (pkru == rdpkru())
> return;
>
> optimization from a couple of write_pkru() users:
> arch_set_user_pkey_access() and copy_init_pkru_to_fpregs().
>
> Was that intentional? Those aren't the hottest paths in the kernel, but
> copy_init_pkru_to_fpregs() is used in signal handling and exeve().

That wasn’t intentional, I’ll take a look and send out a v3 pronto.

Thanks, Dave