Messages in this thread | | | Date | Sun, 7 Jun 2015 19:46:20 -0500 | From | atull <> | Subject | Re: [PATCH] EDAC, altera: wrap edac pm with a CONFIG_PM |
| |
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 <atull@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 <atull@opensource.altera.com> > Signed-off-by: Dinh Nguyen <dinguyen@opensource.altera.com> > Cc: dinh.linux@gmail.com > Cc: dougthompson@xmission.com > Cc: linux-edac <linux-edac@vger.kernel.org> > 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 <bp@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. > -- >
| |