• Ray Jui's avatar
    PCI: iproc: Reject unconfigured physical functions from PAXC · f78e60a2
    Ray Jui authored
    PAXC is an emulated PCIe root complex internally in various Broadcom
    based SoCs. PAXC internally connects to the embedded network processor
    within these SoCs, with the embedeed network processor exposed as an
    endpoint device.
    
    The number of physical functions from the embedded network processor
    that can be accessed depends on the firmware configuration.
    
    Unfortunately, due to an ASIC bug, unconfigured physical functions cannot
    be properly hidden from the root complex during enumerattion. As a
    result, config write access to these unconfigured physical functions
    during enumeration will cause a bus lock up on the embedded network
    processor.
    
    Fortunately, these unconfigured physical functions contain a very
    specific, staled PCIe device ID 0x168e. By making use of this device ID,
    one is able to terminate the enumeration early in the vendor/device ID
    config read.
    Signed-off-by: default avatarRay Jui <ray.jui@broadcom.com>
    Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: default avatarScott Branden <scott.branden@broadcom.com>
    Reviewed-by: default avatarOza Pawandeep <poza@codeaurora.org>
    f78e60a2
pcie-iproc.c 39.1 KB