Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2bd5ec05 authored by Lorenzo Pieralisi's avatar Lorenzo Pieralisi Committed by Alex Shi
Browse files

PCI: generic: Allocate config space windows after limiting bus number range



The number of config space windows allocated for the host bridge depends on
how many bus numbers are below the bridge.  Instead of first allocating the
windows and then limiting the bus resource, this patch reshuffles the code
so that if any limitation is applied to the bus resource, it is taken into
account in the windows allocation.

[bhelgaas: changelog]
Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Acked-by: default avatarWill Deacon <will.deacon@arm.com>
(cherry picked from commit a5525b240368cf496e669703a5fe169febbc72ef)
parent d97d2ecc
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -276,17 +276,17 @@ static int gen_pci_parse_map_cfg_windows(struct gen_pci *pci)
		return err;
	}

	pci->cfg.win = devm_kcalloc(dev, resource_size(&pci->cfg.bus_range),
				    sizeof(*pci->cfg.win), GFP_KERNEL);
	if (!pci->cfg.win)
		return -ENOMEM;

	/* Limit the bus-range to fit within reg */
	bus_max = pci->cfg.bus_range.start +
		  (resource_size(&pci->cfg.res) >> pci->cfg.ops->bus_shift) - 1;
	pci->cfg.bus_range.end = min_t(resource_size_t, pci->cfg.bus_range.end,
				       bus_max);

	pci->cfg.win = devm_kcalloc(dev, resource_size(&pci->cfg.bus_range),
				    sizeof(*pci->cfg.win), GFP_KERNEL);
	if (!pci->cfg.win)
		return -ENOMEM;

	/* Map our Configuration Space windows */
	if (!devm_request_mem_region(dev, pci->cfg.res.start,
				     resource_size(&pci->cfg.res),