Messages in this thread |  | | | Date | Sun, 6 Sep 2009 15:25:37 +0200 | | From | Pierre Ossman <> | | Subject | Re: sdhci can turn off irq up to 200 ms |
| |
On Thu, 9 Jul 2009 12:28:01 +0200 Matthieu CASTET <matthieu.castet@parrot.com> 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. [unhandled content-type:application/pgp-signature] |  |