• Matthew R. Ochs's avatar
    scsi: cxlflash: Avoid clobbering context control register value · 465891fe
    Matthew R. Ochs authored
    The SISLite specification originally defined the context control register with
    a single field of bits to represent the LISN and also stipulated that the
    register reset value be 0. The cxlflash driver took advantage of this when
    programming the LISN for the master contexts via an unconditional write - no
    other bits were preserved.
    
    When unmap support was added, SISLite was updated to define bit 0 of the
    context control register as a way for the AFU to notify the context owner that
    unmap operations were supported. Thus the assumptions under which the register
    is setup changed and the existing unconditional write is clobbering the unmap
    state for master contexts. This is presently not an issue due to the order in
    which the context control register is programmed in relation to the unmap bit
    being queried but should be addressed to avoid a future regression in the
    event this code is moved elsewhere.
    
    To remedy this issue, preserve the bits when programming the LISN field in the
    context control register. Since the LISN will now be programmed using a read
    value, assert that the initial state of the LISN field is as described in
    SISLite (0).
    Signed-off-by: default avatarMatthew R. Ochs <mrochs@linux.vnet.ibm.com>
    Signed-off-by: default avatarUma Krishnan <ukrishn@linux.vnet.ibm.com>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    465891fe
sislite.h 18.7 KB