Thread (15 messages) 15 messages, 4 authors, 2021-03-25

Re: [PATCH v2 1/7] pm80xx: Add sysfs attribute to check mpi state

From: Jinpu Wang <jinpu.wang@ionos.com>
Date: 2021-03-25 04:56:36

On Wed, Mar 24, 2021 at 5:54 PM Viswas G [off-list ref] wrote:
From: Vishakha Channapattan <redacted>

A new sysfs variable 'ctl_mpi_state' is being introduced to
check the state of mpi.

Tested: Using 'ctl_mpi_state' sysfs variable we check the mpi state
mvae14:~# cat /sys/class/scsi_host/host*/ctl_mpi_state
MPI-S=MPI is successfully initialized   HMI_ERR=0
MPI-S=MPI is successfully initialized   HMI_ERR=0

Signed-off-by: Vishakha Channapattan <redacted>
Signed-off-by: Viswas G <redacted>
Signed-off-by: Ruksar Devadi <redacted>
Signed-off-by: Ashokkumar N <redacted>
Signed-off-by: Radha Ramachandran <redacted>
quoted hunk ↗ jump to hunk
---
 drivers/scsi/pm8001/pm8001_ctl.c | 35 ++++++++++++++++++++++++++++++++++-
 1 file changed, 34 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/pm8001/pm8001_ctl.c b/drivers/scsi/pm8001/pm8001_ctl.c
index 12035baf0997..ce4846b1377c 100644
--- a/drivers/scsi/pm8001/pm8001_ctl.c
+++ b/drivers/scsi/pm8001/pm8001_ctl.c
@@ -41,6 +41,7 @@
 #include <linux/slab.h>
 #include "pm8001_sas.h"
 #include "pm8001_ctl.h"
+#include "pm8001_chips.h"

 /* scsi host attributes */
@@ -883,9 +884,40 @@ static ssize_t pm8001_show_update_fw(struct device *cdev,
                        flash_error_table[i].err_code,
                        flash_error_table[i].reason);
 }
-
 static DEVICE_ATTR(update_fw, S_IRUGO|S_IWUSR|S_IWGRP,
        pm8001_show_update_fw, pm8001_store_update_fw);
+
+/**
+ * ctl_mpi_state_show - controller MPI state check
+ * @cdev: pointer to embedded class device
+ * @buf: the buffer returned
+ *
+ * A sysfs 'read-only' shost attribute.
+ */
+
+char mpiStateText[][80] = {
+       "MPI is not initialized",
+       "MPI is successfully initialized",
+       "MPI termination is in progress",
+       "MPI initialization failed with error in [31:16]"
+};
As reported by buildbot, mpiStateText should be static.
other than this it looks fine.
I see buildbot already sent a RFC fix for it.
Martin, do you prefer to have v3 for this one, or you can merge this
and the RFC fix from buildbot altogether?
Both are fine from my side.

Thanks!
quoted hunk ↗ jump to hunk
+
+static ssize_t ctl_mpi_state_show(struct device *cdev,
+               struct device_attribute *attr, char *buf)
+{
+       struct Scsi_Host *shost = class_to_shost(cdev);
+       struct sas_ha_struct *sha = SHOST_TO_SAS_HA(shost);
+       struct pm8001_hba_info *pm8001_ha = sha->lldd_ha;
+       unsigned int mpidw0;
+       int c;
+
+       mpidw0 = pm8001_mr32(pm8001_ha->general_stat_tbl_addr, 0);
+       c = sysfs_emit(buf, "MPI-S=%s\t HMI_ERR=%x\n", mpiStateText[mpidw0 & 0x0003],
+                       ((mpidw0 & 0xff00) >> 16));
+       return c;
+}
+static DEVICE_ATTR_RO(ctl_mpi_state);
+
 struct device_attribute *pm8001_host_attrs[] = {
        &dev_attr_interface_rev,
        &dev_attr_controller_fatal_error,
@@ -909,6 +941,7 @@ struct device_attribute *pm8001_host_attrs[] = {
        &dev_attr_ob_log,
        &dev_attr_ila_version,
        &dev_attr_inc_fw_ver,
+       &dev_attr_ctl_mpi_state,
        NULL,
 };

--
2.16.3
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help