[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[kvm-unit-tests PATCH v3 12/14] arm/run: Allow Migration tests
From: |
Eric Auger |
Subject: |
[kvm-unit-tests PATCH v3 12/14] arm/run: Allow Migration tests |
Date: |
Tue, 28 Jan 2020 11:34:57 +0100 |
Let's link getchar.o to use puts and getchar from the
tests.
Then allow tests belonging to the migration group to
trigger the migration from the test code by putting
"migrate" into the uart. Then the code can wait for the
migration completion by using getchar().
The __getchar implement is minimalist as it just reads the
data register. It is just meant to read the single character
emitted at the end of the migration by the runner script.
It is not meant to read more data (FIFOs are not enabled).
Signed-off-by: Eric Auger <address@hidden>
---
v2 -> v3:
- take the lock
- assert if more than 16 chars
- removed Thomas' R-b
---
arm/Makefile.common | 2 +-
arm/run | 2 +-
lib/arm/io.c | 28 ++++++++++++++++++++++++++++
3 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/arm/Makefile.common b/arm/Makefile.common
index b8988f2..a123e85 100644
--- a/arm/Makefile.common
+++ b/arm/Makefile.common
@@ -32,7 +32,7 @@ CFLAGS += -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt -I lib
asm-offsets = lib/$(ARCH)/asm-offsets.h
include $(SRCDIR)/scripts/asm-offsets.mak
-cflatobjs += lib/util.o
+cflatobjs += lib/util.o lib/getchar.o
cflatobjs += lib/alloc_phys.o
cflatobjs += lib/alloc_page.o
cflatobjs += lib/vmalloc.o
diff --git a/arm/run b/arm/run
index 277db9b..a390ca5 100755
--- a/arm/run
+++ b/arm/run
@@ -61,6 +61,6 @@ fi
M+=",accel=$ACCEL"
command="$qemu -nodefaults $M -cpu $processor $chr_testdev $pci_testdev"
command+=" -display none -serial stdio -kernel"
-command="$(timeout_cmd) $command"
+command="$(migration_cmd) $(timeout_cmd) $command"
run_qemu $command "$@"
diff --git a/lib/arm/io.c b/lib/arm/io.c
index 99fd315..d8e7745 100644
--- a/lib/arm/io.c
+++ b/lib/arm/io.c
@@ -87,6 +87,34 @@ void puts(const char *s)
spin_unlock(&uart_lock);
}
+static int ____getchar(void)
+{
+ int c;
+
+ spin_lock(&uart_lock);
+ c = readb(uart0_base);
+ spin_unlock(&uart_lock);
+
+ return c ? : -1;
+}
+
+/*
+ * Minimalist implementation for migration completion detection.
+ * Without FIFOs enabled on the QEMU UART device we just read
+ * the data register: we cannot read more than 16 characters.
+ */
+int __getchar(void)
+{
+ int c = ____getchar();
+ static int count;
+
+ if (c != -1)
+ ++count;
+
+ assert(count < 16);
+
+ return c;
+}
/*
* Defining halt to take 'code' as an argument guarantees that it will
--
2.20.1
- [kvm-unit-tests PATCH v3 02/14] arm: gic: Provide per-IRQ helper functions, (continued)
- [kvm-unit-tests PATCH v3 02/14] arm: gic: Provide per-IRQ helper functions, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 04/14] arm/arm64: gicv3: Add some re-distributor defines, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 03/14] arm/arm64: gic: Introduce setup_irq() helper, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 05/14] arm/arm64: ITS: Introspection tests, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 06/14] arm/arm64: gicv3: Set the LPI config and pending tables, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 08/14] arm/arm64: ITS: its_enable_defaults, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 07/14] arm/arm64: gicv3: Enable/Disable LPIs at re-distributor level, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 09/14] arm/arm64: ITS: Device and collection Initialization, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 10/14] arm/arm64: ITS: commands, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 11/14] arm/arm64: ITS: INT functional tests, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 12/14] arm/run: Allow Migration tests,
Eric Auger <=
- [kvm-unit-tests PATCH v3 13/14] arm/arm64: ITS: migration tests, Eric Auger, 2020/01/28
- [kvm-unit-tests PATCH v3 14/14] arm/arm64: ITS: pending table migration test, Eric Auger, 2020/01/28