Skip to content

Commit

Permalink
PCI: of_property: Assign PCI instead of CPU bus address to dynamic PC…
Browse files Browse the repository at this point in the history
…I nodes

commit 5e316d3 upstream.

When populating "ranges" property for a PCI bridge or endpoint,
of_pci_prop_ranges() incorrectly uses the CPU address of the resource.  In
such PCI nodes, the window should instead be in PCI address space. Call
pci_bus_address() on the resource in order to obtain the PCI bus address.

[Previous discussion at:
https://lore.kernel.org/all/8b4fa91380fc4754ea80f47330c613e4f6b6592c.1724159867.git.andrea.porta@suse.com/]

Link: https://lore.kernel.org/r/[email protected]
Fixes: 407d1a5 ("PCI: Create device tree node for bridge")
Tested-by: Herve Codina <[email protected]>
Signed-off-by: Andrea della Porta <[email protected]>
Signed-off-by: Bjorn Helgaas <[email protected]>
Cc: [email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Andrea della Porta authored and gregkh committed Dec 9, 2024
1 parent 6f43392 commit 8b404b0
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion drivers/pci/of_property.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ static int of_pci_prop_ranges(struct pci_dev *pdev, struct of_changeset *ocs,
if (of_pci_get_addr_flags(&res[j], &flags))
continue;

val64 = res[j].start;
val64 = pci_bus_address(pdev, &res[j] - pdev->resource);
of_pci_set_address(pdev, rp[i].parent_addr, val64, 0, flags,
false);
if (pci_is_bridge(pdev)) {
Expand Down

0 comments on commit 8b404b0

Please sign in to comment.