On Tue, May 22, 2018 at 12:05:14AM +0200, Marek Vasut wrote: > From: Phil Edworthy <phil.edworthy@xxxxxxxxxxx> > > The PCIe DMA controller on RCar Gen2 and earlier is on 32bit bus, > so limit the DMA range to 32bit. > > Signed-off-by: Phil Edworthy <phil.edworthy@xxxxxxxxxxx> > Signed-off-by: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> > Cc: Arnd Bergmann <arnd@xxxxxxxx> > Cc: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > Cc: Phil Edworthy <phil.edworthy@xxxxxxxxxxx> > Cc: Simon Horman <horms+renesas@xxxxxxxxxxxx> > Cc: Wolfram Sang <wsa@xxxxxxxxxxxxx> > Cc: linux-renesas-soc@xxxxxxxxxxxxxxx > To: linux-pci@xxxxxxxxxxxxxxx > --- > NOTE: I'm aware of https://patchwork.kernel.org/patch/9495895/ , but the > discussion seems to have gone way off, so I'm sending this as a > RFC. Any feedback on how to do this limiting properly would be nice. > --- > drivers/pci/host/pcie-rcar.c | 28 ++++++++++++++++++++++++++++ > 1 file changed, 28 insertions(+) The issue solved by this patch was solved in a more generic way through this series: https://lists.linuxfoundation.org/pipermail/iommu/2018-July/028792.html I will therefore drop this patch from the PCI patch queue. Thanks, Lorenzo > diff --git a/drivers/pci/host/pcie-rcar.c b/drivers/pci/host/pcie-rcar.c > index c3eab0b95290..db2b16f40bc1 100644 > --- a/drivers/pci/host/pcie-rcar.c > +++ b/drivers/pci/host/pcie-rcar.c > @@ -1325,3 +1325,31 @@ static struct platform_driver rcar_pcie_driver = { > .probe = rcar_pcie_probe, > }; > builtin_platform_driver(rcar_pcie_driver); > + > +static int rcar_pcie_pci_notifier(struct notifier_block *nb, > + unsigned long action, void *data) > +{ > + struct device *dev = data; > + > + switch (action) { > + case BUS_NOTIFY_BOUND_DRIVER: > + /* Force the DMA mask to lower 32-bits */ > + dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32)); > + break; > + default: > + return NOTIFY_DONE; > + } > + > + return NOTIFY_OK; > +} > + > +static struct notifier_block device_nb = { > + .notifier_call = rcar_pcie_pci_notifier, > +}; > + > +static int __init register_rcar_pcie_pci_notifier(void) > +{ > + return bus_register_notifier(&pci_bus_type, &device_nb); > +} > + > +arch_initcall(register_rcar_pcie_pci_notifier); > -- > 2.16.2 >