From: Sasha Levin Date: Thu, 11 Apr 2019 15:28:36 +0000 (-0400) Subject: patches for 4.19 X-Git-Tag: v4.9.169~47 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=742a207e899adcfd826fe858b46ceb2281d2a90f;p=thirdparty%2Fkernel%2Fstable-queue.git patches for 4.19 Signed-off-by: Sasha Levin --- diff --git a/queue-4.19/kbuild-clang-choose-gcc_toolchain_dir-not-on-ld.patch b/queue-4.19/kbuild-clang-choose-gcc_toolchain_dir-not-on-ld.patch new file mode 100644 index 00000000000..f8564c4639f --- /dev/null +++ b/queue-4.19/kbuild-clang-choose-gcc_toolchain_dir-not-on-ld.patch @@ -0,0 +1,46 @@ +From 984ad8ffe86ddf11a19f4104d4e5e15e93607b13 Mon Sep 17 00:00:00 2001 +From: Nick Desaulniers +Date: Mon, 11 Feb 2019 11:30:04 -0800 +Subject: kbuild: clang: choose GCC_TOOLCHAIN_DIR not on LD + +commit ad15006cc78459d059af56729c4d9bed7c7fd860 upstream. + +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 +Reviewed-by: Nathan Chancellor +Tested-by: Nathan Chancellor +Signed-off-by: Nick Desaulniers +Signed-off-by: Masahiro Yamada +Signed-off-by: Nathan Chancellor +Signed-off-by: Sasha Levin +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 8fdfe0af5862..c07f25e2e11b 100644 +--- a/Makefile ++++ b/Makefile +@@ -483,7 +483,7 @@ endif + ifeq ($(cc-name),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-4.19/kbuild-deb-pkg-fix-bindeb-pkg-breakage-when-o-is-use.patch b/queue-4.19/kbuild-deb-pkg-fix-bindeb-pkg-breakage-when-o-is-use.patch new file mode 100644 index 00000000000..70a9d937932 --- /dev/null +++ b/queue-4.19/kbuild-deb-pkg-fix-bindeb-pkg-breakage-when-o-is-use.patch @@ -0,0 +1,68 @@ +From 139b2cf1566157c80c76ddce89f9d18f82b51720 Mon Sep 17 00:00:00 2001 +From: Masahiro Yamada +Date: Mon, 5 Nov 2018 16:52:34 +0900 +Subject: kbuild: deb-pkg: fix bindeb-pkg breakage when O= is used + +[ Upstream commit 02826a6ba301b72461c3706e1cc66d5571cd327e ] + +Ard Biesheuvel reports bindeb-pkg with O= option is broken in the +following way: + + ... + LD [M] sound/soc/rockchip/snd-soc-rk3399-gru-sound.ko + LD [M] sound/soc/rockchip/snd-soc-rockchip-pcm.ko + LD [M] sound/soc/rockchip/snd-soc-rockchip-rt5645.ko + LD [M] sound/soc/rockchip/snd-soc-rockchip-spdif.ko + LD [M] sound/soc/sh/rcar/snd-soc-rcar.ko + fakeroot -u debian/rules binary + make KERNELRELEASE=4.19.0-12677-g19beffaf7a99-dirty ARCH=arm64 KBUILD_SRC= intdeb-pkg + /bin/bash /home/ard/linux/scripts/package/builddeb + Makefile:600: include/config/auto.conf: No such file or directory + *** + *** Configuration file ".config" not found! + *** + *** Please run some configurator (e.g. "make oldconfig" or + *** "make menuconfig" or "make xconfig"). + *** + make[12]: *** [syncconfig] Error 1 + make[11]: *** [syncconfig] Error 2 + make[10]: *** [include/config/auto.conf] Error 2 + make[9]: *** [__sub-make] Error 2 + ... + +Prior to commit 80463f1b7bf9 ("kbuild: add --include-dir flag only +for out-of-tree build"), both srctree and objtree were added to +--include-dir redundantly, and the wrong code '$MAKE image_name' +was working by relying on that. Now, the potential issue that had +previously been hidden just showed up. + +'$MAKE image_name' recurses to the generated $(objtree)/Makefile and +ends up with running in srctree, which is incorrect. It should be +invoked with '-f $srctree/Makefile' (or KBUILD_SRC=) to be executed +in objtree. + +Fixes: 80463f1b7bf9 ("kbuild: add --include-dir flag only for out-of-tree build") +Reported-by: Ard Biesheuvel +Signed-off-by: Masahiro Yamada +Tested-by: Ard Biesheuvel +Signed-off-by: Sasha Levin +--- + scripts/package/builddeb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scripts/package/builddeb b/scripts/package/builddeb +index 90c9a8ac7adb..0b31f4f1f92c 100755 +--- a/scripts/package/builddeb ++++ b/scripts/package/builddeb +@@ -81,7 +81,7 @@ else + cp System.map "$tmpdir/boot/System.map-$version" + cp $KCONFIG_CONFIG "$tmpdir/boot/config-$version" + fi +-cp "$($MAKE -s image_name)" "$tmpdir/$installed_image_path" ++cp "$($MAKE -s -f $srctree/Makefile image_name)" "$tmpdir/$installed_image_path" + + if grep -q "^CONFIG_OF=y" $KCONFIG_CONFIG ; then + # Only some architectures with OF support have this target +-- +2.19.1 + diff --git a/queue-4.19/lib-string.c-implement-a-basic-bcmp.patch b/queue-4.19/lib-string.c-implement-a-basic-bcmp.patch new file mode 100644 index 00000000000..47066aafebd --- /dev/null +++ b/queue-4.19/lib-string.c-implement-a-basic-bcmp.patch @@ -0,0 +1,111 @@ +From d944d9527b3c2dc21ec3418fa17a37b06328a903 Mon Sep 17 00:00:00 2001 +From: Nick Desaulniers +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 +Reported-by: Nathan Chancellor +Reported-by: Adhemerval Zanella +Suggested-by: Arnd Bergmann +Suggested-by: James Y Knight +Suggested-by: Masahiro Yamada +Suggested-by: Nathan Chancellor +Suggested-by: Rasmus Villemoes +Acked-by: Steven Rostedt (VMware) +Reviewed-by: Nathan Chancellor +Tested-by: Nathan Chancellor +Reviewed-by: Masahiro Yamada +Reviewed-by: Andy Shevchenko +Cc: David Laight +Cc: Rasmus Villemoes +Cc: Namhyung Kim +Cc: Greg Kroah-Hartman +Cc: Alexander Shishkin +Cc: Dan Williams +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Sasha Levin +--- + 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 4a5a0eb7df51..f58e1ef76572 100644 +--- a/include/linux/string.h ++++ b/include/linux/string.h +@@ -143,6 +143,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 2c0900a5d51a..72125fd5b4a6 100644 +--- a/lib/string.c ++++ b/lib/string.c +@@ -865,6 +865,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-4.19/revert-clk-meson-clean-up-clock-registration.patch b/queue-4.19/revert-clk-meson-clean-up-clock-registration.patch new file mode 100644 index 00000000000..74da9016713 --- /dev/null +++ b/queue-4.19/revert-clk-meson-clean-up-clock-registration.patch @@ -0,0 +1,53 @@ +From f471faf0251d0b8660d0a4c9f8f709183054bbca Mon Sep 17 00:00:00 2001 +From: Neil Armstrong +Date: Thu, 11 Apr 2019 12:11:22 +0200 +Subject: Revert "clk: meson: clean-up clock registration" + +This reverts commit c8e4f8406842332fb55cd792016e5dac266f6354. + +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 # 4.19.34 +Signed-off-by: Neil Armstrong +Signed-off-by: Sasha Levin +--- + 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 + diff --git a/queue-4.19/series b/queue-4.19/series index 6f328c12b6f..ae615b03001 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -34,3 +34,8 @@ 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-deb-pkg-fix-bindeb-pkg-breakage-when-o-is-use.patch +kbuild-clang-choose-gcc_toolchain_dir-not-on-ld.patch +x86-vdso-drop-implicit-common-page-size-linker-flag.patch +lib-string.c-implement-a-basic-bcmp.patch +revert-clk-meson-clean-up-clock-registration.patch diff --git a/queue-4.19/x86-vdso-drop-implicit-common-page-size-linker-flag.patch b/queue-4.19/x86-vdso-drop-implicit-common-page-size-linker-flag.patch new file mode 100644 index 00000000000..c0a048a5a60 --- /dev/null +++ b/queue-4.19/x86-vdso-drop-implicit-common-page-size-linker-flag.patch @@ -0,0 +1,59 @@ +From 396c50d4dd49fb1122692fdd341db1d396074b72 Mon Sep 17 00:00:00 2001 +From: Nick Desaulniers +Date: Thu, 6 Dec 2018 11:12:31 -0800 +Subject: x86/vdso: Drop implicit common-page-size linker flag + +commit ac3e233d29f7f77f28243af0132057d378d3ea58 upstream. + +GNU linker's -z common-page-size's default value is based on the target +architecture. arch/x86/entry/vdso/Makefile sets it to the architecture +default, which is implicit and redundant. Drop it. + +Fixes: 2aae950b21e4 ("x86_64: Add vDSO for x86-64 with gettimeofday/clock_gettime/getcpu") +Reported-by: Dmitry Golovin +Reported-by: Bill Wendling +Suggested-by: Dmitry Golovin +Suggested-by: Rui Ueyama +Signed-off-by: Nick Desaulniers +Signed-off-by: Borislav Petkov +Acked-by: Andy Lutomirski +Cc: Andi Kleen +Cc: Fangrui Song +Cc: "H. Peter Anvin" +Cc: Ingo Molnar +Cc: Thomas Gleixner +Cc: x86-ml +Link: https://lkml.kernel.org/r/20181206191231.192355-1-ndesaulniers@google.com +Link: https://bugs.llvm.org/show_bug.cgi?id=38774 +Link: https://github.com/ClangBuiltLinux/linux/issues/31 +Signed-off-by: Nathan Chancellor +Signed-off-by: Sasha Levin +--- + arch/x86/entry/vdso/Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arch/x86/entry/vdso/Makefile b/arch/x86/entry/vdso/Makefile +index c3d7ccd25381..5bfe2243a08f 100644 +--- a/arch/x86/entry/vdso/Makefile ++++ b/arch/x86/entry/vdso/Makefile +@@ -47,7 +47,7 @@ targets += $(vdso_img_sodbg) $(vdso_img-y:%=vdso%.so) + CPPFLAGS_vdso.lds += -P -C + + VDSO_LDFLAGS_vdso.lds = -m elf_x86_64 -soname linux-vdso.so.1 --no-undefined \ +- -z max-page-size=4096 -z common-page-size=4096 ++ -z max-page-size=4096 + + $(obj)/vdso64.so.dbg: $(obj)/vdso.lds $(vobjs) FORCE + $(call if_changed,vdso) +@@ -98,7 +98,7 @@ CFLAGS_REMOVE_vvar.o = -pg + + CPPFLAGS_vdsox32.lds = $(CPPFLAGS_vdso.lds) + VDSO_LDFLAGS_vdsox32.lds = -m elf32_x86_64 -soname linux-vdso.so.1 \ +- -z max-page-size=4096 -z common-page-size=4096 ++ -z max-page-size=4096 + + # x32-rebranded versions + vobjx32s-y := $(vobjs-y:.o=-x32.o) +-- +2.19.1 +