From 46247820461377a6ce7a5fe673547d8ed553f57a Mon Sep 17 00:00:00 2001 From: André Fabian Silva Delgado Date: Sun, 13 Jul 2014 23:47:52 -0300 Subject: linux-libre-rt-3.14.10_rt7-1: updating version --- ...t_raise_softirq_unconditionally_and_fixes.patch | 130 --------------------- 1 file changed, 130 deletions(-) delete mode 100644 kernels/linux-libre-rt/revert_timers-dont_raise_softirq_unconditionally_and_fixes.patch (limited to 'kernels/linux-libre-rt/revert_timers-dont_raise_softirq_unconditionally_and_fixes.patch') diff --git a/kernels/linux-libre-rt/revert_timers-dont_raise_softirq_unconditionally_and_fixes.patch b/kernels/linux-libre-rt/revert_timers-dont_raise_softirq_unconditionally_and_fixes.patch deleted file mode 100644 index ffd42376a..000000000 --- a/kernels/linux-libre-rt/revert_timers-dont_raise_softirq_unconditionally_and_fixes.patch +++ /dev/null @@ -1,130 +0,0 @@ -diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h -index bdbf77db..79a7a35 100644 ---- a/include/linux/hrtimer.h -+++ b/include/linux/hrtimer.h -@@ -461,8 +461,9 @@ extern int schedule_hrtimeout_range_clock(ktime_t *expires, - unsigned long delta, const enum hrtimer_mode mode, int clock); - extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode); - --/* Called from the periodic timer tick */ -+/* Soft interrupt function to run the hrtimer queues: */ - extern void hrtimer_run_queues(void); -+extern void hrtimer_run_pending(void); - - /* Bootup initialization: */ - extern void __init hrtimers_init(void); -diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c -index c19183d..c6d8232 100644 ---- a/kernel/hrtimer.c -+++ b/kernel/hrtimer.c -@@ -1694,6 +1694,30 @@ static void run_hrtimer_softirq(struct softirq_action *h) - } - - /* -+ * Called from timer softirq every jiffy, expire hrtimers: -+ * -+ * For HRT its the fall back code to run the softirq in the timer -+ * softirq context in case the hrtimer initialization failed or has -+ * not been done yet. -+ */ -+void hrtimer_run_pending(void) -+{ -+ if (hrtimer_hres_active()) -+ return; -+ -+ /* -+ * This _is_ ugly: We have to check in the softirq context, -+ * whether we can switch to highres and / or nohz mode. The -+ * clocksource switch happens in the timer interrupt with -+ * xtime_lock held. Notification from there only sets the -+ * check bit in the tick_oneshot code, otherwise we might -+ * deadlock vs. xtime_lock. -+ */ -+ if (tick_check_oneshot_change(!hrtimer_is_hres_enabled())) -+ hrtimer_switch_to_hres(); -+} -+ -+/* - * Called from hardirq context every jiffy - */ - void hrtimer_run_queues(void) -@@ -1706,13 +1730,6 @@ void hrtimer_run_queues(void) - if (hrtimer_hres_active()) - return; - -- /* -- * Check whether we can switch to highres mode. -- */ -- if (tick_check_oneshot_change(!hrtimer_is_hres_enabled()) -- && hrtimer_switch_to_hres()) -- return; -- - for (index = 0; index < HRTIMER_MAX_CLOCK_BASES; index++) { - base = &cpu_base->clock_base[index]; - if (!timerqueue_getnext(&base->active)) -diff --git a/kernel/timer.c b/kernel/timer.c -index cc34e42..7c523a4 100644 ---- a/kernel/timer.c -+++ b/kernel/timer.c -@@ -1443,6 +1443,8 @@ - irq_work_run(); - #endif - -+ hrtimer_run_pending(); -+ - if (time_after_eq(jiffies, base->timer_jiffies)) - __run_timers(base); - } -@@ -1452,52 +1454,8 @@ - */ - void run_local_timers(void) - { -- struct tvec_base *base = __this_cpu_read(tvec_bases); -- - hrtimer_run_queues(); -- /* -- * We can access this lockless as we are in the timer -- * interrupt. If there are no timers queued, nothing to do in -- * the timer softirq. -- */ --#ifdef CONFIG_PREEMPT_RT_FULL -- --#ifndef CONFIG_SMP -- /* -- * The spin_do_trylock() later may fail as the lock may be hold before -- * the interrupt arrived. The spin-lock debugging code will raise a -- * warning if the try_lock fails on UP. Since this is only an -- * optimization for the FULL_NO_HZ case (not to run the timer softirq on -- * an nohz_full CPU) we don't really care and shedule the softirq. -- */ - raise_softirq(TIMER_SOFTIRQ); -- return; --#endif -- -- /* On RT, irq work runs from softirq */ -- if (irq_work_needs_cpu()) { -- raise_softirq(TIMER_SOFTIRQ); -- return; -- } -- -- if (!spin_do_trylock(&base->lock)) { -- raise_softirq(TIMER_SOFTIRQ); -- return; -- } --#endif -- -- if (!base->active_timers) -- goto out; -- -- /* Check whether the next pending timer has expired */ -- if (time_before_eq(base->next_timer, jiffies)) -- raise_softirq(TIMER_SOFTIRQ); --out: --#ifdef CONFIG_PREEMPT_RT_FULL -- rt_spin_unlock_after_trylock_in_irq(&base->lock); --#endif -- /* The ; ensures that gcc won't complain in the !RT case */ -- ; - } - - #ifdef __ARCH_WANT_SYS_ALARM -- cgit v1.2.3