• Uma Krishnan's avatar
    scsi: cxlflash: Reset hardware queue context via specified register · a96851d3
    Uma Krishnan authored
    Per the SISLite specification, context_reset() writes 0x1 to the LSB of the
    reset register. When the AFU processes this reset request, it is expected
    to clear the bit after reset is complete. The current implementation simply
    checks that the entire value read back is not 1, instead of masking off the
    LSB and evaluating it for a change to 0. Should the AFU manipulate other
    bits during the reset (reading back a value of 0xF for example), successful
    completion will be prematurely indicated given the existing logic.
    
    Additionally, in the event that the context reset operation fails, there
    does not currently exist a way to provide feedback to the initiator of the
    reset. This poses a problem for the rare case that a context reset fails as
    the caller will proceed on the assumption that all is well.
    
    To remedy these issues, refactor the context reset routine to only mask off
    the LSB when evaluating for success and return status to the caller. Also
    update the context reset handler parameters to pass a hardware queue
    reference instead of a single command to better reflect that the entire
    queue associated with the context is impacted by the reset.
    Signed-off-by: default avatarUma Krishnan <ukrishn@linux.vnet.ibm.com>
    Acked-by: default avatarMatthew R. Ochs <mrochs@linux.vnet.ibm.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    a96851d3
common.h 8.25 KB