[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <2103911.qf9H68dkRp@wuerfel>
Date: Thu, 29 Dec 2016 22:18:41 +0100
From: Arnd Bergmann <arnd@...db.de>
To: Nikita Yushchenko <nikita.yoush@...entembedded.com>
Cc: Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will.deacon@....com>,
linux-arm-kernel@...ts.infradead.org,
Simon Horman <horms@...ge.net.au>,
Bjorn Helgaas <bhelgaas@...gle.com>, linux-pci@...r.kernel.org,
linux-renesas-soc@...r.kernel.org,
artemi.ivanov@...entembedded.com, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 1/2] arm64: dma_mapping: allow PCI host driver to limit DMA mask
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
Powered by blists - more mailing lists