linux_dsm_epyc7002/drivers/pci
Remi Pommarel 364b3f1ff8 PCI: aardvark: Use LTSSM state to build link training flag
Aardvark's PCI_EXP_LNKSTA_LT flag in its link status register is not
implemented and does not reflect the actual link training state (the
flag is always set to 0). In order to support link re-training feature
this flag has to be emulated. The Link Training and Status State
Machine (LTSSM) flag in Aardvark LMI config register could be used as
a link training indicator. Indeed if the LTSSM is in L0 or upper state
then link training has completed (see [1]).

Unfortunately because after asking a link retraining it takes a while
for the LTSSM state to become less than 0x10 (due to L0s to recovery
state transition delays), LTSSM can still be in L0 while link training
has not finished yet. So this waits for link to be in recovery or lesser
state before returning after asking for a link retrain.

[1] "PCI Express Base Specification", REV. 4.0
    PCI Express, February 19 2014, Table 4-14

Fixes: 8a3ebd8de3 ("PCI: aardvark: Implement emulated root PCI bridge config space")
Tested-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Remi Pommarel <repk@triplefau.lt>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reviewed-by: Andrew Murray <andrew.murray@arm.com>
Acked-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
2019-10-14 17:06:58 +01:00
..
controller PCI: aardvark: Use LTSSM state to build link training flag 2019-10-14 17:06:58 +01:00
endpoint
hotplug pci-v5.4-changes 2019-09-23 19:16:01 -07:00
pcie pci-v5.4-changes 2019-09-23 19:16:01 -07:00
switch
access.c
ats.c
bus.c
ecam.c
host-bridge.c
iov.c Merge branch 'pci/resource' 2019-09-23 16:10:15 -05:00
irq.c
Kconfig pci-v5.4-changes 2019-09-23 19:16:01 -07:00
Makefile
mmap.c
msi.c
of.c
p2pdma.c
pci-acpi.c Merge branch 'pci/enumeration' 2019-09-23 16:10:08 -05:00
pci-bridge-emul.c
pci-bridge-emul.h
pci-driver.c
pci-label.c
pci-mid.c
pci-pf-stub.c
pci-stub.c
pci-sysfs.c Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2019-09-28 08:14:15 -07:00
pci.c pci-v5.4-changes 2019-09-23 19:16:01 -07:00
pci.h pci-v5.4-changes 2019-09-23 19:16:01 -07:00
probe.c pci-v5.4-changes 2019-09-23 19:16:01 -07:00
proc.c Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2019-09-28 08:14:15 -07:00
quirks.c pci-v5.4-changes 2019-09-23 19:16:01 -07:00
remove.c
rom.c
search.c
setup-bus.c
setup-irq.c
setup-res.c
slot.c
syscall.c
vc.c Merge branch 'pci/trivial' 2019-09-23 16:10:31 -05:00
vpd.c PCI/VPD: Prevent VPD access for Amazon's Annapurna Labs Root Port 2019-09-16 14:10:09 +01:00
xen-pcifront.c