From patchwork Wed Mar 24 17:03:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viswas G X-Patchwork-Id: 409223 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1C61CC433DB for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DCEDB61A16 for ; Wed, 24 Mar 2021 16:55:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236688AbhCXQye (ORCPT ); Wed, 24 Mar 2021 12:54:34 -0400 Received: from esa.microchip.iphmx.com ([68.232.153.233]:60429 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236486AbhCXQyU (ORCPT ); Wed, 24 Mar 2021 12:54:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1616604860; x=1648140860; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=/0fT1axZZyTNqm8qFFr4BVhHXN6j9iwOiHsvZ3ZnLMc=; b=WU5sG6gsAWsZBqEioHM3vtjimA2io9y3C9jr1KMXNntRkLVDVb6fbhST OCHK17kmkaK0ZpWY5K8kO5Ujsd0drYWDpQeaL334fuU44Ov5CxlmbjwQX v7EG7U5/l4VfKRp9FDiDp/XrDV/YSELhq5RHCm44YJOdzLT9k/VGRRXYR 7CwBytoGqC+L7QfY/w1MCELDXNlnt9nPcyZJCphNmeyb3ca0bAswsMjJH gEETXQVa8M7j7z37quY4M3vFp1lZcToat2Oq46dd7qzzmPHMpbivUvzJy yJLtsFtw7QAVt4/Fu80ZDe+vqCsV064cMb1jjPjXzHijdIUjS4Jt7QmXu g==; IronPort-SDR: 8oC5ZgXGLLawv08h7ig+03Y4ow61YfLnT6hMMSyvaMMhCbVzv2arQOTLMhMBmU0Z8ypWtKdO7G L+TdbCkmgf8KMxtBI2rd0AtKvwMeoBWyl8WlS8D27rEU1ohlNX5VkiQ80VPPxVBN7718tgDEi6 13bbMik72MWhYlH3JbowEFTbHokJRj8CemlqjeLmCYj6ebg6MDxWVU3Ent8JMQ2DT6B3rUDv9r yMrDNOKKEsujTG3Ziu9h/P5ijluGfO0lTkqNNFnkQlvEVeV/8utX6tq6c+IdYsz05B6iES37z1 rN8= X-IronPort-AV: E=Sophos;i="5.81,275,1610434800"; d="scan'208";a="113992155" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa5.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 24 Mar 2021 09:54:20 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 24 Mar 2021 09:54:19 -0700 Received: from localhost (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 24 Mar 2021 09:54:19 -0700 From: Viswas G To: CC: , , , , , , Ashokkumar N , "John Garry" Subject: [PATCH v2 1/7] pm80xx: Add sysfs attribute to check mpi state Date: Wed, 24 Mar 2021 22:33:51 +0530 Message-ID: <20210324170357.9765-2-Viswas.G@microchip.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20210324170357.9765-1-Viswas.G@microchip.com> References: <20210324170357.9765-1-Viswas.G@microchip.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Vishakha Channapattan 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 Signed-off-by: Viswas G Signed-off-by: Ruksar Devadi Signed-off-by: Ashokkumar N Signed-off-by: Radha Ramachandran --- 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 #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]" +}; + +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, }; From patchwork Wed Mar 24 17:03:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viswas G X-Patchwork-Id: 409222 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CD89C433E1 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2979161A16 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236883AbhCXQye (ORCPT ); Wed, 24 Mar 2021 12:54:34 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:17488 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236509AbhCXQyW (ORCPT ); Wed, 24 Mar 2021 12:54:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1616604862; x=1648140862; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=yAWd8gmP5eMRM29p10AtrxYxyb6TUyucLv05sC/FTi0=; b=1nAhlimff5w58G/cSiE3I4sc/hW5scuo5cxvwJGL5vp3E6Ta08DfIJUS OABVdo5AgkMYD19heoN7gyK24umptAyG29F3sBGx5WihmOUD6FV8sg0Ra qF7SoiD2dzWBV6YJCfsQToJUEk1eq9laa3ygMlAjsIX6KUPsvJ/56ZrvD lVqws+xsCXcKUiUyE5NLoLMr1IVp36yEghn7Ebm030sj3snTAAEIwsX9c AfdRYMmNqW1JmAkBy3xT0c3DW24V4PlEtjqhwsnLpdw7DdXoauF9LJltc tQkD6rFLaw48HTGHjsraJ7EQ63Ie5RAu721MaQZutK4aGhcKW7m5PrN6p w==; IronPort-SDR: APJAmuf71tz6KYpIBI2LiPgqxk9wjfZMkt0D0MI12SJFqMHkQuXFmXJPOOYRbBM4OXUGgfdSKz JTNnGcey7iOUSVU+xJ5z4PafRsuAd6o8nnqehItlasQCaedI92qKKArojLGh7yIAqv2EXdDuyK ZZ2pg0PSQG0IsRn2T4Tten31g/BgsWq/aC9ldmdwVxqjHGfrpfq5c2QRkp2cmDIS/IMbHa2pbr MVV5D8Q2BaTD2RJ1Ca8XqDgOPcuhO24kJwu760FBMEqUPR5JEjKS8mW6lcdlBr1KA5HwNVqTfn 104= X-IronPort-AV: E=Sophos;i="5.81,275,1610434800"; d="scan'208";a="111203603" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 24 Mar 2021 09:54:21 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 24 Mar 2021 09:54:21 -0700 Received: from localhost (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 24 Mar 2021 09:54:21 -0700 From: Viswas G To: CC: , , , , , , Ashokkumar N , "John Garry" Subject: [PATCH v2 2/7] pm80xx: Add sysfs attribute to track RAAE count Date: Wed, 24 Mar 2021 22:33:52 +0530 Message-ID: <20210324170357.9765-3-Viswas.G@microchip.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20210324170357.9765-1-Viswas.G@microchip.com> References: <20210324170357.9765-1-Viswas.G@microchip.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Vishakha Channapattan 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 Signed-off-by: Viswas G Signed-off-by: Ruksar Devadi Signed-off-by: Ashokkumar N Signed-off-by: Radha Ramachandran Acked-by: Jack Wang --- 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, }; From patchwork Wed Mar 24 17:03:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viswas G X-Patchwork-Id: 408567 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3FE95C433E2 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1272161A13 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236570AbhCXQyf (ORCPT ); Wed, 24 Mar 2021 12:54:35 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:61872 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236578AbhCXQyY (ORCPT ); Wed, 24 Mar 2021 12:54:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1616604863; x=1648140863; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=KIgZsViYEE8m6ccMXmjnxqzTF3ZvDWBc9A1ypSjYYTU=; b=LhIWquwCKpIvBPKd9C+I7dnqDFU7noMM0wdNvB1ZCVouJUXDiEPGqIHe 6LjsZnNfyirHsZF1dNrwIiiGwBzArxrune4EYb0MMPebz7S5HwZou/Qj+ wTKRALr0wwyOdGtUCnpAGRAbCcLQOm1cCqNtqIVUpGXOwup+qWcKC/Rd6 ZixvVvk+IhHgeNhbp6rhk05z2jhl88drHcjQOC5Nzx2Lp41u/BirO6Y/b 5BBSyl3tyr4TcFek8CzrNQVzpZqyKkLhByo48aW7G70SI/o8ZseXUv9/w Q3qhAIsdMkdTJXFqmSUCK+YMjwS1UYKP29JS+zgpOBhxd03vYmWTuO3QS A==; IronPort-SDR: vD4wmQumknyafeC67H4JMIWwRSz4KVQzDs4jcD4EFYjiUJdmNgC0n9jKJgAI+sTqu+IOuVF7Bx dJa4bF7a69GRlr1c08JxIUxeB6cOYY3/HEI8KhjThdtb/QQNeXdOcwivG/lic+VXjeDcd7Bmxo OO9okYzIJjz9EHvGsvdebVLafE5gnhEpXMpmBWcpB6VOW5nkx95gb9HKGAiJ1uFcCvc6bZtgA9 63gzCVosdjyFFunFZuxX5sJIHNfAUQdlBZLV8QQGp5DyjhDVWFJZKJzSy8hwOOBp8BruJp87DR WRk= X-IronPort-AV: E=Sophos;i="5.81,275,1610434800"; d="scan'208";a="108400585" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 24 Mar 2021 09:54:23 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 24 Mar 2021 09:54:23 -0700 Received: from localhost (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 24 Mar 2021 09:54:23 -0700 From: Viswas G To: CC: , , , , , , Ashokkumar N , "John Garry" Subject: [PATCH v2 3/7] pm80xx: Add sysfs attribute to track iop0 count Date: Wed, 24 Mar 2021 22:33:53 +0530 Message-ID: <20210324170357.9765-4-Viswas.G@microchip.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20210324170357.9765-1-Viswas.G@microchip.com> References: <20210324170357.9765-1-Viswas.G@microchip.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Vishakha Channapattan A new sysfs variable 'ctl_iop0_count' is being introduced that tells if the controller is alive by indicating controller ticks. If on subsequent run we see the ticks changing that indicates that controller is not dead. Tested: Using 'ctl_iop0_count' sysfs variable we can see ticks incrementing mvae14:~# cat /sys/class/scsi_host/host*/ctl_iop0_count 0x000000a3 0x000001db 0x000001e4 0x000001e7 Signed-off-by: Vishakha Channapattan Signed-off-by: Viswas G Signed-off-by: Ruksar Devadi Signed-off-by: Ashokkumar N Signed-off-by: Radha Ramachandran Acked-by: Jack Wang --- 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 98e5b47b9bb7..b8170da49112 100644 --- a/drivers/scsi/pm8001/pm8001_ctl.c +++ b/drivers/scsi/pm8001/pm8001_ctl.c @@ -941,6 +941,29 @@ static ssize_t ctl_raae_count_show(struct device *cdev, } static DEVICE_ATTR_RO(ctl_raae_count); +/** + * ctl_iop0_count_show - controller iop0 count check + * @cdev: pointer to embedded class device + * @buf: the buffer returned + * + * A sysfs 'read-only' shost attribute. + */ + +static ssize_t ctl_iop0_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 iop0cnt; + int c; + + iop0cnt = pm8001_mr32(pm8001_ha->general_stat_tbl_addr, 16); + c = sysfs_emit(buf, "0x%08x\n", iop0cnt); + return c; +} +static DEVICE_ATTR_RO(ctl_iop0_count); + struct device_attribute *pm8001_host_attrs[] = { &dev_attr_interface_rev, &dev_attr_controller_fatal_error, @@ -966,6 +989,7 @@ struct device_attribute *pm8001_host_attrs[] = { &dev_attr_inc_fw_ver, &dev_attr_ctl_mpi_state, &dev_attr_ctl_raae_count, + &dev_attr_ctl_iop0_count, NULL, }; From patchwork Wed Mar 24 17:03:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viswas G X-Patchwork-Id: 408565 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 69BF1C433E6 for ; Wed, 24 Mar 2021 16:55:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 395A561A15 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236965AbhCXQyg (ORCPT ); Wed, 24 Mar 2021 12:54:36 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:61872 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236579AbhCXQy0 (ORCPT ); Wed, 24 Mar 2021 12:54:26 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1616604865; x=1648140865; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=EIZJyLxnrOGhATJFMqYZ+nDUc/0XvTP2g59cPyDlGsI=; b=NiG8M+rGPROfvJtTPlm7P4f9LSmKhcvQuVe3L4xbgGfAPmJx7PzyinAR jDRgcp7UM38ExphrofCpKVSZEOiaFoN+M9JAnn3bDQAT9OjmSO6ON1mVx uPRbO4ZgXkfcHmWFyk128HZ/iAhTIdTwoV1Sf6R+ppe9xT73w6o/cfqXw ZUCqseqj3o7rUigc7r7VB/R59/ty/Q+0gKgwy5w3MJvWjgFuT7LG1ih+x g68PwO325YyPCBqtruYQAOnz12ECehHO8P9o5ofuhmskVNlyg1HQIoQAi gFrMKvMjdrBtOIjCeQT/U8wUq+Xi9yLsWkjOzEccAZcDwUG+XEnxdMlnj g==; IronPort-SDR: 7Lm73TtHrp7TtE5B0V0/lI02xETElJSPdnMEG6Z6wvASCYRX9ubaoz2TPY5B0DhnWyBlCdBe6n mnUEteqyRS3JggnMXDrGrZF8QeHtelVJQ6IynW4W0BqTVH2TRWE1Lb7ZsrsuNwr/HqzrE4MoV+ 4oS1sdu+bc01uzJg3lYO83VDNUVa5Y9f65pJHISIsJviODjv9q1C0OTzg1uThb4LJp2C2eAhIM FoHYDLR13mOnLMMyiy2kA/JbZ7Ol41wd+gwvlePsDKApvmmPlrIdt2nQi41jd+LFuBJtCaCA6D BHs= X-IronPort-AV: E=Sophos;i="5.81,275,1610434800"; d="scan'208";a="108400588" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 24 Mar 2021 09:54:25 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 24 Mar 2021 09:54:25 -0700 Received: from localhost (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 24 Mar 2021 09:54:25 -0700 From: Viswas G To: CC: , , , , , , Ashokkumar N , "John Garry" Subject: [PATCH v2 4/7] pm80xx: Add sysfs attribute to track iop1 count Date: Wed, 24 Mar 2021 22:33:54 +0530 Message-ID: <20210324170357.9765-5-Viswas.G@microchip.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20210324170357.9765-1-Viswas.G@microchip.com> References: <20210324170357.9765-1-Viswas.G@microchip.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Vishakha Channapattan A new sysfs variable 'ctl_iop1_count' is being introduced that tells if the controller is alive by indicating controller ticks. If on subsequent run we see the ticks changing that indicates that controller is not dead. Tested: Using 'ctl_iop1_count' sysfs variable we can see ticks incrementing mvae14:~# cat /sys/class/scsi_host/host*/ctl_iop1_count 0x00000069 0x0000006b 0x0000006d 0x00000072 Signed-off-by: Vishakha Channapattan Signed-off-by: Viswas G Signed-off-by: Ruksar Devadi Signed-off-by: Ashokkumar N Signed-off-by: Radha Ramachandran Acked-by: Jack Wang --- 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 b8170da49112..78d5f573eac8 100644 --- a/drivers/scsi/pm8001/pm8001_ctl.c +++ b/drivers/scsi/pm8001/pm8001_ctl.c @@ -964,6 +964,29 @@ static ssize_t ctl_iop0_count_show(struct device *cdev, } static DEVICE_ATTR_RO(ctl_iop0_count); +/** + * ctl_iop1_count_show - controller iop1 count check + * @cdev: pointer to embedded class device + * @buf: the buffer returned + * + * A sysfs 'read-only' shost attribute. + */ + +static ssize_t ctl_iop1_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 iop1cnt; + int c; + + iop1cnt = pm8001_mr32(pm8001_ha->general_stat_tbl_addr, 20); + c = sysfs_emit(buf, "0x%08x\n", iop1cnt); + return c; +} +static DEVICE_ATTR_RO(ctl_iop1_count); + struct device_attribute *pm8001_host_attrs[] = { &dev_attr_interface_rev, &dev_attr_controller_fatal_error, @@ -990,6 +1013,7 @@ struct device_attribute *pm8001_host_attrs[] = { &dev_attr_ctl_mpi_state, &dev_attr_ctl_raae_count, &dev_attr_ctl_iop0_count, + &dev_attr_ctl_iop1_count, NULL, }; From patchwork Wed Mar 24 17:03:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viswas G X-Patchwork-Id: 409220 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E09D9C433DB for ; Wed, 24 Mar 2021 16:55:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A877E61A12 for ; Wed, 24 Mar 2021 16:55:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236257AbhCXQzG (ORCPT ); Wed, 24 Mar 2021 12:55:06 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:10914 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236954AbhCXQyg (ORCPT ); Wed, 24 Mar 2021 12:54:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1616604875; x=1648140875; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=W51wzmRePBUy3pERnC7O8SeOyMTaWfk18Dq09z9+xC4=; b=aZlgl/wvvnBTNAfU3Wnt0xZ8sqeU/UY2gFsC+pnkKxxEez7/M2vMk3vn XkukJJJgatSYA4X4dubB14aHnHC74lCpiCKrbgw2tZhqVABNsS2ZxB5o7 9sOBvh9WiRvYmnq3XDvyp8xLJwNjPhGpm3Ato0zpe3nt/QbLoFPP8CLa+ GtD+koCR/yDCpBYH92CEypZmEbzPZqaSqVV29ESritQvri0VD6q2Tk05B 8hmrcKMMceF7SBIq3RwCL8K2r8AsVEk0kYFXKydYsMMK/B2U4+lDMuEq0 m4UBNgceAcUrCH3U3zCpKBl7RLLl7SlSZsxgbIRryy4vF+KooGFFgjkW6 Q==; IronPort-SDR: pFSoB/3rLQsb+eWXPz+GTAQW8RXKe2iRLHJXwgSjANhgSkRnyVDI3H4UBtDTactCywemkupLP2 D9o0gusv/6lVA3ZTMmHcNdefxXvSO/tupRYPxJqIsHNUptY8Bx4WoHN+yAgpalu2Yi5ikUcjCb K6zJ6t/kHDfShXnMU0omeDTF+wAGftb2ebEaF6GuOxyIzJODa6FbFGyFAXrUzCJNFUuGJuqfy2 YKUXv9X1XGzm2EuQ5yL0aHGdugPjKiHOL+ZTl1X7/hxysBwYoZB0558O43h6LsdrA8JH+c3V3i Vnc= X-IronPort-AV: E=Sophos;i="5.81,275,1610434800"; d="scan'208";a="48735362" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 24 Mar 2021 09:54:30 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 24 Mar 2021 09:54:27 -0700 Received: from localhost (10.10.115.15) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 24 Mar 2021 09:54:27 -0700 From: Viswas G To: CC: , , , , , , Ashokkumar N , "John Garry" Subject: [PATCH v2 5/7] pm80xx: Completing pending IO after fatal error Date: Wed, 24 Mar 2021 22:33:55 +0530 Message-ID: <20210324170357.9765-6-Viswas.G@microchip.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20210324170357.9765-1-Viswas.G@microchip.com> References: <20210324170357.9765-1-Viswas.G@microchip.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org From: Ruksar Devadi When controller runs into fatal error, IOs get stuck with no response, handler event is defined to complete the pending IOs (SAS task and internal task) and also perform the cleanup for the drives. Signed-off-by: Ruksar Devadi Signed-off-by: Viswas G Signed-off-by: Ashokkumar N Acked-by: Jack Wang --- drivers/scsi/pm8001/pm8001_hwi.c | 66 ++++++++++++++++++++++++++++++++++++---- drivers/scsi/pm8001/pm8001_hwi.h | 1 + drivers/scsi/pm8001/pm8001_sas.c | 2 +- drivers/scsi/pm8001/pm8001_sas.h | 1 + drivers/scsi/pm8001/pm80xx_hwi.c | 1 + drivers/scsi/pm8001/pm80xx_hwi.h | 1 + 6 files changed, 65 insertions(+), 7 deletions(-) diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c index 49bf2f70a470..4e0ce044ac69 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.c +++ b/drivers/scsi/pm8001/pm8001_hwi.c @@ -1499,12 +1499,14 @@ void pm8001_work_fn(struct work_struct *work) * was cancelled. This nullification happens when the device * goes away. */ - pm8001_dev = pw->data; /* Most stash device structure */ - if ((pm8001_dev == NULL) - || ((pw->handler != IO_XFER_ERROR_BREAK) - && (pm8001_dev->dev_type == SAS_PHY_UNUSED))) { - kfree(pw); - return; + if (pw->handler != IO_FATAL_ERROR) { + pm8001_dev = pw->data; /* Most stash device structure */ + if ((pm8001_dev == NULL) + || ((pw->handler != IO_XFER_ERROR_BREAK) + && (pm8001_dev->dev_type == SAS_PHY_UNUSED))) { + kfree(pw); + return; + } } switch (pw->handler) { @@ -1668,6 +1670,58 @@ void pm8001_work_fn(struct work_struct *work) dev = pm8001_dev->sas_device; pm8001_I_T_nexus_reset(dev); break; + case IO_FATAL_ERROR: + { + struct pm8001_hba_info *pm8001_ha = pw->pm8001_ha; + struct pm8001_ccb_info *ccb; + struct task_status_struct *ts; + struct sas_task *task; + int i; + u32 tag, device_id; + + for (i = 0; ccb = NULL, i < PM8001_MAX_CCB; i++) { + ccb = &pm8001_ha->ccb_info[i]; + task = ccb->task; + ts = &task->task_status; + tag = ccb->ccb_tag; + /* check if tag is NULL */ + if (!tag) { + pm8001_dbg(pm8001_ha, FAIL, + "tag Null\n"); + continue; + } + if (task != NULL) { + dev = task->dev; + if (!dev) { + pm8001_dbg(pm8001_ha, FAIL, + "dev is NULL\n"); + continue; + } + /*complete sas task and update to top layer */ + pm8001_ccb_task_free(pm8001_ha, task, ccb, tag); + ts->resp = SAS_TASK_COMPLETE; + task->task_done(task); + } else if (tag != 0xFFFFFFFF) { + /* complete the internal commands/non-sas task */ + pm8001_dev = ccb->device; + if (pm8001_dev->dcompletion) { + complete(pm8001_dev->dcompletion); + pm8001_dev->dcompletion = NULL; + } + complete(pm8001_ha->nvmd_completion); + pm8001_tag_free(pm8001_ha, tag); + } + } + /* Deregsiter all the device ids */ + for (i = 0; i < PM8001_MAX_DEVICES; i++) { + pm8001_dev = &pm8001_ha->devices[i]; + device_id = pm8001_dev->device_id; + if (device_id) { + PM8001_CHIP_DISP->dereg_dev_req(pm8001_ha, device_id); + pm8001_free_dev(pm8001_dev); + } + } + } break; } kfree(pw); } diff --git a/drivers/scsi/pm8001/pm8001_hwi.h b/drivers/scsi/pm8001/pm8001_hwi.h index 6d91e2446542..d1f3aa93325b 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.h +++ b/drivers/scsi/pm8001/pm8001_hwi.h @@ -805,6 +805,7 @@ struct set_dev_state_resp { #define IO_ABORT_IN_PROGRESS 0x40 #define IO_ABORT_DELAYED 0x41 #define IO_INVALID_LENGTH 0x42 +#define IO_FATAL_ERROR 0x51 /* WARNING: This error code must always be the last number. * If you add error code, modify this code also diff --git a/drivers/scsi/pm8001/pm8001_sas.c b/drivers/scsi/pm8001/pm8001_sas.c index a98d4496ff8b..edec599ac641 100644 --- a/drivers/scsi/pm8001/pm8001_sas.c +++ b/drivers/scsi/pm8001/pm8001_sas.c @@ -590,7 +590,7 @@ struct pm8001_device *pm8001_find_dev(struct pm8001_hba_info *pm8001_ha, return NULL; } -static void pm8001_free_dev(struct pm8001_device *pm8001_dev) +void pm8001_free_dev(struct pm8001_device *pm8001_dev) { u32 id = pm8001_dev->id; memset(pm8001_dev, 0, sizeof(*pm8001_dev)); diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h index 039ed91e9841..36cd37c8c29a 100644 --- a/drivers/scsi/pm8001/pm8001_sas.h +++ b/drivers/scsi/pm8001/pm8001_sas.h @@ -727,6 +727,7 @@ ssize_t pm80xx_get_non_fatal_dump(struct device *cdev, struct device_attribute *attr, char *buf); ssize_t pm8001_get_gsm_dump(struct device *cdev, u32, char *buf); int pm80xx_fatal_errors(struct pm8001_hba_info *pm8001_ha); +void pm8001_free_dev(struct pm8001_device *pm8001_dev); /* ctl shared API */ extern struct device_attribute *pm8001_host_attrs[]; diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c index 84315560e8e1..1aa3a499c85a 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.c +++ b/drivers/scsi/pm8001/pm80xx_hwi.c @@ -4126,6 +4126,7 @@ static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec) pm8001_dbg(pm8001_ha, FAIL, "Firmware Fatal error! Regval:0x%x\n", regval); + pm8001_handle_event(pm8001_ha, NULL, IO_FATAL_ERROR); print_scratchpad_registers(pm8001_ha); return ret; } diff --git a/drivers/scsi/pm8001/pm80xx_hwi.h b/drivers/scsi/pm8001/pm80xx_hwi.h index 2c8e85cfdbc4..c7e5d93bea92 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.h +++ b/drivers/scsi/pm8001/pm80xx_hwi.h @@ -1272,6 +1272,7 @@ typedef struct SASProtocolTimerConfig SASProtocolTimerConfig_t; #define IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_OPEN_COLLIDE 0x47 #define IO_OPEN_CNX_ERROR_IT_NEXUS_LOSS_PATHWAY_BLOCKED 0x48 #define IO_DS_INVALID 0x49 +#define IO_FATAL_ERROR 0x51 /* WARNING: the value is not contiguous from here */ #define IO_XFER_ERR_LAST_PIO_DATAIN_CRC_ERR 0x52 #define IO_XFER_DMA_ACTIVATE_TIMEOUT 0x53 From patchwork Wed Mar 24 17:03:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viswas G X-Patchwork-Id: 408566 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67178C433E3 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4E8A161A13 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236955AbhCXQyf (ORCPT ); Wed, 24 Mar 2021 12:54:35 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:17505 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236526AbhCXQya (ORCPT ); Wed, 24 Mar 2021 12:54:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1616604870; x=1648140870; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=F7U3hSyJpp0WrlWE++luXzDfhrubQye8Sbqy2vCVHwY=; b=NA2paaejsATSznoavFSQkx1wFsjrWgRqA87MDduLM5wN5txuwt9wvgI6 J9gVbqNunoAmv4lCxpNlcrTHUqW6ZACh5dfhmlmxEfxXVTQU11Ec4C66G a/sBeznJsYmM8JHdwBk+Jcd04y0iu0pVvfch8ZMHpsVZ+cqZE6650W86t 6yf7hZRhw2odF2/kruVvT2knfwSQipprvTY0aiRGlCGHlTV2t9GejITxK KRckGeT72tzcLUKXqqR8G2wIeoIs7pZnuNK5YUef+WxM0NZwfJNRk0TJb BXF7qWgB0JU42nUipIxWvKb+5SYKulciZtlwaEaLoJ/ZxHxtMirQ28jsS Q==; IronPort-SDR: ZEynz05vWKUuqUJGmqdnJQ6M2zjUS3IgmqUQLXHemeBzak2o15MrxmuBJTXRxbaAp3g9Ct9D+/ JNIuneAZAbNorr+v54VNvEntORY5TvMt+4IEgt2gz3qhs32+EmHqbcR6Tij4av/dMnVEnPlmMx 1cgcYLKVfe9FCixFQqdsRjvmRcvjn3wsP5jXvVFGVQI8gMGYPsy+iJHgwTD1R9zxiBvr+Iguxu mU0tRdgUkpbChgXt/HEWNHLCFiOYG3aSZhf36dIamRT//Tmaq8aGwx35qV2HFRm7OUoDKArJJI MEI= X-IronPort-AV: E=Sophos;i="5.81,275,1610434800"; d="scan'208";a="111203619" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa2.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 24 Mar 2021 09:54:29 -0700 Received: from chn-vm-ex02.mchp-main.com (10.10.85.144) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 24 Mar 2021 09:54:29 -0700 Received: from localhost (10.10.115.15) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 24 Mar 2021 09:54:29 -0700 From: Viswas G To: CC: , , , , , , Ashokkumar N , "John Garry" Subject: [PATCH v2 6/7] pm80xx: Reset PI and CI memory during re-initialize Date: Wed, 24 Mar 2021 22:33:56 +0530 Message-ID: <20210324170357.9765-7-Viswas.G@microchip.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20210324170357.9765-1-Viswas.G@microchip.com> References: <20210324170357.9765-1-Viswas.G@microchip.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Producer index(PI) outbound queue and consumer index(CI) for Outbound queue are in DMA memory. During resume(), the stale PI and CI Values will leads to unexpected behavior. These values should be reset to 0 during driver reinitialization. Signed-off-by: Viswas G Signed-off-by: Ruksar Devadi Signed-off-by: Ashokkumar N Acked-by: Jack Wang --- drivers/scsi/pm8001/pm8001_hwi.c | 2 ++ drivers/scsi/pm8001/pm80xx_hwi.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/drivers/scsi/pm8001/pm8001_hwi.c b/drivers/scsi/pm8001/pm8001_hwi.c index 4e0ce044ac69..783149b8b127 100644 --- a/drivers/scsi/pm8001/pm8001_hwi.c +++ b/drivers/scsi/pm8001/pm8001_hwi.c @@ -240,6 +240,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha) pm8001_ha->memoryMap.region[ci_offset + i].phys_addr_lo; pm8001_ha->inbnd_q_tbl[i].ci_virt = pm8001_ha->memoryMap.region[ci_offset + i].virt_ptr; + pm8001_write_32(pm8001_ha->inbnd_q_tbl[i].ci_virt, 0, 0); offsetib = i * 0x20; pm8001_ha->inbnd_q_tbl[i].pi_pci_bar = get_pci_bar_index(pm8001_mr32(addressib, @@ -268,6 +269,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha) 0 | (10 << 16) | (i << 24); pm8001_ha->outbnd_q_tbl[i].pi_virt = pm8001_ha->memoryMap.region[pi_offset + i].virt_ptr; + pm8001_write_32(pm8001_ha->outbnd_q_tbl[i].pi_virt, 0, 0); offsetob = i * 0x24; pm8001_ha->outbnd_q_tbl[i].ci_pci_bar = get_pci_bar_index(pm8001_mr32(addressob, diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c index 1aa3a499c85a..0f2c57e054ac 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.c +++ b/drivers/scsi/pm8001/pm80xx_hwi.c @@ -787,6 +787,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha) pm8001_ha->memoryMap.region[ci_offset + i].phys_addr_lo; pm8001_ha->inbnd_q_tbl[i].ci_virt = pm8001_ha->memoryMap.region[ci_offset + i].virt_ptr; + pm8001_write_32(pm8001_ha->inbnd_q_tbl[i].ci_virt, 0, 0); offsetib = i * 0x20; pm8001_ha->inbnd_q_tbl[i].pi_pci_bar = get_pci_bar_index(pm8001_mr32(addressib, @@ -820,6 +821,7 @@ static void init_default_table_values(struct pm8001_hba_info *pm8001_ha) pm8001_ha->outbnd_q_tbl[i].interrup_vec_cnt_delay = (i << 24); pm8001_ha->outbnd_q_tbl[i].pi_virt = pm8001_ha->memoryMap.region[pi_offset + i].virt_ptr; + pm8001_write_32(pm8001_ha->outbnd_q_tbl[i].pi_virt, 0, 0); offsetob = i * 0x24; pm8001_ha->outbnd_q_tbl[i].ci_pci_bar = get_pci_bar_index(pm8001_mr32(addressob, From patchwork Wed Mar 24 17:03:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Viswas G X-Patchwork-Id: 409221 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 926C7C433E5 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5E1CE61A17 for ; Wed, 24 Mar 2021 16:55:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236975AbhCXQyg (ORCPT ); Wed, 24 Mar 2021 12:54:36 -0400 Received: from esa.microchip.iphmx.com ([68.232.153.233]:35713 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236582AbhCXQyc (ORCPT ); Wed, 24 Mar 2021 12:54:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1616604872; x=1648140872; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version; bh=LNl35VTJtEBNoBz192iHt+t3NKyIkV3J4HMxtpymTpE=; b=gTwjMD0mFIwrhPjoTNg4i6rLLHdklzFMGNVxO8TcxJ5XClCneqd2RgZB heDWpVPbwG6HpHvv5J9caHcGygsyIij7pteRbyPr4q1g7/SMiK47+aI2Q lOdC9CBqjfgXo4UDe3C0qdYt4B3qE/bOuB8Hks0PYwlmknGstkZkOMwlN atduyfGMK56peenj7FfUnrUjxI6HLTvZjlFQ4rvTNC3fSP7R6zC6NNl+U VhBhjKQfeqCGyxaOgMfvnpkyktyymQl5GCmFXKmS8v5bZjdIuscC6hE0j 8tzPVaW5GiyiLbqi2UNCDZo4mEV02e0ioyZU2G5QFbi+hM6rUGHkgEyOm A==; IronPort-SDR: m4f7q7LEdNmWugWxD1J94nMyVyeWa9YnwJHYoklRhAumhsp3ByewDAo97UOE5E2cJy8AC4qNT3 bYeANriWPg+XctSome23TVglKaYUlft5bIU+Ps6PfxnC92B3oGSAK2RzL0/wGJQu/RA42vvQ81 BYv6Epyp6kCgKDhrcMBEnAz9Gt5z26XUe5ZmloN7AEk04o8YndN4yfg7rOU+vf5vlsxVVJPjmF VQAKQXOXj5jap7HmN3qTyPbYdm9/XUMjYQUSaOPy1E5owwlmznQL0gi4txuJKVmWsc6v/tIhrO REM= X-IronPort-AV: E=Sophos;i="5.81,275,1610434800"; d="scan'208";a="120297812" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 24 Mar 2021 09:54:31 -0700 Received: from chn-vm-ex04.mchp-main.com (10.10.85.152) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Wed, 24 Mar 2021 09:54:31 -0700 Received: from localhost (10.10.115.15) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server id 15.1.2176.2 via Frontend Transport; Wed, 24 Mar 2021 09:54:30 -0700 From: Viswas G To: CC: , , , , , , Ashokkumar N , "John Garry" Subject: [PATCH v2 7/7] pm80xx: remove global lock from outbound queue processing Date: Wed, 24 Mar 2021 22:33:57 +0530 Message-ID: <20210324170357.9765-8-Viswas.G@microchip.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20210324170357.9765-1-Viswas.G@microchip.com> References: <20210324170357.9765-1-Viswas.G@microchip.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Introduced spin lock for outbound queue. With this, driver need not acquire hba global lock for outbound queue processing. Signed-off-by: Viswas G Signed-off-by: Ruksar Devadi Signed-off-by: Ashokkumar N Acked-by: Jack Wang --- drivers/scsi/pm8001/pm8001_init.c | 9 ++++++--- drivers/scsi/pm8001/pm8001_sas.h | 1 + drivers/scsi/pm8001/pm80xx_hwi.c | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/pm8001/pm8001_init.c b/drivers/scsi/pm8001/pm8001_init.c index bd626ef876da..a3c8fb9a885f 100644 --- a/drivers/scsi/pm8001/pm8001_init.c +++ b/drivers/scsi/pm8001/pm8001_init.c @@ -267,7 +267,8 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha, { int i, count = 0, rc = 0; u32 ci_offset, ib_offset, ob_offset, pi_offset; - struct inbound_queue_table *circularQ; + struct inbound_queue_table *ibq; + struct outbound_queue_table *obq; spin_lock_init(&pm8001_ha->lock); spin_lock_init(&pm8001_ha->bitmap_lock); @@ -315,8 +316,8 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha, pm8001_ha->memoryMap.region[IOP].alignment = 32; for (i = 0; i < count; i++) { - circularQ = &pm8001_ha->inbnd_q_tbl[i]; - spin_lock_init(&circularQ->iq_lock); + ibq = &pm8001_ha->inbnd_q_tbl[i]; + spin_lock_init(&ibq->iq_lock); /* MPI Memory region 3 for consumer Index of inbound queues */ pm8001_ha->memoryMap.region[ci_offset+i].num_elements = 1; pm8001_ha->memoryMap.region[ci_offset+i].element_size = 4; @@ -345,6 +346,8 @@ static int pm8001_alloc(struct pm8001_hba_info *pm8001_ha, } for (i = 0; i < count; i++) { + obq = &pm8001_ha->outbnd_q_tbl[i]; + spin_lock_init(&obq->oq_lock); /* MPI Memory region 4 for producer Index of outbound queues */ pm8001_ha->memoryMap.region[pi_offset+i].num_elements = 1; pm8001_ha->memoryMap.region[pi_offset+i].element_size = 4; diff --git a/drivers/scsi/pm8001/pm8001_sas.h b/drivers/scsi/pm8001/pm8001_sas.h index 36cd37c8c29a..f835557ee354 100644 --- a/drivers/scsi/pm8001/pm8001_sas.h +++ b/drivers/scsi/pm8001/pm8001_sas.h @@ -457,6 +457,7 @@ struct outbound_queue_table { u32 dinterrup_to_pci_offset; __le32 producer_index; u32 consumer_idx; + spinlock_t oq_lock; }; struct pm8001_hba_memspace { void __iomem *memvirtaddr; diff --git a/drivers/scsi/pm8001/pm80xx_hwi.c b/drivers/scsi/pm8001/pm80xx_hwi.c index 0f2c57e054ac..f1276baebe1d 100644 --- a/drivers/scsi/pm8001/pm80xx_hwi.c +++ b/drivers/scsi/pm8001/pm80xx_hwi.c @@ -4133,8 +4133,8 @@ static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec) return ret; } } - spin_lock_irqsave(&pm8001_ha->lock, flags); circularQ = &pm8001_ha->outbnd_q_tbl[vec]; + spin_lock_irqsave(&circularQ->oq_lock, flags); do { /* spurious interrupt during setup if kexec-ing and * driver doing a doorbell access w/ the pre-kexec oq @@ -4160,7 +4160,7 @@ static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec) break; } } while (1); - spin_unlock_irqrestore(&pm8001_ha->lock, flags); + spin_unlock_irqrestore(&circularQ->oq_lock, flags); return ret; }