# git rev-parse -q --verify 91a62bac46aaa40d6fc94fb95f01119ea9a561c2^{commit} 91a62bac46aaa40d6fc94fb95f01119ea9a561c2 already have revision, skipping fetch # git checkout -q -f -B kisskb 91a62bac46aaa40d6fc94fb95f01119ea9a561c2 # git clean -qxdf # git log -1 commit 91a62bac46aaa40d6fc94fb95f01119ea9a561c2 Author: Anton Blanchard Date: Sat Oct 1 20:41:56 2016 +1000 powerpc/pseries: Use H_CLEAR_HPT to clear MMU hash table during kexec An hcall was recently added that does exactly what we need during kexec - it clears the entire MMU hash table, ignoring any VRMA mappings. Try it and fall back to the old method if we get a failure. On a POWER8 box with 5TB of memory, this reduces the time it takes to kexec a new kernel from from 4 minutes to 1 minute. Signed-off-by: Anton Blanchard [mpe: Split into separate functions and tweak function naming] 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 91a62bac46aaa40d6fc94fb95f01119ea9a561c2 # < make -j 10 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-next_g5_defconfig_powerpc CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- g5_defconfig # make -j 10 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-next_g5_defconfig_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-next_g5_defconfig_powerpc' GEN ./Makefile scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release GEN ./Makefile WRAP arch/powerpc/include/generated/asm/clkdev.h WRAP arch/powerpc/include/generated/asm/div64.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/uapi/linux/version.h UPD include/generated/uapi/linux/version.h HOSTCC scripts/basic/bin2c UPD include/config/kernel.release Using /home/kisskb/slave/src as source for kernel CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h HOSTCC scripts/dtc/dtc.o HOSTCC scripts/genksyms/genksyms.o HOSTCC scripts/dtc/flattree.o HOSTCC scripts/dtc/fstree.o SHIPPED scripts/genksyms/parse.tab.c SHIPPED scripts/genksyms/lex.lex.c SHIPPED scripts/genksyms/keywords.hash.c HOSTCC scripts/dtc/data.o HOSTCC scripts/dtc/livetree.o CC scripts/mod/empty.o HOSTCC scripts/kallsyms HOSTCC scripts/pnmtologo HOSTCC scripts/mod/mk_elfconfig HOSTCC scripts/conmakehash CC scripts/mod/devicetable-offsets.s HOSTCC scripts/sortextable MKELF scripts/mod/elfconfig.h GEN scripts/mod/devicetable-offsets.h HOSTCC scripts/mod/sumversion.o SHIPPED scripts/genksyms/parse.tab.h HOSTCC scripts/genksyms/parse.tab.o HOSTCC scripts/genksyms/lex.lex.o HOSTCC scripts/dtc/treesource.o HOSTCC scripts/dtc/srcpos.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 CC kernel/bounds.s CHK include/generated/timeconst.h HOSTCC scripts/dtc/dtc-lexer.lex.o UPD include/generated/timeconst.h HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/file2alias.o CHK include/generated/bounds.h HOSTCC scripts/dtc/dtc-parser.tab.o UPD include/generated/bounds.h CC arch/powerpc/kernel/asm-offsets.s CHK include/generated/asm-offsets.h UPD include/generated/asm-offsets.h CALL /home/kisskb/slave/src/scripts/checksyscalls.sh HOSTLD scripts/dtc/dtc HOSTLD scripts/genksyms/genksyms HOSTLD scripts/mod/modpost CC init/main.o CHK include/generated/compile.h HOSTCC usr/gen_init_cpio CC init/do_mounts.o CC init/do_mounts_rd.o CC init/do_mounts_initrd.o CC init/do_mounts_md.o CC init/initramfs.o UPD include/generated/compile.h CC init/init_task.o CC arch/powerpc/mm/fault.o CC arch/powerpc/kernel/cputable.o GEN usr/initramfs_data.cpio.gz AS usr/initramfs_data.o LD usr/built-in.o CC arch/powerpc/mm/mem.o CC arch/powerpc/kernel/ptrace.o CC arch/powerpc/kernel/syscalls.o CC arch/powerpc/mm/pgtable.o CC init/version.o CC arch/powerpc/mm/mmap.o AS arch/powerpc/lib/string.o CC arch/powerpc/lib/alloc.o AS arch/powerpc/lib/crtsavres.o CC arch/powerpc/sysdev/mpic.o CC arch/powerpc/kernel/irq.o CC arch/powerpc/kernel/align.o CC arch/powerpc/sysdev/mpic_msi.o CC arch/powerpc/mm/init_64.o CC arch/powerpc/lib/ppc_ksyms.o CC arch/powerpc/mm/pgtable_64.o CC arch/powerpc/platforms/powermac/pic.o LD init/mounts.o LD init/built-in.o LD arch/powerpc/math-emu/built-in.o LD arch/powerpc/crypto/built-in.o LD arch/powerpc/net/built-in.o CC arch/powerpc/kernel/signal_32.o CC arch/powerpc/lib/code-patching.o CC arch/powerpc/sysdev/mpic_u3msi.o CC arch/powerpc/mm/pgtable-hash64.o CC arch/powerpc/mm/hash_utils_64.o CC arch/powerpc/platforms/powermac/setup.o CC arch/powerpc/lib/feature-fixups.o AS arch/powerpc/mm/slb_low.o CC arch/powerpc/platforms/powermac/time.o CC arch/powerpc/platforms/powermac/feature.o CC arch/powerpc/sysdev/msi_bitmap.o CC arch/powerpc/sysdev/dart_iommu.o CC arch/powerpc/kernel/pmc.o CC arch/powerpc/kernel/vdso.o AS arch/powerpc/lib/checksum_64.o /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S: Assembler messages: /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:233: Error: Unrecognized opcode: `ex_table(100b,.Lsrc_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:237: Error: Unrecognized opcode: `ex_table(200b,.Ldest_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:259: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:260: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:262: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:263: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:274: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:275: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:278: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:279: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:283: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:284: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:287: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:288: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:291: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:292: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:295: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:296: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:300: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:301: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:304: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:305: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:310: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:311: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:314: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:315: Error: Unrecognized opcode: `ex_table(150b,.Lsrc_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:319: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:320: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:323: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:324: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:327: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:328: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:331: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:332: Error: Unrecognized opcode: `ex_table(250b,.Ldest_error)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:351: Error: Unrecognized opcode: `ex_table(100b,.Lsrc_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:354: Error: Unrecognized opcode: `ex_table(200b,.Ldest_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:364: Error: Unrecognized opcode: `ex_table(100b,.Lsrc_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:367: Error: Unrecognized opcode: `ex_table(200b,.Ldest_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:375: Error: Unrecognized opcode: `ex_table(100b,.Lsrc_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:378: Error: Unrecognized opcode: `ex_table(200b,.Ldest_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:386: Error: Unrecognized opcode: `ex_table(100b,.Lsrc_error_nr)' /home/kisskb/slave/src/arch/powerpc/lib/checksum_64.S:389: Error: Unrecognized opcode: `ex_table(200b,.Ldest_error_nr)' /home/kisskb/slave/src/scripts/Makefile.build:326: recipe for target 'arch/powerpc/lib/checksum_64.o' failed make[2]: *** [arch/powerpc/lib/checksum_64.o] Error 1 /home/kisskb/slave/src/Makefile:968: recipe for target 'arch/powerpc/lib' failed make[1]: *** [arch/powerpc/lib] Error 2 make[1]: *** Waiting for unfinished jobs.... CC arch/powerpc/platforms/powermac/pci.o AS arch/powerpc/platforms/powermac/sleep.o CC arch/powerpc/platforms/powermac/low_i2c.o AS arch/powerpc/platforms/powermac/cache.o CC arch/powerpc/platforms/powermac/pfunc_core.o CC arch/powerpc/platforms/powermac/pfunc_base.o CC arch/powerpc/platforms/powermac/udbg_scc.o CC arch/powerpc/platforms/powermac/udbg_adb.o LD arch/powerpc/sysdev/built-in.o CC arch/powerpc/mm/slb.o CC arch/powerpc/mm/hash_native_64.o CC arch/powerpc/kernel/process.o CPP arch/powerpc/kernel/systbl_chk.i CC arch/powerpc/kernel/idle.o CC arch/powerpc/platforms/powermac/nvram.o CC arch/powerpc/platforms/powermac/smp.o CC arch/powerpc/mm/mmu_context_book3s64.o CC arch/powerpc/kernel/signal.o CC arch/powerpc/mm/pgtable-book3s64.o CC arch/powerpc/mm/pgtable-radix.o CC arch/powerpc/mm/tlb-radix.o CC arch/powerpc/mm/tlb_hash64.o CC arch/powerpc/mm/hash64_4k.o CC arch/powerpc/mm/slice.o CC arch/powerpc/mm/hugetlbpage.o CC arch/powerpc/mm/hugetlbpage-hash64.o CC arch/powerpc/mm/hugetlbpage-radix.o LD arch/powerpc/platforms/powermac/built-in.o LD arch/powerpc/platforms/built-in.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 AS arch/powerpc/kernel/misc_64.o CC arch/powerpc/kernel/of_platform.o CC arch/powerpc/kernel/prom_parse.o LD arch/powerpc/mm/built-in.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/hw_breakpoint.o LDS arch/powerpc/kernel/vdso64/vdso64.lds LDS arch/powerpc/kernel/vdso32/vdso32.lds AS arch/powerpc/kernel/vdso64/sigtramp.o VDSO32A arch/powerpc/kernel/vdso32/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 AS arch/powerpc/kernel/vdso64/cacheflush.o VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o AS arch/powerpc/kernel/vdso64/note.o VDSO32A arch/powerpc/kernel/vdso32/note.o AS arch/powerpc/kernel/cpu_setup_ppc970.o AS arch/powerpc/kernel/vdso64/getcpu.o AS arch/powerpc/kernel/cpu_setup_pa6t.o VDSO32A arch/powerpc/kernel/vdso32/getcpu.o AS arch/powerpc/kernel/cpu_setup_power.o CC arch/powerpc/kernel/mce.o VDSO64L arch/powerpc/kernel/vdso64/vdso64.so.dbg VDSO32L arch/powerpc/kernel/vdso32/vdso32.so.dbg OBJCOPY arch/powerpc/kernel/vdso64/vdso64.so AS arch/powerpc/kernel/vdso64/vdso64_wrapper.o OBJCOPY arch/powerpc/kernel/vdso32/vdso32.so CC arch/powerpc/kernel/mce_power.o AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o CC arch/powerpc/kernel/vecemu.o LD arch/powerpc/kernel/vdso64/built-in.o AS arch/powerpc/kernel/idle_power4.o LD arch/powerpc/kernel/vdso32/built-in.o CC arch/powerpc/kernel/proc_powerpc.o CC arch/powerpc/kernel/smp-tbsync.o CC arch/powerpc/kernel/module.o CC arch/powerpc/kernel/module_64.o CC arch/powerpc/kernel/dma-iommu.o CC arch/powerpc/kernel/iommu.o CC arch/powerpc/kernel/ppc_ksyms.o CC arch/powerpc/kernel/btext.o CC arch/powerpc/kernel/smp.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/machine_kexec.o CC arch/powerpc/kernel/crash.o CC arch/powerpc/kernel/machine_kexec_64.o CC arch/powerpc/kernel/iomap.o AS arch/powerpc/kernel/ppc_save_regs.o CC arch/powerpc/kernel/prom_init.o AS arch/powerpc/kernel/head_64.o LDS arch/powerpc/kernel/vmlinux.lds AS arch/powerpc/kernel/fpu.o AS arch/powerpc/kernel/vector.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 CALL /home/kisskb/slave/src/arch/powerpc/kernel/prom_init_check.sh LD arch/powerpc/kernel/built-in.o make[1]: Leaving directory '/home/kisskb/slave/build/powerpc-next_g5_defconfig_powerpc' Makefile:150: recipe for target 'sub-make' failed make: *** [sub-make] Error 2 Command 'make -j 10 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-next_g5_defconfig_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-next_g5_defconfig_powerpc # Build took: 0:00:14.416309