[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 |