|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [RFC 06/38] x86/hyperlaunch: add hardware domain capability support
Introduce a capability flag to the capabilities property of a domain node in
the hyperlaunch device tree. In the domain construction, use the capability
flag to determine if CDF_hardware should be set on the domain config.
Signed-off-by: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>
---
xen/arch/x86/domain-builder/core.c | 3 ++-
xen/arch/x86/domain-builder/fdt.c | 2 ++
xen/arch/x86/include/asm/boot-domain.h | 1 +
xen/arch/x86/setup.c | 8 ++++++--
4 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/xen/arch/x86/domain-builder/core.c
b/xen/arch/x86/domain-builder/core.c
index 6ab4e6fe5333..8d137ecaaf84 100644
--- a/xen/arch/x86/domain-builder/core.c
+++ b/xen/arch/x86/domain-builder/core.c
@@ -96,7 +96,8 @@ void __init builder_init(struct boot_info *bi)
i = first_boot_module_index(bi, BOOTMOD_UNKNOWN);
bi->mods[i].type = BOOTMOD_KERNEL;
bi->domains[0].kernel = &bi->mods[i];
- bi->domains[0].capabilities |= BUILD_CAPS_CONTROL;
+ bi->domains[0].capabilities |=
+ (BUILD_CAPS_CONTROL | BUILD_CAPS_HARDWARE);
bi->nr_domains = 1;
}
}
diff --git a/xen/arch/x86/domain-builder/fdt.c
b/xen/arch/x86/domain-builder/fdt.c
index d2a7e010ea77..1af58ed4eb86 100644
--- a/xen/arch/x86/domain-builder/fdt.c
+++ b/xen/arch/x86/domain-builder/fdt.c
@@ -267,6 +267,8 @@ static int __init process_domain_node(
printk(" caps: ");
if ( bd->capabilities & BUILD_CAPS_CONTROL )
printk("c");
+ if ( bd->capabilities & BUILD_CAPS_HARDWARE )
+ printk(" h");
printk("\n");
}
}
diff --git a/xen/arch/x86/include/asm/boot-domain.h
b/xen/arch/x86/include/asm/boot-domain.h
index b0f956cd734e..18d144de2fea 100644
--- a/xen/arch/x86/include/asm/boot-domain.h
+++ b/xen/arch/x86/include/asm/boot-domain.h
@@ -15,6 +15,7 @@ struct boot_domain {
#define BUILD_CAPS_NONE (0)
#define BUILD_CAPS_CONTROL (1 << 0)
+#define BUILD_CAPS_HARDWARE (1 << 1)
uint32_t capabilities;
/* On | Off */
diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index 41e46f05a520..760262ea3d4c 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -1035,8 +1035,12 @@ static struct domain *__init create_dom0(struct
boot_info *bi)
XEN_X86_EMU_LAPIC | XEN_X86_EMU_IOAPIC | XEN_X86_EMU_VPCI;
}
- if ( iommu_enabled )
- dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
+ if ( bd->capabilities & BUILD_CAPS_HARDWARE )
+ {
+ create_flags |= CDF_hardware;
+ if ( iommu_enabled )
+ dom0_cfg.flags |= XEN_DOMCTL_CDF_iommu;
+ }
if ( bd->domid == DOMID_INVALID )
/* Create initial domain. Not d0 for pvshim. */
--
2.30.2
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |