Messages in this thread | | | Subject | Re: RT and Cascade interrupts | From | Trond Myklebust <> | Date | Wed, 01 Jun 2005 15:46:41 -0400 |
| |
on den 01.06.2005 Klokka 15:20 (-0400) skreiv john cooper:
> You might have missed in my earlier mail as > this is a not an MP kernel ie: !CONFIG_SMP > The synchronous timer delete primitives don't > exist in this configuration: > > include/linux/timer.h: > > #ifdef CONFIG_SMP > extern int del_timer_sync(struct timer_list *timer); > extern int del_singleshot_timer_sync(struct timer_list *timer); > #else > # define del_timer_sync(t) del_timer(t) > # define del_singleshot_timer_sync(t) del_timer(t) > #endif
For the RT patched stuff that should read
#if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_SOFTIRQS) extern int del_timer_sync(struct timer_list *timer); extern int del_singleshot_timer_sync(struct timer_list *timer); #else # define del_timer_sync(t) del_timer(t) # define del_singleshot_timer_sync(t) del_timer(t) #endif
> BTW, I don't know if you happened on the mail I sent > yesterday. It details rpc_run_timer() waking up an > application task blocked in call_transmit(). The > app task preempts ksoftirqd and eventually does a > __rpc_sleep_on()/__mod_timer() which requeues the > timer in the cascade. When ksoftirqd/rpc_run_timer() > resumes RPC_TASK_HAS_TIMER is unconditionally cleared > however the timer is queued in the cascade. This > appears to be at least one cause of the timer cascade > corruption I've seen.
I saw it. Once again, I don't see how that can happen. __rpc_execute() should be calling rpc_delete_timer() before it calls task->tk_action.
There should be no instances of RPC entering call_transmit() or any other tk_action callback with a pending timer.
Cheers, Trond
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |