• James Smart's avatar
    scsi: lpfc: Fix panic on BFS configuration · 4492b739
    James Smart authored
    To select the appropriate shost template, the driver is issuing a
    mailbox command to retrieve the wwn. Turns out the sending of the
    command precedes the reset of the function.  On SLI-4 adapters, this is
    inconsequential as the mailbox command location is specified by dma via
    the BMBX register. However, on SLI-3 adapters, the location of the
    mailbox command submission area changes. When the function is first
    powered on or reset, the cmd is submitted via PCI bar memory. Later the
    driver changes the function config to use host memory and DMA. The
    request to start a mailbox command is the same, a simple doorbell write,
    regardless of submission area.  So.. if there has not been a boot driver
    run against the adapter, the mailbox command works as defaults are
    ok. But, if the boot driver has configured the card and, and if no
    platform pci function/slot reset occurs as the os starts, the mailbox
    command will fail. The SLI-3 device will use the stale boot driver dma
    location. This can cause PCI eeh errors.
    
    Fix is to reset the sli-3 function before sending the mailbox command,
    thus synchronizing the function/driver on mailbox location.
    
    Note: The fix uses routines that are typically invoked later in the call
    flow to reset the sli-3 device. The issue in using those routines is
    that the normal (non-fix) flow does additional initialization, namely
    the allocation of the pport structure. So, rather than significantly
    reworking the initialization flow so that the pport is alloc'd first,
    pointer checks are added to work around it. Checks are limited to the
    routines invoked by a sli-3 adapter (s3 routines) as this fix/early call
    is only invoked on a sli3 adapter. Nothing changes post the
    fix. Subsequent initialization, and another adapter reset, still occur -
    both on sli-3 and sli-4 adapters.
    Signed-off-by: default avatarDick Kennedy <dick.kennedy@broadcom.com>
    Signed-off-by: default avatarJames Smart <james.smart@broadcom.com>
    Fixes: 96418b5e ("scsi: lpfc: Fix eh_deadline setting for sli3 adapters.")
    Cc: stable@vger.kernel.org # v4.11+
    Reviewed-by: default avatarEwan D. Milne <emilne@redhat.com>
    Reviewed-by: default avatarJohannes Thumshirn <jthumshirn@suse.de>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    4492b739
lpfc_sli.c 570 KB