• Pali Rohár's avatar
    powerpc/pci: Enable PCI domains in /proc when PCI bus numbers are not unique · 0382a35b
    Pali Rohár authored
    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
    56635681 ("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: 56635681 ("powerpc/pci: Add config option for using all 256 PCI buses")
    Signed-off-by: default avatarPali Rohár <pali@kernel.org>
    [mpe: Trim change log oops message]
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20220820115113.30581-1-pali@kernel.org
    0382a35b
pci_32.c 8.45 KB