# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1273742745 -3600
# Node ID 8c7215e808647704b3616a84a53a4d11f0451a20
# Parent a1e9b000707818c20deb8db981d581d8f3386823
Even 'dummy' domains (e.g., dom_xen a.k.a. DOMID_XEN) must have valid I/O caps.
Ensure the rangesets are always initialised. Certain (privileged)
invocations of hypercalls such as mmu_update can end up interrogating
these special domains for possible I/O capabilities.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
xen-unstable changeset: 21373:1ec412805622
xen-unstable date: Thu May 13 10:09:02 2010 +0100
---
xen/common/domain.c | 16 ++++++++--------
1 files changed, 8 insertions(+), 8 deletions(-)
diff -r a1e9b0007078 -r 8c7215e80864 xen/common/domain.c
--- a/xen/common/domain.c Thu May 13 10:23:22 2010 +0100
+++ b/xen/common/domain.c Thu May 13 10:25:45 2010 +0100
@@ -245,11 +245,16 @@ struct domain *domain_create(
d->disable_migrate = 1;
}
+ rangeset_domain_initialise(d);
+ init_status |= INIT_rangeset;
+
+ d->iomem_caps = rangeset_new(d, "I/O Memory", RANGESETF_prettyprint_hex);
+ d->irq_caps = rangeset_new(d, "Interrupts", 0);
+ if ( (d->iomem_caps == NULL) || (d->irq_caps == NULL) )
+ goto fail;
+
if ( domcr_flags & DOMCRF_dummy )
return d;
-
- rangeset_domain_initialise(d);
- init_status |= INIT_rangeset;
if ( !is_idle_domain(d) )
{
@@ -284,11 +289,6 @@ struct domain *domain_create(
if ( arch_domain_create(d, domcr_flags) != 0 )
goto fail;
init_status |= INIT_arch;
-
- d->iomem_caps = rangeset_new(d, "I/O Memory", RANGESETF_prettyprint_hex);
- d->irq_caps = rangeset_new(d, "Interrupts", 0);
- if ( (d->iomem_caps == NULL) || (d->irq_caps == NULL) )
- goto fail;
if ( sched_init_domain(d) != 0 )
goto fail;
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|