• Sreekanth Reddy's avatar
    scsi: mpt3sas: Register trace buffer based on NVDATA settings · d04a6edf
    Sreekanth Reddy authored
    Currently if user wishes to enable the host trace buffer during driver load
    time, then user has to load the driver with module parameter
    'diag_buffer_enable' set to one.
    
    Alternatively now the user can enable host trace buffer by enabling the
    following fields in manufacturing page11 in NVDATA (nvdata xml is used
    while building HBA firmware image):
    
     * HostTraceBufferMaxSizeKB - Maximum trace buffer size in KB that host can
                                  allocate,
    
     * HostTraceBufferMinSizeKB - Minimum trace buffer size in KB atleast host
                                  should allocate,
    
     * HostTraceBufferDecrementSizeKB - size by which host can reduce from
                                  buffer size and retry the buffer allocation
                                  when buffer allocation failed with previous
                                  calculated buffer size.
    
    The driver will register the trace buffer automatically without any module
    parameter during boot time when above fields are enabled in manufacturing
    page11 in HBA firmware.
    
    Driver follows the following algorithm for enabling the host trace buffer
    during driver load time:
    
    * If user has loaded the driver with module parameter 'diag_buffer_enable'
      set to one, then driver allocates 2MB buffer and registers this buffer
      with HBA firmware for capturing the firmware trace logs.
    
    * Else driver reads manufacture page11 data and checks whether
      HostTraceBufferMaxSizeKB filed is zero or not?
    
      - If HostTraceBufferMaxSizeKB is non-zero then driver tries to allocate
        HostTraceBufferMaxSizeKB size of memory. If the buffer allocation is
        successful, then it will register this buffer with HBA firmware, else
        in a loop the driver will try again by reducing the current buffer size
        with HostTraceBufferDecrementSizeKB size until memory allocation is
        successful or buffer size falls below HostTraceBufferMinSizeKB. If the
        memory allocation is successful, then the buffer will be registered
        with the firmware. Else, if the buffer size falls below the
        HostTraceBufferMinSizeKB, then driver won't register trace buffer with
        HBA firmware.
    
      - If HostTraceBufferMaxSizeKB is zero, then driver won't register trace
        buffer with HBA firmware.
    
    Link: https://lore.kernel.org/r/1568379890-18347-2-git-send-email-sreekanth.reddy@broadcom.comSigned-off-by: default avatarSreekanth Reddy <sreekanth.reddy@broadcom.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    d04a6edf
mpt3sas_scsih.c 320 KB