From nobody Fri Nov 14 00:46:50 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1583749919; cv=none; d=zohomail.com; s=zohoarc; b=EumK/LM/fT3N6OJJUR+XpVgBJbIElBYLc4aYuOqGXyuWFM35iGmnz2ouyOEvJ3HrJqvUaKPSJmGA8yepPbQczRxrOUyjSWDXgvR2P/XjyXP0r/3RULa+c9F84PU2H2kTOXdoFkfagtuTrTEt7k4fzI6SLsgpWQ7GZg2Z9pC90pg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1583749919; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CnmHcvAzlYerfEhzxJ/5Dt9qcTxe4wP+0MOD1yMQ9wI=; b=apEA7+tH22fAr1PO1yPGzJPNNLXigUziRZaagrllzRWdj3rQBLB72/2Ku3ej2iLFB4HDGn0IH7j5J/Dnsh/br330tZGVImyRABP67gt2mDq0wzNNP77VzdJKG4fvByaKGaFgXf2CNURUTD1gSLoNweiHQWAVoDtA5fjKMZ2gYT8= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1583749919965254.92472982927518; Mon, 9 Mar 2020 03:31:59 -0700 (PDT) Received: from localhost ([::1]:40372 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jBFhW-0002dW-QP for importer@patchew.org; Mon, 09 Mar 2020 06:31:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:38038) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jBFbB-0000j5-AH for qemu-devel@nongnu.org; Mon, 09 Mar 2020 06:25:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jBFb9-0002Sz-Qz for qemu-devel@nongnu.org; Mon, 09 Mar 2020 06:25:25 -0400 Received: from us-smtp-2.mimecast.com ([207.211.31.81]:23435 helo=us-smtp-delivery-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jBFb9-0002SL-Ld for qemu-devel@nongnu.org; Mon, 09 Mar 2020 06:25:23 -0400 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-391-HvVDyMhrOFO0eT-xP3RH8w-1; Mon, 09 Mar 2020 06:25:21 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id BD5E5800D4E; Mon, 9 Mar 2020 10:25:19 +0000 (UTC) Received: from laptop.redhat.com (ovpn-116-59.ams2.redhat.com [10.36.116.59]) by smtp.corp.redhat.com (Postfix) with ESMTP id D176887B08; Mon, 9 Mar 2020 10:25:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583749523; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=CnmHcvAzlYerfEhzxJ/5Dt9qcTxe4wP+0MOD1yMQ9wI=; b=JAtT9NxJXHSjLzenZw1cq1noJwUvW1cJxfXOHicr2HOU2qvpYSq5tYgdMQB3Kzcyx+A16X eojx0k72tqUAN9nz9oKb3dmvpzxNNL1MDzTYdlZFhj/msr6SjAlscJvWoqafX4y6kbacnn 6mUcE3fZXMCOTrOGfqCXg/8TaNcr2do= X-MC-Unique: HvVDyMhrOFO0eT-xP3RH8w-1 From: Eric Auger 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 Subject: [kvm-unit-tests PATCH v4 11/13] arm/run: Allow Migration tests Date: Mon, 9 Mar 2020 11:24:18 +0100 Message-Id: <20200309102420.24498-12-eric.auger@redhat.com> In-Reply-To: <20200309102420.24498-1-eric.auger@redhat.com> References: <20200309102420.24498-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 207.211.31.81 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: peter.maydell@linaro.org, drjones@redhat.com, andre.przywara@arm.com, thuth@redhat.com, yuzenghui@huawei.com, alexandru.elisei@arm.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" 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 --- 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 +=3D -I $(SRCDIR)/lib -I $(SRCDIR)/lib/libfdt -I l= ib asm-offsets =3D lib/$(ARCH)/asm-offsets.h include $(SRCDIR)/scripts/asm-offsets.mak =20 -cflatobjs +=3D lib/util.o +cflatobjs +=3D lib/util.o lib/getchar.o cflatobjs +=3D lib/alloc_phys.o cflatobjs +=3D lib/alloc_page.o cflatobjs +=3D 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+=3D",accel=3D$ACCEL" command=3D"$qemu -nodefaults $M -cpu $processor $chr_testdev $pci_testdev" command+=3D" -display none -serial stdio -kernel" -command=3D"$(timeout_cmd) $command" +command=3D"$(migration_cmd) $(timeout_cmd) $command" =20 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); } =20 +static int do_getchar(void) +{ + int c; + + spin_lock(&uart_lock); + c =3D 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 =3D do_getchar(); + static int count; + + if (c !=3D -1) + ++count; + + assert(count < 16); + + return c; +} =20 /* * Defining halt to take 'code' as an argument guarantees that it will --=20 2.20.1