# git rev-parse -q --verify daebe06ec4af252eba275f602a08086bc2bca5dc^{commit} daebe06ec4af252eba275f602a08086bc2bca5dc already have revision, skipping fetch # git checkout -q -f -B kisskb daebe06ec4af252eba275f602a08086bc2bca5dc # git clean -qxdf # < git log -1 # commit daebe06ec4af252eba275f602a08086bc2bca5dc # Author: Shilpasri G Bhat # Date: Wed Apr 25 16:29:31 2018 +0530 # # cpufreq: powernv: Fix the hardlockup by synchronus smp_call in timer interrupt # # gpstate_timer_handler() uses synchronous smp_call to set the pstate # on the requested core. This causes the below hard lockup: # # smp_call_function_single+0x110/0x180 (unreliable) # smp_call_function_any+0x180/0x250 # gpstate_timer_handler+0x1e8/0x580 # call_timer_fn+0x50/0x1c0 # expire_timers+0x138/0x1f0 # run_timer_softirq+0x1e8/0x270 # __do_softirq+0x158/0x3e4 # irq_exit+0xe8/0x120 # timer_interrupt+0x9c/0xe0 # decrementer_common+0x114/0x120 # -- interrupt: 901 at doorbell_global_ipi+0x34/0x50 # LR = arch_send_call_function_ipi_mask+0x120/0x130 # arch_send_call_function_ipi_mask+0x4c/0x130 # smp_call_function_many+0x340/0x450 # pmdp_invalidate+0x98/0xe0 # change_huge_pmd+0xe0/0x270 # change_protection_range+0xb88/0xe40 # mprotect_fixup+0x140/0x340 # SyS_mprotect+0x1b4/0x350 # system_call+0x58/0x6c # # One way to avoid this is removing the smp-call. We can ensure that the # timer always runs on one of the policy-cpus. If the timer gets # migrated to a cpu outside the policy then re-queue it back on the # policy->cpus. This way we can get rid of the smp-call which was being # used to set the pstate on the policy->cpus. # # Fixes: 7bc54b652f13 ("timers, cpufreq/powernv: Initialize the gpstate timer as pinned") # Cc: stable@vger.kernel.org # v4.8+ # Reported-by: Nicholas Piggin # Reported-by: Pridhiviraj Paidipeddi # Signed-off-by: Shilpasri G Bhat # Acked-by: Nicholas Piggin # Acked-by: Viresh Kumar # Acked-by: Vaidyanathan Srinivasan # Signed-off-by: Michael Ellerman # < /opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-gcc --version # < git log --format=%s --max-count=1 daebe06ec4af252eba275f602a08086bc2bca5dc # < make -s -j 20 ARCH=powerpc O=/kisskb/build/powerpc-fixes_c2k_defconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- c2k_defconfig WARNING: unmet direct dependencies detected for NOT_COHERENT_CACHE Depends on [n]: 4xx [=n] || PPC_8xx [=n] || E200 [=n] || PPC_MPC512x [=n] || GAMECUBE_COMMON [=n] Selected by [y]: - PPC_C2K [=y] && EMBEDDED6xx [=y] WARNING: unmet direct dependencies detected for NOT_COHERENT_CACHE Depends on [n]: 4xx [=n] || PPC_8xx [=n] || E200 [=n] || PPC_MPC512x [=n] || GAMECUBE_COMMON [=n] Selected by [y]: - PPC_C2K [=y] && EMBEDDED6xx [=y] # make -s -j 20 ARCH=powerpc O=/kisskb/build/powerpc-fixes_c2k_defconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- WARNING: unmet direct dependencies detected for NOT_COHERENT_CACHE Depends on [n]: 4xx [=n] || PPC_8xx [=n] || E200 [=n] || PPC_MPC512x [=n] || GAMECUBE_COMMON [=n] Selected by [y]: - PPC_C2K [=y] && EMBEDDED6xx [=y] WARNING: unmet direct dependencies detected for NOT_COHERENT_CACHE Depends on [n]: 4xx [=n] || PPC_8xx [=n] || E200 [=n] || PPC_MPC512x [=n] || GAMECUBE_COMMON [=n] Selected by [y]: - PPC_C2K [=y] && EMBEDDED6xx [=y] /kisskb/src/kernel/printk/printk.c: In function 'devkmsg_sysctl_set_loglvl': /kisskb/src/kernel/printk/printk.c:183:16: warning: 'old' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/base/regmap/regmap.c: In function 'regmap_raw_read': /kisskb/src/drivers/base/regmap/regmap.c:2497:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/base/regmap/regmap.c: In function '_regmap_raw_write': /kisskb/src/drivers/base/regmap/regmap.c:1819:6: warning: 'ret' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c: In function 'proc_reg_open': /kisskb/src/include/linux/list.h:65:12: warning: 'pdeo' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/fs/proc/inode.c:340:21: note: 'pdeo' was declared here /kisskb/src/net/bridge/br_netlink.c: In function 'br_afspec': /kisskb/src/net/bridge/br_netlink.c:635:7: warning: 'err' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c: In function 'tun_get_user': /kisskb/src/drivers/net/tun.c:1822:30: warning: 'copylen' may be used uninitialized in this function [-Wuninitialized] /kisskb/src/drivers/net/tun.c:1732:46: warning: 'linear' may be used uninitialized in this function [-Wuninitialized] INFO: Uncompressed kernel (size 0x6b9eac) overlaps the address of the wrapper(0x400000) INFO: Fixing the link_address of wrapper to (0x700000) Image Name: Linux-4.17.0-rc2-gdaebe06 Created: Thu Apr 26 20:51:58 2018 Image Type: PowerPC Linux Kernel Image (gzip compressed) Data Size: 3251771 Bytes = 3175.56 kB = 3.10 MB Load Address: 00700000 Entry Point: 007004fc Completed OK # rm -rf /kisskb/build/powerpc-fixes_c2k_defconfig_powerpc # Build took: 0:03:20.562743