qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Artyom Tarasenko <atar4qemu@gmail.com>
To: qemu-devel@nongnu.org, hpoussin@reactos.org
Cc: Artyom Tarasenko <atar4qemu@gmail.com>,
	Paolo Bonzini <pbonzini@redhat.com>, Fam Zheng <fam@euphon.net>
Subject: [Qemu-devel] [PATCH v2 1/3] lsi53c895a: hide 53c895a registers in 53c810
Date: Sat,  4 May 2019 23:02:32 +0200	[thread overview]
Message-ID: <1557003754-26473-2-git-send-email-atar4qemu@gmail.com> (raw)
In-Reply-To: <1557003754-26473-1-git-send-email-atar4qemu@gmail.com>

AIX/PReP does access to the aliased IO registers of 53810.
Implement aliasing to make the AIX driver work.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
 hw/scsi/lsi53c895a.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index da7239d..6b95699 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -2271,6 +2271,9 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     LSIState *s = LSI53C895A(dev);
     DeviceState *d = DEVICE(dev);
     uint8_t *pci_conf;
+    uint64_t mmio_size;
+    MemoryRegion *mr;
+    uint16_t type = PCI_DEVICE_GET_CLASS(dev)->device_id;
 
     pci_conf = dev->config;
 
@@ -2279,13 +2282,21 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     /* Interrupt pin A */
     pci_conf[PCI_INTERRUPT_PIN] = 0x01;
 
-    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
-                          "lsi-mmio", 0x400);
     memory_region_init_io(&s->ram_io, OBJECT(s), &lsi_ram_ops, s,
                           "lsi-ram", 0x2000);
     memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s,
                           "lsi-io", 256);
-
+    if (type == PCI_DEVICE_ID_LSI_53C895A) {
+        mmio_size = 0x400;
+    } else {
+        mr = g_new(MemoryRegion, 1);
+        memory_region_init_alias(mr, OBJECT(d), "lsi-io-alias", &s->io_io,
+                                 0, 0x80);
+        memory_region_add_subregion_overlap(&s->io_io, 0x80, mr, -1);
+        mmio_size = 0x80;
+    }
+    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
+                          "lsi-mmio", mmio_size);
     address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-io");
     qdev_init_gpio_out(d, &s->ext_irq, 1);
 
-- 
2.7.2

WARNING: multiple messages have this Message-ID (diff)
From: Artyom Tarasenko <atar4qemu@gmail.com>
To: qemu-devel@nongnu.org, hpoussin@reactos.org
Cc: Fam Zheng <fam@euphon.net>, Paolo Bonzini <pbonzini@redhat.com>,
	Artyom Tarasenko <atar4qemu@gmail.com>
Subject: [Qemu-devel] [PATCH v2 1/3] lsi53c895a: hide 53c895a registers in 53c810
Date: Sat,  4 May 2019 23:02:32 +0200	[thread overview]
Message-ID: <1557003754-26473-2-git-send-email-atar4qemu@gmail.com> (raw)
Message-ID: <20190504210232.MkYX718dvRMUrCXERU5GnpLhzlgyOt0e9gSNGU4e4rs@z> (raw)
In-Reply-To: <1557003754-26473-1-git-send-email-atar4qemu@gmail.com>

AIX/PReP does access to the aliased IO registers of 53810.
Implement aliasing to make the AIX driver work.

Signed-off-by: Artyom Tarasenko <atar4qemu@gmail.com>
---
 hw/scsi/lsi53c895a.c | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/hw/scsi/lsi53c895a.c b/hw/scsi/lsi53c895a.c
index da7239d..6b95699 100644
--- a/hw/scsi/lsi53c895a.c
+++ b/hw/scsi/lsi53c895a.c
@@ -2271,6 +2271,9 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     LSIState *s = LSI53C895A(dev);
     DeviceState *d = DEVICE(dev);
     uint8_t *pci_conf;
+    uint64_t mmio_size;
+    MemoryRegion *mr;
+    uint16_t type = PCI_DEVICE_GET_CLASS(dev)->device_id;
 
     pci_conf = dev->config;
 
@@ -2279,13 +2282,21 @@ static void lsi_scsi_realize(PCIDevice *dev, Error **errp)
     /* Interrupt pin A */
     pci_conf[PCI_INTERRUPT_PIN] = 0x01;
 
-    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
-                          "lsi-mmio", 0x400);
     memory_region_init_io(&s->ram_io, OBJECT(s), &lsi_ram_ops, s,
                           "lsi-ram", 0x2000);
     memory_region_init_io(&s->io_io, OBJECT(s), &lsi_io_ops, s,
                           "lsi-io", 256);
-
+    if (type == PCI_DEVICE_ID_LSI_53C895A) {
+        mmio_size = 0x400;
+    } else {
+        mr = g_new(MemoryRegion, 1);
+        memory_region_init_alias(mr, OBJECT(d), "lsi-io-alias", &s->io_io,
+                                 0, 0x80);
+        memory_region_add_subregion_overlap(&s->io_io, 0x80, mr, -1);
+        mmio_size = 0x80;
+    }
+    memory_region_init_io(&s->mmio_io, OBJECT(s), &lsi_mmio_ops, s,
+                          "lsi-mmio", mmio_size);
     address_space_init(&s->pci_io_as, pci_address_space_io(dev), "lsi-pci-io");
     qdev_init_gpio_out(d, &s->ext_irq, 1);
 
-- 
2.7.2



  parent reply	other threads:[~2019-05-04 21:03 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-04 21:02 [Qemu-devel] [PATCH v2 0/3] Improve 40p, make AIX 5.1 boot Artyom Tarasenko
2019-05-04 21:02 ` Artyom Tarasenko
2019-05-04 21:02 ` Artyom Tarasenko [this message]
2019-05-04 21:02   ` [Qemu-devel] [PATCH v2 1/3] lsi53c895a: hide 53c895a registers in 53c810 Artyom Tarasenko
2019-05-05 10:41   ` Mark Cave-Ayland
2019-05-05 10:41     ` Mark Cave-Ayland
2019-05-06  8:42     ` Artyom Tarasenko
2019-05-06 14:22       ` Mark Cave-Ayland
2019-05-07 15:03         ` Artyom Tarasenko
2019-05-17 14:12           ` Mark Cave-Ayland
2019-05-20  9:32             ` Paolo Bonzini
2019-05-04 21:02 ` [Qemu-devel] [PATCH 2/3] 40p and prep: implement PCI bus mastering Artyom Tarasenko
2019-05-04 21:02   ` Artyom Tarasenko
2019-05-04 21:02 ` [Qemu-devel] [PATCH v2 3/3] hw/isa/i82378.c: use 1900 as a base year Artyom Tarasenko
2019-05-04 21:02   ` Artyom Tarasenko
2019-05-05 10:46   ` Mark Cave-Ayland
2019-05-05 10:46     ` Mark Cave-Ayland
2019-05-05 15:19     ` Philippe Mathieu-Daudé
2019-05-05 15:19       ` Philippe Mathieu-Daudé
2019-05-06  8:44       ` Artyom Tarasenko

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1557003754-26473-2-git-send-email-atar4qemu@gmail.com \
    --to=atar4qemu@gmail.com \
    --cc=fam@euphon.net \
    --cc=hpoussin@reactos.org \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).