Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp822225pxk; Mon, 31 Aug 2020 01:53:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzFV6/kvvxvl8LfUdQCDU+wndUI9wpiIoZqDheidI2UXKRqX6eE225XhoQv1bowavJ6sh8F X-Received: by 2002:a17:906:3785:: with SMTP id n5mr192844ejc.218.1598864009721; Mon, 31 Aug 2020 01:53:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598864009; cv=none; d=google.com; s=arc-20160816; b=htOFiPdz8coRqkeBHYNkhq/aKWH4sw7En2um0yJurtNwTbf76jmrvdiANc+m+jB1zO sD89rKaKce1WXamcMW+zoOi3zXwL1yTGIg+nTF3/DaTujldWQ0Wb8vydrs+OKpPu2ZGM wa24mWzilJmd2KUUA6j8VeKM83vC1o6RwAr3mPQXGSS4KQkoOKEqfdFnELm8V1fn18Ge QYkmT8cKF9GsBPDENMeoBmI+aEyu7CjmGdkoBdpb9ioHueb3qXcKBqsQsSarlzhvmb0E UcVmUDf2sj6Yi4MyyviizX6sa0djKhGdF+17fp0blZVpiUkAUZD1HdfZ/EipUdSMwWZL yuog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :dkim-signature; bh=2FzP/LvkqUgFGgtj8Jdm6U/F975hJtQOcYmgKmxdTew=; b=sgZFVUJk60O6cfOE+ejCLIS66SlNOecGxDyN5HGU10iAo3WuG/hPmVMyi+m7wPtdTB RSDS7GoHScphGwgke3kH174eruMylde2URPvzUicnQucRshSzP8ry1+MMvHAt5Qjjvqk tFTrcFjlGBsgUs8ITveqz0QNiAv5QQ8rJWbxU+86jm2GCCMVmLPj2OjCuO7cDMWKWota cWjsp8UAJ/XTGigdSajAZ/YABFtG/otTbCRZB5cPLNikcj+NYHJ9ssOrRRJsRGvqicNI +WYiBvhbquKZQwlJ/YkQrIR7Xdh93/UswMFKlbheJqaRoqDGHpETpHHn3W+5uyuXjVFk sV6g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alien8.de header.s=dkim header.b=f6Bmje31; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ks17si5361096ejb.204.2020.08.31.01.53.07; Mon, 31 Aug 2020 01:53:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@alien8.de header.s=dkim header.b=f6Bmje31; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=alien8.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728276AbgHaIwQ (ORCPT + 99 others); Mon, 31 Aug 2020 04:52:16 -0400 Received: from mail.skyhub.de ([5.9.137.197]:52078 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725978AbgHaIwN (ORCPT ); Mon, 31 Aug 2020 04:52:13 -0400 Received: from zn.tnic (p200300ec2f085000813a34d1eba5207f.dip0.t-ipconnect.de [IPv6:2003:ec:2f08:5000:813a:34d1:eba5:207f]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id C27221EC02F2; Mon, 31 Aug 2020 10:52:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alien8.de; s=dkim; t=1598863927; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:in-reply-to:in-reply-to: references:references; bh=2FzP/LvkqUgFGgtj8Jdm6U/F975hJtQOcYmgKmxdTew=; b=f6Bmje31otGkvraw5KTpsx4FRsRfwx8yvp2U8CfixJu6w2daX7PKI70wy6ktlQJakpMJGE SvPG660bCO0X5LAxbQHfEbYbcui6cRng5yj3PCltWtTga0uSzRY1A0PeIF+S1pJdm3DA7r zFeYYwTxuxv+SJat3BZg1DoX4Ct+aK8= Date: Mon, 31 Aug 2020 10:52:03 +0200 From: Borislav Petkov To: Yash Shah Cc: robh+dt@kernel.org, palmer@dabbelt.com, paul.walmsley@sifive.com, mchehab@kernel.org, tony.luck@intel.com, aou@eecs.berkeley.edu, james.morse@arm.com, rrichter@marvell.com, devicetree@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org, sachin.ghadi@sifive.com Subject: Re: [PATCH 3/3] edac: sifive: Add EDAC support for Memory Controller in SiFive SoCs Message-ID: <20200831085203.GB27517@zn.tnic> References: <1598357182-4226-1-git-send-email-yash.shah@sifive.com> <1598357182-4226-4-git-send-email-yash.shah@sifive.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1598357182-4226-4-git-send-email-yash.shah@sifive.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > Subject: Re: [PATCH 3/3] edac: sifive: Add EDAC support for Memory Controller in SiFive SoCs Fix subject prefix: "EDAC/sifive: ..." On Tue, Aug 25, 2020 at 05:36:22PM +0530, Yash Shah wrote: > Add Memory controller EDAC support in exisiting SiFive platform EDAC s/in exisiting/to the/ > driver. It registers for notifier events from the SiFive DDR controller > driver for DDR ECC events. Simplify: "It registers for ECC notifier events from the memory controller." > Signed-off-by: Yash Shah > --- > drivers/edac/Kconfig | 2 +- > drivers/edac/sifive_edac.c | 117 +++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 118 insertions(+), 1 deletion(-) > > diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig > index 7b6ec30..f8b3b53 100644 > --- a/drivers/edac/Kconfig > +++ b/drivers/edac/Kconfig > @@ -462,7 +462,7 @@ config EDAC_ALTERA_SDMMC > > config EDAC_SIFIVE > bool "Sifive platform EDAC driver" > - depends on EDAC=y && SIFIVE_L2 > + depends on EDAC=y && (SIFIVE_L2 || SIFIVE_DDR) > help > Support for error detection and correction on the SiFive SoCs. > > diff --git a/drivers/edac/sifive_edac.c b/drivers/edac/sifive_edac.c > index 3a3dcb1..cf032685 100644 > --- a/drivers/edac/sifive_edac.c > +++ b/drivers/edac/sifive_edac.c > @@ -11,14 +11,120 @@ > #include > #include "edac_module.h" > #include > +#include > > #define DRVNAME "sifive_edac" > +#define SIFIVE_EDAC_MOD_NAME "Sifive ECC Manager" s/SIFIVE_EDAC_MOD_NAME/EDAC_MOD_NAME/g like the other EDAC drivers. ... > +static int ecc_mc_register(struct platform_device *pdev) > +{ > + struct sifive_edac_mc_priv *p; > + struct edac_mc_layer layers[1]; > + int ret; > + > + p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL); > + if (!p) > + return -ENOMEM; > + > + p->notifier.notifier_call = ecc_mc_err_event; > + platform_set_drvdata(pdev, p); > + > + layers[0].type = EDAC_MC_LAYER_CHIP_SELECT; > + layers[0].size = 1; > + layers[0].is_virt_csrow = true; > + > + p->mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0); > + if (!p->mci) { > + dev_err(&pdev->dev, "Failed mem allocation for mc instance\n"); > + return -ENOMEM; > + } > + > + p->mci->pdev = &pdev->dev; > + /* Initialize controller capabilities */ > + p->mci->mtype_cap = MEM_FLAG_DDR4; > + p->mci->edac_ctl_cap = EDAC_FLAG_NONE | EDAC_FLAG_SECDED; > + p->mci->edac_cap = EDAC_FLAG_SECDED; > + p->mci->scrub_cap = SCRUB_UNKNOWN; > + p->mci->scrub_mode = SCRUB_HW_PROG; > + p->mci->ctl_name = dev_name(&pdev->dev); > + p->mci->dev_name = dev_name(&pdev->dev); > + p->mci->mod_name = SIFIVE_EDAC_MOD_NAME; > + p->mci->ctl_page_to_phys = NULL; > + > + /* Interrupt feature is supported by cadence mc */ > + edac_op_state = EDAC_OPSTATE_INT; > + > + ret = edac_mc_add_mc(p->mci); > + if (ret) { > + edac_printk(KERN_ERR, SIFIVE_EDAC_MOD_NAME, > + "Failed to register with EDAC core\n"); > + goto err; > + } > + > +#ifdef CONFIG_SIFIVE_DDR It seems all that ifdeffery can be replaced with if (IS_ENABLED(CONFIG_...)) Thx. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette