# git rev-parse -q --verify 5faa15883ebc90132b58c685316de2cd24735e90^{commit} 5faa15883ebc90132b58c685316de2cd24735e90 already have revision, skipping fetch # git checkout -q -f -B kisskb 5faa15883ebc90132b58c685316de2cd24735e90 # git clean -qxdf # < git log -1 # commit 5faa15883ebc90132b58c685316de2cd24735e90 # Author: Christopher M. Riedl # Date: Mon Aug 12 22:13:14 2019 -0500 # # powerpc/spinlocks: Fix oops in shared-processor spinlocks # # Booting w/ ppc64le_defconfig + CONFIG_PREEMPT results in the attached # kernel trace due to calling shared-processor spinlocks while not # running in an SPLPAR. Previously, the out-of-line spinlocks # implementations were selected based on CONFIG_PPC_SPLPAR at compile # time without a runtime shared-processor LPAR check. # # To fix, call the actual spinlock implementations from a set of common # functions, spin_yield() and rw_yield(), which check for # shared-processor LPAR during runtime and select the appropriate lock # implementation. # # BUG: Kernel NULL pointer dereference at 0x00000100 # Faulting instruction address: 0xc000000000097f88 # Oops: Kernel access of bad area, sig: 7 [#1] # LE PAGE_SIZE=64K MMU=Radix MMU=Hash PREEMPT SMP NR_CPUS=2048 NUMA PowerNV # Modules linked in: # CPU: 0 PID: 2 Comm: kthreadd Not tainted 5.2.0-rc6-00491-g249155c20f9b #28 # NIP: c000000000097f88 LR: c000000000c07a88 CTR: c00000000015ca10 # REGS: c0000000727079f0 TRAP: 0300 Not tainted (5.2.0-rc6-00491-g249155c20f9b) # MSR: 9000000002009033 CR: 84000424 XER: 20040000 # CFAR: c000000000c07a84 DAR: 0000000000000100 DSISR: 00080000 IRQMASK: 1 # GPR00: c000000000c07a88 c000000072707c80 c000000001546300 c00000007be38a80 # GPR04: c0000000726f0c00 0000000000000002 c00000007279c980 0000000000000100 # GPR08: c000000001581b78 0000000080000001 0000000000000008 c00000007279c9b0 # GPR12: 0000000000000000 c000000001730000 c000000000142558 0000000000000000 # GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 # GPR20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 # GPR24: c00000007be38a80 c000000000c002f4 0000000000000000 0000000000000000 # GPR28: c000000072221a00 c0000000726c2600 c00000007be38a80 c00000007be38a80 # NIP [c000000000097f88] __spin_yield+0x48/0xa0 # LR [c000000000c07a88] __raw_spin_lock+0xb8/0xc0 # Call Trace: # [c000000072707c80] [c000000072221a00] 0xc000000072221a00 (unreliable) # [c000000072707cb0] [c000000000bffb0c] __schedule+0xbc/0x850 # [c000000072707d70] [c000000000c002f4] schedule+0x54/0x130 # [c000000072707da0] [c0000000001427dc] kthreadd+0x28c/0x2b0 # [c000000072707e20] [c00000000000c1cc] ret_from_kernel_thread+0x5c/0x70 # Instruction dump: # 4d9e0020 552a043e 210a07ff 79080fe0 0b080000 3d020004 3908b878 794a1f24 # e8e80000 7ce7502a e8e70000 38e70100 <7ca03c2c> 70a70001 78a50020 4d820020 # ---[ end trace 474d6b2b8fc5cb7e ]--- # # Fixes: 499dcd41378e ("powerpc/64s: Allocate LPPACAs individually") # Signed-off-by: Christopher M. Riedl # Signed-off-by: Michael Ellerman # Link: https://lore.kernel.org/r/20190813031314.1828-4-cmr@informatik.wtf # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux-ld --version # < git log --format=%s --max-count=1 5faa15883ebc90132b58c685316de2cd24735e90 # < make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- randconfig KCONFIG_SEED=0x158063BE # Added to kconfig CONFIG_STANDALONE=y # Added to kconfig CONFIG_BUILD_DOCSRC=n # Added to kconfig CONFIG_MODULE_SIG=n # Added to kconfig CONFIG_CPU_BIG_ENDIAN=y # Added to kconfig CONFIG_PPC64=y # Added to kconfig CONFIG_PPC_DISABLE_WERROR=y # Added to kconfig CONFIG_SECTION_MISMATCH_WARN_ONLY=y # Added to kconfig CONFIG_PREVENT_FIRMWARE_BUILD=y # Added to kconfig CONFIG_CC_STACKPROTECTOR_STRONG=n # Added to kconfig CONFIG_GCC_PLUGINS=n # Added to kconfig CONFIG_LD_HEAD_STUB_CATCH=y # Added to kconfig CONFIG_TRIM_UNUSED_KSYMS=n # Added to kconfig CONFIG_UBSAN=n # yes \n | make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- oldconfig yes: standard output: Broken pipe # make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- /kisskb/src/arch/powerpc/mm/book3s64/radix_tlb.c:666: warning: "radix__flush_all_mm" redefined #define radix__flush_all_mm radix__local_flush_all_mm In file included from /kisskb/src/arch/powerpc/include/asm/book3s/64/radix.h:18, from /kisskb/src/arch/powerpc/include/asm/book3s/64/pgtable.h:296, from /kisskb/src/arch/powerpc/include/asm/book3s/64/mmu-hash.h:20, from /kisskb/src/arch/powerpc/include/asm/book3s/64/mmu.h:46, from /kisskb/src/arch/powerpc/include/asm/mmu.h:356, from /kisskb/src/arch/powerpc/include/asm/lppaca.h:47, from /kisskb/src/arch/powerpc/include/asm/paca.h:17, from /kisskb/src/arch/powerpc/include/asm/current.h:13, from /kisskb/src/include/linux/thread_info.h:21, from /kisskb/src/include/asm-generic/preempt.h:5, from ./arch/powerpc/include/generated/asm/preempt.h:1, from /kisskb/src/include/linux/preempt.h:78, from /kisskb/src/include/linux/spinlock.h:51, from /kisskb/src/include/linux/mmzone.h:8, from /kisskb/src/include/linux/gfp.h:6, from /kisskb/src/include/linux/mm.h:10, from /kisskb/src/arch/powerpc/mm/book3s64/radix_tlb.c:8: /kisskb/src/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h:68: note: this is the location of the previous definition #define radix__flush_all_mm(mm) radix__local_flush_all_mm(mm) /kisskb/src/arch/powerpc/mm/book3s64/radix_tlb.c: In function '__radix__flush_tlb_range': /kisskb/src/arch/powerpc/mm/book3s64/radix_tlb.c:714:5: error: implicit declaration of function 'exit_flush_lazy_tlbs'; did you mean 'enter_lazy_tlb'? [-Werror=implicit-function-declaration] exit_flush_lazy_tlbs(mm); ^~~~~~~~~~~~~~~~~~~~ enter_lazy_tlb /kisskb/src/arch/powerpc/mm/book3s64/radix_tlb.c: In function 'radix__tlb_flush': /kisskb/src/arch/powerpc/mm/book3s64/radix_tlb.c:884:3: error: implicit declaration of function '__flush_all_mm'; did you mean 'flush_all_mm'? [-Werror=implicit-function-declaration] __flush_all_mm(mm, true); ^~~~~~~~~~~~~~ flush_all_mm cc1: some warnings being treated as errors make[4]: *** [/kisskb/src/scripts/Makefile.build:273: arch/powerpc/mm/book3s64/radix_tlb.o] Error 1 make[3]: *** [/kisskb/src/scripts/Makefile.build:490: arch/powerpc/mm/book3s64] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kisskb/src/scripts/Makefile.build:490: arch/powerpc/mm] Error 2 make[2]: *** Waiting for unfinished jobs.... /kisskb/src/arch/powerpc/kernel/watchdog.c: In function 'watchdog_smp_panic': /kisskb/src/arch/powerpc/kernel/watchdog.c:175:4: error: implicit declaration of function 'smp_send_nmi_ipi'; did you mean 'smp_send_stop'? [-Werror=implicit-function-declaration] smp_send_nmi_ipi(c, wd_lockup_ipi, 1000000); ^~~~~~~~~~~~~~~~ smp_send_stop cc1: some warnings being treated as errors make[3]: *** [/kisskb/src/scripts/Makefile.build:274: arch/powerpc/kernel/watchdog.o] Error 1 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [/kisskb/src/scripts/Makefile.build:490: arch/powerpc/kernel] Error 2 make[1]: *** [/kisskb/src/Makefile:1079: arch/powerpc] Error 2 make[1]: *** Waiting for unfinished jobs.... /kisskb/src/drivers/dma/tegra210-adma.c:747:12: warning: 'tegra_adma_runtime_resume' defined but not used [-Wunused-function] static int tegra_adma_runtime_resume(struct device *dev) ^~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/dma/tegra210-adma.c:715:12: warning: 'tegra_adma_runtime_suspend' defined but not used [-Wunused-function] static int tegra_adma_runtime_suspend(struct device *dev) ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /kisskb/src/include/linux/kernel.h:15, from /kisskb/src/drivers/net/arcnet/com90io.c:31: /kisskb/src/drivers/net/arcnet/com90io.c: In function 'com90io_setup': /kisskb/src/include/linux/printk.h:304:2: warning: this statement may fall through [-Wimplicit-fallthrough=] printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/drivers/net/arcnet/com90io.c:365:3: note: in expansion of macro 'pr_err' pr_err("Too many arguments\n"); ^~~~~~ /kisskb/src/drivers/net/arcnet/com90io.c:366:2: note: here case 2: /* IRQ */ ^~~~ /kisskb/src/drivers/net/arcnet/com90io.c:367:7: warning: this statement may fall through [-Wimplicit-fallthrough=] irq = ints[2]; ~~~~^~~~~~~~~ /kisskb/src/drivers/net/arcnet/com90io.c:368:2: note: here case 1: /* IO address */ ^~~~ /kisskb/src/drivers/power/reset/nvmem-reboot-mode.c: In function 'nvmem_reboot_mode_write': /kisskb/src/drivers/power/reset/nvmem-reboot-mode.c:27:42: error: passing argument 2 of 'nvmem_cell_write' from incompatible pointer type [-Werror=incompatible-pointer-types] ret = nvmem_cell_write(nvmem_rbm->cell, &magic, sizeof(magic)); ^~~~~~ In file included from /kisskb/src/drivers/power/reset/nvmem-reboot-mode.c:10: /kisskb/src/include/linux/nvmem-consumer.h:121:21: note: expected 'const char *' but argument is of type 'unsigned int *' const char *buf, size_t len) ~~~~~~~~~~~~^~~ cc1: some warnings being treated as errors make[4]: *** [/kisskb/src/scripts/Makefile.build:274: drivers/power/reset/nvmem-reboot-mode.o] Error 1 make[4]: *** Waiting for unfinished jobs.... make[3]: *** [/kisskb/src/scripts/Makefile.build:490: drivers/power/reset] Error 2 make[3]: *** Waiting for unfinished jobs.... /kisskb/src/drivers/mfd/rk808.c:752:12: warning: 'rk8xx_resume' defined but not used [-Wunused-function] static int rk8xx_resume(struct device *dev) ^~~~~~~~~~~~ /kisskb/src/drivers/mfd/rk808.c:732:12: warning: 'rk8xx_suspend' defined but not used [-Wunused-function] static int rk8xx_suspend(struct device *dev) ^~~~~~~~~~~~~ make[2]: *** [/kisskb/src/scripts/Makefile.build:490: drivers/power] Error 2 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [/kisskb/src/Makefile:1079: drivers] Error 2 make: *** [Makefile:179: sub-make] Error 2 Command 'make -s -j 48 ARCH=powerpc O=/kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc8 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-8.1.0-nolibc/powerpc64-linux/bin/powerpc64-linux- ' returned non-zero exit status 2 # rm -rf /kisskb/build/powerpc-next-rand_powerpc-randconfig_powerpc-gcc8 # Build took: 0:03:21.932915