* [PATCH v2] EDAC support for SiFive SoCs @ 2019-05-06 11:27 Yash Shah 2019-05-06 11:27 ` [PATCH v2] edac: sifive: Add EDAC platform driver " Yash Shah 0 siblings, 1 reply; 7+ messages in thread From: Yash Shah @ 2019-05-06 11:27 UTC (permalink / raw) To: linux-edac, linux-riscv, palmer, bp, james.morse Cc: aou, paulmck, gregkh, linux-kernel, nicolas.ferre, sachin.ghadi, Yash Shah, paul.walmsley, mchehab, davem Adds an EDAC platform driver for SiFive SoCs. This patch was earlier part of the patch series: 'L2 cache controller and EDAC support for SiFive SoCs' https://lkml.org/lkml/2019/4/15/320 In order to merge L2 cache controller driver without any dependency on EDAC, this EDAC patch is re-posted separately with updated MAINTAINERS entry. This patch depends on patch 'RISC-V: sifive_l2_cache: Add L2 cache controller driver for SiFive SoCs' https://lkml.org/lkml/2019/5/6/255 The EDAC driver registers for notifier events from the L2 cache controller driver (arch/riscv/mm/sifive_l2_cache.c) for L2 ECC events The patch is based on Linux 5.1-rc2 and tested on HiFive Unleashed board with additional board related patches needed for testing can be found at dev/yashs/L2_cache_controller branch of: https://github.com/yashshah7/riscv-linux.git Changes since v1 - Move extern definition into sifive_l2_cache header file - Replace NOTIFY_STOP with NOTIFY_OK in ecc_err_event() - Other minor fixes based upon comments against v1 Yash Shah (1): edac: sifive: Add EDAC platform driver for SiFive SoCs MAINTAINERS | 6 +++ arch/riscv/Kconfig | 1 + drivers/edac/Kconfig | 6 +++ drivers/edac/Makefile | 1 + drivers/edac/sifive_edac.c | 119 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 133 insertions(+) create mode 100644 drivers/edac/sifive_edac.c -- 1.9.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2] edac: sifive: Add EDAC platform driver for SiFive SoCs 2019-05-06 11:27 [PATCH v2] EDAC support for SiFive SoCs Yash Shah @ 2019-05-06 11:27 ` Yash Shah 2019-05-21 5:30 ` Yash Shah 0 siblings, 1 reply; 7+ messages in thread From: Yash Shah @ 2019-05-06 11:27 UTC (permalink / raw) To: linux-edac, linux-riscv, palmer, bp, james.morse Cc: aou, paulmck, gregkh, linux-kernel, nicolas.ferre, sachin.ghadi, Yash Shah, paul.walmsley, mchehab, davem The initial ver of EDAC driver supports: - ECC event monitoring and reporting through the EDAC framework for SiFive L2 cache controller. The EDAC driver registers for notifier events from the L2 cache controller driver (arch/riscv/mm/sifive_l2_cache.c) for L2 ECC events Signed-off-by: Yash Shah <yash.shah@sifive.com> Reviewed-by: James Morse <james.morse@arm.com> --- This patch depends on patch 'RISC-V: sifive_l2_cache: Add L2 cache controller driver for SiFive SoCs' https://lkml.org/lkml/2019/5/6/255 MAINTAINERS | 6 +++ arch/riscv/Kconfig | 1 + drivers/edac/Kconfig | 6 +++ drivers/edac/Makefile | 1 + drivers/edac/sifive_edac.c | 119 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 133 insertions(+) create mode 100644 drivers/edac/sifive_edac.c diff --git a/MAINTAINERS b/MAINTAINERS index ba4f104..50f9f43 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -5679,6 +5679,12 @@ L: linux-edac@vger.kernel.org S: Maintained F: drivers/edac/sb_edac.c +EDAC-SIFIVE +M: Yash Shah <yash.shah@sifive.com> +L: linux-edac@vger.kernel.org +S: Supported +F: drivers/edac/sifive_edac.c + EDAC-SKYLAKE M: Tony Luck <tony.luck@intel.com> L: linux-edac@vger.kernel.org diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index eb56c82..31999a6 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -49,6 +49,7 @@ config RISCV select GENERIC_IRQ_MULTI_HANDLER select ARCH_HAS_PTE_SPECIAL select HAVE_EBPF_JIT if 64BIT + select EDAC_SUPPORT config MMU def_bool y diff --git a/drivers/edac/Kconfig b/drivers/edac/Kconfig index 47eb4d1..3e05228 100644 --- a/drivers/edac/Kconfig +++ b/drivers/edac/Kconfig @@ -460,6 +460,12 @@ config EDAC_ALTERA_SDMMC Support for error detection and correction on the Altera SDMMC FIFO Memory for Altera SoCs. +config EDAC_SIFIVE + bool "Sifive platform EDAC driver" + depends on EDAC=y && RISCV + help + Support for error detection and correction on the SiFive SoCs. + config EDAC_SYNOPSYS tristate "Synopsys DDR Memory Controller" depends on ARCH_ZYNQ || ARCH_ZYNQMP diff --git a/drivers/edac/Makefile b/drivers/edac/Makefile index 89ad4a84..165ca65e 100644 --- a/drivers/edac/Makefile +++ b/drivers/edac/Makefile @@ -79,6 +79,7 @@ obj-$(CONFIG_EDAC_OCTEON_PCI) += octeon_edac-pci.o obj-$(CONFIG_EDAC_THUNDERX) += thunderx_edac.o obj-$(CONFIG_EDAC_ALTERA) += altera_edac.o +obj-$(CONFIG_EDAC_SIFIVE) += sifive_edac.o obj-$(CONFIG_EDAC_SYNOPSYS) += synopsys_edac.o obj-$(CONFIG_EDAC_XGENE) += xgene_edac.o obj-$(CONFIG_EDAC_TI) += ti_edac.o diff --git a/drivers/edac/sifive_edac.c b/drivers/edac/sifive_edac.c new file mode 100644 index 0000000..413cdb4 --- /dev/null +++ b/drivers/edac/sifive_edac.c @@ -0,0 +1,119 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * SiFive Platform EDAC Driver + * + * Copyright (C) 2018-2019 SiFive, Inc. + * + * This driver is partially based on octeon_edac-pc.c + * + */ +#include <linux/edac.h> +#include <linux/platform_device.h> +#include "edac_module.h" +#include <asm/sifive_l2_cache.h> + +#define DRVNAME "sifive_edac" + +struct sifive_edac_priv { + struct notifier_block notifier; + struct edac_device_ctl_info *dci; +}; + +/** + * EDAC error callback + * + * @event: non-zero if unrecoverable. + */ +static +int ecc_err_event(struct notifier_block *this, unsigned long event, void *ptr) +{ + const char *msg = (char *)ptr; + struct sifive_edac_priv *p; + + p = container_of(this, struct sifive_edac_priv, notifier); + + if (event == SIFIVE_L2_ERR_TYPE_UE) + edac_device_handle_ue(p->dci, 0, 0, msg); + else if (event == SIFIVE_L2_ERR_TYPE_CE) + edac_device_handle_ce(p->dci, 0, 0, msg); + + return NOTIFY_OK; +} + +static int ecc_register(struct platform_device *pdev) +{ + struct sifive_edac_priv *p; + + p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL); + if (!p) + return -ENOMEM; + + p->notifier.notifier_call = ecc_err_event; + platform_set_drvdata(pdev, p); + + p->dci = edac_device_alloc_ctl_info(0, "sifive_ecc", 1, "sifive_ecc", + 1, 1, NULL, 0, + edac_device_alloc_index()); + if (IS_ERR(p->dci)) + return PTR_ERR(p->dci); + + p->dci->dev = &pdev->dev; + p->dci->mod_name = "Sifive ECC Manager"; + p->dci->ctl_name = dev_name(&pdev->dev); + p->dci->dev_name = dev_name(&pdev->dev); + + if (edac_device_add_device(p->dci)) { + dev_err(p->dci->dev, "failed to register with EDAC core\n"); + goto err; + } + + register_sifive_l2_error_notifier(&p->notifier); + + return 0; + +err: + edac_device_free_ctl_info(p->dci); + + return -ENXIO; +} + +static int ecc_unregister(struct platform_device *pdev) +{ + struct sifive_edac_priv *p = platform_get_drvdata(pdev); + + unregister_sifive_l2_error_notifier(&p->notifier); + edac_device_del_device(&pdev->dev); + edac_device_free_ctl_info(p->dci); + + return 0; +} + +static struct platform_device *sifive_pdev; + +static int __init sifive_edac_init(void) +{ + int ret; + + sifive_pdev = platform_device_register_simple(DRVNAME, 0, NULL, 0); + if (IS_ERR(sifive_pdev)) + return PTR_ERR(sifive_pdev); + + ret = ecc_register(sifive_pdev); + if (ret) + platform_device_unregister(sifive_pdev); + + return ret; +} + +static void __exit sifive_edac_exit(void) +{ + ecc_unregister(sifive_pdev); + platform_device_unregister(sifive_pdev); +} + +module_init(sifive_edac_init); +module_exit(sifive_edac_exit); + +MODULE_AUTHOR("SiFive Inc."); +MODULE_DESCRIPTION("SiFive platform EDAC driver"); +MODULE_LICENSE("GPL v2"); -- 1.9.1 _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2] edac: sifive: Add EDAC platform driver for SiFive SoCs 2019-05-06 11:27 ` [PATCH v2] edac: sifive: Add EDAC platform driver " Yash Shah @ 2019-05-21 5:30 ` Yash Shah 2019-05-21 18:21 ` Borislav Petkov 0 siblings, 1 reply; 7+ messages in thread From: Yash Shah @ 2019-05-21 5:30 UTC (permalink / raw) To: linux-edac, linux-riscv, Palmer Dabbelt, Borislav Petkov, James Morse Cc: aou, paulmck, gregkh, linux-kernel, nicolas.ferre, Sachin Ghadi, Paul Walmsley, mchehab, davem On Mon, May 6, 2019 at 4:57 PM Yash Shah <yash.shah@sifive.com> wrote: > > The initial ver of EDAC driver supports: > - ECC event monitoring and reporting through the EDAC framework for SiFive > L2 cache controller. > > The EDAC driver registers for notifier events from the L2 cache controller > driver (arch/riscv/mm/sifive_l2_cache.c) for L2 ECC events > > Signed-off-by: Yash Shah <yash.shah@sifive.com> > Reviewed-by: James Morse <james.morse@arm.com> > --- > This patch depends on patch > 'RISC-V: sifive_l2_cache: Add L2 cache controller driver for SiFive SoCs' > https://lkml.org/lkml/2019/5/6/255 The prerequisite patch (sifive_l2_cache driver) has been merged into mainline v5.2-rc1 It should be OK to merge this edac driver now. - Yash _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] edac: sifive: Add EDAC platform driver for SiFive SoCs 2019-05-21 5:30 ` Yash Shah @ 2019-05-21 18:21 ` Borislav Petkov 2019-05-22 9:13 ` James Morse 0 siblings, 1 reply; 7+ messages in thread From: Borislav Petkov @ 2019-05-21 18:21 UTC (permalink / raw) To: Yash Shah, James Morse Cc: aou, paulmck, gregkh, Palmer Dabbelt, linux-kernel, nicolas.ferre, Sachin Ghadi, James Morse, Paul Walmsley, linux-riscv, mchehab, davem, linux-edac On Tue, May 21, 2019 at 11:00:59AM +0530, Yash Shah wrote: > The prerequisite patch (sifive_l2_cache driver) has been merged into > mainline v5.2-rc1 > It should be OK to merge this edac driver now. James? -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply. Srsly. _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] edac: sifive: Add EDAC platform driver for SiFive SoCs 2019-05-21 18:21 ` Borislav Petkov @ 2019-05-22 9:13 ` James Morse 2019-05-22 9:34 ` Boris Petkov 0 siblings, 1 reply; 7+ messages in thread From: James Morse @ 2019-05-22 9:13 UTC (permalink / raw) To: Borislav Petkov Cc: aou, paulmck, gregkh, Palmer Dabbelt, linux-kernel, nicolas.ferre, Sachin Ghadi, Yash Shah, Paul Walmsley, linux-riscv, mchehab, davem, linux-edac Hi Boris, On 21/05/2019 19:21, Borislav Petkov wrote: > On Tue, May 21, 2019 at 11:00:59AM +0530, Yash Shah wrote: >> The prerequisite patch (sifive_l2_cache driver) has been merged into >> mainline v5.2-rc1 >> It should be OK to merge this edac driver now. > > James? Still fine by me: Reviewed-by: James Morse <james.morse@arm.com> (...this patch already has my reviewed-by on it...) I commented that it couldn't be merged in pieces here: https://lore.kernel.org/lkml/4072c812-d3bf-9ad5-2b30-6b2a5060bb55@arm.com/T/#u which is what Yash is replying to. Thanks, James _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] edac: sifive: Add EDAC platform driver for SiFive SoCs 2019-05-22 9:13 ` James Morse @ 2019-05-22 9:34 ` Boris Petkov 2019-06-07 6:43 ` Borislav Petkov 0 siblings, 1 reply; 7+ messages in thread From: Boris Petkov @ 2019-05-22 9:34 UTC (permalink / raw) To: James Morse Cc: aou, paulmck, gregkh, Palmer Dabbelt, linux-kernel, nicolas.ferre, Sachin Ghadi, Yash Shah, Paul Walmsley, linux-riscv, mchehab, davem, linux-edac On May 22, 2019 4:13:59 AM CDT, James Morse <james.morse@arm.com> wrote: >Hi Boris, > >On 21/05/2019 19:21, Borislav Petkov wrote: >> On Tue, May 21, 2019 at 11:00:59AM +0530, Yash Shah wrote: >>> The prerequisite patch (sifive_l2_cache driver) has been merged into >>> mainline v5.2-rc1 >>> It should be OK to merge this edac driver now. >> >> James? > >Still fine by me: >Reviewed-by: James Morse <james.morse@arm.com> > >(...this patch already has my reviewed-by on it...) > >I commented that it couldn't be merged in pieces here: >https://lore.kernel.org/lkml/4072c812-d3bf-9ad5-2b30-6b2a5060bb55@arm.com/T/#u > >which is what Yash is replying to. Ok, I'll take it when I get back. Thanks for clarifying. -- Sent from a small device: formatting sux and brevity is inevitable. _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] edac: sifive: Add EDAC platform driver for SiFive SoCs 2019-05-22 9:34 ` Boris Petkov @ 2019-06-07 6:43 ` Borislav Petkov 0 siblings, 0 replies; 7+ messages in thread From: Borislav Petkov @ 2019-06-07 6:43 UTC (permalink / raw) To: James Morse, Yash Shah Cc: aou, paulmck, gregkh, Palmer Dabbelt, linux-kernel, nicolas.ferre, Sachin Ghadi, Paul Walmsley, linux-riscv, mchehab, davem, linux-edac On Wed, May 22, 2019 at 04:34:38AM -0500, Boris Petkov wrote: > >Still fine by me: > >Reviewed-by: James Morse <james.morse@arm.com> > > > >(...this patch already has my reviewed-by on it...) > > > >I commented that it couldn't be merged in pieces here: > >https://lore.kernel.org/lkml/4072c812-d3bf-9ad5-2b30-6b2a5060bb55@arm.com/T/#u > > > >which is what Yash is replying to. > > Ok, I'll take it when I get back. Thanks for clarifying. Now queued. Thx. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply. _______________________________________________ linux-riscv mailing list linux-riscv@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-riscv ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-06-07 6:43 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-05-06 11:27 [PATCH v2] EDAC support for SiFive SoCs Yash Shah 2019-05-06 11:27 ` [PATCH v2] edac: sifive: Add EDAC platform driver " Yash Shah 2019-05-21 5:30 ` Yash Shah 2019-05-21 18:21 ` Borislav Petkov 2019-05-22 9:13 ` James Morse 2019-05-22 9:34 ` Boris Petkov 2019-06-07 6:43 ` Borislav Petkov
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).