Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp1046740pxm; Thu, 3 Mar 2022 09:16:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJxppuLTfRvmUkEO0YM2GrCIj4Jf1hm6iKDzEEhZ9U1Aitbb3Ojqydj/nlYGzo9to69IGGHz X-Received: by 2002:a63:7d5d:0:b0:34c:17:6174 with SMTP id m29-20020a637d5d000000b0034c00176174mr27711373pgn.133.1646327768645; Thu, 03 Mar 2022 09:16:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1646327768; cv=none; d=google.com; s=arc-20160816; b=So8s6jb1Hrnvk259y9G0StEr+wD56n5KraRaVMiL3hyP1aYmXyClIgg+otUWw3Xrbp iM4ZGButBaLRGMl+OLEyrsJv4xzSx/EgudZN9X7CBgIL3mucw4fxbESOXzwXiVJoNFHR 8anL4ZKjdwl8yWyX+MunPBOgiCx2mkhiJg4DyEgTveZLVbYJmfNeOWbDnBqmuOoLS7tY +19aWoQVAEpFM9GIauMtKAdfRh/6MI75Zv/jipdBN8DzuRAH/4Z70oP8tDNkzLAeNRXu W6AAhEo5IW5b1w8SAX8QQljxzkR45CXHC5lK+JYKftxy7BoRwBewY1gV/TGjsyflve6y npbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=rcv/37dJIlnlMbNJAgG0A7ZSvRu0EC2wLGOkN/k5Vqs=; b=D1EUU0aQv+P2XFPWV3l6Vg44AwDqiexsLjC37yeGIWRtB4hlgHTN3ExLdo9ApuGfgk NzYIS1L05QimRi8HAe4xLuV2jEFpNiim9Lgs5b2pCQWipG45NsNCsSnXhNAbLKVyV1N+ mi/6WQ9iPT15fJJ/i1zyA2qHzeyn/eenhod4E2lVXmZBBNfoR+TWYYMS537XT7R1Mdzx ynaWYLseVXr4+hV7eS0vcHl50+D34SO9uzzlCONrNagUjPpQHfu5vH+22xt0MNyqHE8w aT0XaGWDLW3tyseOtZQXm2iC7QBdg13hUSyFu6b8OcVFAaWrfmdkZjmVILEeDGCahxNx dsYA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v14-20020a63480e000000b003728e29fef1si2473335pga.491.2022.03.03.09.15.49; Thu, 03 Mar 2022 09:16:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233280AbiCCM11 (ORCPT + 99 others); Thu, 3 Mar 2022 07:27:27 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35162 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233264AbiCCM1Z (ORCPT ); Thu, 3 Mar 2022 07:27:25 -0500 Received: from out30-43.freemail.mail.aliyun.com (out30-43.freemail.mail.aliyun.com [115.124.30.43]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D3865179274; Thu, 3 Mar 2022 04:26:38 -0800 (PST) X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R811e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04394;MF=xueshuai@linux.alibaba.com;NM=1;PH=DS;RN=12;SR=0;TI=SMTPD_---0V67YNwT_1646310393; Received: from localhost.localdomain(mailfrom:xueshuai@linux.alibaba.com fp:SMTPD_---0V67YNwT_1646310393) by smtp.aliyun-inc.com(127.0.0.1); Thu, 03 Mar 2022 20:26:35 +0800 From: Shuai Xue To: bp@alien8.de, rric@kernel.org Cc: mchehab@kernel.org, tony.luck@intel.com, james.morse@arm.com, ardb@kernel.org, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, xueshuai@linux.alibaba.com, zhangliguang@linux.alibaba.com, zhuo.song@linux.alibaba.com Subject: [PATCH v6 1/2] efi/cper: add cper_mem_err_status_str to decode error description Date: Thu, 3 Mar 2022 20:26:25 +0800 Message-Id: <20220303122626.99740-2-xueshuai@linux.alibaba.com> X-Mailer: git-send-email 2.30.1 (Apple Git-130) In-Reply-To: <20211210134019.28536-1-xueshuai@linux.alibaba.com> References: <20211210134019.28536-1-xueshuai@linux.alibaba.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY,USER_IN_DEF_SPF_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Introduce a new helper function cper_mem_err_status_str() which is used to decode the description of error status, and the cper_print_mem() will call it and report the details of error status. Signed-off-by: Shuai Xue --- drivers/firmware/efi/cper.c | 30 +++++++++++++++++++++++++++++- include/linux/cper.h | 1 + 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/drivers/firmware/efi/cper.c b/drivers/firmware/efi/cper.c index 6ec8edec6329..34eeaa59f04a 100644 --- a/drivers/firmware/efi/cper.c +++ b/drivers/firmware/efi/cper.c @@ -211,6 +211,32 @@ const char *cper_mem_err_type_str(unsigned int etype) } EXPORT_SYMBOL_GPL(cper_mem_err_type_str); +const char *cper_mem_err_status_str(u64 status) +{ + switch ((status >> 8) & 0xff) { + case 1: return "Error detected internal to the component"; + case 4: return "Storage error in DRAM memory"; + case 5: return "Storage error in TLB"; + case 6: return "Storage error in cache"; + case 7: return "Error in one or more functional units"; + case 8: return "Component failed self test"; + case 9: return "Overflow or undervalue of internal queue"; + case 16: return "Error detected in the bus"; + case 17: return "Virtual address not found on IO-TLB or IO-PDIR"; + case 18: return "Improper access error"; + case 19: return "Access to a memory address which is not mapped to any component"; + case 20: return "Loss of Lockstep"; + case 21: return "Response not associated with a request"; + case 22: return "Bus parity error - must also set the A, C, or D Bits"; + case 23: return "Detection of a protocol error"; + case 24: return "Detection of a PATH_ERROR"; + case 25: return "Bus operation timeout"; + case 26: return "A read was issued to data that has been poisoned"; + default: return "Reserved"; + } +} +EXPORT_SYMBOL_GPL(cper_mem_err_status_str); + static int cper_mem_err_location(struct cper_mem_err_compact *mem, char *msg) { u32 len, n; @@ -334,7 +360,9 @@ static void cper_print_mem(const char *pfx, const struct cper_sec_mem_err *mem, return; } if (mem->validation_bits & CPER_MEM_VALID_ERROR_STATUS) - printk("%s""error_status: 0x%016llx\n", pfx, mem->error_status); + printk("%s error_status: %s (0x%016llx)\n", + pfx, cper_mem_err_status_str(mem->error_status), + mem->error_status); if (mem->validation_bits & CPER_MEM_VALID_PA) printk("%s""physical_address: 0x%016llx\n", pfx, mem->physical_addr); diff --git a/include/linux/cper.h b/include/linux/cper.h index 6a511a1078ca..5b1dd27b317d 100644 --- a/include/linux/cper.h +++ b/include/linux/cper.h @@ -558,6 +558,7 @@ extern const char *const cper_proc_error_type_strs[4]; u64 cper_next_record_id(void); const char *cper_severity_str(unsigned int); const char *cper_mem_err_type_str(unsigned int); +const char *cper_mem_err_status_str(u64 status); void cper_print_bits(const char *prefix, unsigned int bits, const char * const strs[], unsigned int strs_size); void cper_mem_err_pack(const struct cper_sec_mem_err *, -- 2.20.1.12.g72788fdb