Re: sdhci can turn off irq up to 200 ms

From: Pierre Ossman
Date: Sun Sep 06 2009 - 09:30:36 EST


On Thu, 9 Jul 2009 12:28:01 +0200
Matthieu CASTET <matthieu.castet@xxxxxxxxxx> wrote:

> Matthieu CASTET a Ãcrit :
> > Hi,
> >
> > sdhci code got tasklets (sdhci_tasklet_card and sdhci_tasklet_finish),
> > that does :
> > {
> > spin_lock_irqsave
> >
> > if (cond) {
> > sdhci_reset
> > sdhci_reset
> > }
> >
> > spin_unlock_irqrestore
> > }
> >
> > The problem is that sdhci_reset [1] does busy pooling on a register up
> > to a timeout of 100 ms.
> > That's not low latency friendly.
> >
> > On our system, we saw that sdhci_reset take 1 ms. That should be because
> > we enter in mdelay, even if the hardware clears the bit faster.
> > I wonder why there is an mdelay(1). Using cpu_relax and
> > time_is_after_jiffies should make sdhci_reset faster.
> >
> In case somebody cares, here a patch that reduce on our hardware
> sdhci_reset from 1 ms to 30 us.
>

I seem to recall having problems with jiffies not updating with those
locks held (or perhaps it was when inside the isr).

What arch have you been testing this on?

Rgds
--
-- Pierre Ossman

WARNING: This correspondence is being monitored by the
Swedish government. Make sure your server uses encryption
for SMTP traffic and consider using PGP for end-to-end
encryption.

Attachment: signature.asc
Description: PGP signature