qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Auger <eric.auger@redhat.com>
To: eric.auger.pro@gmail.com, eric.auger@redhat.com, maz@kernel.org,
	kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org,
	qemu-devel@nongnu.org, qemu-arm@nongnu.org
Cc: peter.maydell@linaro.org, drjones@redhat.com,
	andre.przywara@arm.com, thuth@redhat.com, yuzenghui@huawei.com,
	alexandru.elisei@arm.com
Subject: [kvm-unit-tests PATCH v6 11/13] arm/run: Allow Migration tests
Date: Wed, 11 Mar 2020 14:51:15 +0100	[thread overview]
Message-ID: <20200311135117.9366-12-eric.auger@redhat.com> (raw)
In-Reply-To: <20200311135117.9366-1-eric.auger@redhat.com>

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 <eric.auger@redhat.com>

---

v3 -> v4:
- remove space around Elvis operator
- rename ___getchar into do_getchar

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..343e108 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 do_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 = do_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



  parent reply	other threads:[~2020-03-11 13:59 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-11 13:51 [kvm-unit-tests PATCH v6 00/13] arm/arm64: Add ITS tests Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 01/13] libcflat: Add other size defines Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 02/13] page_alloc: Introduce get_order() Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 03/13] arm/arm64: gic: Introduce setup_irq() helper Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 04/13] arm/arm64: gicv3: Add some re-distributor defines Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 05/13] arm/arm64: gicv3: Set the LPI config and pending tables Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 06/13] arm/arm64: ITS: Introspection tests Eric Auger
2020-03-11 14:33   ` Andrew Jones
2020-03-11 14:50     ` Auger Eric
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 07/13] arm/arm64: ITS: its_enable_defaults Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 08/13] arm/arm64: ITS: Device and collection Initialization Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 09/13] arm/arm64: ITS: Commands Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 10/13] arm/arm64: ITS: INT functional tests Eric Auger
2020-03-13  2:06   ` Zenghui Yu
2020-03-13  8:17     ` Auger Eric
2020-03-11 13:51 ` Eric Auger [this message]
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 12/13] arm/arm64: ITS: migration tests Eric Auger
2020-03-11 13:51 ` [kvm-unit-tests PATCH v6 13/13] arm/arm64: ITS: pending table migration test Eric Auger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200311135117.9366-12-eric.auger@redhat.com \
    --to=eric.auger@redhat.com \
    --cc=alexandru.elisei@arm.com \
    --cc=andre.przywara@arm.com \
    --cc=drjones@redhat.com \
    --cc=eric.auger.pro@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=maz@kernel.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=yuzenghui@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).