x86: identify which vcpu's CR4 is being badly modified
authorAndrew Cooper <andrew.cooper3@citrix.com>
Wed, 26 Mar 2014 14:36:13 +0000 (15:36 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 26 Mar 2014 14:36:13 +0000 (15:36 +0100)
When the toolstack is setting vcpu state on behalf of a migrating guest, the
domain/vcpu reference from gdprintk() identifies the toolstack, not the
affected domain.

After this change, the error looks more like:

  (XEN) d0 attempted to change d6v0's CR4 flags 00002660 -> 01876000

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/domain.c

index b48f2dce79f3df97351d05810c5d9d742075c50c..796b7752c4abfa78dd7879e2c860d45b28daa73e 100644 (file)
@@ -651,9 +651,9 @@ unsigned long pv_guest_cr4_fixup(const struct vcpu *v, unsigned long guest_cr4)
         hv_cr4_mask &= ~X86_CR4_OSXSAVE;
 
     if ( (guest_cr4 & hv_cr4_mask) != (hv_cr4 & hv_cr4_mask) )
-        gdprintk(XENLOG_WARNING,
-                 "Attempt to change CR4 flags %08lx -> %08lx\n",
-                 hv_cr4, guest_cr4);
+        printk(XENLOG_G_WARNING
+               "d%d attempted to change %pv's CR4 flags %08lx -> %08lx\n",
+               current->domain->domain_id, v, hv_cr4, guest_cr4);
 
     return (hv_cr4 & hv_cr4_mask) | (guest_cr4 & ~hv_cr4_mask);
 }