On Tue, May 14, 2019 at 09:00:19AM +0530, Vidya Sagar wrote:I had a discussion with our hardware engineers and we are of the opinion
On 5/13/2019 12:55 PM, Christoph Hellwig wrote:
On Mon, May 13, 2019 at 10:36:13AM +0530, Vidya Sagar wrote:There is nothing broken in Tegra194 root port as such, rather, this
Export pcie_pme_disable_msi() & pcie_pme_no_msi() APIs to enable drivers
using these APIs be able to build as loadable modules.
But this is a global setting. If you root port is broken you need
a per-rootport quirk instead.
is more of software configuration choice and we are going with
legacy interrupts than MSI interrupts (as Tegra194 doesn't support
raising PME interrupts through MSI and please note that this doesn't
mean root port is broken).
I think the port *is* broken. PCIe r4.0, sec 6.1.6, says
If the Root Port is enabled for edge-triggered interrupt signaling
using MSI or MSI-X, an interrupt message must be sent every time the
logical AND of the following conditions transitions from FALSE to
TRUE:
* The associated vector is unmasked (not applicable if MSI does
not support PVM).
* The PME Interrupt Enable bit in the Root Control register is set
to 1b.
* The PME Status bit in the Root Status register is set.
The Tegra194 root port advertises MSI support, so the above should
apply.
Since Tegra194 has only Synopsys DesignWare core based host
controllers and not any other hosts, I think it is fine to call this
API in driver.
It's fine to add a per-device quirk to set pdev->no_msi or something
similar.
Bjorn