|
From: | Stefan Weil |
Subject: | Re: [Qemu-devel] [PATCH 2/7] pci: memory access API and IOMMU support |
Date: | Thu, 02 Sep 2010 18:05:39 +0200 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.11) Gecko/20100805 Iceowl/1.0b1 Icedove/3.0.6 |
Am 02.09.2010 10:51, schrieb Eduard - Gabriel Munteanu:
On Wed, Sep 01, 2010 at 10:10:30PM +0200, Stefan Weil wrote:Please see my comments at the end of this mail. Am 30.08.2010 00:08, schrieb Eduard - Gabriel Munteanu:PCI devices should access memory through pci_memory_*() instead of cpu_physical_memory_*(). This also provides support for translation and access checking in case an IOMMU is emulated. Memory maps are treated as remote IOTLBs (that is, translation caches belonging to the IOMMU-aware device itself). Clients (devices) must provide callbacks for map invalidation in case these maps are persistent beyond the current I/O context, e.g. AIO DMA transfers. Signed-off-by: Eduard - Gabriel Munteanu<address@hidden> ---[snip]+static inline void pci_memory_read(PCIDevice *dev, + pcibus_t addr, + uint8_t *buf, + pcibus_t len) +{ + pci_memory_rw(dev, addr, buf, len, 0); +} + +static inline void pci_memory_write(PCIDevice *dev, + pcibus_t addr, + const uint8_t *buf, + pcibus_t len) +{ + pci_memory_rw(dev, addr, (uint8_t *) buf, len, 1); +} + #endifThe functions pci_memory_read and pci_memory_write not only read or write byte data but many different data types which leads to a lot of type casts in your other patches. I'd prefer "void *buf" and "const void *buf" in the argument lists. Then all those type casts could be removed. Regards Stefan WeilI only followed an approach similar to how cpu_physical_memory_{read,write}() is defined. I think I should change both cpu_physical_memory_* stuff and pci_memory_* stuff, not only the latter, if I decide to go on that approach. Eduard
Yes, cpu_physical_memory_read, cpu_physical_memory_write and cpu_physical_memory_rw should be changed, too. They also require several type casts today. But this change can be done in an independent patch. Stefan
[Prev in Thread] | Current Thread | [Next in Thread] |