aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/domain.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2011-04-05 13:02:57 +0100
committerJan Beulich <jbeulich@novell.com>2011-04-05 13:02:57 +0100
commit1dd3a56b4338962b953545ed16f4de1d1a394189 (patch)
tree5af2df0c8c1ae58f372f88dac6f19ff1a41f2b29 /xen/include/asm-x86/domain.h
parent6b063a4a6f44245a727aa04ef76408b2e00af9c7 (diff)
downloadxen-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.h29
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;