Diff between 4577f50e739fc92dd633e8ac6426144a77844fba and af3d67d799aa08a90522ff77029c8d9e3478acc9

Changed Files

File Additions Deletions Status
tools/test-runner.c +13 -3 modified

Full Patch

diff --git a/tools/test-runner.c b/tools/test-runner.c
index 48e1141..1d77033 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;