From nobody Fri Sep 26 20:13:37 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 1758221462875515.1272489132818; Thu, 18 Sep 2025 11:51:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uzJiF-000235-Uk; Thu, 18 Sep 2025 14:50:35 -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 1uzJiA-0001wW-M6; Thu, 18 Sep 2025 14:50:30 -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 1uzJi7-0003L8-UM; Thu, 18 Sep 2025 14:50:30 -0400 Received: from localhost (localhost [127.0.0.1]) by zero.eik.bme.hu (Postfix) with ESMTP id 3500D56F3B4; Thu, 18 Sep 2025 20:50:21 +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 9gJin8TphpuI; Thu, 18 Sep 2025 20:50:19 +0200 (CEST) Received: by zero.eik.bme.hu (Postfix, from userid 432) id 405EE56F30C; Thu, 18 Sep 2025 20:50:19 +0200 (CEST) X-Virus-Scanned: amavis at eik.bme.hu Message-ID: <9a9564915bf57a6c7e5dae2cfcf147081525e900.1758219840.git.balaton@eik.bme.hu> In-Reply-To: References: From: BALATON Zoltan Subject: [PATCH v3 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, 18 Sep 2025 20:50:19 +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_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_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: 1758221465779116600 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 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..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