From patchwork Tue Jun 29 14:36:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Auger X-Patchwork-Id: 12350113 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 316B7C11F67 for ; Tue, 29 Jun 2021 14:43:57 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B60F461D86 for ; Tue, 29 Jun 2021 14:43:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B60F461D86 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:33174 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lyExv-0001BW-My for qemu-devel@archiver.kernel.org; Tue, 29 Jun 2021 10:43:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57470) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyEr0-0005Ov-H4 for qemu-devel@nongnu.org; Tue, 29 Jun 2021 10:36:46 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:37771) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyEqv-0005hn-Rz for qemu-devel@nongnu.org; Tue, 29 Jun 2021 10:36:45 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624977400; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=7iNoAod/IX0o6i11KLUNf1Gz+/+TlQgVAoGKZAHtvAA=; b=HQ/7k1vWB4ChBNGFsodTUgimaNm5zl1Jek1g0HuRKnpl23kOGycuQm2WjF5w6mknnNYdyo RYI242yjVsjyk2MvkTv2UddbQl4SLP+6UVX6lE9FLEKFQmKANUJcLfZFp/uuGmzU42ZY30 mea9PgxcOvxaaR/zb8VYUn7ws0rIHVk= 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-364-hYkEuscTPZCDOFqfqA0s_Q-1; Tue, 29 Jun 2021 10:36:39 -0400 X-MC-Unique: hYkEuscTPZCDOFqfqA0s_Q-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 71AB51922962; Tue, 29 Jun 2021 14:36:38 +0000 (UTC) Received: from laptop.redhat.com (ovpn-113-168.ams2.redhat.com [10.36.113.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id 79859163C6; Tue, 29 Jun 2021 14:36:36 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, philmd@redhat.com, crosa@redhat.com, wainersm@redhat.com Subject: [PATCH v4 1/4] Acceptance Tests: Add default kernel params and pxeboot url to the KNOWN_DISTROS collection Date: Tue, 29 Jun 2021 16:36:18 +0200 Message-Id: <20210629143621.907831-2-eric.auger@redhat.com> In-Reply-To: <20210629143621.907831-1-eric.auger@redhat.com> References: <20210629143621.907831-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eric.auger@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=170.10.133.124; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.435, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: wrampazz@redhat.com, peterx@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" When running LinuxTests we may need to run the guest with custom params. It is practical to store the pxeboot URL and the default kernel params so that the tests just need to fetch those and augment the kernel params. Signed-off-by: Eric Auger Reviewed-by: Willian Rampazzo --- v2 -> v3: - add fed32 and fed33 checksums v3 -> v4: - fix indent issues (Wainer) - use dl.fedoraproject.org instead of mirror --- tests/acceptance/avocado_qemu/__init__.py | 52 ++++++++++++++++++++++- 1 file changed, 50 insertions(+), 2 deletions(-) diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py index 81ac90bebb..64e9c1952d 100644 --- a/tests/acceptance/avocado_qemu/__init__.py +++ b/tests/acceptance/avocado_qemu/__init__.py @@ -305,17 +305,59 @@ def ssh_command(self, command): 'fedora': { '31': { 'x86_64': - {'checksum': 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8fc026954f3c5c27a0'}, + {'checksum': 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8fc026954f3c5c27a0', + 'pxeboot_url': "https://archives.fedoraproject.org/pub/archive/fedora/" + "linux/releases/31/Everything/x86_64/os/images/pxeboot/", + 'kernel_params': "root=UUID=b1438b9b-2cab-4065-a99a-08a96687f73c ro " + "no_timer_check net.ifnames=0 " + "console=tty1 console=ttyS0,115200n8"}, 'aarch64': - {'checksum': '1e18d9c0cf734940c4b5d5ec592facaed2af0ad0329383d5639c997fdf16fe49'}, + {'checksum': '1e18d9c0cf734940c4b5d5ec592facaed2af0ad0329383d5639c997fdf16fe49', + 'pxeboot_url': "https://archives.fedoraproject.org/pub/archive/fedora/" + "linux/releases/31/Everything/aarch64/os/images/pxeboot/", + 'kernel_params': "root=UUID=b6950a44-9f3c-4076-a9c2-355e8475b0a7 ro " + "earlyprintk=pl011,0x9000000 ignore_loglevel " + "no_timer_check printk.time=1 rd_NO_PLYMOUTH " + "console=ttyAMA0 "}, 'ppc64': {'checksum': '7c3528b85a3df4b2306e892199a9e1e43f991c506f2cc390dc4efa2026ad2f58'}, 's390x': {'checksum': '4caaab5a434fd4d1079149a072fdc7891e354f834d355069ca982fdcaf5a122d'}, } + , + '32': { + 'aarch64': + {'kernel_params': "root=UUID=3df75b65-be8d-4db4-8655-14d95c0e90c5 ro " + "no_timer_check net.ifnames=0 console=tty1 " + "console=ttyS0,115200n8 ", + 'checksum': 'b367755c664a2d7a26955bbfff985855adfa2ca15e908baf15b4b176d68d3967', + 'pxeboot_url': "http://dl.fedoraproject.org/pub/fedora/linux/" + "releases/32/Server/aarch64/os/images/pxeboot/"}, + } + , + '33': { + 'aarch64': + {'kernel_params': "root=UUID=d20b3ffa-6397-4a63-a734-1126a0208f8a ro " + "no_timer_check net.ifnames=0 console=tty1 " + "console=ttyS0,115200n8 console=tty0 ", + 'checksum': 'e7f75cdfd523fe5ac2ca9eeece68edc1a81f386a17f969c1d1c7c87031008a6b', + 'pxeboot_url': "http://dl.fedoraproject.org/pub/fedora/linux/" + "releases/33/Server/aarch64/os/images/pxeboot/"}, + } } } +def get_known_distro_kernel_params(distro, distro_version, arch): + try: + return KNOWN_DISTROS.get(distro).get(distro_version).get(arch).get('kernel_params') + except AttributeError: + return None + +def get_known_distro_pxeboot_url(distro, distro_version, arch): + try: + return KNOWN_DISTROS.get(distro).get(distro_version).get(arch).get('pxeboot_url') + except AttributeError: + return None def get_known_distro_checksum(distro, distro_version, arch): try: @@ -449,6 +491,12 @@ def set_up_cloudinit(self, ssh_pubkey=None): cloudinit_iso = self.prepare_cloudinit(ssh_pubkey) self.vm.add_args('-drive', 'file=%s,format=raw' % cloudinit_iso) + def get_default_kernel_params(self): + return get_known_distro_kernel_params(self.distro, self.distro_version, self.arch) + + def get_pxeboot_url(self): + return get_known_distro_pxeboot_url(self.distro, self.distro_version, self.arch) + def launch_and_wait(self, set_up_ssh_connection=True): self.vm.set_console() self.vm.launch() From patchwork Tue Jun 29 14:36:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Auger X-Patchwork-Id: 12350151 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EBB28C11F67 for ; Tue, 29 Jun 2021 14:53:15 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 64EC161D8E for ; Tue, 29 Jun 2021 14:53:15 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 64EC161D8E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:51980 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lyF6w-0005uI-Bz for qemu-devel@archiver.kernel.org; Tue, 29 Jun 2021 10:53:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57476) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyEr0-0005Qn-Bf for qemu-devel@nongnu.org; Tue, 29 Jun 2021 10:36:46 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:49377) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyEqx-0005kl-H1 for qemu-devel@nongnu.org; Tue, 29 Jun 2021 10:36:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624977402; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=d5lw1GoNgCfwNQEF6QT/q1fDKVsESxmLc6jLJ4oQyrI=; b=VHBvtISBqWpFYTYUCexQz2xKwoEXqdlj97hRmOqHP32WuDqX+dyFQ6aZpZ4lwgL+HOmBM1 QcyUyCrhNPAtWTJgxB3XxbIRof4vSfD1e6oHL+kCcCZ+zVo34yG5skFw/yNcrWBELdjy2S wRwwKzqa9qxFGlDcYvPxTttIldXhYFU= 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-50-Qekc7fHhNXKKAmDKo7M5kQ-1; Tue, 29 Jun 2021 10:36:41 -0400 X-MC-Unique: Qekc7fHhNXKKAmDKo7M5kQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id B95B5A40C2; Tue, 29 Jun 2021 14:36:40 +0000 (UTC) Received: from laptop.redhat.com (ovpn-113-168.ams2.redhat.com [10.36.113.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id CAF9C1A26A; Tue, 29 Jun 2021 14:36:38 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, philmd@redhat.com, crosa@redhat.com, wainersm@redhat.com Subject: [PATCH v4 2/4] avocado_qemu: Add SMMUv3 tests Date: Tue, 29 Jun 2021 16:36:19 +0200 Message-Id: <20210629143621.907831-3-eric.auger@redhat.com> In-Reply-To: <20210629143621.907831-1-eric.auger@redhat.com> References: <20210629143621.907831-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eric.auger@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=170.10.133.124; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.435, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: wrampazz@redhat.com, peterx@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Add new tests checking the good behavior of the SMMUv3 protecting 2 virtio pci devices (block and net). We check the guest boots and we are able to install a package. Different guest configs are tested: standard, passthrough an strict=0. This is tested with both fedora 31 and 33. The former uses a 5.3 kernel without range invalidation whereas the latter uses a 5.8 kernel that features range invalidation. Signed-off-by: Eric Auger Reviewed-by: Wainer dos Santos Moschetta Tested-by: Wainer dos Santos Moschetta Reviewed-by: Willian Rampazzo --- v3 -> v4: - add tags for machine, distro in the class - removed smp and memory overrides - set default param value of common_vm_setup to False v1 -> v2: - removed ssh import - combined add_command_args() and common_vm_setup() - moved tags in class' docstring and added tags=arch:aarch64 - use self.get_default_kernel_params() - added RIL tests with fed33 + introduce new tags --- tests/acceptance/smmu.py | 132 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 tests/acceptance/smmu.py diff --git a/tests/acceptance/smmu.py b/tests/acceptance/smmu.py new file mode 100644 index 0000000000..c1d4b88e5f --- /dev/null +++ b/tests/acceptance/smmu.py @@ -0,0 +1,132 @@ +# SMMUv3 Functional tests +# +# Copyright (c) 2021 Red Hat, Inc. +# +# Author: +# Eric Auger +# +# This work is licensed under the terms of the GNU GPL, version 2 or +# later. See the COPYING file in the top-level directory. + +import os + +from avocado_qemu import LinuxTest, BUILD_DIR + +class SMMU(LinuxTest): + """ + :avocado: tags=accel:kvm + :avocado: tags=cpu:host + :avocado: tags=arch:aarch64 + :avocado: tags=machine:virt + :avocado: tags=distro:fedora + :avocado: tags=smmu + """ + + IOMMU_ADDON = ',iommu_platform=on,disable-modern=off,disable-legacy=on' + kernel_path = None + initrd_path = None + kernel_params = None + + def set_up_boot(self): + path = self.download_boot() + self.vm.add_args('-device', 'virtio-blk-pci,bus=pcie.0,scsi=off,' + + 'drive=drv0,id=virtio-disk0,bootindex=1,' + 'werror=stop,rerror=stop' + self.IOMMU_ADDON) + self.vm.add_args('-drive', + 'file=%s,if=none,cache=writethrough,id=drv0' % path) + + def setUp(self): + super(SMMU, self).setUp(None, 'virtio-net-pci' + self.IOMMU_ADDON) + + def common_vm_setup(self, custom_kernel=False): + self.require_accelerator("kvm") + self.vm.add_args("-accel", "kvm") + self.vm.add_args("-cpu", "host") + self.vm.add_args("-machine", "iommu=smmuv3") + self.vm.add_args("-d", "guest_errors") + self.vm.add_args('-bios', os.path.join(BUILD_DIR, 'pc-bios', + 'edk2-aarch64-code.fd')) + self.vm.add_args('-device', 'virtio-rng-pci,rng=rng0') + self.vm.add_args('-object', + 'rng-random,id=rng0,filename=/dev/urandom') + + if custom_kernel is False: + return + + kernel_url = self.get_pxeboot_url() + 'vmlinuz' + initrd_url = self.get_pxeboot_url() + 'initrd.img' + self.kernel_path = self.fetch_asset(kernel_url) + self.initrd_path = self.fetch_asset(initrd_url) + + def run_and_check(self): + if self.kernel_path: + self.vm.add_args('-kernel', self.kernel_path, + '-append', self.kernel_params, + '-initrd', self.initrd_path) + self.launch_and_wait() + self.ssh_command('cat /proc/cmdline') + self.ssh_command('dnf -y install numactl-devel') + + + # 5.3 kernel without RIL # + + def test_smmu_noril(self): + """ + :avocado: tags=smmu_noril + :avocado: tags=smmu_noril_tests + :avocado: tags=distro_version:31 + """ + self.common_vm_setup() + self.run_and_check() + + def test_smmu_noril_passthrough(self): + """ + :avocado: tags=smmu_noril_passthrough + :avocado: tags=smmu_noril_tests + :avocado: tags=distro_version:31 + """ + self.common_vm_setup(True) + self.kernel_params = self.get_default_kernel_params() + ' iommu.passthrough=on' + self.run_and_check() + + def test_smmu_noril_nostrict(self): + """ + :avocado: tags=smmu_noril_nostrict + :avocado: tags=smmu_noril_tests + :avocado: tags=distro_version:31 + """ + self.common_vm_setup(True) + self.kernel_params = self.get_default_kernel_params() + ' iommu.strict=0' + self.run_and_check() + + # 5.8 kernel featuring range invalidation + # >= v5.7 kernel + + def test_smmu_ril(self): + """ + :avocado: tags=smmu_ril + :avocado: tags=smmu_ril_tests + :avocado: tags=distro_version:33 + """ + self.common_vm_setup() + self.run_and_check() + + def test_smmu_ril_passthrough(self): + """ + :avocado: tags=smmu_ril_passthrough + :avocado: tags=smmu_ril_tests + :avocado: tags=distro_version:33 + """ + self.common_vm_setup(True) + self.kernel_params = self.get_default_kernel_params() + ' iommu.passthrough=on' + self.run_and_check() + + def test_smmu_ril_nostrict(self): + """ + :avocado: tags=smmu_ril_nostrict + :avocado: tags=smmu_ril_tests + :avocado: tags=distro_version:33 + """ + self.common_vm_setup(True) + self.kernel_params = self.get_default_kernel_params() + ' iommu.strict=0' + self.run_and_check() From patchwork Tue Jun 29 14:36:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Auger X-Patchwork-Id: 12350111 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09B6AC11F67 for ; Tue, 29 Jun 2021 14:42:53 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 955FD61D86 for ; Tue, 29 Jun 2021 14:42:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 955FD61D86 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:57770 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lyEwt-0007AC-Kl for qemu-devel@archiver.kernel.org; Tue, 29 Jun 2021 10:42:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57500) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyEr5-0005Ub-2W for qemu-devel@nongnu.org; Tue, 29 Jun 2021 10:36:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:60725) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyEqz-0005nv-WB for qemu-devel@nongnu.org; Tue, 29 Jun 2021 10:36:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624977404; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XZqZnzR8QBsJpNun743ysyqV7ou6lFHfZNdCi+3ZSCQ=; b=g4mpERbzh0ZaIRfXdf1p7en3ktQ4/ECH6qPiNd3qGILMquESZY+49I+rJQi1MDhZjboDpg YKYwuFy9XlZrilAZxViDc96Cgf+5FDDySkkZcTISP9ww8Q4DuMyq0HkgDpktQ+t/wt69Jb q5sqK6A7oDGY0edktVKrGarq220JD9M= 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-286-n9RySRJ1M3GWbxHn-zjiqw-1; Tue, 29 Jun 2021 10:36:43 -0400 X-MC-Unique: n9RySRJ1M3GWbxHn-zjiqw-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 105E01922964; Tue, 29 Jun 2021 14:36:43 +0000 (UTC) Received: from laptop.redhat.com (ovpn-113-168.ams2.redhat.com [10.36.113.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1EFE0E2E8; Tue, 29 Jun 2021 14:36:40 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, philmd@redhat.com, crosa@redhat.com, wainersm@redhat.com Subject: [PATCH v4 3/4] avocado_qemu: Add Intel iommu tests Date: Tue, 29 Jun 2021 16:36:20 +0200 Message-Id: <20210629143621.907831-4-eric.auger@redhat.com> In-Reply-To: <20210629143621.907831-1-eric.auger@redhat.com> References: <20210629143621.907831-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eric.auger@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=170.10.133.124; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.435, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: wrampazz@redhat.com, peterx@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Add Intel IOMMU functional tests based on fedora 31. Different configs are checked: - strict - caching mode, strict - passthrough. Signed-off-by: Eric Auger Acked-by: Peter Xu --- tests/acceptance/intel_iommu.py | 115 ++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 tests/acceptance/intel_iommu.py diff --git a/tests/acceptance/intel_iommu.py b/tests/acceptance/intel_iommu.py new file mode 100644 index 0000000000..0b68d3c572 --- /dev/null +++ b/tests/acceptance/intel_iommu.py @@ -0,0 +1,115 @@ +# INTEL_IOMMU Functional tests +# +# Copyright (c) 2021 Red Hat, Inc. +# +# Author: +# Eric Auger +# +# This work is licensed under the terms of the GNU GPL, version 2 or +# later. See the COPYING file in the top-level directory. + +import os + +from avocado_qemu import LinuxTest, BUILD_DIR +from avocado.utils import ssh + +class INTEL_IOMMU(LinuxTest): + """ + :avocado: tags=arch:x86_64 + :avocado: tags=distro:fedora + :avocado: tags=distro_version:31 + :avocado: tags=machine:q35 + :avocado: tags=accel:kvm + :avocado: tags=intel_iommu + """ + + IOMMU_ADDON = ',iommu_platform=on,disable-modern=off,disable-legacy=on' + kernel_path = None + initrd_path = None + kernel_params = None + + def set_up_boot(self): + path = self.download_boot() + self.vm.add_args('-device', 'virtio-blk-pci,bus=pcie.0,scsi=off,' + + 'drive=drv0,id=virtio-disk0,bootindex=1,' + 'werror=stop,rerror=stop' + self.IOMMU_ADDON) + self.vm.add_args('-device', 'virtio-gpu-pci' + self.IOMMU_ADDON) + self.vm.add_args('-drive', + 'file=%s,if=none,cache=writethrough,id=drv0' % path) + + def setUp(self): + super(INTEL_IOMMU, self).setUp(None, 'virtio-net-pci' + self.IOMMU_ADDON) + + def add_common_args(self): + self.vm.add_args('-device', 'virtio-rng-pci,rng=rng0') + self.vm.add_args('-object', + 'rng-random,id=rng0,filename=/dev/urandom') + + def common_vm_setup(self, custom_kernel=None): + self.require_accelerator("kvm") + self.add_common_args() + self.vm.add_args("-accel", "kvm") + + if custom_kernel is None: + return + + kernel_url = self.get_pxeboot_url() + 'vmlinuz' + initrd_url = self.get_pxeboot_url() + 'initrd.img' + self.kernel_path = self.fetch_asset(kernel_url) + self.initrd_path = self.fetch_asset(initrd_url) + + def run_and_check(self): + if self.kernel_path: + self.vm.add_args('-kernel', self.kernel_path, + '-append', self.kernel_params, + '-initrd', self.initrd_path) + self.launch_and_wait() + self.ssh_command('cat /proc/cmdline') + self.ssh_command('dmesg | grep -e DMAR -e IOMMU') + self.ssh_command('find /sys/kernel/iommu_groups/ -type l') + self.ssh_command('dnf -y install numactl-devel') + + def test_intel_iommu(self): + """ + :avocado: tags=intel_iommu_intremap + """ + + self.common_vm_setup(True) + self.vm.add_args('-device', 'intel-iommu,intremap=on') + self.vm.add_args('-machine', 'kernel_irqchip=split') + + self.kernel_params = self.get_default_kernel_params() + ' quiet intel_iommu=on' + self.run_and_check() + + def test_intel_iommu_strict(self): + """ + :avocado: tags=intel_iommu_strict + """ + + self.common_vm_setup(True) + self.vm.add_args('-device', 'intel-iommu,intremap=on') + self.vm.add_args('-machine', 'kernel_irqchip=split') + self.kernel_params = self.get_default_kernel_params() + ' quiet intel_iommu=on,strict' + self.run_and_check() + + def test_intel_iommu_strict_cm(self): + """ + :avocado: tags=intel_iommu_strict_cm + """ + + self.common_vm_setup(True) + self.vm.add_args('-device', 'intel-iommu,intremap=on,caching-mode=on') + self.vm.add_args('-machine', 'kernel_irqchip=split') + self.kernel_params = self.get_default_kernel_params() + ' quiet intel_iommu=on,strict' + self.run_and_check() + + def test_intel_iommu_pt(self): + """ + :avocado: tags=intel_iommu_pt + """ + + self.common_vm_setup(True) + self.vm.add_args('-device', 'intel-iommu,intremap=on') + self.vm.add_args('-machine', 'kernel_irqchip=split') + self.kernel_params = self.get_default_kernel_params() + ' quiet intel_iommu=on iommu=pt' + self.run_and_check() From patchwork Tue Jun 29 14:36:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Auger X-Patchwork-Id: 12350103 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B724C11F68 for ; Tue, 29 Jun 2021 14:38:55 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id A19D161DD6 for ; Tue, 29 Jun 2021 14:38:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A19D161DD6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:47798 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lyEt3-0000Fx-F8 for qemu-devel@archiver.kernel.org; Tue, 29 Jun 2021 10:38:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57582) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyErH-0005tw-EP for qemu-devel@nongnu.org; Tue, 29 Jun 2021 10:37:03 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]:44775) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lyErE-0005xj-T4 for qemu-devel@nongnu.org; Tue, 29 Jun 2021 10:37:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624977420; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=90bMUDHfRx0nUmR8VUcVOuXiGBm4PqO3Az3udISJmM8=; b=K2XuG8+H4KcrTs/1uoMFNoz23EoFOYUqWmn1BxAtHTusKZr4WRIZZMk4frVG4F4FgXMMWV +/+f/QVYAnUw8qtdmyvaOLkCO2Jh3xmBf1/5/HfDd17RIfZI++YJJqIOP/dXfwBa2/P68O H7j0/vom1pnG1mnDmjRI3CdjzrOeHLE= 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-480-kOVVPP4sPfSxPUnPLKdtqA-1; Tue, 29 Jun 2021 10:36:56 -0400 X-MC-Unique: kOVVPP4sPfSxPUnPLKdtqA-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 814511922960; Tue, 29 Jun 2021 14:36:55 +0000 (UTC) Received: from laptop.redhat.com (ovpn-113-168.ams2.redhat.com [10.36.113.168]) by smtp.corp.redhat.com (Postfix) with ESMTP id 692AC163C6; Tue, 29 Jun 2021 14:36:43 +0000 (UTC) From: Eric Auger To: eric.auger.pro@gmail.com, eric.auger@redhat.com, qemu-devel@nongnu.org, philmd@redhat.com, crosa@redhat.com, wainersm@redhat.com Subject: [PATCH v4 4/4] avocado_qemu: Fix KNOWN_DISTROS map into the LinuxDistro class Date: Tue, 29 Jun 2021 16:36:21 +0200 Message-Id: <20210629143621.907831-5-eric.auger@redhat.com> In-Reply-To: <20210629143621.907831-1-eric.auger@redhat.com> References: <20210629143621.907831-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=eric.auger@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=170.10.133.124; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -31 X-Spam_score: -3.2 X-Spam_bar: --- X-Spam_report: (-3.2 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.435, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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: wrampazz@redhat.com, peterx@redhat.com Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" From: Wainer dos Santos Moschetta As the KNOWN_DISTROS grows, more loosely methods will be created in the avocado_qemu/__init__.py file. Let's refactor the code so that KNOWN_DISTROS and related methods are packaged in a class Signed-off-by: Wainer dos Santos Moschetta Signed-off-by: Eric Auger --- [Eric] rebase and add commit message --- tests/acceptance/avocado_qemu/__init__.py | 160 +++++++++++----------- tests/acceptance/intel_iommu.py | 12 +- tests/acceptance/smmu.py | 12 +- 3 files changed, 94 insertions(+), 90 deletions(-) diff --git a/tests/acceptance/avocado_qemu/__init__.py b/tests/acceptance/avocado_qemu/__init__.py index 64e9c1952d..00eb0bfcc8 100644 --- a/tests/acceptance/avocado_qemu/__init__.py +++ b/tests/acceptance/avocado_qemu/__init__.py @@ -299,72 +299,86 @@ def ssh_command(self, command): f'Guest command failed: {command}') return stdout_lines, stderr_lines +class LinuxDistro: + """Represents a Linux distribution -#: A collection of known distros and their respective image checksum -KNOWN_DISTROS = { - 'fedora': { - '31': { - 'x86_64': - {'checksum': 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8fc026954f3c5c27a0', - 'pxeboot_url': "https://archives.fedoraproject.org/pub/archive/fedora/" - "linux/releases/31/Everything/x86_64/os/images/pxeboot/", - 'kernel_params': "root=UUID=b1438b9b-2cab-4065-a99a-08a96687f73c ro " + Holds information of known distros. + """ + #: A collection of known distros and their respective image checksum + KNOWN_DISTROS = { + 'fedora': { + '31': { + 'x86_64': + {'checksum': 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8fc026954f3c5c27a0', + 'pxeboot_url': "https://archives.fedoraproject.org/pub/archive/fedora/" + "linux/releases/31/Everything/x86_64/os/images/pxeboot/", + 'kernel_params': "root=UUID=b1438b9b-2cab-4065-a99a-08a96687f73c ro " "no_timer_check net.ifnames=0 " "console=tty1 console=ttyS0,115200n8"}, - 'aarch64': - {'checksum': '1e18d9c0cf734940c4b5d5ec592facaed2af0ad0329383d5639c997fdf16fe49', - 'pxeboot_url': "https://archives.fedoraproject.org/pub/archive/fedora/" - "linux/releases/31/Everything/aarch64/os/images/pxeboot/", - 'kernel_params': "root=UUID=b6950a44-9f3c-4076-a9c2-355e8475b0a7 ro " - "earlyprintk=pl011,0x9000000 ignore_loglevel " - "no_timer_check printk.time=1 rd_NO_PLYMOUTH " - "console=ttyAMA0 "}, - 'ppc64': - {'checksum': '7c3528b85a3df4b2306e892199a9e1e43f991c506f2cc390dc4efa2026ad2f58'}, - 's390x': - {'checksum': '4caaab5a434fd4d1079149a072fdc7891e354f834d355069ca982fdcaf5a122d'}, - } - , - '32': { - 'aarch64': - {'kernel_params': "root=UUID=3df75b65-be8d-4db4-8655-14d95c0e90c5 ro " - "no_timer_check net.ifnames=0 console=tty1 " - "console=ttyS0,115200n8 ", - 'checksum': 'b367755c664a2d7a26955bbfff985855adfa2ca15e908baf15b4b176d68d3967', - 'pxeboot_url': "http://dl.fedoraproject.org/pub/fedora/linux/" - "releases/32/Server/aarch64/os/images/pxeboot/"}, - } - , - '33': { - 'aarch64': - {'kernel_params': "root=UUID=d20b3ffa-6397-4a63-a734-1126a0208f8a ro " - "no_timer_check net.ifnames=0 console=tty1 " - "console=ttyS0,115200n8 console=tty0 ", - 'checksum': 'e7f75cdfd523fe5ac2ca9eeece68edc1a81f386a17f969c1d1c7c87031008a6b', - 'pxeboot_url': "http://dl.fedoraproject.org/pub/fedora/linux/" - "releases/33/Server/aarch64/os/images/pxeboot/"}, + 'aarch64': + {'checksum': '1e18d9c0cf734940c4b5d5ec592facaed2af0ad0329383d5639c997fdf16fe49', + 'pxeboot_url': "https://archives.fedoraproject.org/pub/archive/fedora/" + "linux/releases/31/Everything/aarch64/os/images/pxeboot/", + 'kernel_params': "root=UUID=b6950a44-9f3c-4076-a9c2-355e8475b0a7 ro " + "earlyprintk=pl011,0x9000000 ignore_loglevel " + "no_timer_check printk.time=1 rd_NO_PLYMOUTH " + "console=ttyAMA0 "}, + 'ppc64': + {'checksum': '7c3528b85a3df4b2306e892199a9e1e43f991c506f2cc390dc4efa2026ad2f58'}, + 's390x': + {'checksum': '4caaab5a434fd4d1079149a072fdc7891e354f834d355069ca982fdcaf5a122d'}, + } + , + '32': { + 'aarch64': + {'kernel_params': "root=UUID=3df75b65-be8d-4db4-8655-14d95c0e90c5 ro " + "no_timer_check net.ifnames=0 console=tty1 " + "console=ttyS0,115200n8 ", + 'checksum': 'b367755c664a2d7a26955bbfff985855adfa2ca15e908baf15b4b176d68d3967', + 'pxeboot_url': "http://dl.fedoraproject.org/pub/fedora/linux/" + "releases/32/Server/aarch64/os/images/pxeboot/"}, + } + , + '33': { + 'aarch64': + {'kernel_params': "root=UUID=d20b3ffa-6397-4a63-a734-1126a0208f8a ro " + "no_timer_check net.ifnames=0 console=tty1 " + "console=ttyS0,115200n8 console=tty0 ", + 'checksum': 'e7f75cdfd523fe5ac2ca9eeece68edc1a81f386a17f969c1d1c7c87031008a6b', + 'pxeboot_url': "http://dl.fedoraproject.org/pub/fedora/linux/" + "releases/33/Server/aarch64/os/images/pxeboot/"}, + } } } - } -def get_known_distro_kernel_params(distro, distro_version, arch): - try: - return KNOWN_DISTROS.get(distro).get(distro_version).get(arch).get('kernel_params') - except AttributeError: - return None + def __init__(self, name, version, arch): + self.name = name + self.version = version + self.arch = arch + try: + self._info = self.KNOWN_DISTROS.get(name).get(version).get(arch) + except AttributeError: + # Unknown distro + self._info = {} -def get_known_distro_pxeboot_url(distro, distro_version, arch): - try: - return KNOWN_DISTROS.get(distro).get(distro_version).get(arch).get('pxeboot_url') - except AttributeError: - return None + @property + def default_kernel_params(self): + """Gets the default kernel parameters""" + return self._info.get('kernel_params', None) -def get_known_distro_checksum(distro, distro_version, arch): - try: - return KNOWN_DISTROS.get(distro).get(distro_version).get(arch).get('checksum') - except AttributeError: - return None + @property + def pxeboot_url(self): + """Gets the repository url where pxeboot files can be found""" + return self._info.get('pxeboot_url', None) + @property + def checksum(self): + """Gets the cloud-image file checksum""" + return self._info.get('checksum', None) + + @checksum.setter + def checksum(self, value): + self._info['checksum'] = value class LinuxTest(Test, LinuxSSHMixIn): """Facilitates having a cloud-image Linux based available. @@ -374,24 +388,24 @@ class LinuxTest(Test, LinuxSSHMixIn): """ timeout = 900 - distro_checksum = None + distro = None username = 'root' password = 'password' def _set_distro(self): - distro = self.params.get( + distro_name = self.params.get( 'distro', default=self._get_unique_tag_val('distro')) - if not distro: - distro = 'fedora' - self.distro = distro + if not distro_name: + distro_name = 'fedora' distro_version = self.params.get( 'distro_version', default=self._get_unique_tag_val('distro_version')) if not distro_version: distro_version = '31' - self.distro_version = distro_version + + self.distro = LinuxDistro(distro_name, distro_version, self.arch) # The distro checksum behaves differently than distro name and # version. First, it does not respect a tag with the same @@ -400,13 +414,9 @@ def _set_distro(self): # order of precedence is: parameter, attribute and then value # from KNOWN_DISTROS. distro_checksum = self.params.get('distro_checksum', - default=self.distro_checksum) - if not distro_checksum: - distro_checksum = get_known_distro_checksum(self.distro, - self.distro_version, - self.arch) + default=None) if distro_checksum: - self.distro_checksum = distro_checksum + self.distro.checksum = distro_checksum def setUp(self, ssh_pubkey=None, network_device_type='virtio-net'): super(LinuxTest, self).setUp() @@ -448,14 +458,14 @@ def download_boot(self): self.log.info('Downloading/preparing boot image') # Fedora 31 only provides ppc64le images image_arch = self.arch - if self.distro == 'fedora': + if self.distro.name == 'fedora': if image_arch == 'ppc64': image_arch = 'ppc64le' try: boot = vmimage.get( - self.distro, arch=image_arch, version=self.distro_version, - checksum=self.distro_checksum, + self.distro.name, arch=image_arch, version=self.distro.version, + checksum=self.distro.checksum, algorithm='sha256', cache_dir=self.cache_dirs[0], snapshot_dir=self.workdir) @@ -491,12 +501,6 @@ def set_up_cloudinit(self, ssh_pubkey=None): cloudinit_iso = self.prepare_cloudinit(ssh_pubkey) self.vm.add_args('-drive', 'file=%s,format=raw' % cloudinit_iso) - def get_default_kernel_params(self): - return get_known_distro_kernel_params(self.distro, self.distro_version, self.arch) - - def get_pxeboot_url(self): - return get_known_distro_pxeboot_url(self.distro, self.distro_version, self.arch) - def launch_and_wait(self, set_up_ssh_connection=True): self.vm.set_console() self.vm.launch() diff --git a/tests/acceptance/intel_iommu.py b/tests/acceptance/intel_iommu.py index 0b68d3c572..bf8dea6e4f 100644 --- a/tests/acceptance/intel_iommu.py +++ b/tests/acceptance/intel_iommu.py @@ -53,8 +53,8 @@ def common_vm_setup(self, custom_kernel=None): if custom_kernel is None: return - kernel_url = self.get_pxeboot_url() + 'vmlinuz' - initrd_url = self.get_pxeboot_url() + 'initrd.img' + kernel_url = self.distro.pxeboot_url + 'vmlinuz' + initrd_url = self.distro.pxeboot_url + 'initrd.img' self.kernel_path = self.fetch_asset(kernel_url) self.initrd_path = self.fetch_asset(initrd_url) @@ -78,7 +78,7 @@ def test_intel_iommu(self): self.vm.add_args('-device', 'intel-iommu,intremap=on') self.vm.add_args('-machine', 'kernel_irqchip=split') - self.kernel_params = self.get_default_kernel_params() + ' quiet intel_iommu=on' + self.kernel_params = self.distro.default_kernel_params + ' quiet intel_iommu=on' self.run_and_check() def test_intel_iommu_strict(self): @@ -89,7 +89,7 @@ def test_intel_iommu_strict(self): self.common_vm_setup(True) self.vm.add_args('-device', 'intel-iommu,intremap=on') self.vm.add_args('-machine', 'kernel_irqchip=split') - self.kernel_params = self.get_default_kernel_params() + ' quiet intel_iommu=on,strict' + self.kernel_params = self.distro.default_kernel_params + ' quiet intel_iommu=on,strict' self.run_and_check() def test_intel_iommu_strict_cm(self): @@ -100,7 +100,7 @@ def test_intel_iommu_strict_cm(self): self.common_vm_setup(True) self.vm.add_args('-device', 'intel-iommu,intremap=on,caching-mode=on') self.vm.add_args('-machine', 'kernel_irqchip=split') - self.kernel_params = self.get_default_kernel_params() + ' quiet intel_iommu=on,strict' + self.kernel_params = self.distro.default_kernel_params + ' quiet intel_iommu=on,strict' self.run_and_check() def test_intel_iommu_pt(self): @@ -111,5 +111,5 @@ def test_intel_iommu_pt(self): self.common_vm_setup(True) self.vm.add_args('-device', 'intel-iommu,intremap=on') self.vm.add_args('-machine', 'kernel_irqchip=split') - self.kernel_params = self.get_default_kernel_params() + ' quiet intel_iommu=on iommu=pt' + self.kernel_params = self.distro.default_kernel_params + ' quiet intel_iommu=on iommu=pt' self.run_and_check() diff --git a/tests/acceptance/smmu.py b/tests/acceptance/smmu.py index c1d4b88e5f..72e26f002c 100644 --- a/tests/acceptance/smmu.py +++ b/tests/acceptance/smmu.py @@ -53,8 +53,8 @@ def common_vm_setup(self, custom_kernel=False): if custom_kernel is False: return - kernel_url = self.get_pxeboot_url() + 'vmlinuz' - initrd_url = self.get_pxeboot_url() + 'initrd.img' + kernel_url = self.distro.pxeboot_url + 'vmlinuz' + initrd_url = self.distro.pxeboot_url + 'initrd.img' self.kernel_path = self.fetch_asset(kernel_url) self.initrd_path = self.fetch_asset(initrd_url) @@ -86,7 +86,7 @@ def test_smmu_noril_passthrough(self): :avocado: tags=distro_version:31 """ self.common_vm_setup(True) - self.kernel_params = self.get_default_kernel_params() + ' iommu.passthrough=on' + self.kernel_params = self.distro.default_kernel_params + ' iommu.passthrough=on' self.run_and_check() def test_smmu_noril_nostrict(self): @@ -96,7 +96,7 @@ def test_smmu_noril_nostrict(self): :avocado: tags=distro_version:31 """ self.common_vm_setup(True) - self.kernel_params = self.get_default_kernel_params() + ' iommu.strict=0' + self.kernel_params = self.distro.default_kernel_params + ' iommu.strict=0' self.run_and_check() # 5.8 kernel featuring range invalidation @@ -118,7 +118,7 @@ def test_smmu_ril_passthrough(self): :avocado: tags=distro_version:33 """ self.common_vm_setup(True) - self.kernel_params = self.get_default_kernel_params() + ' iommu.passthrough=on' + self.kernel_params = self.distro.default_kernel_params + ' iommu.passthrough=on' self.run_and_check() def test_smmu_ril_nostrict(self): @@ -128,5 +128,5 @@ def test_smmu_ril_nostrict(self): :avocado: tags=distro_version:33 """ self.common_vm_setup(True) - self.kernel_params = self.get_default_kernel_params() + ' iommu.strict=0' + self.kernel_params = self.distro.default_kernel_params + ' iommu.strict=0' self.run_and_check()