On Monday 10 January 2011 05:02:55 pm Sergei Shtylyov wrote:
> Hello.
>
> Caglar Akyuz wrote:
> >> [...]
> >>
> >>> Assuming that the DMA got stuck at some point leading up to the
> >>> transmit timeout, any ideas as to why a host error was not thrown? To
> >>> help debug, I'll post out a set of patches that dump out the MAC (and
> >>> DMA) registers on timeout. That should give us some visibility into
> >>> the problem.
> >>
> >> I have posted a couple of additional patches for this on [1]. Would you
> >> mind giving these a quick try? The register dumps should prove useful
> >> in figuring this out.
> >
> > Hi Cyril,
> >
> > I'm having problems with suspend/resume with emac driver on dm6446. I
> > thought you might give an idea about the root cause of the problem.
> >
> > After a successful suspend/resume, emac driver does not work as expected.
> > When I issue 'ifdown eth0 down' on my machine, dm6446 locks-up forever in
> > 'cpdma_chan_stop' in this loop:
> >
> > while (time_before(jiffies, timeout)) {
> > u32 cp = chan_read(chan, cp);
> > if ((cp & CPDMA_TEARDOWN_VALUE) == CPDMA_TEARDOWN_VALUE)
> > break;
> > cpu_relax();
> > }
> >
> > 'cp' is never being CPDMA_TEARDOWN_VALUE so loop never ends.
>
> But it should exit the loop on time-out, no?
>
This code is called while spinning with interrupts disabled :) I didn't notice
jiffies till you noted.
Regards,
Caglar
> WBR, Sergei
>
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source