Message ID | 20201026080919.28413-2-zhang.lyra@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | A few fixes to sprd watchdog driver | expand |
On 10/26/20 1:09 AM, Chunyan Zhang wrote: > From: Lingling Xu <ling_ling.xu@unisoc.com> > > Don't disable watchdog in resume process, otherwise system would crash > once kick watchdog. > This is a bit misleading: It is only disabled if the attempt to start it has failed. Was this observed in practice ? If so, it might make sense to identify and fix the underlying problem instead of trying to work around it (or is this addressed with the second patch of the series ?) Anyway, the patch itself is fine. Reviewed-by: Guenter Roeck <linux@roeck-us.net> Thanks, Guenter > Fixes: 477603467009 ("watchdog: Add Spreadtrum watchdog driver") > Signed-off-by: Lingling Xu <ling_ling.xu@unisoc.com> > Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com> > --- > drivers/watchdog/sprd_wdt.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/drivers/watchdog/sprd_wdt.c b/drivers/watchdog/sprd_wdt.c > index 65cb55f3916f..f3c90b4afead 100644 > --- a/drivers/watchdog/sprd_wdt.c > +++ b/drivers/watchdog/sprd_wdt.c > @@ -345,15 +345,10 @@ static int __maybe_unused sprd_wdt_pm_resume(struct device *dev) > if (ret) > return ret; > > - if (watchdog_active(&wdt->wdd)) { > + if (watchdog_active(&wdt->wdd)) > ret = sprd_wdt_start(&wdt->wdd); > - if (ret) { > - sprd_wdt_disable(wdt); > - return ret; > - } > - } > > - return 0; > + return ret; > } > > static const struct dev_pm_ops sprd_wdt_pm_ops = { >
On Mon, 26 Oct 2020 at 22:27, Guenter Roeck <linux@roeck-us.net> wrote: > > On 10/26/20 1:09 AM, Chunyan Zhang wrote: > > From: Lingling Xu <ling_ling.xu@unisoc.com> > > > > Don't disable watchdog in resume process, otherwise system would crash > > once kick watchdog. > > > > This is a bit misleading: It is only disabled if the attempt to start it > has failed. Was this observed in practice ? If so, it might make sense > to identify and fix the underlying problem instead of trying to work > around it (or is this addressed with the second patch of the series ?) Yes, I think the root cause of this problem was like what I explained in the 3rd patch in this series. Lingling found there was something wrong in sprd_wdt_pm_resume() when debugging that issue, then we had this patch. > > Anyway, the patch itself is fine. > > Reviewed-by: Guenter Roeck <linux@roeck-us.net> Thanks, Chunyan > > Thanks, > Guenter > > > Fixes: 477603467009 ("watchdog: Add Spreadtrum watchdog driver") > > Signed-off-by: Lingling Xu <ling_ling.xu@unisoc.com> > > Signed-off-by: Chunyan Zhang <chunyan.zhang@unisoc.com> > > --- > > drivers/watchdog/sprd_wdt.c | 9 ++------- > > 1 file changed, 2 insertions(+), 7 deletions(-) > > > > diff --git a/drivers/watchdog/sprd_wdt.c b/drivers/watchdog/sprd_wdt.c > > index 65cb55f3916f..f3c90b4afead 100644 > > --- a/drivers/watchdog/sprd_wdt.c > > +++ b/drivers/watchdog/sprd_wdt.c > > @@ -345,15 +345,10 @@ static int __maybe_unused sprd_wdt_pm_resume(struct device *dev) > > if (ret) > > return ret; > > > > - if (watchdog_active(&wdt->wdd)) { > > + if (watchdog_active(&wdt->wdd)) > > ret = sprd_wdt_start(&wdt->wdd); > > - if (ret) { > > - sprd_wdt_disable(wdt); > > - return ret; > > - } > > - } > > > > - return 0; > > + return ret; > > } > > > > static const struct dev_pm_ops sprd_wdt_pm_ops = { > > >
diff --git a/drivers/watchdog/sprd_wdt.c b/drivers/watchdog/sprd_wdt.c index 65cb55f3916f..f3c90b4afead 100644 --- a/drivers/watchdog/sprd_wdt.c +++ b/drivers/watchdog/sprd_wdt.c @@ -345,15 +345,10 @@ static int __maybe_unused sprd_wdt_pm_resume(struct device *dev) if (ret) return ret; - if (watchdog_active(&wdt->wdd)) { + if (watchdog_active(&wdt->wdd)) ret = sprd_wdt_start(&wdt->wdd); - if (ret) { - sprd_wdt_disable(wdt); - return ret; - } - } - return 0; + return ret; } static const struct dev_pm_ops sprd_wdt_pm_ops = {