[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] x86/cpuid: AVX-512 Feature Detection
OK, no problem. -----Original Message----- From: Andrew Cooper [mailto:andrew.cooper3@xxxxxxxxxx] Sent: Tuesday, June 28, 2016 4:47 PM To: Kang, Luwei <luwei.kang@xxxxxxxxx>; xen-devel@xxxxxxxxxxxxx Cc: jbeulich@xxxxxxxx; Wang, Yong Y <yong.y.wang@xxxxxxxxx>; Peng, Chao P <chao.p.peng@xxxxxxxxx> Subject: Re: [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 |