mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-15 13:16:43 +07:00
PCI: Add pci_bus_crs_vendor_id() to detect CRS response data
Add pci_bus_crs_vendor_id() to determine whether data returned for a config read of the Vendor ID indicates a Configuration Request Retry Status (CRS) response. Per PCIe r3.1, sec 2.3.2, this data is only returned if: - CRS Software Visibility is enabled, - a config read includes both bytes of the Vendor ID, and - the read receives a CRS completion Signed-off-by: Sinan Kaya <okaya@codeaurora.org> [bhelgaas: changelog, change name to pci_bus_crs_vendor_id(), make static in probe.c, use it in pci_bus_read_dev_vendor_id()] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
9f98275671
commit
62bc6a6f74
@ -1853,6 +1853,11 @@ struct pci_dev *pci_alloc_dev(struct pci_bus *bus)
|
||||
}
|
||||
EXPORT_SYMBOL(pci_alloc_dev);
|
||||
|
||||
static bool pci_bus_crs_vendor_id(u32 l)
|
||||
{
|
||||
return (l & 0xffff) == 0x0001;
|
||||
}
|
||||
|
||||
bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
|
||||
int crs_timeout)
|
||||
{
|
||||
@ -1872,7 +1877,7 @@ bool pci_bus_read_dev_vendor_id(struct pci_bus *bus, int devfn, u32 *l,
|
||||
* by the PCIe spec. Ignore the device ID and only check for
|
||||
* (vendor id == 1).
|
||||
*/
|
||||
while ((*l & 0xffff) == 0x0001) {
|
||||
while (pci_bus_crs_vendor_id(*l)) {
|
||||
if (!crs_timeout)
|
||||
return false;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user