On Tue, May 12, 2020 at 8:12 AM Babu Moger <babu.moger@xxxxxxx> wrote: > > > > On 5/11/20 6:51 PM, Jim Mattson wrote: > > On Mon, May 11, 2020 at 4:33 PM Babu Moger <babu.moger@xxxxxxx> wrote: > >> > >> Both Intel and AMD support (MPK) Memory Protection Key feature. > >> Move the feature detection from VMX to the common code. It should > >> work for both the platforms now. > >> > >> Signed-off-by: Babu Moger <babu.moger@xxxxxxx> > >> --- > >> arch/x86/kvm/cpuid.c | 4 +++- > >> arch/x86/kvm/vmx/vmx.c | 4 ---- > >> 2 files changed, 3 insertions(+), 5 deletions(-) > >> > >> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c > >> index 901cd1fdecd9..3da7d6ea7574 100644 > >> --- a/arch/x86/kvm/cpuid.c > >> +++ b/arch/x86/kvm/cpuid.c > >> @@ -278,6 +278,8 @@ void kvm_set_cpu_caps(void) > >> #ifdef CONFIG_X86_64 > >> unsigned int f_gbpages = F(GBPAGES); > >> unsigned int f_lm = F(LM); > >> + /* PKU is not yet implemented for shadow paging. */ > >> + unsigned int f_pku = tdp_enabled ? F(PKU) : 0; > > > > I think we still want to require that OSPKE be set on the host before > > exposing PKU to the guest. > > > > Ok I can add this check. > > + unsigned int f_pku = tdp_enabled && F(OSPKE)? F(PKU) : 0; That doesn't do what you think it does. F(OSPKE) is a non-zero constant, so that conjunct is always true.