# git rev-parse -q --verify cfb61b5e3e09f8b49bc4d685429df75f45127adc^{commit} cfb61b5e3e09f8b49bc4d685429df75f45127adc already have revision, skipping fetch # git checkout -q -f -B kisskb cfb61b5e3e09f8b49bc4d685429df75f45127adc # git clean -qxdf # < git log -1 # commit cfb61b5e3e09f8b49bc4d685429df75f45127adc # Author: David S. Miller # Date: Thu Mar 15 14:18:00 2018 -0700 # # sparc64: Fix regression in pmdp_invalidate(). # # pmdp_invalidate() was changed to update the pmd atomically # (to not lose dirty/access bits) and return the original pmd # value. # # However, in doing so, we lost a lot of the essential work that # set_pmd_at() does, namely to update hugepage mapping counts and # queuing up the batched TLB flush entry. # # Thus we were not flushing entries out of the TLB when making # such PMD changes. # # Fix this by abstracting the accounting work of set_pmd_at() out into a # separate function, and call it from pmdp_establish(). # # Fixes: a8e654f01cb7 ("sparc64: update pmdp_invalidate() to return old pmd value") # Signed-off-by: David S. Miller # < /opt/cross/kisskb/br-aarch64-glibc-2016.08-613-ge98b4dd/bin/aarch64-linux-gcc --version # < git log --format=%s --max-count=1 cfb61b5e3e09f8b49bc4d685429df75f45127adc # < make -s -j 8 ARCH=arm64 O=/kisskb/build/linus_arm64-allmodconfig_arm64 CROSS_COMPILE=/opt/cross/kisskb/br-aarch64-glibc-2016.08-613-ge98b4dd/bin/aarch64-linux- allmodconfig # make -s -j 8 ARCH=arm64 O=/kisskb/build/linus_arm64-allmodconfig_arm64 CROSS_COMPILE=/opt/cross/kisskb/br-aarch64-glibc-2016.08-613-ge98b4dd/bin/aarch64-linux- arch/arm64/Makefile:27: ld does not support --fix-cortex-a53-843419; kernel may be susceptible to erratum arch/arm64/Makefile:40: LSE atomics not supported by binutils In file included from /kisskb/src/include/linux/swab.h:5:0, from /kisskb/src/include/uapi/linux/byteorder/big_endian.h:13, from /kisskb/src/include/linux/byteorder/big_endian.h:5, from /kisskb/src/arch/arm64/include/uapi/asm/byteorder.h:21, from /kisskb/src/include/asm-generic/bitops/le.h:6, from /kisskb/src/arch/arm64/include/asm/bitops.h:50, from /kisskb/src/include/linux/bitops.h:38, from /kisskb/src/include/linux/kernel.h:11, from /kisskb/src/include/linux/interrupt.h:6, from /kisskb/src/drivers/infiniband/hw/bnxt_re/qplib_fp.c:39: /kisskb/src/drivers/infiniband/hw/bnxt_re/qplib_fp.c: In function 'bnxt_qplib_create_srq': /kisskb/src/include/uapi/linux/byteorder/big_endian.h:31:52: warning: passing argument 1 of '__fswab64' makes integer from pointer without a cast [-Wint-conversion] #define __cpu_to_le64(x) ((__force __le64)__swab64((x))) ^ /kisskb/src/include/uapi/linux/swab.h:132:12: note: in definition of macro '__swab64' __fswab64(x)) ^ /kisskb/src/include/linux/byteorder/generic.h:86:21: note: in expansion of macro '__cpu_to_le64' #define cpu_to_le64 __cpu_to_le64 ^ /kisskb/src/drivers/infiniband/hw/bnxt_re/qplib_fp.c:529:19: note: in expansion of macro 'cpu_to_le64' req.srq_handle = cpu_to_le64(srq); ^ /kisskb/src/include/uapi/linux/swab.h:65:41: note: expected '__u64 {aka long long unsigned int}' but argument is of type 'struct bnxt_qplib_srq *' static inline __attribute_const__ __u64 __fswab64(__u64 val) ^ Completed OK # rm -rf /kisskb/build/linus_arm64-allmodconfig_arm64 # Build took: 0:23:16.640685