• Rajat Jain's avatar
    PCI: Enable CRS Software Visibility for root port if it is supported · f3dbd802
    Rajat Jain authored
    Per PCIe r3.0, sec 2.3.2, an endpoint may respond to a Configuration
    Request with a Completion with Configuration Request Retry Status (CRS).
    This terminates the Configuration Request.
    
    When the CRS Software Visibility feature is disabled (as it is by default),
    a Root Complex must handle a CRS Completion by re-issuing the Configuration
    Request.  This is invisible to software.  From the CPU's point of view, an
    endpoint that always responds with CRS causes a hang because the Root
    Complex never supplies data to complete the CPU read.
    
    When CRS Software Visibility is enabled, a Root Complex that receives a CRS
    Completion for a read of the Vendor ID must return data of 0x0001.  The
    Vendor ID of 0x0001 indicates to software that the endpoint is not ready.
    
    We now have more devices that require CRS Software Visibility.  For
    example, a PLX 8713 NT bridge may respond with CRS until it has been
    configured via I2C, and the I2C configuration is completely independent of
    PCI enumeration.
    
    Enable CRS Software Visibility if it is supported.  This allows a system
    with such a device to work (though the PCI core times out waiting for it to
    become ready, and we have to rescan the bus after it is ready).
    
    This essentially reverts ad7edfe0 ("[PCI] Do not enable CRS Software
    Visibility by default").  The failures that led to ad7edfe0 should be
    addressed by 89665a6a ("PCI: Check only the Vendor ID to identify
    Configuration Request Retry").
    
    [bhelgaas: changelog]
    Link: http://lkml.kernel.org/r/20071029061532.5d10dfc6@snowcone
    Link: http://lkml.kernel.org/r/alpine.LFD.0.9999.0712271023090.21557@woody.linux-foundation.orgSigned-off-by: default avatarRajat Jain <rajatxjain@gmail.com>
    Signed-off-by: default avatarRajat Jain <rajatjain@juniper.net>
    Signed-off-by: default avatarGuenter Roeck <groeck@juniper.net>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    f3dbd802
probe.c 53.5 KB