@@ -26,6 +26,7 @@
#include <xen/nodemask.h>
#include <xen/virtual_region.h>
#include <xen/watchdog.h>
+#include <xen/setup.h>
#include <public/version.h>
#ifdef CONFIG_COMPAT
#include <compat/platform.h>
@@ -1891,7 +1892,8 @@ void __init noreturn __start_xen(unsigned long mbi_p)
cpu_has_nx ? "" : "not ");
initrdidx = find_first_bit(module_map, mbi->mods_count);
- if ( bitmap_weight(module_map, mbi->mods_count) > 1 )
+ if ( !hyperlaunch_enabled &&
+ bitmap_weight(module_map, mbi->mods_count) > 1 )
printk(XENLOG_WARNING
"Multiple initrd candidates, picking module #%u\n",
initrdidx);
@@ -331,6 +331,16 @@ config ARGO
If unsure, say N.
+config HYPERLAUNCH
+ bool "Hyperlaunch support (UNSUPPORTED)" if UNSUPPORTED
+ ---help---
+ Enables launch of multiple VMs at host boot as an alternative
+ method of starting a Xen system.
+
+ This feature is currently experimental.
+
+ If unsure, say N.
+
source "common/sched/Kconfig"
config CRYPTO
@@ -35,6 +35,7 @@ obj-y += rangeset.o
obj-y += radix-tree.o
obj-y += rcupdate.o
obj-y += rwlock.o
+obj-y += setup.o
obj-y += shutdown.o
obj-y += softirq.o
obj-y += smp.o
new file mode 100644
@@ -0,0 +1,8 @@
+#include <xen/types.h>
+#include <xen/init.h>
+
+#ifdef CONFIG_HYPERLAUNCH
+
+bool __initdata hyperlaunch_enabled;
+
+#endif
new file mode 100644
@@ -0,0 +1,14 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+
+#ifndef XEN_SETUP_H
+#define XEN_SETUP_H
+
+#include <asm/setup.h>
+
+#ifdef CONFIG_HYPERLAUNCH
+extern bool hyperlaunch_enabled;
+#else
+#define hyperlaunch_enabled false
+#endif
+
+#endif /* XEN_SETUP_H */