Re: [PATCH 2/3] sdhci: don't finish commands in flight

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Wed, Dec 22, 2010 at 12:08 AM, Chris Ball <cjb@xxxxxxxxxx> wrote:
> Hi Olof,
>
> On Wed, Dec 22, 2010 at 02:01:10AM -0600, Olof Johansson wrote:
>> Don't schedule the finish_tasklet unless the command complete bit is
>> set in the interrupt status register.
>>
>> Signed-off-by: Olof Johansson <olof@xxxxxxxxx>
>
> Could we have some more detail here, please?  What are the symptoms of
> running without this patch?  Should we apply it to the stable tree too?

Hmm, good question. I hadn't gotten to the bottom of why this specific
change was needed in the past -- it's something the original driver
did that I just ended up inheriting behavior from. Thanks for asking.
:-)

>From some further investigation, it seems like the underlying problem
is that the controller reports spurious timeout and crc errors, in
spite of the transactions completing successfully.

My main worry with this fix as it was is that it would disable
behavior on controllers where the error bits are set and handled
correctly. So, what I think I will do instead is that I will simply
mask those two errors from generating interrupts (i.e. masking the two
bits when writing the SDHCI_SIGNAL_ENABLE register). That seems to
result in the equivalent behavior, and I no longer see the spurious
interrupts and controller resets. In case of real timeouts and/or CRC
errors, the existing software timer should take care of eventually
unfreezing the controller if need be.

I'll repost the series with these changes after letting this version
sit out for review for a bit longer.


-Olof
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux