From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34795) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VGz5J-0007cD-4r for qemu-devel@nongnu.org; Tue, 03 Sep 2013 18:28:34 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VGz5D-0005dP-GD for qemu-devel@nongnu.org; Tue, 03 Sep 2013 18:28:29 -0400 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Wed, 4 Sep 2013 00:29:07 +0200 Message-Id: <1378247351-8446-8-git-send-email-hpoussin@reactos.org> In-Reply-To: <1378247351-8446-1-git-send-email-hpoussin@reactos.org> References: <1378247351-8446-1-git-send-email-hpoussin@reactos.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v2 07/10] raven: add PCI bus mastering address space List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Herv=C3=A9=20Poussineau?= , =?UTF-8?q?=20Andreas=20F=C3=A4rber?= , qemu-ppc@nongnu.org This has been tested on Linux 2.4/PPC with the lsi53c895a SCSI adapter. Signed-off-by: Herv=C3=A9 Poussineau --- hw/pci-host/prep.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/hw/pci-host/prep.c b/hw/pci-host/prep.c index bba76af..3baf66f 100644 --- a/hw/pci-host/prep.c +++ b/hw/pci-host/prep.c @@ -56,6 +56,10 @@ typedef struct PRePPCIState { MemoryRegion pci_io; MemoryRegion pci_memory; MemoryRegion pci_intack; + MemoryRegion bm; + MemoryRegion bm_ram_alias; + MemoryRegion bm_pci_memory_alias; + AddressSpace bm_as; RavenPCIState pci_dev; } PREPPCIState; =20 @@ -120,6 +124,13 @@ static void prep_set_irq(void *opaque, int irq_num, = int level) qemu_set_irq(pic[irq_num] , level); } =20 +static AddressSpace *raven_pcihost_set_iommu(PCIBus *bus, void *opaque, + int devfn) +{ + PREPPCIState *s =3D opaque; + return &s->bm_as; +} + static void raven_pcihost_realizefn(DeviceState *d, Error **errp) { SysBusDevice *dev =3D SYS_BUS_DEVICE(d); @@ -171,6 +182,18 @@ static void raven_pcihost_initfn(Object *obj) pci_bus_new_inplace(&s->pci_bus, DEVICE(obj), NULL, &s->pci_memory, &s->pci_io, 0, TYPE_PCI_BUS); =20 + /* Bus master address space */ + memory_region_init(&s->bm, obj, "bm-raven", UINT32_MAX); + memory_region_init_alias(&s->bm_pci_memory_alias, obj, "bm-pci-memor= y", + &s->pci_memory, 0, + memory_region_size(&s->pci_memory)); + memory_region_init_alias(&s->bm_ram_alias, obj, "bm-system", + get_system_memory(), 0, 0x80000000); + memory_region_add_subregion(&s->bm, 0 , &s->bm_pci_memory_al= ias); + memory_region_add_subregion(&s->bm, 0x80000000, &s->bm_ram_alias); + address_space_init(&s->bm_as, &s->bm, "raven-bm"); + pci_setup_iommu(&s->pci_bus, raven_pcihost_set_iommu, s); + h->bus =3D &s->pci_bus; =20 object_initialize(&s->pci_dev, TYPE_RAVEN_PCI_DEVICE); --=20 1.7.10.4