PCI/PTM: Inherit Switch Downstream Port PTM settings from Upstream Port
authorBjorn Helgaas <bhelgaas@google.com>
Thu, 21 May 2020 20:40:07 +0000 (15:40 -0500)
committerSasha Levin <sashal@kernel.org>
Tue, 30 Jun 2020 19:38:26 +0000 (15:38 -0400)
commit3facf1adb9ffedb49ff766869e80a6bdee045a43
tree464f1aff5ff287625e8441d28da9414525e1aaad
parent04e0afc8685f13c572ce9106df13a23f9363dbf6
PCI/PTM: Inherit Switch Downstream Port PTM settings from Upstream Port

[ Upstream commit 7b38fd9760f51cc83d80eed2cfbde8b5ead9e93a ]

Except for Endpoints, we enable PTM at enumeration-time.  Previously we did
not account for the fact that Switch Downstream Ports are not permitted to
have a PTM capability; their PTM behavior is controlled by the Upstream
Port (PCIe r5.0, sec 7.9.16).  Since Downstream Ports don't have a PTM
capability, we did not mark them as "ptm_enabled", which meant that
pci_enable_ptm() on an Endpoint failed because there was no PTM path to it.

Mark Downstream Ports as "ptm_enabled" if their Upstream Port has PTM
enabled.

Fixes: eec097d43100 ("PCI: Add pci_enable_ptm() for drivers to enable PTM on endpoints")
Reported-by: Aditya Paluri <Venkata.AdityaPaluri@synopsys.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/pci/pcie/ptm.c