Re: [PATCH 2/2] drm/i915: Use atomic waits for short non-atomic ones

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




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




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux