On Thu, Jan 14, 2016 at 11:16:18PM -0800, Raghava Aditya Renukunta wrote: > From: Raghava Aditya Renukunta <raghavaaditya.renukunta@xxxxxxxx> > > During EEH recovery number of online CPU's might change thereby changing > the number of MSIx vectors. Since each fib is allocated to a vector, > changes in the number of vectors causes fib to be sent thru invalid > vectors.In addition the correct number of MSIx vectors is not > updated in the INIT struct sent to the controller, when it is > reinitialized. > > Fixed by reassigning vectors to fibs based on the updated number of MSIx > vectors and updating the INIT structure before sending to controller. > > Changes in V2: > Replaced fib vector allocation code with aac_fib_vector_assign > > Changes in V3: > None > > Fixes: MSI-X vector calculation for suspend/resume > Cc: stable@xxxxxxxxxxxxxxx > > Signed-off-by: Raghava Aditya Renukunta <raghavaaditya.renukunta@xxxxxxxx> > Reviewed-by: Shane Seymour <shane.seymour@xxxxxxx> > --- > drivers/scsi/aacraid/linit.c | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c > index 08c6835..6d79181 100644 > --- a/drivers/scsi/aacraid/linit.c > +++ b/drivers/scsi/aacraid/linit.c > @@ -1410,8 +1410,18 @@ static int aac_acquire_resources(struct aac_dev *dev) > > aac_adapter_enable_int(dev); > > - if (!dev->sync_mode) > + /*max msix may change after EEH > + * Re-assign vectors to fibs > + */ > + aac_fib_vector_assign(dev); > + > + if (!dev->sync_mode) { > + /* After EEH recovery or suspend resume, max_msix count > + * may change, therfore updating in init as well. > + */ > aac_adapter_start(dev); > + dev->init->Sa_MSIXVectors = cpu_to_le32(dev->max_msix); > + } > return 0; > > error_iounmap: > -- > 1.9.1 > Looks good, Reviewed-by: Johannes Thumshirn <jthushirn@xxxxxxx> -- Johannes Thumshirn Storage jthumshirn@xxxxxxx +49 911 74053 689 SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) Key fingerprint = EC38 9CAB C2C4 F25D 8600 D0D0 0393 969D 2D76 0850 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html