PCI: xgene: Disable Configuration Request Retry Status for v1 silicon
authorDuc Dang <dhdang@apm.com>
Sat, 13 Jun 2015 00:35:57 +0000 (17:35 -0700)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 18 Jun 2015 17:09:03 +0000 (12:09 -0500)
commitf09f8735fb9ca113239fead45d96a48660cc2ae3
treefe12e44c989b3bcd9498f43ee7cc71ed40cdf70f
parente1e6e5c4de24cee3b1bdde52661a8c493351d3cb
PCI: xgene: Disable Configuration Request Retry Status for v1 silicon

When a CPU reads the Vendor and Device ID of a non-existent device, the
controller should fabricate return data of 0xFFFFFFFF.  Configuration
Request Retry Status (CRS) is not applicable in this case because the
device doesn't exist at all.

The X-Gene v1 PCIe controller has a bug in the CRS logic such that when CRS
is enabled, it fabricates return data of 0xFFFF0001 for this case, which
means "the device exists but is not ready."  That causes the PCI core to
retry the read until it times out after 60 seconds.

Disable CRS capability advertisement by clearing the CRS Software
Visibility bit in the Root Capabilities Register.

[bhelgaas: changelog and comment]
Tested-by: Ian Campbell <ian.campbell@citrix.com>
Tested-by: Marcin Juszkiewicz <mjuszkiewicz@redhat.com>
Signed-off-by: Duc Dang <dhdang@apm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Acked-by: Tanmay Inamdar <tinamdar@apm.com>
drivers/pci/host/pci-xgene.c