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

From: Paolo Bonzini
Date: Tue May 11 2021 - 13:08:14 EST


On 11/05/21 18:45, Dave Hansen 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().

Yeah, you should move it from __write_pkru() to write_pkru() but not remove it completely.

Paolo