linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org,
	"Steven Rostedt (VMware)" <rostedt@goodmis.org>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	Clark Williams <williams@redhat.com>,
	Daniel Bristot de Oliveira <bristot@redhat.com>,
	John Kacur <jkacur@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Mike Galbraith <efault@gmx.de>, Scott Wood <swood@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@kernel.org>
Subject: [PATCH 4.14 044/193] sched/rt: Simplify the IPI based RT balancing logic
Date: Tue, 28 Nov 2017 11:24:51 +0100	[thread overview]
Message-ID: <20171128100615.450867336@linuxfoundation.org> (raw)
In-Reply-To: <20171128100613.638270407@linuxfoundation.org>

4.14-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Steven Rostedt (Red Hat) <rostedt@goodmis.org>

commit 4bdced5c9a2922521e325896a7bbbf0132c94e56 upstream.

When a CPU lowers its priority (schedules out a high priority task for a
lower priority one), a check is made to see if any other CPU has overloaded
RT tasks (more than one). It checks the rto_mask to determine this and if so
it will request to pull one of those tasks to itself if the non running RT
task is of higher priority than the new priority of the next task to run on
the current CPU.

When we deal with large number of CPUs, the original pull logic suffered
from large lock contention on a single CPU run queue, which caused a huge
latency across all CPUs. This was caused by only having one CPU having
overloaded RT tasks and a bunch of other CPUs lowering their priority. To
solve this issue, commit:

  b6366f048e0c ("sched/rt: Use IPI to trigger RT task push migration instead of pulling")

changed the way to request a pull. Instead of grabbing the lock of the
overloaded CPU's runqueue, it simply sent an IPI to that CPU to do the work.

Although the IPI logic worked very well in removing the large latency build
up, it still could suffer from a large number of IPIs being sent to a single
CPU. On a 80 CPU box, I measured over 200us of processing IPIs. Worse yet,
when I tested this on a 120 CPU box, with a stress test that had lots of
RT tasks scheduling on all CPUs, it actually triggered the hard lockup
detector! One CPU had so many IPIs sent to it, and due to the restart
mechanism that is triggered when the source run queue has a priority status
change, the CPU spent minutes! processing the IPIs.

Thinking about this further, I realized there's no reason for each run queue
to send its own IPI. As all CPUs with overloaded tasks must be scanned
regardless if there's one or many CPUs lowering their priority, because
there's no current way to find the CPU with the highest priority task that
can schedule to one of these CPUs, there really only needs to be one IPI
being sent around at a time.

This greatly simplifies the code!

The new approach is to have each root domain have its own irq work, as the
rto_mask is per root domain. The root domain has the following fields
attached to it:

  rto_push_work	 - the irq work to process each CPU set in rto_mask
  rto_lock	 - the lock to protect some of the other rto fields
  rto_loop_start - an atomic that keeps contention down on rto_lock
		    the first CPU scheduling in a lower priority task
		    is the one to kick off the process.
  rto_loop_next	 - an atomic that gets incremented for each CPU that
		    schedules in a lower priority task.
  rto_loop	 - a variable protected by rto_lock that is used to
		    compare against rto_loop_next
  rto_cpu	 - The cpu to send the next IPI to, also protected by
		    the rto_lock.

When a CPU schedules in a lower priority task and wants to make sure
overloaded CPUs know about it. It increments the rto_loop_next. Then it
atomically sets rto_loop_start with a cmpxchg. If the old value is not "0",
then it is done, as another CPU is kicking off the IPI loop. If the old
value is "0", then it will take the rto_lock to synchronize with a possible
IPI being sent around to the overloaded CPUs.

If rto_cpu is greater than or equal to nr_cpu_ids, then there's either no
IPI being sent around, or one is about to finish. Then rto_cpu is set to the
first CPU in rto_mask and an IPI is sent to that CPU. If there's no CPUs set
in rto_mask, then there's nothing to be done.

When the CPU receives the IPI, it will first try to push any RT tasks that is
queued on the CPU but can't run because a higher priority RT task is
currently running on that CPU.

Then it takes the rto_lock and looks for the next CPU in the rto_mask. If it
finds one, it simply sends an IPI to that CPU and the process continues.

If there's no more CPUs in the rto_mask, then rto_loop is compared with
rto_loop_next. If they match, everything is done and the process is over. If
they do not match, then a CPU scheduled in a lower priority task as the IPI
was being passed around, and the process needs to start again. The first CPU
in rto_mask is sent the IPI.

This change removes this duplication of work in the IPI logic, and greatly
lowers the latency caused by the IPIs. This removed the lockup happening on
the 120 CPU machine. It also simplifies the code tremendously. What else
could anyone ask for?

Thanks to Peter Zijlstra for simplifying the rto_loop_start atomic logic and
supplying me with the rto_start_trylock() and rto_start_unlock() helper
functions.

Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Clark Williams <williams@redhat.com>
Cc: Daniel Bristot de Oliveira <bristot@redhat.com>
Cc: John Kacur <jkacur@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Scott Wood <swood@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20170424114732.1aac6dc4@gandalf.local.home
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 kernel/sched/rt.c       |  316 +++++++++++++++++-------------------------------
 kernel/sched/sched.h    |   24 ++-
 kernel/sched/topology.c |    6 
 3 files changed, 138 insertions(+), 208 deletions(-)

--- a/kernel/sched/rt.c
+++ b/kernel/sched/rt.c
@@ -74,10 +74,6 @@ static void start_rt_bandwidth(struct rt
 	raw_spin_unlock(&rt_b->rt_runtime_lock);
 }
 
-#if defined(CONFIG_SMP) && defined(HAVE_RT_PUSH_IPI)
-static void push_irq_work_func(struct irq_work *work);
-#endif
-
 void init_rt_rq(struct rt_rq *rt_rq)
 {
 	struct rt_prio_array *array;
@@ -97,13 +93,6 @@ void init_rt_rq(struct rt_rq *rt_rq)
 	rt_rq->rt_nr_migratory = 0;
 	rt_rq->overloaded = 0;
 	plist_head_init(&rt_rq->pushable_tasks);
-
-#ifdef HAVE_RT_PUSH_IPI
-	rt_rq->push_flags = 0;
-	rt_rq->push_cpu = nr_cpu_ids;
-	raw_spin_lock_init(&rt_rq->push_lock);
-	init_irq_work(&rt_rq->push_work, push_irq_work_func);
-#endif
 #endif /* CONFIG_SMP */
 	/* We start is dequeued state, because no RT tasks are queued */
 	rt_rq->rt_queued = 0;
@@ -1876,241 +1865,166 @@ static void push_rt_tasks(struct rq *rq)
 }
 
 #ifdef HAVE_RT_PUSH_IPI
+
 /*
- * The search for the next cpu always starts at rq->cpu and ends
- * when we reach rq->cpu again. It will never return rq->cpu.
- * This returns the next cpu to check, or nr_cpu_ids if the loop
- * is complete.
+ * When a high priority task schedules out from a CPU and a lower priority
+ * task is scheduled in, a check is made to see if there's any RT tasks
+ * on other CPUs that are waiting to run because a higher priority RT task
+ * is currently running on its CPU. In this case, the CPU with multiple RT
+ * tasks queued on it (overloaded) needs to be notified that a CPU has opened
+ * up that may be able to run one of its non-running queued RT tasks.
+ *
+ * All CPUs with overloaded RT tasks need to be notified as there is currently
+ * no way to know which of these CPUs have the highest priority task waiting
+ * to run. Instead of trying to take a spinlock on each of these CPUs,
+ * which has shown to cause large latency when done on machines with many
+ * CPUs, sending an IPI to the CPUs to have them push off the overloaded
+ * RT tasks waiting to run.
+ *
+ * Just sending an IPI to each of the CPUs is also an issue, as on large
+ * count CPU machines, this can cause an IPI storm on a CPU, especially
+ * if its the only CPU with multiple RT tasks queued, and a large number
+ * of CPUs scheduling a lower priority task at the same time.
+ *
+ * Each root domain has its own irq work function that can iterate over
+ * all CPUs with RT overloaded tasks. Since all CPUs with overloaded RT
+ * tassk must be checked if there's one or many CPUs that are lowering
+ * their priority, there's a single irq work iterator that will try to
+ * push off RT tasks that are waiting to run.
+ *
+ * When a CPU schedules a lower priority task, it will kick off the
+ * irq work iterator that will jump to each CPU with overloaded RT tasks.
+ * As it only takes the first CPU that schedules a lower priority task
+ * to start the process, the rto_start variable is incremented and if
+ * the atomic result is one, then that CPU will try to take the rto_lock.
+ * This prevents high contention on the lock as the process handles all
+ * CPUs scheduling lower priority tasks.
+ *
+ * All CPUs that are scheduling a lower priority task will increment the
+ * rt_loop_next variable. This will make sure that the irq work iterator
+ * checks all RT overloaded CPUs whenever a CPU schedules a new lower
+ * priority task, even if the iterator is in the middle of a scan. Incrementing
+ * the rt_loop_next will cause the iterator to perform another scan.
  *
- * rq->rt.push_cpu holds the last cpu returned by this function,
- * or if this is the first instance, it must hold rq->cpu.
  */
 static int rto_next_cpu(struct rq *rq)
 {
-	int prev_cpu = rq->rt.push_cpu;
+	struct root_domain *rd = rq->rd;
+	int next;
 	int cpu;
 
-	cpu = cpumask_next(prev_cpu, rq->rd->rto_mask);
-
 	/*
-	 * If the previous cpu is less than the rq's CPU, then it already
-	 * passed the end of the mask, and has started from the beginning.
-	 * We end if the next CPU is greater or equal to rq's CPU.
+	 * When starting the IPI RT pushing, the rto_cpu is set to -1,
+	 * rt_next_cpu() will simply return the first CPU found in
+	 * the rto_mask.
+	 *
+	 * If rto_next_cpu() is called with rto_cpu is a valid cpu, it
+	 * will return the next CPU found in the rto_mask.
+	 *
+	 * If there are no more CPUs left in the rto_mask, then a check is made
+	 * against rto_loop and rto_loop_next. rto_loop is only updated with
+	 * the rto_lock held, but any CPU may increment the rto_loop_next
+	 * without any locking.
 	 */
-	if (prev_cpu < rq->cpu) {
-		if (cpu >= rq->cpu)
-			return nr_cpu_ids;
+	for (;;) {
 
-	} else if (cpu >= nr_cpu_ids) {
-		/*
-		 * We passed the end of the mask, start at the beginning.
-		 * If the result is greater or equal to the rq's CPU, then
-		 * the loop is finished.
-		 */
-		cpu = cpumask_first(rq->rd->rto_mask);
-		if (cpu >= rq->cpu)
-			return nr_cpu_ids;
-	}
-	rq->rt.push_cpu = cpu;
+		/* When rto_cpu is -1 this acts like cpumask_first() */
+		cpu = cpumask_next(rd->rto_cpu, rd->rto_mask);
 
-	/* Return cpu to let the caller know if the loop is finished or not */
-	return cpu;
-}
+		rd->rto_cpu = cpu;
 
-static int find_next_push_cpu(struct rq *rq)
-{
-	struct rq *next_rq;
-	int cpu;
+		if (cpu < nr_cpu_ids)
+			return cpu;
 
-	while (1) {
-		cpu = rto_next_cpu(rq);
-		if (cpu >= nr_cpu_ids)
-			break;
-		next_rq = cpu_rq(cpu);
+		rd->rto_cpu = -1;
+
+		/*
+		 * ACQUIRE ensures we see the @rto_mask changes
+		 * made prior to the @next value observed.
+		 *
+		 * Matches WMB in rt_set_overload().
+		 */
+		next = atomic_read_acquire(&rd->rto_loop_next);
 
-		/* Make sure the next rq can push to this rq */
-		if (next_rq->rt.highest_prio.next < rq->rt.highest_prio.curr)
+		if (rd->rto_loop == next)
 			break;
+
+		rd->rto_loop = next;
 	}
 
-	return cpu;
+	return -1;
 }
 
-#define RT_PUSH_IPI_EXECUTING		1
-#define RT_PUSH_IPI_RESTART		2
+static inline bool rto_start_trylock(atomic_t *v)
+{
+	return !atomic_cmpxchg_acquire(v, 0, 1);
+}
 
-/*
- * When a high priority task schedules out from a CPU and a lower priority
- * task is scheduled in, a check is made to see if there's any RT tasks
- * on other CPUs that are waiting to run because a higher priority RT task
- * is currently running on its CPU. In this case, the CPU with multiple RT
- * tasks queued on it (overloaded) needs to be notified that a CPU has opened
- * up that may be able to run one of its non-running queued RT tasks.
- *
- * On large CPU boxes, there's the case that several CPUs could schedule
- * a lower priority task at the same time, in which case it will look for
- * any overloaded CPUs that it could pull a task from. To do this, the runqueue
- * lock must be taken from that overloaded CPU. Having 10s of CPUs all fighting
- * for a single overloaded CPU's runqueue lock can produce a large latency.
- * (This has actually been observed on large boxes running cyclictest).
- * Instead of taking the runqueue lock of the overloaded CPU, each of the
- * CPUs that scheduled a lower priority task simply sends an IPI to the
- * overloaded CPU. An IPI is much cheaper than taking an runqueue lock with
- * lots of contention. The overloaded CPU will look to push its non-running
- * RT task off, and if it does, it can then ignore the other IPIs coming
- * in, and just pass those IPIs off to any other overloaded CPU.
- *
- * When a CPU schedules a lower priority task, it only sends an IPI to
- * the "next" CPU that has overloaded RT tasks. This prevents IPI storms,
- * as having 10 CPUs scheduling lower priority tasks and 10 CPUs with
- * RT overloaded tasks, would cause 100 IPIs to go out at once.
- *
- * The overloaded RT CPU, when receiving an IPI, will try to push off its
- * overloaded RT tasks and then send an IPI to the next CPU that has
- * overloaded RT tasks. This stops when all CPUs with overloaded RT tasks
- * have completed. Just because a CPU may have pushed off its own overloaded
- * RT task does not mean it should stop sending the IPI around to other
- * overloaded CPUs. There may be another RT task waiting to run on one of
- * those CPUs that are of higher priority than the one that was just
- * pushed.
- *
- * An optimization that could possibly be made is to make a CPU array similar
- * to the cpupri array mask of all running RT tasks, but for the overloaded
- * case, then the IPI could be sent to only the CPU with the highest priority
- * RT task waiting, and that CPU could send off further IPIs to the CPU with
- * the next highest waiting task. Since the overloaded case is much less likely
- * to happen, the complexity of this implementation may not be worth it.
- * Instead, just send an IPI around to all overloaded CPUs.
- *
- * The rq->rt.push_flags holds the status of the IPI that is going around.
- * A run queue can only send out a single IPI at a time. The possible flags
- * for rq->rt.push_flags are:
- *
- *    (None or zero):		No IPI is going around for the current rq
- *    RT_PUSH_IPI_EXECUTING:	An IPI for the rq is being passed around
- *    RT_PUSH_IPI_RESTART:	The priority of the running task for the rq
- *				has changed, and the IPI should restart
- *				circulating the overloaded CPUs again.
- *
- * rq->rt.push_cpu contains the CPU that is being sent the IPI. It is updated
- * before sending to the next CPU.
- *
- * Instead of having all CPUs that schedule a lower priority task send
- * an IPI to the same "first" CPU in the RT overload mask, they send it
- * to the next overloaded CPU after their own CPU. This helps distribute
- * the work when there's more than one overloaded CPU and multiple CPUs
- * scheduling in lower priority tasks.
- *
- * When a rq schedules a lower priority task than what was currently
- * running, the next CPU with overloaded RT tasks is examined first.
- * That is, if CPU 1 and 5 are overloaded, and CPU 3 schedules a lower
- * priority task, it will send an IPI first to CPU 5, then CPU 5 will
- * send to CPU 1 if it is still overloaded. CPU 1 will clear the
- * rq->rt.push_flags if RT_PUSH_IPI_RESTART is not set.
- *
- * The first CPU to notice IPI_RESTART is set, will clear that flag and then
- * send an IPI to the next overloaded CPU after the rq->cpu and not the next
- * CPU after push_cpu. That is, if CPU 1, 4 and 5 are overloaded when CPU 3
- * schedules a lower priority task, and the IPI_RESTART gets set while the
- * handling is being done on CPU 5, it will clear the flag and send it back to
- * CPU 4 instead of CPU 1.
- *
- * Note, the above logic can be disabled by turning off the sched_feature
- * RT_PUSH_IPI. Then the rq lock of the overloaded CPU will simply be
- * taken by the CPU requesting a pull and the waiting RT task will be pulled
- * by that CPU. This may be fine for machines with few CPUs.
- */
-static void tell_cpu_to_push(struct rq *rq)
+static inline void rto_start_unlock(atomic_t *v)
 {
-	int cpu;
+	atomic_set_release(v, 0);
+}
 
-	if (rq->rt.push_flags & RT_PUSH_IPI_EXECUTING) {
-		raw_spin_lock(&rq->rt.push_lock);
-		/* Make sure it's still executing */
-		if (rq->rt.push_flags & RT_PUSH_IPI_EXECUTING) {
-			/*
-			 * Tell the IPI to restart the loop as things have
-			 * changed since it started.
-			 */
-			rq->rt.push_flags |= RT_PUSH_IPI_RESTART;
-			raw_spin_unlock(&rq->rt.push_lock);
-			return;
-		}
-		raw_spin_unlock(&rq->rt.push_lock);
-	}
+static void tell_cpu_to_push(struct rq *rq)
+{
+	int cpu = -1;
 
-	/* When here, there's no IPI going around */
+	/* Keep the loop going if the IPI is currently active */
+	atomic_inc(&rq->rd->rto_loop_next);
 
-	rq->rt.push_cpu = rq->cpu;
-	cpu = find_next_push_cpu(rq);
-	if (cpu >= nr_cpu_ids)
+	/* Only one CPU can initiate a loop at a time */
+	if (!rto_start_trylock(&rq->rd->rto_loop_start))
 		return;
 
-	rq->rt.push_flags = RT_PUSH_IPI_EXECUTING;
+	raw_spin_lock(&rq->rd->rto_lock);
 
-	irq_work_queue_on(&rq->rt.push_work, cpu);
+	/*
+	 * The rto_cpu is updated under the lock, if it has a valid cpu
+	 * then the IPI is still running and will continue due to the
+	 * update to loop_next, and nothing needs to be done here.
+	 * Otherwise it is finishing up and an ipi needs to be sent.
+	 */
+	if (rq->rd->rto_cpu < 0)
+		cpu = rto_next_cpu(rq);
+
+	raw_spin_unlock(&rq->rd->rto_lock);
+
+	rto_start_unlock(&rq->rd->rto_loop_start);
+
+	if (cpu >= 0)
+		irq_work_queue_on(&rq->rd->rto_push_work, cpu);
 }
 
 /* Called from hardirq context */
-static void try_to_push_tasks(void *arg)
+void rto_push_irq_work_func(struct irq_work *work)
 {
-	struct rt_rq *rt_rq = arg;
-	struct rq *rq, *src_rq;
-	int this_cpu;
+	struct rq *rq;
 	int cpu;
 
-	this_cpu = rt_rq->push_cpu;
+	rq = this_rq();
 
-	/* Paranoid check */
-	BUG_ON(this_cpu != smp_processor_id());
-
-	rq = cpu_rq(this_cpu);
-	src_rq = rq_of_rt_rq(rt_rq);
-
-again:
+	/*
+	 * We do not need to grab the lock to check for has_pushable_tasks.
+	 * When it gets updated, a check is made if a push is possible.
+	 */
 	if (has_pushable_tasks(rq)) {
 		raw_spin_lock(&rq->lock);
-		push_rt_task(rq);
+		push_rt_tasks(rq);
 		raw_spin_unlock(&rq->lock);
 	}
 
-	/* Pass the IPI to the next rt overloaded queue */
-	raw_spin_lock(&rt_rq->push_lock);
-	/*
-	 * If the source queue changed since the IPI went out,
-	 * we need to restart the search from that CPU again.
-	 */
-	if (rt_rq->push_flags & RT_PUSH_IPI_RESTART) {
-		rt_rq->push_flags &= ~RT_PUSH_IPI_RESTART;
-		rt_rq->push_cpu = src_rq->cpu;
-	}
+	raw_spin_lock(&rq->rd->rto_lock);
 
-	cpu = find_next_push_cpu(src_rq);
+	/* Pass the IPI to the next rt overloaded queue */
+	cpu = rto_next_cpu(rq);
 
-	if (cpu >= nr_cpu_ids)
-		rt_rq->push_flags &= ~RT_PUSH_IPI_EXECUTING;
-	raw_spin_unlock(&rt_rq->push_lock);
+	raw_spin_unlock(&rq->rd->rto_lock);
 
-	if (cpu >= nr_cpu_ids)
+	if (cpu < 0)
 		return;
 
-	/*
-	 * It is possible that a restart caused this CPU to be
-	 * chosen again. Don't bother with an IPI, just see if we
-	 * have more to push.
-	 */
-	if (unlikely(cpu == rq->cpu))
-		goto again;
-
 	/* Try the next RT overloaded CPU */
-	irq_work_queue_on(&rt_rq->push_work, cpu);
-}
-
-static void push_irq_work_func(struct irq_work *work)
-{
-	struct rt_rq *rt_rq = container_of(work, struct rt_rq, push_work);
-
-	try_to_push_tasks(rt_rq);
+	irq_work_queue_on(&rq->rd->rto_push_work, cpu);
 }
 #endif /* HAVE_RT_PUSH_IPI */
 
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -502,7 +502,7 @@ static inline int rt_bandwidth_enabled(v
 }
 
 /* RT IPI pull logic requires IRQ_WORK */
-#ifdef CONFIG_IRQ_WORK
+#if defined(CONFIG_IRQ_WORK) && defined(CONFIG_SMP)
 # define HAVE_RT_PUSH_IPI
 #endif
 
@@ -524,12 +524,6 @@ struct rt_rq {
 	unsigned long rt_nr_total;
 	int overloaded;
 	struct plist_head pushable_tasks;
-#ifdef HAVE_RT_PUSH_IPI
-	int push_flags;
-	int push_cpu;
-	struct irq_work push_work;
-	raw_spinlock_t push_lock;
-#endif
 #endif /* CONFIG_SMP */
 	int rt_queued;
 
@@ -638,6 +632,19 @@ struct root_domain {
 	struct dl_bw dl_bw;
 	struct cpudl cpudl;
 
+#ifdef HAVE_RT_PUSH_IPI
+	/*
+	 * For IPI pull requests, loop across the rto_mask.
+	 */
+	struct irq_work rto_push_work;
+	raw_spinlock_t rto_lock;
+	/* These are only updated and read within rto_lock */
+	int rto_loop;
+	int rto_cpu;
+	/* These atomics are updated outside of a lock */
+	atomic_t rto_loop_next;
+	atomic_t rto_loop_start;
+#endif
 	/*
 	 * The "RT overload" flag: it gets set if a CPU has more than
 	 * one runnable RT task.
@@ -655,6 +662,9 @@ extern void init_defrootdomain(void);
 extern int sched_init_domains(const struct cpumask *cpu_map);
 extern void rq_attach_root(struct rq *rq, struct root_domain *rd);
 
+#ifdef HAVE_RT_PUSH_IPI
+extern void rto_push_irq_work_func(struct irq_work *work);
+#endif
 #endif /* CONFIG_SMP */
 
 /*
--- a/kernel/sched/topology.c
+++ b/kernel/sched/topology.c
@@ -269,6 +269,12 @@ static int init_rootdomain(struct root_d
 	if (!zalloc_cpumask_var(&rd->rto_mask, GFP_KERNEL))
 		goto free_dlo_mask;
 
+#ifdef HAVE_RT_PUSH_IPI
+	rd->rto_cpu = -1;
+	raw_spin_lock_init(&rd->rto_lock);
+	init_irq_work(&rd->rto_push_work, rto_push_irq_work_func);
+#endif
+
 	init_dl_bw(&rd->dl_bw);
 	if (cpudl_init(&rd->cpudl) != 0)
 		goto free_rto_mask;

  parent reply	other threads:[~2017-11-28 10:44 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-28 10:24 [PATCH 4.14 000/193] 4.14.3-stable review Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 002/193] s390/noexec: execute kexec datamover without DAT Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 003/193] s390/runtime instrumention: fix possible memory corruption Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 004/193] s390/guarded storage: " Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 005/193] s390/disassembler: add missing end marker for e7 table Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 006/193] s390/disassembler: increase show_code buffer size Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 008/193] ACPI / EC: Fix regression related to triggering source of EC event handling Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 009/193] cpufreq: schedutil: Reset cached_raw_freq when not in sync with next_freq Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 010/193] serdev: fix registration of second slave Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 011/193] sched: Make resched_cpu() unconditional Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 012/193] lib/mpi: call cond_resched() from mpi_powm() loop Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 013/193] x86/boot: Fix boot failure when SMP MP-table is based at 0 Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 014/193] x86/decoder: Add new TEST instruction pattern Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 015/193] x86/entry/64: Fix entry_SYSCALL_64_after_hwframe() IRQ tracing Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 016/193] x86/entry/64: Add missing irqflags tracing to native_load_gs_index() Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 017/193] perf/x86/intel: Hide TSX events when RTM is not supported Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 018/193] arm64: Implement arch-specific pte_access_permitted() Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 019/193] ARM: 8722/1: mm: make STRICT_KERNEL_RWX effective for LPAE Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 020/193] ARM: 8721/1: mm: dump: check hardware RO bit " Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 021/193] uapi: fix linux/tls.h userspace compilation error Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 022/193] uapi: fix linux/rxrpc.h userspace compilation errors Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 023/193] MIPS: cmpxchg64() and HAVE_VIRT_CPU_ACCOUNTING_GEN dont work for 32-bit SMP Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 024/193] MIPS: ralink: Fix MT7628 pinmux Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 025/193] MIPS: ralink: Fix typo in mt7628 pinmux function Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 026/193] net: mvneta: fix handling of the Tx descriptor counter Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 027/193] nbd: wait uninterruptible for the dead timeout Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 028/193] nbd: dont start req until after the dead connection logic Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 029/193] PM / OPP: Add missing of_node_put(np) Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 030/193] PCI/ASPM: Account for downstream devices Port Common_Mode_Restore_Time Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 031/193] PCI/ASPM: Use correct capability pointer to program LTR_L1.2_THRESHOLD Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 032/193] PCI: hv: Use effective affinity mask Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 033/193] PCI: Set Cavium ACS capability quirk flags to assert RR/CR/SV/UF Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 034/193] PCI: Apply Cavium ThunderX ACS quirk to more Root Ports Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 035/193] ALSA: hda: Add Raven PCI ID Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 037/193] dm cache: fix race condition in the writeback mode overwrite_bio optimisation Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 039/193] dm zoned: ignore last smaller runt zone Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 040/193] dm mpath: remove annoying message of blk_get_request() returned -11 Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 041/193] dm bufio: fix integer overflow when limiting maximum cache size Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 042/193] ovl: Put upperdentry if ovl_check_origin() fails Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 043/193] dm: allocate struct mapped_device with kvzalloc Greg Kroah-Hartman
2017-11-28 10:24 ` Greg Kroah-Hartman [this message]
2017-11-28 10:24 ` [PATCH 4.14 045/193] MIPS: pci: Remove KERN_WARN instance inside the mt7620 driver Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 046/193] dm: fix race between dm_get_from_kobject() and __dm_destroy() Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 047/193] dm: discard support requires all targets in a table support discards Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 048/193] MIPS: Fix odd fp register warnings with MIPS64r2 Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 049/193] MIPS: Fix MIPS64 FP save/restore on 32-bit kernels Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 050/193] MIPS: dts: remove bogus bcm96358nb4ser.dtb from dtb-y entry Greg Kroah-Hartman
2017-11-28 10:24 ` [PATCH 4.14 051/193] MIPS: Fix an n32 core file generation regset support regression Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 053/193] MIPS: math-emu: Fix final emulation phase for certain instructions Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 054/193] rt2x00usb: mark device removed when get ENOENT usb error Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 055/193] mm/z3fold.c: use kref to prevent page free/compact race Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 056/193] autofs: dont fail mount for transient error Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 057/193] nilfs2: fix race condition that causes file system corruption Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 058/193] fscrypt: lock mutex before checking for bounce page pool Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 059/193] eCryptfs: use after free in ecryptfs_release_messaging() Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 060/193] libceph: dont WARN() if user tries to add invalid key Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 061/193] bcache: check ca->alloc_thread initialized before wake up it Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 062/193] fs: guard_bio_eod() needs to consider partitions Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 063/193] fanotify: fix fsnotify_prepare_user_wait() failure Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 064/193] isofs: fix timestamps beyond 2027 Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 065/193] btrfs: change how we decide to commit transactions during flushing Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 066/193] f2fs: expose some sectors to user in inline data or dentry case Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 067/193] NFS: Fix typo in nomigration mount option Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 068/193] NFS: Revert "NFS: Move the flock open mode check into nfs_flock()" Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 069/193] nfs: Fix ugly referral attributes Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 070/193] NFS: Avoid RCU usage in tracepoints Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 071/193] NFS: revalidate "." etc correctly on "open" Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 072/193] nfsd: deal with revoked delegations appropriately Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 073/193] rtlwifi: rtl8192ee: Fix memory leak when loading firmware Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 074/193] rtlwifi: fix uninitialized rtlhal->last_suspend_sec time Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 075/193] iwlwifi: fix firmware names for 9000 and A000 series hw Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 076/193] md: fix deadlock error in recent patch Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 077/193] md: dont check MD_SB_CHANGE_CLEAN in md_allow_write Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 078/193] Bluetooth: btqcomsmd: Add support for BD address setup Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 079/193] md/bitmap: revert a patch Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 080/193] fsnotify: clean up fsnotify_prepare/finish_user_wait() Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 081/193] fsnotify: pin both inode and vfsmount mark Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 082/193] fsnotify: fix pinning group in fsnotify_prepare_user_wait() Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 083/193] ata: fixes kernel crash while tracing ata_eh_link_autopsy event Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 084/193] ext4: fix interaction between i_size, fallocate, and delalloc after a crash Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 085/193] ext4: prevent data corruption with inline data + DAX Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 086/193] ext4: prevent data corruption with journaling " Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 087/193] ALSA: pcm: update tstamp only if audio_tstamp changed Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 088/193] ALSA: usb-audio: Add sanity checks to FE parser Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 089/193] ALSA: usb-audio: Fix potential out-of-bound access at parsing SU Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 090/193] ALSA: usb-audio: Add sanity checks in v2 clock parsers Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 091/193] ALSA: timer: Remove kernel warning at compat ioctl error paths Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 092/193] ALSA: hda/realtek - Fix ALC275 no sound issue Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 093/193] ALSA: hda: Fix too short HDMI/DP chmap reporting Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 094/193] ALSA: hda - Fix yet remaining issue with vmaster 0dB initialization Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 095/193] ALSA: hda/realtek - Fix ALC700 family no sound issue Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 096/193] ASoC: sun8i-codec: Invert Master / Slave condition Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 097/193] ASoC: sun8i-codec: Fix left and right channels inversion Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 098/193] ASoC: sun8i-codec: Set the BCLK divider Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 099/193] mfd: lpc_ich: Avoton/Rangeley uses SPI_BYT method Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 100/193] fix a page leak in vhost_scsi_iov_to_sgl() error recovery Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 101/193] 9p: Fix missing commas in mount options Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 102/193] fs/9p: Compare qid.path in v9fs_test_inode Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 103/193] net/9p: Switch to wait_event_killable() Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 104/193] scsi: qla2xxx: Suppress a kernel complaint in qla_init_base_qpair() Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 105/193] scsi: sd_zbc: Fix sd_zbc_read_zoned_characteristics() Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 106/193] scsi: lpfc: fix pci hot plug crash in timer management routines Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 107/193] scsi: lpfc: fix pci hot plug crash in list_add call Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 108/193] scsi: lpfc: Fix crash receiving ELS while detaching driver Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 109/193] scsi: lpfc: Fix FCP hba_wqidx assignment Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 110/193] scsi: lpfc: Fix oops if nvmet_fc_register_targetport fails Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 111/193] iscsi-target: Make TASK_REASSIGN use proper se_cmd->cmd_kref Greg Kroah-Hartman
2017-11-28 10:25 ` [PATCH 4.14 112/193] iscsi-target: Fix non-immediate TMR reference leak Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 113/193] target: fix null pointer regression in core_tmr_drain_tmr_list Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 114/193] target: fix buffer offset in core_scsi3_pri_read_full_status Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 115/193] target: Fix QUEUE_FULL + SCSI task attribute handling Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 116/193] target: Fix caw_sem leak in transport_generic_request_failure Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 117/193] target: Fix quiese during transport_write_pending_qf endless loop Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 118/193] target: Avoid early CMD_T_PRE_EXECUTE failures during ABORT_TASK Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 119/193] mtd: Avoid probe failures when mtd->dbg.dfs_dir is invalid Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 120/193] mtd: nand: Export nand_reset() symbol Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 121/193] mtd: nand: atmel: Actually use the PM ops Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 122/193] mtd: nand: omap2: Fix subpage write Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 123/193] mtd: nand: Fix writing mtdoops to nand flash Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 124/193] mtd: nand: mtk: fix infinite ECC decode IRQ issue Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 125/193] mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush sequence Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 126/193] p54: dont unregister leds when they are not initialized Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 127/193] block: Fix a race between blk_cleanup_queue() and timeout handling Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 128/193] raid1: prevent freeze_array/wait_all_barriers deadlock Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 129/193] genirq: Track whether the trigger type has been set Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 130/193] irqchip/gic-v3: Fix ppi-partitions lookup Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 131/193] lockd: double unregister of inetaddr notifiers Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 132/193] KVM: PPC: Book3S HV: Dont call real-mode XICS hypercall handlers if not enabled Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 133/193] KVM: nVMX: set IDTR and GDTR limits when loading L1 host state Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 136/193] dax: fix PMD faults on zero-length files Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 137/193] dax: fix general protection fault in dax_alloc_inode Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 138/193] SUNRPC: Fix tracepoint storage issues with svc_recv and svc_rqst_status Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 139/193] clk: ti: dra7-atl-clock: fix child-node lookups Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 140/193] libnvdimm, dimm: clear locked status on successful DIMM enable Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 141/193] libnvdimm, pfn: make resource attribute only readable by root Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 142/193] libnvdimm, namespace: fix label initialization to use valid seq numbers Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 143/193] libnvdimm, region : make resource attribute only readable by root Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 144/193] libnvdimm, namespace: " Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 145/193] svcrdma: Preserve CB send buffer across retransmits Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 146/193] IB/srpt: Do not accept invalid initiator port names Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 147/193] IB/cm: Fix memory corruption in handling CM request Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 148/193] IB/hfi1: Fix incorrect available receive user context count Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 149/193] IB/srp: Avoid that a cable pull can trigger a kernel crash Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 150/193] IB/core: Avoid crash on pkey enforcement failed in received MADs Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 151/193] IB/core: Only maintain real QPs in the security lists Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 152/193] NFC: fix device-allocation error return Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 153/193] spi-nor: intel-spi: Fix broken software sequencing codes Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 154/193] i40e: Use smp_rmb rather than read_barrier_depends Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 155/193] igb: " Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 156/193] igbvf: " Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 157/193] ixgbevf: " Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 158/193] i40evf: " Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 159/193] fm10k: " Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 160/193] ixgbe: Fix skb list corruption on Power systems Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 161/193] parisc: Fix validity check of pointer size argument in new CAS implementation Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 162/193] powerpc: Fix boot on BOOK3S_32 with CONFIG_STRICT_KERNEL_RWX Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 163/193] powerpc/mm/radix: Fix crashes on Power9 DD1 with radix MMU and STRICT_RWX Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 164/193] powerpc/perf/imc: Use cpu_to_node() not topology_physical_package_id() Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 165/193] powerpc/signal: Properly handle return value from uprobe_deny_signal() Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 166/193] powerpc/64s: Fix masking of SRR1 bits on instruction fault Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 167/193] powerpc/64s/radix: Fix 128TB-512TB virtual address boundary case allocation Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 168/193] powerpc/64s/hash: Fix 512T hint detection to use >= 128T Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 169/193] powerpc/64s/hash: Fix 128TB-512TB virtual address boundary case allocation Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 170/193] powerpc/64s/hash: Fix fork() with 512TB process address space Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 171/193] powerpc/64s/hash: Allow MAP_FIXED allocations to cross 128TB boundary Greg Kroah-Hartman
2017-11-28 10:26 ` [PATCH 4.14 172/193] media: Dont do DMA on stack for firmware upload in the AS102 driver Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 173/193] media: rc: check for integer overflow Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 174/193] media: rc: nec decoder should not send both repeat and keycode Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 175/193] [media] cx231xx-cards: fix NULL-deref on missing association descriptor Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 176/193] media: v4l2-ctrl: Fix flags field on Control events Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 177/193] media: venus: fix wrong size on dma_free Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 178/193] media: venus: venc: fix bytesused v4l2_plane field Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 179/193] media: venus: reimplement decoder stop command Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 180/193] ARM64: dts: meson-gxl: Add alternate ARM Trusted Firmware reserved memory zone Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 181/193] iwlwifi: fix wrong struct for a000 device Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 182/193] iwlwifi: add a new " Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 183/193] iwlwifi: pcie: sort IDs for the 9000 series for easier comparisons Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 184/193] iwlwifi: add new cards for a000 series Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 185/193] iwlwifi: add new cards for 8265 series Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 186/193] iwlwifi: add new cards for 8260 series Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 187/193] iwlwifi: fix PCI IDs and configuration mapping for 9000 series Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 188/193] iwlwifi: mvm: support version 7 of the SCAN_REQ_UMAC FW command Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 189/193] e1000e: Fix error path in link detection Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 190/193] e1000e: Fix return value test Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 191/193] e1000e: Separate signaling for link check/link up Greg Kroah-Hartman
2017-11-28 10:27 ` [PATCH 4.14 192/193] e1000e: Avoid receiver overrun interrupt bursts Greg Kroah-Hartman
     [not found] ` <5a1d7f8d.89ce1c0a.19604.d3a7@mx.google.com>
2017-11-28 15:52   ` [PATCH 4.14 000/193] 4.14.3-stable review Greg Kroah-Hartman
2017-11-28 21:42     ` Mark Brown
2017-12-01  0:29     ` Kevin Hilman
2017-11-28 18:27 ` [Lkft-triage] " Naresh Kamboju
2017-11-29  8:06   ` Greg Kroah-Hartman
2017-11-28 19:56 ` Shuah Khan
2017-11-28 21:52 ` Guenter Roeck
2017-11-29  6:33   ` Greg Kroah-Hartman
2017-11-28 22:17 ` Tom Gall
2017-11-29  5:13   ` Greg Kroah-Hartman
2017-11-29 14:01     ` Tom Gall
2017-11-29 16:04 ` Zdenek Kaspar
2017-11-29 17:44   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171128100615.450867336@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=bristot@redhat.com \
    --cc=efault@gmx.de \
    --cc=jkacur@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=stable@vger.kernel.org \
    --cc=swood@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=williams@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).