Re: timerfd functions hang on both x86 and ARM with RT patch and RT scheduling policies

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

 



On Wed, 25 Jan 2012, Mike Galbraith wrote:
> On Tue, 2012-01-24 at 10:04 -0600, Sankara Muthukrishnan wrote:
>  		spin_unlock_irq(&ctx->wqh.lock);
> +#ifndef CONFIG_PREEMPT_RT_BASE

Bah.

>  		cpu_relax();
> +#else
> +		/*
> +		 * Current may be an RT task with priority high enough
> +		 * to prevent the thread currently _wanting_ to execute
> +		 * the timer callback function from receiving the CPU.
> +		 */
> +		usleep_range(1, 10);

Even more bah.

> +#endif
>  	}

Index: linux-3.2/fs/timerfd.c
===================================================================
--- linux-3.2.orig/fs/timerfd.c
+++ linux-3.2/fs/timerfd.c
@@ -313,7 +313,7 @@ SYSCALL_DEFINE4(timerfd_settime, int, uf
 		if (hrtimer_try_to_cancel(&ctx->tmr) >= 0)
 			break;
 		spin_unlock_irq(&ctx->wqh.lock);
-		cpu_relax();
+		hrtimer_wait_for_timer(&ctx->tmr);
 	}
 
 	/*
--
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [RT Stable]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux