|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/cpuid: AVX-512 Feature Detection
On 28/06/16 06:51, Luwei Kang wrote:
> @@ -1136,9 +1136,16 @@ void pv_cpuid(struct cpu_user_regs *regs)
> case XSTATE_CPUID:
>
> if ( !is_control_domain(currd) && !is_hardware_domain(currd) )
> + {
> domain_cpuid(currd, 1, 0, &tmp, &tmp, &_ecx, &tmp);
> + domain_cpuid(currd, 0x07, 0, &tmp, &_ebx, &tmp, &tmp);
> + }
> else
> + {
> _ecx = cpuid_ecx(1);
> + cpuid_count(0x07, 0, &tmp, &_ebx, &tmp, &tmp);
> + }
> +
In addition to Jan's comments, having _ecx from one leaf and _ebx from a
different leaf collected at the same time is liable to cause confusion.
Please split the cpuid call for leaf 7 out from here, and put it in the
next hunk, just like the way the hvm_cpuid() side works.
~Andrew
> _ecx &= pv_featureset[FEATURESET_1c];
>
> if ( !(_ecx & cpufeat_mask(X86_FEATURE_XSAVE)) || subleaf >= 63 )
> @@ -1157,6 +1164,14 @@ void pv_cpuid(struct cpu_user_regs *regs)
> xstate_sizes[_XSTATE_YMM]);
> }
>
> + if ( _ebx & cpufeat_mask(X86_FEATURE_AVX512F) )
> + {
> + xfeature_mask |= XSTATE_OPMASK | XSTATE_ZMM | XSTATE_HI_ZMM;
> + xstate_size = max(xstate_size,
> + xstate_offsets[_XSTATE_HI_ZMM] +
> + xstate_sizes[_XSTATE_HI_ZMM]);
> + }
> +
> a = (uint32_t)xfeature_mask;
> d = (uint32_t)(xfeature_mask >> 32);
> c = xstate_size;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |