diff mbox series

[BlueZ] test-runner: Allow to use host CPU on demand

Message ID 20250214064527.159950-1-arkadiusz.bokowy@gmail.com
State New
Headers show
Series [BlueZ] test-runner: Allow to use host CPU on demand | expand

Commit Message

Arkadiusz Bokowy Feb. 14, 2025, 6:45 a.m. UTC
The "-cpu host" option for QEMU can not be enabled by default because
our CI system does not have a support for KVM. In order to allow to run
the test-runner on systems where binaries built on the host are not
compatible with QEMU CPU variant, the "--qemu-host-cpu" option will add
the "-cpu host" to the QEMU command line arguments.
---
 tools/test-runner.c | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)
diff mbox series

Patch

diff --git a/tools/test-runner.c b/tools/test-runner.c
index 48e114174..1d770330c 100644
--- a/tools/test-runner.c
+++ b/tools/test-runner.c
@@ -52,6 +52,7 @@  static bool start_dbus_session;
 static bool start_daemon = false;
 static bool start_emulator = false;
 static bool start_monitor = false;
+static bool qemu_host_cpu = false;
 static int num_devs = 0;
 static const char *qemu_binary = NULL;
 static const char *kernel_image = NULL;
@@ -211,7 +212,6 @@  static char *const qemu_argv[] = {
 	"-monitor", "none",
 	"-display", "none",
 	"-machine", "type=q35,accel=kvm:tcg",
-	"-cpu", "host",
 	"-m", "256M",
 	"-net", "none",
 	"-no-reboot",
@@ -280,7 +280,7 @@  static void start_qemu(void)
 				testargs);
 
 	argv = alloca(sizeof(qemu_argv) +
-				(sizeof(char *) * (4 + (num_devs * 4))));
+				(sizeof(char *) * (6 + (num_devs * 4))));
 	memcpy(argv, qemu_argv, sizeof(qemu_argv));
 
 	pos = (sizeof(qemu_argv) / sizeof(char *)) - 1;
@@ -292,6 +292,11 @@  static void start_qemu(void)
 	}
 	argv[0] = (char *) qemu_binary;
 
+	if (qemu_host_cpu) {
+		argv[pos++] = "-cpu";
+		argv[pos++] = "host";
+	}
+
 	argv[pos++] = "-kernel";
 	argv[pos++] = (char *) kernel_image;
 	argv[pos++] = "-append";
@@ -1171,6 +1176,7 @@  static void usage(void)
 		"\t-A, --audio[=path]     Start audio server\n"
 		"\t-u, --unix [path]      Provide serial device\n"
 		"\t-q, --qemu <path>      QEMU binary\n"
+		"\t-H, --qemu-host-cpu    Use host CPU (requires KVM support)\n"
 		"\t-k, --kernel <image>   Kernel image (bzImage)\n"
 		"\t-h, --help             Show help options\n");
 }
@@ -1185,6 +1191,7 @@  static const struct option main_options[] = {
 	{ "emulator", no_argument,      NULL, 'l' },
 	{ "monitor", no_argument,       NULL, 'm' },
 	{ "qemu",    required_argument, NULL, 'q' },
+	{ "qemu-host-cpu", no_argument, NULL, 'H' },
 	{ "kernel",  required_argument, NULL, 'k' },
 	{ "audio",   optional_argument, NULL, 'A' },
 	{ "version", no_argument,       NULL, 'v' },
@@ -1206,7 +1213,7 @@  int main(int argc, char *argv[])
 	for (;;) {
 		int opt;
 
-		opt = getopt_long(argc, argv, "aubdslmq:k:A::vh", main_options,
+		opt = getopt_long(argc, argv, "aubdslmq:Hk:A::vh", main_options,
 								NULL);
 		if (opt < 0)
 			break;
@@ -1237,6 +1244,9 @@  int main(int argc, char *argv[])
 		case 'q':
 			qemu_binary = optarg;
 			break;
+		case 'H':
+			qemu_host_cpu = true;
+			break;
 		case 'k':
 			kernel_image = optarg;
 			break;