On 29 November 2017 at 8:46PM, Bjorn Helgaas wrote: > On Wed, Nov 29, 2017 at 1:28 PM, Christian Zigotzky > wrote: >> On 23 November 2017 at 2:31PM, Michael Ellerman wrote: >>> Hi Christian, >>> >>> Thanks for your patch. >>> >>> Christian Zigotzky writes: >>>> Hi All, >>>> >>>> Just a small patch for the P.A. Semi Nemo board: >>>> >>>> ----- >>>> >>>> diff -rupN a/drivers/pci/probe.c b/drivers/pci/probe.c >>>> --- a/drivers/pci/probe.c 2017-11-16 08:18:40.504012010 +0100 >>>> +++ b/drivers/pci/probe.c 2017-11-16 08:17:22.044368405 +0100 >>>> @@ -2219,6 +2219,8 @@ static int only_one_child(struct pci_bus >>> As this is a patch to the PCI code I can't merge it via the powerpc >>> tree. You would need to send it to linux-pci@vger.kernel.org. >>> >>>> if (!parent || !pci_is_pcie(parent)) >>>> return 0; >>>> + #ifndef CONFIG_PPC_PASEMI_NEMO >>>> + // SB600 for the Nemo board has non-zero devices on non-root bus. >>>> if (pci_pcie_type(parent) == PCI_EXP_TYPE_ROOT_PORT) >>>> return 1; >>>> >>>> @@ -2231,6 +2233,7 @@ static int only_one_child(struct pci_bus >>>> if (parent->has_secondary_link && >>>> !pci_has_flag(PCI_SCAN_ALL_PCIE_DEVS)) >>>> return 1; >>>> + #endif >>> But the PCI maintainer is not going to accept a patch like this, which >>> adds a platform specific #ifdef in core code like this. >>> >>> If you look at the rest of that file I don't think you'll find a single >>> #ifdef other than for generic configuration symbols. >>> >>> Are you sure the PCI_SCAN_ALL_PCIE_DEVS logic doesn't work for you? It >>> sounds like it was added for exactly this problem. >>> >>> cheers >>> >> Hi Michael, >> >> Thanks for your reply. Sorry for my late answer. I removed the patch above >> from the RC1 and compiled the RC1 again. Unfortunately without the patch, >> the kernel doesn't recognize any drives and partitions. Do you have another >> idea? > What happens if you boot RC1 with "pci=pcie_scan_all"? If that works, > we do have some quirks that set that automatically, and we might be > able to add another one for the Nemo. > > Can you collect the complete "lspci -vv" and dmesg output for this > system? I'm curious about why it is special. > > Bjorn > Hi Bjorn, Thank you for your answer. I have tried to boot the kernel 4.15 RC1 (built without the patch above) with the boot argument "pci=pcie_scan_all" but without any success. Just for info: The CPU is a PA Semi “PWRficient” PA6T-1682M. This device combines dual 1.8GHz PowerPC cores with a 2MB L2 cache, dual channel DDR2 memory controllers and 24 SerDes channels. The PowerPC cores adhere to the Power ISA v2.04, and support 64-bit extensions. They feature a double precision FPU and a VMX (AltiVec) vector unit. They each have a 64kB I-cache and a 64kB D-cache. The SerDes channels support PCI Express, XAUI and SGMII protocols. The “ENVOI” I/O subsystem which drives them includes caching, offload and DMA resources to maximise I/O performance. Nemo uses the AMD/ATI SB600 South Bridge to provide various integrated I/O functions including SATA/PATA ports, USB and audio. The SB600 connects to the CPU via a PCIe x4 link. This is termed an “A-link II Express” link by ATI/AMD. The design team determined early in the development of Nemo that the link’s behaviour as an endpoint does not comply fully with the PCI Express specification. Specifically, it requires the root complex to use non-zero device numbers in type 0 configuration cycles to enumerate all the devices within the SB600. This is related to the PC architecture and is used to allow SB600 devices appear on logical bus 0. More information about the Nemo board: https://en.wikipedia.org/wiki/AmigaOne_X1000 http://www.a-eon.com/?page=x1000 http://www.amigaos.net/hardware/35/amigaone-x1000 Please find attached the complete "lspci -vv" and dmesg output. Thanks, Christian