From patchwork Fri Apr 26 09:37:06 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shivasharan S X-Patchwork-Id: 10918949 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 91E191390 for ; Fri, 26 Apr 2019 09:38:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 80ED928D55 for ; Fri, 26 Apr 2019 09:38:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 757DF28D6A; Fri, 26 Apr 2019 09:38:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 182BA28D55 for ; Fri, 26 Apr 2019 09:38:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726058AbfDZJi6 (ORCPT ); Fri, 26 Apr 2019 05:38:58 -0400 Received: from mail-pf1-f194.google.com ([209.85.210.194]:38343 "EHLO mail-pf1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725944AbfDZJi6 (ORCPT ); Fri, 26 Apr 2019 05:38:58 -0400 Received: by mail-pf1-f194.google.com with SMTP id 10so1441224pfo.5 for ; Fri, 26 Apr 2019 02:38:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=KusFE6EzOlM2/C6Baiw/EvtE4y1EaqDC0BiuiGqnrQU=; b=frIDVQzLA6d35+f+sn4wE7Rrmuoi2AOROgfGkRml/ymIdIiETPG4v53QnaQmlAUJNg yo4Rs3C7HS2gPr1exXSIhihk+nTO6IOUaKMhDg60WNKC2Pq7F2vt7kzfsKNdUO7qac4k TNCXKx53P5Bf9ZQ6tTR25z/qOznamkzl0LLEI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=KusFE6EzOlM2/C6Baiw/EvtE4y1EaqDC0BiuiGqnrQU=; b=aWsAdeHiDtbDm4fjDJq2OqW5TQm1WsI3zckxYQYugKVGi7hkWcHpzjSpNFgl/J+HTs V+5rH9BHh6ST+Hb4RRR3sTniXXw+KY2YUPAWfmPFE2/8/dsWF9IPIRrl0zQnqefXXccT serZCNFgtdJkjrgODgTyCOswPOS9g2xBueAmrb4IkgIUnloSVJqcpuX5MzoP0QNWBBTX uNTqMgJ4c+FTdWH8A7mXbjMj3gUzmeFYRFB3EL7chjdN+RvKHS9epc0nJQjoqLdyklkr zO9jH+TvoIxNFxLSP6doZuHX6+n6gUuUmggSDT3plXt8j4F4X1kwQ6IMca57bnNG6/pz jCOw== X-Gm-Message-State: APjAAAXXYP3hLXOWzpUng3x9agunKQwFz+7Z/v3QI65nuUmjkezOp23Y 7OuCy/2WtZvDQFb22j+l/jOXORvkO9aEwrDRIYLk8A0LHISLBf77LsmEzobB+56IcB/DIz8lRs0 RshV2foUBND7dDJopDS+oQRfL0Am0WMrLS0GTWR2MFqtDEdzLaVhsjheKcywYGgDZtYI2KNDTFx Q76B1Tf7bpSaUmUDvBaA9R X-Google-Smtp-Source: APXvYqyVrRSnTtVF3Cvs2dbJvj0FC6Ba/bGK1WJy5Jr5OBI9D2BIdYZ2E4Xc4BZgZ6uBzE5O9m+/Qw== X-Received: by 2002:aa7:9193:: with SMTP id x19mr26192532pfa.108.1556271537496; Fri, 26 Apr 2019 02:38:57 -0700 (PDT) Received: from dhcp-135-24-192-142.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id r4sm37994649pgl.69.2019.04.26.02.38.53 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 26 Apr 2019 02:38:56 -0700 (PDT) From: Shivasharan S To: linux-scsi@vger.kernel.org Cc: kashyap.desai@broadcom.com, sumit.saxena@broadcom.com, kiran-kumar.kasturi@broadcom.com, sankar.patra@broadcom.com, sasikumar.pc@broadcom.com, chandrakanth.patil@broadcom.com, Shivasharan S Subject: [PATCH 12/21] megaraid_sas: Dump system registers for debugging Date: Fri, 26 Apr 2019 02:37:06 -0700 Message-Id: <1556271435-27252-13-git-send-email-shivasharan.srikanteshwara@broadcom.com> X-Mailer: git-send-email 2.4.3 In-Reply-To: <1556271435-27252-1-git-send-email-shivasharan.srikanteshwara@broadcom.com> References: <1556271435-27252-1-git-send-email-shivasharan.srikanteshwara@broadcom.com> Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP When controller fails to transition to READY state during driver probe, dump the system interface register set. This will give snapshot of the firmware status for debugging driver load issues. Signed-off-by: Sumit Saxena Signed-off-by: Shivasharan S --- drivers/scsi/megaraid/megaraid_sas_base.c | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index 5d2f346f3f49..5725d4cfbd14 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -2862,6 +2862,24 @@ megasas_dump(void *buf, int sz, int format) printk(KERN_CONT "\n"); } +/** + * megasas_dump_reg_set - This function will print hexdump of register set + * @buf: Buffer to be dumped + * @sz: Size in bytes + * @format: Different formats of dumping e.g. format=n will + * cause only 'n' 32 bit words to be dumped in a + * single line. + */ +inline void +megasas_dump_reg_set(void __iomem *reg_set) +{ + unsigned int i, sz = 256; + __le32 *reg = (__le32 *)reg_set; + + for (i = 0; i < (sz / sizeof(__le32)); i++) + printk("%08x: %08x\n", (i * 4), le32_to_cpu(readl(®[i]))); +} + /** * megasas_dump_fusion_io - This function will print key details * of SCSI IO @@ -3891,8 +3909,11 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) max_wait = MEGASAS_RESET_WAIT_TIME; cur_state = MFI_STATE_FAULT; break; - } else + } else { + dev_printk(KERN_DEBUG, &instance->pdev->dev, "System Register set:\n"); + megasas_dump_reg_set(instance->reg_set); return -ENODEV; + } case MFI_STATE_WAIT_HANDSHAKE: /* @@ -4000,6 +4021,8 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) default: dev_printk(KERN_DEBUG, &instance->pdev->dev, "Unknown state 0x%x\n", fw_state); + dev_printk(KERN_DEBUG, &instance->pdev->dev, "System Register set:\n"); + megasas_dump_reg_set(instance->reg_set); return -ENODEV; } @@ -4022,6 +4045,8 @@ megasas_transition_to_ready(struct megasas_instance *instance, int ocr) if (curr_abs_state == abs_state) { dev_printk(KERN_DEBUG, &instance->pdev->dev, "FW state [%d] hasn't changed " "in %d secs\n", fw_state, max_wait); + dev_printk(KERN_DEBUG, &instance->pdev->dev, "System Register set:\n"); + megasas_dump_reg_set(instance->reg_set); return -ENODEV; }