Hi, > -----Original Message----- > From: qianfan [mailto:qianfangui...@163.com] > Sent: Tuesday, August 30, 2022 12:43 PM > To: Jaehoon Chung <jh80.ch...@samsung.com>; u-boot@lists.denx.de > Cc: Peng Fan <peng....@nxp.com> > Subject: Re: [PATCH] drivers: mmc: Reset watchdog when accessing mmc device > > > > 在 2022/7/26 16:31, Jaehoon Chung 写道: > > On 7/13/22 16:32, qianfangui...@163.com wrote: > >> From: qianfan Zhao <qianfangui...@163.com> > >> > >> watchdog will reset when 'mmc read' or 'ext4load' a large file from > >> mmc device. Reset watchdog when accessing mmc device. > > I don't know why this patch is need. > Hi: > > maybe your's board doesn't have a hardware watchdog. > on my board there has a gpio watchdog and we should trigger it no more than > 1.2 second. > otherwise it will reset CPU. > > But 'mmc read' command doesn't trigger watchdog, it's ok if we load a smaller > imges, but if we > load a very bigger image which more than 100MiB, the watchdog will dead and > trigger a system reset.
Sorry for too late. I had missed your email. Is there a case to load more bigger image than 100MiB? Best Regards, Jaehoon Chung > > So I make this patch to make sure we can trigger watchdog while loading mmc. > > > > Best Regards, > > Jaehoon Chung > > > >> Signed-off-by: qianfan Zhao <qianfangui...@163.com> > >> --- > >> drivers/mmc/mmc.c | 4 ++++ > >> 1 file changed, 4 insertions(+) > >> > >> diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c index > >> 4d9871d69f..27ffdb7fa7 100644 > >> --- a/drivers/mmc/mmc.c > >> +++ b/drivers/mmc/mmc.c > >> @@ -24,6 +24,7 @@ > >> #include <memalign.h> > >> #include <linux/list.h> > >> #include <div64.h> > >> +#include <watchdog.h> > >> #include "mmc_private.h" > >> > >> #define DEFAULT_CMD6_TIMEOUT_MS 500 @@ -297,6 +298,7 @@ int > >> mmc_poll_for_busy(struct mmc *mmc, int timeout_ms) > >> if (timeout_ms-- <= 0) > >> break; > >> > >> + WATCHDOG_RESET(); > >> udelay(1000); > >> } > >> > >> @@ -500,6 +502,8 @@ ulong mmc_bread(struct blk_desc *block_dev, lbaint_t > >> start, lbaint_t blkcnt, > >> blocks_todo -= cur; > >> start += cur; > >> dst += cur * mmc->read_bl_len; > >> + > >> + WATCHDOG_RESET(); > >> } while (blocks_todo > 0); > >> > >> return blkcnt;