aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/domain.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2011-04-05 13:02:00 +0100
committerJan Beulich <jbeulich@novell.com>2011-04-05 13:02:00 +0100
commit6b063a4a6f44245a727aa04ef76408b2e00af9c7 (patch)
treefd06cd209b596a7752d9f608e11026b6fc5807d0 /xen/include/asm-x86/domain.h
parent9a70856bb28bb8c9b1d37fb8a005447ac77b0619 (diff)
downloadxen-6b063a4a6f44245a727aa04ef76408b2e00af9c7.tar.gz
xen-6b063a4a6f44245a727aa04ef76408b2e00af9c7.tar.bz2
xen-6b063a4a6f44245a727aa04ef76408b2e00af9c7.zip
x86: move pv-only members of struct vcpu to struct pv_vcpu
... thus further shrinking overall size of struct arch_vcpu. This has a minor effect on XEN_DOMCTL_{get,set}_ext_vcpucontext - for HVM guests, some meaningless fields will no longer get stored or retrieved: reads will now return zero, and writes are required to be (mostly) zero (the same as was already done on x86-32). Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/include/asm-x86/domain.h')
-rw-r--r--xen/include/asm-x86/domain.h55
1 files changed, 27 insertions, 28 deletions
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index b4fea4953e..792e80f8ad 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -378,11 +378,38 @@ struct pv_vcpu
unsigned long vm_assist;
#ifdef CONFIG_X86_64
+ unsigned long syscall32_callback_eip;
+ unsigned long sysenter_callback_eip;
+ unsigned short syscall32_callback_cs;
+ unsigned short sysenter_callback_cs;
+ bool_t syscall32_disables_events;
+ bool_t sysenter_disables_events;
+
/* Segment base addresses. */
unsigned long fs_base;
unsigned long gs_base_kernel;
unsigned long gs_base_user;
#endif
+
+ /* Bounce information for propagating an exception to guest OS. */
+ struct trap_bounce trap_bounce;
+#ifdef CONFIG_X86_64
+ struct trap_bounce int80_bounce;
+#else
+ struct desc_struct int80_desc;
+#endif
+
+ /* I/O-port access bitmap. */
+ XEN_GUEST_HANDLE(uint8) iobmp; /* Guest kernel vaddr of the bitmap. */
+ unsigned int iobmp_limit; /* Number of ports represented in the bitmap. */
+ unsigned int iopl; /* Current IOPL for this VCPU. */
+
+ /* Current LDT details. */
+ unsigned long shadow_ldt_mapcnt;
+ spinlock_t shadow_ldt_lock;
+
+ /* Guest-specified relocation of vcpu_info. */
+ unsigned long vcpu_info_mfn;
};
struct arch_vcpu
@@ -408,27 +435,6 @@ struct arch_vcpu
void (*ctxt_switch_from) (struct vcpu *);
void (*ctxt_switch_to) (struct vcpu *);
- /* Bounce information for propagating an exception to guest OS. */
- struct trap_bounce trap_bounce;
-
- /* I/O-port access bitmap. */
- XEN_GUEST_HANDLE(uint8) iobmp; /* Guest kernel vaddr of the bitmap. */
- int iobmp_limit; /* Number of ports represented in the bitmap. */
- int iopl; /* Current IOPL for this VCPU. */
-
-#ifdef CONFIG_X86_32
- struct desc_struct int80_desc;
-#endif
-#ifdef CONFIG_X86_64
- struct trap_bounce int80_bounce;
- unsigned long syscall32_callback_eip;
- unsigned long sysenter_callback_eip;
- unsigned short syscall32_callback_cs;
- unsigned short sysenter_callback_cs;
- bool_t syscall32_disables_events;
- bool_t sysenter_disables_events;
-#endif
-
/* Virtual Machine Extensions */
union {
struct pv_vcpu pv_vcpu;
@@ -468,15 +474,8 @@ struct arch_vcpu
*/
uint64_t xcr0_accum;
- /* Current LDT details. */
- unsigned long shadow_ldt_mapcnt;
- spinlock_t shadow_ldt_lock;
-
struct paging_vcpu paging;
- /* Guest-specified relocation of vcpu_info. */
- unsigned long vcpu_info_mfn;
-
#ifdef CONFIG_X86_32
/* map_domain_page() mapping cache. */
struct mapcache_vcpu mapcache;