On Tue, Jun 28, 2016 at 02:29:33PM +0100, Tvrtko Ursulin wrote: > How would you implement it with cpu_clock? What would you do when > re-scheduled? unsigned long base; int cpu; int ret; preempt_disable(); cpu = smp_processor_id(); base = local_clock() >> 10; for (;;) { u64 now = local_clock() >> 10; preempt_enable(); if (COND) { ret = 0; break; } if (now - base >= timeout) { ret = -ETIMEOUT; break; } cpu_relax(); preempt_disable(); if (unlikely(cpu != smp_processor_id()) { timeout -= now - base; cpu = smp_processor_id(); base = local_clock() >> 10; } } ret; Borrowed from udelay() -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx