diff mbox

[V9,1/5] x86/hvm: pkeys, disable pkeys for guests in non-paging mode

Message ID 1454508725-22786-2-git-send-email-huaitong.han@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Huaitong Han Feb. 3, 2016, 2:12 p.m. UTC
This patch disables pkeys for guest in non-paging mode, However XEN always uses
paging mode to emulate guest non-paging mode, To emulate this behavior, pkeys
needs to be manually disabled when guest switches to non-paging mode.

Signed-off-by: Huaitong Han <huaitong.han@intel.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
 xen/arch/x86/hvm/vmx/vmx.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

Comments

Jan Beulich Feb. 3, 2016, 3:19 p.m. UTC | #1
>>> On 03.02.16 at 15:12, <huaitong.han@intel.com> wrote:
> This patch disables pkeys for guest in non-paging mode, However XEN always 
> uses
> paging mode to emulate guest non-paging mode, To emulate this behavior, pkeys
> needs to be manually disabled when guest switches to non-paging mode.
> 
> Signed-off-by: Huaitong Han <huaitong.han@intel.com>
> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

So I had been about to commit the first four patches of this
series earlier today, when I noticed the missing VMX maintainers'
ack here. You not Cc-ing them of course doesn't help progress.

Jan
Huaitong Han Feb. 3, 2016, 3:54 p.m. UTC | #2
On Wed, 2016-02-03 at 08:19 -0700, Jan Beulich wrote:
> > > > On 03.02.16 at 15:12, <huaitong.han@intel.com> wrote:
> > This patch disables pkeys for guest in non-paging mode, However XEN
> > always 
> > uses
> > paging mode to emulate guest non-paging mode, To emulate this
> > behavior, pkeys
> > needs to be manually disabled when guest switches to non-paging
> > mode.
> > 
> > Signed-off-by: Huaitong Han <huaitong.han@intel.com>
> > Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
> 
> So I had been about to commit the first four patches of this
> series earlier today, when I noticed the missing VMX maintainers'
> ack here. You not Cc-ing them of course doesn't help progress.
The first five version patches does Cc VMX maintainers, the patch is so
simple that it does receive no comments. Because the CC-list is too
long and it has reviewed-by Andrew, so...I should always Cc them.
> 
> Jan
>
Jan Beulich Feb. 3, 2016, 4:01 p.m. UTC | #3
>>> On 03.02.16 at 16:54, <huaitong.han@intel.com> wrote:
> On Wed, 2016-02-03 at 08:19 -0700, Jan Beulich wrote:
>> > > > On 03.02.16 at 15:12, <huaitong.han@intel.com> wrote:
>> > This patch disables pkeys for guest in non-paging mode, However XEN
>> > always 
>> > uses
>> > paging mode to emulate guest non-paging mode, To emulate this
>> > behavior, pkeys
>> > needs to be manually disabled when guest switches to non-paging
>> > mode.
>> > 
>> > Signed-off-by: Huaitong Han <huaitong.han@intel.com>
>> > Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
>> 
>> So I had been about to commit the first four patches of this
>> series earlier today, when I noticed the missing VMX maintainers'
>> ack here. You not Cc-ing them of course doesn't help progress.
> The first five version patches does Cc VMX maintainers, the patch is so
> simple that it does receive no comments. Because the CC-list is too
> long and it has reviewed-by Andrew, so...I should always Cc them.

Part of your problem is that you Cc everyone on every patch.
Instead you should vary the Cc lists depending on the code each
individual patch touches.

As to "so simple" - I don't think you can waive the need for an
ack on that basis (at best it would be the committer to decide
we can do without).

Jan
Tian, Kevin Feb. 4, 2016, 4:57 a.m. UTC | #4
> From: Huaitong Han
> Sent: Wednesday, February 03, 2016 10:12 PM
> 
> This patch disables pkeys for guest in non-paging mode, However XEN always uses
> paging mode to emulate guest non-paging mode, To emulate this behavior, pkeys
> needs to be manually disabled when guest switches to non-paging mode.
> 
> Signed-off-by: Huaitong Han <huaitong.han@intel.com>
> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>

Acked-by: Kevin Tian <kevin.tian@intel.com>
diff mbox

Patch

diff --git a/xen/arch/x86/hvm/vmx/vmx.c b/xen/arch/x86/hvm/vmx/vmx.c
index 04dde83..a0d51cb 100644
--- a/xen/arch/x86/hvm/vmx/vmx.c
+++ b/xen/arch/x86/hvm/vmx/vmx.c
@@ -1368,12 +1368,13 @@  static void vmx_update_guest_cr(struct vcpu *v, unsigned int cr)
         if ( !hvm_paging_enabled(v) )
         {
             /*
-             * SMEP/SMAP is disabled if CPU is in non-paging mode in hardware.
-             * However Xen always uses paging mode to emulate guest non-paging
-             * mode. To emulate this behavior, SMEP/SMAP needs to be manually
-             * disabled when guest VCPU is in non-paging mode.
+             * SMEP/SMAP/PKU is disabled if CPU is in non-paging mode in
+             * hardware. However Xen always uses paging mode to emulate guest
+             * non-paging mode. To emulate this behavior, SMEP/SMAP/PKU needs
+             * to be manually disabled when guest VCPU is in non-paging mode.
              */
-            v->arch.hvm_vcpu.hw_cr[4] &= ~(X86_CR4_SMEP | X86_CR4_SMAP);
+            v->arch.hvm_vcpu.hw_cr[4] &=
+                ~(X86_CR4_SMEP | X86_CR4_SMAP | X86_CR4_PKE);
         }
         __vmwrite(GUEST_CR4, v->arch.hvm_vcpu.hw_cr[4]);
         break;