All of lore.kernel.org
 help / color / mirror / Atom feed
From: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
To: JBottomley@odin.com, linux-scsi@vger.kernel.org,
	martin.petersen@oracle.com
Cc: aacraid@pmc-sierra.com, gana.sridaran@microsemi.com,
	scott.benesh@microsemi.com, vishal.josemannanal@microsemi.com,
	RaghavaAditya.Renukunta@microsemi.com
Subject: [PATCH 07/10] aacraid: Log firmware AIF messages
Date: Mon, 25 Apr 2016 23:32:09 -0700	[thread overview]
Message-ID: <20160426063209.28402.28263.stgit@pmcuser-System-Product-Name> (raw)
In-Reply-To: <20160426062414.28402.69178.stgit@pmcuser-System-Product-Name>

Firmware AIF messages about cache loss and data recovery are being missed
by the driver since currently they are not captured but rather let go.
This patch to capture those messages and log them for the user.

Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
---
 drivers/scsi/aacraid/aacraid.h |    4 ++++
 drivers/scsi/aacraid/commsup.c |   27 +++++++++++++++++++++++++++
 drivers/scsi/aacraid/linit.c   |    2 ++
 drivers/scsi/aacraid/src.c     |    3 ++-
 4 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index 1936e08..b70f3eb 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -2065,6 +2065,10 @@ extern struct aac_common aac_config;
 #define			AifEnAddJBOD		30	/* JBOD created */
 #define			AifEnDeleteJBOD		31	/* JBOD deleted */
 
+#define			AifBuManagerEvent		42 /* Bu management*/
+#define			AifBuCacheDataLoss		10
+#define			AifBuCacheDataRecover	11
+
 #define		AifCmdJobProgress	2	/* Progress report */
 #define			AifJobCtrZero	101	/* Array Zero progress */
 #define			AifJobStsSuccess 1	/* Job completes */
diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c
index bb7988d..0aeecec 100644
--- a/drivers/scsi/aacraid/commsup.c
+++ b/drivers/scsi/aacraid/commsup.c
@@ -901,6 +901,31 @@ void aac_printf(struct aac_dev *dev, u32 val)
 	memset(cp, 0, 256);
 }
 
+static inline int aac_aif_data(struct aac_aifcmd *aifcmd, uint32_t index)
+{
+	return le32_to_cpu(((__le32 *)aifcmd->data)[index]);
+}
+
+
+static void aac_handle_aif_bu(struct aac_dev *dev, struct aac_aifcmd *aifcmd)
+{
+	switch (aac_aif_data(aifcmd, 1)) {
+	case AifBuCacheDataLoss:
+		if (aac_aif_data(aifcmd, 2))
+			dev_info(&dev->pdev->dev, "Backup unit had cache data loss - [%d]\n",
+			aac_aif_data(aifcmd, 2));
+		else
+			dev_info(&dev->pdev->dev, "Backup Unit had cache data loss\n");
+		break;
+	case AifBuCacheDataRecover:
+		if (aac_aif_data(aifcmd, 2))
+			dev_info(&dev->pdev->dev, "DDR cache data recovered successfully - [%d]\n",
+			aac_aif_data(aifcmd, 2));
+		else
+			dev_info(&dev->pdev->dev, "DDR cache data recovered successfully\n");
+		break;
+	}
+}
 
 /**
  *	aac_handle_aif		-	Handle a message from the firmware
@@ -1154,6 +1179,8 @@ static void aac_handle_aif(struct aac_dev * dev, struct fib * fibptr)
 				  ADD : DELETE;
 				break;
 			}
+			case AifBuManagerEvent:
+				aac_handle_aif_bu(dev, aifcmd);
 			break;
 		}
 
diff --git a/drivers/scsi/aacraid/linit.c b/drivers/scsi/aacraid/linit.c
index 79a1cec..a943bd2 100644
--- a/drivers/scsi/aacraid/linit.c
+++ b/drivers/scsi/aacraid/linit.c
@@ -1299,6 +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);
+
 	/*
 	 * dmb - we may need to move the setting of these parms somewhere else once
 	 * we get a fib that can report the actual numbers
diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
index bc0203f..28f8b8a 100644
--- a/drivers/scsi/aacraid/src.c
+++ b/drivers/scsi/aacraid/src.c
@@ -135,7 +135,8 @@ static irqreturn_t aac_src_intr_message(int irq, void *dev_id)
 
 	if (mode & AAC_INT_MODE_AIF) {
 		/* handle AIF */
-		aac_intr_normal(dev, 0, 2, 0, NULL);
+		if (dev->aif_thread && dev->fsa_dev)
+			aac_intr_normal(dev, 0, 2, 0, NULL);
 		if (dev->msi_enabled)
 			aac_src_access_devreg(dev, AAC_CLEAR_AIF_BIT);
 		mode = 0;


  parent reply	other threads:[~2016-04-26  6:36 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-26  6:30 [PATCH 00/10] aacraid: Patchset for aacraid driver version 41066 Raghava Aditya Renukunta
2016-04-26  6:30 ` [PATCH 01/10] aacraid: Removed unnecessary checks for NULL Raghava Aditya Renukunta
2016-04-26  6:31 ` [PATCH 02/10] aacraid: Fix incorrectly named MACRO Raghava Aditya Renukunta
2016-04-27  9:14   ` Johannes Thumshirn
2016-04-26  6:31 ` [PATCH 03/10] aacraid: Start adapter after updating number of MSIX vectors Raghava Aditya Renukunta
2016-04-27  9:14   ` Johannes Thumshirn
2016-04-26  6:31 ` [PATCH 04/10] aacraid: Relinquish CPU during timeout wait Raghava Aditya Renukunta
2016-04-27  9:31   ` Johannes Thumshirn
2016-04-26  6:31 ` [PATCH 05/10] aacraid: Disable MSI mode for series 6, 7, 8 cards Raghava Aditya Renukunta
2016-04-27  9:16   ` Johannes Thumshirn
2016-04-26  6:31 ` [PATCH 06/10] aacraid: Fix for aac_command_thread hang Raghava Aditya Renukunta
2016-04-27  9:32   ` Johannes Thumshirn
2016-04-26  6:32 ` Raghava Aditya Renukunta [this message]
2016-04-27  9:21   ` [PATCH 07/10] aacraid: Log firmware AIF messages Johannes Thumshirn
2016-04-26  6:32 ` [PATCH 08/10] aacraid: Remove code to needlessly complete fib Raghava Aditya Renukunta
2016-04-27  9:24   ` Johannes Thumshirn
2016-04-27 16:34     ` Raghava Aditya Renukunta
2016-04-28  7:47       ` Johannes Thumshirn
2016-04-26  6:32 ` [PATCH 09/10] aacraid: Fix for KDUMP driver hang Raghava Aditya Renukunta
2016-04-27  9:29   ` Johannes Thumshirn
2016-04-27 16:49     ` Raghava Aditya Renukunta
2016-04-28  7:49       ` Johannes Thumshirn
2016-04-26  6:32 ` [PATCH 10/10] aacraid: Update driver version Raghava Aditya Renukunta
2016-04-27  9:30   ` Johannes Thumshirn
2016-04-29 23:15 ` [PATCH 00/10] aacraid: Patchset for aacraid driver version 41066 Martin K. Petersen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160426063209.28402.28263.stgit@pmcuser-System-Product-Name \
    --to=raghavaaditya.renukunta@microsemi.com \
    --cc=JBottomley@odin.com \
    --cc=aacraid@pmc-sierra.com \
    --cc=gana.sridaran@microsemi.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=scott.benesh@microsemi.com \
    --cc=vishal.josemannanal@microsemi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.