diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2017-04-04 14:45:09 +0200 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2017-04-04 14:45:09 +0200 |
commit | 57a58cce4b5a368b4818c2b8bf81c99520debfe4 (patch) | |
tree | 46cf7808baba7796cc3da879299c93092bd0a159 | |
parent | e6a76dc34a7be542641b32770e0ca3e29f507bb9 (diff) | |
download | linux-rt-4.9.20-rt15-patches.tar.gz |
[ANNOUNCE] v4.9.20-rt15v4.9.20-rt15-patches
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r-- | patches/localversion.patch | 2 | ||||
-rw-r--r-- | patches/pinctrl-qcom-Use-raw-spinlock-variants.patch | 18 | ||||
-rw-r--r-- | patches/sched-rt-Add-a-missing-rescheduling-point.patch | 69 | ||||
-rw-r--r-- | patches/series | 1 |
4 files changed, 10 insertions, 80 deletions
diff --git a/patches/localversion.patch b/patches/localversion.patch index e1f3b8d87864..340816c8febc 100644 --- a/patches/localversion.patch +++ b/patches/localversion.patch @@ -10,4 +10,4 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- /dev/null +++ b/localversion-rt @@ -0,0 +1 @@ -+-rt14 ++-rt15 diff --git a/patches/pinctrl-qcom-Use-raw-spinlock-variants.patch b/patches/pinctrl-qcom-Use-raw-spinlock-variants.patch index d00f9525a07b..be2933bdd23d 100644 --- a/patches/pinctrl-qcom-Use-raw-spinlock-variants.patch +++ b/patches/pinctrl-qcom-Use-raw-spinlock-variants.patch @@ -180,9 +180,9 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> - spin_lock_irqsave(&pctrl->lock, flags); + raw_spin_lock_irqsave(&pctrl->lock, flags); - val = readl(pctrl->regs + g->intr_status_reg); - val &= ~BIT(g->intr_status_bit); -@@ -604,7 +604,7 @@ static void msm_gpio_irq_unmask(struct i + val = readl(pctrl->regs + g->intr_cfg_reg); + val |= BIT(g->intr_enable_bit); +@@ -600,7 +600,7 @@ static void msm_gpio_irq_unmask(struct i set_bit(d->hwirq, pctrl->enabled_irqs); @@ -191,7 +191,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } static void msm_gpio_irq_ack(struct irq_data *d) -@@ -617,7 +617,7 @@ static void msm_gpio_irq_ack(struct irq_ +@@ -613,7 +613,7 @@ static void msm_gpio_irq_ack(struct irq_ g = &pctrl->soc->groups[d->hwirq]; @@ -200,7 +200,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> val = readl(pctrl->regs + g->intr_status_reg); if (g->intr_ack_high) -@@ -629,7 +629,7 @@ static void msm_gpio_irq_ack(struct irq_ +@@ -625,7 +625,7 @@ static void msm_gpio_irq_ack(struct irq_ if (test_bit(d->hwirq, pctrl->dual_edge_irqs)) msm_gpio_update_dual_edge_pos(pctrl, g, d); @@ -209,7 +209,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> } static int msm_gpio_irq_set_type(struct irq_data *d, unsigned int type) -@@ -642,7 +642,7 @@ static int msm_gpio_irq_set_type(struct +@@ -638,7 +638,7 @@ static int msm_gpio_irq_set_type(struct g = &pctrl->soc->groups[d->hwirq]; @@ -218,7 +218,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> /* * For hw without possibility of detecting both edges -@@ -716,7 +716,7 @@ static int msm_gpio_irq_set_type(struct +@@ -712,7 +712,7 @@ static int msm_gpio_irq_set_type(struct if (test_bit(d->hwirq, pctrl->dual_edge_irqs)) msm_gpio_update_dual_edge_pos(pctrl, g, d); @@ -227,7 +227,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> if (type & (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH)) irq_set_handler_locked(d, handle_level_irq); -@@ -732,11 +732,11 @@ static int msm_gpio_irq_set_wake(struct +@@ -728,11 +728,11 @@ static int msm_gpio_irq_set_wake(struct struct msm_pinctrl *pctrl = gpiochip_get_data(gc); unsigned long flags; @@ -241,7 +241,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> return 0; } -@@ -882,7 +882,7 @@ int msm_pinctrl_probe(struct platform_de +@@ -878,7 +878,7 @@ int msm_pinctrl_probe(struct platform_de pctrl->soc = soc_data; pctrl->chip = msm_gpio_template; diff --git a/patches/sched-rt-Add-a-missing-rescheduling-point.patch b/patches/sched-rt-Add-a-missing-rescheduling-point.patch deleted file mode 100644 index 054810d81af2..000000000000 --- a/patches/sched-rt-Add-a-missing-rescheduling-point.patch +++ /dev/null @@ -1,69 +0,0 @@ -From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Date: Tue, 24 Jan 2017 15:40:06 +0100 -Subject: [PATCH] sched/rt: Add a missing rescheduling point - -Since the change in commit: - - fd7a4bed1835 ("sched, rt: Convert switched_{from, to}_rt() / prio_changed_rt() to balance callbacks") - -... we don't reschedule a task under certain circumstances: - -Lets say task-A, SCHED_OTHER, is running on CPU0 (and it may run only on -CPU0) and holds a PI lock. This task is removed from the CPU because it -used up its time slice and another SCHED_OTHER task is running. Task-B on -CPU1 runs at RT priority and asks for the lock owned by task-A. This -results in a priority boost for task-A. Task-B goes to sleep until the -lock has been made available. Task-A is already runnable (but not active), -so it receives no wake up. - -The reality now is that task-A gets on the CPU once the scheduler decides -to remove the current task despite the fact that a high priority task is -enqueued and waiting. This may take a long time. - -The desired behaviour is that CPU0 immediately reschedules after the -priority boost which made task-A the task with the lowest priority. - -Suggested-by: Peter Zijlstra <peterz@infradead.org> -Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> -Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> -Cc: Linus Torvalds <torvalds@linux-foundation.org> -Cc: Mike Galbraith <efault@gmx.de> -Cc: Thomas Gleixner <tglx@linutronix.de> -Fixes: fd7a4bed1835 ("sched, rt: Convert switched_{from, to}_rt() prio_changed_rt() to balance callbacks") -Link: http://lkml.kernel.org/r/20170124144006.29821-1-bigeasy@linutronix.de -Signed-off-by: Ingo Molnar <mingo@kernel.org> ---- - kernel/sched/deadline.c | 3 +-- - kernel/sched/rt.c | 3 +-- - 2 files changed, 2 insertions(+), 4 deletions(-) - ---- a/kernel/sched/deadline.c -+++ b/kernel/sched/deadline.c -@@ -1729,12 +1729,11 @@ static void switched_to_dl(struct rq *rq - #ifdef CONFIG_SMP - if (tsk_nr_cpus_allowed(p) > 1 && rq->dl.overloaded) - queue_push_tasks(rq); --#else -+#endif - if (dl_task(rq->curr)) - check_preempt_curr_dl(rq, p, 0); - else - resched_curr(rq); --#endif - } - } - ---- a/kernel/sched/rt.c -+++ b/kernel/sched/rt.c -@@ -2198,10 +2198,9 @@ static void switched_to_rt(struct rq *rq - #ifdef CONFIG_SMP - if (tsk_nr_cpus_allowed(p) > 1 && rq->rt.overloaded) - queue_push_tasks(rq); --#else -+#endif /* CONFIG_SMP */ - if (p->prio < rq->curr->prio) - resched_curr(rq); --#endif /* CONFIG_SMP */ - } - } - diff --git a/patches/series b/patches/series index 137fcb9ca0f8..421febb3a03e 100644 --- a/patches/series +++ b/patches/series @@ -5,7 +5,6 @@ ############################################################ # UPSTREAM changes queued ############################################################ -sched-rt-Add-a-missing-rescheduling-point.patch ############################################################ # UPSTREAM FIXES, patches pending |