# git rev-parse -q --verify 555ec1553b73a97562e5a4867c49535679d2e387^{commit} 555ec1553b73a97562e5a4867c49535679d2e387 already have revision, skipping fetch # git checkout -q -f -B kisskb 555ec1553b73a97562e5a4867c49535679d2e387 # git clean -qxdf # git log -1 commit 555ec1553b73a97562e5a4867c49535679d2e387 Author: Nicholas Piggin Date: Tue Aug 1 23:59:28 2017 +1000 powerpc/64: Fix __check_irq_replay missing decrementer interrupt If the decrementer wraps again and de-asserts the decrementer exception while hard-disabled, __check_irq_replay() has a test to notice the wrap when interrupts are re-enabled. The decrementer check must be done when clearing the PACA_IRQ_HARD_DIS flag, not when the PACA_IRQ_DEC flag is tested. Previously this worked because the decrementer interrupt was always the first one checked after clearing the hard disable flag, but HMI check was moved ahead of that, which introduced this bug. This can cause a missed decrementer interrupt if we soft-disable interrupts then take an HMI which is recorded in irq_happened, then hard-disable interrupts for > 4s to wrap the decrementer. Fixes: e0e0d6b7390b ("powerpc/64: Replay hypervisor maintenance interrupt first") Cc: stable@vger.kernel.org # v4.9+ Signed-off-by: Nicholas Piggin 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 555ec1553b73a97562e5a4867c49535679d2e387 # < make -j 10 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-fixes_powerpc-randconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- randconfig KCONFIG_SEED=0x61DB6332 # 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 # yes \n | make -j 10 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-fixes_powerpc-randconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- oldconfig yes: standard output: Broken pipe yes: write error # make -j 10 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-fixes_powerpc-randconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- make[1]: Entering directory '/home/kisskb/slave/build/powerpc-fixes_powerpc-randconfig_powerpc' GEN ./Makefile scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release GEN ./Makefile WRAP arch/powerpc/include/generated/uapi/asm/param.h WRAP arch/powerpc/include/generated/uapi/asm/poll.h WRAP arch/powerpc/include/generated/uapi/asm/resource.h WRAP arch/powerpc/include/generated/uapi/asm/sockios.h WRAP arch/powerpc/include/generated/uapi/asm/statfs.h CHK include/generated/uapi/linux/version.h UPD include/generated/uapi/linux/version.h UPD include/config/kernel.release HOSTCC scripts/basic/bin2c Using /home/kisskb/slave/src as source for kernel WRAP arch/powerpc/include/generated/asm/clkdev.h WRAP arch/powerpc/include/generated/asm/div64.h WRAP arch/powerpc/include/generated/asm/export.h WRAP arch/powerpc/include/generated/asm/irq_regs.h WRAP arch/powerpc/include/generated/asm/irq_work.h WRAP arch/powerpc/include/generated/asm/local64.h WRAP arch/powerpc/include/generated/asm/mcs_spinlock.h WRAP arch/powerpc/include/generated/asm/preempt.h WRAP arch/powerpc/include/generated/asm/rwsem.h WRAP arch/powerpc/include/generated/asm/vtime.h CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h HOSTCC scripts/dtc/dtc.o CC scripts/mod/empty.o HOSTCC scripts/mod/mk_elfconfig CC scripts/mod/devicetable-offsets.s HOSTCC scripts/kallsyms HOSTCC scripts/pnmtologo HOSTCC scripts/conmakehash HOSTCC scripts/sortextable HOSTCC scripts/dtc/flattree.o HOSTCC scripts/dtc/fstree.o HOSTCC scripts/dtc/data.o CHK scripts/mod/devicetable-offsets.h UPD scripts/mod/devicetable-offsets.h MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/file2alias.o HOSTCC scripts/dtc/livetree.o HOSTCC scripts/dtc/treesource.o HOSTCC scripts/dtc/srcpos.o HOSTCC scripts/mod/sumversion.o HOSTCC scripts/dtc/checks.o HOSTCC scripts/dtc/util.o SHIPPED scripts/dtc/dtc-lexer.lex.c SHIPPED scripts/dtc/dtc-parser.tab.h SHIPPED scripts/dtc/dtc-parser.tab.c HOSTCC scripts/dtc/dtc-lexer.lex.o HOSTCC scripts/dtc/dtc-parser.tab.o CHK include/generated/timeconst.h CC kernel/bounds.s UPD include/generated/timeconst.h CHK include/generated/bounds.h UPD include/generated/bounds.h CC arch/powerpc/kernel/asm-offsets.s HOSTLD scripts/dtc/dtc CHK include/generated/asm-offsets.h UPD include/generated/asm-offsets.h CALL /home/kisskb/slave/src/scripts/checksyscalls.sh HOSTLD scripts/mod/modpost CC init/main.o CHK include/generated/compile.h AR usr/built-in.o CC init/do_mounts.o CC init/noinitramfs.o CC init/init_task.o UPD include/generated/compile.h CC init/version.o CC arch/powerpc/mm/fault.o AS arch/powerpc/lib/string.o CC arch/powerpc/sysdev/mpic.o CC arch/powerpc/platforms/85xx/smp.o CC arch/powerpc/kernel/cputable.o CC arch/powerpc/lib/alloc.o CC arch/powerpc/kernel/ptrace.o CC arch/powerpc/mm/mem.o CC arch/powerpc/lib/code-patching.o CC arch/powerpc/lib/feature-fixups.o AS arch/powerpc/lib/checksum_64.o AR arch/powerpc/math-emu/built-in.o CC arch/powerpc/mm/pgtable.o AS arch/powerpc/crypto/md5-asm.o CC arch/powerpc/platforms/85xx/common.o CC arch/powerpc/crypto/md5-glue.o AS [M] arch/powerpc/crypto/sha1-powerpc-asm.o CC arch/powerpc/mm/mmap.o CC arch/powerpc/lib/checksum_wrappers.o AS arch/powerpc/lib/copypage_64.o AR arch/powerpc/platforms/85xx/built-in.o AR arch/powerpc/platforms/built-in.o CC arch/powerpc/mm/init_64.o CC arch/powerpc/sysdev/mpic_msi.o CC arch/powerpc/sysdev/mpic_u3msi.o AR init/mounts.o AR init/built-in.o CC arch/powerpc/mm/pgtable_64.o CC arch/powerpc/kernel/syscalls.o CC [M] arch/powerpc/crypto/sha1.o AS arch/powerpc/lib/copyuser_64.o AS arch/powerpc/lib/mem_64.o CC arch/powerpc/kernel/irq.o CC arch/powerpc/kernel/align.o AS arch/powerpc/lib/hweight_64.o AS arch/powerpc/lib/copyuser_power7.o AS arch/powerpc/lib/string_64.o AS arch/powerpc/lib/copypage_power7.o AS arch/powerpc/lib/memcpy_power7.o /home/kisskb/slave/src/arch/powerpc/mm/pgtable_64.c: In function '__alloc_for_cache': /home/kisskb/slave/src/arch/powerpc/mm/pgtable_64.c:358:10: error: 'PGALLOC_GFP' undeclared (first use in this function) /home/kisskb/slave/src/arch/powerpc/mm/pgtable_64.c:358:10: note: each undeclared identifier is reported only once for each function it appears in CC arch/powerpc/kernel/signal_32.o /home/kisskb/slave/src/scripts/Makefile.build:302: recipe for target 'arch/powerpc/mm/pgtable_64.o' failed make[2]: *** [arch/powerpc/mm/pgtable_64.o] Error 1 make[2]: *** Waiting for unfinished jobs.... CC arch/powerpc/kernel/pmc.o AS arch/powerpc/lib/memcpy_64.o /home/kisskb/slave/src/Makefile:1019: recipe for target 'arch/powerpc/mm' failed make[1]: *** [arch/powerpc/mm] Error 2 make[1]: *** Waiting for unfinished jobs.... AS arch/powerpc/lib/memcmp_64.o AR arch/powerpc/crypto/md5-ppc.o CC arch/powerpc/lib/locks.o CC arch/powerpc/sysdev/msi_bitmap.o CC arch/powerpc/kernel/vdso.o AS arch/powerpc/lib/crtsavres.o AR arch/powerpc/crypto/built-in.o CC arch/powerpc/sysdev/fsl_soc.o CC arch/powerpc/sysdev/fsl_mpic_err.o CC arch/powerpc/kernel/process.o AR arch/powerpc/lib/built-in.o CPP arch/powerpc/kernel/systbl_chk.i CC arch/powerpc/sysdev/fsl_pci.o LD [M] arch/powerpc/crypto/sha1-powerpc.o CC arch/powerpc/sysdev/fsl_msi.o CC arch/powerpc/sysdev/indirect_pci.o CC arch/powerpc/kernel/idle.o CC arch/powerpc/kernel/signal.o CC arch/powerpc/kernel/sysfs.o CC arch/powerpc/kernel/cacheinfo.o CC arch/powerpc/kernel/time.o CC arch/powerpc/kernel/prom.o CC arch/powerpc/kernel/traps.o CC arch/powerpc/kernel/setup-common.o CC arch/powerpc/kernel/udbg.o AS arch/powerpc/kernel/misc.o CC arch/powerpc/kernel/io.o CC arch/powerpc/kernel/dma.o AR arch/powerpc/sysdev/built-in.o AS arch/powerpc/kernel/misc_64.o CC arch/powerpc/kernel/of_platform.o CC arch/powerpc/kernel/prom_parse.o CC arch/powerpc/kernel/setup_64.o CC arch/powerpc/kernel/sys_ppc32.o CC arch/powerpc/kernel/signal_64.o CC arch/powerpc/kernel/ptrace32.o CC arch/powerpc/kernel/paca.o CC arch/powerpc/kernel/nvram_64.o CC arch/powerpc/kernel/firmware.o CC arch/powerpc/kernel/trace/ftrace.o CC arch/powerpc/kernel/trace/trace_clock.o AS arch/powerpc/kernel/trace/ftrace_64.o AS arch/powerpc/kernel/trace/ftrace_64_pg.o AS arch/powerpc/kernel/exceptions-64e.o LDS arch/powerpc/kernel/vdso32/vdso32.lds LDS arch/powerpc/kernel/vdso64/vdso64.lds VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o AS arch/powerpc/kernel/vdso64/sigtramp.o AS arch/powerpc/kernel/vdso64/gettimeofday.o VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o VDSO32A arch/powerpc/kernel/vdso32/datapage.o AS arch/powerpc/kernel/vdso64/datapage.o VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o VDSO32A arch/powerpc/kernel/vdso32/note.o AS arch/powerpc/kernel/vdso64/cacheflush.o AS arch/powerpc/kernel/idle_book3e.o CC arch/powerpc/kernel/proc_powerpc.o VDSO32A arch/powerpc/kernel/vdso32/getcpu.o CC arch/powerpc/kernel/crash_dump.o AS arch/powerpc/kernel/vdso64/note.o CC arch/powerpc/kernel/module.o CC arch/powerpc/kernel/module_64.o CC arch/powerpc/kernel/dbell.o AS arch/powerpc/kernel/vdso64/getcpu.o VDSO32L arch/powerpc/kernel/vdso32/vdso32.so.dbg AS arch/powerpc/kernel/reloc_64.o OBJCOPY arch/powerpc/kernel/vdso32/vdso32.so AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o VDSO64L arch/powerpc/kernel/vdso64/vdso64.so.dbg CC arch/powerpc/kernel/dma-iommu.o OBJCOPY arch/powerpc/kernel/vdso64/vdso64.so AR arch/powerpc/kernel/vdso32/built-in.o AS arch/powerpc/kernel/vdso64/vdso64_wrapper.o CC arch/powerpc/kernel/iommu.o AR arch/powerpc/kernel/vdso64/built-in.o CC arch/powerpc/kernel/kgdb.o AR arch/powerpc/kernel/trace/built-in.o CC arch/powerpc/kernel/smp.o CC arch/powerpc/kernel/legacy_serial.o CC arch/powerpc/kernel/udbg_16550.o CC arch/powerpc/kernel/stacktrace.o CC arch/powerpc/kernel/pci_64.o CC arch/powerpc/kernel/pci_dn.o CC arch/powerpc/kernel/pci-hotplug.o CC arch/powerpc/kernel/isa-bridge.o CC arch/powerpc/kernel/pci-common.o CC arch/powerpc/kernel/pci_of_scan.o CC arch/powerpc/kernel/msi.o CC arch/powerpc/kernel/iomap.o CC arch/powerpc/kernel/epapr_paravirt.o AS arch/powerpc/kernel/epapr_hcalls.o AS arch/powerpc/kernel/head_64.o LDS arch/powerpc/kernel/vmlinux.lds AS arch/powerpc/kernel/fpu.o AS arch/powerpc/kernel/entry_64.o CALL /home/kisskb/slave/src/arch/powerpc/kernel/systbl_chk.sh AS arch/powerpc/kernel/systbl.o AR arch/powerpc/kernel/built-in.o make[1]: Leaving directory '/home/kisskb/slave/build/powerpc-fixes_powerpc-randconfig_powerpc' Makefile:145: recipe for target 'sub-make' failed make: *** [sub-make] Error 2 Command 'make -j 10 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-fixes_powerpc-randconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- ' returned non-zero exit status 2 # rm -rf /home/kisskb/slave/build/powerpc-fixes_powerpc-randconfig_powerpc # Build took: 0:00:13.341767