From nobody Sat May 4 21:29:41 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1624263113; cv=none; d=zohomail.com; s=zohoarc; b=jhpoRWvAQL8wrDieprkU9jcLTJwrItguCIObGaHJNJAZ1nbR4+nBVG7khb+HVNkM0P2J8LFe8lms5NC0z2B3/CSckl6P0XaoKcUD2gkoU0P658le2NB5O2TP9HF0kp2VB0bt0lzXQXdGnA0n/2vk+jrucTPwDILm71HajOYUWng= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624263113; h=Content-Type:Content-Transfer-Encoding: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=I2mGkc/78nvkDGq8d5H8Ag9G4LB77T0uAoKH8O6U54I=; b=YrWE0+CFGeuA8N0LMjdqIHxgyGIrBrIGpMHgTILWYUq3syJL6g57L3KFbQBZft7l2PTJ9fAcC61xrBGndhqpt1mHozZU8mlbxuTkxEkPYHCaIyz2lGgPD6dBayXIR2rtKJWa9pWAk1q2cFXne8Rjq0jGFcgyHLj7nsMQAqoJOJk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624263113344428.4384227258158; Mon, 21 Jun 2021 01:11:53 -0700 (PDT) Received: from localhost ([::1]:56698 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvF28-0003AG-Ba for importer2@patchew.org; Mon, 21 Jun 2021 04:11:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41818) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvEzA-0006yH-Mw for qemu-devel@nongnu.org; Mon, 21 Jun 2021 04:08:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:29269) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvEz8-0000vw-L9 for qemu-devel@nongnu.org; Mon, 21 Jun 2021 04:08:48 -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-367-LxBHCx-7NyKDW8CMqu_Y8Q-1; Mon, 21 Jun 2021 04:08:44 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 16C09100CCC8; Mon, 21 Jun 2021 08:08:43 +0000 (UTC) Received: from laptop.redhat.com (ovpn-112-27.ams2.redhat.com [10.36.112.27]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8044060E1C; Mon, 21 Jun 2021 08:08:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624262925; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=I2mGkc/78nvkDGq8d5H8Ag9G4LB77T0uAoKH8O6U54I=; b=hgNsgW/UDIclEg8EJbKZuDCGjL7AeSIo9/9wghCM4NHqNRgSGvCCzSTiR2ZFvPH0p5P1LS zPnadPvLDGSScL3WcAFKHSoKYclbCuhV3RI2Y2ZMVBp0zctBp+0CmaBLGjNSrXWy9ytRCW hrmmhvFv7nqh+c9qUTyAza2v6X5tIno= X-MC-Unique: LxBHCx-7NyKDW8CMqu_Y8Q-1 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, peterx@redhat.com Subject: [PATCH v3 1/3] Acceptance Tests: Add default kernel params and pxeboot url to the KNOWN_DISTROS collection Date: Mon, 21 Jun 2021 10:08:22 +0200 Message-Id: <20210621080824.789274-2-eric.auger@redhat.com> In-Reply-To: <20210621080824.789274-1-eric.auger@redhat.com> References: <20210621080824.789274-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 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 Content-Transfer-Encoding: quoted-printable 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.299, 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.01, RCVD_IN_MSPIKE_WL=-0.01, 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: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" 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 --- v2 -> v3: - add fed32 and fed33 checksums --- 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/a= vocado_qemu/__init__.py index 81ac90bebb..8152420fa5 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': 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8f= c026954f3c5c27a0'}, + {'checksum': 'e3c1b309d9203604922d6e255c2c5d098a309c2d46215d8f= c026954f3c5c27a0', + 'pxeboot_url': "https://archives.fedoraproject.org/pub/archiv= e/fedora/" + "linux/releases/31/Everything/x86_64/os/images= /pxeboot/", + 'kernel_params': "root=3DUUID=3Db1438b9b-2cab-4065-a99a-08a96= 687f73c ro " + "no_timer_check net.ifnames=3D0 " + "console=3Dtty1 console=3DttyS0,115200n8"}, 'aarch64': - {'checksum': '1e18d9c0cf734940c4b5d5ec592facaed2af0ad0329383d5= 639c997fdf16fe49'}, + {'checksum': '1e18d9c0cf734940c4b5d5ec592facaed2af0ad0329383d5= 639c997fdf16fe49', + 'pxeboot_url': "https://archives.fedoraproject.org/pub/archiv= e/fedora/" + "linux/releases/31/Everything/aarch64/os/image= s/pxeboot/", + 'kernel_params': "root=3DUUID=3Db6950a44-9f3c-4076-a9c2-355e8= 475b0a7 ro " + "earlyprintk=3Dpl011,0x9000000 ignore_loglev= el " + "no_timer_check printk.time=3D1 rd_NO_PLYMOU= TH " + "console=3DttyAMA0 "}, 'ppc64': {'checksum': '7c3528b85a3df4b2306e892199a9e1e43f991c506f2cc390= dc4efa2026ad2f58'}, 's390x': {'checksum': '4caaab5a434fd4d1079149a072fdc7891e354f834d355069= ca982fdcaf5a122d'}, } + , + '32': { + 'aarch64': + { 'kernel_params': "root=3DUUID=3D3df75b65-be8d-4db4-8655-14d9= 5c0e90c5 ro " + "no_timer_check net.ifnames=3D0 console=3Dtt= y1 " + "console=3DttyS0,115200n8 ", + 'checksum': 'b367755c664a2d7a26955bbfff985855adfa2ca15e908ba= f15b4b176d68d3967', + 'pxeboot_url': "https://ftp.lip6.fr/ftp/pub/linux/distribut= ions/fedora/releases/" + "32/Server/aarch64/os/images/pxeboot/"}, + } + , + '33': { + 'aarch64': + { 'kernel_params': "root=3DUUID=3Dd20b3ffa-6397-4a63-a734-1126= a0208f8a ro " + "no_timer_check net.ifnames=3D0 console=3Dtt= y1 " + "console=3DttyS0,115200n8 console=3Dtty0 ", + 'checksum': 'e7f75cdfd523fe5ac2ca9eeece68edc1a81f386a17f969c= 1d1c7c87031008a6b', + 'pxeboot_url': "https://ftp.lip6.fr/ftp/pub/linux/distribut= ions/fedora/releases/" + "33/Server/aarch64/os/images/pxeboot/"}, + } } } =20 +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 =20 def get_known_distro_checksum(distro, distro_version, arch): try: @@ -449,6 +491,12 @@ def set_up_cloudinit(self, ssh_pubkey=3DNone): cloudinit_iso =3D self.prepare_cloudinit(ssh_pubkey) self.vm.add_args('-drive', 'file=3D%s,format=3Draw' % cloudinit_is= o) =20 + def get_default_kernel_params(self): + return get_known_distro_kernel_params(self.distro, self.distro_ver= sion, self.arch) + + def get_pxeboot_url(self): + return get_known_distro_pxeboot_url(self.distro, self.distro_versi= on, self.arch) + def launch_and_wait(self, set_up_ssh_connection=3DTrue): self.vm.set_console() self.vm.launch() --=20 2.26.3 From nobody Sat May 4 21:29:41 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1624263040; cv=none; d=zohomail.com; s=zohoarc; b=GXu2Obb7oMSP4wJFzUHjzZFtZztTztTj0vMoIPhrdnjfP0TGob6vZ9ZbnTWS81I2dutDp60F+SCNM87UwdMoqRTlwcyRIIf1jJahJcTMUCXFXOvMR5Yw0Nb3g1qjZqPlcpoRX0gV4ehfCDBRoySeAunzRkXumZBwf9U8+1r/Z2w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624263040; h=Content-Type:Content-Transfer-Encoding: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=sl5IM3JcF5e310W4L+gwHgv6Za1BAPYcoJRNKSOE8Wo=; b=fLbaqpd29nzLl1wJI1mV9hGQq8Pq9kxj/VM1WUoqw3hnBCWXhC9l1eA6sCMUVgtSP467MZl1Ji5zjpS60wcfk0/XGT9xQwLSid9HScJ+r1qtKiXJmzndP9vLBhdU/JF9Elh5QVOsXFpghQLO7ybhdfZbovQ6PaoTC7KXXvkZ22o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624263040573795.2918457601941; Mon, 21 Jun 2021 01:10:40 -0700 (PDT) Received: from localhost ([::1]:53466 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvF0v-0000uE-1k for importer2@patchew.org; Mon, 21 Jun 2021 04:10:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41846) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvEzD-00073a-Cf for qemu-devel@nongnu.org; Mon, 21 Jun 2021 04:08:51 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:24263) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvEzB-0000xr-9t for qemu-devel@nongnu.org; Mon, 21 Jun 2021 04:08:51 -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-21-NR7tEeL2NNqaqcNUqxh0KQ-1; Mon, 21 Jun 2021 04:08:47 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 385B6100CEC9; Mon, 21 Jun 2021 08:08:46 +0000 (UTC) Received: from laptop.redhat.com (ovpn-112-27.ams2.redhat.com [10.36.112.27]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8E35460C9F; Mon, 21 Jun 2021 08:08:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624262928; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sl5IM3JcF5e310W4L+gwHgv6Za1BAPYcoJRNKSOE8Wo=; b=i5BFJtpiqpNhIr83xul43S9CfjLgIx+Uhewyo5vWWLworjiP057ijF5JypQFQRDA/bocNM /Qvfrgk6CWVUXn8BFioU7sPJ+lO66Y3w/10+6f2DR59/HishSGNesuiS5TiPZmoiUenZb0 2n4W9iPekjLkH94DKC6gQMKyT2to8JQ= X-MC-Unique: NR7tEeL2NNqaqcNUqxh0KQ-1 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, peterx@redhat.com Subject: [PATCH v3 2/3] avocado_qemu: Add SMMUv3 tests Date: Mon, 21 Jun 2021 10:08:23 +0200 Message-Id: <20210621080824.789274-3-eric.auger@redhat.com> In-Reply-To: <20210621080824.789274-1-eric.auger@redhat.com> References: <20210621080824.789274-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 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 Content-Transfer-Encoding: quoted-printable 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.299, 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.01, RCVD_IN_MSPIKE_WL=-0.01, 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: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" 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=3D0. 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 --- v1 -> v2: - removed ssh import - combined add_command_args() and common_vm_setup() - moved tags in class' docstring and added tags=3Darch:aarch64 - use self.get_default_kernel_params() - added RIL tests with fed33 + introduce new tags --- tests/acceptance/smmu.py | 133 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 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..bcb5416a56 --- /dev/null +++ b/tests/acceptance/smmu.py @@ -0,0 +1,133 @@ +# 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=3Daccel:kvm + :avocado: tags=3Dcpu:host + :avocado: tags=3Darch:aarch64 + :avocado: tags=3Dsmmu + """ + + IOMMU_ADDON =3D ',iommu_platform=3Don,disable-modern=3Doff,disable-leg= acy=3Don' + kernel_path =3D None + initrd_path =3D None + kernel_params =3D None + + def set_up_boot(self): + path =3D self.download_boot() + self.vm.add_args('-device', 'virtio-blk-pci,bus=3Dpcie.0,scsi=3Dof= f,' + + 'drive=3Ddrv0,id=3Dvirtio-disk0,bootindex=3D1,' + 'werror=3Dstop,rerror=3Dstop' + self.IOMMU_ADDON) + self.vm.add_args('-drive', + 'file=3D%s,if=3Dnone,cache=3Dwritethrough,id=3Ddr= v0' % path) + + def setUp(self): + super(SMMU, self).setUp(None, 'virtio-net-pci' + self.IOMMU_ADDON) + + def common_vm_setup(self, custom_kernel=3DNone): + self.require_accelerator("kvm") + self.vm.add_args("-machine", "virt") + self.vm.add_args("-accel", "kvm") + self.vm.add_args("-cpu", "host") + self.vm.add_args("-smp", "8") + self.vm.add_args("-m", "4096") + self.vm.add_args("-machine", "iommu=3Dsmmuv3") + 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=3Drng0') + self.vm.add_args('-object', + 'rng-random,id=3Drng0,filename=3D/dev/urandom') + + if custom_kernel is None: + return + + kernel_url =3D self.get_pxeboot_url() + 'vmlinuz' + initrd_url =3D self.get_pxeboot_url() + 'initrd.img' + self.kernel_path =3D self.fetch_asset(kernel_url) + self.initrd_path =3D 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=3Dsmmu_noril + :avocado: tags=3Dsmmu_noril_tests + :avocado: tags=3Ddistro_version:31 + """ + self.common_vm_setup() + self.run_and_check() + + def test_smmu_noril_passthrough(self): + """ + :avocado: tags=3Dsmmu_noril_passthrough + :avocado: tags=3Dsmmu_noril_tests + :avocado: tags=3Ddistro_version:31 + """ + self.common_vm_setup(True) + self.kernel_params =3D self.get_default_kernel_params() + ' iommu.= passthrough=3Don' + self.run_and_check() + + def test_smmu_noril_nostrict(self): + """ + :avocado: tags=3Dsmmu_noril_nostrict + :avocado: tags=3Dsmmu_noril_tests + :avocado: tags=3Ddistro_version:31 + """ + self.common_vm_setup(True) + self.kernel_params =3D self.get_default_kernel_params() + ' iommu.= strict=3D0' + self.run_and_check() + + # 5.8 kernel featuring range invalidation + # >=3D v5.7 kernel + + def test_smmu_ril(self): + """ + :avocado: tags=3Dsmmu_ril + :avocado: tags=3Dsmmu_ril_tests + :avocado: tags=3Ddistro_version:33 + """ + self.common_vm_setup() + self.run_and_check() + + def test_smmu_ril_passthrough(self): + """ + :avocado: tags=3Dsmmu_ril_passthrough + :avocado: tags=3Dsmmu_ril_tests + :avocado: tags=3Ddistro_version:33 + """ + self.common_vm_setup(True) + self.kernel_params =3D self.get_default_kernel_params() + ' iommu.= passthrough=3Don' + self.run_and_check() + + def test_smmu_ril_nostrict(self): + """ + :avocado: tags=3Dsmmu_ril_nostrict + :avocado: tags=3Dsmmu_ril_tests + :avocado: tags=3Ddistro_version:33 + """ + self.common_vm_setup(True) + self.kernel_params =3D self.get_default_kernel_params() + ' iommu.= strict=3D0' + self.run_and_check() --=20 2.26.3 From nobody Sat May 4 21:29:41 2024 Delivered-To: importer2@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1624263192; cv=none; d=zohomail.com; s=zohoarc; b=n5q29OgHEcTTjPWZMrYO/2vOXKaouVOnUWjz51y/sfMgoWaRV6RbRQdRvOrw1uXKNrv+3bodAyfRpgxmv+sWcz+YoHgMoKO1b0i5xg57AydJNkOasAfBinKspDxhffiniVAEZT0z37kLaGyTGRaLofxDAEAD/wl3mzR07nuLsps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1624263192; h=Content-Type:Content-Transfer-Encoding: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=OzVRjO8Nx+XtUopzErXybwOFDHSS54lRPHCDfx79GJs=; b=V4de8yyKiWzwFhJRWS0F/iOVgrZYlbhsnz7bfZUq6RdiYCKEe7RVwPRwEPuG8r3zBsW7/vy40hY8wvwK0Nly8TNpsVHvcHcAIOJXq7mkoQf9RTr2zwBTD3pRrlrRcyUrGm3tnGMc5lAT4Owa7tZyai0rb/jj/K7zEqgJevmUeok= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer2=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1624263192369702.0365371744846; Mon, 21 Jun 2021 01:13:12 -0700 (PDT) Received: from localhost ([::1]:58846 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lvF3P-0004dd-AR for importer2@patchew.org; Mon, 21 Jun 2021 04:13:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41862) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvEzF-00079A-F9 for qemu-devel@nongnu.org; Mon, 21 Jun 2021 04:08:53 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:29556) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lvEzD-0000zs-EB for qemu-devel@nongnu.org; Mon, 21 Jun 2021 04:08:53 -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-163-WIhUwMxAOCaWS2W91B_InA-1; Mon, 21 Jun 2021 04:08:49 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 9A2729126B; Mon, 21 Jun 2021 08:08:48 +0000 (UTC) Received: from laptop.redhat.com (ovpn-112-27.ams2.redhat.com [10.36.112.27]) by smtp.corp.redhat.com (Postfix) with ESMTP id A1EFD60C9F; Mon, 21 Jun 2021 08:08:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1624262930; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=OzVRjO8Nx+XtUopzErXybwOFDHSS54lRPHCDfx79GJs=; b=CLdG0X0CvO4QG9Yd23Cz1ZciLx3j+TIFBxokQNtC5J0Y3sVK4eYZ1XhbVCCPpSnhM7nZkj a9oho3nLJQKp4f6pFH8gmVlH+P4jpfPJbNM9/Sg/wsvAXZb4NHXEF/lfPPQ4w6OWiwq2g3 dsMWpX+BxbRlqkOY1C02jzX8+kBzlQo= X-MC-Unique: WIhUwMxAOCaWS2W91B_InA-1 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, peterx@redhat.com Subject: [PATCH v3 3/3] avocado_qemu: Add Intel iommu tests Date: Mon, 21 Jun 2021 10:08:24 +0200 Message-Id: <20210621080824.789274-4-eric.auger@redhat.com> In-Reply-To: <20210621080824.789274-1-eric.auger@redhat.com> References: <20210621080824.789274-1-eric.auger@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 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 Content-Transfer-Encoding: quoted-printable 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+importer2=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=eric.auger@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -30 X-Spam_score: -3.1 X-Spam_bar: --- X-Spam_report: (-3.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.299, 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.01, RCVD_IN_MSPIKE_WL=-0.01, 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: , Errors-To: qemu-devel-bounces+importer2=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @redhat.com) Content-Type: text/plain; charset="utf-8" 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=3Darch:x86_64 + :avocado: tags=3Ddistro:fedora + :avocado: tags=3Ddistro_version:31 + :avocado: tags=3Dmachine:q35 + :avocado: tags=3Daccel:kvm + :avocado: tags=3Dintel_iommu + """ + + IOMMU_ADDON =3D ',iommu_platform=3Don,disable-modern=3Doff,disable-leg= acy=3Don' + kernel_path =3D None + initrd_path =3D None + kernel_params =3D None + + def set_up_boot(self): + path =3D self.download_boot() + self.vm.add_args('-device', 'virtio-blk-pci,bus=3Dpcie.0,scsi=3Dof= f,' + + 'drive=3Ddrv0,id=3Dvirtio-disk0,bootindex=3D1,' + 'werror=3Dstop,rerror=3Dstop' + self.IOMMU_ADDON) + self.vm.add_args('-device', 'virtio-gpu-pci' + self.IOMMU_ADDON) + self.vm.add_args('-drive', + 'file=3D%s,if=3Dnone,cache=3Dwritethrough,id=3Ddr= v0' % 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=3Drng0') + self.vm.add_args('-object', + 'rng-random,id=3Drng0,filename=3D/dev/urandom') + + def common_vm_setup(self, custom_kernel=3DNone): + self.require_accelerator("kvm") + self.add_common_args() + self.vm.add_args("-accel", "kvm") + + if custom_kernel is None: + return + + kernel_url =3D self.get_pxeboot_url() + 'vmlinuz' + initrd_url =3D self.get_pxeboot_url() + 'initrd.img' + self.kernel_path =3D self.fetch_asset(kernel_url) + self.initrd_path =3D 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=3Dintel_iommu_intremap + """ + + self.common_vm_setup(True) + self.vm.add_args('-device', 'intel-iommu,intremap=3Don') + self.vm.add_args('-machine', 'kernel_irqchip=3Dsplit') + + self.kernel_params =3D self.get_default_kernel_params() + ' quiet = intel_iommu=3Don' + self.run_and_check() + + def test_intel_iommu_strict(self): + """ + :avocado: tags=3Dintel_iommu_strict + """ + + self.common_vm_setup(True) + self.vm.add_args('-device', 'intel-iommu,intremap=3Don') + self.vm.add_args('-machine', 'kernel_irqchip=3Dsplit') + self.kernel_params =3D self.get_default_kernel_params() + ' quiet = intel_iommu=3Don,strict' + self.run_and_check() + + def test_intel_iommu_strict_cm(self): + """ + :avocado: tags=3Dintel_iommu_strict_cm + """ + + self.common_vm_setup(True) + self.vm.add_args('-device', 'intel-iommu,intremap=3Don,caching-mod= e=3Don') + self.vm.add_args('-machine', 'kernel_irqchip=3Dsplit') + self.kernel_params =3D self.get_default_kernel_params() + ' quiet = intel_iommu=3Don,strict' + self.run_and_check() + + def test_intel_iommu_pt(self): + """ + :avocado: tags=3Dintel_iommu_pt + """ + + self.common_vm_setup(True) + self.vm.add_args('-device', 'intel-iommu,intremap=3Don') + self.vm.add_args('-machine', 'kernel_irqchip=3Dsplit') + self.kernel_params =3D self.get_default_kernel_params() + ' quiet = intel_iommu=3Don iommu=3Dpt' + self.run_and_check() --=20 2.26.3