Hi Joseph,

On Thu, Aug 6, 2026 at 6:43 AM Joseph Guo <[email protected]> wrote:

> Hi Fabio,
>
> Thanks for the suggestion to make the U-Boot driver honor `linux,pci-domain = 
> <N>;` the way Linux does.
>
> I looked into implementing this, but I don't think it is the right fit for 
> U-Boot, for the following reasons:
>
> 1. `linux,pci-domain` and U-Boot bus numbering solve different problems. In 
> Linux, `linux,pci-domain` assigns a *PCI domain* (segment) number; it does 
> not control the order in which host bridges are probed or the Linux bus 
> numbers. U-Boot's driver model has no concept of PCI domains/segments — a PCI 
> controller is identified only by its DM sequence number, which doubles as the 
> root bus number. So there is no existing field to map `linux,pci-domain` 
> onto; honoring it would mean overloading the DM sequence number with domain 
> semantics.
>
> 2. Making U-Boot consume `linux,pci-domain` requires overriding the DM 
> sequence number in a non-obvious way. The DM sequence number is normally 
> assigned during the bind phase (from `/aliases`), and the only way to make a 
> controller pick up the domain value is to overwrite `dev->seq_` later in 
> `of_to_plat()`. This is fragile: it silently reinterprets a Linux-specific 
> property as a U-Boot core-behavior knob, it interacts with the `pci` alias 
> mechanism in ways that are easy to get wrong, and it changes the 
> enumeration/listing order for *every* PCI platform, not just i.MX95. The 
> regression surface (e.g. the `pci` command's bus-walk stopping at the first 
> link-down root complex) is larger than the problem being solved.
>
> 3. The pci aliases are the documented [1], portable U-Boot mechanism for 
> exactly this. U-Boot already defines pci<N> aliases as the canonical way to 
> fix PCI controller sequence numbers (DM_UC_FLAG_SEQ_ALIAS), and other boards 
> use them for the same purpose. Keeping the aliases in the board -u-boot.dtsi 
> is consistent with U-Boot conventions and does not touch the upstream kernel 
> DTS.
>
> If you main concern is keeping the U-boot DTS sync with the upstream. I can 
> upstream the pci aliases. These aliases only influence U-Boot's DM sequence 
> numbering; Linux ignores `pci` aliases for PCI enumeration and bus numbering, 
> so adding them upstream is functionally a no-op for the kernel.
>
> [1] 
> https://docs.u-boot.org/en/latest/develop/driver-model/design.html#device-sequence-numbers

Ok, I applied your patch as is.

Reply via email to