All of lore.kernel.org
 help / color / mirror / Atom feed
From: "gtXfined H." <hmz007@gmail.com>
To: Jaehoon Chung <jh80.chung@samsung.com>
Cc: peng.fan@nxp.com, U-Boot Mailing List <U-Boot@lists.denx.de>
Subject: Re: [PATCH] mmc: dw_mmc: Fixes timeout issue for FIFO mode
Date: Wed, 12 Jan 2022 20:55:08 +0800	[thread overview]
Message-ID: <CAGr7CZnffiLdRT7G7NDABxSWoR4yAk8QkjYKjfOHKdgZU0is+w@mail.gmail.com> (raw)
In-Reply-To: <fb1a61d6-ba28-694c-784c-12f1e056e0cd@samsung.com>

Hi,

The modification in the last email is just to debug the timeout error and
get a clearer understanding of
the timeout error, it doesn't solve the problem.

But the patch in my first email (sent by git), from what I've tested, does
solve the timeout error.


BR,
Jensen, Huang


On Wed, Jan 12, 2022 at 7:14 PM Jaehoon Chung <jh80.chung@samsung.com>
wrote:

> Hi,
>
> On 1/12/22 3:17 PM, gtXfined H. wrote:
> > Hi,
> >
> > I switched back to master branch and only made the following changes.
> >
> > --- a/drivers/mmc/dw_mmc.c
> > +++ b/drivers/mmc/dw_mmc.c
> > @@ -167,6 +167,10 @@ static int dwmci_data_transfer(struct dwmci_host
> > *host, struct mmc_data *data)
> >                         len = 0;
> >                         if (data->flags == MMC_DATA_READ &&
> >                             (mask & (DWMCI_INTMSK_RXDR |
> > DWMCI_INTMSK_DTO))) {
> > +                               if (!(mask & DWMCI_INTMSK_DTO) &&
> > +                                    (dwmci_readl(host, DWMCI_RINTSTS) &
> > DWMCI_INTMSK_DTO)) {
> > +                                       printf("warn: DTO changed to
> 1\n");
> > +                               }
> >                                 dwmci_writel(host, DWMCI_RINTSTS,
> >                                              DWMCI_INTMSK_RXDR |
>
> You need to set your email-client environment.
>
> https://www.kernel.org/doc/html/v5.16/process/email-clients.html?highlight=email
>
>
>
> > DWMCI_INTMSK_DTO);
> >                                 while (size) {
> > @@ -224,6 +228,11 @@ static int dwmci_data_transfer(struct dwmci_host
> > *host, struct mmc_data *data)
> >
> >         dwmci_writel(host, DWMCI_RINTSTS, mask);
> >
> > +#ifdef CONFIG_SPL_BUILD
> > +       printf("mmc: transfer %8p, %5d, in %4ld  (%d, %02x)\n",
> > +                       buf, data->blocks, get_timer(start), size, mask);
> > +#endif
> > +
> >         return ret;
> >  }
> >
> > Then tried the same test and reproduced the timeout issue with the
> > following logs.
> >
> > U-Boot SPL 2022.01-00373-gfe04d885fb-dirty (Jan 12 2022 - 13:52:15 +0800)
> > Trying to boot from MMC1
> > mmc: transfer  3fffac8,     1, in    0  (0, 0c)
> > mmc: transfer  3fffb80,     1, in    2  (0, 0c)
> > mmc: transfer  3fffd00,     1, in    1  (0, 0c)
> > warn: DTO changed to 1
> > mmc: transfer   2001c0,     1, in 1001  (0, 04)
> > mmc_load_image_raw_sector: mmc block read error
> > Trying to boot from MMC1
> > warn: DTO changed to 1
> > mmc: transfer   2001c0,     1, in 1001  (0, 04)
> > mmc_load_image_raw_sector: mmc block read error
> > SPL: failed to boot from all boot devices
> > ### ERROR ### Please RESET the board ###
> >
> > According to the logs, you can see that the DTO interrupt was
> > unintentionally cleared
>
> I had been tested after set the fifo-mode. It's occurred timeout error.
> But your patch doesn't work, too. It's not solution to solve this problem.
>
> Well, I have checked some code. It seems that there are some bugs about
> fifo-mode.
>
> Best Regards,
> Jaehoon Chung
>
> >
> >
> > BR,
> > Jensen, Huang
> >
> >
> > On Wed, Jan 12, 2022 at 7:04 AM Jaehoon Chung <jh80.chung@samsung.com>
> > wrote:
> >
> >> On 1/11/22 8:05 PM, gtXfined H. wrote:
> >>> Hi,
> >>>
> >>>>  Which board did you test? When you do power-on, is it reproduced
> every
> >>> time?
> >>>
> >>> I am using Rockchip RK3399 based board - NanoPi R4S for this test.
> >>> It doesn't appear every time, but it should be encountered once about
> 20
> >>> times.
> >>> I have run "setenv bootcmd reset; saveenv; reset" for automated
> testing.
> >>
> >> This patch doesn't clarify.
> >>
> >> The below commit had been fixed that doesn't work when data read.
> >> "mmc: dw_mmc: Fixes data read when receiving DTO interrupt in FIFO mode"
> >>
> >> It seems that not clearing during reset card.
> >> (power glitch or other problem..?)
> >>
> >> Best Regards,
> >> Jaehoon Chung
> >>
> >>>
> >>>
> >>>> Could you change from your ID to your name?
> >>>
> >>> This is my first time sending a patch, sorry I didn't notice this, do I
> >>> need to resend this patch?
> >>>
> >>>
> >>> BR,
> >>> Jensen, Huang
> >>>
> >>>
> >>> On Tue, Jan 11, 2022 at 6:38 PM Jaehoon Chung <jh80.chung@samsung.com>
> >>> wrote:
> >>>
> >>>> Hi,
> >>>>
> >>>> On 1/11/22 7:24 PM, hmz007 wrote:
> >>>>> Clearing the DTO interrupt should be unnecessary, and it would
> >>>>> potentially result in never receiving this interrupt again.
> >>>>>
> >>>>> Do power-on or reset from uboot for a while can reproduce the issue:
> >>>>>   dwmci_data_transfer: Timeout waiting for data!
> >>>>>   mmc_load_image_raw_sector: mmc block read error
> >>>>
> >>>> Which board did you test? When you do power-on, is it reproduced every
> >>>> time?
> >>>>
> >>>>>
> >>>>> Tested on NanoPi R4S with SanDisk Extreme PRO 32GB.
> >>>>>
> >>>>> Fixes: 8cb9d3ed3a ("mmc: dw_mmc: Fixes data read when receiving DTO
> >>>> interrupt in FIFO mode")
> >>>>> Signed-off-by: hmz007 <hmz007@gmail.com>
> >>>>
> >>>> Could you change from your ID to your name?
> >>>>
> >>>> Best Regards,
> >>>> Jaehoon Chung
> >>>>
> >>>>> ---
> >>>>>  drivers/mmc/dw_mmc.c | 2 +-
> >>>>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>>>
> >>>>> diff --git a/drivers/mmc/dw_mmc.c b/drivers/mmc/dw_mmc.c
> >>>>> index a949dad574..8fa26b340b 100644
> >>>>> --- a/drivers/mmc/dw_mmc.c
> >>>>> +++ b/drivers/mmc/dw_mmc.c
> >>>>> @@ -168,7 +168,7 @@ static int dwmci_data_transfer(struct dwmci_host
> >>>> *host, struct mmc_data *data)
> >>>>>                       if (data->flags == MMC_DATA_READ &&
> >>>>>                           (mask & (DWMCI_INTMSK_RXDR |
> >>>> DWMCI_INTMSK_DTO))) {
> >>>>>                               dwmci_writel(host, DWMCI_RINTSTS,
> >>>>> -                                          DWMCI_INTMSK_RXDR |
> >>>> DWMCI_INTMSK_DTO);
> >>>>> +                                          DWMCI_INTMSK_RXDR);
> >>>>>                               while (size) {
> >>>>>                                       ret = dwmci_fifo_ready(host,
> >>>>>
>  DWMCI_FIFO_EMPTY,
> >>>>>
> >>>>
> >>>>
> >>>
> >>
> >>
> >
>
>

      reply	other threads:[~2022-01-12 15:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20220111102419epcas1p17569dac08e8ccb4e3a07e74e70d83023@epcas1p1.samsung.com>
2022-01-11 10:24 ` [PATCH] mmc: dw_mmc: Fixes timeout issue for FIFO mode hmz007
2022-01-11 10:39   ` Jaehoon Chung
2022-01-11 11:05     ` gtXfined H.
2022-01-11 23:04       ` Jaehoon Chung
     [not found]         ` <CAGr7CZnkeQtxbJ+7d+RMBtB4N3cWUD5Ws8ikXykFiTxA58-rzw@mail.gmail.com>
2022-01-12 11:15           ` Jaehoon Chung
2022-01-12 12:55             ` gtXfined H. [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGr7CZnffiLdRT7G7NDABxSWoR4yAk8QkjYKjfOHKdgZU0is+w@mail.gmail.com \
    --to=hmz007@gmail.com \
    --cc=U-Boot@lists.denx.de \
    --cc=jh80.chung@samsung.com \
    --cc=peng.fan@nxp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.