diff mbox

libxc: Expose the MPX cpuid flag to guest

Message ID 1452502330-2630-1-git-send-email-liang.z.li@intel.com
State New, archived
Headers show

Commit Message

Liang Li Jan. 11, 2016, 8:52 a.m. UTC
If hardware support memory protect externsion, expose this feature
to guest by default. Users don't have to use a 'cpuid= ' option in
config file to turn it on.

Signed-off-by: Liang Li <liang.z.li@intel.com>
---
 tools/libxc/xc_cpufeature.h | 1 +
 tools/libxc/xc_cpuid_x86.c  | 6 ++++++
 2 files changed, 7 insertions(+)

Comments

Wei Liu Jan. 11, 2016, 9:05 a.m. UTC | #1
On Mon, Jan 11, 2016 at 04:52:10PM +0800, Liang Li wrote:
> If hardware support memory protect externsion, expose this feature
> to guest by default. Users don't have to use a 'cpuid= ' option in
> config file to turn it on.
> 
> Signed-off-by: Liang Li <liang.z.li@intel.com>

I will defer this to the x86 maintainers.

Wei.
Andrew Cooper Jan. 11, 2016, 9:59 a.m. UTC | #2
On 11/01/16 09:05, Wei Liu wrote:
> On Mon, Jan 11, 2016 at 04:52:10PM +0800, Liang Li wrote:
>> If hardware support memory protect externsion, expose this feature
>> to guest by default. Users don't have to use a 'cpuid= ' option in
>> config file to turn it on.
>>
>> Signed-off-by: Liang Li <liang.z.li@intel.com>
> I will defer this to the x86 maintainers.

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

Looks like the hypervisor side is all present.

~Andrew
Liang Li Jan. 11, 2016, 10:07 a.m. UTC | #3
> On 11/01/16 09:05, Wei Liu wrote:
> > On Mon, Jan 11, 2016 at 04:52:10PM +0800, Liang Li wrote:
> >> If hardware support memory protect extension, expose this feature to
> >> guest by default. Users don't have to use a 'cpuid= ' option in
> >> config file to turn it on.
> >>
> >> Signed-off-by: Liang Li <liang.z.li@intel.com>
> > I will defer this to the x86 maintainers.
> 
> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> Looks like the hypervisor side is all present.
> 

Yes,  Thanks for reviewing.

Liang

> ~Andrew
Konrad Rzeszutek Wilk Jan. 11, 2016, 4:03 p.m. UTC | #4
On Mon, Jan 11, 2016 at 04:52:10PM +0800, Liang Li wrote:
> If hardware support memory protect externsion, expose this feature

extension
> to guest by default. Users don't have to use a 'cpuid= ' option in
> config file to turn it on.
> 
> Signed-off-by: Liang Li <liang.z.li@intel.com>
> ---
>  tools/libxc/xc_cpufeature.h | 1 +
>  tools/libxc/xc_cpuid_x86.c  | 6 ++++++
>  2 files changed, 7 insertions(+)
> 
> diff --git a/tools/libxc/xc_cpufeature.h b/tools/libxc/xc_cpufeature.h
> index c3ddc80..cda9305 100644
> --- a/tools/libxc/xc_cpufeature.h
> +++ b/tools/libxc/xc_cpufeature.h
> @@ -137,6 +137,7 @@
>  #define X86_FEATURE_ERMS         9 /* Enhanced REP MOVSB/STOSB */
>  #define X86_FEATURE_INVPCID     10 /* Invalidate Process Context ID */
>  #define X86_FEATURE_RTM         11 /* Restricted Transactional Memory */
> +#define X86_FEATURE_MPX         14 /* Memory Protection Extensions */
>  #define X86_FEATURE_RDSEED      18 /* RDSEED instruction */
>  #define X86_FEATURE_ADX         19 /* ADCX, ADOX instructions */
>  #define X86_FEATURE_SMAP        20 /* Supervisor Mode Access Protection */
> diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c
> index 8882c01..4c88db4 100644
> --- a/tools/libxc/xc_cpuid_x86.c
> +++ b/tools/libxc/xc_cpuid_x86.c
> @@ -423,6 +423,8 @@ static void xc_cpuid_hvm_policy(xc_interface *xch,
>                          bitmaskof(X86_FEATURE_ERMS) |
>                          bitmaskof(X86_FEATURE_INVPCID) |
>                          bitmaskof(X86_FEATURE_RTM)  |
> +                        ((info->xfeature_mask != 0) ?
> +                        bitmaskof(X86_FEATURE_MPX) : 0)  |
>                          bitmaskof(X86_FEATURE_RDSEED)  |
>                          bitmaskof(X86_FEATURE_ADX)  |
>                          bitmaskof(X86_FEATURE_SMAP) |
> @@ -538,6 +540,7 @@ static void xc_cpuid_pv_policy(xc_interface *xch,
>  
>      case 0x00000007:
>          if ( input[1] == 0 )
> +        {
>              regs[1] &= (bitmaskof(X86_FEATURE_BMI1) |
>                          bitmaskof(X86_FEATURE_HLE)  |
>                          bitmaskof(X86_FEATURE_AVX2) |
> @@ -547,6 +550,9 @@ static void xc_cpuid_pv_policy(xc_interface *xch,
>                          bitmaskof(X86_FEATURE_RDSEED)  |
>                          bitmaskof(X86_FEATURE_ADX)  |
>                          bitmaskof(X86_FEATURE_FSGSBASE));
> +            if ( info->xfeature_mask == 0 )
> +                clear_bit(X86_FEATURE_MPX, regs[1]);
> +        }
>          else
>              regs[1] = 0;
>          regs[0] = regs[2] = regs[3] = 0;
> -- 
> 1.9.1
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
Liang Li Jan. 20, 2016, 9:20 a.m. UTC | #5
> Cc: wei.liu2@citrix.com; ian.campbell@citrix.com;
> stefano.stabellini@eu.citrix.com; ian.jackson@eu.citrix.com; xen-
> devel@lists.xen.org; jbeulich@suse.com
> Subject: Re: [Xen-devel] [PATCH] libxc: Expose the MPX cpuid flag to guest
> 
> On Mon, Jan 11, 2016 at 04:52:10PM +0800, Liang Li wrote:
> > If hardware support memory protect externsion, expose this feature
> 
> extension

Thanks!

Liang
Liang Li Feb. 23, 2016, 8:57 a.m. UTC | #6
> From: Andrew Cooper [mailto:andrew.cooper3@citrix.com]
> Sent: Monday, January 11, 2016 5:59 PM
> To: Wei Liu; Li, Liang Z
> Cc: ian.campbell@citrix.com; stefano.stabellini@eu.citrix.com;
> ian.jackson@eu.citrix.com; xen-devel@lists.xen.org; jbeulich@suse.com
> Subject: Re: [Xen-devel] [PATCH] libxc: Expose the MPX cpuid flag to guest
> 
> On 11/01/16 09:05, Wei Liu wrote:
> > On Mon, Jan 11, 2016 at 04:52:10PM +0800, Liang Li wrote:
> >> If hardware support memory protect externsion, expose this feature to
> >> guest by default. Users don't have to use a 'cpuid= ' option in
> >> config file to turn it on.
> >>
> >> Signed-off-by: Liang Li <liang.z.li@intel.com>
> > I will defer this to the x86 maintainers.
> 
> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> Looks like the hypervisor side is all present.
> 
> ~Andrew

Is there anyone who can help to make this patch merged? It's pending for a long time.

Liang
Doug Goldstein Feb. 29, 2016, 5:10 p.m. UTC | #7
On 2/23/16 2:57 AM, Li, Liang Z wrote:
>> From: Andrew Cooper [mailto:andrew.cooper3@citrix.com]
>> Sent: Monday, January 11, 2016 5:59 PM
>> To: Wei Liu; Li, Liang Z
>> Cc: ian.campbell@citrix.com; stefano.stabellini@eu.citrix.com;
>> ian.jackson@eu.citrix.com; xen-devel@lists.xen.org; jbeulich@suse.com
>> Subject: Re: [Xen-devel] [PATCH] libxc: Expose the MPX cpuid flag to guest
>>
>> On 11/01/16 09:05, Wei Liu wrote:
>>> On Mon, Jan 11, 2016 at 04:52:10PM +0800, Liang Li wrote:
>>>> If hardware support memory protect externsion, expose this feature to
>>>> guest by default. Users don't have to use a 'cpuid= ' option in
>>>> config file to turn it on.
>>>>
>>>> Signed-off-by: Liang Li <liang.z.li@intel.com>
>>> I will defer this to the x86 maintainers.
>>
>> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
>>
>> Looks like the hypervisor side is all present.
>>
>> ~Andrew
> 
> Is there anyone who can help to make this patch merged? It's pending for a long time.
> 
> Liang
> 

Ping on the behalf of Liang. This patch still applies cleanly.
Ian Jackson March 1, 2016, 6:02 p.m. UTC | #8
Li, Liang Z writes ("RE: [Xen-devel] [PATCH] libxc: Expose the MPX cpuid flag to guest"):
> > Cc: wei.liu2@citrix.com; ian.campbell@citrix.com;
> > stefano.stabellini@eu.citrix.com; ian.jackson@eu.citrix.com; xen-
> > devel@lists.xen.org; jbeulich@suse.com
> > Subject: Re: [Xen-devel] [PATCH] libxc: Expose the MPX cpuid flag to guest
> > 
> > On Mon, Jan 11, 2016 at 04:52:10PM +0800, Liang Li wrote:
> > > If hardware support memory protect externsion, expose this feature
> > 
> > extension
> 
> Thanks!

Sorry for the delay.  I have queued this patch and assuming that my
build test passes it will be pushed shortly.

Ian.
diff mbox

Patch

diff --git a/tools/libxc/xc_cpufeature.h b/tools/libxc/xc_cpufeature.h
index c3ddc80..cda9305 100644
--- a/tools/libxc/xc_cpufeature.h
+++ b/tools/libxc/xc_cpufeature.h
@@ -137,6 +137,7 @@ 
 #define X86_FEATURE_ERMS         9 /* Enhanced REP MOVSB/STOSB */
 #define X86_FEATURE_INVPCID     10 /* Invalidate Process Context ID */
 #define X86_FEATURE_RTM         11 /* Restricted Transactional Memory */
+#define X86_FEATURE_MPX         14 /* Memory Protection Extensions */
 #define X86_FEATURE_RDSEED      18 /* RDSEED instruction */
 #define X86_FEATURE_ADX         19 /* ADCX, ADOX instructions */
 #define X86_FEATURE_SMAP        20 /* Supervisor Mode Access Protection */
diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c
index 8882c01..4c88db4 100644
--- a/tools/libxc/xc_cpuid_x86.c
+++ b/tools/libxc/xc_cpuid_x86.c
@@ -423,6 +423,8 @@  static void xc_cpuid_hvm_policy(xc_interface *xch,
                         bitmaskof(X86_FEATURE_ERMS) |
                         bitmaskof(X86_FEATURE_INVPCID) |
                         bitmaskof(X86_FEATURE_RTM)  |
+                        ((info->xfeature_mask != 0) ?
+                        bitmaskof(X86_FEATURE_MPX) : 0)  |
                         bitmaskof(X86_FEATURE_RDSEED)  |
                         bitmaskof(X86_FEATURE_ADX)  |
                         bitmaskof(X86_FEATURE_SMAP) |
@@ -538,6 +540,7 @@  static void xc_cpuid_pv_policy(xc_interface *xch,
 
     case 0x00000007:
         if ( input[1] == 0 )
+        {
             regs[1] &= (bitmaskof(X86_FEATURE_BMI1) |
                         bitmaskof(X86_FEATURE_HLE)  |
                         bitmaskof(X86_FEATURE_AVX2) |
@@ -547,6 +550,9 @@  static void xc_cpuid_pv_policy(xc_interface *xch,
                         bitmaskof(X86_FEATURE_RDSEED)  |
                         bitmaskof(X86_FEATURE_ADX)  |
                         bitmaskof(X86_FEATURE_FSGSBASE));
+            if ( info->xfeature_mask == 0 )
+                clear_bit(X86_FEATURE_MPX, regs[1]);
+        }
         else
             regs[1] = 0;
         regs[0] = regs[2] = regs[3] = 0;