From nobody Mon Apr 20 05:55:35 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40A77C43334 for ; Wed, 22 Jun 2022 03:53:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1356629AbiFVDxk (ORCPT ); Tue, 21 Jun 2022 23:53:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60334 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1356388AbiFVDxh (ORCPT ); Tue, 21 Jun 2022 23:53:37 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7FFE2338A7 for ; Tue, 21 Jun 2022 20:53:35 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id r6-20020a5b06c6000000b006693f6a6d67so4529415ybq.7 for ; Tue, 21 Jun 2022 20:53:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:message-id:mime-version:subject:from:to:cc; bh=iwk6opCsv4rch8cOLk7rLA4pRpTqnI7lX1MqEKmLDxo=; b=jvavznh0cp68Y71XtKyHHUb1a1IbsXDqLyI9l6AZPSugBW0v14ZN7p8nppjz2lVDMD 2I+wN01Qp8I2gV+6O/1D9WNaYlCSVDGtLXgpGUUpgsvWgYIG7mKqLtsVSIwQdMlIUEJD o+S1fM6rp0RPLbUNAKiMwCvsvs05ueljZZFXBm6Me0HsHbFu3Pg1pp3kb+dcn40DskMI H5N9skt3Md0eTYkG4asMaNyYVwOnCqWAiEOWgNm+uofZ/wXshEzEUiSKz/5XTe96mOk0 pizhmimC3lJo1UJ7KkcNpUB8OrOUIQCP9kZr9hjRSsNrS+t5C7OTVKNwz6p90iusxweD o/rQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=iwk6opCsv4rch8cOLk7rLA4pRpTqnI7lX1MqEKmLDxo=; b=rLievu5kAmbfgOBssMuNRRj9ILvrP/GRyeUTH1IGDfLyCq51Fjfii+GzNZL/LV4ijH uoQecwOq3XwKlkRB5zA2tqe+44pB/xocaY7fLuHiCLebFUZlBKlWFvr52R+9b1KVl6p6 vwJlW7mQlmCUzvbRE7qYvPOcuoNvK4+LBbZwpEHOc/HI/3vDepIUuUldWq/hFSE3QoNR uX+wGSDtpdCGqI0wQgZ9I2/I2td7OOiWJ47h2bo4BmuJHS/3rZSx3VCOYeGqWuLGm0bs 9rqQRjvhUDJ11wg/jlhPWsFsyCECYo3ef5cqofZgylfREDPD1BXS+u5GRzsvoK4ClUJS tgaw== X-Gm-Message-State: AJIora9QC3gI+Wf5B0NvGxMvB/Px4qIx8L4lSIHsY5TS64FveWTFQMHY PSkxSoQX4sNxmiFOm71w1XhFkA8RK/MUpg== X-Google-Smtp-Source: AGRyM1vcFnqYSpCrlY49fkah+U80qc6Y9C7Ozo3wtzCut4wcNNU+NbVo5kf2UZf5RwDS98oX/vKfHX54FDd5xA== X-Received: from slicestar.c.googlers.com ([fda3:e722:ac3:cc00:4f:4b78:c0a8:20a1]) (user=davidgow job=sendgmr) by 2002:a25:d18f:0:b0:668:f385:737 with SMTP id i137-20020a25d18f000000b00668f3850737mr1565616ybg.205.1655870014788; Tue, 21 Jun 2022 20:53:34 -0700 (PDT) Date: Wed, 22 Jun 2022 11:53:26 +0800 Message-Id: <20220622035326.759935-1-davidgow@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.37.0.rc0.104.g0611611a94-goog Subject: [RFC PATCH] kunit: tool: Enable virtio/PCI by default on UML From: David Gow To: Daniel Latypov , Brendan Higgins Cc: Shuah Khan , kunit-dev@googlegroups.com, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, "=?UTF-8?q?Jos=C3=A9=20Exp=C3=B3sito?=" , David Gow Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" There are several tests which depend on PCI, and hence need a bunch of extra options to run under UML. This makes it awkward to give configuration instructions (whether in documentation, or as part of a .kunitconfig file), as two separate, incompatible sets of config options are required for UML and "most other architectures". For non-UML architectures, it's possible to add default kconfig options via the qemu_config python files, but there's no equivalent for UML. Add a new tools/testing/kunit/configs/arch_uml.config file containing extra kconfig options to use on UML. Signed-off-by: David Gow --- It's really ugly to have to type: --kconfig_add CONFIG_VIRTIO_UML=3Dy --kconfig_add CONFIG_UML_PCI_OVER_VIRTIO=3Dy when running many tests under UML, particularly since it isn't required on other architectures. This came up in discussion with Daniel this morning, and while the ability to repeat the --kunitconfig flag would go some way to alleviate this, having to add: --kunitconfig ./tools/testing/kunit/config/uml_pci.kunitconfig isn't all that much better. So it seems like adding something by default would be nice. This implementation is not perfect (in particular, there's no easy way of _disabling_ these options now, though [1] probably will help). The 'arch_uml.config' filename can be bikeshedded, too. Thoughts? --- tools/testing/kunit/configs/arch_uml.config | 5 +++++ tools/testing/kunit/kunit_kernel.py | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 tools/testing/kunit/configs/arch_uml.config diff --git a/tools/testing/kunit/configs/arch_uml.config b/tools/testing/ku= nit/configs/arch_uml.config new file mode 100644 index 000000000000..e824ce43b05a --- /dev/null +++ b/tools/testing/kunit/configs/arch_uml.config @@ -0,0 +1,5 @@ +# Config options which are added to UML builds by default + +# Enable virtio/pci, as a lot of tests require it. +CONFIG_VIRTIO_UML=3Dy +CONFIG_UML_PCI_OVER_VIRTIO=3Dy diff --git a/tools/testing/kunit/kunit_kernel.py b/tools/testing/kunit/kuni= t_kernel.py index 3539efaf99ba..05e7b1e188d7 100644 --- a/tools/testing/kunit/kunit_kernel.py +++ b/tools/testing/kunit/kunit_kernel.py @@ -26,6 +26,7 @@ KUNITCONFIG_PATH =3D '.kunitconfig' OLD_KUNITCONFIG_PATH =3D 'last_used_kunitconfig' DEFAULT_KUNITCONFIG_PATH =3D 'tools/testing/kunit/configs/default.config' BROKEN_ALLCONFIG_PATH =3D 'tools/testing/kunit/configs/broken_on_uml.confi= g' +UML_KCONFIG_PATH =3D 'tools/testing/kunit/configs/arch_uml.config' OUTFILE_PATH =3D 'test.log' ABS_TOOL_PATH =3D os.path.abspath(os.path.dirname(__file__)) QEMU_CONFIGS_DIR =3D os.path.join(ABS_TOOL_PATH, 'qemu_configs') @@ -53,7 +54,7 @@ class LinuxSourceTreeOperations: except subprocess.CalledProcessError as e: raise ConfigError(e.output.decode()) =20 - def make_arch_qemuconfig(self, base_kunitconfig: kunit_config.Kconfig) ->= None: + def make_arch_config(self, base_kunitconfig: kunit_config.Kconfig) -> Non= e: pass =20 def make_allyesconfig(self, build_dir: str, make_options) -> None: @@ -109,7 +110,7 @@ class LinuxSourceTreeOperationsQemu(LinuxSourceTreeOper= ations): self._kernel_command_line =3D qemu_arch_params.kernel_command_line + ' k= unit_shutdown=3Dreboot' self._extra_qemu_params =3D qemu_arch_params.extra_qemu_params =20 - def make_arch_qemuconfig(self, base_kunitconfig: kunit_config.Kconfig) ->= None: + def make_arch_config(self, base_kunitconfig: kunit_config.Kconfig) -> Non= e: kconfig =3D kunit_config.parse_from_string(self._kconfig) base_kunitconfig.merge_in_entries(kconfig) =20 @@ -137,6 +138,10 @@ class LinuxSourceTreeOperationsUml(LinuxSourceTreeOper= ations): def __init__(self, cross_compile=3DNone): super().__init__(linux_arch=3D'um', cross_compile=3Dcross_compile) =20 + def make_arch_config(self, base_kunitconfig: kunit_config.Kconfig) -> Non= e: + kconfig =3D kunit_config.parse_file(UML_KCONFIG_PATH) + base_kunitconfig.merge_in_entries(kconfig) + def make_allyesconfig(self, build_dir: str, make_options) -> None: kunit_parser.print_with_timestamp( 'Enabling all CONFIGs for UML...') @@ -313,7 +318,7 @@ class LinuxSourceTree: return self.build_config(build_dir, make_options) =20 existing_kconfig =3D kunit_config.parse_file(kconfig_path) - self._ops.make_arch_qemuconfig(self._kconfig) + self._ops.make_arch_config(self._kconfig) if self._kconfig.is_subset_of(existing_kconfig) and not self._kunitconfi= g_changed(build_dir): return True print('Regenerating .config ...') --=20 2.37.0.rc0.104.g0611611a94-goog