Files
linux/arch/powerpc/kernel
Pali Rohár 0382a35bef powerpc/pci: Enable PCI domains in /proc when PCI bus numbers are not unique
On 32-bit powerpc systems with more PCIe controllers and more PCI
domains, where on more PCI domains are same PCI numbers, when kernel is
compiled with CONFIG_PROC_FS=y and
CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT=y options, kernel prints
"proc_dir_entry 'pci/01' already registered" error message.

  proc_dir_entry 'pci/01' already registered
  WARNING: CPU: 0 PID: 1 at fs/proc/generic.c:377 proc_register+0x1a8/0x1ac
  ...
  NIP proc_register+0x1a8/0x1ac
  LR  proc_register+0x1a8/0x1ac
  Call Trace:
    proc_register+0x1a8/0x1ac (unreliable)
    _proc_mkdir+0x78/0xa4
    pci_proc_attach_device+0x11c/0x168
    pci_proc_init+0x80/0x98
    do_one_initcall+0x80/0x284
    kernel_init_freeable+0x1f4/0x2a0
    kernel_init+0x24/0x150
    ret_from_kernel_thread+0x5c/0x64

This regression started appearing after commit
5663568130 ("powerpc/pci: Add config option for using all 256 PCI
buses") in case in each mPCIe slot is connected PCIe card and therefore
PCI bus 1 is populated in for every PCIe controller / PCI domain.

The reason is that PCI procfs code expects that when PCI bus numbers are
not unique across all PCI domains, function pci_proc_domain() returns
true for domain dependent buses.

Fix this issue by setting PCI_ENABLE_PROC_DOMAINS and
PCI_COMPAT_DOMAIN_0 flags for 32-bit powerpc code when
CONFIG_PPC_PCI_BUS_NUM_DOMAIN_DEPENDENT is enabled. Same approach is
already implemented for 64-bit powerpc code (where PCI bus numbers are
always domain dependent).

Fixes: 5663568130 ("powerpc/pci: Add config option for using all 256 PCI buses")
Signed-off-by: Pali Rohár <pali@kernel.org>
[mpe: Trim change log oops message]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220820115113.30581-1-pali@kernel.org
2022-08-25 17:47:08 +10:00
..
2021-12-09 22:41:21 +11:00
2022-05-05 22:12:44 +10:00
2022-05-08 22:15:40 +10:00
2022-05-05 22:12:44 +10:00
2022-02-07 21:03:10 +11:00
2022-02-07 21:03:10 +11:00
2022-02-07 21:03:10 +11:00
2020-12-04 01:01:09 +11:00
2022-05-08 22:15:40 +10:00
2022-06-29 19:37:07 +10:00
2022-05-08 22:15:40 +10:00
2021-12-09 22:41:21 +11:00
2022-05-08 22:15:40 +10:00
2022-05-05 22:11:57 +10:00
2022-05-08 22:15:40 +10:00
2022-05-08 22:15:40 +10:00
2022-05-08 22:15:40 +10:00
2022-07-09 19:29:34 +10:00
2022-05-05 22:12:44 +10:00
2022-05-08 22:15:40 +10:00
2022-05-08 22:15:40 +10:00
2022-05-08 22:15:40 +10:00
2021-11-16 21:24:16 +11:00
2022-05-08 22:15:40 +10:00
2022-05-08 22:15:40 +10:00
2021-08-19 09:02:55 +09:00
2021-12-09 22:41:21 +11:00