]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
patches for 4.4
authorSasha Levin <sashal@kernel.org>
Tue, 18 Dec 2018 00:34:53 +0000 (19:34 -0500)
committerSasha Levin <sashal@kernel.org>
Tue, 18 Dec 2018 00:34:53 +0000 (19:34 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-4.4/lib-interval_tree_test.c-allow-full-tree-search.patch [new file with mode: 0644]
queue-4.4/lib-interval_tree_test.c-allow-users-to-limit-scope-.patch [new file with mode: 0644]
queue-4.4/lib-interval_tree_test.c-make-test-options-module-pa.patch [new file with mode: 0644]
queue-4.4/lib-rbtree-test-lower-default-params.patch [new file with mode: 0644]
queue-4.4/lib-rbtree_test.c-make-input-module-parameters.patch [new file with mode: 0644]
queue-4.4/powerpc-boot-fix-random-libfdt-related-build-errors.patch [new file with mode: 0644]
queue-4.4/series [new file with mode: 0644]
queue-4.4/timer-debug-change-proc-timer_list-from-0444-to-0400.patch [new file with mode: 0644]

diff --git a/queue-4.4/lib-interval_tree_test.c-allow-full-tree-search.patch b/queue-4.4/lib-interval_tree_test.c-allow-full-tree-search.patch
new file mode 100644 (file)
index 0000000..c6fc230
--- /dev/null
@@ -0,0 +1,67 @@
+From bb7690c29a68a153a7a70098c84f506f14801c7a Mon Sep 17 00:00:00 2001
+From: Davidlohr Bueso <dave@stgolabs.net>
+Date: Mon, 10 Jul 2017 15:51:52 -0700
+Subject: lib/interval_tree_test.c: allow full tree search
+
+[ Upstream commit c46ecce431ebe6b1a9551d1f530eb432dae5c39b ]
+
+...  such that a user can specify visiting all the nodes in the tree
+(intersects with the world).  This is a nice opposite from the very
+basic default query which is a single point.
+
+Link: http://lkml.kernel.org/r/20170518174936.20265-5-dave@stgolabs.net
+Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ lib/interval_tree_test.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c
+index 1093f0496d5e..409383463879 100644
+--- a/lib/interval_tree_test.c
++++ b/lib/interval_tree_test.c
+@@ -15,6 +15,7 @@ __param(int, perf_loops, 100000, "Number of iterations modifying the tree");
+ __param(int, nsearches, 100, "Number of searches to the interval tree");
+ __param(int, search_loops, 10000, "Number of iterations searching the tree");
++__param(bool, search_all, false, "Searches will iterate all nodes in the tree");
+ static struct rb_root root = RB_ROOT;
+@@ -24,13 +25,13 @@ static u32 *queries = NULL;
+ static struct rnd_state rnd;
+ static inline unsigned long
+-search(unsigned long query, struct rb_root *root)
++search(struct rb_root *root, unsigned long start, unsigned long last)
+ {
+       struct interval_tree_node *node;
+       unsigned long results = 0;
+-      for (node = interval_tree_iter_first(root, query, query); node;
+-           node = interval_tree_iter_next(node, query, query))
++      for (node = interval_tree_iter_first(root, start, last); node;
++           node = interval_tree_iter_next(node, start, last))
+               results++;
+       return results;
+ }
+@@ -99,8 +100,12 @@ static int interval_tree_test_init(void)
+       results = 0;
+       for (i = 0; i < search_loops; i++)
+-              for (j = 0; j < nsearches; j++)
+-                      results += search(queries[j], &root);
++              for (j = 0; j < nsearches; j++) {
++                      unsigned long start = search_all ? 0 : queries[j];
++                      unsigned long last = search_all ? max_endpoint : queries[j];
++
++                      results += search(&root, start, last);
++              }
+       time2 = get_cycles();
+       time = time2 - time1;
+-- 
+2.19.1
+
diff --git a/queue-4.4/lib-interval_tree_test.c-allow-users-to-limit-scope-.patch b/queue-4.4/lib-interval_tree_test.c-allow-users-to-limit-scope-.patch
new file mode 100644 (file)
index 0000000..b10cf7a
--- /dev/null
@@ -0,0 +1,65 @@
+From ed3e2bdf858c765e17721e6332f28dfd65d8dd03 Mon Sep 17 00:00:00 2001
+From: Davidlohr Bueso <dave@stgolabs.net>
+Date: Mon, 10 Jul 2017 15:51:49 -0700
+Subject: lib/interval_tree_test.c: allow users to limit scope of endpoint
+
+[ Upstream commit a8ec14d4f6aa8e245efacc992c8ee6ea0464ce2a ]
+
+Add a 'max_endpoint' parameter such that users may easily limit the size
+of the intervals that are randomly generated.
+
+Link: http://lkml.kernel.org/r/20170518174936.20265-4-dave@stgolabs.net
+Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ lib/interval_tree_test.c | 23 +++++++++++++----------
+ 1 file changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c
+index bababcf7ffdd..222c8010bda0 100644
+--- a/lib/interval_tree_test.c
++++ b/lib/interval_tree_test.c
+@@ -17,6 +17,7 @@ __param(int, nsearches, 100, "Number of searches to the interval tree");
+ __param(int, search_loops, 1000, "Number of iterations searching the tree");
+ __param(bool, search_all, false, "Searches will iterate all nodes in the tree");
++__param(uint, max_endpoint, ~0, "Largest value for the interval's endpoint");
+ static struct rb_root root = RB_ROOT;
+ static struct interval_tree_node *nodes = NULL;
+@@ -41,18 +42,20 @@ static void init(void)
+       int i;
+       for (i = 0; i < nnodes; i++) {
+-              u32 a = prandom_u32_state(&rnd);
+-              u32 b = prandom_u32_state(&rnd);
+-              if (a <= b) {
+-                      nodes[i].start = a;
+-                      nodes[i].last = b;
+-              } else {
+-                      nodes[i].start = b;
+-                      nodes[i].last = a;
+-              }
++              u32 b = (prandom_u32_state(&rnd) >> 4) % max_endpoint;
++              u32 a = (prandom_u32_state(&rnd) >> 4) % b;
++
++              nodes[i].start = a;
++              nodes[i].last = b;
+       }
++
++      /*
++       * Limit the search scope to what the user defined.
++       * Otherwise we are merely measuring empty walks,
++       * which is pointless.
++       */
+       for (i = 0; i < nsearches; i++)
+-              queries[i] = prandom_u32_state(&rnd);
++              queries[i] = (prandom_u32_state(&rnd) >> 4) % max_endpoint;
+ }
+ static int interval_tree_test_init(void)
+-- 
+2.19.1
+
diff --git a/queue-4.4/lib-interval_tree_test.c-make-test-options-module-pa.patch b/queue-4.4/lib-interval_tree_test.c-make-test-options-module-pa.patch
new file mode 100644 (file)
index 0000000..b6c407d
--- /dev/null
@@ -0,0 +1,145 @@
+From b3b0a7572d903a8057aa8bf26a575610e80ac649 Mon Sep 17 00:00:00 2001
+From: Davidlohr Bueso <dave@stgolabs.net>
+Date: Mon, 10 Jul 2017 15:51:46 -0700
+Subject: lib/interval_tree_test.c: make test options module parameters
+
+[ Upstream commit a54dae0338b7f01eb0f9c7571fb9b74f791d1c6b ]
+
+Allows for more flexible debugging.
+
+Link: http://lkml.kernel.org/r/20170518174936.20265-3-dave@stgolabs.net
+Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ lib/interval_tree_test.c | 57 ++++++++++++++++++++++++++++------------
+ 1 file changed, 40 insertions(+), 17 deletions(-)
+
+diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c
+index 245900b98c8e..1093f0496d5e 100644
+--- a/lib/interval_tree_test.c
++++ b/lib/interval_tree_test.c
+@@ -1,16 +1,25 @@
+ #include <linux/module.h>
++#include <linux/moduleparam.h>
+ #include <linux/interval_tree.h>
+ #include <linux/random.h>
++#include <linux/slab.h>
+ #include <asm/timex.h>
+-#define NODES        100
+-#define PERF_LOOPS   100000
+-#define SEARCHES     100
+-#define SEARCH_LOOPS 10000
++#define __param(type, name, init, msg)                \
++      static type name = init;                \
++      module_param(name, type, 0444);         \
++      MODULE_PARM_DESC(name, msg);
++
++__param(int, nnodes, 100, "Number of nodes in the interval tree");
++__param(int, perf_loops, 100000, "Number of iterations modifying the tree");
++
++__param(int, nsearches, 100, "Number of searches to the interval tree");
++__param(int, search_loops, 10000, "Number of iterations searching the tree");
++
+ static struct rb_root root = RB_ROOT;
+-static struct interval_tree_node nodes[NODES];
+-static u32 queries[SEARCHES];
++static struct interval_tree_node *nodes = NULL;
++static u32 *queries = NULL;
+ static struct rnd_state rnd;
+@@ -29,7 +38,8 @@ search(unsigned long query, struct rb_root *root)
+ static void init(void)
+ {
+       int i;
+-      for (i = 0; i < NODES; i++) {
++
++      for (i = 0; i < nnodes; i++) {
+               u32 a = prandom_u32_state(&rnd);
+               u32 b = prandom_u32_state(&rnd);
+               if (a <= b) {
+@@ -40,7 +50,7 @@ static void init(void)
+                       nodes[i].last = a;
+               }
+       }
+-      for (i = 0; i < SEARCHES; i++)
++      for (i = 0; i < nsearches; i++)
+               queries[i] = prandom_u32_state(&rnd);
+ }
+@@ -50,6 +60,16 @@ static int interval_tree_test_init(void)
+       unsigned long results;
+       cycles_t time1, time2, time;
++      nodes = kmalloc(nnodes * sizeof(struct interval_tree_node), GFP_KERNEL);
++      if (!nodes)
++              return -ENOMEM;
++
++      queries = kmalloc(nsearches * sizeof(int), GFP_KERNEL);
++      if (!queries) {
++              kfree(nodes);
++              return -ENOMEM;
++      }
++
+       printk(KERN_ALERT "interval tree insert/remove");
+       prandom_seed_state(&rnd, 3141592653589793238ULL);
+@@ -57,39 +77,42 @@ static int interval_tree_test_init(void)
+       time1 = get_cycles();
+-      for (i = 0; i < PERF_LOOPS; i++) {
+-              for (j = 0; j < NODES; j++)
++      for (i = 0; i < perf_loops; i++) {
++              for (j = 0; j < nnodes; j++)
+                       interval_tree_insert(nodes + j, &root);
+-              for (j = 0; j < NODES; j++)
++              for (j = 0; j < nnodes; j++)
+                       interval_tree_remove(nodes + j, &root);
+       }
+       time2 = get_cycles();
+       time = time2 - time1;
+-      time = div_u64(time, PERF_LOOPS);
++      time = div_u64(time, perf_loops);
+       printk(" -> %llu cycles\n", (unsigned long long)time);
+       printk(KERN_ALERT "interval tree search");
+-      for (j = 0; j < NODES; j++)
++      for (j = 0; j < nnodes; j++)
+               interval_tree_insert(nodes + j, &root);
+       time1 = get_cycles();
+       results = 0;
+-      for (i = 0; i < SEARCH_LOOPS; i++)
+-              for (j = 0; j < SEARCHES; j++)
++      for (i = 0; i < search_loops; i++)
++              for (j = 0; j < nsearches; j++)
+                       results += search(queries[j], &root);
+       time2 = get_cycles();
+       time = time2 - time1;
+-      time = div_u64(time, SEARCH_LOOPS);
+-      results = div_u64(results, SEARCH_LOOPS);
++      time = div_u64(time, search_loops);
++      results = div_u64(results, search_loops);
+       printk(" -> %llu cycles (%lu results)\n",
+              (unsigned long long)time, results);
++      kfree(queries);
++      kfree(nodes);
++
+       return -EAGAIN; /* Fail will directly unload the module */
+ }
+-- 
+2.19.1
+
diff --git a/queue-4.4/lib-rbtree-test-lower-default-params.patch b/queue-4.4/lib-rbtree-test-lower-default-params.patch
new file mode 100644 (file)
index 0000000..dcf07ba
--- /dev/null
@@ -0,0 +1,58 @@
+From a4a61d53475d30277c65f0bac35d630af0bbf108 Mon Sep 17 00:00:00 2001
+From: Davidlohr Bueso <dave@stgolabs.net>
+Date: Fri, 17 Nov 2017 15:28:27 -0800
+Subject: lib/rbtree-test: lower default params
+
+[ Upstream commit 0b548e33e6cb2bff240fdaf1783783be15c29080 ]
+
+Fengguang reported soft lockups while running the rbtree and interval
+tree test modules.  The logic for these tests all occur in init phase,
+and we currently are pounding with the default values for number of
+nodes and number of iterations of each test.  Reduce the latter by two
+orders of magnitude.  This does not influence the value of the tests in
+that one thousand times by default is enough to get the picture.
+
+Link: http://lkml.kernel.org/r/20171109161715.xai2dtwqw2frhkcm@linux-n805
+Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
+Reported-by: Fengguang Wu <fengguang.wu@intel.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ lib/interval_tree_test.c | 4 ++--
+ lib/rbtree_test.c        | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/lib/interval_tree_test.c b/lib/interval_tree_test.c
+index 409383463879..bababcf7ffdd 100644
+--- a/lib/interval_tree_test.c
++++ b/lib/interval_tree_test.c
+@@ -11,10 +11,10 @@
+       MODULE_PARM_DESC(name, msg);
+ __param(int, nnodes, 100, "Number of nodes in the interval tree");
+-__param(int, perf_loops, 100000, "Number of iterations modifying the tree");
++__param(int, perf_loops, 1000, "Number of iterations modifying the tree");
+ __param(int, nsearches, 100, "Number of searches to the interval tree");
+-__param(int, search_loops, 10000, "Number of iterations searching the tree");
++__param(int, search_loops, 1000, "Number of iterations searching the tree");
+ __param(bool, search_all, false, "Searches will iterate all nodes in the tree");
+diff --git a/lib/rbtree_test.c b/lib/rbtree_test.c
+index e83331aa1b7f..afedd3770562 100644
+--- a/lib/rbtree_test.c
++++ b/lib/rbtree_test.c
+@@ -11,7 +11,7 @@
+       MODULE_PARM_DESC(name, msg);
+ __param(int, nnodes, 100, "Number of nodes in the rb-tree");
+-__param(int, perf_loops, 100000, "Number of iterations modifying the rb-tree");
++__param(int, perf_loops, 1000, "Number of iterations modifying the rb-tree");
+ __param(int, check_loops, 100, "Number of iterations modifying and verifying the rb-tree");
+ struct test_node {
+-- 
+2.19.1
+
diff --git a/queue-4.4/lib-rbtree_test.c-make-input-module-parameters.patch b/queue-4.4/lib-rbtree_test.c-make-input-module-parameters.patch
new file mode 100644 (file)
index 0000000..56c18bf
--- /dev/null
@@ -0,0 +1,155 @@
+From e20e600a8d2c98665ec9b80008f199a778acdd93 Mon Sep 17 00:00:00 2001
+From: Davidlohr Bueso <dave@stgolabs.net>
+Date: Fri, 8 Sep 2017 16:14:46 -0700
+Subject: lib/rbtree_test.c: make input module parameters
+
+[ Upstream commit 223f8911eace60c787f8767c25148b80ece9732a ]
+
+Allows for more flexible debugging.
+
+Link: http://lkml.kernel.org/r/20170719014603.19029-5-dave@stgolabs.net
+Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ lib/rbtree_test.c | 55 +++++++++++++++++++++++++++++------------------
+ 1 file changed, 34 insertions(+), 21 deletions(-)
+
+diff --git a/lib/rbtree_test.c b/lib/rbtree_test.c
+index 8b3c9dc88262..e83331aa1b7f 100644
+--- a/lib/rbtree_test.c
++++ b/lib/rbtree_test.c
+@@ -1,11 +1,18 @@
+ #include <linux/module.h>
++#include <linux/moduleparam.h>
+ #include <linux/rbtree_augmented.h>
+ #include <linux/random.h>
++#include <linux/slab.h>
+ #include <asm/timex.h>
+-#define NODES       100
+-#define PERF_LOOPS  100000
+-#define CHECK_LOOPS 100
++#define __param(type, name, init, msg)                \
++      static type name = init;                \
++      module_param(name, type, 0444);         \
++      MODULE_PARM_DESC(name, msg);
++
++__param(int, nnodes, 100, "Number of nodes in the rb-tree");
++__param(int, perf_loops, 100000, "Number of iterations modifying the rb-tree");
++__param(int, check_loops, 100, "Number of iterations modifying and verifying the rb-tree");
+ struct test_node {
+       u32 key;
+@@ -17,7 +24,7 @@ struct test_node {
+ };
+ static struct rb_root root = RB_ROOT;
+-static struct test_node nodes[NODES];
++static struct test_node *nodes = NULL;
+ static struct rnd_state rnd;
+@@ -95,7 +102,7 @@ static void erase_augmented(struct test_node *node, struct rb_root *root)
+ static void init(void)
+ {
+       int i;
+-      for (i = 0; i < NODES; i++) {
++      for (i = 0; i < nnodes; i++) {
+               nodes[i].key = prandom_u32_state(&rnd);
+               nodes[i].val = prandom_u32_state(&rnd);
+       }
+@@ -177,6 +184,10 @@ static int __init rbtree_test_init(void)
+       int i, j;
+       cycles_t time1, time2, time;
++      nodes = kmalloc(nnodes * sizeof(*nodes), GFP_KERNEL);
++      if (!nodes)
++              return -ENOMEM;
++
+       printk(KERN_ALERT "rbtree testing");
+       prandom_seed_state(&rnd, 3141592653589793238ULL);
+@@ -184,27 +195,27 @@ static int __init rbtree_test_init(void)
+       time1 = get_cycles();
+-      for (i = 0; i < PERF_LOOPS; i++) {
+-              for (j = 0; j < NODES; j++)
++      for (i = 0; i < perf_loops; i++) {
++              for (j = 0; j < nnodes; j++)
+                       insert(nodes + j, &root);
+-              for (j = 0; j < NODES; j++)
++              for (j = 0; j < nnodes; j++)
+                       erase(nodes + j, &root);
+       }
+       time2 = get_cycles();
+       time = time2 - time1;
+-      time = div_u64(time, PERF_LOOPS);
++      time = div_u64(time, perf_loops);
+       printk(" -> %llu cycles\n", (unsigned long long)time);
+-      for (i = 0; i < CHECK_LOOPS; i++) {
++      for (i = 0; i < check_loops; i++) {
+               init();
+-              for (j = 0; j < NODES; j++) {
++              for (j = 0; j < nnodes; j++) {
+                       check(j);
+                       insert(nodes + j, &root);
+               }
+-              for (j = 0; j < NODES; j++) {
+-                      check(NODES - j);
++              for (j = 0; j < nnodes; j++) {
++                      check(nnodes - j);
+                       erase(nodes + j, &root);
+               }
+               check(0);
+@@ -216,32 +227,34 @@ static int __init rbtree_test_init(void)
+       time1 = get_cycles();
+-      for (i = 0; i < PERF_LOOPS; i++) {
+-              for (j = 0; j < NODES; j++)
++      for (i = 0; i < perf_loops; i++) {
++              for (j = 0; j < nnodes; j++)
+                       insert_augmented(nodes + j, &root);
+-              for (j = 0; j < NODES; j++)
++              for (j = 0; j < nnodes; j++)
+                       erase_augmented(nodes + j, &root);
+       }
+       time2 = get_cycles();
+       time = time2 - time1;
+-      time = div_u64(time, PERF_LOOPS);
++      time = div_u64(time, perf_loops);
+       printk(" -> %llu cycles\n", (unsigned long long)time);
+-      for (i = 0; i < CHECK_LOOPS; i++) {
++      for (i = 0; i < check_loops; i++) {
+               init();
+-              for (j = 0; j < NODES; j++) {
++              for (j = 0; j < nnodes; j++) {
+                       check_augmented(j);
+                       insert_augmented(nodes + j, &root);
+               }
+-              for (j = 0; j < NODES; j++) {
+-                      check_augmented(NODES - j);
++              for (j = 0; j < nnodes; j++) {
++                      check_augmented(nnodes - j);
+                       erase_augmented(nodes + j, &root);
+               }
+               check_augmented(0);
+       }
++      kfree(nodes);
++
+       return -EAGAIN; /* Fail will directly unload the module */
+ }
+-- 
+2.19.1
+
diff --git a/queue-4.4/powerpc-boot-fix-random-libfdt-related-build-errors.patch b/queue-4.4/powerpc-boot-fix-random-libfdt-related-build-errors.patch
new file mode 100644 (file)
index 0000000..fc196cd
--- /dev/null
@@ -0,0 +1,58 @@
+From 70fc830fb11246b1f8834a42939097cb4e4c03a3 Mon Sep 17 00:00:00 2001
+From: Guenter Roeck <linux@roeck-us.net>
+Date: Sat, 15 Dec 2018 07:30:39 -0800
+Subject: powerpc/boot: Fix random libfdt related build errors
+
+[ Upstream commit 64c3f648c25d108f346fdc96c15180c6b7d250e9 ]
+
+Once in a while I see build errors similar to the following
+when building images from a clean tree.
+
+  Building powerpc:virtex-ml507:44x/virtex5_defconfig ... failed
+  ------------
+  Error log:
+  arch/powerpc/boot/treeboot-akebono.c:37:20: fatal error:
+       libfdt.h: No such file or directory
+
+  Building powerpc:bamboo:smpdev:44x/bamboo_defconfig ... failed
+  ------------
+  Error log:
+  arch/powerpc/boot/treeboot-akebono.c:37:20: fatal error:
+       libfdt.h: No such file or directory
+
+  arch/powerpc/boot/treeboot-currituck.c:35:20: fatal error:
+       libfdt.h: No such file or directory
+
+Rebuilds will succeed.
+
+Turns out that several source files in arch/powerpc/boot/ include
+libfdt.h, but Makefile dependencies are incomplete. Let's fix that.
+
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
+Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+[groeck: Backport to v4.4.y]
+Signed-off-by: Guenter Roeck <linux@roeck-us.net>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/powerpc/boot/Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
+index 99e4487248ff..57003d1bd243 100644
+--- a/arch/powerpc/boot/Makefile
++++ b/arch/powerpc/boot/Makefile
+@@ -70,7 +70,8 @@ $(addprefix $(obj)/,$(zlib) cuboot-c2k.o gunzip_util.o main.o): \
+ libfdt       := fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c
+ libfdtheader := fdt.h libfdt.h libfdt_internal.h
+-$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o): \
++$(addprefix $(obj)/,$(libfdt) libfdt-wrapper.o simpleboot.o epapr.o \
++      treeboot-akebono.o treeboot-currituck.o treeboot-iss4xx.o): \
+       $(addprefix $(obj)/,$(libfdtheader))
+ src-wlib-y := string.S crt0.S crtsavres.S stdio.c main.c \
+-- 
+2.19.1
+
diff --git a/queue-4.4/series b/queue-4.4/series
new file mode 100644 (file)
index 0000000..f85f3e7
--- /dev/null
@@ -0,0 +1,7 @@
+lib-interval_tree_test.c-make-test-options-module-pa.patch
+lib-interval_tree_test.c-allow-full-tree-search.patch
+lib-rbtree_test.c-make-input-module-parameters.patch
+lib-rbtree-test-lower-default-params.patch
+lib-interval_tree_test.c-allow-users-to-limit-scope-.patch
+timer-debug-change-proc-timer_list-from-0444-to-0400.patch
+powerpc-boot-fix-random-libfdt-related-build-errors.patch
diff --git a/queue-4.4/timer-debug-change-proc-timer_list-from-0444-to-0400.patch b/queue-4.4/timer-debug-change-proc-timer_list-from-0444-to-0400.patch
new file mode 100644 (file)
index 0000000..7b0ecc8
--- /dev/null
@@ -0,0 +1,36 @@
+From 2dda5b6ab1e54d13a8b5f914722f0c48f59d893f Mon Sep 17 00:00:00 2001
+From: Ingo Molnar <mingo@kernel.org>
+Date: Mon, 13 Nov 2017 07:15:41 +0100
+Subject: timer/debug: Change /proc/timer_list from 0444 to 0400
+
+[ Upstream commit 8e7df2b5b7f245c9bd11064712db5cb69044a362 ]
+
+While it uses %pK, there's still few reasons to read this file
+as non-root.
+
+Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
+Acked-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: linux-kernel@vger.kernel.org
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ kernel/time/timer_list.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
+index ef4f16e81283..1407ed20ea93 100644
+--- a/kernel/time/timer_list.c
++++ b/kernel/time/timer_list.c
+@@ -399,7 +399,7 @@ static int __init init_timer_list_procfs(void)
+ {
+       struct proc_dir_entry *pe;
+-      pe = proc_create("timer_list", 0444, NULL, &timer_list_fops);
++      pe = proc_create("timer_list", 0400, NULL, &timer_list_fops);
+       if (!pe)
+               return -ENOMEM;
+       return 0;
+-- 
+2.19.1
+