On 28/06/16 15:14, Chris Wilson wrote:
On Tue, Jun 28, 2016 at 02:55:28PM +0100, Chris Wilson wrote:
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;
For this, we should scale everything to ns (u64).
In other words not scale. Is this type of loop more preferable to you
guys vs how it looked in this original patch?
Only difference is the preempt off section is shorter here, but I don't
think that is interesting for the atomic waits case.
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx