On Fri, Jun 10, 2016 at 07:17:43PM +0100, Andrew Cooper wrote: > PKU lives in CPUID.7[0].ECX, not EBX. This causes hardware with BMI1 to > accidentally advertise PKU in CPUID.0xD[0].EAX. Any OS which proceeds to > blindly write this into %xcr0 takes a #GP fault. (Experimentally, Windows > Vista 32bit falls into this category.) > > Signed-off-by: Andrew Cooper <andrew.coop...@citrix.com> > --- > CC: Jan Beulich <jbeul...@suse.com> > CC: Wei Liu <wei.l...@citrix.com> >
Reviewed-by: Wei Liu <wei.l...@citrix.com> and Release-acked-by: Wei Liu <wei.l...@citrix.com> > This is all going to be far less error prone when I have guest_has_$FEATURE(v) > helpers which read the bits out of a flat array... > --- > xen/arch/x86/hvm/hvm.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/xen/arch/x86/hvm/hvm.c b/xen/arch/x86/hvm/hvm.c > index e664b34..78db903 100644 > --- a/xen/arch/x86/hvm/hvm.c > +++ b/xen/arch/x86/hvm/hvm.c > @@ -3466,7 +3466,7 @@ void hvm_cpuid(unsigned int input, unsigned int *eax, > unsigned int *ebx, > xstate_sizes[_XSTATE_BNDCSR]); > } > > - if ( _ebx & cpufeat_mask(X86_FEATURE_PKU) ) > + if ( _ecx & cpufeat_mask(X86_FEATURE_PKU) ) > { > xfeature_mask |= XSTATE_PKRU; > xstate_size = max(xstate_size, > -- > 2.1.4 > _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel