Message ID | 20230920191059.28395-3-fancer.lancer@gmail.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp4416945vqi; Wed, 20 Sep 2023 13:50:17 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEFGK3mKLhJU80gOw3kYfsI+6kVM7wN7clGxtDaJKu5MtmqORxHLgk/eGQ2RUkPr3ugdDo5 X-Received: by 2002:a05:6358:430c:b0:139:5a46:ea7e with SMTP id r12-20020a056358430c00b001395a46ea7emr4120809rwc.28.1695243017432; Wed, 20 Sep 2023 13:50:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695243017; cv=none; d=google.com; s=arc-20160816; b=aT/xFl3Vx6jToat6aMKug5nhCl6VmiOI/pFy9p23+9lX5RDnv3b5owG1EHedECCq5S MpbKwqFUI8ZbDir/A5JmB5AcQ9i6/PB5gZfFx8RgDWsqqVIKNotKqxJADVZ0l0tLHSzb MtJujT4x4MiLCMzv1Wyaa162RfDNMs+MUJQ0zL9XfypYdA+AbIISwxsnVZl9e177EQ6J 5OMaGNT5UmAblV30sk/d56JCpWrd4k3QgnBvvcrRW/S5xi84YrcCYg0KCwKThrkvm8Eb U66E7CohfjcqxPtHdP/VgrbKfNmSLRYSttZ8GoXWBKlA41TmskbUaD6Tx15iTU3vpa+w Xffg== 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 :dkim-signature; bh=SOzZD92zaXAANSSJuQi8lUO8jcRVO2h2VCNQ1+CPjLg=; fh=y0DcfaBYI5t0VTARY5hXWJ4aKoJbGJYwhgLbGYez5lY=; b=dmTwFNd0YFxC8SsRytv6MwKp4gIrwGGW5wHaoe/ZiK4EiJg+3bxgXWRJ08L6cnpbQy imR7IXWeo7YeDm17bQBeZhRupg4QBcD9MRaGnAo2+hYhm39ma+SWx4/xP5kxLYUZPZAp WET2AAqVSFE83Gx5D7Eng7mNfP7dxkhQLZUJniZjh75txIifCGWwdteWUS4Pd6pUKofN ZQMbG5EJ9oC+B6DO314rN6ZcZxhLeVT6IMF6p34YWGuwanQrXGQjkUpj/KgrNwfOleUD gGrPMxvil2LgurKNH0bs5DDqdn016PNi/3I8tsCQTO03jwzUIbwabJnMuS+Uw3ydAuG0 RkAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=aVEXoDts; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from agentk.vger.email (agentk.vger.email. [2620:137:e000::3:2]) by mx.google.com with ESMTPS id g184-20020a636bc1000000b00565e865d381si12040350pgc.447.2023.09.20.13.50.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 13:50:17 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) client-ip=2620:137:e000::3:2; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=aVEXoDts; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:2 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by agentk.vger.email (Postfix) with ESMTP id B584880423B3; Wed, 20 Sep 2023 12:12:05 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at agentk.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229877AbjITTLi (ORCPT <rfc822;realc9580@gmail.com> + 27 others); Wed, 20 Sep 2023 15:11:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43078 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229881AbjITTLa (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Wed, 20 Sep 2023 15:11:30 -0400 Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6E9F0C2; Wed, 20 Sep 2023 12:11:24 -0700 (PDT) Received: by mail-lj1-x236.google.com with SMTP id 38308e7fff4ca-2c129cb7770so1099631fa.1; Wed, 20 Sep 2023 12:11:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695237082; x=1695841882; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=SOzZD92zaXAANSSJuQi8lUO8jcRVO2h2VCNQ1+CPjLg=; b=aVEXoDtskz2UKfXKOn7Jf8V8CjiHa10tc31BO95awIAzzhlhbQ1AxGoFUYiE9gUfOp 6h2fhnl3oLdVH4MHAymb1i0603gJqoZwiSUF3eG25rYbBHCtx2YsEVuYmaMISPmdi4nT XgyLkNPcHgE1lvbdyM+l2JgYk1fSVK5bDHmldk3CZk802sX11676wQUc/eXDAOBmYKDg 2vPuQqmtQi4RulNF6isMs3vUE7ozRxW6J6n9Ct60nP3WVHGeuIhXTfSmJk7QTzSgv23A +9ovkwh/ZIDzKrPYhkRXsaXgCXTNgcsLqJ1VwhrFKsOvwo4uey4vDkHzcSAysb+7Sc1X kdfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695237082; x=1695841882; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=SOzZD92zaXAANSSJuQi8lUO8jcRVO2h2VCNQ1+CPjLg=; b=qczS6yegyvJgIXe17YlyE0Dn96Qflj9tmnB1bL9pjhgV+KoRQmulHlQTBFDY8F+Ah0 AXAdnrJehHcHkrjAF+81XJGgHj1yhO/JG2+iya3xWMrzQ+SykU/04rC5wA/0KKn+j/0+ Qu6CqAsdfRFI4lkxtOMtbNvtecZ0D2uOw5m6nU7vxJHLXRzzFYeZIw5bY3YNm+NXMGH6 p6P/M37JER0zuPQwE4S6aK0HMkfMDQ3Dfwd03qsSpZWfD59o7V9q2C/xjEG4nW/c4+Fd JdCdZc4oQYF8zyA6XW9ddR5EXITBN3nb1SRlzoZygAEg1liqkTC5ogu4278AYPxzZzXn /cVA== X-Gm-Message-State: AOJu0Yw+02sXWFBZIL4WZw93z48DmZR1mXZGfC/jCXO9t8ndJYnxkHGC myTvetRPbR0XkG4Iizqk3Jw= X-Received: by 2002:a2e:90d5:0:b0:2bf:f861:f523 with SMTP id o21-20020a2e90d5000000b002bff861f523mr1361029ljg.4.1695237082187; Wed, 20 Sep 2023 12:11:22 -0700 (PDT) Received: from localhost ([83.149.21.16]) by smtp.gmail.com with ESMTPSA id a14-20020a2ebe8e000000b002bffb3f8cebsm1996479ljr.54.2023.09.20.12.11.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Sep 2023 12:11:21 -0700 (PDT) From: Serge Semin <fancer.lancer@gmail.com> To: Michal Simek <michal.simek@amd.com>, Alexander Stein <alexander.stein@ew.tq-group.com>, Borislav Petkov <bp@alien8.de>, Tony Luck <tony.luck@intel.com>, James Morse <james.morse@arm.com>, Mauro Carvalho Chehab <mchehab@kernel.org>, Robert Richter <rric@kernel.org>, Manish Narani <manish.narani@xilinx.com> Cc: Serge Semin <fancer.lancer@gmail.com>, Punnaiah Choudary Kalluri <punnaiah.choudary.kalluri@xilinx.com>, Dinh Nguyen <dinguyen@kernel.org>, Arnd Bergmann <arnd@arndb.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, linux-arm-kernel@lists.infradead.org, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov <bp@suse.de> Subject: [PATCH v4 02/20] EDAC/synopsys: Fix generic device type detection procedure Date: Wed, 20 Sep 2023 22:10:26 +0300 Message-ID: <20230920191059.28395-3-fancer.lancer@gmail.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230920191059.28395-1-fancer.lancer@gmail.com> References: <20230920191059.28395-1-fancer.lancer@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=0.9 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_SORBS_WEB, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on agentk.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (agentk.vger.email [0.0.0.0]); Wed, 20 Sep 2023 12:12:05 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777591142294107167 X-GMAIL-MSGID: 1777591142294107167 |
Series |
EDAC/mc/synopsys: Various fixes and cleanups
|
|
Commit Message
Serge Semin
Sept. 20, 2023, 7:10 p.m. UTC
First of all the enum dev_type constants describe the memory DRAM chips
used at the stick, not the entire DQ-bus width (see the enumeration kdoc
for details). So what is returned from the zynqmp_get_dtype() function and
then specified to the dimm_info->dtype field is definitely incorrect.
Secondly the DRAM chips type has nothing to do with the data bus width
specified in the MSTR.data_bus_width CSR field. That CSR field just
determines the part of the whole DQ-bus currently used to access the data
from the all DRAM memory chips. So it doesn't indicate the individual
chips type. Thirdly the DRAM chips type can be determined only in case of
the DDR4 protocol by means of the MSTR.device_config field state (it is
supposed to be set by the system firmware). Finally the DW uMCTL2 DDRC ECC
capability doesn't depend on the memory chips type. Moreover it doesn't
depend on the utilized data bus width in runtime either. The IP-core
reference manual says in [1,2] that the ECC support can't be enabled
during the IP-core synthesizes for the DRAM data bus widths other than 16,
32 or 64. At the same time the bus width mode (MSTR.data_bus_width)
doesn't change the ECC feature availability. Thus it was wrong to
determine the ECC state with respect to the DQ-bus width mode.
Fix all of the mistakes described above in the zynqmp_get_dtype() and
zynqmp_get_ecc_state() methods: specify actual DRAM chips data width only
for the DDR4 protocol and return that it's UNKNOWN in the rest of the
cases; determine ECC availability by the ECCCFG0.ecc_mode field state
only (that field can't be modified anyway if the IP-core was synthesized
with no ECC support).
[1] DesignWare® Cores Enhanced Universal DDR Memory Controller (uMCTL2)
Databook, Version 3.91a, October 2020, p. 421.
[2] DesignWare® Cores Enhanced Universal DDR Memory Controller (uMCTL2)
Databook, Version 3.91a, October 2020, p. 633.
Fixes: b500b4a029d5 ("EDAC, synopsys: Add ECC support for ZynqMP DDR controller")
Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
---
Changelog v2:
- Include "linux/bitfield.h" header file to get the FIELD_GET macro
definition. (@tbot)
---
drivers/edac/synopsys_edac.c | 49 +++++++++++++++---------------------
1 file changed, 20 insertions(+), 29 deletions(-)
diff --git a/drivers/edac/synopsys_edac.c b/drivers/edac/synopsys_edac.c index 014a2176c2c1..b463bd802961 100644 --- a/drivers/edac/synopsys_edac.c +++ b/drivers/edac/synopsys_edac.c @@ -675,26 +675,25 @@ static enum dev_type zynq_get_dtype(const void __iomem *base) */ static enum dev_type zynqmp_get_dtype(const void __iomem *base) { - enum dev_type dt; - u32 width; - - width = readl(base + CTRL_OFST); - width = (width & ECC_CTRL_BUSWIDTH_MASK) >> ECC_CTRL_BUSWIDTH_SHIFT; - switch (width) { - case DDRCTL_EWDTH_16: - dt = DEV_X2; - break; - case DDRCTL_EWDTH_32: - dt = DEV_X4; - break; - case DDRCTL_EWDTH_64: - dt = DEV_X8; - break; - default: - dt = DEV_UNKNOWN; + u32 regval; + + regval = readl(base + CTRL_OFST); + if (!(regval & MEM_TYPE_DDR4)) + return DEV_UNKNOWN; + + regval = (regval & DDRC_MSTR_CFG_MASK) >> DDRC_MSTR_CFG_SHIFT; + switch (regval) { + case DDRC_MSTR_CFG_X4_MASK: + return DEV_X4; + case DDRC_MSTR_CFG_X8_MASK: + return DEV_X8; + case DDRC_MSTR_CFG_X16_MASK: + return DEV_X16; + case DDRC_MSTR_CFG_X32_MASK: + return DEV_X32; } - return dt; + return DEV_UNKNOWN; } /** @@ -731,19 +730,11 @@ static bool zynq_get_ecc_state(void __iomem *base) */ static bool zynqmp_get_ecc_state(void __iomem *base) { - enum dev_type dt; - u32 ecctype; + u32 regval; - dt = zynqmp_get_dtype(base); - if (dt == DEV_UNKNOWN) - return false; + regval = readl(base + ECC_CFG0_OFST) & SCRUB_MODE_MASK; - ecctype = readl(base + ECC_CFG0_OFST) & SCRUB_MODE_MASK; - if ((ecctype == SCRUB_MODE_SECDED) && - ((dt == DEV_X2) || (dt == DEV_X4) || (dt == DEV_X8))) - return true; - - return false; + return (regval == SCRUB_MODE_SECDED); } /**