From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508004811277878.809032913065; Sat, 14 Oct 2017 11:13:31 -0700 (PDT) Received: from localhost ([::1]:54800 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QwA-0004Li-HN for importer@patchew.org; Sat, 14 Oct 2017 14:13:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51790) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsF-0001OG-IQ for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsE-0002y4-5X for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:23 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36810 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsD-0002xo-Ts for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:22 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsD-0002Gl-8y; Sat, 14 Oct 2017 19:09:23 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:08:53 +0100 Message-Id: <1508004545-28578-2-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 01/13] sparc32_dma: rename SPARC32_DMA type to SPARC32_DMA_DEVICE X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Also update the function names to match as appropriate. While we're here rename the type from sparc32_dma to sparc32-dma in order to match the current QOM convention. Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 67 +++++++++++++++++++++++++---------------------= ---- hw/sparc/sun4m.c | 2 +- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index eb491b5..a8d31c1 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -61,12 +61,13 @@ /* XXX SCSI and ethernet should have different read-only bit masks */ #define DMA_CSR_RO_MASK 0xfe000007 =20 -#define TYPE_SPARC32_DMA "sparc32_dma" -#define SPARC32_DMA(obj) OBJECT_CHECK(DMAState, (obj), TYPE_SPARC32_DMA) +#define TYPE_SPARC32_DMA_DEVICE "sparc32-dma-device" +#define SPARC32_DMA_DEVICE(obj) OBJECT_CHECK(DMADeviceState, (obj), \ + TYPE_SPARC32_DMA_DEVICE) =20 -typedef struct DMAState DMAState; +typedef struct DMADeviceState DMADeviceState; =20 -struct DMAState { +struct DMADeviceState { SysBusDevice parent_obj; =20 MemoryRegion iomem; @@ -86,7 +87,7 @@ enum { void ledma_memory_read(void *opaque, hwaddr addr, uint8_t *buf, int len, int do_bswap) { - DMAState *s =3D opaque; + DMADeviceState *s =3D opaque; int i; =20 addr |=3D s->dmaregs[3]; @@ -106,7 +107,7 @@ void ledma_memory_read(void *opaque, hwaddr addr, void ledma_memory_write(void *opaque, hwaddr addr, uint8_t *buf, int len, int do_bswap) { - DMAState *s =3D opaque; + DMADeviceState *s =3D opaque; int l, i; uint16_t tmp_buf[32]; =20 @@ -134,7 +135,7 @@ void ledma_memory_write(void *opaque, hwaddr addr, =20 static void dma_set_irq(void *opaque, int irq, int level) { - DMAState *s =3D opaque; + DMADeviceState *s =3D opaque; if (level) { s->dmaregs[0] |=3D DMA_INTR; if (s->dmaregs[0] & DMA_INTREN) { @@ -154,7 +155,7 @@ static void dma_set_irq(void *opaque, int irq, int leve= l) =20 void espdma_memory_read(void *opaque, uint8_t *buf, int len) { - DMAState *s =3D opaque; + DMADeviceState *s =3D opaque; =20 trace_espdma_memory_read(s->dmaregs[1]); sparc_iommu_memory_read(s->iommu, s->dmaregs[1], buf, len); @@ -163,7 +164,7 @@ void espdma_memory_read(void *opaque, uint8_t *buf, int= len) =20 void espdma_memory_write(void *opaque, uint8_t *buf, int len) { - DMAState *s =3D opaque; + DMADeviceState *s =3D opaque; =20 trace_espdma_memory_write(s->dmaregs[1]); sparc_iommu_memory_write(s->iommu, s->dmaregs[1], buf, len); @@ -173,7 +174,7 @@ void espdma_memory_write(void *opaque, uint8_t *buf, in= t len) static uint64_t dma_mem_read(void *opaque, hwaddr addr, unsigned size) { - DMAState *s =3D opaque; + DMADeviceState *s =3D opaque; uint32_t saddr; =20 if (s->is_ledma && (addr > DMA_MAX_REG_OFFSET)) { @@ -190,7 +191,7 @@ static uint64_t dma_mem_read(void *opaque, hwaddr addr, static void dma_mem_write(void *opaque, hwaddr addr, uint64_t val, unsigned size) { - DMAState *s =3D opaque; + DMADeviceState *s =3D opaque; uint32_t saddr; =20 if (s->is_ledma && (addr > DMA_MAX_REG_OFFSET)) { @@ -252,28 +253,28 @@ static const MemoryRegionOps dma_mem_ops =3D { }, }; =20 -static void dma_reset(DeviceState *d) +static void sparc32_dma_device_reset(DeviceState *d) { - DMAState *s =3D SPARC32_DMA(d); + DMADeviceState *s =3D SPARC32_DMA_DEVICE(d); =20 memset(s->dmaregs, 0, DMA_SIZE); s->dmaregs[0] =3D DMA_VER; } =20 -static const VMStateDescription vmstate_dma =3D { +static const VMStateDescription vmstate_sparc32_dma_device =3D { .name =3D"sparc32_dma", .version_id =3D 2, .minimum_version_id =3D 2, .fields =3D (VMStateField[]) { - VMSTATE_UINT32_ARRAY(dmaregs, DMAState, DMA_REGS), + VMSTATE_UINT32_ARRAY(dmaregs, DMADeviceState, DMA_REGS), VMSTATE_END_OF_LIST() } }; =20 -static void sparc32_dma_init(Object *obj) +static void sparc32_dma_device_init(Object *obj) { DeviceState *dev =3D DEVICE(obj); - DMAState *s =3D SPARC32_DMA(obj); + DMADeviceState *s =3D SPARC32_DMA_DEVICE(obj); SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); =20 sysbus_init_irq(sbd, &s->irq); @@ -284,9 +285,9 @@ static void sparc32_dma_init(Object *obj) qdev_init_gpio_out(dev, s->gpio, 2); } =20 -static void sparc32_dma_realize(DeviceState *dev, Error **errp) +static void sparc32_dma_device_realize(DeviceState *dev, Error **errp) { - DMAState *s =3D SPARC32_DMA(dev); + DMADeviceState *s =3D SPARC32_DMA_DEVICE(dev); int reg_size; =20 reg_size =3D s->is_ledma ? DMA_ETH_SIZE : DMA_SIZE; @@ -294,35 +295,35 @@ static void sparc32_dma_realize(DeviceState *dev, Err= or **errp) "dma", reg_size); } =20 -static Property sparc32_dma_properties[] =3D { - DEFINE_PROP_PTR("iommu_opaque", DMAState, iommu), - DEFINE_PROP_UINT32("is_ledma", DMAState, is_ledma, 0), +static Property sparc32_dma_device_properties[] =3D { + DEFINE_PROP_PTR("iommu_opaque", DMADeviceState, iommu), + DEFINE_PROP_UINT32("is_ledma", DMADeviceState, is_ledma, 0), DEFINE_PROP_END_OF_LIST(), }; =20 -static void sparc32_dma_class_init(ObjectClass *klass, void *data) +static void sparc32_dma_device_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 - dc->reset =3D dma_reset; - dc->vmsd =3D &vmstate_dma; - dc->props =3D sparc32_dma_properties; - dc->realize =3D sparc32_dma_realize; + dc->reset =3D sparc32_dma_device_reset; + dc->vmsd =3D &vmstate_sparc32_dma_device; + dc->props =3D sparc32_dma_device_properties; + dc->realize =3D sparc32_dma_device_realize; /* Reason: pointer property "iommu_opaque" */ dc->user_creatable =3D false; } =20 -static const TypeInfo sparc32_dma_info =3D { - .name =3D TYPE_SPARC32_DMA, +static const TypeInfo sparc32_dma_device_info =3D { + .name =3D TYPE_SPARC32_DMA_DEVICE, .parent =3D TYPE_SYS_BUS_DEVICE, - .instance_size =3D sizeof(DMAState), - .instance_init =3D sparc32_dma_init, - .class_init =3D sparc32_dma_class_init, + .instance_size =3D sizeof(DMADeviceState), + .instance_init =3D sparc32_dma_device_init, + .class_init =3D sparc32_dma_device_class_init, }; =20 static void sparc32_dma_register_types(void) { - type_register_static(&sparc32_dma_info); + type_register_static(&sparc32_dma_device_info); } =20 type_init(sparc32_dma_register_types) diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index e1bdd48..82c553c 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -313,7 +313,7 @@ static void *sparc32_dma_init(hwaddr daddr, qemu_irq pa= rent_irq, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_create(NULL, "sparc32_dma"); + dev =3D qdev_create(NULL, "sparc32-dma-device"); qdev_prop_set_ptr(dev, "iommu_opaque", iommu); qdev_prop_set_uint32(dev, "is_ledma", is_ledma); qdev_init_nofail(dev); --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 15080047052351011.8095871659693; Sat, 14 Oct 2017 11:11:45 -0700 (PDT) Received: from localhost ([::1]:54795 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QuB-0002cY-RT for importer@patchew.org; Sat, 14 Oct 2017 14:11:23 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51793) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsF-0001OI-Kk for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsE-0002yL-FF for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:23 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36812 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsE-0002xu-9V for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:22 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsF-0002Gl-76; Sat, 14 Oct 2017 19:09:24 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:08:54 +0100 Message-Id: <1508004545-28578-3-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 02/13] sparc32_dma: split esp and le into separate DMA devices X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Due to slight differences in behaviour accessing the registers for the esp and le devices, create two separate SPARC32_DMA_DEVICE types and update the sun4m machine to use. Note that by using different device types we already know the size of the register block and the value of is_ledma at init time, allowing us to drop the SPARC32_DMA_DEVICE realize function and the is_ledma device property. Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 63 ++++++++++++++++++++++++++++++++++++++++------= ---- hw/sparc/sun4m.c | 3 +-- 2 files changed, 52 insertions(+), 14 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index a8d31c1..e4ff4a8 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -78,6 +78,22 @@ struct DMADeviceState { uint32_t is_ledma; }; =20 +#define TYPE_SPARC32_ESPDMA_DEVICE "sparc32-espdma" +#define SPARC32_ESPDMA_DEVICE(obj) OBJECT_CHECK(ESPDMADeviceState, (obj), \ + TYPE_SPARC32_ESPDMA_DEVICE) + +typedef struct ESPDMADeviceState { + DMADeviceState parent_obj; +} ESPDMADeviceState; + +#define TYPE_SPARC32_LEDMA_DEVICE "sparc32-ledma" +#define SPARC32_LEDMA_DEVICE(obj) OBJECT_CHECK(LEDMADeviceState, (obj), \ + TYPE_SPARC32_LEDMA_DEVICE) + +typedef struct LEDMADeviceState { + DMADeviceState parent_obj; +} LEDMADeviceState; + enum { GPIO_RESET =3D 0, GPIO_DMA, @@ -285,19 +301,8 @@ static void sparc32_dma_device_init(Object *obj) qdev_init_gpio_out(dev, s->gpio, 2); } =20 -static void sparc32_dma_device_realize(DeviceState *dev, Error **errp) -{ - DMADeviceState *s =3D SPARC32_DMA_DEVICE(dev); - int reg_size; - - reg_size =3D s->is_ledma ? DMA_ETH_SIZE : DMA_SIZE; - memory_region_init_io(&s->iomem, OBJECT(dev), &dma_mem_ops, s, - "dma", reg_size); -} - static Property sparc32_dma_device_properties[] =3D { DEFINE_PROP_PTR("iommu_opaque", DMADeviceState, iommu), - DEFINE_PROP_UINT32("is_ledma", DMADeviceState, is_ledma, 0), DEFINE_PROP_END_OF_LIST(), }; =20 @@ -308,7 +313,6 @@ static void sparc32_dma_device_class_init(ObjectClass *= klass, void *data) dc->reset =3D sparc32_dma_device_reset; dc->vmsd =3D &vmstate_sparc32_dma_device; dc->props =3D sparc32_dma_device_properties; - dc->realize =3D sparc32_dma_device_realize; /* Reason: pointer property "iommu_opaque" */ dc->user_creatable =3D false; } @@ -316,14 +320,49 @@ static void sparc32_dma_device_class_init(ObjectClass= *klass, void *data) static const TypeInfo sparc32_dma_device_info =3D { .name =3D TYPE_SPARC32_DMA_DEVICE, .parent =3D TYPE_SYS_BUS_DEVICE, + .abstract =3D true, .instance_size =3D sizeof(DMADeviceState), .instance_init =3D sparc32_dma_device_init, .class_init =3D sparc32_dma_device_class_init, }; =20 +static void sparc32_espdma_device_init(Object *obj) +{ + DMADeviceState *s =3D SPARC32_DMA_DEVICE(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s, + "espdma-mmio", DMA_SIZE); + s->is_ledma =3D 0; +} + +static const TypeInfo sparc32_espdma_device_info =3D { + .name =3D TYPE_SPARC32_ESPDMA_DEVICE, + .parent =3D TYPE_SPARC32_DMA_DEVICE, + .instance_size =3D sizeof(ESPDMADeviceState), + .instance_init =3D sparc32_espdma_device_init, +}; + +static void sparc32_ledma_device_init(Object *obj) +{ + DMADeviceState *s =3D SPARC32_DMA_DEVICE(obj); + + memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s, + "ledma-mmio", DMA_ETH_SIZE); + s->is_ledma =3D 1; +} + +static const TypeInfo sparc32_ledma_device_info =3D { + .name =3D TYPE_SPARC32_LEDMA_DEVICE, + .parent =3D TYPE_SPARC32_DMA_DEVICE, + .instance_size =3D sizeof(LEDMADeviceState), + .instance_init =3D sparc32_ledma_device_init, +}; + static void sparc32_dma_register_types(void) { type_register_static(&sparc32_dma_device_info); + type_register_static(&sparc32_espdma_device_info); + type_register_static(&sparc32_ledma_device_info); } =20 type_init(sparc32_dma_register_types) diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 82c553c..88a9752 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -313,9 +313,8 @@ static void *sparc32_dma_init(hwaddr daddr, qemu_irq pa= rent_irq, DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_create(NULL, "sparc32-dma-device"); + dev =3D qdev_create(NULL, is_ledma ? "sparc32-ledma" : "sparc32-espdma= "); qdev_prop_set_ptr(dev, "iommu_opaque", iommu); - qdev_prop_set_uint32(dev, "is_ledma", is_ledma); qdev_init_nofail(dev); s =3D SYS_BUS_DEVICE(dev); sysbus_connect_irq(s, 0, parent_irq); --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508004903668428.9216056097697; Sat, 14 Oct 2017 11:15:03 -0700 (PDT) Received: from localhost ([::1]:54805 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3Qxf-0005D6-UD for importer@patchew.org; Sat, 14 Oct 2017 14:14:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51801) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsF-0001OJ-R4 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsE-0002yS-H8 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:23 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36815 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsE-0002xx-Ao for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:22 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsG-0002Gl-PD; Sat, 14 Oct 2017 19:09:26 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:08:55 +0100 Message-Id: <1508004545-28578-4-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 03/13] sparc32_dma: move type declarations from sparc32_dma.c to sparc32_dma.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 34 ---------------------------------- include/hw/sparc/sparc32_dma.h | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 34 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index e4ff4a8..ae8fa06 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -40,7 +40,6 @@ * http://www.ibiblio.org/pub/historic-linux/early-ports/Sparc/NCR/DMA2.txt */ =20 -#define DMA_REGS 4 #define DMA_SIZE (4 * sizeof(uint32_t)) /* We need the mask, because one instance of the device is not page aligned (ledma, start address 0x0010) */ @@ -61,39 +60,6 @@ /* XXX SCSI and ethernet should have different read-only bit masks */ #define DMA_CSR_RO_MASK 0xfe000007 =20 -#define TYPE_SPARC32_DMA_DEVICE "sparc32-dma-device" -#define SPARC32_DMA_DEVICE(obj) OBJECT_CHECK(DMADeviceState, (obj), \ - TYPE_SPARC32_DMA_DEVICE) - -typedef struct DMADeviceState DMADeviceState; - -struct DMADeviceState { - SysBusDevice parent_obj; - - MemoryRegion iomem; - uint32_t dmaregs[DMA_REGS]; - qemu_irq irq; - void *iommu; - qemu_irq gpio[2]; - uint32_t is_ledma; -}; - -#define TYPE_SPARC32_ESPDMA_DEVICE "sparc32-espdma" -#define SPARC32_ESPDMA_DEVICE(obj) OBJECT_CHECK(ESPDMADeviceState, (obj), \ - TYPE_SPARC32_ESPDMA_DEVICE) - -typedef struct ESPDMADeviceState { - DMADeviceState parent_obj; -} ESPDMADeviceState; - -#define TYPE_SPARC32_LEDMA_DEVICE "sparc32-ledma" -#define SPARC32_LEDMA_DEVICE(obj) OBJECT_CHECK(LEDMADeviceState, (obj), \ - TYPE_SPARC32_LEDMA_DEVICE) - -typedef struct LEDMADeviceState { - DMADeviceState parent_obj; -} LEDMADeviceState; - enum { GPIO_RESET =3D 0, GPIO_DMA, diff --git a/include/hw/sparc/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h index 9497b13..df7491d 100644 --- a/include/hw/sparc/sparc32_dma.h +++ b/include/hw/sparc/sparc32_dma.h @@ -1,6 +1,43 @@ #ifndef SPARC32_DMA_H #define SPARC32_DMA_H =20 +#include "hw/sysbus.h" + +#define DMA_REGS 4 + +#define TYPE_SPARC32_DMA_DEVICE "sparc32-dma-device" +#define SPARC32_DMA_DEVICE(obj) OBJECT_CHECK(DMADeviceState, (obj), \ + TYPE_SPARC32_DMA_DEVICE) + +typedef struct DMADeviceState DMADeviceState; + +struct DMADeviceState { + SysBusDevice parent_obj; + + MemoryRegion iomem; + uint32_t dmaregs[DMA_REGS]; + qemu_irq irq; + void *iommu; + qemu_irq gpio[2]; + uint32_t is_ledma; +}; + +#define TYPE_SPARC32_ESPDMA_DEVICE "sparc32-espdma" +#define SPARC32_ESPDMA_DEVICE(obj) OBJECT_CHECK(ESPDMADeviceState, (obj), \ + TYPE_SPARC32_ESPDMA_DEVICE) + +typedef struct ESPDMADeviceState { + DMADeviceState parent_obj; +} ESPDMADeviceState; + +#define TYPE_SPARC32_LEDMA_DEVICE "sparc32-ledma" +#define SPARC32_LEDMA_DEVICE(obj) OBJECT_CHECK(LEDMADeviceState, (obj), \ + TYPE_SPARC32_LEDMA_DEVICE) + +typedef struct LEDMADeviceState { + DMADeviceState parent_obj; +} LEDMADeviceState; + /* sparc32_dma.c */ void ledma_memory_read(void *opaque, hwaddr addr, uint8_t *buf, int len, int do_bswap); --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508004692658826.1083952831397; Sat, 14 Oct 2017 11:11:32 -0700 (PDT) Received: from localhost ([::1]:54794 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3Qu9-0002bC-R1 for importer@patchew.org; Sat, 14 Oct 2017 14:11:21 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51792) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsF-0001OH-KQ for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsE-0002yY-HW for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:23 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36816 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsE-0002xy-BY for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:22 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsI-0002Gl-BK; Sat, 14 Oct 2017 19:09:27 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:08:56 +0100 Message-Id: <1508004545-28578-5-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 04/13] sun4m: move DMA device wiring from sparc32_dma_init() to sun4m_hw_init() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" By using the sysbus interface it is possible to wire up the esp/le devices to the sun4m DMA controller directly during sun4m_hw_init() instead of passing qemu_irqs into the sparc32_dma_init() function. This is an intermediate step to allow further reorganisation as more logic is moved into the relevant SPARC32 DMA devices; there will be a final refactoring of sparc32_dma_init() once this work is complete. Signed-off-by: Mark Cave-Ayland --- hw/sparc/sun4m.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 88a9752..4f2ed4b 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -307,8 +307,7 @@ static void *iommu_init(hwaddr addr, uint32_t version, = qemu_irq irq) return s; } =20 -static void *sparc32_dma_init(hwaddr daddr, qemu_irq parent_irq, - void *iommu, qemu_irq *dev_irq, int is_ledma) +static void *sparc32_dma_init(hwaddr daddr, void *iommu, int is_ledma) { DeviceState *dev; SysBusDevice *s; @@ -317,8 +316,6 @@ static void *sparc32_dma_init(hwaddr daddr, qemu_irq pa= rent_irq, qdev_prop_set_ptr(dev, "iommu_opaque", iommu); qdev_init_nofail(dev); s =3D SYS_BUS_DEVICE(dev); - sysbus_connect_irq(s, 0, parent_irq); - *dev_irq =3D qdev_get_gpio_in(dev, 0); sysbus_mmio_map(s, 0, daddr); =20 return s; @@ -821,9 +818,10 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hw= def, DeviceState *slavio_intctl; const char *cpu_model =3D machine->cpu_model; unsigned int i; - void *iommu, *espdma, *ledma, *nvram; - qemu_irq *cpu_irqs[MAX_CPUS], slavio_irq[32], slavio_cpu_irq[MAX_CPUS], - espdma_irq, ledma_irq; + void *iommu, *nvram; + DeviceState *espdma, *ledma; + SysBusDevice *sbd; + qemu_irq *cpu_irqs[MAX_CPUS], slavio_irq[32], slavio_cpu_irq[MAX_CPUS]; qemu_irq esp_reset, dma_enable; qemu_irq fdc_tc; unsigned long kernel_size; @@ -882,11 +880,13 @@ static void sun4m_hw_init(const struct sun4m_hwdef *h= wdef, empty_slot_init(hwdef->iommu_pad_base,hwdef->iommu_pad_len); } =20 - espdma =3D sparc32_dma_init(hwdef->dma_base, slavio_irq[18], - iommu, &espdma_irq, 0); + espdma =3D sparc32_dma_init(hwdef->dma_base, iommu, 0); + sbd =3D SYS_BUS_DEVICE(espdma); + sysbus_connect_irq(sbd, 0, slavio_irq[18]); =20 - ledma =3D sparc32_dma_init(hwdef->dma_base + 16ULL, - slavio_irq[16], iommu, &ledma_irq, 1); + ledma =3D sparc32_dma_init(hwdef->dma_base + 16ULL, iommu, 1); + sbd =3D SYS_BUS_DEVICE(ledma); + sysbus_connect_irq(sbd, 0, slavio_irq[16]); =20 if (graphic_depth !=3D 8 && graphic_depth !=3D 24) { error_report("Unsupported depth: %d", graphic_depth); @@ -939,7 +939,8 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwd= ef, empty_slot_init(hwdef->sx_base, 0x2000); } =20 - lance_init(&nd_table[0], hwdef->le_base, ledma, ledma_irq); + lance_init(&nd_table[0], hwdef->le_base, ledma, + qdev_get_gpio_in(ledma, 0)); =20 nvram =3D m48t59_init(slavio_irq[0], hwdef->nvram_base, 0, 0x2000, 196= 8, 8); =20 @@ -971,7 +972,9 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwd= ef, =20 esp_init(hwdef->esp_base, 2, espdma_memory_read, espdma_memory_write, - espdma, espdma_irq, &esp_reset, &dma_enable); + espdma, + qdev_get_gpio_in(espdma, 0), + &esp_reset, &dma_enable); =20 qdev_connect_gpio_out(espdma, 0, esp_reset); qdev_connect_gpio_out(espdma, 1, dma_enable); --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508005034589230.0655800601022; Sat, 14 Oct 2017 11:17:14 -0700 (PDT) Received: from localhost ([::1]:54817 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3Qzh-0006rw-1X for importer@patchew.org; Sat, 14 Oct 2017 14:17:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsG-0001OT-Vg for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsF-0002zI-Us for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:24 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36819 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsF-0002ye-PE for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:23 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsJ-0002Gl-S4; Sat, 14 Oct 2017 19:09:28 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:08:57 +0100 Message-Id: <1508004545-28578-6-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 05/13] sun4m_iommu: move TYPE_SUN4M_IOMMU declaration to sun4m.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is in preparation to allow the type to be used elsewhere. Signed-off-by: Mark Cave-Ayland --- hw/dma/sun4m_iommu.c | 14 -------------- include/hw/sparc/sun4m.h | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/hw/dma/sun4m_iommu.c b/hw/dma/sun4m_iommu.c index 335ef63..840064b 100644 --- a/hw/dma/sun4m_iommu.c +++ b/hw/dma/sun4m_iommu.c @@ -36,7 +36,6 @@ * http://mediacast.sun.com/users/Barton808/media/Sun4M_SystemArchitecture= _edited2.pdf */ =20 -#define IOMMU_NREGS (4*4096/4) #define IOMMU_CTRL (0x0000 >> 2) #define IOMMU_CTRL_IMPL 0xf0000000 /* Implementation */ #define IOMMU_CTRL_VERS 0x0f000000 /* Version */ @@ -128,19 +127,6 @@ #define IOMMU_PAGE_SIZE (1 << IOMMU_PAGE_SHIFT) #define IOMMU_PAGE_MASK ~(IOMMU_PAGE_SIZE - 1) =20 -#define TYPE_SUN4M_IOMMU "iommu" -#define SUN4M_IOMMU(obj) OBJECT_CHECK(IOMMUState, (obj), TYPE_SUN4M_IOMMU) - -typedef struct IOMMUState { - SysBusDevice parent_obj; - - MemoryRegion iomem; - uint32_t regs[IOMMU_NREGS]; - hwaddr iostart; - qemu_irq irq; - uint32_t version; -} IOMMUState; - static uint64_t iommu_mem_read(void *opaque, hwaddr addr, unsigned size) { diff --git a/include/hw/sparc/sun4m.h b/include/hw/sparc/sun4m.h index 580d87b..1f1cf91 100644 --- a/include/hw/sparc/sun4m.h +++ b/include/hw/sparc/sun4m.h @@ -4,10 +4,26 @@ #include "qemu-common.h" #include "exec/hwaddr.h" #include "qapi/qmp/types.h" +#include "hw/sysbus.h" =20 /* Devices used by sparc32 system. */ =20 /* iommu.c */ +#define TYPE_SUN4M_IOMMU "iommu" +#define SUN4M_IOMMU(obj) OBJECT_CHECK(IOMMUState, (obj), TYPE_SUN4M_IOMMU) + +#define IOMMU_NREGS (4 * 4096 / 4) + +typedef struct IOMMUState { + SysBusDevice parent_obj; + + MemoryRegion iomem; + uint32_t regs[IOMMU_NREGS]; + hwaddr iostart; + qemu_irq irq; + uint32_t version; +} IOMMUState; + void sparc_iommu_memory_rw(void *opaque, hwaddr addr, uint8_t *buf, int len, int is_write); static inline void sparc_iommu_memory_read(void *opaque, --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508004691333419.49247717773017; Sat, 14 Oct 2017 11:11:31 -0700 (PDT) Received: from localhost ([::1]:54796 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QuD-0002e7-3l for importer@patchew.org; Sat, 14 Oct 2017 14:11:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51848) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsI-0001Pe-TW for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsH-0002zp-Qw for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:26 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36823 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsH-0002zb-K9 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:25 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsL-0002Gl-5K; Sat, 14 Oct 2017 19:09:30 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:08:58 +0100 Message-Id: <1508004545-28578-7-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 06/13] sparc32_dma: use object link instead of qdev property to pass IOMMU reference X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This enables us to remove the last remaining (opaque) qdev property. Whilst= we are here, also update iommu_init() to use TYPE_SUN4M_IOMMU instead of a hardcoded string. Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 13 +++++-------- hw/sparc/sun4m.c | 4 ++-- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index ae8fa06..c56a2ba 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -263,24 +263,21 @@ static void sparc32_dma_device_init(Object *obj) =20 sysbus_init_mmio(sbd, &s->iomem); =20 + object_property_add_link(OBJECT(dev), "iommu", TYPE_SUN4M_IOMMU, + (Object **) &s->iommu, + qdev_prop_allow_set_link_before_realize, + 0, NULL); + qdev_init_gpio_in(dev, dma_set_irq, 1); qdev_init_gpio_out(dev, s->gpio, 2); } =20 -static Property sparc32_dma_device_properties[] =3D { - DEFINE_PROP_PTR("iommu_opaque", DMADeviceState, iommu), - DEFINE_PROP_END_OF_LIST(), -}; - static void sparc32_dma_device_class_init(ObjectClass *klass, void *data) { DeviceClass *dc =3D DEVICE_CLASS(klass); =20 dc->reset =3D sparc32_dma_device_reset; dc->vmsd =3D &vmstate_sparc32_dma_device; - dc->props =3D sparc32_dma_device_properties; - /* Reason: pointer property "iommu_opaque" */ - dc->user_creatable =3D false; } =20 static const TypeInfo sparc32_dma_device_info =3D { diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 4f2ed4b..12d36b5 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -297,7 +297,7 @@ static void *iommu_init(hwaddr addr, uint32_t version, = qemu_irq irq) DeviceState *dev; SysBusDevice *s; =20 - dev =3D qdev_create(NULL, "iommu"); + dev =3D qdev_create(NULL, TYPE_SUN4M_IOMMU); qdev_prop_set_uint32(dev, "version", version); qdev_init_nofail(dev); s =3D SYS_BUS_DEVICE(dev); @@ -313,7 +313,7 @@ static void *sparc32_dma_init(hwaddr daddr, void *iommu= , int is_ledma) SysBusDevice *s; =20 dev =3D qdev_create(NULL, is_ledma ? "sparc32-ledma" : "sparc32-espdma= "); - qdev_prop_set_ptr(dev, "iommu_opaque", iommu); + object_property_set_link(OBJECT(dev), OBJECT(iommu), "iommu", &error_a= bort); qdev_init_nofail(dev); s =3D SYS_BUS_DEVICE(dev); sysbus_mmio_map(s, 0, daddr); --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508004816753348.9874378577771; Sat, 14 Oct 2017 11:13:36 -0700 (PDT) Received: from localhost ([::1]:54801 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QwB-0004MP-OS for importer@patchew.org; Sat, 14 Oct 2017 14:13:27 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51866) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsJ-0001Qm-Ti for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsI-00030E-U8 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:27 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36826 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsI-0002zw-Nc for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:26 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsN-0002Gl-4k; Sat, 14 Oct 2017 19:09:32 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:08:59 +0100 Message-Id: <1508004545-28578-8-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 07/13] esp: move TYPE_ESP and SysBusESPState from esp.c to esp.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This enables them to be used outside of esp.c. Signed-off-by: Mark Cave-Ayland CC: Paolo Bonzini --- hw/scsi/esp.c | 13 ------------- include/hw/scsi/esp.h | 13 +++++++++++++ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/hw/scsi/esp.c b/hw/scsi/esp.c index 22c2d91..ee586e7 100644 --- a/hw/scsi/esp.c +++ b/hw/scsi/esp.c @@ -592,19 +592,6 @@ const VMStateDescription vmstate_esp =3D { } }; =20 -#define TYPE_ESP "esp" -#define ESP_STATE(obj) OBJECT_CHECK(SysBusESPState, (obj), TYPE_ESP) - -typedef struct { - /*< private >*/ - SysBusDevice parent_obj; - /*< public >*/ - - MemoryRegion iomem; - uint32_t it_shift; - ESPState esp; -} SysBusESPState; - static void sysbus_esp_mem_write(void *opaque, hwaddr addr, uint64_t val, unsigned int size) { diff --git a/include/hw/scsi/esp.h b/include/hw/scsi/esp.h index d2c4886..a79d3f2 100644 --- a/include/hw/scsi/esp.h +++ b/include/hw/scsi/esp.h @@ -52,6 +52,19 @@ struct ESPState { void (*dma_cb)(ESPState *s); }; =20 +#define TYPE_ESP "esp" +#define ESP_STATE(obj) OBJECT_CHECK(SysBusESPState, (obj), TYPE_ESP) + +typedef struct { + /*< private >*/ + SysBusDevice parent_obj; + /*< public >*/ + + MemoryRegion iomem; + uint32_t it_shift; + ESPState esp; +} SysBusESPState; + #define ESP_TCLO 0x0 #define ESP_TCMID 0x1 #define ESP_FIFO 0x2 --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508005113888475.29269170950784; Sat, 14 Oct 2017 11:18:33 -0700 (PDT) Received: from localhost ([::1]:54823 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3R0z-0007j4-Qn for importer@patchew.org; Sat, 14 Oct 2017 14:18:25 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51880) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsL-0001So-IE for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsK-000315-EW for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:29 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36828 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsK-00030X-80 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:28 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsO-0002Gl-7G; Sat, 14 Oct 2017 19:09:33 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:09:00 +0100 Message-Id: <1508004545-28578-9-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 08/13] sparc32_dma: make esp device child of espdma device X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This makes it possible to reference the esp device from the espdma device as required, and by wiring up the device ourselves in sun4m.c we can drop use of the esp_init() function. Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 26 ++++++++++++++++++++++++++ hw/sparc/sun4m.c | 19 ++++++++----------- include/hw/sparc/sparc32_dma.h | 3 +++ 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index c56a2ba..6009b94 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -298,11 +298,37 @@ static void sparc32_espdma_device_init(Object *obj) s->is_ledma =3D 0; } =20 +static void sparc32_espdma_device_realize(DeviceState *dev, Error **errp) +{ + DeviceState *d; + SysBusESPState *sysbus; + ESPState *esp; + + d =3D qdev_create(NULL, TYPE_ESP); + object_property_add_child(OBJECT(dev), "esp", OBJECT(d), errp); + sysbus =3D ESP_STATE(d); + esp =3D &sysbus->esp; + esp->dma_memory_read =3D espdma_memory_read; + esp->dma_memory_write =3D espdma_memory_write; + esp->dma_opaque =3D SPARC32_DMA_DEVICE(dev); + sysbus->it_shift =3D 2; + esp->dma_enabled =3D 1; + qdev_init_nofail(d); +} + +static void sparc32_espdma_device_class_init(ObjectClass *klass, void *dat= a) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->realize =3D sparc32_espdma_device_realize; +} + static const TypeInfo sparc32_espdma_device_info =3D { .name =3D TYPE_SPARC32_ESPDMA_DEVICE, .parent =3D TYPE_SPARC32_DMA_DEVICE, .instance_size =3D sizeof(ESPDMADeviceState), .instance_init =3D sparc32_espdma_device_init, + .class_init =3D sparc32_espdma_device_class_init, }; =20 static void sparc32_ledma_device_init(Object *obj) diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 12d36b5..4626c85 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -819,10 +819,9 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hw= def, const char *cpu_model =3D machine->cpu_model; unsigned int i; void *iommu, *nvram; - DeviceState *espdma, *ledma; + DeviceState *espdma, *esp, *ledma; SysBusDevice *sbd; qemu_irq *cpu_irqs[MAX_CPUS], slavio_irq[32], slavio_cpu_irq[MAX_CPUS]; - qemu_irq esp_reset, dma_enable; qemu_irq fdc_tc; unsigned long kernel_size; DriveInfo *fd[MAX_FD]; @@ -884,6 +883,13 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hw= def, sbd =3D SYS_BUS_DEVICE(espdma); sysbus_connect_irq(sbd, 0, slavio_irq[18]); =20 + esp =3D DEVICE(object_resolve_path_component(OBJECT(espdma), "esp")); + sbd =3D SYS_BUS_DEVICE(esp); + sysbus_mmio_map(sbd, 0, hwdef->esp_base); + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(espdma, 0)); + qdev_connect_gpio_out(espdma, 0, qdev_get_gpio_in(esp, 0)); + qdev_connect_gpio_out(espdma, 1, qdev_get_gpio_in(esp, 1)); + ledma =3D sparc32_dma_init(hwdef->dma_base + 16ULL, iommu, 1); sbd =3D SYS_BUS_DEVICE(ledma); sysbus_connect_irq(sbd, 0, slavio_irq[16]); @@ -970,15 +976,6 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hw= def, slavio_misc_init(hwdef->slavio_base, hwdef->aux1_base, hwdef->aux2_bas= e, slavio_irq[30], fdc_tc); =20 - esp_init(hwdef->esp_base, 2, - espdma_memory_read, espdma_memory_write, - espdma, - qdev_get_gpio_in(espdma, 0), - &esp_reset, &dma_enable); - - qdev_connect_gpio_out(espdma, 0, esp_reset); - qdev_connect_gpio_out(espdma, 1, dma_enable); - if (hwdef->cs_base) { sysbus_create_simple("SUNW,CS4231", hwdef->cs_base, slavio_irq[5]); diff --git a/include/hw/sparc/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h index df7491d..365160f 100644 --- a/include/hw/sparc/sparc32_dma.h +++ b/include/hw/sparc/sparc32_dma.h @@ -2,6 +2,7 @@ #define SPARC32_DMA_H =20 #include "hw/sysbus.h" +#include "hw/scsi/esp.h" =20 #define DMA_REGS 4 =20 @@ -28,6 +29,8 @@ struct DMADeviceState { =20 typedef struct ESPDMADeviceState { DMADeviceState parent_obj; + + SysBusESPState *esp; } ESPDMADeviceState; =20 #define TYPE_SPARC32_LEDMA_DEVICE "sparc32-ledma" --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508005185063788.6339030715851; Sat, 14 Oct 2017 11:19:45 -0700 (PDT) Received: from localhost ([::1]:54825 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3R28-0008HF-4H for importer@patchew.org; Sat, 14 Oct 2017 14:19:36 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51899) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QsO-0001WE-OI for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QsL-00032D-KN for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:32 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36831 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QsL-00031z-D8 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:09:29 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsP-0002Gl-Ok; Sat, 14 Oct 2017 19:09:34 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:09:01 +0100 Message-Id: <1508004545-28578-10-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 09/13] lance: move TYPE_LANCE and SysBusPCNetState from lance.c to sun4m.h X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This enables them to be used outside of lance.c. Signed-off-by: Mark Cave-Ayland CC: Jason Wang --- hw/net/lance.c | 9 --------- include/hw/sparc/sun4m.h | 13 +++++++++++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/hw/net/lance.c b/hw/net/lance.c index 92b0c68..ef7747d 100644 --- a/hw/net/lance.c +++ b/hw/net/lance.c @@ -45,15 +45,6 @@ #include "trace.h" #include "sysemu/sysemu.h" =20 -#define TYPE_LANCE "lance" -#define SYSBUS_PCNET(obj) \ - OBJECT_CHECK(SysBusPCNetState, (obj), TYPE_LANCE) - -typedef struct { - SysBusDevice parent_obj; - - PCNetState state; -} SysBusPCNetState; =20 static void parent_lance_reset(void *opaque, int irq, int level) { diff --git a/include/hw/sparc/sun4m.h b/include/hw/sparc/sun4m.h index 1f1cf91..a4f5f09 100644 --- a/include/hw/sparc/sun4m.h +++ b/include/hw/sparc/sun4m.h @@ -5,6 +5,8 @@ #include "exec/hwaddr.h" #include "qapi/qmp/types.h" #include "hw/sysbus.h" +#include "net/net.h" +#include "hw/net/pcnet.h" =20 /* Devices used by sparc32 system. */ =20 @@ -40,6 +42,17 @@ static inline void sparc_iommu_memory_write(void *opaque, sparc_iommu_memory_rw(opaque, addr, buf, len, 1); } =20 +/* lance.c */ +#define TYPE_LANCE "lance" +#define SYSBUS_PCNET(obj) \ + OBJECT_CHECK(SysBusPCNetState, (obj), TYPE_LANCE) + +typedef struct { + SysBusDevice parent_obj; + + PCNetState state; +} SysBusPCNetState; + /* sparc32_dma.c */ #include "hw/sparc/sparc32_dma.h" =20 --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508005258084812.2763747030689; Sat, 14 Oct 2017 11:20:58 -0700 (PDT) Received: from localhost ([::1]:54833 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3R3O-0000WD-D2 for importer@patchew.org; Sat, 14 Oct 2017 14:20:54 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53232) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QxN-0005DA-8W for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QxM-0004nb-6E for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:41 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36852 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QxL-0004nN-Ux for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:40 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsQ-0002Gl-UO; Sat, 14 Oct 2017 19:09:36 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:09:02 +0100 Message-Id: <1508004545-28578-11-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 10/13] sparc32_dma: make lance device child of ledma device X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This makes it possible to reference the lance device from the ledma device = as required. Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 23 ++++++++++++++++++++++- hw/sparc/sun4m.c | 31 +++++++------------------------ include/hw/sparc/sparc32_dma.h | 3 +++ 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index 6009b94..d507ca3 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -28,7 +28,6 @@ #include "qemu/osdep.h" #include "hw/hw.h" #include "hw/sparc/sparc32_dma.h" -#include "hw/sparc/sun4m.h" #include "hw/sysbus.h" #include "trace.h" =20 @@ -340,11 +339,33 @@ static void sparc32_ledma_device_init(Object *obj) s->is_ledma =3D 1; } =20 +static void sparc32_ledma_device_realize(DeviceState *dev, Error **errp) +{ + DeviceState *d; + NICInfo *nd =3D &nd_table[0]; + + qemu_check_nic_model(nd, "lance"); + + d =3D qdev_create(NULL, "lance"); + object_property_add_child(OBJECT(dev), "lance", OBJECT(d), errp); + qdev_set_nic_properties(d, nd); + qdev_prop_set_ptr(d, "dma", dev); + qdev_init_nofail(d); +} + +static void sparc32_ledma_device_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->realize =3D sparc32_ledma_device_realize; +} + static const TypeInfo sparc32_ledma_device_info =3D { .name =3D TYPE_SPARC32_LEDMA_DEVICE, .parent =3D TYPE_SPARC32_DMA_DEVICE, .instance_size =3D sizeof(LEDMADeviceState), .instance_init =3D sparc32_ledma_device_init, + .class_init =3D sparc32_ledma_device_class_init, }; =20 static void sparc32_dma_register_types(void) diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 4626c85..ae486a4 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -321,26 +321,6 @@ static void *sparc32_dma_init(hwaddr daddr, void *iomm= u, int is_ledma) return s; } =20 -static void lance_init(NICInfo *nd, hwaddr leaddr, - void *dma_opaque, qemu_irq irq) -{ - DeviceState *dev; - SysBusDevice *s; - qemu_irq reset; - - qemu_check_nic_model(&nd_table[0], "lance"); - - dev =3D qdev_create(NULL, "lance"); - qdev_set_nic_properties(dev, nd); - qdev_prop_set_ptr(dev, "dma", dma_opaque); - qdev_init_nofail(dev); - s =3D SYS_BUS_DEVICE(dev); - sysbus_mmio_map(s, 0, leaddr); - sysbus_connect_irq(s, 0, irq); - reset =3D qdev_get_gpio_in(dev, 0); - qdev_connect_gpio_out(dma_opaque, 0, reset); -} - static DeviceState *slavio_intctl_init(hwaddr addr, hwaddr addrg, qemu_irq **parent_irq) @@ -819,7 +799,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwd= ef, const char *cpu_model =3D machine->cpu_model; unsigned int i; void *iommu, *nvram; - DeviceState *espdma, *esp, *ledma; + DeviceState *espdma, *esp, *ledma, *lance; SysBusDevice *sbd; qemu_irq *cpu_irqs[MAX_CPUS], slavio_irq[32], slavio_cpu_irq[MAX_CPUS]; qemu_irq fdc_tc; @@ -894,6 +874,12 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hw= def, sbd =3D SYS_BUS_DEVICE(ledma); sysbus_connect_irq(sbd, 0, slavio_irq[16]); =20 + lance =3D DEVICE(object_resolve_path_component(OBJECT(ledma), "lance")= ); + sbd =3D SYS_BUS_DEVICE(lance); + sysbus_mmio_map(sbd, 0, hwdef->le_base); + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(ledma, 0)); + qdev_connect_gpio_out(ledma, 0, qdev_get_gpio_in(lance, 0)); + if (graphic_depth !=3D 8 && graphic_depth !=3D 24) { error_report("Unsupported depth: %d", graphic_depth); exit (1); @@ -945,9 +931,6 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwd= ef, empty_slot_init(hwdef->sx_base, 0x2000); } =20 - lance_init(&nd_table[0], hwdef->le_base, ledma, - qdev_get_gpio_in(ledma, 0)); - nvram =3D m48t59_init(slavio_irq[0], hwdef->nvram_base, 0, 0x2000, 196= 8, 8); =20 slavio_timer_init_all(hwdef->counter_base, slavio_irq[19], slavio_cpu_= irq, smp_cpus); diff --git a/include/hw/sparc/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h index 365160f..5f39c28 100644 --- a/include/hw/sparc/sparc32_dma.h +++ b/include/hw/sparc/sparc32_dma.h @@ -3,6 +3,7 @@ =20 #include "hw/sysbus.h" #include "hw/scsi/esp.h" +#include "hw/sparc/sun4m.h" =20 #define DMA_REGS 4 =20 @@ -39,6 +40,8 @@ typedef struct ESPDMADeviceState { =20 typedef struct LEDMADeviceState { DMADeviceState parent_obj; + + SysBusPCNetState *lance; } LEDMADeviceState; =20 /* sparc32_dma.c */ --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: temperror (zoho.com: Error in retrieving data from DNS) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=temperror (zoho.com: Error in retrieving data from DNS) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508004981656312.6744719926031; Sat, 14 Oct 2017 11:16:21 -0700 (PDT) Received: from localhost ([::1]:54816 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3Qyv-0006Bk-SR for importer@patchew.org; Sat, 14 Oct 2017 14:16:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53279) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QxR-0005Fn-K6 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QxQ-0004pI-3N for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:45 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36855 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QxP-0004on-P1 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:44 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsS-0002Gl-I8; Sat, 14 Oct 2017 19:09:38 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:09:03 +0100 Message-Id: <1508004545-28578-12-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 11/13] sparc32_dma: introduce new SPARC32_DMA type container object X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_6 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Create a new SPARC32_DMA container object (including an appropriate contain= er memory region) and add instances of the SPARC32_ESPDMA_DEVICE and SPARC32_LEDMA_DEVICE as child objects. The benefit is that most of the gpio wiring complexity between esp/espdma and lance/ledma is now hidden within t= he SPARC32_DMA realize function. Since the sun4m IOMMU is already QOMified we can find a reference to it using object_resolve_path_type() allowing us to completely remove all ex= ternal references to the iommu pointer. Finally we rework sun4m's sparc32_dma_init() to invoke the new SPARC32_DMA = object and wire up the remaining board memory regions/IRQs. Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 70 ++++++++++++++++++++++++++++++++++++= ++++ hw/sparc/sun4m.c | 66 ++++++++++++++++++------------------- include/hw/sparc/sparc32_dma.h | 12 +++++++ 3 files changed, 114 insertions(+), 34 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index d507ca3..ba62927 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -29,6 +29,7 @@ #include "hw/hw.h" #include "hw/sparc/sparc32_dma.h" #include "hw/sysbus.h" +#include "qapi/error.h" #include "trace.h" =20 /* @@ -368,11 +369,80 @@ static const TypeInfo sparc32_ledma_device_info =3D { .class_init =3D sparc32_ledma_device_class_init, }; =20 +static void sparc32_dma_realize(DeviceState *dev, Error **errp) +{ + SPARC32DMAState *s =3D SPARC32_DMA(dev); + DeviceState *espdma, *esp, *ledma, *lance; + SysBusDevice *sbd; + Object *iommu; + + iommu =3D object_resolve_path_type("", TYPE_SUN4M_IOMMU, NULL); + if (!iommu) { + error_setg(errp, "unable to locate sun4m IOMMU device"); + return; + } + + espdma =3D qdev_create(NULL, TYPE_SPARC32_ESPDMA_DEVICE); + object_property_set_link(OBJECT(espdma), iommu, "iommu", errp); + object_property_add_child(OBJECT(s), "espdma", OBJECT(espdma), errp); + qdev_init_nofail(espdma); + + esp =3D DEVICE(object_resolve_path_component(OBJECT(espdma), "esp")); + sbd =3D SYS_BUS_DEVICE(esp); + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(espdma, 0)); + qdev_connect_gpio_out(espdma, 0, qdev_get_gpio_in(esp, 0)); + qdev_connect_gpio_out(espdma, 1, qdev_get_gpio_in(esp, 1)); + + sbd =3D SYS_BUS_DEVICE(espdma); + memory_region_add_subregion(&s->dmamem, 0x0, + sysbus_mmio_get_region(sbd, 0)); + + ledma =3D qdev_create(NULL, TYPE_SPARC32_LEDMA_DEVICE); + object_property_set_link(OBJECT(ledma), iommu, "iommu", errp); + object_property_add_child(OBJECT(s), "ledma", OBJECT(ledma), errp); + qdev_init_nofail(ledma); + + lance =3D DEVICE(object_resolve_path_component(OBJECT(ledma), "lance")= ); + sbd =3D SYS_BUS_DEVICE(lance); + sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(ledma, 0)); + qdev_connect_gpio_out(ledma, 0, qdev_get_gpio_in(lance, 0)); + + sbd =3D SYS_BUS_DEVICE(ledma); + memory_region_add_subregion(&s->dmamem, 0x10, + sysbus_mmio_get_region(sbd, 0)); +} + +static void sparc32_dma_init(Object *obj) +{ + SPARC32DMAState *s =3D SPARC32_DMA(obj); + SysBusDevice *sbd =3D SYS_BUS_DEVICE(obj); + + memory_region_init(&s->dmamem, OBJECT(s), "dma", DMA_SIZE + DMA_ETH_SI= ZE); + sysbus_init_mmio(sbd, &s->dmamem); +} + +static void sparc32_dma_class_init(ObjectClass *klass, void *data) +{ + DeviceClass *dc =3D DEVICE_CLASS(klass); + + dc->realize =3D sparc32_dma_realize; +} + +static const TypeInfo sparc32_dma_info =3D { + .name =3D TYPE_SPARC32_DMA, + .parent =3D TYPE_SYS_BUS_DEVICE, + .instance_size =3D sizeof(SPARC32DMAState), + .instance_init =3D sparc32_dma_init, + .class_init =3D sparc32_dma_class_init, +}; + + static void sparc32_dma_register_types(void) { type_register_static(&sparc32_dma_device_info); type_register_static(&sparc32_espdma_device_info); type_register_static(&sparc32_ledma_device_info); + type_register_static(&sparc32_dma_info); } =20 type_init(sparc32_dma_register_types) diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index ae486a4..5017ae5 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -307,18 +307,36 @@ static void *iommu_init(hwaddr addr, uint32_t version= , qemu_irq irq) return s; } =20 -static void *sparc32_dma_init(hwaddr daddr, void *iommu, int is_ledma) +static void *sparc32_dma_init(hwaddr dma_base, + hwaddr esp_base, qemu_irq espdma_irq, + hwaddr le_base, qemu_irq ledma_irq) { - DeviceState *dev; - SysBusDevice *s; + DeviceState *dma; + ESPDMADeviceState *espdma; + LEDMADeviceState *ledma; + SysBusESPState *esp; + SysBusPCNetState *lance; =20 - dev =3D qdev_create(NULL, is_ledma ? "sparc32-ledma" : "sparc32-espdma= "); - object_property_set_link(OBJECT(dev), OBJECT(iommu), "iommu", &error_a= bort); - qdev_init_nofail(dev); - s =3D SYS_BUS_DEVICE(dev); - sysbus_mmio_map(s, 0, daddr); + dma =3D qdev_create(NULL, TYPE_SPARC32_DMA); + qdev_init_nofail(dma); + sysbus_mmio_map(SYS_BUS_DEVICE(dma), 0, dma_base); =20 - return s; + espdma =3D SPARC32_ESPDMA_DEVICE(object_resolve_path_component( + OBJECT(dma), "espdma")); + sysbus_connect_irq(SYS_BUS_DEVICE(espdma), 0, espdma_irq); + + esp =3D ESP_STATE(object_resolve_path_component(OBJECT(espdma), "esp")= ); + sysbus_mmio_map(SYS_BUS_DEVICE(esp), 0, esp_base); + + ledma =3D SPARC32_LEDMA_DEVICE(object_resolve_path_component( + OBJECT(dma), "ledma")); + sysbus_connect_irq(SYS_BUS_DEVICE(ledma), 0, ledma_irq); + + lance =3D SYSBUS_PCNET(object_resolve_path_component( + OBJECT(ledma), "lance")); + sysbus_mmio_map(SYS_BUS_DEVICE(lance), 0, le_base); + + return dma; } =20 static DeviceState *slavio_intctl_init(hwaddr addr, @@ -798,9 +816,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwd= ef, DeviceState *slavio_intctl; const char *cpu_model =3D machine->cpu_model; unsigned int i; - void *iommu, *nvram; - DeviceState *espdma, *esp, *ledma, *lance; - SysBusDevice *sbd; + void *nvram; qemu_irq *cpu_irqs[MAX_CPUS], slavio_irq[32], slavio_cpu_irq[MAX_CPUS]; qemu_irq fdc_tc; unsigned long kernel_size; @@ -848,8 +864,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwd= ef, afx_init(hwdef->afx_base); } =20 - iommu =3D iommu_init(hwdef->iommu_base, hwdef->iommu_version, - slavio_irq[30]); + iommu_init(hwdef->iommu_base, hwdef->iommu_version, slavio_irq[30]); =20 if (hwdef->iommu_pad_base) { /* On the real hardware (SS-5, LX) the MMU is not padded, but alia= sed. @@ -859,26 +874,9 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hw= def, empty_slot_init(hwdef->iommu_pad_base,hwdef->iommu_pad_len); } =20 - espdma =3D sparc32_dma_init(hwdef->dma_base, iommu, 0); - sbd =3D SYS_BUS_DEVICE(espdma); - sysbus_connect_irq(sbd, 0, slavio_irq[18]); - - esp =3D DEVICE(object_resolve_path_component(OBJECT(espdma), "esp")); - sbd =3D SYS_BUS_DEVICE(esp); - sysbus_mmio_map(sbd, 0, hwdef->esp_base); - sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(espdma, 0)); - qdev_connect_gpio_out(espdma, 0, qdev_get_gpio_in(esp, 0)); - qdev_connect_gpio_out(espdma, 1, qdev_get_gpio_in(esp, 1)); - - ledma =3D sparc32_dma_init(hwdef->dma_base + 16ULL, iommu, 1); - sbd =3D SYS_BUS_DEVICE(ledma); - sysbus_connect_irq(sbd, 0, slavio_irq[16]); - - lance =3D DEVICE(object_resolve_path_component(OBJECT(ledma), "lance")= ); - sbd =3D SYS_BUS_DEVICE(lance); - sysbus_mmio_map(sbd, 0, hwdef->le_base); - sysbus_connect_irq(sbd, 0, qdev_get_gpio_in(ledma, 0)); - qdev_connect_gpio_out(ledma, 0, qdev_get_gpio_in(lance, 0)); + sparc32_dma_init(hwdef->dma_base, + hwdef->esp_base, slavio_irq[18], + hwdef->le_base, slavio_irq[16]); =20 if (graphic_depth !=3D 8 && graphic_depth !=3D 24) { error_report("Unsupported depth: %d", graphic_depth); diff --git a/include/hw/sparc/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h index 5f39c28..e52cd1d 100644 --- a/include/hw/sparc/sparc32_dma.h +++ b/include/hw/sparc/sparc32_dma.h @@ -44,6 +44,18 @@ typedef struct LEDMADeviceState { SysBusPCNetState *lance; } LEDMADeviceState; =20 +#define TYPE_SPARC32_DMA "sparc32-dma" +#define SPARC32_DMA(obj) OBJECT_CHECK(SPARC32DMAState, (obj), \ + TYPE_SPARC32_DMA) + +typedef struct SPARC32DMAState { + SysBusDevice parent_obj; + + MemoryRegion dmamem; + ESPDMADeviceState *espdma; + LEDMADeviceState *ledma; +} SPARC32DMAState; + /* sparc32_dma.c */ void ledma_memory_read(void *opaque, hwaddr addr, uint8_t *buf, int len, int do_bswap); --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508005324720833.1637497293722; Sat, 14 Oct 2017 11:22:04 -0700 (PDT) Received: from localhost ([::1]:54837 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3R4W-0001Bq-2u for importer@patchew.org; Sat, 14 Oct 2017 14:22:04 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53231) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QxN-0005D8-8F for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QxK-0004n4-4a for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:41 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36849 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QxJ-0004mh-UV for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:38 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsU-0002Gl-Gb; Sat, 14 Oct 2017 19:09:39 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:09:04 +0100 Message-Id: <1508004545-28578-13-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 12/13] sparc32_dma: remove is_ledma hack and replace with memory region alias X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This hack originated from before the memory region API was introduced, and increased the size of the ledma DMA device to capture incorrect accesses beyond the end of the ledma device. A full analysis can be found on Artyom's blog at http://tyom.blogspot.co.uk/2010/10/bug-in-all-solaris-versions-afte= r-57.html. With the memory API we can now simply alias the incorrect access onto its intended destination allowing us to remove the hack. Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 20 ++++++-------------- include/hw/sparc/sparc32_dma.h | 2 +- 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index ba62927..bb7d70a 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -159,12 +159,6 @@ static uint64_t dma_mem_read(void *opaque, hwaddr addr, DMADeviceState *s =3D opaque; uint32_t saddr; =20 - if (s->is_ledma && (addr > DMA_MAX_REG_OFFSET)) { - /* aliased to espdma, but we can't get there from here */ - /* buggy driver if using undocumented behavior, just return 0 */ - trace_sparc32_dma_mem_readl(addr, 0); - return 0; - } saddr =3D (addr & DMA_MASK) >> 2; trace_sparc32_dma_mem_readl(addr, s->dmaregs[saddr]); return s->dmaregs[saddr]; @@ -176,11 +170,6 @@ static void dma_mem_write(void *opaque, hwaddr addr, DMADeviceState *s =3D opaque; uint32_t saddr; =20 - if (s->is_ledma && (addr > DMA_MAX_REG_OFFSET)) { - /* aliased to espdma, but we can't get there from here */ - trace_sparc32_dma_mem_writel(addr, 0, val); - return; - } saddr =3D (addr & DMA_MASK) >> 2; trace_sparc32_dma_mem_writel(addr, s->dmaregs[saddr], val); switch (saddr) { @@ -295,7 +284,6 @@ static void sparc32_espdma_device_init(Object *obj) =20 memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s, "espdma-mmio", DMA_SIZE); - s->is_ledma =3D 0; } =20 static void sparc32_espdma_device_realize(DeviceState *dev, Error **errp) @@ -336,8 +324,7 @@ static void sparc32_ledma_device_init(Object *obj) DMADeviceState *s =3D SPARC32_DMA_DEVICE(obj); =20 memory_region_init_io(&s->iomem, OBJECT(s), &dma_mem_ops, s, - "ledma-mmio", DMA_ETH_SIZE); - s->is_ledma =3D 1; + "ledma-mmio", DMA_SIZE); } =20 static void sparc32_ledma_device_realize(DeviceState *dev, Error **errp) @@ -410,6 +397,11 @@ static void sparc32_dma_realize(DeviceState *dev, Erro= r **errp) sbd =3D SYS_BUS_DEVICE(ledma); memory_region_add_subregion(&s->dmamem, 0x10, sysbus_mmio_get_region(sbd, 0)); + + /* Add ledma alias to handle SunOS 5.7 - Solaris 9 invalid access bug = */ + memory_region_init_alias(&s->ledma_alias, OBJECT(dev), "ledma-alias", + sysbus_mmio_get_region(sbd, 0), 0x4, 0x4); + memory_region_add_subregion(&s->dmamem, 0x20, &s->ledma_alias); } =20 static void sparc32_dma_init(Object *obj) diff --git a/include/hw/sparc/sparc32_dma.h b/include/hw/sparc/sparc32_dma.h index e52cd1d..f78180f 100644 --- a/include/hw/sparc/sparc32_dma.h +++ b/include/hw/sparc/sparc32_dma.h @@ -21,7 +21,6 @@ struct DMADeviceState { qemu_irq irq; void *iommu; qemu_irq gpio[2]; - uint32_t is_ledma; }; =20 #define TYPE_SPARC32_ESPDMA_DEVICE "sparc32-espdma" @@ -52,6 +51,7 @@ typedef struct SPARC32DMAState { SysBusDevice parent_obj; =20 MemoryRegion dmamem; + MemoryRegion ledma_alias; ESPDMADeviceState *espdma; LEDMADeviceState *ledma; } SPARC32DMAState; --=20 1.7.10.4 From nobody Sat Apr 27 09:14:15 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1508004978209808.3556299964083; Sat, 14 Oct 2017 11:16:18 -0700 (PDT) Received: from localhost ([::1]:54815 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3Qys-00068o-Uz for importer@patchew.org; Sat, 14 Oct 2017 14:16:14 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53256) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1e3QxP-0005EW-P8 for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1e3QxO-0004og-SL for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:43 -0400 Received: from chuckie.co.uk ([82.165.15.123]:36853 helo=s16892447.onlinehome-server.info) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1e3QxO-0004oN-Le for qemu-devel@nongnu.org; Sat, 14 Oct 2017 14:14:42 -0400 Received: from host86-191-119-84.range86-191.btcentralplus.com ([86.191.119.84] helo=kentang.home) by s16892447.onlinehome-server.info with esmtpsa (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.76) (envelope-from ) id 1e3QsW-0002Gl-02; Sat, 14 Oct 2017 19:09:41 +0100 From: Mark Cave-Ayland To: qemu-devel@nongnu.org, atar4qemu@gmail.com Date: Sat, 14 Oct 2017 19:09:05 +0100 Message-Id: <1508004545-28578-14-git-send-email-mark.cave-ayland@ilande.co.uk> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> References: <1508004545-28578-1-git-send-email-mark.cave-ayland@ilande.co.uk> X-SA-Exim-Connect-IP: 86.191.119.84 X-SA-Exim-Mail-From: mark.cave-ayland@ilande.co.uk X-SA-Exim-Version: 4.2.1 (built Sun, 08 Jan 2012 02:45:44 +0000) X-SA-Exim-Scanned: Yes (on s16892447.onlinehome-server.info) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x [fuzzy] X-Received-From: 82.165.15.123 Subject: [Qemu-devel] [PATCHv2 13/13] sparc32_dma: add len to esp/le DMA memory tracing X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This is surprisingly useful when trying to debug DMA issues. Signed-off-by: Mark Cave-Ayland --- hw/dma/sparc32_dma.c | 8 ++++---- hw/dma/trace-events | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/hw/dma/sparc32_dma.c b/hw/dma/sparc32_dma.c index bb7d70a..fbb072a 100644 --- a/hw/dma/sparc32_dma.c +++ b/hw/dma/sparc32_dma.c @@ -73,7 +73,7 @@ void ledma_memory_read(void *opaque, hwaddr addr, int i; =20 addr |=3D s->dmaregs[3]; - trace_ledma_memory_read(addr); + trace_ledma_memory_read(addr, len); if (do_bswap) { sparc_iommu_memory_read(s->iommu, addr, buf, len); } else { @@ -94,7 +94,7 @@ void ledma_memory_write(void *opaque, hwaddr addr, uint16_t tmp_buf[32]; =20 addr |=3D s->dmaregs[3]; - trace_ledma_memory_write(addr); + trace_ledma_memory_write(addr, len); if (do_bswap) { sparc_iommu_memory_write(s->iommu, addr, buf, len); } else { @@ -139,7 +139,7 @@ void espdma_memory_read(void *opaque, uint8_t *buf, int= len) { DMADeviceState *s =3D opaque; =20 - trace_espdma_memory_read(s->dmaregs[1]); + trace_espdma_memory_read(s->dmaregs[1], len); sparc_iommu_memory_read(s->iommu, s->dmaregs[1], buf, len); s->dmaregs[1] +=3D len; } @@ -148,7 +148,7 @@ void espdma_memory_write(void *opaque, uint8_t *buf, in= t len) { DMADeviceState *s =3D opaque; =20 - trace_espdma_memory_write(s->dmaregs[1]); + trace_espdma_memory_write(s->dmaregs[1], len); sparc_iommu_memory_write(s->iommu, s->dmaregs[1], buf, len); s->dmaregs[1] +=3D len; } diff --git a/hw/dma/trace-events b/hw/dma/trace-events index 428469a..6b367f0 100644 --- a/hw/dma/trace-events +++ b/hw/dma/trace-events @@ -7,12 +7,12 @@ rc4030_read(uint64_t addr, uint32_t ret) "read reg[0x%"PR= Ix64"] =3D 0x%x" rc4030_write(uint64_t addr, uint32_t val) "write reg[0x%"PRIx64"] =3D 0x%x" =20 # hw/dma/sparc32_dma.c -ledma_memory_read(uint64_t addr) "DMA read addr 0x%"PRIx64 -ledma_memory_write(uint64_t addr) "DMA write addr 0x%"PRIx64 +ledma_memory_read(uint64_t addr, int len) "DMA read addr 0x%"PRIx64 " len = %d" +ledma_memory_write(uint64_t addr, int len) "DMA write addr 0x%"PRIx64 " le= n %d" sparc32_dma_set_irq_raise(void) "Raise IRQ" sparc32_dma_set_irq_lower(void) "Lower IRQ" -espdma_memory_read(uint32_t addr) "DMA read addr 0x%08x" -espdma_memory_write(uint32_t addr) "DMA write addr 0x%08x" +espdma_memory_read(uint32_t addr, int len) "DMA read addr 0x%08x len %d" +espdma_memory_write(uint32_t addr, int len) "DMA write addr 0x%08x len %d" sparc32_dma_mem_readl(uint64_t addr, uint32_t ret) "read dmareg 0x%"PRIx64= ": 0x%08x" sparc32_dma_mem_writel(uint64_t addr, uint32_t old, uint32_t val) "write d= mareg 0x%"PRIx64": 0x%08x -> 0x%08x" sparc32_dma_enable_raise(void) "Raise DMA enable" --=20 1.7.10.4