Message ID | 20201001172519.1620782-1-philmd@redhat.com |
---|---|
Headers | show |
Series | hw: Let DMA/PCI API take MemTxAttrs argument and propagate MemTxResult | expand |
ping? On 10/1/20 7:25 PM, Philippe Mathieu-Daudé wrote: > This is a respin of: > > "dma: Let the DMA API take MemTxAttrs argument and propagate MemTxResult" > https://lists.gnu.org/archive/html/qemu-devel/2020-09/msg02048.html > > and: > "pci: Let PCI DMA API functions propagate a MemTxResult" > https://lists.gnu.org/archive/html/qemu-devel/2020-09/msg02048.html > > (resent using correct git-profile). > > The DMA API propagates MemTxResult: > - MEMTX_OK, > - MEMTX_device_ERROR, > - MEMTX_DECODE_ERROR. > > Let the PCI DMA API propagate them, as they are > clearer than an undocumented 'int'. > > Klaus Jensen (1): > pci: pass along the return value of dma_memory_rw > > Philippe Mathieu-Daudé (15): > docs/devel/loads-stores: Add regexp for DMA functions > dma: Document address_space_map/address_space_unmap() prototypes > dma: Let dma_memory_set() propagate MemTxResult > dma: Let dma_memory_rw() propagate MemTxResult > dma: Let dma_memory_read() propagate MemTxResult > dma: Let dma_memory_write() propagate MemTxResult > dma: Let dma_memory_valid() take MemTxAttrs argument > dma: Let dma_memory_set() take MemTxAttrs argument > dma: Let dma_memory_rw_relaxed() take MemTxAttrs argument > dma: Let dma_memory_rw() take MemTxAttrs argument > dma: Let dma_memory_read/write() take MemTxAttrs argument > dma: Let dma_memory_map() take MemTxAttrs argument > pci: Let pci_dma_rw() propagate MemTxResult > pci: Let pci_dma_read() propagate MemTxResult > pci: Let pci_dma_write() propagate MemTxResult > > docs/devel/loads-stores.rst | 2 + > include/hw/pci/pci.h | 57 +++++++++++-- > include/hw/ppc/spapr_vio.h | 11 ++- > include/sysemu/dma.h | 155 +++++++++++++++++++++++++++------- > dma-helpers.c | 16 ++-- > hw/arm/musicpal.c | 13 +-- > hw/arm/smmu-common.c | 3 +- > hw/arm/smmuv3.c | 14 +-- > hw/core/generic-loader.c | 3 +- > hw/display/virtio-gpu.c | 8 +- > hw/dma/pl330.c | 12 ++- > hw/dma/sparc32_dma.c | 16 ++-- > hw/dma/xlnx-zynq-devcfg.c | 6 +- > hw/dma/xlnx_dpdma.c | 10 ++- > hw/hyperv/vmbus.c | 8 +- > hw/i386/amd_iommu.c | 16 ++-- > hw/i386/intel_iommu.c | 28 +++--- > hw/ide/ahci.c | 9 +- > hw/ide/macio.c | 2 +- > hw/intc/spapr_xive.c | 3 +- > hw/intc/xive.c | 7 +- > hw/misc/bcm2835_property.c | 3 +- > hw/misc/macio/mac_dbdma.c | 10 ++- > hw/net/allwinner-sun8i-emac.c | 21 +++-- > hw/net/ftgmac100.c | 25 ++++-- > hw/net/imx_fec.c | 32 ++++--- > hw/nvram/fw_cfg.c | 12 ++- > hw/pci-host/pnv_phb3.c | 5 +- > hw/pci-host/pnv_phb3_msi.c | 9 +- > hw/pci-host/pnv_phb4.c | 7 +- > hw/sd/allwinner-sdhost.c | 14 +-- > hw/sd/sdhci.c | 35 +++++--- > hw/usb/hcd-dwc2.c | 8 +- > hw/usb/hcd-ehci.c | 6 +- > hw/usb/hcd-ohci.c | 28 +++--- > hw/usb/hcd-xhci.c | 18 ++-- > hw/usb/libhw.c | 3 +- > hw/virtio/virtio.c | 6 +- > 38 files changed, 439 insertions(+), 202 deletions(-) >
Hi Paolo, On 10/22/20 4:44 PM, Philippe Mathieu-Daudé wrote: > ping? In case the rationale is not clear, the motivation for this series is to make the API more robust to enforce correct use by the consumers. Currently the MemTxResult return value is not propagated, so lost. If adding the MemTxAttrs argument could introduce security issues and you need more time to consider this change, I can repost only the MemTxResult propagation patches, and we'll discuss the MemTxAttrs after the 5.2 release. Laszlo Ersek pointed me to commit f794aa4a2fd ("target-i386: introduce cpu_get_mem_attrs") to understand how MemTxAttrs is used by SMM on X86. From the review comment from Edgar in v1, I understand there should not be security issues with the current codebase. https://www.mail-archive.com/qemu-block@nongnu.org/msg74077.html Regards, Phil. > > On 10/1/20 7:25 PM, Philippe Mathieu-Daudé wrote: >> This is a respin of: >> >> "dma: Let the DMA API take MemTxAttrs argument and propagate MemTxResult" >> https://lists.gnu.org/archive/html/qemu-devel/2020-09/msg02048.html >> >> and: >> "pci: Let PCI DMA API functions propagate a MemTxResult" >> https://lists.gnu.org/archive/html/qemu-devel/2020-09/msg02048.html >> >> (resent using correct git-profile). >> >> The DMA API propagates MemTxResult: >> - MEMTX_OK, >> - MEMTX_device_ERROR, >> - MEMTX_DECODE_ERROR. >> >> Let the PCI DMA API propagate them, as they are >> clearer than an undocumented 'int'. >> >> Klaus Jensen (1): >> pci: pass along the return value of dma_memory_rw >> >> Philippe Mathieu-Daudé (15): >> docs/devel/loads-stores: Add regexp for DMA functions >> dma: Document address_space_map/address_space_unmap() prototypes >> dma: Let dma_memory_set() propagate MemTxResult >> dma: Let dma_memory_rw() propagate MemTxResult >> dma: Let dma_memory_read() propagate MemTxResult >> dma: Let dma_memory_write() propagate MemTxResult >> dma: Let dma_memory_valid() take MemTxAttrs argument >> dma: Let dma_memory_set() take MemTxAttrs argument >> dma: Let dma_memory_rw_relaxed() take MemTxAttrs argument >> dma: Let dma_memory_rw() take MemTxAttrs argument >> dma: Let dma_memory_read/write() take MemTxAttrs argument >> dma: Let dma_memory_map() take MemTxAttrs argument >> pci: Let pci_dma_rw() propagate MemTxResult >> pci: Let pci_dma_read() propagate MemTxResult >> pci: Let pci_dma_write() propagate MemTxResult