[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[RFC 01/10] introduce hyperlaunch kconfig and core



From: Christopher Clark <christopher.w.clark@xxxxxxxxx>

Add a CONFIG_HYPERLAUNCH to allow enabling/disabling the hyperlaunch code
paths. Introduce an initial use of the hyperlaunch_enabled variable to suppress
the warning about multiple initrd candidates when multiboot modules are
detected when the hyperlaunch boolean is true.

Added to common code since this option will apply to all architectures.

Signed-off-by: Christopher Clark <christopher.clark@xxxxxxxxxx>
Signed-off-by: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>
---
 xen/arch/x86/setup.c    |  4 +++-
 xen/common/Kconfig      | 10 ++++++++++
 xen/common/Makefile     |  1 +
 xen/common/setup.c      |  8 ++++++++
 xen/include/xen/setup.h | 14 ++++++++++++++
 5 files changed, 36 insertions(+), 1 deletion(-)
 create mode 100644 xen/common/setup.c
 create mode 100644 xen/include/xen/setup.h

diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c
index f40a9fe5d3..190d7aefb5 100644
--- a/xen/arch/x86/setup.c
+++ b/xen/arch/x86/setup.c
@@ -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);
diff --git a/xen/common/Kconfig b/xen/common/Kconfig
index db687b1785..5e6aad644e 100644
--- a/xen/common/Kconfig
+++ b/xen/common/Kconfig
@@ -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
diff --git a/xen/common/Makefile b/xen/common/Makefile
index 141d7d40d3..a6337e065a 100644
--- a/xen/common/Makefile
+++ b/xen/common/Makefile
@@ -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
diff --git a/xen/common/setup.c b/xen/common/setup.c
new file mode 100644
index 0000000000..e18ea14fe0
--- /dev/null
+++ b/xen/common/setup.c
@@ -0,0 +1,8 @@
+#include <xen/types.h>
+#include <xen/init.h>
+
+#ifdef CONFIG_HYPERLAUNCH
+
+bool __initdata hyperlaunch_enabled;
+
+#endif
diff --git a/xen/include/xen/setup.h b/xen/include/xen/setup.h
new file mode 100644
index 0000000000..6fbe87860e
--- /dev/null
+++ b/xen/include/xen/setup.h
@@ -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 */
-- 
2.20.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.