Thread (28 messages) 28 messages, 7 authors, 2017-02-16

[PATCH 1/2] arm64: dma_mapping: allow PCI host driver to limit DMA mask

From: arnd@arndb.de (Arnd Bergmann)
Date: 2017-02-16 16:13:01
Also in: linux-pci, linux-renesas-soc, lkml

On Thursday, December 29, 2016 11:45:03 PM CET Nikita Yushchenko wrote:
 static int __swiotlb_dma_supported(struct device *hwdev, u64 mask)
 {
+#ifdef CONFIG_PCI
+       if (dev_is_pci(hwdev)) {
+               struct pci_dev *pdev = to_pci_dev(hwdev);
+               struct pci_host_bridge *br = pci_find_host_bridge(pdev->bus);
+
+               if (br->dev.dma_mask && (*br->dev.dma_mask) &&
+                               (mask & (*br->dev.dma_mask)) != mask)
+                       return 0;
+       }
+#endif
        if (swiotlb)
                return swiotlb_dma_supported(hwdev, mask);
        return 1;
I think it's wrong to make this a special case for PCI.

Instead, we should follow the dma-ranges properties during dma_set_mask()
to ensure we don't set a mask that any of the parents up to the root
cannot support.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help