Re: [RFC PATCH] USB: PCI: set 32bit DMA mask for PCI based USB controllers

From: Christoph Hellwig
Date: Wed Jan 30 2019 - 02:41:06 EST


On Wed, Jan 30, 2019 at 03:01:54PM +0800, Hanjun Guo wrote:
> This is the RFC version, I'm not sure this is the best solution,
> comments are warmly welcomed.
>
> Thanks
> Hanjun
>
> drivers/usb/core/hcd-pci.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/usb/core/hcd-pci.c b/drivers/usb/core/hcd-pci.c
> index 0343246..a9c33e6 100644
> --- a/drivers/usb/core/hcd-pci.c
> +++ b/drivers/usb/core/hcd-pci.c
> @@ -188,6 +188,10 @@ int usb_hcd_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
> if (pci_enable_device(dev) < 0)
> return -ENODEV;
>
> + retval = dma_coerce_mask_and_coherent(&dev->dev, DMA_BIT_MASK(32));
> + if (retval)
> + return retval;

dma_coerce_mask_and_coherent is only for platform devices (and I'm
not sure it is a good idea to start with, but that is a different
story).

PCI device should have the dma_mask pointer set already, so you should
use dma_set_mask_and_coherent here.