• Sreekanth Reddy's avatar
    scsi: mpt3sas: Add support IOCs new state named COREDUMP · e8c2307e
    Sreekanth Reddy authored
    New feature is added in HBA firmware where it copies the collected firmware
    logs in flash region named 'CoreDump' whenever HBA firmware faults occur.
    
    For copying the logs to CoreDump flash region firmware needs some time and
    hence it has introduced a new IOC state named "CoreDump" State.
    
    Whenever driver detects the CoreDump state then it means that some firmware
    fault has occurred and firmware is copying the logs to the coredump flash
    region. During this time driver should not perform any operation with the
    HBA, driver should wait for HBA firmware to move the IOC state from
    'CoreDump' state to 'Fault' state once it's done with copying the logs to
    coredump region. Once driver detects the Fault state then it will issue the
    diag reset/host reset operation to move the IOC state from Fault to
    Operational state.
    
    Here the valid IOC state transactions w.r.t to this CoreDump state feature,
    
    Operational -> Fault:
    The IOC transitions to the Fault state when an operational error occurs AND
    CoreDump is not supported (or disabled) by the firmware(FW).
    
    Operational -> CoreDump:
    The IOC transitions to the CoreDump state when an operational error occurs
    AND CoreDump is supported & enabled by the FW.
    
    CoreDump -> Fault:
    A transition from CoreDump state to Fault state happens when the FW
    completes the CoreDump collection.
    
    CoreDump -> Reset:
    A transition out of the CoreDump state happens when the host sets the Reset
    Adapter bit in the System Diagnostic Register (Hard Reset). This reset
    action indicates that CoreDump took longer than the host time out.
    
    Firmware informs the driver about the maximum time that driver has to wait
    for firmware to transition the IOC state from 'CoreDump' to 'FAULT' state
    through 'CoreDumpTOSec' field of ManufacturingPage11 page. if this
    'CoreDumpTOSec' field value is zero then driver will wait for max 15
    seconds.
    
    Driver informs the HBA firmware that it supports this new IOC state named
    'CoreDump' state by enabling COREDUMP_ENABLE flag in ConfigurationFlags
    field of ioc init request message.
    
    Current patch handles the CoreDump state only during HBA initialization and
    release scenarios where watchdog thread (which polls the IOC state in every
    one second) is disabled.  Next subsequent patch handle the CoreDump state
    when watchdog thread is enabled.
    
    During HBA initialization or release execution time if driver detects the
    CoreDump state then driver will wait for maximum CoreDumpTOSec value
    seconds for FW to copy the logs. After that it will issue the diag reset
    operation to move the IOC state to Operational state.
    
    Link: https://lore.kernel.org/r/20191226111333.26131-5-sreekanth.reddy@broadcom.comSigned-off-by: default avatarSreekanth Reddy <sreekanth.reddy@broadcom.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    e8c2307e
mpt3sas_base.h 58.1 KB