On Sat, 6 Jun 2015, Borislav Petkov wrote: > 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. >
Thanks Boris. That looks good. Regards, Alan > --- > From: Alan Tull <at...@opensource.altera.com> > 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 <at...@opensource.altera.com> > Signed-off-by: Dinh Nguyen <dingu...@opensource.altera.com> > Cc: dinh.li...@gmail.com > Cc: dougthomp...@xmission.com > Cc: linux-edac <linux-e...@vger.kernel.org> > Cc: mche...@osg.samsung.com > Cc: ttha...@opensource.altera.com > Link: > http://lkml.kernel.org/r/1433512155-9906-1-git-send-email-dingu...@opensource.altera.com > Signed-off-by: Borislav Petkov <b...@suse.de> > --- > 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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/