Re: [PATCH 1/2] dt-bindings: PCI: Add linux,pci-domain-reuse property
From: Cui Chao
Date: Thu Nov 05 2026 - 02:38:22 EST
On 11/4/2026 3:23 PM, Krzysztof Kozlowski wrote:
On 03/11/2026 03:57, Cui Chao wrote:
On 11/2/2026 6:00 PM, Krzysztof Kozlowski wrote:You have vendor specific compatibles, no?
On 02/11/2026 10:51, Cui Chao wrote:Hi Krzysztof,
Add a new optional boolean property 'linux,pci-domain-reuse' for PCIWhy isn't this deducible from the compatibles?
host bridges.
By default, the 'linux,pci-domain' property must be unique across all
host bridges. This property allows a host bridge to explicitly opt-out
of this uniqueness check, permitting multiple host bridges to reuse the
same software domain number.
Thanks.
The compatible cannot express this. "pci-host-ecam-generic" only
I used a tool to assist me earlier. I will now discuss directly.
The driver used by our hardware is not a vendor specific driver but
the generic "pci-host-generic" driver, so previously the compatible
in our DTS was only "pci-host-ecam-generic", with no vendor specific
compatibles.
describes how configuration space is accessed; it does not describeOK, so let's look at your DTS - where is it posted for upstream?
whether two host bridge instances may share one Linux PCI domain.
The same compatible is used on systems where every host bridge must
have a unique domain and on this system where two RCs intentionally
share a domain with disjoint bus ranges and resource windows.
Comparing the compatible strings of the nodes therefore cannot
distinguish our case.
The DTS has not been uploaded upstream. Below is our DTS (with
irrelevant information such as interrupts and IOMMU omitted). Both
nodes use only "pci-host-ecam-generic", and their resources do not
overlap, but the domain is the same.
pcie0: pcie@80000000 {
compatible = "pci-host-ecam-generic";
device_type = "pci";
#address-cells = <0x3>;
#size-cells = <0x2>;
#interrupt-cells = <0x1>;
reg = <0x0 0x80000000 0x0 0x8000000>;
linux,pci-domain = <0>;
bus-range = <0x0 0x7f>;
ranges = <0x1000000 0x0 0x100000 0x0 0x10000000 0x0 0x100000
0x2000000 0x0 0x20000000 0x0 0x20000000 0x0 0x10000000
0x43000000 0x200 0x0 0x200 0x0 0x100 0x0>;
};
pcie1: pcie@88000000 {
compatible = "pci-host-ecam-generic";
device_type = "pci";
#address-cells = <0x3>;
#size-cells = <0x2>;
#interrupt-cells = <0x1>;
reg = <0x0 0x88000000 0x0 0x8000000>;
linux,pci-domain = <0>;
bus-range = <0x80 0xff>;
ranges = <0x1000000 0x0 0x200000 0x0 0x10100000 0x0 0x100000
0x2000000 0x0 0x30000000 0x0 0x30000000 0x0 0x10000000
0x43000000 0x300 0x0 0x300 0x0 0x100 0x0>;
};
Adding a vendor-specific compatible only to trigger this Linux policyThis one is clear paste of LLM output to a message.
would not describe a different hardware programming model either.
What actually makes reuse valid is the platform-level relationship:
the bus ranges and resource windows are disjoint.
If you prefer to avoid a new property, I can rework this to derive or
validate reuse from the non-overlapping bus-range and resource layout
instead. Would that be the preferred direction?
Best regards,
Krzysztof
--
Best regards,
Cui Chao.