• Benjamin Li's avatar
    PCI: Limit VPD read/write lengths for Broadcom 5706, 5708, 5709 rev. · 99cb233d
    Benjamin Li authored
    For Broadcom 5706, 5708, 5709 rev. A nics, any read beyond the
    VPD end tag will hang the device.  This problem was initially
    observed when a vpd entry was created in sysfs
    ('/sys/bus/pci/devices/<id>/vpd').   A read to this sysfs entry
    will dump 32k of data.  Reading a full 32k will cause an access
    beyond the VPD end tag causing the device to hang.  Once the device
    is hung, the bnx2 driver will not be able to reset the device.
    We believe that it is legal to read beyond the end tag and
    therefore the solution is to limit the read/write length.
    
    A majority of this patch is from Matthew Wilcox who gave code for
    reworking the PCI vpd size information.  A PCI quirk added for the
    Broadcom NIC's to limit the read/write's.
    Signed-off-by: default avatarBenjamin Li <benli@broadcom.com>
    Signed-off-by: default avatarMatthew Wilcox <willy@linux.intel.com>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    99cb233d
quirks.c 68.2 KB