On Friday 21 December 2012, Chunhe Lan wrote: > > +static inline void mmc_delay(unsigned int ms) > +{ > + ktime_t end = ktime_add_us(ktime_get(), ms * 1000); > + > + while (1) { > + s64 remaining; > + > + cond_resched(); > + remaining = ktime_to_us(ktime_sub(end, ktime_get())); > + if (remaining < 0) > + break; > + > + udelay(min_t(u32, remaining, 100)); > + } > +} The new logic is more accurate than the old one, but it still wastes a lot of energy and CPU cycles. Could you perhaps use an hrtimer to set the exact timeout and actually sleep? Arnd -- 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