linux/drivers/scsi/aacraid
Raghava Aditya Renukunta 3f4ce057d5 aacraid: Fix RRQ overload
The driver utilizes an array of atomic variables to keep track of IO
submissions to each vector. To submit an IO multiple threads iterate
through the array to find a vector which has empty slots to send an
IO. The reading and updating of the variable is not atomic, causing race
conditions when a thread uses a full vector to submit an IO.

Fixed by mapping each FIB to a vector, the submission path then uses
said vector to submit IO thereby removing the possibly of a race
condition.The vector assignment is started from 1 since vector 0 is
reserved for the use of AIF management FIBS.If the number of MSIx
vectors is 1 (MSI or INTx mode) then all the fibs are allocated to
vector 0.

Fixes: 495c0217 "aacraid: MSI-x support"
Cc: stable@vger.kernel.org # v4.1

Signed-off-by: Raghava Aditya Renukunta <raghavaaditya.renukunta@pmcs.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: Tomas Henzl <thenzl@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2016-02-23 21:27:02 -05:00
..
aachba.c aacraid: SCSI blk tag support 2016-02-23 21:27:02 -05:00
aacraid.h aacraid: Fix RRQ overload 2016-02-23 21:27:02 -05:00
commctrl.c aacraid: IOCTL pass-through command fix 2015-04-09 16:44:49 -07:00
comminit.c aacraid: Use pci_enable_msix_range() 2015-11-09 16:12:13 -08:00
commsup.c aacraid: Fix RRQ overload 2016-02-23 21:27:02 -05:00
dpcsup.c aacraid: SCSI blk tag support 2016-02-23 21:27:02 -05:00
linit.c aacraid: SCSI blk tag support 2016-02-23 21:27:02 -05:00
Makefile [SCSI] aacraid: Add new code for PMC-Sierra's SRC based controller family 2011-03-23 11:36:58 -05:00
nark.c [SCSI] aacraid: Use resource_size_t for IO mem pointers and offsets 2012-07-20 08:58:43 +01:00
rkt.c [SCSI] aacraid: Use resource_size_t for IO mem pointers and offsets 2012-07-20 08:58:43 +01:00
rx.c aacraid: Add Power Management support 2015-11-09 15:59:18 -08:00
sa.c aacraid: Add Power Management support 2015-11-09 15:59:18 -08:00
src.c aacraid: Fix RRQ overload 2016-02-23 21:27:02 -05:00
TODO