Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932127AbbFFIBi (ORCPT ); Sat, 6 Jun 2015 04:01:38 -0400 Received: from mail.skyhub.de ([78.46.96.112]:53853 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750901AbbFFIBb (ORCPT ); Sat, 6 Jun 2015 04:01:31 -0400 Date: Sat, 6 Jun 2015 10:01:26 +0200 From: Borislav Petkov To: Thor Thayer Cc: dinguyen@opensource.altera.com, dinh.linux@gmail.com, atull@opensource.altera.com, dougthompson@xmission.com, mchehab@osg.samsung.com, linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] EDAC, altera: wrap edac pm with a CONFIG_PM Message-ID: <20150606080126.GB545@pd.tnic> References: <1433512155-9906-1-git-send-email-dinguyen@opensource.altera.com> <20150605151559.GK3679@pd.tnic> <5572174D.60804@opensource.altera.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <5572174D.60804@opensource.altera.com> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2966 Lines: 94 On Fri, Jun 05, 2015 at 04:40:29PM -0500, Thor Thayer wrote: > Yes, in our case, it is a hardware issue but I'm still gathering > information. > > The IRQ vectors for OCRAM reside on DDR and in Suspend-to-RAM mode we're > executing out of OCRAM. If an ECC error occurs, we can't handle it so it was > decided to make them mutually exclusive. Thanks Thor, that's actually a good-enough explanation for me - I was just making sure that it is not some silly EDAC core limitation preventing you guys from doing suspend. Anyway, I've committed the version below, if you still feel you want to improve the explanation, no problem - it is the topmost patch on the branch and I can amend it easily. --- From: Alan Tull Date: Fri, 5 Jun 2015 08:49:15 -0500 Subject: [PATCH] EDAC, altera: Do not allow suspend when EDAC is enabled Suspend-to-RAM and EDAC support are mutually exclusive on SOCFPGA. If EDAC is enabled, it will prevent the platform from going into suspend. The reason is that the IRQ vectors for OCRAM reside on DDR and in Suspend-to-RAM mode we're executing out of OCRAM. If an ECC error occurs, we can't handle it so it was decided to make them mutually exclusive. Signed-off-by: Alan Tull Signed-off-by: Dinh Nguyen Cc: dinh.linux@gmail.com Cc: dougthompson@xmission.com Cc: linux-edac Cc: mchehab@osg.samsung.com Cc: tthayer@opensource.altera.com Link: http://lkml.kernel.org/r/1433512155-9906-1-git-send-email-dinguyen@opensource.altera.com Signed-off-by: Borislav Petkov --- drivers/edac/altera_edac.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c index 182c741adf3e..23ef0917483c 100644 --- a/drivers/edac/altera_edac.c +++ b/drivers/edac/altera_edac.c @@ -477,11 +477,31 @@ static int altr_sdram_remove(struct platform_device *pdev) return 0; } +/* + * If you want to suspend, need to disable EDAC by removing it + * from the device tree or defconfig. + */ +#ifdef CONFIG_PM +static int altr_sdram_prepare(struct device *dev) +{ + pr_err("Suspend not allowed when EDAC is enabled.\n"); + + return -EPERM; +} + +static const struct dev_pm_ops altr_sdram_pm_ops = { + .prepare = altr_sdram_prepare, +}; +#endif + static struct platform_driver altr_sdram_edac_driver = { .probe = altr_sdram_probe, .remove = altr_sdram_remove, .driver = { .name = "altr_sdram_edac", +#ifdef CONFIG_PM + .pm = &altr_sdram_pm_ops, +#endif .of_match_table = altr_sdram_ctrl_of_match, }, }; -- 2.3.5 -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply. -- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/