• Ariel Elior's avatar
    bnx2x: bug fix when loading after SAN boot · 24f06716
    Ariel Elior authored
    This is a bug fix for an "interface fails to load" issue.
    The issue occurs when bnx2x driver loads after UNDI driver was previously
    loaded over the chip. In such a scenario the UNDI driver is loaded and operates
    in the pre-boot kernel, within its own specific host memory address range.
    When the pre-boot stage is complete, the real kernel is loaded, in a new and
    distinct host memory address range. The transition from pre-boot stage to boot
    is asynchronous from UNDI point of view.
    
    A race condition occurs when UNDI driver triggers a DMAE transaction to valid
    host addresses in the pre-boot stage, when control is diverted to the real
    kernel. This results in access to illegal addresses by our HW as the addresses
    which were valid in the preboot stage are no longer considered valid.
    Specifically, the 'was_error' bit in the pci glue of our device is set. This
    causes all following pci transactions from chip to host to timeout (in
    accordance to the pci spec).
    Signed-off-by: default avatarAriel Elior <ariele@broadcom.com>
    Signed-off-by: default avatarEilon Greenstein <eilong@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    24f06716
bnx2x_main.c 327 KB