From nobody Mon Oct 27 23:34:31 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 1751494605970398.07409916803874; Wed, 2 Jul 2025 15:16:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5jm-0001YP-2A; Wed, 02 Jul 2025 18:15:30 -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 1uX5jg-0001UD-6m; Wed, 02 Jul 2025 18:15:24 -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 1uX5jS-00061J-QF; Wed, 02 Jul 2025 18:15:23 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 307FD55CA5A; Thu, 03 Jul 2025 00:08:57 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id fOlrXiOI9L-D; Thu, 3 Jul 2025 00:08:55 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 2149855C1B9; Thu, 03 Jul 2025 00:08:55 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <1b2a596aee7d4d5c6d94dca837a8b1e11a654136.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 01/14] 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 Date: Thu, 03 Jul 2025 00:08:55 +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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.237, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: 1751494608866116600 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 --- hw/pci-host/raven.c | 30 +----------------------------- 1 file changed, 1 insertion(+), 29 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index f8c0be5d21..172f01694c 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) @@ -65,7 +58,6 @@ struct PRePPCIState { MemoryRegion bm_ram_alias; MemoryRegion bm_pci_memory_alias; AddressSpace bm_as; - RavenPCIState pci_dev; =20 int contiguous_map; }; @@ -268,8 +260,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) @@ -277,7 +268,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, @@ -314,12 +304,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) @@ -329,16 +313,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); @@ -350,7 +324,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. @@ -361,7 +334,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 23:34:31 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 1751494567583121.78336557343619; Wed, 2 Jul 2025 15:16:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5jk-0001Ya-Pz; Wed, 02 Jul 2025 18:15:30 -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 1uX5jg-0001VW-OZ; Wed, 02 Jul 2025 18:15:25 -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 1uX5jT-00061f-99; Wed, 02 Jul 2025 18:15:24 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 3D44F55CA5F; Thu, 03 Jul 2025 00:08:58 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id Komep5oDN6Vs; Thu, 3 Jul 2025 00:08:56 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 30F3B55CA56; Thu, 03 Jul 2025 00:08:56 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <6c8a684e42eb256b3d5c09fe410c5b090e633992.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 02/14] 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 Date: Thu, 03 Jul 2025 00:08:56 +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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.237, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: 1751494572022116600 Use OBJECT_DECLARE_SIMPLE_TYPE macro instead of open coding it. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- 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 172f01694c..878c915de5 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 23:34:31 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 1751494652837291.39155242168954; Wed, 2 Jul 2025 15:17:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5jq-0001kZ-2r; Wed, 02 Jul 2025 18:15:34 -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 1uX5jj-0001Yl-Av; Wed, 02 Jul 2025 18:15:27 -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 1uX5jS-00061e-Oh; Wed, 02 Jul 2025 18:15:27 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 43D8555CA56; Thu, 03 Jul 2025 00:08:59 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id YTGuPWK5puRR; Thu, 3 Jul 2025 00:08:57 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 3D40555CA5E; Thu, 03 Jul 2025 00:08:57 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <52da2e5108b412d4cddcd5f0f7b62dd5bdbacb35.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 03/14] 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 Date: Thu, 03 Jul 2025 00:08:57 +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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.237, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: 1751494655014116600 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 --- 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 878c915de5..e0f98afebf 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -304,6 +304,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; @@ -329,37 +338,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 23:34:31 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 17514946581871002.5322867860891; Wed, 2 Jul 2025 15:17:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5jn-0001gU-Hr; Wed, 02 Jul 2025 18:15:31 -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 1uX5jk-0001cG-UR; Wed, 02 Jul 2025 18:15:29 -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 1uX5jT-00061o-9m; Wed, 02 Jul 2025 18:15:28 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 41E9055CA5E; Thu, 03 Jul 2025 00:09:00 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id x6v5V7ZYnQrO; Thu, 3 Jul 2025 00:08:58 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 48AE755CA60; Thu, 03 Jul 2025 00:08:58 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <917239c78c53493a6ab8b7f40d7dbcdfe7cf76b5.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 04/14] 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 Date: Thu, 03 Jul 2025 00:08:58 +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: 1751494659197116600 Content-Type: text/plain; charset="utf-8" Instead of doing it manually use pci_register_root_bus() to create and register the PCI bus. Signed-off-by: BALATON Zoltan --- 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 e0f98afebf..51427553b2 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; @@ -239,8 +238,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); @@ -258,12 +258,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 @@ -286,8 +288,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); @@ -298,10 +298,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 23:34:31 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 175149468874065.03382929076668; Wed, 2 Jul 2025 15:18:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5jx-0001vB-5T; Wed, 02 Jul 2025 18:15: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 1uX5ju-0001t4-VU; Wed, 02 Jul 2025 18:15: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 1uX5ji-0006hd-V8; Wed, 02 Jul 2025 18:15:38 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 585F555CA60; Thu, 03 Jul 2025 00:09:01 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id Oh2RXmpv8Imd; Thu, 3 Jul 2025 00:08:59 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 54DC755CA61; Thu, 03 Jul 2025 00:08:59 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <946c7c91a715472b118f6c7c49354ea827a9da7e.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 05/14] 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 Date: Thu, 03 Jul 2025 00:08:59 +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: 1751494690702116600 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. 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 51427553b2..a400a22df3 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; @@ -183,16 +179,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, @@ -220,26 +225,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 982e40e53e..d3365414d2 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 23:34:31 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 1751494601957411.27923698782274; Wed, 2 Jul 2025 15:16:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5jv-0001tE-AI; Wed, 02 Jul 2025 18:15: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 1uX5jt-0001ro-F6; Wed, 02 Jul 2025 18:15:37 -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 1uX5ji-0006he-6x; Wed, 02 Jul 2025 18:15:37 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 6A0DB55CB66; Thu, 03 Jul 2025 00:09:02 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id ORvdBgbpxQb6; Thu, 3 Jul 2025 00:09:00 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 6E59E55CA62; Thu, 03 Jul 2025 00:09:00 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <688ac07e52e04f062810e82cf6e3ba3caf06416f.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 06/14] hw/pci-host/raven: Simplify direct config access address decoding 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 Date: Thu, 03 Jul 2025 00:09:00 +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: 1751494605312116600 Content-Type: text/plain; charset="utf-8" Use ctz instead of an open coded version and rename function to better show what it does. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index a400a22df3..66dab28a29 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -57,16 +57,9 @@ struct PREPPCIState { =20 #define PCI_IO_BASE_ADDR 0x80000000 /* Physical address on main bus */ =20 -static inline uint32_t raven_pci_io_config(hwaddr addr) +static inline uint32_t raven_idsel_to_addr(hwaddr addr) { - int i; - - for (i =3D 0; i < 11; i++) { - if ((addr & (1 << (11 + i))) !=3D 0) { - break; - } - } - return (addr & 0x7ff) | (i << 11); + return (ctz16(addr >> 11) << 11) | (addr & 0x7ff); } =20 static void raven_pci_io_write(void *opaque, hwaddr addr, @@ -74,7 +67,7 @@ static void raven_pci_io_write(void *opaque, hwaddr addr, { PREPPCIState *s =3D opaque; PCIHostState *phb =3D PCI_HOST_BRIDGE(s); - pci_data_write(phb->bus, raven_pci_io_config(addr), val, size); + pci_data_write(phb->bus, raven_idsel_to_addr(addr), val, size); } =20 static uint64_t raven_pci_io_read(void *opaque, hwaddr addr, @@ -82,7 +75,7 @@ static uint64_t raven_pci_io_read(void *opaque, hwaddr ad= dr, { PREPPCIState *s =3D opaque; PCIHostState *phb =3D PCI_HOST_BRIDGE(s); - return pci_data_read(phb->bus, raven_pci_io_config(addr), size); + return pci_data_read(phb->bus, raven_idsel_to_addr(addr), size); } =20 static const MemoryRegionOps raven_pci_io_ops =3D { --=20 2.41.3 From nobody Mon Oct 27 23:34:31 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 1751494649367132.75940243699745; Wed, 2 Jul 2025 15:17:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5kr-0003L9-Ru; Wed, 02 Jul 2025 18:16: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 1uX5k0-0001yr-QM; Wed, 02 Jul 2025 18:15:46 -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 1uX5jj-0006iE-1C; Wed, 02 Jul 2025 18:15:44 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 720D555CB6A; Thu, 03 Jul 2025 00:09:03 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id 4TXVscHHMCiS; Thu, 3 Jul 2025 00:09:01 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 7C51B55CB64; Thu, 03 Jul 2025 00:09:01 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <20dcfab54dcbd1ab359a38a487489c4ba6b732b3.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 07/14] hw/pci-host/raven: Rename direct config access ops 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 Date: Thu, 03 Jul 2025 00:09:01 +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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.237, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: 1751494650975116600 Content-Type: text/plain; charset="utf-8" Rename memory io ops implementing PCI configuration direct access to mmcfg which describes better what these are for. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 66dab28a29..d7a0bde382 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -62,25 +62,24 @@ static inline uint32_t raven_idsel_to_addr(hwaddr addr) return (ctz16(addr >> 11) << 11) | (addr & 0x7ff); } =20 -static void raven_pci_io_write(void *opaque, hwaddr addr, - uint64_t val, unsigned int size) +static void raven_mmcfg_write(void *opaque, hwaddr addr, uint64_t val, + unsigned int size) { PREPPCIState *s =3D opaque; PCIHostState *phb =3D PCI_HOST_BRIDGE(s); pci_data_write(phb->bus, raven_idsel_to_addr(addr), val, size); } =20 -static uint64_t raven_pci_io_read(void *opaque, hwaddr addr, - unsigned int size) +static uint64_t raven_mmcfg_read(void *opaque, hwaddr addr, unsigned int s= ize) { PREPPCIState *s =3D opaque; PCIHostState *phb =3D PCI_HOST_BRIDGE(s); return pci_data_read(phb->bus, raven_idsel_to_addr(addr), size); } =20 -static const MemoryRegionOps raven_pci_io_ops =3D { - .read =3D raven_pci_io_read, - .write =3D raven_pci_io_write, +static const MemoryRegionOps raven_mmcfg_ops =3D { + .read =3D raven_mmcfg_read, + .write =3D raven_mmcfg_write, .endianness =3D DEVICE_LITTLE_ENDIAN, }; =20 @@ -234,8 +233,8 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) "pci-conf-data", 4); memory_region_add_subregion(&s->pci_io, 0xcfc, &h->data_mem); =20 - memory_region_init_io(&h->mmcfg, OBJECT(s), &raven_pci_io_ops, s, - "pciio", 0x00400000); + memory_region_init_io(&h->mmcfg, OBJECT(s), &raven_mmcfg_ops, s, + "pci-mmcfg", 0x00400000); memory_region_add_subregion(address_space_mem, 0x80800000, &h->mmcfg); =20 memory_region_init_io(&s->pci_intack, OBJECT(s), &raven_intack_ops, s, --=20 2.41.3 From nobody Mon Oct 27 23:34:31 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 1751494616248698.3253036512588; Wed, 2 Jul 2025 15:16:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5kJ-00020Z-RT; Wed, 02 Jul 2025 18:16:05 -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 1uX5jv-0001tx-U9; Wed, 02 Jul 2025 18:15: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 1uX5jj-0006iD-8Y; Wed, 02 Jul 2025 18:15:39 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 8579455CB64; Thu, 03 Jul 2025 00:09:04 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id kotSNRoEtCb7; Thu, 3 Jul 2025 00:09:02 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 8829A55CB68; Thu, 03 Jul 2025 00:09:02 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <9f5cf242919f7c955ddd9d884d6f4d7c6a5b2f31.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 08/14] hw/pci-host/raven: Use correct parameter in direct access ops 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 Date: Thu, 03 Jul 2025 00:09:02 +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: 1751494616960116600 Instead of passing unneeded enclosing objects to the config direct access ops that only need the bus we can pass that directly thus simplifying the functions. Signed-off-by: BALATON Zoltan Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- hw/pci-host/raven.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index d7a0bde382..2057a1869f 100644 --- a/hw/pci-host/raven.c +++ b/hw/pci-host/raven.c @@ -65,16 +65,16 @@ static inline uint32_t raven_idsel_to_addr(hwaddr addr) static void raven_mmcfg_write(void *opaque, hwaddr addr, uint64_t val, unsigned int size) { - PREPPCIState *s =3D opaque; - PCIHostState *phb =3D PCI_HOST_BRIDGE(s); - pci_data_write(phb->bus, raven_idsel_to_addr(addr), val, size); + PCIBus *hbus =3D opaque; + + pci_data_write(hbus, raven_idsel_to_addr(addr), val, size); } =20 static uint64_t raven_mmcfg_read(void *opaque, hwaddr addr, unsigned int s= ize) { - PREPPCIState *s =3D opaque; - PCIHostState *phb =3D PCI_HOST_BRIDGE(s); - return pci_data_read(phb->bus, raven_idsel_to_addr(addr), size); + PCIBus *hbus =3D opaque; + + return pci_data_read(hbus, raven_idsel_to_addr(addr), size); } =20 static const MemoryRegionOps raven_mmcfg_ops =3D { @@ -233,7 +233,7 @@ static void raven_pcihost_realizefn(DeviceState *d, Err= or **errp) "pci-conf-data", 4); memory_region_add_subregion(&s->pci_io, 0xcfc, &h->data_mem); =20 - memory_region_init_io(&h->mmcfg, OBJECT(s), &raven_mmcfg_ops, s, + memory_region_init_io(&h->mmcfg, OBJECT(h), &raven_mmcfg_ops, h->bus, "pci-mmcfg", 0x00400000); memory_region_add_subregion(address_space_mem, 0x80800000, &h->mmcfg); =20 --=20 2.41.3 From nobody Mon Oct 27 23:34:31 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 1751494684852324.4160198060292; Wed, 2 Jul 2025 15:18:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5jx-0001v5-0h; Wed, 02 Jul 2025 18:15: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 1uX5jv-0001tW-E0; Wed, 02 Jul 2025 18:15: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 1uX5jj-0006iG-8M; Wed, 02 Jul 2025 18:15:39 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 9273E55CB68; Thu, 03 Jul 2025 00:09:05 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id 3gZ3ZW7Ke9yE; Thu, 3 Jul 2025 00:09:03 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 9418255CB6E; Thu, 03 Jul 2025 00:09:03 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 09/14] 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 Date: Thu, 03 Jul 2025 00:09:03 +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: 1751494686676116600 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 23:34:31 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 1751494573361847.5881000752751; Wed, 2 Jul 2025 15:16:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5jv-0001tY-SS; Wed, 02 Jul 2025 18:15: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 1uX5jt-0001rp-F6; Wed, 02 Jul 2025 18:15:37 -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 1uX5ji-0006iH-Lv; Wed, 02 Jul 2025 18:15:37 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 9CAB155CCA9; Thu, 03 Jul 2025 00:09:06 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id 7tnHxlCHSPxg; Thu, 3 Jul 2025 00:09:04 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id A454155CB6F; Thu, 03 Jul 2025 00:09:04 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 10/14] 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 Date: Thu, 03 Jul 2025 00:09:04 +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: 1751494574877116600 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 --- 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 23:34:31 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 1751494616235793.331632254893; Wed, 2 Jul 2025 15:16:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5kR-0002M4-9q; Wed, 02 Jul 2025 18:16:11 -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 1uX5jw-0001uv-Rf; Wed, 02 Jul 2025 18:15:40 -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 1uX5jk-0006kY-Su; Wed, 02 Jul 2025 18:15:40 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id C36B555CCAB; Thu, 03 Jul 2025 00:09:07 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id XP6A9jwMWprm; Thu, 3 Jul 2025 00:09:05 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id BFB1C55CCA8; Thu, 03 Jul 2025 00:09:05 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 11/14] 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 Date: Thu, 03 Jul 2025 00:09:05 +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: 1751494616813116600 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 23:34:31 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 1751494698198559.7914280758732; Wed, 2 Jul 2025 15:18:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5kZ-0002Rs-FT; Wed, 02 Jul 2025 18:16:21 -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 1uX5jx-0001vA-08; Wed, 02 Jul 2025 18:15:41 -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 1uX5jm-0006kc-2w; Wed, 02 Jul 2025 18:15:40 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id DB93F55CCA8; Thu, 03 Jul 2025 00:09:08 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id GxJExZIbSgDy; Thu, 3 Jul 2025 00:09:06 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id D35DB55CCAA; Thu, 03 Jul 2025 00:09:06 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <6ee874097d8cb6c6ed21fd3934677c559658fbc4.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 12/14] 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 Date: Thu, 03 Jul 2025 00:09:06 +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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.237, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: 1751494699160116600 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 23:34:31 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 1751494620324756.0725547119926; Wed, 2 Jul 2025 15:17:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5ko-00030x-IC; Wed, 02 Jul 2025 18:16:34 -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 1uX5k0-0001yh-IB; Wed, 02 Jul 2025 18:15:45 -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 1uX5jm-0006lJ-Kt; Wed, 02 Jul 2025 18:15:44 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id E079755CCAA; Thu, 03 Jul 2025 00:09:09 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id lXVkzE0cQGo0; Thu, 3 Jul 2025 00:09:07 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id E1E7D55CCB0; Thu, 03 Jul 2025 00:09:07 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: <17ed77d024c3fcb11da396d7981a6db3459266cd.1751493467.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 13/14] hw/pci-host/raven: Do not map regions in init method 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 Date: Thu, 03 Jul 2025 00:09:07 +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, T_SPF_TEMPERROR=0.01 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: 1751494620795116600 Content-Type: text/plain; charset="utf-8" Export memory regions as sysbus mmio regions and let the board code map them similar to how it is done in grackle. Signed-off-by: BALATON Zoltan --- hw/pci-host/raven.c | 37 ++++++++++++------------------------- hw/ppc/prep.c | 11 +++++++++-- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index ebf0c511dc..0c4eca04bb 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,17 @@ 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_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 +227,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 +266,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 d3365414d2..23d0e1eeaa 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,10 @@ 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); + memory_region_set_enabled(sysbus_mmio_get_region(pcihost, 1), false); + 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 23:34:31 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 1751494704309862.8663125206606; Wed, 2 Jul 2025 15:18:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uX5kT-0002Q7-Iw; Wed, 02 Jul 2025 18:16:13 -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 1uX5jz-0001wq-96; Wed, 02 Jul 2025 18:15:43 -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 1uX5jn-0006lL-1R; Wed, 02 Jul 2025 18:15:43 -0400 Received: from zero.eik.bme.hu (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id EA5D655CCBA; Thu, 03 Jul 2025 00:09:10 +0200 (CEST) Received: from zero.eik.bme.hu ([127.0.0.1]) by zero.eik.bme.hu (zero.eik.bme.hu [127.0.0.1]) (amavisd-new, port 10028) with ESMTP id yzhwpBoK-nKv; Thu, 3 Jul 2025 00:09:08 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id EC4F155CCB9; Thu, 03 Jul 2025 00:09:08 +0200 (CEST) X-Virus-Scanned: amavisd-new at eik.bme.hu Message-ID: In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v2 14/14] 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 Date: Thu, 03 Jul 2025 00:09:08 +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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.237, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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: 1751494705174116600 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 | 14 ++++++++------ 3 files changed, 11 insertions(+), 15 deletions(-) diff --git a/hw/pci-host/raven.c b/hw/pci-host/raven.c index 0c4eca04bb..fd45acb7eb 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 23d0e1eeaa..678682fdd2 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -358,6 +358,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 dev =3D DEVICE(pci_create_simple(pci_bus, PCI_DEVFN(1, 0), diff --git a/hw/ppc/prep_systemio.c b/hw/ppc/prep_systemio.c index 41cd923b94..fe767cc4ac 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,9 @@ static void prep_systemio_realize(DeviceState *dev, Er= ror **errp) PrepSystemIoState *s =3D PREP_SYSTEMIO(dev); PowerPCCPU *cpu; =20 - qdev_init_gpio_out(dev, &s->non_contiguous_io_map_irq, 1); 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 +288,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) --=20 2.41.3