From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Juergen Gross <jgross@suse.com>, <linux-kernel@vger.kernel.org>,
<xen-devel@lists.xenproject.org>
Cc: <boris.ostrovsky@oracle.com>
Subject: Re: [Xen-devel] [PATCH v2 09/11] x86/xen: use capabilities instead of fake cpuid values for xsave
Date: Thu, 13 Apr 2017 11:35:31 +0100 [thread overview]
Message-ID: <d2e23eab-da09-49f8-dc4f-b693a049d46c@citrix.com> (raw)
In-Reply-To: <20170413101116.723-10-jgross@suse.com>
On 13/04/17 11:11, Juergen Gross wrote:
> @@ -281,22 +274,19 @@ static bool __init xen_check_mwait(void)
> return false;
> #endif
> }
> -static void __init xen_init_cpuid_mask(void)
> +
> +static bool __init xen_check_xsave(void)
> {
> - unsigned int ax, bx, cx, dx;
> - unsigned int xsave_mask;
> + unsigned int cx, xsave_mask;
>
> - ax = 1;
> - cx = 0;
> - cpuid(1, &ax, &bx, &cx, &dx);
> + cx = cpuid_ecx(1);
>
> xsave_mask =
> (1 << (X86_FEATURE_XSAVE % 32)) |
> (1 << (X86_FEATURE_OSXSAVE % 32));
>
> /* Xen will set CR4.OSXSAVE if supported and not disabled by force */
> - if ((cx & xsave_mask) != xsave_mask)
> - cpuid_leaf1_ecx_mask &= ~xsave_mask; /* disable XSAVE & OSXSAVE */
> + return (cx & xsave_mask) == xsave_mask;
As you are taking the time to change this logic, could we see about
making it work in a way which doesn't require maintaining
non-architectural hackary in the hypervisor?
(For anyone reading this who isn't familiar with the history,
http://xenbits.xen.org/gitweb/?p=xen.git;a=blob;f=xen/arch/x86/cpuid.c;h=d359e090f33bb5793524186dc5f1c8bb620f17b3;hb=17cd6621688bce9972d9242611114fd7aba44c31#l726
ought to cover it)
In the presence of the bugs which caused this issue in the first place,
the best way to probe whether xsave is actually available is to try and
execute an xgetbv instruction, and use #UD as a signal that support
isn't actually available.
This also avoids Linux participating in the non-architectural behaviour
of forcing OXSAVE to be something other than a reflection of CR4.
~Andrew
next prev parent reply other threads:[~2017-04-13 10:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-13 10:11 [PATCH v2 00/11] x86: xen cpuid() cleanup Juergen Gross
2017-04-13 10:11 ` [PATCH v2 01/11] xen: set cpu capabilities from xen_start_kernel() Juergen Gross
2017-04-13 10:11 ` [PATCH v2 02/11] x86/xen: don't indicate DCA support in pv domains Juergen Gross
2017-04-13 10:11 ` [PATCH v2 03/11] x86/xen: use capabilities instead of fake cpuid values for aperf Juergen Gross
2017-04-13 10:11 ` [PATCH v2 04/11] x86/xen: use capabilities instead of fake cpuid values for mtrr Juergen Gross
2017-04-13 10:11 ` [PATCH v2 05/11] x86/xen: use capabilities instead of fake cpuid values for acc Juergen Gross
2017-04-13 10:11 ` [PATCH v2 06/11] x86/xen: use capabilities instead of fake cpuid values for acpi Juergen Gross
2017-04-13 10:11 ` [PATCH v2 07/11] x86/xen: use capabilities instead of fake cpuid values for mwait Juergen Gross
2017-04-13 10:11 ` [PATCH v2 08/11] x86/xen: use capabilities instead of fake cpuid values for x2apic Juergen Gross
2017-04-13 10:11 ` [PATCH v2 09/11] x86/xen: use capabilities instead of fake cpuid values for xsave Juergen Gross
2017-04-13 10:35 ` Andrew Cooper [this message]
2017-04-13 10:11 ` [PATCH v2 10/11] vmware: set cpu capabilities during platform initialization Juergen Gross
2017-04-13 10:29 ` Alok Kataria
2017-04-13 10:11 ` [PATCH v2 11/11] x86/cpu: remove hypervisor specific set_cpu_features Juergen Gross
2017-04-13 13:39 ` [PATCH v2 00/11] x86: xen cpuid() cleanup Boris Ostrovsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d2e23eab-da09-49f8-dc4f-b693a049d46c@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=boris.ostrovsky@oracle.com \
--cc=jgross@suse.com \
--cc=linux-kernel@vger.kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome