mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Intermediate DT PCI nodes dynamically generated by enabling CONFIG_PCI_DYNAMIC_OF_NODES have empty dma-ranges property. PCI address specifiers have 3 cells and when dma-ranges is missing or empty, of_translate_one() is currently dropping the flag portion of PCI addresses which are subnodes of the aforementioned ones, failing the translation. Add new tests covering this case. With this test, we get 1 new failure which is fixed in subsequent commit: FAIL of_unittest_pci_empty_dma_ranges():1245 for_each_of_pci_range wrong CPU addr (ffffffffffffffff) on node /testcase-data/address-tests2/pcie@d1070000/pci@0,0/dev@0,0/local-bus@0 Signed-off-by: Andrea della Porta <andrea.porta@suse.com> Link: https://lore.kernel.org/r/08f8fee4fdc0379240fda2f4a0e6f11ebf9647a8.1732441813.git.andrea.porta@suse.com Signed-off-by: Rob Herring (Arm) <robh@kernel.org>
158 lines
4.4 KiB
Text
158 lines
4.4 KiB
Text
// SPDX-License-Identifier: GPL-2.0
|
|
|
|
/ {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
testcase-data {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges;
|
|
|
|
address-tests {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
/* ranges here is to make sure we don't use it for
|
|
* dma-ranges translation */
|
|
ranges = <0x70000000 0x70000000 0x50000000>,
|
|
<0x00000000 0xd0000000 0x20000000>;
|
|
dma-ranges = <0x0 0x20000000 0x40000000>;
|
|
|
|
device@70000000 {
|
|
reg = <0x70000000 0x1000>;
|
|
};
|
|
|
|
bus@80000000 {
|
|
#address-cells = <2>;
|
|
#size-cells = <2>;
|
|
ranges = <0x0 0x0 0x80000000 0x0 0x100000>;
|
|
dma-ranges = <0x1 0x0 0x0 0x20 0x0>;
|
|
|
|
device@1000 {
|
|
reg = <0x0 0x1000 0x0 0x1000>;
|
|
};
|
|
};
|
|
|
|
pci@90000000 {
|
|
device_type = "pci";
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
reg = <0x90000000 0x1000>;
|
|
ranges = <0x42000000 0x0 0x40000000 0x40000000 0x0 0x10000000>;
|
|
dma-ranges = <0x42000000 0x0 0x80000000 0x00000000 0x0 0x10000000>,
|
|
<0x42000000 0x0 0xc0000000 0x20000000 0x0 0x10000000>;
|
|
};
|
|
|
|
bus@a0000000 {
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
ranges = <0xf00baa 0x0 0x0 0xa0000000 0x0 0x100000>,
|
|
<0xf00bee 0x1 0x0 0xb0000000 0x0 0x200000>;
|
|
};
|
|
|
|
};
|
|
|
|
address-tests2 {
|
|
#address-cells = <2>;
|
|
#size-cells = <1>;
|
|
|
|
ranges = <0x10000000 0x01000000 0xa0000000 0x01000000>,
|
|
<0x10000000 0x02000000 0xb0000000 0x01000000>,
|
|
<0x20000000 0x01000000 0xc0000000 0x01000000>,
|
|
<0x20000000 0x02000000 0xd0000000 0x01000000>,
|
|
<0x00000000 0xd1000000 0xd1000000 0x01000000>,
|
|
<0x00000000 0xe8000000 0xe8000000 0x07f00000>,
|
|
<0x00000000 0xefff0000 0xefff0000 0x00010000>;
|
|
|
|
bus-2cell@10000000 {
|
|
#address-cells = <2>;
|
|
#size-cells = <1>;
|
|
ranges = <0x100000 0x10000 0x10000000 0x1a00000 0x10000>,
|
|
<0x100000 0x20000 0x10000000 0x1b00000 0x10000>,
|
|
<0x200000 0x10000 0x20000000 0x1c00000 0x10000>,
|
|
<0x200000 0x20000 0x20000000 0x2d00000 0x10000>;
|
|
|
|
device@100000 {
|
|
reg = <0x100000 0x11000 0x100>,
|
|
<0x100000 0x12000 0x100>,
|
|
<0x200000 0x11000 0x100>,
|
|
<0x200000 0x21000 0x100>;
|
|
};
|
|
};
|
|
|
|
bus-3cell@20000000 {
|
|
#address-cells = <3>;
|
|
#size-cells = <1>;
|
|
ranges = <0x1 0x100000 0x10000 0x10000000 0x1a00000 0x10000>,
|
|
<0x2 0x100000 0x10000 0x10000000 0x1b00000 0x10000>,
|
|
<0x3 0x200000 0x10000 0x20000000 0x1c00000 0x10000>,
|
|
<0x4 0x200000 0x20000 0x20000000 0x2d00000 0x10000>;
|
|
|
|
local-bus@100000 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges = <0xf1000000 0x1 0x100000 0x10000 0x10000>,
|
|
<0xf2000000 0x2 0x100000 0x10000 0x10000>,
|
|
<0xf3000000 0x3 0x200000 0x10000 0x08000>,
|
|
<0xf3800000 0x3 0x200000 0x18000 0x08000>,
|
|
<0xf4000000 0x4 0x200000 0x20000 0x10000>;
|
|
|
|
device@f1001000 {
|
|
reg = <0xf1001000 0x100>,
|
|
<0xf2002000 0x100>,
|
|
<0xf3001000 0x100>,
|
|
<0xf3801000 0x100>,
|
|
<0xf4001000 0x100>;
|
|
};
|
|
};
|
|
};
|
|
|
|
pcie@d1070000 {
|
|
#address-cells = <0x03>;
|
|
#size-cells = <0x02>;
|
|
bus-range = <0x00 0xff>;
|
|
device_type = "pci";
|
|
ranges = <0x82000000 0 0xe8000000 0 0xe8000000 0 0x7f00000>,
|
|
<0x81000000 0 0x00000000 0 0xefff0000 0 0x0010000>;
|
|
dma-ranges = <0x43000000 0x10 0x00 0x00 0x00 0x00 0x10000000>;
|
|
reg = <0x00000000 0xd1070000 0x20000>;
|
|
|
|
pci@0,0 {
|
|
#address-cells = <0x03>;
|
|
#size-cells = <0x02>;
|
|
bus-range = <0x01 0x01>;
|
|
device_type = "pci";
|
|
ranges = <0x82000000 0 0xe8000000
|
|
0x82000000 0 0xe8000000
|
|
0 0x4400000>;
|
|
reg = <0x00 0x00 0x00 0x00 0x00>;
|
|
|
|
dev@0,0 {
|
|
#address-cells = <0x03>;
|
|
#size-cells = <0x02>;
|
|
ranges = <0 0 0 0x82010000 0 0xe8000000 0 0x2000000>,
|
|
<1 0 0 0x82010000 0 0xea000000 0 0x1000000>,
|
|
<2 0 0 0x82010000 0 0xeb000000 0 0x0800000>,
|
|
<3 0 0 0x82010000 0 0xeb800000 0 0x0800000>,
|
|
<4 0 0 0x82010000 0 0xec000000 0 0x0020000>,
|
|
<5 0 0 0x82010000 0 0xec020000 0 0x0002000>;
|
|
reg = <0x10000 0x00 0x00 0x00 0x00>;
|
|
|
|
local-bus@0 {
|
|
#address-cells = <0x01>;
|
|
#size-cells = <0x01>;
|
|
ranges = <0xa0000000 0 0 0 0x2000000>,
|
|
<0xb0000000 1 0 0 0x1000000>;
|
|
dma-ranges = <0xc0000000 0x43000000 0x10 0x00 0x10000000>;
|
|
|
|
dev@e0000000 {
|
|
reg = <0xa0001000 0x1000>,
|
|
<0xb0002000 0x2000>;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|
|
};
|