mbox series

[v2,0/7] pm80xx updates

Message ID 20210324170357.9765-1-Viswas.G@microchip.com
Headers show
Series pm80xx updates | expand

Message

Viswas G March 24, 2021, 5:03 p.m. UTC
This patch set include some bug fixes and 
enhancementments for pm80xx driver.

Chnges from v2:
	- for sysfs attribute patches
		Used sysfs_emit instead of sprintf for sysfs attribute patches.
		Removed debug message for sysfs attribute patches.
	- For "Reset PI and CI memory during re-initialize" patch
		Improved commit message.


Ruksar Devadi (1):
  pm80xx: Completing pending IO after fatal error

Vishakha Channapattan (4):
  pm80xx: Add sysfs attribute to check mpi state
  pm80xx: Add sysfs attribute to track RAAE count
  pm80xx: Add sysfs attribute to track iop0 count
  pm80xx: Add sysfs attribute to track iop1 count

Viswas G (2):
  pm80xx: Reset PI and CI memory during re-initialize
  pm80xx: remove global lock from outbound queue processing

 drivers/scsi/pm8001/pm8001_ctl.c  | 107 +++++++++++++++++++++++++++++++++++++-
 drivers/scsi/pm8001/pm8001_hwi.c  |  68 +++++++++++++++++++++---
 drivers/scsi/pm8001/pm8001_hwi.h  |   1 +
 drivers/scsi/pm8001/pm8001_init.c |   9 ++--
 drivers/scsi/pm8001/pm8001_sas.c  |   2 +-
 drivers/scsi/pm8001/pm8001_sas.h  |   2 +
 drivers/scsi/pm8001/pm80xx_hwi.c  |   7 ++-
 drivers/scsi/pm8001/pm80xx_hwi.h  |   1 +
 8 files changed, 184 insertions(+), 13 deletions(-)

Comments

Jinpu Wang March 25, 2021, 4:49 a.m. UTC | #1
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

>
Jinpu Wang March 25, 2021, 4:55 a.m. UTC | #2
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

>