From mboxrd@z Thu Jan 1 00:00:00 1970 From: Feng Wu Subject: [PATCH 0/2] x86/HVM: Properly handle SMAP check in certain cases Date: Tue, 8 Jul 2014 07:18:16 +0800 Message-ID: <1404775098-6083-1-git-send-email-feng.wu@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xen.org Cc: Feng Wu , tim@xen.org, linux@eikelenboom.it, jbeulich@suse.com, keir@xen.org List-Id: xen-devel@lists.xenproject.org This patch set fixs a issue found by Sander Eikelenboom. Here is the log when this issue occurs: (d2) Booting from Hard Disk... (d2) Booting from 0000:7c00 (XEN) irq.c:380: Dom1 callback via changed to Direct Vector 0xf3 (XEN) irq.c:380: Dom2 callback via changed to Direct Vector 0xf3 (XEN) Segment register inaccessible for d1v0 (XEN) (If you see this outside of debugging activity, please report to xen-devel@lists.xenproject.org) And here is the Xen call trace: (XEN) [] vmx_get_segment_register+0x4d/0x422 (XEN) [] guest_walk_tables_3_levels+0x189/0x520 (XEN) [] hap_p2m_ga_to_gfn_3_levels+0x158/0x2c2 (XEN) [] hap_gva_to_gfn_3_levels+0x1c/0x1e (XEN) [] paging_gva_to_gfn+0xb8/0xce (XEN) [] __hvm_copy+0x87/0x354 (XEN) [] hvm_copy_to_guest_virt_nofault+0x1e/0x20 (XEN) [] copy_to_user_hvm+0x67/0x87 (XEN) [] update_runstate_area+0x98/0xfb (XEN) [] _update_runstate_area+0x11/0x39 (XEN) [] context_switch+0x10c3/0x10fa (XEN) [] schedule+0x5a8/0x5da (XEN) [] __do_softirq+0x81/0x8c (XEN) [] do_softirq+0x13/0x15 (XEN) [] idle_loop+0x67/0x77 The root cause of this issue is that the we try to get guest's SS register via hvm_get_segment_register() between setting 'current' and reloading the VMCS context for it. Feng Wu (2): x86/hvm: Always do SMAP check when updating runstate_guest(v) x86/hvm: honor guest's option when updating secondary system time for guest xen/arch/x86/domain.c | 21 ++++++++++++++++++--- xen/arch/x86/hvm/hvm.c | 2 ++ xen/arch/x86/mm/guest_walk.c | 41 ++++++++++++++++++++++++++++------------- xen/arch/x86/time.c | 12 +++++++++++- xen/include/asm-x86/domain.h | 24 ++++++++++++++++++++++-- xen/include/public/vcpu.h | 10 ++++++++++ 6 files changed, 91 insertions(+), 19 deletions(-) -- 1.8.3.1