Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp822578rwe; Wed, 31 Aug 2022 11:37:10 -0700 (PDT) X-Google-Smtp-Source: AA6agR7ihOVd9jsIb8nS5qGbZEoOZLUHh/H9KKn8pVqnrocHk636MLsQrLt0SDOiZdTY1SUyHrU4 X-Received: by 2002:a17:907:78b:b0:741:3d29:33d2 with SMTP id xd11-20020a170907078b00b007413d2933d2mr16912890ejb.103.1661971030688; Wed, 31 Aug 2022 11:37:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661971030; cv=none; d=google.com; s=arc-20160816; b=ZI9MEVLEbDlQoVvJhJ3nEMsnOu8ePQ5R127mKv9rKoVXdyGumujVbDmwqdYuvRLC06 JdgDTz99TPKUY8HbUge/LR3OAZzro2noEdg46btqWjM/VWSu2sd5DnggphLf6y4QSb7V pb3g4bsHqXsU4V7nlBaG46xBd+VvhUD3uL4aQbQAWh3KMz7MZ+E1AxBtkDYH1IBUFX9k Mo+5ufmgKNa9PfoOdkD/B3dmcyCig68ky1MqehmTHfUky/X5FldfN1nkCBQWfHt6SFB4 b9MYixx9PYcVlx3obZ3m/XqhasIcEgSRwGGDp5mPcaugC9jk/eLJbnXMA0TSeXqnlXr3 BUnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=qW0iiSbso74VD7jEkWiiQ2R+7iEUzqbI8GlYTtkIDeM=; b=JZ7AhC7G/X08rk1SCV5OAwrlLY8ES06RXUDZrBAHeHBfwlEPS83F3jcmXdQu9Vkyo3 JKwsC3ayR8ZrfkgWnsqo2nDIYz/foxvIFBY+bqbPz6DXzVY16b7NOc+RsYTEbHN7t4WW OWGRiSgvX2sLZ7PMB1Oto7B02Tsp6n/unzu2P1ZBGO1VB0hlZN9rluhzSyfC6Q/bxdsH sHn10K7hshPdGCk3PbUmm+W+4MEPKBoMC1R4E7CoR1FgN6rSS1SRpatrvoVXwXjtcaBM BFujhLSacEpxxDlmqq27uWbl4Uu/g6Lq7tQFZpwUkbTvzJ1Xxk+idzzWrIN9hKPwtRXx lQPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=esKn2NT7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gb15-20020a170907960f00b007418e2229c7si8262597ejc.804.2022.08.31.11.36.43; Wed, 31 Aug 2022 11:37:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=esKn2NT7; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232995AbiHaS1R (ORCPT + 99 others); Wed, 31 Aug 2022 14:27:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60580 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232807AbiHaSZq (ORCPT ); Wed, 31 Aug 2022 14:25:46 -0400 Received: from ams.source.kernel.org (ams.source.kernel.org [145.40.68.75]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 26AF6F2433 for ; Wed, 31 Aug 2022 11:21:57 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id B222CB82286 for ; Wed, 31 Aug 2022 18:21:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0BA0C43159; Wed, 31 Aug 2022 18:21:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1661970110; bh=hXeiDn5SObJ18DT8fc6Pa6a9wr3LC/31YgOsnz8spKc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=esKn2NT7MHuBE6iHrVUjMw3WR/bsaF9URjFUicPeI2JCHLi+3G/ZPIMYfMhYn8eVo aHYRw7eRLWDuAUyWyYu7liE9bG66/54Bv2A7CmsVSYRHaPoyaZFZ0rZ9NEZwGv+crE F+hd+eBu4PAjsWSBMIk4mtPlAedhyYpg7YKS1hxVNjQ7guOMYEJN/TwEjE4NbWz6k5 IyQ7horEW3nH6J8l99xrEBygytnoZf8+DBf3rmTTfU3z9nsUsCNG7Oelfx/NlOufhs 5g2Gg6aC1NKC94bBwbX2O1moSTUOdA+m2rb2qLnwTpNCaFYhp7wdqOIGfZfabFiWPo S0zMUnTb0caPw== Received: by paulmck-ThinkPad-P17-Gen-1.home (Postfix, from userid 1000) id ECCF15C0DF4; Wed, 31 Aug 2022 11:21:49 -0700 (PDT) From: "Paul E. McKenney" To: linux-kernel@vger.kernel.org Cc: gwml@vger.gnuweeb.org, kernel-team@fb.com, w@lwt.eu, Willy Tarreau , "Paul E . McKenney" Subject: [PATCH nolibc 15/18] selftests/nolibc: add a "run" target to start the kernel in QEMU Date: Wed, 31 Aug 2022 11:21:45 -0700 Message-Id: <20220831182148.2698489-17-paulmck@kernel.org> X-Mailer: git-send-email 2.31.1.189.g2e36527f23 In-Reply-To: <20220831182113.GA2697286@paulmck-ThinkPad-P17-Gen-1> References: <20220831182113.GA2697286@paulmck-ThinkPad-P17-Gen-1> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Willy Tarreau The "run" target will build the kernel and start it in QEMU. The "rerun" target will not have the kernel dependency and will just try to start QEMU. The QEMU architecture used to start the kernel is derived from the configured ARCH. This might need to be improved for archs which include different variants under the same name (mips vs mipsel, +/-64, riscv32 vs riscv64). This could be tested for i386, x86, arm, arm64, mips and riscv (the later two reporting issues on some tests). It is possible to pass a test specification for nolibc-test in the TEST variable, which will be passed as-is as NOLIBC_TEST. On success, the number of successful tests is printed. On failure, failed lines are individually printed. Signed-off-by: Willy Tarreau Signed-off-by: Paul E. McKenney --- tools/testing/selftests/nolibc/Makefile | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tools/testing/selftests/nolibc/Makefile b/tools/testing/selftests/nolibc/Makefile index c104719eae8b8..7c1f5360f454e 100644 --- a/tools/testing/selftests/nolibc/Makefile +++ b/tools/testing/selftests/nolibc/Makefile @@ -31,6 +31,27 @@ DEFCONFIG_mips = malta_defconfig DEFCONFIG_riscv = defconfig DEFCONFIG = $(DEFCONFIG_$(ARCH)) +# optional tests to run (default = all) +TEST = + +# QEMU_ARCH: arch names used by qemu +QEMU_ARCH_i386 = i386 +QEMU_ARCH_x86 = x86_64 +QEMU_ARCH_arm64 = aarch64 +QEMU_ARCH_arm = arm +QEMU_ARCH_mips = mipsel # works with malta_defconfig +QEMU_ARCH_riscv = riscv64 +QEMU_ARCH = $(QEMU_ARCH_$(ARCH)) + +# QEMU_ARGS : some arch-specific args to pass to qemu +QEMU_ARGS_i386 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_x86 = -M pc -append "console=ttyS0,9600 i8042.noaux panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_arm64 = -M virt -cpu cortex-a53 -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_arm = -M virt -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_mips = -M malta -append "panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS_riscv = -M virt -append "console=ttyS0 panic=-1 $(TEST:%=NOLIBC_TEST=%)" +QEMU_ARGS = $(QEMU_ARGS_$(ARCH)) + # OUTPUT is only set when run from the main makefile, otherwise # it defaults to this nolibc directory. OUTPUT ?= $(CURDIR)/ @@ -61,8 +82,20 @@ defconfig: kernel: initramfs $(Q)$(MAKE) -C $(srctree) ARCH=$(ARCH) CC=$(CC) CROSS_COMPILE=$(CROSS_COMPILE) $(IMAGE_NAME) CONFIG_INITRAMFS_SOURCE=$(CURDIR)/initramfs +# run the tests after building the kernel +run: kernel + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" + $(Q)grep -w FAIL "$(CURDIR)/run.out" && echo "See all results in $(CURDIR)/run.out" || echo "$$(grep -c ^[0-9].*OK $(CURDIR)/run.out) test(s) passed." + +# re-run the tests from an existing kernel +rerun: + $(Q)qemu-system-$(QEMU_ARCH) -display none -no-reboot -kernel "$(srctree)/$(IMAGE)" -serial stdio $(QEMU_ARGS) > "$(CURDIR)/run.out" + $(Q)grep -w FAIL "$(CURDIR)/run.out" && echo "See all results in $(CURDIR)/run.out" || echo "$$(grep -c ^[0-9].*OK $(CURDIR)/run.out) test(s) passed." + clean: $(call QUIET_CLEAN, nolibc-test) $(Q)rm -f nolibc-test $(call QUIET_CLEAN, initramfs) $(Q)rm -rf initramfs + $(call QUIET_CLEAN, run.out) + $(Q)rm -rf run.out -- 2.31.1.189.g2e36527f23