diff options
author | Jan Beulich <jbeulich@novell.com> | 2011-04-05 13:02:00 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2011-04-05 13:02:00 +0100 |
commit | 6b063a4a6f44245a727aa04ef76408b2e00af9c7 (patch) | |
tree | fd06cd209b596a7752d9f608e11026b6fc5807d0 /xen/include/asm-x86/domain.h | |
parent | 9a70856bb28bb8c9b1d37fb8a005447ac77b0619 (diff) | |
download | xen-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.h | 55 |
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; |