Message ID | 20210324170357.9765-1-Viswas.G@microchip.com |
---|---|
Headers | show |
Series | pm80xx updates | expand |
On Wed, Mar 24, 2021 at 5:54 PM Viswas G <Viswas.G@microchip.com> wrote: > > From: Vishakha Channapattan <vishakhavc@google.com> > > A new sysfs variable 'ctl_raae_count' is being introduced that tells if > the controller is alive by indicating controller ticks. If on subsequent > run we see the ticks changing in RAAE count that indicates that > controller is not dead. > > Tested: Using 'ctl_raae_count' sysfs variable we can see ticks > incrementing > mvae14:~# cat /sys/class/scsi_host/host*/ctl_raae_count > 0x00002245 > 0x00002253 > 0x0000225e > > Signed-off-by: Vishakha Channapattan <vishakhavc@google.com> > Signed-off-by: Viswas G <Viswas.G@microchip.com> > Signed-off-by: Ruksar Devadi <Ruksar.devadi@microchip.com> > Signed-off-by: Ashokkumar N <Ashokkumar.N@microchip.com> > Signed-off-by: Radha Ramachandran <radha@google.com> Acked-by: Jack Wang <jinpu.wang@ionos.com> > --- > drivers/scsi/pm8001/pm8001_ctl.c | 24 ++++++++++++++++++++++++ > 1 file changed, 24 insertions(+) > > diff --git a/drivers/scsi/pm8001/pm8001_ctl.c b/drivers/scsi/pm8001/pm8001_ctl.c > index ce4846b1377c..98e5b47b9bb7 100644 > --- a/drivers/scsi/pm8001/pm8001_ctl.c > +++ b/drivers/scsi/pm8001/pm8001_ctl.c > @@ -918,6 +918,29 @@ static ssize_t ctl_mpi_state_show(struct device *cdev, > } > static DEVICE_ATTR_RO(ctl_mpi_state); > > +/** > + * ctl_raae_count_show - controller raae count check > + * @cdev: pointer to embedded class device > + * @buf: the buffer returned > + * > + * A sysfs 'read-only' shost attribute. > + */ > + > +static ssize_t ctl_raae_count_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 raaecnt; > + int c; > + > + raaecnt = pm8001_mr32(pm8001_ha->general_stat_tbl_addr, 12); > + c = sysfs_emit(buf, "0x%08x\n", raaecnt); > + return c; > +} > +static DEVICE_ATTR_RO(ctl_raae_count); > + > struct device_attribute *pm8001_host_attrs[] = { > &dev_attr_interface_rev, > &dev_attr_controller_fatal_error, > @@ -942,6 +965,7 @@ struct device_attribute *pm8001_host_attrs[] = { > &dev_attr_ila_version, > &dev_attr_inc_fw_ver, > &dev_attr_ctl_mpi_state, > + &dev_attr_ctl_raae_count, > NULL, > }; > > -- > 2.16.3 >
On Wed, Mar 24, 2021 at 5:54 PM Viswas G <Viswas.G@microchip.com> wrote: > > From: Vishakha Channapattan <vishakhavc@google.com> > > 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@google.com> > Signed-off-by: Viswas G <Viswas.G@microchip.com> > Signed-off-by: Ruksar Devadi <Ruksar.devadi@microchip.com> > Signed-off-by: Ashokkumar N <Ashokkumar.N@microchip.com> > Signed-off-by: Radha Ramachandran <radha@google.com> > --- > 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 >