# git rev-parse -q --verify dce9f15a0db04257c8ed96668e171ac204c31513^{commit} dce9f15a0db04257c8ed96668e171ac204c31513 already have revision, skipping fetch # git checkout -q -f -B kisskb dce9f15a0db04257c8ed96668e171ac204c31513 # git clean -qxdf # git log -1 commit dce9f15a0db04257c8ed96668e171ac204c31513 Author: Nicholas Piggin Date: Thu Sep 15 19:04:46 2016 +1000 powerpc/64s: exception optimise MSR handling mtmsrd with L=1 only affects MSR_EE and MSR_RI bits, and we always know what state those bits are, so the kernel MSR does not need to be loaded when modifying them. mtmsrd is often in the critical execution path, so avoiding dependency on even L1 load is noticable. On a POWER8 this saves about 3 cycles from the syscall path, and possibly a few from other exception returns (not measured). Signed-off-by: Nicholas Piggin Signed-off-by: Michael Ellerman # < /opt/cross/kisskb/gcc-5.3.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc --version # < git log --format=%s --max-count=1 dce9f15a0db04257c8ed96668e171ac204c31513 # < make -j 48 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc-5.3 CROSS_COMPILE=/opt/cross/kisskb/gcc-5.3.0-nolibc/powerpc64-linux/bin/powerpc64-linux- allnoconfig # make -j 48 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc-5.3 CROSS_COMPILE=/opt/cross/kisskb/gcc-5.3.0-nolibc/powerpc64-linux/bin/powerpc64-linux- make[1]: Entering directory '/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc-5.3' GEN ./Makefile scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release CHK include/generated/uapi/linux/version.h UPD include/generated/uapi/linux/version.h WRAP arch/powerpc/include/generated/asm/div64.h WRAP arch/powerpc/include/generated/asm/irq_regs.h WRAP arch/powerpc/include/generated/asm/mcs_spinlock.h WRAP arch/powerpc/include/generated/asm/preempt.h GEN ./Makefile WRAP arch/powerpc/include/generated/asm/vtime.h WRAP arch/powerpc/include/generated/asm/local64.h WRAP arch/powerpc/include/generated/asm/rwsem.h WRAP arch/powerpc/include/generated/asm/clkdev.h WRAP arch/powerpc/include/generated/asm/irq_work.h UPD include/config/kernel.release HOSTCC scripts/dtc/dtc.o HOSTCC scripts/dtc/flattree.o CC scripts/mod/empty.o HOSTCC scripts/dtc/fstree.o HOSTCC scripts/dtc/data.o CC scripts/mod/devicetable-offsets.s HOSTCC scripts/dtc/livetree.o HOSTCC scripts/dtc/checks.o HOSTCC scripts/dtc/util.o HOSTCC scripts/mod/mk_elfconfig HOSTCC scripts/dtc/srcpos.o HOSTCC scripts/dtc/treesource.o SHIPPED scripts/dtc/dtc-parser.tab.h SHIPPED scripts/dtc/dtc-parser.tab.c SHIPPED scripts/dtc/dtc-lexer.lex.c HOSTCC scripts/dtc/dtc-lexer.lex.o HOSTCC scripts/dtc/dtc-parser.tab.o GEN scripts/mod/devicetable-offsets.h MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/sumversion.o HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/file2alias.o HOSTLD scripts/dtc/dtc HOSTLD scripts/mod/modpost Using /home/kisskb/slave/src as source for kernel CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h 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 CHK include/generated/asm-offsets.h UPD include/generated/asm-offsets.h CALL /home/kisskb/slave/src/scripts/checksyscalls.sh CC init/main.o LD usr/built-in.o CHK include/generated/compile.h CC init/do_mounts.o CC init/noinitramfs.o CC init/init_task.o UPD include/generated/compile.h CC init/version.o LD arch/powerpc/sysdev/built-in.o CC arch/powerpc/mm/fault.o CC arch/powerpc/mm/pgtable.o CC arch/powerpc/mm/pgtable_32.o CC arch/powerpc/mm/init_32.o CC arch/powerpc/mm/mmap.o CC arch/powerpc/mm/ppc_mmu_32.o AS arch/powerpc/mm/hash_low_32.o CC arch/powerpc/mm/mmu_context_hash32.o CC arch/powerpc/mm/tlb_hash32.o CC arch/powerpc/mm/hugetlbpage.o CC arch/powerpc/mm/mem.o CC arch/powerpc/lib/code-patching.o CC arch/powerpc/lib/ppc_ksyms.o AS arch/powerpc/lib/crtsavres.o AS arch/powerpc/lib/div64.o AS arch/powerpc/lib/copy_32.o AS arch/powerpc/lib/checksum_32.o CC arch/powerpc/lib/checksum_wrappers.o LD arch/powerpc/platforms/built-in.o CC arch/powerpc/lib/feature-fixups.o CC arch/powerpc/lib/alloc.o AS arch/powerpc/lib/string.o LD arch/powerpc/math-emu/built-in.o LD arch/powerpc/crypto/built-in.o CC arch/powerpc/kernel/ptrace.o CC arch/powerpc/kernel/syscalls.o CC arch/powerpc/kernel/irq.o CC arch/powerpc/kernel/cputable.o CC arch/powerpc/kernel/align.o CC arch/powerpc/kernel/vdso.o CC arch/powerpc/kernel/pmc.o CC arch/powerpc/kernel/idle.o CPP arch/powerpc/kernel/systbl_chk.i CC arch/powerpc/kernel/process.o CC arch/powerpc/kernel/signal.o CC arch/powerpc/kernel/signal_32.o CC arch/powerpc/kernel/io.o CC arch/powerpc/kernel/dma.o AS arch/powerpc/kernel/misc_32.o AS arch/powerpc/kernel/misc.o CC arch/powerpc/kernel/udbg.o CC arch/powerpc/kernel/prom.o CC arch/powerpc/kernel/setup-common.o CC arch/powerpc/kernel/sysfs.o AS arch/powerpc/kernel/l2cr_6xx.o CC arch/powerpc/kernel/cacheinfo.o CC arch/powerpc/kernel/traps.o CC arch/powerpc/kernel/of_platform.o CC arch/powerpc/kernel/time.o AS arch/powerpc/kernel/idle_6xx.o CC arch/powerpc/kernel/prom_parse.o CC arch/powerpc/kernel/setup_32.o AS arch/powerpc/kernel/cpu_setup_6xx.o AS arch/powerpc/kernel/entry_32.o CC arch/powerpc/kernel/pci_32.o CC arch/powerpc/kernel/pci-common.o LD arch/powerpc/net/built-in.o CC arch/powerpc/kernel/pci_of_scan.o CC arch/powerpc/kernel/iomap.o AS arch/powerpc/kernel/head_32.o LDS arch/powerpc/kernel/vmlinux.lds AS arch/powerpc/kernel/fpu.o LDS arch/powerpc/kernel/vdso32/vdso32.lds VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o CALL /home/kisskb/slave/src/arch/powerpc/kernel/systbl_chk.sh VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o VDSO32A arch/powerpc/kernel/vdso32/datapage.o VDSO32A arch/powerpc/kernel/vdso32/note.o AS arch/powerpc/kernel/systbl.o VDSO32L arch/powerpc/kernel/vdso32/vdso32.so.dbg LD certs/built-in.o OBJCOPY arch/powerpc/kernel/vdso32/vdso32.so AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o LD arch/powerpc/lib/built-in.o LD arch/powerpc/kernel/vdso32/built-in.o LD ipc/built-in.o LD init/mounts.o LD init/built-in.o CC security/min_addr.o CC security/commoncap.o LD arch/powerpc/mm/built-in.o LD crypto/built-in.o LD block/built-in.o CC kernel/fork.o CC kernel/exit.o CC kernel/sysctl.o CC kernel/exec_domain.o CC kernel/cpu.o CC kernel/resource.o CC kernel/panic.o CC kernel/softirq.o CC kernel/signal.o CC kernel/capability.o CC kernel/sysctl_binary.o CC kernel/user.o CC kernel/ptrace.o CC kernel/sys.o CC kernel/pid.o CC kernel/workqueue.o CC kernel/kmod.o CC kernel/params.o CC kernel/sys_ni.o CC kernel/kthread.o CC kernel/cred.o CC kernel/ksysfs.o CC kernel/reboot.o CC kernel/nsproxy.o CC kernel/notifier.o CC kernel/task_work.o CC kernel/extable.o CC kernel/range.o CC kernel/async.o CC kernel/smpboot.o LD kernel/livepatch/built-in.o CC kernel/printk/printk.o CC mm/filemap.o CC mm/mempool.o CC kernel/rcu/update.o CC kernel/power/qos.o LD sound/built-in.o CC kernel/locking/mutex.o CC mm/oom_kill.o CC kernel/dma.o CC mm/maccess.o CC kernel/irq/irqdesc.o CC kernel/sched/core.o CC kernel/irq/handle.o CC kernel/sched/loadavg.o CC fs/open.o LD arch/powerpc/kernel/built-in.o LD security/built-in.o LD firmware/built-in.o CC kernel/sched/clock.o CC kernel/sched/cputime.o CC fs/read_write.o CC kernel/irq/manage.o CC kernel/time/time.o CC kernel/up.o LD net/built-in.o CC kernel/elfcore.o CC kernel/memremap.o CC kernel/irq/spurious.o CC kernel/rcu/sync.o CC kernel/rcu/tiny.o CC kernel/irq/resend.o CC kernel/sched/idle_task.o CC kernel/irq/chip.o CC kernel/irq/dummychip.o CC kernel/sched/fair.o CC mm/page_alloc.o LD drivers/amba/built-in.o CC fs/file_table.o LD drivers/auxdisplay/built-in.o LD virt/lib/built-in.o CC mm/page-writeback.o CC kernel/sched/rt.o CC kernel/irq/devres.o LD virt/built-in.o LD drivers/block/built-in.o LD drivers/bus/built-in.o CC kernel/sched/deadline.o CC kernel/irq/irqdomain.o CC mm/readahead.o CC mm/swap.o CC kernel/locking/semaphore.o LD drivers/cdrom/built-in.o CC kernel/locking/rwsem.o CC mm/truncate.o CC mm/vmscan.o CC kernel/sched/stop_task.o CC drivers/char/mem.o CC kernel/sched/wait.o CC kernel/sched/swait.o CC kernel/locking/percpu-rwsem.o CC drivers/base/component.o LD kernel/rcu/built-in.o CC kernel/sched/completion.o CC kernel/locking/rwsem-xadd.o CC kernel/sched/idle.o LD drivers/clk/mvebu/built-in.o LD drivers/clk/bcm/built-in.o LD drivers/clk/ti/built-in.o CC mm/shmem.o LD kernel/printk/built-in.o CC lib/lockref.o CC mm/util.o CC drivers/base/core.o CC lib/bcd.o CC drivers/char/random.o LD drivers/clk/built-in.o CC drivers/char/misc.o CC lib/sort.o CC lib/div64.o LD kernel/power/built-in.o CC mm/mmzone.o CC mm/vmstat.o CC lib/parser.o CC mm/backing-dev.o CC lib/halfmd4.o LD drivers/clocksource/built-in.o CC lib/debug_locks.o CC lib/random32.o CC lib/bust_spinlocks.o LD drivers/firewire/built-in.o CC mm/mm_init.o CC fs/super.o CC fs/char_dev.o CC kernel/time/timer.o CC kernel/time/hrtimer.o CC kernel/time/itimer.o CC kernel/time/posix-timers.o CC fs/stat.o CC kernel/time/posix-cpu-timers.o CC kernel/time/timekeeping.o CC mm/mmu_context.o LD drivers/char/agp/built-in.o CC mm/percpu.o CC mm/slab_common.o CC kernel/time/ntp.o CC mm/compaction.o CC kernel/time/clocksource.o CC mm/vmacache.o CC fs/exec.o CC lib/kasprintf.o LD kernel/locking/built-in.o CC lib/bitmap.o CC lib/scatterlist.o CC lib/gcd.o CC lib/list_sort.o CC lib/lcm.o CC lib/flex_array.o CC lib/uuid.o CC lib/iov_iter.o CC drivers/base/bus.o CC kernel/time/jiffies.o CC mm/interval_tree.o CC lib/clz_ctz.o CC lib/bsearch.o CC mm/list_lru.o CC lib/find_bit.o LD kernel/sched/built-in.o LD kernel/irq/built-in.o CC lib/llist.o CC mm/debug.o CC lib/memweight.o CC mm/workingset.o CC mm/gup.o CC lib/kfifo.o CC lib/percpu-refcount.o CC mm/memory.o CC mm/highmem.o CC drivers/base/dd.o CC mm/mincore.o CC drivers/base/syscore.o CC mm/mlock.o CC lib/percpu_ida.o CC lib/rhashtable.o CC lib/reciprocal_div.o CC lib/once.o CC mm/mmap.o LD drivers/firmware/broadcom/built-in.o CC fs/pipe.o CC fs/namei.o CC fs/fcntl.o CC mm/mprotect.o LD drivers/firmware/built-in.o LD drivers/gpu/drm/bridge/built-in.o LD drivers/hwtracing/intel_th/built-in.o CC lib/string_helpers.o LD drivers/gpu/drm/hisilicon/built-in.o CC lib/hexdump.o LD drivers/i2c/algos/built-in.o LD drivers/gpu/drm/i2c/built-in.o CC mm/mremap.o CC kernel/time/timer_list.o CC lib/kstrtox.o LD drivers/gpu/drm/omapdrm/displays/built-in.o LD drivers/i2c/busses/built-in.o LD drivers/i2c/muxes/built-in.o LD drivers/gpu/drm/panel/built-in.o CC lib/pci_iomap.o CC kernel/time/timeconv.o CC lib/iomap_copy.o LD drivers/i2c/built-in.o CC lib/devres.o CC lib/hweight.o CC kernel/time/timecounter.o LD drivers/gpu/drm/tilcdc/built-in.o CC mm/msync.o LD drivers/gpu/drm/omapdrm/dss/built-in.o CC kernel/time/posix-clock.o CC fs/ioctl.o LD drivers/idle/built-in.o CC kernel/time/alarmtimer.o CC fs/readdir.o LD drivers/char/built-in.o LD drivers/gpu/drm/omapdrm/built-in.o CC kernel/time/clockevents.o CC lib/bitrev.o CC drivers/irqchip/irqchip.o LD drivers/lguest/built-in.o HOSTCC lib/gen_crc32table LD drivers/gpu/drm/built-in.o CC drivers/base/driver.o CC fs/inode.o CC fs/dcache.o CC mm/rmap.o CC fs/attr.o CC fs/select.o CC kernel/time/tick-common.o CC lib/syscall.o CC mm/vmalloc.o CC mm/pagewalk.o LD drivers/macintosh/built-in.o CC lib/atomic64.o CC drivers/base/class.o CC drivers/base/platform.o LD drivers/gpu/vga/built-in.o CC mm/pgtable-generic.o LD drivers/gpu/built-in.o CC lib/strncpy_from_user.o CC lib/strnlen_user.o CC lib/argv_split.o LD drivers/mfd/built-in.o CC lib/chacha20.o CC lib/cmdline.o CC lib/ctype.o LD drivers/irqchip/built-in.o LD drivers/mmc/built-in.o CC mm/init-mm.o LD drivers/misc/cb710/built-in.o LD drivers/media/common/b2c2/built-in.o CC mm/nobootmem.o CC lib/dec_and_lock.o CC lib/decompress.o CC lib/dma-noop.o CC lib/dump_stack.o LD drivers/misc/eeprom/built-in.o LD drivers/net/built-in.o LD drivers/nfc/built-in.o LD drivers/media/common/saa7146/built-in.o CC lib/earlycpio.o CC lib/extable.o CC drivers/base/cpu.o CC mm/memblock.o LD drivers/nvme/host/built-in.o LD drivers/platform/built-in.o LD drivers/media/common/siano/built-in.o CC drivers/base/firmware.o CC lib/fdt.o LD drivers/misc/lis3lv02d/built-in.o CC drivers/of/base.o CC lib/fdt_empty_tree.o LD drivers/nvme/target/built-in.o LD drivers/power/built-in.o CC fs/bad_inode.o CC drivers/of/device.o LD drivers/pwm/built-in.o CC lib/fdt_ro.o LD drivers/media/common/v4l2-tpg/built-in.o CC lib/fdt_rw.o CC lib/fdt_strerror.o CC mm/dmapool.o LD drivers/soc/fsl/built-in.o LD drivers/nvme/built-in.o CC fs/file.o LD drivers/soc/bcm/built-in.o CC lib/fdt_sw.o CC mm/slub.o LD drivers/media/common/built-in.o CC lib/fdt_wip.o CC fs/filesystems.o LD drivers/misc/mic/bus/built-in.o CC lib/flex_proportions.o CC drivers/pci/access.o LD drivers/misc/ti-st/built-in.o LD drivers/soc/built-in.o CC drivers/base/init.o CC drivers/pci/bus.o CC lib/idr.o LD drivers/misc/mic/built-in.o CC lib/int_sqrt.o CC drivers/of/platform.o CC fs/namespace.o LD drivers/tty/serial/built-in.o LD drivers/tty/ipwireless/built-in.o CC fs/xattr.o LD drivers/media/firewire/built-in.o CC fs/seq_file.o LD drivers/usb/host/built-in.o LD kernel/time/built-in.o CC lib/ioremap.o CC drivers/base/map.o LD drivers/misc/built-in.o CC lib/irq_regs.o LD kernel/built-in.o LD drivers/tty/vt/built-in.o LD drivers/video/backlight/built-in.o LD drivers/usb/built-in.o CC lib/klist.o CC lib/is_single_threaded.o LD drivers/media/i2c/soc_camera/built-in.o CC lib/kobject.o LD drivers/tty/built-in.o LD drivers/video/fbdev/core/built-in.o CC lib/kobject_uevent.o CC lib/md5.o LD drivers/media/i2c/built-in.o LD drivers/media/mmc/siano/built-in.o CC drivers/pci/probe.o CC drivers/base/devres.o CC lib/nmi_backtrace.o CC drivers/of/fdt.o LD drivers/media/mmc/built-in.o CC lib/nodemask.o CC lib/plist.o CC fs/libfs.o LD drivers/video/fbdev/omap2/omapfb/displays/built-in.o CC lib/radix-tree.o CC drivers/pci/host-bridge.o CC fs/fs-writeback.o LD drivers/media/platform/omap/built-in.o LD drivers/video/fbdev/omap2/omapfb/dss/built-in.o LD drivers/media/rc/keymaps/built-in.o CC drivers/pci/remove.o LD drivers/media/platform/built-in.o CC drivers/pci/pci-driver.o CC drivers/pci/pci.o LD drivers/media/pci/b2c2/built-in.o LD drivers/video/fbdev/omap2/omapfb/built-in.o LD drivers/media/rc/built-in.o CC drivers/pci/search.o CC drivers/pci/pci-sysfs.o CC drivers/pci/setup-res.o CC drivers/pci/rom.o CC drivers/pci/irq.o LD drivers/media/pci/ddbridge/built-in.o LD drivers/media/pci/dm1105/built-in.o LD drivers/video/fbdev/omap2/built-in.o LD drivers/media/pci/mantis/built-in.o CC drivers/pci/setup-bus.o CC drivers/pci/vpd.o CC drivers/base/attribute_container.o CC drivers/pci/vc.o LD drivers/video/fbdev/built-in.o CC drivers/of/fdt_address.o LD drivers/media/pci/netup_unidvb/built-in.o CC drivers/of/address.o CC drivers/of/irq.o LD drivers/video/built-in.o CC drivers/of/of_pci.o CC drivers/of/of_pci_irq.o CC drivers/of/of_reserved_mem.o LD drivers/media/pci/ngene/built-in.o CC lib/ratelimit.o LD drivers/media/pci/pluto2/built-in.o CC lib/rbtree.o LD drivers/media/tuners/built-in.o CC lib/seq_buf.o CC lib/sha1.o CC lib/show_mem.o LD drivers/media/pci/pt1/built-in.o CC lib/string.o LD drivers/media/pci/pt3/built-in.o CC fs/pnode.o CC lib/timerqueue.o CC lib/vsprintf.o CC drivers/base/transport_class.o LD drivers/media/pci/saa7146/built-in.o CC drivers/base/topology.o CC drivers/base/container.o LD drivers/media/pci/smipcie/built-in.o LD drivers/media/usb/b2c2/built-in.o LD drivers/media/pci/ttpci/built-in.o CC drivers/pci/syscall.o CC drivers/base/property.o GEN lib/crc32table.h LD drivers/media/pci/built-in.o CC drivers/pci/of.o CC fs/splice.o LD drivers/media/usb/dvb-usb/built-in.o CC drivers/base/cacheinfo.o CC fs/sync.o CC lib/crc32.o LD drivers/pci/host/built-in.o CC fs/utimes.o CC fs/stack.o CC drivers/base/dma-mapping.o LD drivers/base/power/built-in.o LD drivers/media/usb/dvb-usb-v2/built-in.o CC fs/fs_struct.o CC fs/statfs.o CC fs/fs_pin.o CC fs/nsfs.o CC fs/no-block.o LD drivers/media/usb/s2255/built-in.o LD drivers/media/usb/siano/built-in.o LD fs/devpts/built-in.o LD drivers/media/usb/stkwebcam/built-in.o LD fs/exofs/built-in.o CC fs/binfmt_elf.o LD fs/quota/built-in.o LD drivers/media/usb/ttusb-budget/built-in.o LD drivers/media/usb/ttusb-dec/built-in.o LD drivers/media/usb/zr364xx/built-in.o CC fs/ramfs/file-mmu.o CC fs/ramfs/inode.o LD fs/notify/inotify/built-in.o LD fs/notify/fanotify/built-in.o LD fs/notify/dnotify/built-in.o LD drivers/media/usb/built-in.o LD fs/notify/built-in.o LD drivers/media/built-in.o LD drivers/of/built-in.o LD mm/built-in.o LD lib/built-in.o LD fs/ramfs/ramfs.o LD fs/ramfs/built-in.o LD drivers/base/built-in.o LD fs/built-in.o LD drivers/pci/built-in.o LD drivers/built-in.o AR lib/lib.a LINK vmlinux LD vmlinux.o MODPOST vmlinux.o GEN .version CHK include/generated/compile.h UPD include/generated/compile.h CC init/version.o LD init/built-in.o LD vmlinux SYSMAP System.map /opt/cross/kisskb/gcc-5.3.0-nolibc/powerpc64-linux/bin/powerpc64-linux-strip -s -R .comment vmlinux -o arch/powerpc/boot/vmlinux.strip make[1]: Leaving directory '/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc-5.3' Completed OK # rm -rf /home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc-5.3 # Build took: 0:00:19.667831