diff options
author | Jan Beulich <jbeulich@novell.com> | 2011-04-05 13:02:57 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2011-04-05 13:02:57 +0100 |
commit | 1dd3a56b4338962b953545ed16f4de1d1a394189 (patch) | |
tree | 5af2df0c8c1ae58f372f88dac6f19ff1a41f2b29 /xen/include/asm-x86/domain.h | |
parent | 6b063a4a6f44245a727aa04ef76408b2e00af9c7 (diff) | |
download | xen-1dd3a56b4338962b953545ed16f4de1d1a394189.tar.gz xen-1dd3a56b4338962b953545ed16f4de1d1a394189.tar.bz2 xen-1dd3a56b4338962b953545ed16f4de1d1a394189.zip |
x86: split struct domain
This is accomplished by converting a couple of embedded arrays (in one
case a structure containing an array) into separately allocated
pointers, and (just as for struct arch_vcpu in a prior patch)
overlaying some PV-only fields with HVM-only ones.
One particularly noteworthy change in the opposite direction is that
of PITState - this field so far lived in the HVM-only portion, but is
being used by PV guests too, and hence needed to be moved out of
struct hvm_domain.
The change to XENMEM_set_memory_map (and hence libxl__build_pre() and
the movement of the E820 related pieces to struct pv_domain) are
subject to a positive response to a query sent to xen-devel regarding
the need for this to happen for HVM guests (see
http://lists.xensource.com/archives/html/xen-devel/2011-03/msg01848.html).
The protection of arch.hvm_domain.irq.dpci accesses by is_hvm_domain()
is subject to confirmation that the field is used for HVM guests only
(see
http://lists.xensource.com/archives/html/xen-devel/2011-03/msg02004.html).
In the absence of any reply to these queries, and given the early
state of 4.2 development, I think it should be acceptable to take the
risk of having to later undo/redo some of this.
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 | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h index 792e80f8ad..787aaa30ab 100644 --- a/xen/include/asm-x86/domain.h +++ b/xen/include/asm-x86/domain.h @@ -231,6 +231,17 @@ struct time_scale { u32 mul_frac; }; +struct pv_domain +{ + /* Shared page for notifying that explicit PIRQ EOI is required. */ + unsigned long *pirq_eoi_map; + unsigned long pirq_eoi_map_mfn; + + /* Pseudophysical e820 map (XENMEM_memory_map). */ + struct e820entry e820[3]; + unsigned int nr_e820; +}; + struct arch_domain { #ifdef CONFIG_X86_64 @@ -253,7 +264,11 @@ struct arch_domain uint32_t pci_cf8; struct list_head pdev_list; - struct hvm_domain hvm_domain; + + union { + struct pv_domain pv_domain; + struct hvm_domain hvm_domain; + }; struct paging_domain paging; struct p2m_domain *p2m; @@ -265,14 +280,6 @@ struct arch_domain int *emuirq_pirq; int *pirq_emuirq; - /* Shared page for notifying that explicit PIRQ EOI is required. */ - unsigned long *pirq_eoi_map; - unsigned long pirq_eoi_map_mfn; - - /* Pseudophysical e820 map (XENMEM_memory_map). */ - struct e820entry e820[3]; - unsigned int nr_e820; - /* Maximum physical-address bitwidth supported by this guest. */ unsigned int physaddr_bitsize; @@ -294,7 +301,9 @@ struct arch_domain } relmem; struct page_list_head relmem_list; - cpuid_input_t cpuids[MAX_CPUID_INPUT]; + cpuid_input_t *cpuids; + + struct PITState vpit; /* For Guest vMCA handling */ struct domain_mca_msrs *vmca_msrs; |