On Fri, Aug 09, 2019 at 07:57:40PM +0200, marek.vasut@xxxxxxxxx wrote: > From: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> > > In case the "dma-ranges" DT property contains either too many ranges > or the range start address is unaligned in such a way that populating > the range into the controller requires multiple entries, a situation > may occur where all ranges cannot be loaded into the controller. > > Currently, the driver refuses to probe in such a situation. Relax this > behavior, load as many ranges as possible and warn if some ranges do > not fit anymore. Patches (1) and (3) are fine but I do not think this one is. Firmware (DT) should provide dma-ranges according to what HW can handle, more so given that other subsystems (eg IOMMU) rely on the dma-ranges value to set-up eg DMA - if there is a mismatch between PCI host inbound regions and software structures describing DMA'able ranges all bets are off. I would not merge this specific patch but let me know what you think. Thanks, Lorenzo > Signed-off-by: Marek Vasut <marek.vasut+renesas@xxxxxxxxx> > Cc: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> > Cc: Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> > Cc: Wolfram Sang <wsa@xxxxxxxxxxxxx> > Cc: linux-renesas-soc@xxxxxxxxxxxxxxx > To: linux-pci@xxxxxxxxxxxxxxx > --- > V2: Update on top of 1/3 > V3: No change > --- > drivers/pci/controller/pcie-rcar.c | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/controller/pcie-rcar.c b/drivers/pci/controller/pcie-rcar.c > index 56a6433eb70b..e2735005ffd3 100644 > --- a/drivers/pci/controller/pcie-rcar.c > +++ b/drivers/pci/controller/pcie-rcar.c > @@ -1049,8 +1049,9 @@ static int rcar_pcie_inbound_ranges(struct rcar_pcie *pcie, > > while (cpu_addr < cpu_end) { > if (idx >= MAX_NR_INBOUND_MAPS - 1) { > - dev_err(pcie->dev, "Failed to map inbound regions!\n"); > - return -EINVAL; > + dev_warn(pcie->dev, > + "Too many inbound regions, not all are mapped.\n"); > + break; > } > /* > * Set up 64-bit inbound regions as the range parser doesn't > -- > 2.20.1 >