Re: Query regarding the use of pcie-designware-plat.c file

From: Jon Hunter
Date: Wed Jun 16 2021 - 03:54:54 EST



On 15/06/2021 20:42, Bjorn Helgaas wrote:
> On Wed, Jun 09, 2021 at 05:54:38PM +0100, Jon Hunter wrote:
>>
>> 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.
>
> This doesn't really answer my question.
>
> If the hardware claims to be compatible with "snps,dw-pcie" and a
> driver knows how to operate "snps,dw-pcie" devices, it should work.
>
> If the hardware requires initialization that is not part of the
> "snps,dw-pcie" programming model, it should not claim to be compatible
> with "snps,dw-pcie". Or, if pcie-designware-plat.c is missing some
> init that *is* part of the programming model, maybe it needs to be
> enhanced?

Right and this is exactly why I removed the compatible string
"snps,dw-pcie" for Tegra194 because it is clear that this does not work
and hence not compatible.

Sagar is purely trying to understand if this is case of other devices as
well or just Tegra194.

Jon

--
nvpublic