Reviewed-by: Raghava Aditya Renukunta <RaghavaAaditya.Renukunta@xxxxxxxxxxxxx> > -----Original Message----- > From: Hannes Reinecke [mailto:hare@xxxxxxx] > Sent: Wednesday, May 18, 2016 1:17 AM > To: Martin K. Petersen > Cc: James Bottomley; Christoph Hellwig; linux-scsi@xxxxxxxxxxxxxxx; > Johannes Thumshirn; Raghava Aditya Renukunta; Hannes Reinecke; Hannes > Reinecke > Subject: [PATCH] aacraid: do not activate events on non-SRC adapters > > EXTERNAL EMAIL > > > Only SRC-based adapters support the AifReqEvent function, so > there is no point in trying to activate it on older, non-SRC > based adapters. > Doing so lead to crashes on older adapters. > > Reviewed-by: Johannes Thumshirn <jthumshirn@xxxxxxxx> > Signed-off-by: Hannes Reinecke <hare@xxxxxxxx> > --- > drivers/scsi/aacraid/aacraid.h | 5 +++++ > drivers/scsi/aacraid/linit.c | 11 ++++++----- > 2 files changed, 11 insertions(+), 5 deletions(-) > > diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h > index 8f90d9e..969c312 100644 > --- a/drivers/scsi/aacraid/aacraid.h > +++ b/drivers/scsi/aacraid/aacraid.h > @@ -621,6 +621,11 @@ struct aac_driver_ident > #define AAC_QUIRK_SCSI_32 0x0020 > > /* > + * SRC based adapters support the AifReqEvent functions > + */ > +#define AAC_QUIRK_SRC 0x0040 > + > +/* > * The adapter interface specs all queues to be located in the same > * physically contiguous block. The host structure that defines the > * commuication queues will assume they are each a separate physically > diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c > index a943bd2..79871f3 100644 > --- a/drivers/scsi/aacraid/linit.c > +++ b/drivers/scsi/aacraid/linit.c > @@ -236,10 +236,10 @@ static struct aac_driver_ident aac_drivers[] = { > { aac_rx_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec Catch > All */ > { aac_rkt_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec > Rocket Catch All */ > { aac_nark_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec > NEMER/ARK Catch All */ > - { aac_src_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec PMC > Series 6 (Tupelo) */ > - { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec PMC > Series 7 (Denali) */ > - { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2 }, /* Adaptec PMC > Series 8 */ > - { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2 } /* Adaptec PMC > Series 9 */ > + { aac_src_init, "aacraid", "ADAPTEC ", "RAID ", 2, AAC_QUIRK_SRC > }, /* Adaptec PMC Series 6 (Tupelo) */ > + { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2, AAC_QUIRK_SRC > }, /* Adaptec PMC Series 7 (Denali) */ > + { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2, AAC_QUIRK_SRC > }, /* Adaptec PMC Series 8 */ > + { aac_srcv_init, "aacraid", "ADAPTEC ", "RAID ", 2, AAC_QUIRK_SRC > } /* Adaptec PMC Series 9 */ > }; > > /** > @@ -1299,7 +1299,8 @@ static int aac_probe_one(struct pci_dev *pdev, > const struct pci_device_id *id) > else > shost->this_id = shost->max_id; > > - aac_intr_normal(aac, 0, 2, 0, NULL); > + if (aac_drivers[index].quirks & AAC_QUIRK_SRC) > + aac_intr_normal(aac, 0, 2, 0, NULL); > > /* > * dmb - we may need to move the setting of these parms somewhere > else once > -- > 1.8.5.6 -- 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