Re: [PATCH RFC NOT TESTED 2/2] PCI: artpec6: Use use_parent_dt_ranges and clean up artpec6_pcie_cpu_addr_fixup()
From: Frank Li
Date: Tue Mar 04 2025 - 15:12:33 EST
On Tue, Mar 04, 2025 at 01:08:16PM -0600, Bjorn Helgaas wrote:
> On Tue, Mar 04, 2025 at 12:49:36PM -0500, Frank Li wrote:
> > Remove artpec6_pcie_cpu_addr_fixup() as the DT bus fabric should provide correct
> > address translation. Set use_parent_dt_ranges to allow the DWC core driver to
> > fetch address translation from the device tree.
>
> Shouldn't we be able to detect platforms where DT doesn't describe the
> translation correctly? E.g., by running .cpu_addr_fixup() on a
> res.start value and comparing the result to the parent_bus_addr()?
> Then we could complain about it if they don't match.
Can't detect because:
There are case, driver have not provide .cpu_addr_fixup, but dts still be
wrong. such as
bus@10000000
{
ranges = <0xdeaddead 0x1000000 size>;
pci@90000000 {
reg = <...>, <0xdeaddead>;
reg-names = <...>, <config>;
}
};
above dts can work with current driver, but parent bus address 0xdeaddead
is totally fake address. We can't detect this case because no
.cpu_addr_fixup() at all.
Frank
>
> Bjorn