]> xenbits.xensource.com Git - people/royger/xen.git/commitdiff
x86: put some code in arch_set_info_guest under CONFIG_PV
authorWei Liu <wei.liu2@citrix.com>
Fri, 19 Oct 2018 14:28:28 +0000 (15:28 +0100)
committerWei Liu <wei.liu2@citrix.com>
Sun, 28 Oct 2018 20:01:58 +0000 (20:01 +0000)
This function is called by both PV and HVM. Unfortunately the code is
very convoluted. We can reason that code between the call to
hvm_set_info_guest and out label is PV only. Put that portion under
CONFIG_PV.

Signed-off-by: Wei Liu <wei.liu2@citrix.com>
Acked-by: Jan Beulich <jbeulich@suse.com>
xen/arch/x86/domain.c

index 6f19fbfe690f88c2cd0fe0322956a237cf0d4cc9..d63b71c9f9bd180ce87b61db38b124915e9c601d 100644 (file)
@@ -791,11 +791,15 @@ int arch_set_info_guest(
     struct vcpu *v, vcpu_guest_context_u c)
 {
     struct domain *d = v->domain;
+    unsigned int i;
+    unsigned long flags;
+    bool compat;
+#ifdef CONFIG_PV
     unsigned long cr3_gfn;
     struct page_info *cr3_page;
-    unsigned long flags, cr4;
-    unsigned int i;
-    int rc = 0, compat;
+    unsigned long cr4;
+    int rc = 0;
+#endif
 
     /* The context is a compat-mode one if the target domain is compat-mode;
      * we expect the tools to DTRT even in compat-mode callers. */
@@ -889,6 +893,7 @@ int arch_set_info_guest(
         goto out;
     }
 
+#ifdef CONFIG_PV
     /* IOPL privileges are virtualised. */
     v->arch.pv.iopl = v->arch.user_regs.eflags & X86_EFLAGS_IOPL;
     v->arch.user_regs.eflags &= ~X86_EFLAGS_IOPL;
@@ -1154,6 +1159,7 @@ int arch_set_info_guest(
         paging_update_paging_modes(v);
 
     update_cr3(v);
+#endif /* CONFIG_PV */
 
  out:
     if ( flags & VGCF_online )