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/

Reply via email to