On Wed, Mar 24, 2021 at 5:54 PM Viswas G <Viswas.G@xxxxxxxxxxxxx> wrote: > > From: Vishakha Channapattan <vishakhavc@xxxxxxxxxx> > > 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 <vishakhavc@xxxxxxxxxx> > Signed-off-by: Viswas G <Viswas.G@xxxxxxxxxxxxx> > Signed-off-by: Ruksar Devadi <Ruksar.devadi@xxxxxxxxxxxxx> > Signed-off-by: Ashokkumar N <Ashokkumar.N@xxxxxxxxxxxxx> > Signed-off-by: Radha Ramachandran <radha@xxxxxxxxxx> > --- > 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! > + > +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 >