From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233267508527.708121204497; Thu, 23 Oct 2025 08:27:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD2-0005rm-UJ; Thu, 23 Oct 2025 11:26:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCx-0005of-P0; Thu, 23 Oct 2025 11:26:31 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCt-00018T-TI; Thu, 23 Oct 2025 11:26:31 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 9A8815972E8; Thu, 23 Oct 2025 17:26:23 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id VPNQlTcISdtv; Thu, 23 Oct 2025 17:26:21 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 945565972EA; Thu, 23 Oct 2025 17:26:21 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <5a60e395d72e5eb4d01093434fbb645d72ac567a.1761232472.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 01/13] hw/pci-host/raven: Simplify creating PCI facing part MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:21 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233273340158500 Content-Type: text/plain; charset="utf-8" There is no need to init and realize the PCI facing part of the host bridge separately as it does not expose any properties that need to be available before realize. It can be simpilfied using pci_create_simple. Signed-off-by: BALATON Zoltan Reviewed-by: Mark Cave-Ayland --- hw/pci-host/raven.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index eacffc86d8..c0492d1456 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -65,7 +65,6 @@ struct PRePPCIState { MemoryRegion bm_ram_alias; MemoryRegion bm_pci_memory_alias; AddressSpace bm_as; - RavenPCIState pci_dev; =20 int contiguous_map; }; @@ -260,8 +259,7 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) "pci-intack", 1); memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->pci_int= ack); =20 - /* TODO Remove once realize propagates to child devices. */ - qdev_realize(DEVICE(&s->pci_dev), BUS(&s->pci_bus), errp); + pci_create_simple(&s->pci_bus, PCI_DEVFN(0, 0), TYPE_RAVEN_PCI_DEVICE); } =20 static void raven_pcihost_initfn(Object *obj) @@ -269,7 +267,6 @@ static void raven_pcihost_initfn(Object *obj) PCIHostState *h =3D PCI_HOST_BRIDGE(obj); PREPPCIState *s =3D RAVEN_PCI_HOST_BRIDGE(obj); MemoryRegion *address_space_mem =3D get_system_memory(); - DeviceState *pci_dev; =20 memory_region_init(&s->pci_io, obj, "pci-io", 0x3f800000); memory_region_init_io(&s->pci_io_non_contiguous, obj, &raven_io_ops, s, @@ -306,12 +303,6 @@ static void raven_pcihost_initfn(Object *obj) pci_setup_iommu(&s->pci_bus, &raven_iommu_ops, s); =20 h->bus =3D &s->pci_bus; - - object_initialize(&s->pci_dev, sizeof(s->pci_dev), TYPE_RAVEN_PCI_DEVI= CE); - pci_dev =3D DEVICE(&s->pci_dev); - object_property_set_int(OBJECT(&s->pci_dev), "addr", PCI_DEVFN(0, 0), - NULL); - qdev_prop_set_bit(pci_dev, "multifunction", false); } =20 static void raven_realize(PCIDevice *d, Error **errp) --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233286368408.49414245572416; Thu, 23 Oct 2025 08:28:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD2-0005ro-UX; Thu, 23 Oct 2025 11:26:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCw-0005o6-JW; Thu, 23 Oct 2025 11:26:30 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCt-00018c-TH; Thu, 23 Oct 2025 11:26:30 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id B00355972E1; Thu, 23 Oct 2025 17:26:24 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id 4zbIEp4x2pqS; Thu, 23 Oct 2025 17:26:22 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id AF2E65972ED; Thu, 23 Oct 2025 17:26:22 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <3c4cb144c24a2a729669549c4c0e6e47d230e68e.1761232472.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 02/13] hw/pci-host/raven: Simplify PCI facing part MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:22 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233288156158500 Content-Type: text/plain; charset="utf-8" The raven PCI device does not need a state struct as it has no data to store there any more, so we can remove that to simplify code. Signed-off-by: BALATON Zoltan Reviewed-by: Mark Cave-Ayland --- hw/pci-host/raven.c | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index c0492d1456..fa76e5170c 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -31,7 +31,6 @@ #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" #include "hw/qdev-properties.h" -#include "migration/vmstate.h" #include "hw/intc/i8259.h" #include "hw/irq.h" #include "hw/or-irq.h" @@ -40,12 +39,6 @@ #define TYPE_RAVEN_PCI_DEVICE "raven" #define TYPE_RAVEN_PCI_HOST_BRIDGE "raven-pcihost" =20 -OBJECT_DECLARE_SIMPLE_TYPE(RavenPCIState, RAVEN_PCI_DEVICE) - -struct RavenPCIState { - PCIDevice dev; -}; - typedef struct PRePPCIState PREPPCIState; DECLARE_INSTANCE_CHECKER(PREPPCIState, RAVEN_PCI_HOST_BRIDGE, TYPE_RAVEN_PCI_HOST_BRIDGE) @@ -312,16 +305,6 @@ static void raven_realize(PCIDevice *d, Error **errp) d->config[PCI_CAPABILITY_LIST] =3D 0x00; } =20 -static const VMStateDescription vmstate_raven =3D { - .name =3D "raven", - .version_id =3D 0, - .minimum_version_id =3D 0, - .fields =3D (const VMStateField[]) { - VMSTATE_PCI_DEVICE(dev, RavenPCIState), - VMSTATE_END_OF_LIST() - }, -}; - static void raven_class_init(ObjectClass *klass, const void *data) { PCIDeviceClass *k =3D PCI_DEVICE_CLASS(klass); @@ -333,7 +316,6 @@ static void raven_class_init(ObjectClass *klass, const = void *data) k->revision =3D 0x00; k->class_id =3D PCI_CLASS_BRIDGE_HOST; dc->desc =3D "PReP Host Bridge - Motorola Raven"; - dc->vmsd =3D &vmstate_raven; /* * Reason: PCI-facing part of the host bridge, not usable without * the host-facing part, which can't be device_add'ed, yet. @@ -344,7 +326,6 @@ static void raven_class_init(ObjectClass *klass, const = void *data) static const TypeInfo raven_info =3D { .name =3D TYPE_RAVEN_PCI_DEVICE, .parent =3D TYPE_PCI_DEVICE, - .instance_size =3D sizeof(RavenPCIState), .class_init =3D raven_class_init, .interfaces =3D (const InterfaceInfo[]) { { INTERFACE_CONVENTIONAL_PCI_DEVICE }, --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233314526503.0866452365806; Thu, 23 Oct 2025 08:28:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD5-0005tW-Jg; Thu, 23 Oct 2025 11:26:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCy-0005p1-Fr; Thu, 23 Oct 2025 11:26:32 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCt-000190-Ud; Thu, 23 Oct 2025 11:26:31 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 7A72B5972F2; Thu, 23 Oct 2025 17:26:26 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id oJwzfaXWRdLL; Thu, 23 Oct 2025 17:26:23 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id BB18C5972EA; Thu, 23 Oct 2025 17:26:23 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 03/13] hw/pci-host/raven: Simplify host bridge type declaration MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:23 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233316757158500 Use OBJECT_DECLARE_SIMPLE_TYPE macro instead of open coding it and change state struct name to match the previous typedef. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Mark Cave-Ayland --- hw/pci-host/raven.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index fa76e5170c..ea5ad69547 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -39,11 +39,9 @@ #define TYPE_RAVEN_PCI_DEVICE "raven" #define TYPE_RAVEN_PCI_HOST_BRIDGE "raven-pcihost" =20 -typedef struct PRePPCIState PREPPCIState; -DECLARE_INSTANCE_CHECKER(PREPPCIState, RAVEN_PCI_HOST_BRIDGE, - TYPE_RAVEN_PCI_HOST_BRIDGE) +OBJECT_DECLARE_SIMPLE_TYPE(PREPPCIState, RAVEN_PCI_HOST_BRIDGE) =20 -struct PRePPCIState { +struct PREPPCIState { PCIHostState parent_obj; =20 OrIRQState *or_irq; --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233362141693.2228834444772; Thu, 23 Oct 2025 08:29:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD5-0005sf-6b; Thu, 23 Oct 2025 11:26:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCy-0005p3-Iw; Thu, 23 Oct 2025 11:26:32 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCv-00019G-8k; Thu, 23 Oct 2025 11:26:31 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 845B75972DE; Thu, 23 Oct 2025 17:26:27 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id h7i0aibx13cA; Thu, 23 Oct 2025 17:26:24 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id C64E95972ED; Thu, 23 Oct 2025 17:26:24 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <4ff8a3e1de847846f08d9ea6b389efeb3eb12aed.1761232472.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 04/13] hw/pci-host/raven: Use DEFINE_TYPES macro MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:24 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233367169158500 Convert to using DEFINE_TYPES macro and move raven_pcihost_class_init so methods of each object are grouped together. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Mark Cave-Ayland --- hw/pci-host/raven.c | 57 +++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index ea5ad69547..1d09a28bff 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -296,6 +296,15 @@ static void raven_pcihost_initfn(Object *obj) h->bus =3D &s->pci_bus; } =20 +static void raven_pcihost_class_init(ObjectClass *klass, const void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); + dc->realize =3D raven_pcihost_realizefn; + dc->fw_name =3D "pci"; +} + static void raven_realize(PCIDevice *d, Error **errp) { d->config[PCI_CACHE_LINE_SIZE] =3D 0x08; @@ -321,37 +330,23 @@ static void raven_class_init(ObjectClass *klass, cons= t void *data) dc->user_creatable =3D false; } =20 -static const TypeInfo raven_info =3D { - .name =3D TYPE_RAVEN_PCI_DEVICE, - .parent =3D TYPE_PCI_DEVICE, - .class_init =3D raven_class_init, - .interfaces =3D (const InterfaceInfo[]) { - { INTERFACE_CONVENTIONAL_PCI_DEVICE }, - { }, +static const TypeInfo raven_types[] =3D { + { + .name =3D TYPE_RAVEN_PCI_HOST_BRIDGE, + .parent =3D TYPE_PCI_HOST_BRIDGE, + .instance_size =3D sizeof(PREPPCIState), + .instance_init =3D raven_pcihost_initfn, + .class_init =3D raven_pcihost_class_init, + }, + { + .name =3D TYPE_RAVEN_PCI_DEVICE, + .parent =3D TYPE_PCI_DEVICE, + .class_init =3D raven_class_init, + .interfaces =3D (const InterfaceInfo[]) { + { INTERFACE_CONVENTIONAL_PCI_DEVICE }, + { }, + }, }, }; =20 -static void raven_pcihost_class_init(ObjectClass *klass, const void *data) -{ - DeviceClass *dc =3D DEVICE_CLASS(klass); - - set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); - dc->realize =3D raven_pcihost_realizefn; - dc->fw_name =3D "pci"; -} - -static const TypeInfo raven_pcihost_info =3D { - .name =3D TYPE_RAVEN_PCI_HOST_BRIDGE, - .parent =3D TYPE_PCI_HOST_BRIDGE, - .instance_size =3D sizeof(PREPPCIState), - .instance_init =3D raven_pcihost_initfn, - .class_init =3D raven_pcihost_class_init, -}; - -static void raven_register_types(void) -{ - type_register_static(&raven_pcihost_info); - type_register_static(&raven_info); -} - -type_init(raven_register_types) +DEFINE_TYPES(raven_types) --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233285905874.2917461095402; Thu, 23 Oct 2025 08:28:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD8-0005vf-DD; Thu, 23 Oct 2025 11:26:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD1-0005r1-CH; Thu, 23 Oct 2025 11:26:36 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCy-00019r-HU; Thu, 23 Oct 2025 11:26:35 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id D60525972F6; Thu, 23 Oct 2025 17:26:27 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id nuyZ59E0OA5t; Thu, 23 Oct 2025 17:26:25 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id D3D9F5972F4; Thu, 23 Oct 2025 17:26:25 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <4ffa168d68947d95a16c51d73cedd141b0df0ea0.1761232472.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 05/13] hw/pci-host/raven: Simplify PCI bus creation MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:25 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233290327154100 Content-Type: text/plain; charset="utf-8" Instead of doing it manually use pci_register_root_bus() to create and register the PCI bus. Also drop pci_bus from PREPPCIState and use the existing bus field in the parent PCIHostState. Signed-off-by: BALATON Zoltan Reviewed-by: Mark Cave-Ayland --- hw/pci-host/raven.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 1d09a28bff..22ad244eb6 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -46,7 +46,6 @@ struct PREPPCIState { =20 OrIRQState *or_irq; qemu_irq pci_irqs[PCI_NUM_PINS]; - PCIBus pci_bus; AddressSpace pci_io_as; MemoryRegion pci_io; MemoryRegion pci_io_non_contiguous; @@ -231,8 +230,9 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) =20 qdev_init_gpio_in(d, raven_change_gpio, 1); =20 - pci_bus_irqs(&s->pci_bus, raven_set_irq, s, PCI_NUM_PINS); - pci_bus_map_irqs(&s->pci_bus, raven_map_irq); + h->bus =3D pci_register_root_bus(d, NULL, raven_set_irq, raven_map_irq, + s, &s->pci_memory, &s->pci_io, 0, 4, + TYPE_PCI_BUS); =20 memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops, = s, "pci-conf-idx", 4); @@ -250,12 +250,14 @@ static void raven_pcihost_realizefn(DeviceState *d, E= rror **errp) "pci-intack", 1); memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->pci_int= ack); =20 - pci_create_simple(&s->pci_bus, PCI_DEVFN(0, 0), TYPE_RAVEN_PCI_DEVICE); + pci_create_simple(h->bus, PCI_DEVFN(0, 0), TYPE_RAVEN_PCI_DEVICE); + + address_space_init(&s->bm_as, &s->bm, "raven-bm"); + pci_setup_iommu(h->bus, &raven_iommu_ops, s); } =20 static void raven_pcihost_initfn(Object *obj) { - PCIHostState *h =3D PCI_HOST_BRIDGE(obj); PREPPCIState *s =3D RAVEN_PCI_HOST_BRIDGE(obj); MemoryRegion *address_space_mem =3D get_system_memory(); =20 @@ -278,8 +280,6 @@ static void raven_pcihost_initfn(Object *obj) memory_region_add_subregion_overlap(address_space_mem, PCI_IO_BASE_ADD= R, &s->pci_io_non_contiguous, 1); memory_region_add_subregion(address_space_mem, 0xc0000000, &s->pci_mem= ory); - pci_root_bus_init(&s->pci_bus, sizeof(s->pci_bus), DEVICE(obj), NULL, - &s->pci_memory, &s->pci_io, 0, TYPE_PCI_BUS); =20 /* Bus master address space */ memory_region_init(&s->bm, obj, "bm-raven", 4 * GiB); @@ -290,10 +290,6 @@ static void raven_pcihost_initfn(Object *obj) get_system_memory(), 0, 0x80000000); memory_region_add_subregion(&s->bm, 0 , &s->bm_pci_memory_alia= s); memory_region_add_subregion(&s->bm, 0x80000000, &s->bm_ram_alias); - address_space_init(&s->bm_as, &s->bm, "raven-bm"); - pci_setup_iommu(&s->pci_bus, &raven_iommu_ops, s); - - h->bus =3D &s->pci_bus; } =20 static void raven_pcihost_class_init(ObjectClass *klass, const void *data) --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233295870331.7613607292054; Thu, 23 Oct 2025 08:28:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxDC-0005wx-2l; Thu, 23 Oct 2025 11:26:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD1-0005r4-KO; Thu, 23 Oct 2025 11:26:36 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCy-00019q-Jc; Thu, 23 Oct 2025 11:26:35 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id E5FC45972F5; Thu, 23 Oct 2025 17:26:28 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id zvoU887IQbrb; Thu, 23 Oct 2025 17:26:26 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id DF6E95972EA; Thu, 23 Oct 2025 17:26:26 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 06/13] hw/pci-host/raven: Simplify PCI interrupt routing MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:26 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233298565158500 Content-Type: text/plain; charset="utf-8" No need to use an or-irq to map interrupt lines to a single IRQ as the PCI code can handle this internally so simplify by dropping the or-irq similar to how ppc440_pcix.c does it. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 39 +++++++++++++++------------------------ hw/ppc/prep.c | 5 ++++- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 22ad244eb6..2057a1869f 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -30,11 +30,8 @@ #include "hw/pci/pci_device.h" #include "hw/pci/pci_bus.h" #include "hw/pci/pci_host.h" -#include "hw/qdev-properties.h" #include "hw/intc/i8259.h" #include "hw/irq.h" -#include "hw/or-irq.h" -#include "qom/object.h" =20 #define TYPE_RAVEN_PCI_DEVICE "raven" #define TYPE_RAVEN_PCI_HOST_BRIDGE "raven-pcihost" @@ -44,8 +41,7 @@ OBJECT_DECLARE_SIMPLE_TYPE(PREPPCIState, RAVEN_PCI_HOST_B= RIDGE) struct PREPPCIState { PCIHostState parent_obj; =20 - OrIRQState *or_irq; - qemu_irq pci_irqs[PCI_NUM_PINS]; + qemu_irq irq; AddressSpace pci_io_as; MemoryRegion pci_io; MemoryRegion pci_io_non_contiguous; @@ -175,16 +171,25 @@ static const MemoryRegionOps raven_io_ops =3D { .valid.unaligned =3D true, }; =20 +/* + * All four IRQ[ABCD] pins from all slots are tied to a single board + * IRQ, so our mapping function here maps everything to IRQ 0. + * The code in pci_change_irq_level() tracks the number of times + * the mapped IRQ is asserted and deasserted, so if multiple devices + * assert an IRQ at the same time the behaviour is correct. + * + * This may need further refactoring for boards that use multiple IRQ line= s. + */ static int raven_map_irq(PCIDevice *pci_dev, int irq_num) { - return (irq_num + (pci_dev->devfn >> 3)) & 1; + return 0; } =20 static void raven_set_irq(void *opaque, int irq_num, int level) { - PREPPCIState *s =3D opaque; + qemu_irq *irq =3D opaque; =20 - qemu_set_irq(s->pci_irqs[irq_num], level); + qemu_set_irq(*irq, level); } =20 static AddressSpace *raven_pcihost_set_iommu(PCIBus *bus, void *opaque, @@ -212,26 +217,12 @@ static void raven_pcihost_realizefn(DeviceState *d, E= rror **errp) PCIHostState *h =3D PCI_HOST_BRIDGE(dev); PREPPCIState *s =3D RAVEN_PCI_HOST_BRIDGE(dev); MemoryRegion *address_space_mem =3D get_system_memory(); - int i; - - /* - * According to PReP specification section 6.1.6 "System Interrupt - * Assignments", all PCI interrupts are routed via IRQ 15 - */ - s->or_irq =3D OR_IRQ(object_new(TYPE_OR_IRQ)); - object_property_set_int(OBJECT(s->or_irq), "num-lines", PCI_NUM_PINS, - &error_fatal); - qdev_realize(DEVICE(s->or_irq), NULL, &error_fatal); - sysbus_init_irq(dev, &s->or_irq->out_irq); - - for (i =3D 0; i < PCI_NUM_PINS; i++) { - s->pci_irqs[i] =3D qdev_get_gpio_in(DEVICE(s->or_irq), i); - } =20 qdev_init_gpio_in(d, raven_change_gpio, 1); =20 + sysbus_init_irq(dev, &s->irq); h->bus =3D pci_register_root_bus(d, NULL, raven_set_irq, raven_map_irq, - s, &s->pci_memory, &s->pci_io, 0, 4, + &s->irq, &s->pci_memory, &s->pci_io, 0,= 1, TYPE_PCI_BUS); =20 memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops, = s, diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index c730cb3429..816455d289 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -304,7 +304,10 @@ static void ibm_40p_init(MachineState *machine) qdev_realize_and_unref(i82378_dev, BUS(pci_bus), &error_fatal); qdev_connect_gpio_out(i82378_dev, 0, qdev_get_gpio_in(DEVICE(cpu), PPC6xx_INPUT_INT)); - + /* + * According to PReP specification section 6.1.6 "System Interrupt + * Assignments", all PCI interrupts are routed via IRQ 15 + */ sysbus_connect_irq(pcihost, 0, qdev_get_gpio_in(i82378_dev, 15)); isa_bus =3D ISA_BUS(qdev_get_child_bus(i82378_dev, "isa.0")); =20 --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233342014566.9117954352179; Thu, 23 Oct 2025 08:29:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD5-0005tl-Ty; Thu, 23 Oct 2025 11:26:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD0-0005pS-39; Thu, 23 Oct 2025 11:26:34 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCy-00019o-7f; Thu, 23 Oct 2025 11:26:33 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id F10AD5972ED; Thu, 23 Oct 2025 17:26:29 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id gHLPOF2eK34r; Thu, 23 Oct 2025 17:26:27 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id EEC3B5972F4; Thu, 23 Oct 2025 17:26:27 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <797587b52159d2db79ed924b4962be7e7ba84207.1761232472.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 07/13] hw/pci-host/raven: Do not use parent object for mmcfg region MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:27 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233344860158500 Content-Type: text/plain; charset="utf-8" The mmcfg field in PCIHostState is only used by raven for the PCI config direct access but is not actually needed as the memory region lifetime can be managed by the object given during init so use that and remove the unused field from PCIHostState. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 7 ++++--- include/hw/pci/pci_host.h | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 2057a1869f..23020fd09f 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -216,7 +216,7 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) SysBusDevice *dev =3D SYS_BUS_DEVICE(d); PCIHostState *h =3D PCI_HOST_BRIDGE(dev); PREPPCIState *s =3D RAVEN_PCI_HOST_BRIDGE(dev); - MemoryRegion *address_space_mem =3D get_system_memory(); + MemoryRegion *mr, *address_space_mem =3D get_system_memory(); =20 qdev_init_gpio_in(d, raven_change_gpio, 1); =20 @@ -233,9 +233,10 @@ static void raven_pcihost_realizefn(DeviceState *d, Er= ror **errp) "pci-conf-data", 4); memory_region_add_subregion(&s->pci_io, 0xcfc, &h->data_mem); =20 - memory_region_init_io(&h->mmcfg, OBJECT(h), &raven_mmcfg_ops, h->bus, + mr =3D g_new0(MemoryRegion, 1); + memory_region_init_io(mr, OBJECT(h), &raven_mmcfg_ops, h->bus, "pci-mmcfg", 0x00400000); - memory_region_add_subregion(address_space_mem, 0x80800000, &h->mmcfg); + memory_region_add_subregion(address_space_mem, 0x80800000, mr); =20 memory_region_init_io(&s->pci_intack, OBJECT(s), &raven_intack_ops, s, "pci-intack", 1); diff --git a/include/hw/pci/pci_host.h b/include/hw/pci/pci_host.h index 954dd446fa..a13f879872 100644 --- a/include/hw/pci/pci_host.h +++ b/include/hw/pci/pci_host.h @@ -41,7 +41,6 @@ struct PCIHostState { =20 MemoryRegion conf_mem; MemoryRegion data_mem; - MemoryRegion mmcfg; uint32_t config_reg; bool mig_enabled; PCIBus *bus; --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233307196586.8016609600832; Thu, 23 Oct 2025 08:28:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD6-0005tq-6i; Thu, 23 Oct 2025 11:26:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD0-0005pc-A3; Thu, 23 Oct 2025 11:26:34 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCy-00019y-Hj; Thu, 23 Oct 2025 11:26:34 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id E9F335972F7; Thu, 23 Oct 2025 17:26:30 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id 7nZCeEAGf7nT; Thu, 23 Oct 2025 17:26:29 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id F384E5972EA; Thu, 23 Oct 2025 17:26:28 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 08/13] hw/pci-host/raven: Fix PCI config direct access region MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:28 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233310019154100 The PCI configuration direct access region occupies 8 MiB at offset 0x800000 in PCI IO space so model that accordingly. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Mark Cave-Ayland --- hw/pci-host/raven.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 23020fd09f..bb0be40eb4 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -235,8 +235,8 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) =20 mr =3D g_new0(MemoryRegion, 1); memory_region_init_io(mr, OBJECT(h), &raven_mmcfg_ops, h->bus, - "pci-mmcfg", 0x00400000); - memory_region_add_subregion(address_space_mem, 0x80800000, mr); + "pci-mmcfg", 8 * MiB); + memory_region_add_subregion(&s->pci_io, 0x800000, mr); =20 memory_region_init_io(&s->pci_intack, OBJECT(s), &raven_intack_ops, s, "pci-intack", 1); --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233305458771.0424350488125; Thu, 23 Oct 2025 08:28:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxDA-0005wY-96; Thu, 23 Oct 2025 11:26:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD1-0005r7-QC; Thu, 23 Oct 2025 11:26:36 -0400 Received: from zero.eik.bme.hu ([152.66.115.2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxCz-0001AJ-Nv; Thu, 23 Oct 2025 11:26:35 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 0B2115972F8; Thu, 23 Oct 2025 17:26:32 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id rPxgbkUu5Baj; Thu, 23 Oct 2025 17:26:30 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 09C9F5972F4; Thu, 23 Oct 2025 17:26:30 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <1e94db358c97b16a32a56b8ae485a8056580df99.1761232473.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 09/13] hw/pci-host/raven: Simpify discontiguous IO access MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:30 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=152.66.115.2; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233308336154100 Content-Type: text/plain; charset="utf-8" PREP allows remapping of the 64k ISA IO addresses from the normal contiguous IO space into a discontiguous 8MB region and can switch between the two modes. We can implement this in a simpler way than is done currently using an io region that forwards access to the contiguous pci_io region and enabling/disabling the discontiguous region as needed. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 88 ++++++++++++--------------------------------- 1 file changed, 22 insertions(+), 66 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index bb0be40eb4..bf4f4b7f71 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -42,17 +42,14 @@ struct PREPPCIState { PCIHostState parent_obj; =20 qemu_irq irq; - AddressSpace pci_io_as; MemoryRegion pci_io; - MemoryRegion pci_io_non_contiguous; + MemoryRegion pci_discontiguous_io; MemoryRegion pci_memory; MemoryRegion pci_intack; MemoryRegion bm; MemoryRegion bm_ram_alias; MemoryRegion bm_pci_memory_alias; AddressSpace bm_as; - - int contiguous_map; }; =20 #define PCI_IO_BASE_ADDR 0x80000000 /* Physical address on main bus */ @@ -103,63 +100,28 @@ static const MemoryRegionOps raven_intack_ops =3D { }, }; =20 -static inline hwaddr raven_io_address(PREPPCIState *s, - hwaddr addr) +/* Convert 8 MB non-contiguous address to 64k ISA IO address */ +static inline hwaddr raven_io_addr(hwaddr addr) { - if (s->contiguous_map =3D=3D 0) { - /* 64 KB contiguous space for IOs */ - addr &=3D 0xFFFF; - } else { - /* 8 MB non-contiguous space for IOs */ - addr =3D (addr & 0x1F) | ((addr & 0x007FFF000) >> 7); - } - - /* FIXME: handle endianness switch */ - - return addr; + return ((addr & 0x007FFF000) >> 7) | (addr & 0x1F); } =20 -static uint64_t raven_io_read(void *opaque, hwaddr addr, - unsigned int size) +static uint64_t raven_io_read(void *opaque, hwaddr addr, unsigned int size) { - PREPPCIState *s =3D opaque; - uint8_t buf[4]; - - addr =3D raven_io_address(s, addr); - address_space_read(&s->pci_io_as, addr + PCI_IO_BASE_ADDR, - MEMTXATTRS_UNSPECIFIED, buf, size); - - if (size =3D=3D 1) { - return buf[0]; - } else if (size =3D=3D 2) { - return lduw_le_p(buf); - } else if (size =3D=3D 4) { - return ldl_le_p(buf); - } else { - g_assert_not_reached(); - } + uint64_t val =3D 0xffffffffULL; + + memory_region_dispatch_read(opaque, raven_io_addr(addr), &val, + size_memop(size) | MO_LE, + MEMTXATTRS_UNSPECIFIED); + return val; } =20 -static void raven_io_write(void *opaque, hwaddr addr, - uint64_t val, unsigned int size) +static void raven_io_write(void *opaque, hwaddr addr, uint64_t val, + unsigned int size) { - PREPPCIState *s =3D opaque; - uint8_t buf[4]; - - addr =3D raven_io_address(s, addr); - - if (size =3D=3D 1) { - buf[0] =3D val; - } else if (size =3D=3D 2) { - stw_le_p(buf, val); - } else if (size =3D=3D 4) { - stl_le_p(buf, val); - } else { - g_assert_not_reached(); - } - - address_space_write(&s->pci_io_as, addr + PCI_IO_BASE_ADDR, - MEMTXATTRS_UNSPECIFIED, buf, size); + memory_region_dispatch_write(opaque, raven_io_addr(addr), val, + size_memop(size) | MO_LE, + MEMTXATTRS_UNSPECIFIED); } =20 static const MemoryRegionOps raven_io_ops =3D { @@ -208,7 +170,7 @@ static void raven_change_gpio(void *opaque, int n, int = level) { PREPPCIState *s =3D opaque; =20 - s->contiguous_map =3D level; + memory_region_set_enabled(&s->pci_discontiguous_io, !!level); } =20 static void raven_pcihost_realizefn(DeviceState *d, Error **errp) @@ -254,23 +216,17 @@ static void raven_pcihost_initfn(Object *obj) MemoryRegion *address_space_mem =3D get_system_memory(); =20 memory_region_init(&s->pci_io, obj, "pci-io", 0x3f800000); - memory_region_init_io(&s->pci_io_non_contiguous, obj, &raven_io_ops, s, - "pci-io-non-contiguous", 0x00800000); + memory_region_init_io(&s->pci_discontiguous_io, obj, + &raven_io_ops, &s->pci_io, + "pci-discontiguous-io", 8 * MiB); memory_region_init(&s->pci_memory, obj, "pci-memory", 0x3f000000); - address_space_init(&s->pci_io_as, &s->pci_io, "raven-io"); - - /* - * Raven's raven_io_ops use the address-space API to access pci-conf-i= dx - * (which is also owned by the raven device). As such, mark the - * pci_io_non_contiguous as re-entrancy safe. - */ - s->pci_io_non_contiguous.disable_reentrancy_guard =3D true; =20 /* CPU address space */ memory_region_add_subregion(address_space_mem, PCI_IO_BASE_ADDR, &s->pci_io); memory_region_add_subregion_overlap(address_space_mem, PCI_IO_BASE_ADD= R, - &s->pci_io_non_contiguous, 1); + &s->pci_discontiguous_io, 1); + memory_region_set_enabled(&s->pci_discontiguous_io, false); memory_region_add_subregion(address_space_mem, 0xc0000000, &s->pci_mem= ory); =20 /* Bus master address space */ --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233312444212.0213266948092; Thu, 23 Oct 2025 08:28:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD6-0005ts-BT; Thu, 23 Oct 2025 11:26:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD3-0005ru-2q; Thu, 23 Oct 2025 11:26:38 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD0-0001Ae-Vd; Thu, 23 Oct 2025 11:26:36 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 1AECD5972F4; Thu, 23 Oct 2025 17:26:33 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id GfeCHIYTlYud; Thu, 23 Oct 2025 17:26:31 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 192895972EA; Thu, 23 Oct 2025 17:26:31 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 10/13] hw/pci-host/raven: Move bus master address space creation to one place MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:31 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233316364154100 Content-Type: text/plain; charset="utf-8" Move the lines related to creating the bus master address space together and reduce the number of memory regions stored in the device state. These are used once to create the address space and can be tracked with their owner object so no need to keep track of them in the device state. Keep only the address space that is used later in a callback. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index bf4f4b7f71..ebf0c511dc 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -46,9 +46,6 @@ struct PREPPCIState { MemoryRegion pci_discontiguous_io; MemoryRegion pci_memory; MemoryRegion pci_intack; - MemoryRegion bm; - MemoryRegion bm_ram_alias; - MemoryRegion bm_pci_memory_alias; AddressSpace bm_as; }; =20 @@ -178,7 +175,8 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) SysBusDevice *dev =3D SYS_BUS_DEVICE(d); PCIHostState *h =3D PCI_HOST_BRIDGE(dev); PREPPCIState *s =3D RAVEN_PCI_HOST_BRIDGE(dev); - MemoryRegion *mr, *address_space_mem =3D get_system_memory(); + Object *o =3D OBJECT(d); + MemoryRegion *mr, *bm, *address_space_mem =3D get_system_memory(); =20 qdev_init_gpio_in(d, raven_change_gpio, 1); =20 @@ -187,26 +185,37 @@ static void raven_pcihost_realizefn(DeviceState *d, E= rror **errp) &s->irq, &s->pci_memory, &s->pci_io, 0,= 1, TYPE_PCI_BUS); =20 - memory_region_init_io(&h->conf_mem, OBJECT(h), &pci_host_conf_le_ops, = s, + memory_region_init_io(&h->conf_mem, o, &pci_host_conf_le_ops, s, "pci-conf-idx", 4); memory_region_add_subregion(&s->pci_io, 0xcf8, &h->conf_mem); =20 - memory_region_init_io(&h->data_mem, OBJECT(h), &pci_host_data_le_ops, = s, + memory_region_init_io(&h->data_mem, o, &pci_host_data_le_ops, s, "pci-conf-data", 4); memory_region_add_subregion(&s->pci_io, 0xcfc, &h->data_mem); =20 mr =3D g_new0(MemoryRegion, 1); - memory_region_init_io(mr, OBJECT(h), &raven_mmcfg_ops, h->bus, + memory_region_init_io(mr, o, &raven_mmcfg_ops, h->bus, "pci-mmcfg", 8 * MiB); memory_region_add_subregion(&s->pci_io, 0x800000, mr); =20 - memory_region_init_io(&s->pci_intack, OBJECT(s), &raven_intack_ops, s, + memory_region_init_io(&s->pci_intack, o, &raven_intack_ops, s, "pci-intack", 1); memory_region_add_subregion(address_space_mem, 0xbffffff0, &s->pci_int= ack); =20 pci_create_simple(h->bus, PCI_DEVFN(0, 0), TYPE_RAVEN_PCI_DEVICE); =20 - address_space_init(&s->bm_as, &s->bm, "raven-bm"); + /* Bus master address space */ + bm =3D g_new0(MemoryRegion, 1); + memory_region_init(bm, o, "raven-bm", 4 * GiB); + mr =3D g_new0(MemoryRegion, 1); + memory_region_init_alias(mr, o, "bm-pci-memory", &s->pci_memory, 0, + memory_region_size(&s->pci_memory)); + memory_region_add_subregion(bm, 0, mr); + mr =3D g_new0(MemoryRegion, 1); + memory_region_init_alias(mr, o, "bm-system", get_system_memory(), + 0, 0x80000000); + memory_region_add_subregion(bm, 0x80000000, mr); + address_space_init(&s->bm_as, bm, "raven-bm-as"); pci_setup_iommu(h->bus, &raven_iommu_ops, s); } =20 @@ -228,16 +237,6 @@ static void raven_pcihost_initfn(Object *obj) &s->pci_discontiguous_io, 1); memory_region_set_enabled(&s->pci_discontiguous_io, false); memory_region_add_subregion(address_space_mem, 0xc0000000, &s->pci_mem= ory); - - /* Bus master address space */ - memory_region_init(&s->bm, obj, "bm-raven", 4 * GiB); - memory_region_init_alias(&s->bm_pci_memory_alias, obj, "bm-pci-memory", - &s->pci_memory, 0, - memory_region_size(&s->pci_memory)); - memory_region_init_alias(&s->bm_ram_alias, obj, "bm-system", - get_system_memory(), 0, 0x80000000); - memory_region_add_subregion(&s->bm, 0 , &s->bm_pci_memory_alia= s); - memory_region_add_subregion(&s->bm, 0x80000000, &s->bm_ram_alias); } =20 static void raven_pcihost_class_init(ObjectClass *klass, const void *data) --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233314941539.9729159817622; Thu, 23 Oct 2025 08:28:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD5-0005tk-SO; Thu, 23 Oct 2025 11:26:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD3-0005s0-Im; Thu, 23 Oct 2025 11:26:38 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD1-0001B3-Ie; Thu, 23 Oct 2025 11:26:37 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 2169B597300; Thu, 23 Oct 2025 17:26:34 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id bDvDN3qSY9SZ; Thu, 23 Oct 2025 17:26:32 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 23E2B5972FD; Thu, 23 Oct 2025 17:26:32 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <586026b62dd514cc2c4bc0a67346d9e79d13dee6.1761232473.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 11/13] hw/pci-host/raven: Do not map regions in init method MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:32 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233318515158500 Export memory regions as sysbus mmio regions and let the board code map them similar to how it is done in grackle. While at it rename raven_pcihost_realizefn to raven_pcihost_realize. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/pci-host/raven.c | 38 +++++++++++++------------------------- hw/ppc/prep.c | 10 ++++++++-- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index ebf0c511dc..1e36a637a6 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -49,8 +49,6 @@ struct PREPPCIState { AddressSpace bm_as; }; =20 -#define PCI_IO_BASE_ADDR 0x80000000 /* Physical address on main bus */ - static inline uint32_t raven_idsel_to_addr(hwaddr addr) { return (ctz16(addr >> 11) << 11) | (addr & 0x7ff); @@ -170,7 +168,7 @@ static void raven_change_gpio(void *opaque, int n, int = level) memory_region_set_enabled(&s->pci_discontiguous_io, !!level); } =20 -static void raven_pcihost_realizefn(DeviceState *d, Error **errp) +static void raven_pcihost_realize(DeviceState *d, Error **errp) { SysBusDevice *dev =3D SYS_BUS_DEVICE(d); PCIHostState *h =3D PCI_HOST_BRIDGE(dev); @@ -180,7 +178,18 @@ static void raven_pcihost_realizefn(DeviceState *d, Er= ror **errp) =20 qdev_init_gpio_in(d, raven_change_gpio, 1); =20 + memory_region_init(&s->pci_io, o, "pci-io", 0x3f800000); + memory_region_init_io(&s->pci_discontiguous_io, o, + &raven_io_ops, &s->pci_io, + "pci-discontiguous-io", 8 * MiB); + memory_region_set_enabled(&s->pci_discontiguous_io, false); + memory_region_init(&s->pci_memory, o, "pci-memory", 0x3f000000); + + sysbus_init_mmio(dev, &s->pci_io); + sysbus_init_mmio(dev, &s->pci_discontiguous_io); + sysbus_init_mmio(dev, &s->pci_memory); sysbus_init_irq(dev, &s->irq); + h->bus =3D pci_register_root_bus(d, NULL, raven_set_irq, raven_map_irq, &s->irq, &s->pci_memory, &s->pci_io, 0,= 1, TYPE_PCI_BUS); @@ -219,32 +228,12 @@ static void raven_pcihost_realizefn(DeviceState *d, E= rror **errp) pci_setup_iommu(h->bus, &raven_iommu_ops, s); } =20 -static void raven_pcihost_initfn(Object *obj) -{ - PREPPCIState *s =3D RAVEN_PCI_HOST_BRIDGE(obj); - MemoryRegion *address_space_mem =3D get_system_memory(); - - memory_region_init(&s->pci_io, obj, "pci-io", 0x3f800000); - memory_region_init_io(&s->pci_discontiguous_io, obj, - &raven_io_ops, &s->pci_io, - "pci-discontiguous-io", 8 * MiB); - memory_region_init(&s->pci_memory, obj, "pci-memory", 0x3f000000); - - /* CPU address space */ - memory_region_add_subregion(address_space_mem, PCI_IO_BASE_ADDR, - &s->pci_io); - memory_region_add_subregion_overlap(address_space_mem, PCI_IO_BASE_ADD= R, - &s->pci_discontiguous_io, 1); - memory_region_set_enabled(&s->pci_discontiguous_io, false); - memory_region_add_subregion(address_space_mem, 0xc0000000, &s->pci_mem= ory); -} - static void raven_pcihost_class_init(ObjectClass *klass, const void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); - dc->realize =3D raven_pcihost_realizefn; + dc->realize =3D raven_pcihost_realize; dc->fw_name =3D "pci"; } =20 @@ -278,7 +267,6 @@ static const TypeInfo raven_types[] =3D { .name =3D TYPE_RAVEN_PCI_HOST_BRIDGE, .parent =3D TYPE_PCI_HOST_BRIDGE, .instance_size =3D sizeof(PREPPCIState), - .instance_init =3D raven_pcihost_initfn, .class_init =3D raven_pcihost_class_init, }, { diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 816455d289..973d2fb7eb 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -53,8 +53,11 @@ =20 #define CFG_ADDR 0xf0000510 =20 -#define KERNEL_LOAD_ADDR 0x01000000 -#define INITRD_LOAD_ADDR 0x01800000 +#define KERNEL_LOAD_ADDR 0x01000000 +#define INITRD_LOAD_ADDR 0x01800000 + +#define PCI_IO_BASE_ADDR 0x80000000 +#define PCI_MEM_BASE_ADDR 0xc0000000 =20 #define BIOS_ADDR 0xfff00000 #define BIOS_SIZE (1 * MiB) @@ -293,6 +296,9 @@ static void ibm_40p_init(MachineState *machine) pcihost =3D SYS_BUS_DEVICE(dev); object_property_add_child(qdev_get_machine(), "raven", OBJECT(dev)); sysbus_realize_and_unref(pcihost, &error_fatal); + sysbus_mmio_map(pcihost, 0, PCI_IO_BASE_ADDR); + sysbus_mmio_map_overlap(pcihost, 1, PCI_IO_BASE_ADDR, 1); + sysbus_mmio_map(pcihost, 2, PCI_MEM_BASE_ADDR); pci_bus =3D PCI_BUS(qdev_get_child_bus(dev, "pci.0")); if (!pci_bus) { error_report("could not create PCI host controller"); --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233264310609.5256860089555; Thu, 23 Oct 2025 08:27:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxD7-0005v6-O8; Thu, 23 Oct 2025 11:26:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD4-0005sL-Lq; Thu, 23 Oct 2025 11:26:39 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD2-0001BL-MM; Thu, 23 Oct 2025 11:26:38 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 37F12597307; Thu, 23 Oct 2025 17:26:35 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id peSa1Y49Qmwh; Thu, 23 Oct 2025 17:26:33 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 32FA35972FF; Thu, 23 Oct 2025 17:26:33 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 12/13] hw/ppc/prep: Fix non-contiguous IO control bit MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:33 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233269598154100 Content-Type: text/plain; charset="utf-8" The bit that is supposed to control if ISA IO ports are accessed with discontiguous addresses was not connected so it did nothing. We can now directly enable or disable the discontiguous region so allow the bit to function. This did not cause a problem so far as nothing seems to use this bit or discontiguous IO addresses. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 9 --------- hw/ppc/prep.c | 3 +++ hw/ppc/prep_systemio.c | 17 +++++++++++------ 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 1e36a637a6..7ebca8186b 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -161,13 +161,6 @@ static const PCIIOMMUOps raven_iommu_ops =3D { .get_address_space =3D raven_pcihost_set_iommu, }; =20 -static void raven_change_gpio(void *opaque, int n, int level) -{ - PREPPCIState *s =3D opaque; - - memory_region_set_enabled(&s->pci_discontiguous_io, !!level); -} - static void raven_pcihost_realize(DeviceState *d, Error **errp) { SysBusDevice *dev =3D SYS_BUS_DEVICE(d); @@ -176,8 +169,6 @@ static void raven_pcihost_realize(DeviceState *d, Error= **errp) Object *o =3D OBJECT(d); MemoryRegion *mr, *bm, *address_space_mem =3D get_system_memory(); =20 - qdev_init_gpio_in(d, raven_change_gpio, 1); - memory_region_init(&s->pci_io, o, "pci-io", 0x3f800000); memory_region_init_io(&s->pci_discontiguous_io, o, &raven_io_ops, &s->pci_io, diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 973d2fb7eb..3f497910f4 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -322,6 +322,9 @@ static void ibm_40p_init(MachineState *machine) dev =3D DEVICE(isa_dev); qdev_prop_set_uint32(dev, "ibm-planar-id", 0xfc); qdev_prop_set_uint32(dev, "equipment", 0xc0); + object_property_set_link(OBJECT(dev), "discontiguous-io", + OBJECT(sysbus_mmio_get_region(pcihost, 1)), + &error_fatal); isa_realize_and_unref(isa_dev, isa_bus, &error_fatal); =20 /* Memory controller */ diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c index 41cd923b94..6ef9b91317 100644 --- a/hw/ppc/prep_systemio.c +++ b/hw/ppc/prep_systemio.c @@ -44,9 +44,10 @@ OBJECT_DECLARE_SIMPLE_TYPE(PrepSystemIoState, PREP_SYSTE= MIO) =20 struct PrepSystemIoState { ISADevice parent_obj; + MemoryRegion ppc_parity_mem; + MemoryRegion *discontiguous_io; =20 - qemu_irq non_contiguous_io_map_irq; uint8_t sreset; /* 0x0092 */ uint8_t equipment; /* 0x080c */ uint8_t system_control; /* 0x081c */ @@ -206,8 +207,8 @@ static void prep_port0850_write(void *opaque, uint32_t = addr, uint32_t val) PrepSystemIoState *s =3D opaque; =20 trace_prep_systemio_write(addr, val); - qemu_set_irq(s->non_contiguous_io_map_irq, - val & PORT0850_IOMAP_NONCONTIGUOUS); + memory_region_set_enabled(s->discontiguous_io, + !(val & PORT0850_IOMAP_NONCONTIGUOUS)); s->iomap_type =3D val & PORT0850_IOMAP_NONCONTIGUOUS; } =20 @@ -257,10 +258,10 @@ static void prep_systemio_realize(DeviceState *dev, E= rror **errp) PrepSystemIoState *s =3D PREP_SYSTEMIO(dev); PowerPCCPU *cpu; =20 - qdev_init_gpio_out(dev, &s->non_contiguous_io_map_irq, 1); + assert(s->discontiguous_io); s->iomap_type =3D PORT0850_IOMAP_NONCONTIGUOUS; - qemu_set_irq(s->non_contiguous_io_map_irq, - s->iomap_type & PORT0850_IOMAP_NONCONTIGUOUS); + memory_region_set_enabled(s->discontiguous_io, + !(s->iomap_type & PORT0850_IOMAP_NONCONTIGUO= US)); cpu =3D POWERPC_CPU(first_cpu); s->softreset_irq =3D qdev_get_gpio_in(DEVICE(cpu), PPC6xx_INPUT_HRESET= ); =20 @@ -288,6 +289,8 @@ static const VMStateDescription vmstate_prep_systemio = =3D { static const Property prep_systemio_properties[] =3D { DEFINE_PROP_UINT8("ibm-planar-id", PrepSystemIoState, ibm_planar_id, 0= ), DEFINE_PROP_UINT8("equipment", PrepSystemIoState, equipment, 0), + DEFINE_PROP_LINK("discontiguous-io", PrepSystemIoState, discontiguous_= io, + TYPE_MEMORY_REGION, MemoryRegion *), }; =20 static void prep_systemio_class_initfn(ObjectClass *klass, const void *dat= a) @@ -296,6 +299,8 @@ static void prep_systemio_class_initfn(ObjectClass *kla= ss, const void *data) =20 dc->realize =3D prep_systemio_realize; dc->vmsd =3D &vmstate_prep_systemio; + /* Reason: PReP specific device, needs to be wired via properties */ + dc->user_creatable =3D false; device_class_set_props(dc, prep_systemio_properties); } =20 --=20 2.41.3 From nobody Mon Oct 27 11:12:35 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=eik.bme.hu Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1761233275257817.707454159004; Thu, 23 Oct 2025 08:27:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vBxDJ-00062G-Gh; Thu, 23 Oct 2025 11:26:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD5-0005tJ-DK; Thu, 23 Oct 2025 11:26:39 -0400 Received: from zero.eik.bme.hu ([2001:738:2001:2001::2001]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vBxD3-0001Bc-Or; Thu, 23 Oct 2025 11:26:39 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 43602597303; Thu, 23 Oct 2025 17:26:36 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by localhost (zero.eik.bme.hu [127.0.0.1]) (amavis, port 10028) with ESMTP id L0gScHJYoF7g; Thu, 23 Oct 2025 17:26:34 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 430A7597302; Thu, 23 Oct 2025 17:26:34 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v5 13/13] hw/ppc/prep: Add reset method to prep-systemio MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , Artyom Tarasenko , Nicholas Piggin , Markus Armbruster , Harsh Prateek Bora , Mark Cave-Ayland Date: Thu, 23 Oct 2025 17:26:34 +0200 (CEST) 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+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2001:738:2001:2001::2001; envelope-from=balaton@eik.bme.hu; helo=zero.eik.bme.hu X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, 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.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZM-MESSAGEID: 1761233280105154100 Content-Type: text/plain; charset="utf-8" The initial state needs to be reset so it's not enough to set it once at realize. Add a reset method to fix device reset state. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 1 - hw/ppc/prep_systemio.c | 13 ++++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 7ebca8186b..fd45acb7eb 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -173,7 +173,6 @@ static void raven_pcihost_realize(DeviceState *d, Error= **errp) memory_region_init_io(&s->pci_discontiguous_io, o, &raven_io_ops, &s->pci_io, "pci-discontiguous-io", 8 * MiB); - memory_region_set_enabled(&s->pci_discontiguous_io, false); memory_region_init(&s->pci_memory, o, "pci-memory", 0x3f000000); =20 sysbus_init_mmio(dev, &s->pci_io); diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c index 6ef9b91317..13b8fdb56b 100644 --- a/hw/ppc/prep_systemio.c +++ b/hw/ppc/prep_systemio.c @@ -252,6 +252,15 @@ static const MemoryRegionOps ppc_parity_error_ops =3D { }, }; =20 +static void prep_systemio_reset(DeviceState *dev) +{ + PrepSystemIoState *s =3D PREP_SYSTEMIO(dev); + + s->iomap_type =3D PORT0850_IOMAP_NONCONTIGUOUS; + memory_region_set_enabled(s->discontiguous_io, + !(s->iomap_type & PORT0850_IOMAP_NONCONTIGUO= US)); +} + static void prep_systemio_realize(DeviceState *dev, Error **errp) { ISADevice *isa =3D ISA_DEVICE(dev); @@ -259,9 +268,6 @@ static void prep_systemio_realize(DeviceState *dev, Err= or **errp) PowerPCCPU *cpu; =20 assert(s->discontiguous_io); - s->iomap_type =3D PORT0850_IOMAP_NONCONTIGUOUS; - memory_region_set_enabled(s->discontiguous_io, - !(s->iomap_type & PORT0850_IOMAP_NONCONTIGUO= US)); cpu =3D POWERPC_CPU(first_cpu); s->softreset_irq =3D qdev_get_gpio_in(DEVICE(cpu), PPC6xx_INPUT_HRESET= ); =20 @@ -301,6 +307,7 @@ static void prep_systemio_class_initfn(ObjectClass *kla= ss, const void *data) dc->vmsd =3D &vmstate_prep_systemio; /* Reason: PReP specific device, needs to be wired via properties */ dc->user_creatable =3D false; + device_class_set_legacy_reset(dc, prep_systemio_reset); device_class_set_props(dc, prep_systemio_properties); } =20 --=20 2.41.3