Hi, I foward this here because it could interest some people caring about low latency. I have got no reply from upstream. It may or not affect preempt-rt kernel. For info the issue was found with ltt. Matthieu PS : the sdhci driver contains others mdelay that should be killed. -------- Message original -------- Sujet : Re: sdhci can turn off irq up to 200 ms Date : Thu, 09 Jul 2009 12:28:01 +0200 De : Matthieu CASTET Pour : pierre@ossman.eu Copie à : sdhci-devel@lists.ossman.eu, "linux-kernel@vger.kernel.org" Références : <4A4B6184.7000903@parrot.com> 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. Matthieu