@@ -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
@@ -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
@@ -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
@@ -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);
@@ -3,9 +3,21 @@
#ifndef __ASM_DOM0LESS_BUILD_H_
#define __ASM_DOM0LESS_BUILD_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_ */
/*
@@ -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