From: Greg Kroah-Hartman Date: Wed, 16 Aug 2023 16:18:12 +0000 (+0200) Subject: 4.19-stable patches X-Git-Tag: v5.4.254~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3e358be49dc20e49b1dbe52f92c1528b2519af93;p=thirdparty%2Fkernel%2Fstable-queue.git 4.19-stable patches added patches: lib-mpi-eliminate-unused-umul_ppmm-definitions-for-mips.patch series --- diff --git a/queue-4.19/lib-mpi-eliminate-unused-umul_ppmm-definitions-for-mips.patch b/queue-4.19/lib-mpi-eliminate-unused-umul_ppmm-definitions-for-mips.patch new file mode 100644 index 00000000000..36d747ae202 --- /dev/null +++ b/queue-4.19/lib-mpi-eliminate-unused-umul_ppmm-definitions-for-mips.patch @@ -0,0 +1,110 @@ +From b0c091ae04f6746f541b9be91809e1f4f43e9a65 Mon Sep 17 00:00:00 2001 +From: Nathan Chancellor +Date: Mon, 12 Aug 2019 12:32:57 -0700 +Subject: lib/mpi: Eliminate unused umul_ppmm definitions for MIPS + +From: Nathan Chancellor + +commit b0c091ae04f6746f541b9be91809e1f4f43e9a65 upstream. + +Clang errors out when building this macro: + +lib/mpi/generic_mpih-mul1.c:37:24: error: invalid use of a cast in a +inline asm context requiring an l-value: remove the cast or build with +-fheinous-gnu-extensions + umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb); + ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +lib/mpi/longlong.h:652:20: note: expanded from macro 'umul_ppmm' + : "=l" ((USItype)(w0)), \ + ~~~~~~~~~~^~~ +lib/mpi/generic_mpih-mul1.c:37:3: error: invalid output constraint '=h' +in asm + umul_ppmm(prod_high, prod_low, s1_ptr[j], s2_limb); + ^ +lib/mpi/longlong.h:653:7: note: expanded from macro 'umul_ppmm' + "=h" ((USItype)(w1)) \ + ^ +2 errors generated. + +The C version that is used for GCC 4.4 and up works well with clang; +however, it is not currently being used because Clang masks itself +as GCC 4.2.1 for compatibility reasons. As Nick points out, we require +GCC 4.6 and newer in the kernel so we can eliminate all of the +versioning checks and just use the C version of umul_ppmm for all +supported compilers. + +Link: https://github.com/ClangBuiltLinux/linux/issues/605 +Suggested-by: Nick Desaulniers +Signed-off-by: Nathan Chancellor +Reviewed-by: Nick Desaulniers +Signed-off-by: Herbert Xu +Signed-off-by: Greg Kroah-Hartman +--- + lib/mpi/longlong.h | 36 +----------------------------------- + 1 file changed, 1 insertion(+), 35 deletions(-) + +--- a/lib/mpi/longlong.h ++++ b/lib/mpi/longlong.h +@@ -639,30 +639,12 @@ do { \ + ************** MIPS ***************** + ***************************************/ + #if defined(__mips__) && W_TYPE_SIZE == 32 +-#if (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) + #define umul_ppmm(w1, w0, u, v) \ + do { \ + UDItype __ll = (UDItype)(u) * (v); \ + w1 = __ll >> 32; \ + w0 = __ll; \ + } while (0) +-#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7 +-#define umul_ppmm(w1, w0, u, v) \ +- __asm__ ("multu %2,%3" \ +- : "=l" ((USItype)(w0)), \ +- "=h" ((USItype)(w1)) \ +- : "d" ((USItype)(u)), \ +- "d" ((USItype)(v))) +-#else +-#define umul_ppmm(w1, w0, u, v) \ +- __asm__ ("multu %2,%3\n" \ +- "mflo %0\n" \ +- "mfhi %1" \ +- : "=d" ((USItype)(w0)), \ +- "=d" ((USItype)(w1)) \ +- : "d" ((USItype)(u)), \ +- "d" ((USItype)(v))) +-#endif + #define UMUL_TIME 10 + #define UDIV_TIME 100 + #endif /* __mips__ */ +@@ -687,7 +669,7 @@ do { \ + : "d" ((UDItype)(u)), \ + "d" ((UDItype)(v))); \ + } while (0) +-#elif (__GNUC__ >= 5) || (__GNUC__ >= 4 && __GNUC_MINOR__ >= 4) ++#else + #define umul_ppmm(w1, w0, u, v) \ + do { \ + typedef unsigned int __ll_UTItype __attribute__((mode(TI))); \ +@@ -695,22 +677,6 @@ do { \ + w1 = __ll >> 64; \ + w0 = __ll; \ + } while (0) +-#elif __GNUC__ > 2 || __GNUC_MINOR__ >= 7 +-#define umul_ppmm(w1, w0, u, v) \ +- __asm__ ("dmultu %2,%3" \ +- : "=l" ((UDItype)(w0)), \ +- "=h" ((UDItype)(w1)) \ +- : "d" ((UDItype)(u)), \ +- "d" ((UDItype)(v))) +-#else +-#define umul_ppmm(w1, w0, u, v) \ +- __asm__ ("dmultu %2,%3\n" \ +- "mflo %0\n" \ +- "mfhi %1" \ +- : "=d" ((UDItype)(w0)), \ +- "=d" ((UDItype)(w1)) \ +- : "d" ((UDItype)(u)), \ +- "d" ((UDItype)(v))) + #endif + #define UMUL_TIME 20 + #define UDIV_TIME 140 diff --git a/queue-4.19/series b/queue-4.19/series new file mode 100644 index 00000000000..2a0e9374557 --- /dev/null +++ b/queue-4.19/series @@ -0,0 +1 @@ +lib-mpi-eliminate-unused-umul_ppmm-definitions-for-mips.patch