arm/dom0less: introduce Kconfig for dom0less feature

Introduce a Kconfig for the dom0less feature, enabled by default,
to be able to choose if the feature should be compiled or not.

Provide static inline stubs when the option is disabled for the
functions externally visible.

Use the new Kconfig to remove dom0less DT binding from the efi-boot.h
code when the Kconfig is not enabled, do the same for
allocate_bank_memory inside domain_build.c that currently is used
only by dom0less-build.c module, but it's kept there provisioning
its usage by dom0 code.

Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
Reviewed-by: Michal Orzel <michal.orzel@amd.com>
This commit is contained in:
Luca Fancellu authored and Julien Grall committed 2023-11-28 19:21:43 +01:00
1 parent d7d80e7a32
commit 18540a313c
6 files changed
+28 -2

No files matched your search

+8
View File
@@ -88,6 +88,14 @@ config GICV2
Driver for the ARM Generic Interrupt Controller v2.
If unsure, say Y
config DOM0LESS_BOOT
bool "Dom0less boot support" if EXPERT
default y
help
Dom0less boot support enables Xen to create and start domU guests during
Xen boot without the need of a control domain (Dom0), which could be
present anyway.
config GICV3
bool "GICv3 driver"
depends on !NEW_VGIC
+1 -1
View File
@@ -16,7 +16,7 @@ obj-y += cpufeature.o
obj-y += decode.o
obj-y += device.o
obj-$(CONFIG_IOREQ_SERVER) += dm.o
obj-y += dom0less-build.init.o
obj-$(CONFIG_DOM0LESS_BOOT) += dom0less-build.init.o
obj-y += domain.o
obj-y += domain_build.init.o
obj-$(CONFIG_ARCH_MAP_DOMAIN_PAGE) += domain_page.o
+2
View File
@@ -416,6 +416,7 @@ static void __init allocate_memory_11(struct domain *d,
}
}
#ifdef CONFIG_DOM0LESS_BOOT
bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
gfn_t sgfn, paddr_t tot_size)
{
@@ -477,6 +478,7 @@ bool __init allocate_bank_memory(struct domain *d, struct kernel_info *kinfo,
return true;
}
#endif
/*
* When PCI passthrough is available we want to keep the
+4
View File
@@ -787,6 +787,7 @@ static int __init handle_module_node(const EFI_LOADED_IMAGE *loaded_image,
return 1;
}
#ifdef CONFIG_DOM0LESS_BOOT
/*
* This function checks for boot modules under the domU guest domain node
* in the DT.
@@ -834,6 +835,7 @@ static int __init handle_dom0less_domain_node(const EFI_LOADED_IMAGE *loaded_ima
return mb_modules_found;
}
#endif
/*
* This function checks for xen domain nodes under the /chosen node for possible
@@ -861,6 +863,7 @@ static int __init efi_check_dt_boot(const EFI_LOADED_IMAGE *loaded_image)
{
int ret;
#ifdef CONFIG_DOM0LESS_BOOT
if ( !fdt_node_check_compatible(fdt_efi, node, "xen,domain") )
{
/* Found a node with compatible xen,domain; handle this node. */
@@ -869,6 +872,7 @@ static int __init efi_check_dt_boot(const EFI_LOADED_IMAGE *loaded_image)
return ERROR_DT_MODULE_DOMU;
}
else
#endif
{
ret = handle_module_node(loaded_image, &dir_handle, node, addr_len,
size_len, false);
+12
View File
@@ -5,9 +5,21 @@
#include <xen/stdbool.h>
#ifdef CONFIG_DOM0LESS_BOOT
void create_domUs(void);
bool is_dom0less_mode(void);
#else /* !CONFIG_DOM0LESS_BOOT */
static inline void create_domUs(void) {}
static inline bool is_dom0less_mode(void)
{
return false;
}
#endif /* CONFIG_DOM0LESS_BOOT */
#endif /* __ASM_DOM0LESS_BUILD_H_ */
/*
+1 -1
View File
@@ -100,7 +100,7 @@ config NUMA
config STATIC_MEMORY
bool "Static Allocation Support (UNSUPPORTED)" if UNSUPPORTED
depends on ARM
depends on DOM0LESS_BOOT
help
Static Allocation refers to system or sub-system(domains) for
which memory areas are pre-defined by configuration using physical
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.