2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2025-01-12 15:44:01 +08:00
linux-next/drivers/scsi/cxlflash
Uma Krishnan 11f7b1844a scsi: cxlflash: Avoid command room violation
During test, a command room violation interrupt is occasionally seen
for the master context when the CXL flash devices are stressed.

After studying the code, there could be gaps in the way command room
value is being cached in cxlflash. When the cached command room is zero
the thread attempting to send becomes burdened with updating the cached
value with the actual value from the AFU. Today, this is handled with an
atomic set operation of the raw value read. Following the atomic update,
the thread proceeds to send.

This behavior is incorrect on two counts:

   - The update fails to take into account the current thread and its
     consumption of one of the hardware commands.

   - The update does not take into account other threads also atomically
     updating. Per design, a worker thread updates the cached value when a
     send thread times out. By not protecting the update with a lock, the
     cached value can be incorrectly clobbered.

To correct these issues, the update of the cached command room has been
simplified and also protected using a spin lock which is held until the
MMIO is complete. This ensures the command room is properly consumed by
the same thread. Update of cached value also takes into account the
current thread consuming a hardware command.

Signed-off-by: Uma Krishnan <ukrishn@linux.vnet.ibm.com>
Acked-by: Matthew R. Ochs <mrochs@linux.vnet.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2016-11-30 11:34:01 -05:00
..
common.h scsi: cxlflash: Avoid command room violation 2016-11-30 11:34:01 -05:00
Kconfig
lunmgt.c scsi: cxlflash: Fix crash in cxlflash_restore_luntable() 2016-11-30 11:34:00 -05:00
main.c scsi: cxlflash: Avoid command room violation 2016-11-30 11:34:01 -05:00
main.h powerpc updates for 4.8 # 1 2016-07-30 21:01:36 -07:00
Makefile cxlflash: Virtual LUN support 2015-08-26 18:05:39 -07:00
sislite.h cxlflash: Shutdown notify support for CXL Flash cards 2016-07-12 23:16:31 -04:00
superpipe.c scsi: cxlflash: Fix context reference tracking on detach 2016-09-14 12:47:42 -04:00
superpipe.h scsi: cxlflash: Remove adapter file descriptor cache 2016-08-23 22:23:52 -04:00
vlun.c scsi: cxlflash: Transition to application close model 2016-08-23 22:23:41 -04:00
vlun.h cxlflash: Virtual LUN support 2015-08-26 18:05:39 -07:00