From nobody Sun Oct 5 01:50:00 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1758825538; cv=none; d=zohomail.com; s=zohoarc; b=Sy/HbDzUOFauqx+jG0/QlKqIGZ31WLcEGUFale1aHn5p7Zd7HTqzqbxG7mr3QQfWELa8uLJ3EkP6Q7Nlt/oOKn5+jxxaQ/m4Qi8AQI+smu49XcgN2bi2qLVV2N7RU6dN/JVshNiBtEhWoOOk6zBacYHVK89+0PmFRcuuLU4rXSc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1758825538; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=SCjlZ52+gbVCdN2TmAayHWsMMCTOKnraWu+mh9QjEbU=; b=LvDH7+uadf1a8zgBIbbNs/pB302wUino67b3NaP0arHWhLAy+g+3qRN31agqF7aDrRe44CAGouvl75KqZltFELxkLc1hEMuAp4REkoEkPzrRHo5pX5E2pkDnKfyOLAGrtWZHMfyJj9XItJAXQywpSkiTf1R1OVEcf4XI5jvE6ls= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1758825538644334.87749619694955; Thu, 25 Sep 2025 11:38:58 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id AC66C418A9; Thu, 25 Sep 2025 14:38:57 -0400 (EDT) Received: from [172.19.199.14] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 7693B442CF; Thu, 25 Sep 2025 14:09:56 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 4D80744201; Thu, 25 Sep 2025 14:09:45 -0400 (EDT) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 8B43444056 for ; Thu, 25 Sep 2025 14:07:46 -0400 (EDT) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-60-yrdZXHGNOyCQ_uUH--nCCQ-1; Thu, 25 Sep 2025 14:07:44 -0400 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id E48D81800451 for ; Thu, 25 Sep 2025 18:07:43 +0000 (UTC) Received: from harajuku.usersys.redhat.com.homenet.telecomitalia.it (unknown [10.45.225.196]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 1DD2B300021A for ; Thu, 25 Sep 2025 18:07:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-3.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1758823666; 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=SCjlZ52+gbVCdN2TmAayHWsMMCTOKnraWu+mh9QjEbU=; b=C2Afgf0dnBzU/sDvzTBMu4u7IHcS1M8k3htdra0rd6vAO+PFBgLIYSf53daIImZJNZlKx2 oHzLB+H64ChXKbKtG/S2nSWA/wVOudyCbvIYXg5pbCYK6zCLnfFgMn05okawbwDIHab/9E eouc3cNj/FU7oXMTJXZPy5nzt06eRlE= X-MC-Unique: yrdZXHGNOyCQ_uUH--nCCQ-1 X-Mimecast-MFC-AGG-ID: yrdZXHGNOyCQ_uUH--nCCQ_1758823664 To: devel@lists.libvirt.org Subject: [PATCH v2 11/38] qemu: Fix PCI/USB handling for Arm realview boards Date: Thu, 25 Sep 2025 20:06:57 +0200 Message-ID: <20250925180724.500758-12-abologna@redhat.com> In-Reply-To: <20250925180724.500758-1-abologna@redhat.com> References: <20250925180724.500758-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: Aidz97tV6rURNfGKHz3oUsuAcbmgUy81-LAaB1qgROM_1758823664 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: AQA2HB7SVIEXBHR6O2P7T4RFE4C6ZMTX X-Message-ID-Hash: AQA2HB7SVIEXBHR6O2P7T4RFE4C6ZMTX X-MailFrom: abologna@redhat.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Andrea Bolognani via Devel Reply-To: Andrea Bolognani X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1758825539683116600 Content-Type: text/plain; charset="utf-8"; x-default="true" Only the -eb variants of the realview board support PCI devices, so those are the only ones that should automatically get a USB controller (addDefaultUSB). libvirt will currently add one for the other realview variants too, but that will result in QEMU reporting an error due to lack of PCI support as soon as the domain is started. Additionally, they should get a PCI controller added automatically (addPCIRoot) too, same as versatilepb. Finally, qemuDomainSupportsPCI() should correctly report the fact that these machine types support PCI. As a consequence of these fixes, the USB controllers now correctly get assigned PCI addresses across the board. Signed-off-by: Andrea Bolognani Reviewed-by: Michal Privoznik Reviewed-by: Peter Krempa --- src/qemu/qemu_domain.c | 3 ++- src/qemu/qemu_postparse.c | 10 ++++------ ...h64-realview-minimal.aarch64-latest.abi-update.args | 2 +- ...ch64-realview-minimal.aarch64-latest.abi-update.xml | 5 ++++- .../aarch64-realview-minimal.aarch64-latest.args | 2 +- .../aarch64-realview-minimal.aarch64-latest.xml | 5 ++++- ...b-controller-automatic-realview.aarch64-latest.args | 2 +- ...sb-controller-automatic-realview.aarch64-latest.xml | 5 ++++- ...r-automatic-unavailable-realview.aarch64-latest.xml | 5 ++++- ...oller-default-fallback-realview.aarch64-latest.args | 2 +- ...roller-default-fallback-realview.aarch64-latest.xml | 5 ++++- ...usb-controller-default-realview.aarch64-latest.args | 2 +- .../usb-controller-default-realview.aarch64-latest.xml | 5 ++++- ...ler-default-unavailable-realview.aarch64-latest.xml | 5 ++++- 14 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index e45757ccd5..81a8ca906d 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -7688,7 +7688,8 @@ qemuDomainSupportsPCI(const virDomainDef *def) * machine types support PCI */ if (ARCH_IS_ARM(def->os.arch)) { if (qemuDomainIsARMVirt(def) || - STREQ(def->os.machine, "versatilepb")) { + STREQ(def->os.machine, "versatilepb") || + STRPREFIX(def->os.machine, "realview-eb")) { return true; } return false; diff --git a/src/qemu/qemu_postparse.c b/src/qemu/qemu_postparse.c index 5f59b79d56..3c481ead5e 100644 --- a/src/qemu/qemu_postparse.c +++ b/src/qemu/qemu_postparse.c @@ -1291,13 +1291,11 @@ qemuDomainDefAddDefaultDevices(virQEMUDriver *drive= r, case VIR_ARCH_ARMV7L: case VIR_ARCH_ARMV7B: case VIR_ARCH_AARCH64: - if (STREQ(def->os.machine, "versatilepb")) - addPCIRoot =3D true; - - /* Add default USB for the two machine types which historically - * supported -usb */ + /* Add default PCI and USB for the two machine types which + * historically supported -usb */ if (STREQ(def->os.machine, "versatilepb") || - STRPREFIX(def->os.machine, "realview")) { + STRPREFIX(def->os.machine, "realview-eb")) { + addPCIRoot =3D true; addDefaultUSB =3D true; if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_PCI_OHCI)) usbModel =3D VIR_DOMAIN_CONTROLLER_MODEL_USB_PCI_OHCI; diff --git a/tests/qemuxmlconfdata/aarch64-realview-minimal.aarch64-latest.= abi-update.args b/tests/qemuxmlconfdata/aarch64-realview-minimal.aarch64-la= test.abi-update.args index fc88d9cf6b..0d956241fc 100644 --- a/tests/qemuxmlconfdata/aarch64-realview-minimal.aarch64-latest.abi-upd= ate.args +++ b/tests/qemuxmlconfdata/aarch64-realview-minimal.aarch64-latest.abi-upd= ate.args @@ -25,7 +25,7 @@ XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-aarch64= test/.config \ -rtc base=3Dutc \ -no-shutdown \ -boot strict=3Don \ --device '{"driver":"pci-ohci","id":"usb"}' \ +-device '{"driver":"pci-ohci","id":"usb","bus":"pci","addr":"0x1"}' \ -audiodev '{"id":"audio1","driver":"none"}' \ -sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ -msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/aarch64-realview-minimal.aarch64-latest.= abi-update.xml b/tests/qemuxmlconfdata/aarch64-realview-minimal.aarch64-lat= est.abi-update.xml index b16454b94c..c31c7b2bbc 100644 --- a/tests/qemuxmlconfdata/aarch64-realview-minimal.aarch64-latest.abi-upd= ate.xml +++ b/tests/qemuxmlconfdata/aarch64-realview-minimal.aarch64-latest.abi-upd= ate.xml @@ -15,7 +15,10 @@ destroy /usr/bin/qemu-system-aarch64 - + +
+ +