From: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
To: jejb@linux.vnet.ibm.com, martin.petersen@oracle.com,
linux-scsi@vger.kernel.org
Cc: Scott.Benesh@microsemi.com, tom.white@microsemi.com,
aacraid@microsemi.com,
"Guilherme G . Piccoli" <gpiccoli@linux.vnet.ibm.com>,
Bart Van Assche <Bart.VanAssche@wdc.com>
Subject: [PATCH 2/3] scsi: aacraid: Preserve MSIX mode in the OMR register
Date: Fri, 19 Jan 2018 17:01:56 -0800 [thread overview]
Message-ID: <20180120010157.22674-3-RaghavaAditya.Renukunta@microsemi.com> (raw)
In-Reply-To: <20180120010157.22674-1-RaghavaAditya.Renukunta@microsemi.com>
Preserve the current MSIX mode value in the OMR before
rewriting the OMR to initiate the IOP or Soft Reset.
Signed-off-by: Prasad B Munirathnam <prasad.munirathnam@microsemi.com>
Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com>
---
drivers/scsi/aacraid/src.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/drivers/scsi/aacraid/src.c b/drivers/scsi/aacraid/src.c
index df98f37..b05c3cf 100644
--- a/drivers/scsi/aacraid/src.c
+++ b/drivers/scsi/aacraid/src.c
@@ -680,6 +680,25 @@ void aac_set_intx_mode(struct aac_dev *dev)
}
}
+static void aac_clear_omr(struct aac_dev *dev)
+{
+ u32 omr_value = 0;
+
+ omr_value = src_readl(dev, MUnit.OMR);
+
+ /*
+ * Check for PCI Errors or Kernel Panic
+ */
+ if ((omr_value == INVALID_OMR) || (omr_value & KERNEL_PANIC))
+ omr_value = 0;
+
+ /*
+ * Preserve MSIX Value if any
+ */
+ src_writel(dev, MUnit.OMR, omr_value & AAC_INT_MODE_MSIX);
+ src_readl(dev, MUnit.OMR);
+}
+
static void aac_dump_fw_fib_iop_reset(struct aac_dev *dev)
{
__le32 supported_options3;
@@ -740,6 +759,8 @@ static void aac_send_iop_reset(struct aac_dev *dev)
aac_set_intx_mode(dev);
+ aac_clear_omr(dev);
+
src_writel(dev, MUnit.IDR, IOP_SRC_RESET_MASK);
msleep(5000);
@@ -749,6 +770,7 @@ static void aac_send_hardware_soft_reset(struct aac_dev *dev)
{
u_int32_t val;
+ aac_clear_omr(dev);
val = readl(((char *)(dev->base) + IBW_SWR_OFFSET));
val |= 0x01;
writel(val, ((char *)(dev->base) + IBW_SWR_OFFSET));
--
2.9.4
next prev parent reply other threads:[~2018-01-20 1:02 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-20 1:01 [PATCH 0/3] scsi: aacraid: Multi controller Kdump IOP reset handling Raghava Aditya Renukunta
2018-01-20 1:01 ` [PATCH 1/3] scsi: aacraid: Implement DropIO sync command Raghava Aditya Renukunta
2018-01-29 16:34 ` Dave Carroll
2018-01-20 1:01 ` Raghava Aditya Renukunta [this message]
2018-01-29 16:35 ` [PATCH 2/3] scsi: aacraid: Preserve MSIX mode in the OMR register Dave Carroll
2018-01-20 1:01 ` [PATCH 3/3] scsi: aacraid: Auto detect INTx or MSIx mode during sync cmd processing Raghava Aditya Renukunta
2018-01-29 16:39 ` Dave Carroll
2018-02-07 0:21 ` [PATCH 0/3] scsi: aacraid: Multi controller Kdump IOP reset handling Martin K. Petersen
2018-02-07 15:52 ` Raghava Aditya Renukunta
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=20180120010157.22674-3-RaghavaAditya.Renukunta@microsemi.com \
--to=raghavaaditya.renukunta@microsemi.com \
--cc=Bart.VanAssche@wdc.com \
--cc=Scott.Benesh@microsemi.com \
--cc=aacraid@microsemi.com \
--cc=gpiccoli@linux.vnet.ibm.com \
--cc=jejb@linux.vnet.ibm.com \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=tom.white@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.