summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2017-04-04 14:45:09 +0200
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2017-04-04 14:45:09 +0200
commit57a58cce4b5a368b4818c2b8bf81c99520debfe4 (patch)
tree46cf7808baba7796cc3da879299c93092bd0a159
parente6a76dc34a7be542641b32770e0ca3e29f507bb9 (diff)
downloadlinux-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.patch2
-rw-r--r--patches/pinctrl-qcom-Use-raw-spinlock-variants.patch18
-rw-r--r--patches/sched-rt-Add-a-missing-rescheduling-point.patch69
-rw-r--r--patches/series1
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