On 09/06/2021 17:30, Bjorn Helgaas wrote: > On Wed, Jun 09, 2021 at 12:52:37AM +0530, Vidya Sagar wrote: >> Hi, >> I would like to know what is the use of pcie-designware-plat.c file. This >> looks like a skeleton file and can't really work with any specific hardware >> as such. >> Some context for this mail thread is, if the config CONFIG_PCIE_DW_PLAT is >> enabled in a system where a Synopsys DesignWare IP based PCIe controller is >> present and its configuration is enabled (Ex:- Tegra194 system with >> CONFIG_PCIE_TEGRA194_HOST enabled), then, it can so happen that the probe of >> pcie-designware-plat.c called first (because all DWC based PCIe controller >> nodes have "snps,dw-pcie" compatibility string) and can crash the system. > > What's the crash? If a device claims to be compatible with > "snps,dw-pcie" and pcie-designware-plat.c claims to know how to > operate "snps,dw-pcie" devices, it seems like something is wrong. > > "snps,dw-pcie" is a generic device type, so pcie-designware-plat.c > might not know how to operate device-specific details of some of those > devices, but basic functionality should work and it certainly > shouldn't crash. It is not really a crash but a hang when trying to access the hardware before it has been properly initialised. The scenario I saw was that if the Tegra194 PCIe driver was built as a module but the pcie-designware-plat.c was built into the kernel, then on boot we would attempt to probe the pcie-designware-plat.c driver because module was not available yet and this would hang. Hence, I removed the "snps,dw-pcie" compatible string for Tegra194 to avoid this and ONLY probe the Tegra194 PCIe driver. Sagar is wondering why this hang is only seen/reported for Tegra and could this happen to other platforms? I think that is potentially could. Jon -- nvpublic