> -----Original Message----- > From: Hannes Reinecke [mailto:hare@xxxxxxx] > Sent: Thursday, October 27, 2016 4:03 AM > To: Don Brace; jejb@xxxxxxxxxxxxxxxxxx; John Hall; Kevin Barnett; Mahesh > Rajashekhara; hch@xxxxxxxxxxxxx; Scott Teel; Viswas G; Justin Lindley; Scott > Benesh; elliott@xxxxxxx; POSWALD@xxxxxxxx > Cc: linux-scsi@xxxxxxxxxxxxxxx > Subject: Re: [PATCH 2/4] hpsa: add generate controller NMI on lockup > > EXTERNAL EMAIL > > > On 10/27/2016 12:21 AM, Don Brace wrote: > > Tell the controller to NMI when the controller deadlocks. > > > > Reviewed-by: Scott Benesh <scott.benesh@xxxxxxxxxxxxx> > > Reviewed-by: Scott Teel <scott.teel@xxxxxxxxxxxxx> > > Reviewed-by: Kevin Barnett <kevin.barnett@xxxxxxxxxxxxx> > > Signed-off-by: Don Brace <don.brace@xxxxxxxxxxxxx> > > --- > > drivers/scsi/hpsa.c | 6 ++++++ > > drivers/scsi/hpsa_cmd.h | 1 + > > 2 files changed, 7 insertions(+) > > > > diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c > > index 798fb20..9fb739c 100644 > > --- a/drivers/scsi/hpsa.c > > +++ b/drivers/scsi/hpsa.c > > @@ -8451,6 +8451,12 @@ static void controller_lockup_detected(struct > ctlr_info *h) > > "lockup detected after %d but scratchpad register is zero\n", > > h->heartbeat_sample_interval / HZ); > > lockup_detected = 0xffffffff; > > + } else if (lockup_detected == 0xffff0000) { > > + /* > > + * Ring controller NMI doorbell > > + */ > > + dev_warn(&h->pdev->dev, "Telling controller to do an NMI\n"); > > + writel(DOORBELL_GENERATE_NMI, h->vaddr + SA5_DOORBELL); > > } > > set_lockup_detected_for_all_cpus(h, lockup_detected); > > spin_unlock_irqrestore(&h->lock, flags); > > diff --git a/drivers/scsi/hpsa_cmd.h b/drivers/scsi/hpsa_cmd.h > > index a584cdf..d186f80 100644 > > --- a/drivers/scsi/hpsa_cmd.h > > +++ b/drivers/scsi/hpsa_cmd.h > > @@ -142,6 +142,7 @@ > > #define DOORBELL_CTLR_RESET 0x00000004l > > #define DOORBELL_CTLR_RESET2 0x00000020l > > #define DOORBELL_CLEAR_EVENTS 0x00000040l > > +#define DOORBELL_GENERATE_NMI 0x00000080l > > > > #define CFGTBL_Trans_Simple 0x00000002l > > #define CFGTBL_Trans_Performant 0x00000004l > > > Care to elaborate a bit more here? > 'Generating NMI' tends to ring some alarm bells, so I'd rather know > where the NMI is actually generated, and if is could reflect back to the > system ... > > Cheers, > > Hannes > -- > Dr. Hannes Reinecke Teamlead Storage & Networking > hare@xxxxxxx +49 911 74053 688 > SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg > GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton > HRB 21284 (AG Nürnberg) There are some rare cases where we get this lockup code and we need to tell the controller to do its own NMI. This NMI is only done on the controller and does not tell the OS to perform an NMI. Thanks, Don Brace ESC - Smart Storage Microsemi Corporation ��.n��������+%������w��{.n�����{������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f