On Friday 15 July 2022 11:55:04 Guilherme G. Piccoli wrote: > On 06/07/2022 07:21, Pali Rohár wrote: > > [...] > > Fix this issue and introduce a new option CONFIG_PPC_PCI_DOMAIN_FROM_OF_REG. > > When this option is disabled then powerpc kernel would assign PCI domains > > in the similar way like it is doing kernel for other architectures, > > starting from zero and also how it was done prior that commit. > > I found this sentence a bit weird, "in the similar way like it is doing > kernel for other architectures", but other than that: If you have some idea how to improve commit description, let me know and I can change it. > Reviewed-by: Guilherme G. Piccoli <gpiccoli@xxxxxxxxxx> > > Thanks for the improvement! > Cheers, > > > Guilherme > > > > > > This option is by default enabled for powernv and pseries platform for which > > was that commit originally intended. > > > > With this change upgrading kernels from LTS 4.4 version does not change PCI > > domain on smaller embedded platforms with fixed number of PCIe controllers. > > And also ensure that PCI domain zero is present as before that commit. > > > > Fixes: 63a72284b159 ("powerpc/pci: Assign fixed PHB number based on device-tree properties") > > Signed-off-by: Pali Rohár <pali@xxxxxxxxxx> > > --- > > Changes in v2: > > * Enable CONFIG_PPC_PCI_DOMAIN_FROM_OF_REG by default on powernv and pseries > > --- > > arch/powerpc/Kconfig | 11 +++++++++++ > > arch/powerpc/kernel/pci-common.c | 4 ++-- > > 2 files changed, 13 insertions(+), 2 deletions(-) > > > > diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig > > index f66084bc1dfe..053a88e84049 100644 > > --- a/arch/powerpc/Kconfig > > +++ b/arch/powerpc/Kconfig > > @@ -386,6 +386,17 @@ config PPC_OF_PLATFORM_PCI > > depends on PCI > > depends on PPC64 # not supported on 32 bits yet > > > > +config PPC_PCI_DOMAIN_FROM_OF_REG > > + bool "Use OF reg property for PCI domain" > > + depends on PCI > > + default y if PPC_PSERIES || PPC_POWERNV > > + help > > + By default PCI domain for host bridge during its registration is > > + chosen as the lowest unused PCI domain number. > > + > > + When this option is enabled then PCI domain can be determined > > + also from lower bits of the OF / Device Tree 'reg' property. > > + > > config ARCH_SUPPORTS_UPROBES > > def_bool y > > > > diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c > > index 068410cd54a3..7f959df34833 100644 > > --- a/arch/powerpc/kernel/pci-common.c > > +++ b/arch/powerpc/kernel/pci-common.c > > @@ -74,7 +74,6 @@ void __init set_pci_dma_ops(const struct dma_map_ops *dma_ops) > > static int get_phb_number(struct device_node *dn) > > { > > int ret, phb_id = -1; > > - u32 prop_32; > > u64 prop; > > > > /* > > @@ -83,7 +82,8 @@ static int get_phb_number(struct device_node *dn) > > * reading "ibm,opal-phbid", only present in OPAL environment. > > */ > > ret = of_property_read_u64(dn, "ibm,opal-phbid", &prop); > > - if (ret) { > > + if (ret && IS_ENABLED(CONFIG_PPC_PCI_DOMAIN_FROM_OF_REG)) { > > + u32 prop_32; > > ret = of_property_read_u32_index(dn, "reg", 1, &prop_32); > > prop = prop_32; > > }