]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
patches for 5.0
authorSasha Levin <sashal@kernel.org>
Thu, 11 Apr 2019 15:28:36 +0000 (11:28 -0400)
committerSasha Levin <sashal@kernel.org>
Thu, 11 Apr 2019 15:28:36 +0000 (11:28 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-5.0/kbuild-clang-choose-gcc_toolchain_dir-not-on-ld.patch [new file with mode: 0644]
queue-5.0/lib-string.c-implement-a-basic-bcmp.patch [new file with mode: 0644]
queue-5.0/revert-clk-meson-clean-up-clock-registration.patch [new file with mode: 0644]
queue-5.0/series

diff --git a/queue-5.0/kbuild-clang-choose-gcc_toolchain_dir-not-on-ld.patch b/queue-5.0/kbuild-clang-choose-gcc_toolchain_dir-not-on-ld.patch
new file mode 100644 (file)
index 0000000..83bae09
--- /dev/null
@@ -0,0 +1,45 @@
+From ecae2c3a3b4856074259a78d27c5fc13fdfa21b0 Mon Sep 17 00:00:00 2001
+From: Nick Desaulniers <ndesaulniers@google.com>
+Date: Mon, 11 Feb 2019 11:30:04 -0800
+Subject: kbuild: clang: choose GCC_TOOLCHAIN_DIR not on LD
+
+[ Upstream commit ad15006cc78459d059af56729c4d9bed7c7fd860 ]
+
+This causes an issue when trying to build with `make LD=ld.lld` if
+ld.lld and the rest of your cross tools aren't in the same directory
+(ex. /usr/local/bin) (as is the case for Android's build system), as the
+GCC_TOOLCHAIN_DIR then gets set based on `which $(LD)` which will point
+where LLVM tools are, not GCC/binutils tools are located.
+
+Instead, select the GCC_TOOLCHAIN_DIR based on another tool provided by
+binutils for which LLVM does not provide a substitute for, such as
+elfedit.
+
+Fixes: 785f11aa595b ("kbuild: Add better clang cross build support")
+Link: https://github.com/ClangBuiltLinux/linux/issues/341
+Suggested-by: Nathan Chancellor <natechancellor@gmail.com>
+Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
+Tested-by: Nathan Chancellor <natechancellor@gmail.com>
+Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
+Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index af99c77c7066..be885715f83f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -510,7 +510,7 @@ endif
+ ifneq ($(shell $(CC) --version 2>&1 | head -n 1 | grep clang),)
+ ifneq ($(CROSS_COMPILE),)
+ CLANG_FLAGS   := --target=$(notdir $(CROSS_COMPILE:%-=%))
+-GCC_TOOLCHAIN_DIR := $(dir $(shell which $(LD)))
++GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
+ CLANG_FLAGS   += --prefix=$(GCC_TOOLCHAIN_DIR)
+ GCC_TOOLCHAIN := $(realpath $(GCC_TOOLCHAIN_DIR)/..)
+ endif
+-- 
+2.19.1
+
diff --git a/queue-5.0/lib-string.c-implement-a-basic-bcmp.patch b/queue-5.0/lib-string.c-implement-a-basic-bcmp.patch
new file mode 100644 (file)
index 0000000..edcc521
--- /dev/null
@@ -0,0 +1,111 @@
+From c5a0d4dcc5553fedc22c81449f687950cd301197 Mon Sep 17 00:00:00 2001
+From: Nick Desaulniers <ndesaulniers@google.com>
+Date: Fri, 5 Apr 2019 18:38:45 -0700
+Subject: lib/string.c: implement a basic bcmp
+
+[ Upstream commit 5f074f3e192f10c9fade898b9b3b8812e3d83342 ]
+
+A recent optimization in Clang (r355672) lowers comparisons of the
+return value of memcmp against zero to comparisons of the return value
+of bcmp against zero.  This helps some platforms that implement bcmp
+more efficiently than memcmp.  glibc simply aliases bcmp to memcmp, but
+an optimized implementation is in the works.
+
+This results in linkage failures for all targets with Clang due to the
+undefined symbol.  For now, just implement bcmp as a tailcail to memcmp
+to unbreak the build.  This routine can be further optimized in the
+future.
+
+Other ideas discussed:
+
+ * A weak alias was discussed, but breaks for architectures that define
+   their own implementations of memcmp since aliases to declarations are
+   not permitted (only definitions). Arch-specific memcmp
+   implementations typically declare memcmp in C headers, but implement
+   them in assembly.
+
+ * -ffreestanding also is used sporadically throughout the kernel.
+
+ * -fno-builtin-bcmp doesn't work when doing LTO.
+
+Link: https://bugs.llvm.org/show_bug.cgi?id=41035
+Link: https://code.woboq.org/userspace/glibc/string/memcmp.c.html#bcmp
+Link: https://github.com/llvm/llvm-project/commit/8e16d73346f8091461319a7dfc4ddd18eedcff13
+Link: https://github.com/ClangBuiltLinux/linux/issues/416
+Link: http://lkml.kernel.org/r/20190313211335.165605-1-ndesaulniers@google.com
+Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
+Reported-by: Nathan Chancellor <natechancellor@gmail.com>
+Reported-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
+Suggested-by: Arnd Bergmann <arnd@arndb.de>
+Suggested-by: James Y Knight <jyknight@google.com>
+Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+Suggested-by: Nathan Chancellor <natechancellor@gmail.com>
+Suggested-by: Rasmus Villemoes <linux@rasmusvillemoes.dk>
+Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
+Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
+Tested-by: Nathan Chancellor <natechancellor@gmail.com>
+Reviewed-by: Masahiro Yamada <yamada.masahiro@socionext.com>
+Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+Cc: David Laight <David.Laight@ACULAB.COM>
+Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Dan Williams <dan.j.williams@intel.com>
+Cc: <stable@vger.kernel.org>
+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>
+---
+ include/linux/string.h |  3 +++
+ lib/string.c           | 20 ++++++++++++++++++++
+ 2 files changed, 23 insertions(+)
+
+diff --git a/include/linux/string.h b/include/linux/string.h
+index 7927b875f80c..6ab0a6fa512e 100644
+--- a/include/linux/string.h
++++ b/include/linux/string.h
+@@ -150,6 +150,9 @@ extern void * memscan(void *,int,__kernel_size_t);
+ #ifndef __HAVE_ARCH_MEMCMP
+ extern int memcmp(const void *,const void *,__kernel_size_t);
+ #endif
++#ifndef __HAVE_ARCH_BCMP
++extern int bcmp(const void *,const void *,__kernel_size_t);
++#endif
+ #ifndef __HAVE_ARCH_MEMCHR
+ extern void * memchr(const void *,int,__kernel_size_t);
+ #endif
+diff --git a/lib/string.c b/lib/string.c
+index 38e4ca08e757..3ab861c1a857 100644
+--- a/lib/string.c
++++ b/lib/string.c
+@@ -866,6 +866,26 @@ __visible int memcmp(const void *cs, const void *ct, size_t count)
+ EXPORT_SYMBOL(memcmp);
+ #endif
++#ifndef __HAVE_ARCH_BCMP
++/**
++ * bcmp - returns 0 if and only if the buffers have identical contents.
++ * @a: pointer to first buffer.
++ * @b: pointer to second buffer.
++ * @len: size of buffers.
++ *
++ * The sign or magnitude of a non-zero return value has no particular
++ * meaning, and architectures may implement their own more efficient bcmp(). So
++ * while this particular implementation is a simple (tail) call to memcmp, do
++ * not rely on anything but whether the return value is zero or non-zero.
++ */
++#undef bcmp
++int bcmp(const void *a, const void *b, size_t len)
++{
++      return memcmp(a, b, len);
++}
++EXPORT_SYMBOL(bcmp);
++#endif
++
+ #ifndef __HAVE_ARCH_MEMSCAN
+ /**
+  * memscan - Find a character in an area of memory.
+-- 
+2.19.1
+
diff --git a/queue-5.0/revert-clk-meson-clean-up-clock-registration.patch b/queue-5.0/revert-clk-meson-clean-up-clock-registration.patch
new file mode 100644 (file)
index 0000000..9607ef2
--- /dev/null
@@ -0,0 +1,53 @@
+From 64c0aa2ee0e25f49da0ff7aaf04595de61f23306 Mon Sep 17 00:00:00 2001
+From: Neil Armstrong <narmstrong@baylibre.com>
+Date: Thu, 11 Apr 2019 12:11:32 +0200
+Subject: Revert "clk: meson: clean-up clock registration"
+
+This reverts commit 9b0f430450cf230e736bc40f95bf34fbdb99cead.
+
+This patch was not initially a fix and is dependent on other
+changes which are not fixes eithers.
+
+With this change, multiple Amlogic based boards fails to boot,
+as reported by kernelci.
+
+Cc: stable@vger.kernel.org # 5.0.7
+Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/clk/meson/meson-aoclk.c | 15 +++++----------
+ 1 file changed, 5 insertions(+), 10 deletions(-)
+
+diff --git a/drivers/clk/meson/meson-aoclk.c b/drivers/clk/meson/meson-aoclk.c
+index 258c8d259ea1..f965845917e3 100644
+--- a/drivers/clk/meson/meson-aoclk.c
++++ b/drivers/clk/meson/meson-aoclk.c
+@@ -65,20 +65,15 @@ int meson_aoclkc_probe(struct platform_device *pdev)
+               return ret;
+       }
+-      /* Populate regmap */
+-      for (clkid = 0; clkid < data->num_clks; clkid++)
++      /*
++       * Populate regmap and register all clks
++       */
++      for (clkid = 0; clkid < data->num_clks; clkid++) {
+               data->clks[clkid]->map = regmap;
+-      /* Register all clks */
+-      for (clkid = 0; clkid < data->hw_data->num; clkid++) {
+-              if (!data->hw_data->hws[clkid])
+-                      continue;
+-
+               ret = devm_clk_hw_register(dev, data->hw_data->hws[clkid]);
+-              if (ret) {
+-                      dev_err(dev, "Clock registration failed\n");
++              if (ret)
+                       return ret;
+-              }
+       }
+       return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
+-- 
+2.19.1
+
index 053cbd4dac3bf6cf19be1e1c9edfabcf6a3c9b6e..152aad873d03ed7282c064ff37b73d51b4f8886c 100644 (file)
@@ -39,3 +39,6 @@ r8169-disable-default-rx-interrupt-coalescing-on-rtl.patch
 net-mlx5-add-a-missing-check-on-idr_find-free-buf.patch
 net-mlx5e-update-xoff-formula.patch
 net-mlx5e-update-xon-formula.patch
+kbuild-clang-choose-gcc_toolchain_dir-not-on-ld.patch
+lib-string.c-implement-a-basic-bcmp.patch
+revert-clk-meson-clean-up-clock-registration.patch