|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 26/26] tools/libxc: Calculate xstate cpuid leaf from guest information
>>> Andrew Cooper <andrew.cooper3@xxxxxxxxxx> 04/05/16 7:49 PM >>>
>On 31/03/16 08:48, Jan Beulich wrote:
>>>>> On 23.03.16 at 17:36, <andrew.cooper3@xxxxxxxxxx> wrote:
>>> switch ( input[1] )
>>> {
>>> - case 0:
>>> + case 0:
>>> /* EAX: low 32bits of xfeature_enabled_mask */
>>> - regs[0] = info->xfeature_mask & 0xFFFFFFFF;
>>> + regs[0] = guest_xfeature_mask;
>> /* EDX: high 32bits of xfeature_enabled_mask */
>> - regs[3] = (info->xfeature_mask >> 32) & 0xFFFFFFFF;
>> + regs[3] = guest_xfeature_mask >> 32;
>> ... here and ...
>>
>>> case 1: /* leaf 1 */
<>> regs[0] = info->featureset[featureword_of(X86_FEATURE_XSAVEOPT)];
>>> - regs[2] &= info->xfeature_mask;
>>> - regs[3] = 0;
>>> + regs[2] = guest_xfeature_mask & X86_XSS_MASK;
>>> + regs[3] = (guest_xfeature_mask >> 32) & X86_XSS_MASK;
>> ... here. Yet not by a compile time defined mask, but by using
>> (host) CPUID output: It is clear that once a bit got assigned to XCR0
>> vs XSS, it won't ever change. Hence it doesn't matter whether you
>> use the guest or host view of that split. And this will then also - other
>> than you've said before would be unavoidable - make unnecessary to
>> always update this code when new states get added.
>
>There is no possible way of avoiding having a whitelist somewhere, which
>limits what Xen will tolerate supporting for the guest.
Right, but preferably in exactly one place. And imo that ought to be
info->xfeature_mask.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |