From: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
To: mst@redhat.com
Cc: seabios@seabios.org, kevin@koconnor.net, joro@8bytes.org,
blauwirbel@gmail.com, paul@codesourcery.com, avi@redhat.com,
anthony@codemonkey.ws, av1474@comtv.ru, yamahata@valinux.co.jp,
kvm@vger.kernel.org, qemu-devel@nongnu.org,
benh@kernel.crashing.org, aik@ozlabs.ru, agraf@suse.de,
aliguori@us.ibm.com, dwg@au1.ibm.com, rth@twiddle.net,
david@gibson.dropbear.id.au,
Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
Subject: [RFC PATCH 02/13] pci: add IOMMU support via the generic DMA layer
Date: Wed, 1 Jun 2011 04:38:24 +0300 [thread overview]
Message-ID: <1306892315-7306-3-git-send-email-eduard.munteanu@linux360.ro> (raw)
In-Reply-To: <1306892315-7306-1-git-send-email-eduard.munteanu@linux360.ro>
IOMMUs can now be hooked onto the PCI bus. This makes use of the generic
DMA layer.
Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
---
hw/pci.c | 7 +++++++
hw/pci.h | 9 +++++++++
hw/pci_internals.h | 1 +
3 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/hw/pci.c b/hw/pci.c
index 0875654..7c8762c 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -745,6 +745,7 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
return NULL;
}
pci_dev->bus = bus;
+ pci_dev->dma.mmu = &bus->mmu;
pci_dev->devfn = devfn;
pstrcpy(pci_dev->name, sizeof(pci_dev->name), name);
pci_dev->irq_state = 0;
@@ -2161,3 +2162,9 @@ int pci_qdev_find_device(const char *id, PCIDevice **pdev)
return rc;
}
+
+void pci_register_iommu(PCIDevice *dev, DMATranslateFunc *translate)
+{
+ dev->bus->mmu.iommu = &dev->qdev;
+ dev->bus->mmu.translate = translate;
+}
diff --git a/hw/pci.h b/hw/pci.h
index c6a6eb6..f3b51ec 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -5,6 +5,7 @@
#include "qobject.h"
#include "qdev.h"
+#include "dma_rw.h"
/* PCI includes legacy ISA access. */
#include "isa.h"
@@ -129,6 +130,10 @@ enum {
struct PCIDevice {
DeviceState qdev;
+
+ /* For devices which do DMA. */
+ DMADevice dma;
+
/* PCI config space */
uint8_t *config;
@@ -271,6 +276,8 @@ void pci_bridge_update_mappings(PCIBus *b);
void pci_device_deassert_intx(PCIDevice *dev);
+void pci_register_iommu(PCIDevice *dev, DMATranslateFunc *translate);
+
static inline void
pci_set_byte(uint8_t *config, uint8_t val)
{
@@ -475,4 +482,6 @@ static inline uint32_t pci_config_size(const PCIDevice *d)
return pci_is_express(d) ? PCIE_CONFIG_SPACE_SIZE : PCI_CONFIG_SPACE_SIZE;
}
+DEFINE_DMA_OPS(pci, PCIDevice, dma)
+
#endif
diff --git a/hw/pci_internals.h b/hw/pci_internals.h
index fbe1866..6452e8c 100644
--- a/hw/pci_internals.h
+++ b/hw/pci_internals.h
@@ -16,6 +16,7 @@ extern struct BusInfo pci_bus_info;
struct PCIBus {
BusState qbus;
+ DMAMmu mmu;
uint8_t devfn_min;
pci_set_irq_fn set_irq;
pci_map_irq_fn map_irq;
--
1.7.3.4
WARNING: multiple messages have this Message-ID (diff)
From: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
To: mst@redhat.com
Cc: aliguori@us.ibm.com, david@gibson.dropbear.id.au,
kvm@vger.kernel.org, rth@twiddle.net, aik@ozlabs.ru,
joro@8bytes.org, seabios@seabios.org, qemu-devel@nongnu.org,
agraf@suse.de, blauwirbel@gmail.com, yamahata@valinux.co.jp,
kevin@koconnor.net, avi@redhat.com,
Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>,
dwg@au1.ibm.com, paul@codesourcery.com
Subject: [Qemu-devel] [RFC PATCH 02/13] pci: add IOMMU support via the generic DMA layer
Date: Wed, 1 Jun 2011 04:38:24 +0300 [thread overview]
Message-ID: <1306892315-7306-3-git-send-email-eduard.munteanu@linux360.ro> (raw)
In-Reply-To: <1306892315-7306-1-git-send-email-eduard.munteanu@linux360.ro>
IOMMUs can now be hooked onto the PCI bus. This makes use of the generic
DMA layer.
Signed-off-by: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
---
hw/pci.c | 7 +++++++
hw/pci.h | 9 +++++++++
hw/pci_internals.h | 1 +
3 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/hw/pci.c b/hw/pci.c
index 0875654..7c8762c 100644
--- a/hw/pci.c
+++ b/hw/pci.c
@@ -745,6 +745,7 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, PCIBus *bus,
return NULL;
}
pci_dev->bus = bus;
+ pci_dev->dma.mmu = &bus->mmu;
pci_dev->devfn = devfn;
pstrcpy(pci_dev->name, sizeof(pci_dev->name), name);
pci_dev->irq_state = 0;
@@ -2161,3 +2162,9 @@ int pci_qdev_find_device(const char *id, PCIDevice **pdev)
return rc;
}
+
+void pci_register_iommu(PCIDevice *dev, DMATranslateFunc *translate)
+{
+ dev->bus->mmu.iommu = &dev->qdev;
+ dev->bus->mmu.translate = translate;
+}
diff --git a/hw/pci.h b/hw/pci.h
index c6a6eb6..f3b51ec 100644
--- a/hw/pci.h
+++ b/hw/pci.h
@@ -5,6 +5,7 @@
#include "qobject.h"
#include "qdev.h"
+#include "dma_rw.h"
/* PCI includes legacy ISA access. */
#include "isa.h"
@@ -129,6 +130,10 @@ enum {
struct PCIDevice {
DeviceState qdev;
+
+ /* For devices which do DMA. */
+ DMADevice dma;
+
/* PCI config space */
uint8_t *config;
@@ -271,6 +276,8 @@ void pci_bridge_update_mappings(PCIBus *b);
void pci_device_deassert_intx(PCIDevice *dev);
+void pci_register_iommu(PCIDevice *dev, DMATranslateFunc *translate);
+
static inline void
pci_set_byte(uint8_t *config, uint8_t val)
{
@@ -475,4 +482,6 @@ static inline uint32_t pci_config_size(const PCIDevice *d)
return pci_is_express(d) ? PCIE_CONFIG_SPACE_SIZE : PCI_CONFIG_SPACE_SIZE;
}
+DEFINE_DMA_OPS(pci, PCIDevice, dma)
+
#endif
diff --git a/hw/pci_internals.h b/hw/pci_internals.h
index fbe1866..6452e8c 100644
--- a/hw/pci_internals.h
+++ b/hw/pci_internals.h
@@ -16,6 +16,7 @@ extern struct BusInfo pci_bus_info;
struct PCIBus {
BusState qbus;
+ DMAMmu mmu;
uint8_t devfn_min;
pci_set_irq_fn set_irq;
pci_map_irq_fn map_irq;
--
1.7.3.4
next prev parent reply other threads:[~2011-06-01 1:38 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-06-01 1:38 [RFC PATCH 00/13] AMD IOMMU emulation patches, another try Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 01/13] Generic DMA memory access interface Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 14:01 ` Richard Henderson
2011-06-01 14:01 ` Richard Henderson
2011-06-01 14:29 ` Avi Kivity
2011-06-01 14:29 ` Avi Kivity
2011-06-01 15:16 ` Richard Henderson
2011-06-01 15:16 ` Richard Henderson
2011-06-02 10:22 ` David Gibson
2011-06-02 10:22 ` David Gibson
2011-06-01 14:52 ` Eduard - Gabriel Munteanu
2011-06-01 14:52 ` Eduard - Gabriel Munteanu
2011-06-01 15:09 ` Richard Henderson
2011-06-01 15:09 ` Richard Henderson
2011-06-01 15:35 ` Eduard - Gabriel Munteanu
2011-06-01 15:35 ` Eduard - Gabriel Munteanu
2011-06-01 15:45 ` Richard Henderson
2011-06-01 15:45 ` Richard Henderson
2011-06-02 9:38 ` David Gibson
2011-06-02 9:38 ` David Gibson
2011-06-01 1:38 ` Eduard - Gabriel Munteanu [this message]
2011-06-01 1:38 ` [Qemu-devel] [RFC PATCH 02/13] pci: add IOMMU support via the generic DMA layer Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 03/13] AMD IOMMU emulation Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 04/13] ide: use the DMA memory access interface for PCI IDE controllers Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 05/13] rtl8139: use the DMA memory access interface Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 06/13] eepro100: " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 07/13] ac97: " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 08/13] es1370: " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 09/13] e1000: " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 10/13] lsi53c895a: " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 11/13] pcnet: " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 12/13] usb-uhci: " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [RFC PATCH 13/13] usb-ohci: " Eduard - Gabriel Munteanu
2011-06-01 1:38 ` [Qemu-devel] " Eduard - Gabriel Munteanu
2011-06-01 18:49 ` [Qemu-devel] [RFC PATCH 00/13] AMD IOMMU emulation patches, another try Richard Henderson
2011-06-01 18:49 ` Richard Henderson
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=1306892315-7306-3-git-send-email-eduard.munteanu@linux360.ro \
--to=eduard.munteanu@linux360.ro \
--cc=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=aliguori@us.ibm.com \
--cc=anthony@codemonkey.ws \
--cc=av1474@comtv.ru \
--cc=avi@redhat.com \
--cc=benh@kernel.crashing.org \
--cc=blauwirbel@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=dwg@au1.ibm.com \
--cc=joro@8bytes.org \
--cc=kevin@koconnor.net \
--cc=kvm@vger.kernel.org \
--cc=mst@redhat.com \
--cc=paul@codesourcery.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=seabios@seabios.org \
--cc=yamahata@valinux.co.jp \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.