# 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-4.6.3-nolibc/powerpc-linux/bin/powerpc-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 CROSS_COMPILE=/opt/cross/kisskb/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- allnoconfig # make -j 48 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_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_powerpc-allnoconfig_powerpc' GEN ./Makefile scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config/kernel.release GEN ./Makefile UPD include/config/kernel.release 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 CHK include/generated/utsrelease.h UPD include/generated/utsrelease.h Using /home/kisskb/slave/src as source for kernel HOSTCC scripts/dtc/dtc.o HOSTCC scripts/dtc/flattree.o CC scripts/mod/empty.o HOSTCC scripts/dtc/fstree.o HOSTCC scripts/mod/mk_elfconfig HOSTCC scripts/dtc/data.o HOSTCC scripts/dtc/livetree.o HOSTCC scripts/dtc/treesource.o CC scripts/mod/devicetable-offsets.s 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.c SHIPPED scripts/dtc/dtc-parser.tab.h HOSTCC scripts/dtc/dtc-parser.tab.o HOSTCC scripts/dtc/dtc-lexer.lex.o GEN scripts/mod/devicetable-offsets.h MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/file2alias.o HOSTCC scripts/mod/sumversion.o HOSTLD scripts/dtc/dtc HOSTLD scripts/mod/modpost 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 CHK include/generated/compile.h LD usr/built-in.o CC init/do_mounts.o CC init/noinitramfs.o CC init/init_task.o UPD include/generated/compile.h CC arch/powerpc/mm/fault.o CC arch/powerpc/mm/mem.o CC init/version.o CC arch/powerpc/mm/pgtable.o CC arch/powerpc/mm/mmap.o CC arch/powerpc/mm/pgtable_32.o AS arch/powerpc/mm/hash_low_32.o AS arch/powerpc/lib/string.o CC arch/powerpc/mm/init_32.o AS arch/powerpc/lib/crtsavres.o CC arch/powerpc/lib/alloc.o CC arch/powerpc/lib/code-patching.o CC arch/powerpc/mm/tlb_hash32.o CC arch/powerpc/mm/hugetlbpage.o CC arch/powerpc/mm/ppc_mmu_32.o CC arch/powerpc/mm/mmu_context_hash32.o CC arch/powerpc/lib/feature-fixups.o AS arch/powerpc/lib/div64.o AS arch/powerpc/lib/copy_32.o CC arch/powerpc/lib/checksum_wrappers.o LD arch/powerpc/platforms/built-in.o CC arch/powerpc/lib/ppc_ksyms.o AS arch/powerpc/lib/checksum_32.o LD arch/powerpc/sysdev/built-in.o LD arch/powerpc/math-emu/built-in.o CC arch/powerpc/kernel/cputable.o CC arch/powerpc/kernel/irq.o CC arch/powerpc/kernel/syscalls.o CC arch/powerpc/kernel/ptrace.o LD arch/powerpc/crypto/built-in.o CC arch/powerpc/kernel/prom.o CC arch/powerpc/kernel/signal_32.o CPP arch/powerpc/kernel/systbl_chk.i CC arch/powerpc/kernel/align.o CC arch/powerpc/kernel/pmc.o CC arch/powerpc/kernel/idle.o CC arch/powerpc/kernel/process.o CC arch/powerpc/kernel/vdso.o CC arch/powerpc/kernel/cacheinfo.o CC arch/powerpc/kernel/prom_parse.o AS arch/powerpc/kernel/misc_32.o CC arch/powerpc/kernel/signal.o CC arch/powerpc/kernel/sysfs.o CC arch/powerpc/kernel/of_platform.o CC arch/powerpc/kernel/udbg.o CC arch/powerpc/kernel/io.o AS arch/powerpc/kernel/misc.o CC arch/powerpc/kernel/setup-common.o CC arch/powerpc/kernel/dma.o CC arch/powerpc/kernel/traps.o CC arch/powerpc/kernel/time.o AS arch/powerpc/kernel/idle_6xx.o AS arch/powerpc/kernel/l2cr_6xx.o AS arch/powerpc/kernel/cpu_setup_6xx.o LD arch/powerpc/net/built-in.o CC arch/powerpc/kernel/setup_32.o AS arch/powerpc/kernel/entry_32.o LDS arch/powerpc/kernel/vdso32/vdso32.lds VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o CC arch/powerpc/kernel/pci_32.o VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o VDSO32A arch/powerpc/kernel/vdso32/datapage.o CC arch/powerpc/kernel/pci-common.o CC arch/powerpc/kernel/pci_of_scan.o CC arch/powerpc/kernel/iomap.o VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o AS arch/powerpc/kernel/head_32.o VDSO32A arch/powerpc/kernel/vdso32/note.o LDS arch/powerpc/kernel/vmlinux.lds LD arch/powerpc/lib/built-in.o AS arch/powerpc/kernel/fpu.o CALL /home/kisskb/slave/src/arch/powerpc/kernel/systbl_chk.sh LD certs/built-in.o AS arch/powerpc/kernel/systbl.o CC kernel/sysctl_binary.o CC kernel/sysctl.o CC kernel/cpu.o CC kernel/exit.o CC kernel/softirq.o CC kernel/fork.o VDSO32L arch/powerpc/kernel/vdso32/vdso32.so.dbg CC kernel/ptrace.o CC kernel/capability.o CC kernel/panic.o CC kernel/exec_domain.o CC kernel/resource.o CC kernel/signal.o CC kernel/user.o CC kernel/sys.o CC kernel/kmod.o OBJCOPY arch/powerpc/kernel/vdso32/vdso32.so CC kernel/workqueue.o CC kernel/pid.o CC kernel/task_work.o AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o CC kernel/extable.o CC kernel/params.o CC kernel/kthread.o CC kernel/sys_ni.o CC kernel/nsproxy.o LD arch/powerpc/kernel/vdso32/built-in.o CC kernel/notifier.o CC kernel/ksysfs.o CC kernel/cred.o CC kernel/reboot.o LD arch/powerpc/mm/built-in.o CC kernel/range.o CC kernel/async.o CC kernel/smpboot.o LD ipc/built-in.o CC fs/open.o LD kernel/livepatch/built-in.o CC fs/file_table.o CC fs/read_write.o CC fs/super.o CC fs/char_dev.o CC fs/stat.o CC kernel/power/qos.o CC kernel/locking/mutex.o CC security/commoncap.o CC kernel/printk/printk.o CC kernel/irq/irqdesc.o LD crypto/built-in.o CC kernel/locking/semaphore.o CC kernel/dma.o CC kernel/rcu/update.o CC mm/filemap.o LD init/mounts.o LD init/built-in.o CC kernel/sched/core.o CC kernel/up.o CC kernel/elfcore.o CC kernel/sched/loadavg.o CC kernel/memremap.o LD block/built-in.o CC mm/mempool.o CC fs/exec.o CC kernel/time/time.o CC kernel/time/timer.o CC security/min_addr.o CC kernel/time/hrtimer.o CC kernel/irq/handle.o CC kernel/locking/rwsem.o CC kernel/locking/percpu-rwsem.o CC kernel/irq/manage.o CC kernel/locking/rwsem-xadd.o CC kernel/irq/spurious.o CC kernel/irq/resend.o /home/kisskb/slave/src/kernel/printk/printk.c: In function 'devkmsg_sysctl_set_loglvl': /home/kisskb/slave/src/kernel/printk/printk.c:183:16: warning: 'old' may be used uninitialized in this function [-Wuninitialized] CC kernel/sched/clock.o CC kernel/irq/chip.o CC kernel/irq/dummychip.o CC kernel/irq/devres.o CC kernel/sched/cputime.o LD sound/built-in.o CC kernel/rcu/sync.o LD arch/powerpc/kernel/built-in.o CC kernel/rcu/tiny.o CC fs/pipe.o CC fs/namei.o CC kernel/irq/irqdomain.o CC fs/fcntl.o LD firmware/built-in.o CC kernel/sched/idle_task.o LD kernel/power/built-in.o CC kernel/sched/fair.o CC kernel/time/posix-timers.o CC kernel/time/itimer.o CC kernel/sched/rt.o CC kernel/time/posix-cpu-timers.o LD net/built-in.o CC fs/ioctl.o CC mm/oom_kill.o CC kernel/sched/deadline.o CC fs/select.o CC fs/readdir.o LD kernel/printk/built-in.o LD kernel/locking/built-in.o CC fs/dcache.o CC kernel/sched/stop_task.o CC kernel/sched/wait.o CC mm/maccess.o CC fs/inode.o CC mm/page_alloc.o CC fs/attr.o CC kernel/sched/swait.o CC kernel/sched/completion.o LD security/built-in.o CC fs/bad_inode.o LD virt/lib/built-in.o CC fs/file.o CC fs/filesystems.o CC kernel/time/timekeeping.o LD virt/built-in.o CC kernel/time/ntp.o CC mm/page-writeback.o LD kernel/rcu/built-in.o CC kernel/time/clocksource.o CC mm/readahead.o CC kernel/time/jiffies.o CC fs/namespace.o CC kernel/sched/idle.o CC fs/seq_file.o CC mm/swap.o CC kernel/time/timer_list.o CC fs/xattr.o CC fs/libfs.o CC fs/fs-writeback.o CC lib/lockref.o LD drivers/amba/built-in.o CC kernel/time/timeconv.o LD drivers/auxdisplay/built-in.o CC kernel/time/timecounter.o CC kernel/time/posix-clock.o LD drivers/block/built-in.o CC kernel/time/alarmtimer.o LD drivers/bus/built-in.o LD drivers/cdrom/built-in.o CC kernel/time/clockevents.o CC kernel/time/tick-common.o CC lib/bcd.o LD drivers/firewire/built-in.o LD drivers/clocksource/built-in.o CC drivers/char/mem.o CC fs/pnode.o LD kernel/irq/built-in.o CC fs/splice.o CC fs/sync.o LD drivers/clk/bcm/built-in.o CC drivers/base/component.o CC fs/utimes.o CC fs/stack.o CC fs/fs_struct.o CC drivers/base/core.o CC fs/statfs.o LD drivers/hwtracing/intel_th/built-in.o CC lib/div64.o LD drivers/clk/mvebu/built-in.o LD drivers/clk/ti/built-in.o CC drivers/base/bus.o CC lib/sort.o LD drivers/gpu/vga/built-in.o LD drivers/clk/built-in.o LD drivers/firmware/broadcom/built-in.o CC fs/fs_pin.o LD drivers/idle/built-in.o CC drivers/base/dd.o LD drivers/firmware/built-in.o LD drivers/i2c/algos/built-in.o LD drivers/i2c/busses/built-in.o LD drivers/i2c/muxes/built-in.o LD drivers/lguest/built-in.o CC drivers/irqchip/irqchip.o CC lib/parser.o LD drivers/macintosh/built-in.o CC fs/nsfs.o CC mm/truncate.o LD drivers/gpu/drm/bridge/built-in.o CC fs/no-block.o LD drivers/i2c/built-in.o LD drivers/gpu/drm/hisilicon/built-in.o LD drivers/gpu/drm/i2c/built-in.o CC mm/vmscan.o LD fs/devpts/built-in.o LD drivers/mfd/built-in.o LD fs/exofs/built-in.o LD kernel/sched/built-in.o LD fs/notify/dnotify/built-in.o LD fs/notify/fanotify/built-in.o LD fs/notify/inotify/built-in.o LD drivers/gpu/drm/panel/built-in.o LD drivers/misc/cb710/built-in.o LD fs/notify/built-in.o LD fs/quota/built-in.o CC fs/ramfs/inode.o CC fs/binfmt_elf.o LD drivers/gpu/drm/tilcdc/built-in.o LD drivers/misc/eeprom/built-in.o LD drivers/mmc/built-in.o LD drivers/gpu/drm/omapdrm/displays/built-in.o LD drivers/net/built-in.o CC drivers/base/syscore.o LD drivers/misc/lis3lv02d/built-in.o LD drivers/irqchip/built-in.o LD drivers/gpu/drm/omapdrm/dss/built-in.o CC drivers/base/driver.o LD drivers/misc/ti-st/built-in.o CC mm/shmem.o LD drivers/nfc/built-in.o CC lib/halfmd4.o CC fs/ramfs/file-mmu.o CC lib/debug_locks.o CC lib/random32.o LD drivers/gpu/drm/omapdrm/built-in.o LD drivers/gpu/drm/built-in.o LD drivers/misc/mic/bus/built-in.o CC lib/bust_spinlocks.o LD drivers/nvme/target/built-in.o CC mm/util.o LD drivers/nvme/host/built-in.o LD drivers/gpu/built-in.o LD drivers/platform/built-in.o CC drivers/char/random.o CC drivers/char/misc.o LD drivers/power/built-in.o LD drivers/misc/mic/built-in.o LD drivers/nvme/built-in.o LD drivers/pwm/built-in.o CC mm/mmzone.o LD drivers/char/agp/built-in.o LD drivers/misc/built-in.o CC drivers/of/base.o CC lib/kasprintf.o LD drivers/media/firewire/built-in.o CC lib/bitmap.o CC drivers/base/class.o CC mm/vmstat.o CC drivers/base/platform.o CC mm/backing-dev.o CC lib/scatterlist.o CC mm/mm_init.o CC drivers/pci/access.o CC mm/mmu_context.o CC drivers/pci/bus.o LD drivers/usb/host/built-in.o CC mm/percpu.o LD drivers/media/common/b2c2/built-in.o CC drivers/base/cpu.o LD drivers/video/backlight/built-in.o LD drivers/media/common/saa7146/built-in.o LD drivers/soc/bcm/built-in.o CC lib/gcd.o LD drivers/media/common/siano/built-in.o LD drivers/usb/built-in.o LD drivers/media/i2c/soc_camera/built-in.o LD drivers/tty/ipwireless/built-in.o LD drivers/media/common/v4l2-tpg/built-in.o CC lib/lcm.o LD drivers/video/fbdev/core/built-in.o CC mm/slab_common.o CC drivers/base/firmware.o LD drivers/video/fbdev/omap2/omapfb/displays/built-in.o LD drivers/media/common/built-in.o LD drivers/video/fbdev/omap2/omapfb/dss/built-in.o LD drivers/tty/serial/built-in.o LD drivers/video/fbdev/omap2/omapfb/built-in.o LD drivers/media/i2c/built-in.o LD drivers/soc/fsl/built-in.o LD drivers/video/fbdev/omap2/built-in.o LD drivers/video/fbdev/built-in.o LD drivers/tty/vt/built-in.o CC mm/vmacache.o CC lib/list_sort.o CC mm/compaction.o LD drivers/tty/built-in.o CC lib/uuid.o CC lib/flex_array.o LD drivers/soc/built-in.o LD drivers/video/built-in.o CC mm/list_lru.o CC mm/interval_tree.o CC drivers/base/init.o CC lib/iov_iter.o LD fs/ramfs/ramfs.o CC lib/clz_ctz.o CC mm/workingset.o CC lib/bsearch.o LD drivers/media/mmc/siano/built-in.o LD fs/ramfs/built-in.o LD drivers/media/mmc/built-in.o CC lib/llist.o CC drivers/base/map.o CC lib/find_bit.o CC mm/debug.o CC lib/memweight.o CC lib/kfifo.o CC lib/percpu-refcount.o CC drivers/base/attribute_container.o CC mm/gup.o CC mm/highmem.o CC mm/mincore.o CC mm/memory.o CC drivers/base/devres.o CC drivers/base/transport_class.o LD drivers/media/tuners/built-in.o CC lib/percpu_ida.o CC drivers/base/topology.o LD drivers/media/platform/omap/built-in.o LD drivers/media/platform/built-in.o CC mm/mlock.o CC mm/mmap.o CC drivers/base/container.o LD drivers/media/rc/keymaps/built-in.o CC lib/rhashtable.o CC mm/mprotect.o CC lib/reciprocal_div.o LD drivers/media/rc/built-in.o CC mm/mremap.o LD drivers/media/pci/b2c2/built-in.o CC mm/msync.o CC drivers/base/property.o LD drivers/media/pci/ddbridge/built-in.o LD drivers/media/pci/dm1105/built-in.o CC mm/rmap.o CC lib/once.o CC mm/vmalloc.o CC mm/pagewalk.o CC drivers/base/cacheinfo.o LD drivers/media/pci/mantis/built-in.o CC lib/string_helpers.o LD drivers/media/usb/b2c2/built-in.o LD drivers/media/pci/netup_unidvb/built-in.o CC lib/hexdump.o CC drivers/pci/probe.o CC mm/pgtable-generic.o LD drivers/media/pci/ngene/built-in.o CC mm/init-mm.o LD drivers/media/pci/pluto2/built-in.o CC lib/kstrtox.o LD drivers/media/usb/dvb-usb/built-in.o CC drivers/base/dma-mapping.o LD kernel/time/built-in.o CC lib/pci_iomap.o LD drivers/base/power/built-in.o CC mm/nobootmem.o LD kernel/built-in.o LD drivers/media/usb/dvb-usb-v2/built-in.o CC mm/memblock.o LD drivers/media/pci/pt3/built-in.o LD drivers/media/pci/pt1/built-in.o CC mm/slub.o CC mm/dmapool.o CC lib/iomap_copy.o LD drivers/media/usb/s2255/built-in.o LD drivers/media/pci/saa7146/built-in.o LD drivers/media/pci/smipcie/built-in.o LD drivers/media/pci/ttpci/built-in.o /home/kisskb/slave/src/mm/page_alloc.c: In function 'free_area_init_node': /home/kisskb/slave/src/mm/page_alloc.c:5630:17: warning: 'zone_start_pfn' may be used uninitialized in this function [-Wuninitialized] LD drivers/media/usb/siano/built-in.o CC drivers/pci/host-bridge.o CC lib/devres.o CC lib/hweight.o CC lib/bitrev.o HOSTCC lib/gen_crc32table CC lib/syscall.o LD fs/built-in.o LD drivers/media/usb/stkwebcam/built-in.o LD drivers/media/pci/built-in.o LD drivers/media/usb/ttusb-budget/built-in.o LD drivers/media/usb/zr364xx/built-in.o CC drivers/pci/remove.o CC drivers/pci/pci-driver.o CC drivers/pci/pci.o CC drivers/of/device.o LD drivers/media/usb/ttusb-dec/built-in.o CC lib/atomic64.o CC drivers/of/platform.o LD drivers/media/usb/built-in.o CC drivers/pci/search.o CC drivers/of/fdt.o CC lib/strncpy_from_user.o CC drivers/of/fdt_address.o CC lib/strnlen_user.o LD drivers/char/built-in.o CC drivers/of/address.o CC drivers/pci/pci-sysfs.o CC lib/argv_split.o CC drivers/of/irq.o CC drivers/of/of_pci.o CC lib/chacha20.o CC drivers/of/of_pci_irq.o CC lib/cmdline.o LD drivers/media/built-in.o CC lib/ctype.o CC drivers/pci/rom.o CC lib/dec_and_lock.o CC drivers/pci/setup-res.o CC lib/decompress.o CC drivers/pci/irq.o CC drivers/pci/vpd.o CC lib/dma-noop.o CC lib/dump_stack.o CC lib/earlycpio.o CC lib/extable.o CC lib/fdt.o CC lib/fdt_empty_tree.o CC drivers/of/of_reserved_mem.o CC lib/fdt_ro.o CC lib/fdt_strerror.o CC lib/fdt_rw.o CC lib/fdt_sw.o CC lib/fdt_wip.o CC lib/idr.o CC lib/flex_proportions.o CC lib/int_sqrt.o CC lib/ioremap.o CC lib/irq_regs.o CC lib/is_single_threaded.o CC lib/klist.o CC drivers/pci/setup-bus.o CC lib/kobject.o CC lib/kobject_uevent.o CC drivers/pci/vc.o CC drivers/pci/syscall.o CC lib/md5.o CC lib/nmi_backtrace.o CC drivers/pci/of.o CC lib/nodemask.o CC lib/plist.o CC lib/radix-tree.o LD drivers/pci/host/built-in.o CC lib/ratelimit.o CC lib/seq_buf.o CC lib/sha1.o CC lib/rbtree.o CC lib/show_mem.o CC lib/string.o CC lib/timerqueue.o CC lib/vsprintf.o GEN lib/crc32table.h CC lib/crc32.o LD drivers/base/built-in.o LD drivers/of/built-in.o LD lib/built-in.o LD mm/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-4.6.3-nolibc/powerpc-linux/bin/powerpc-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' Completed OK # rm -rf /home/kisskb/slave/build/powerpc-next_powerpc-allnoconfig_powerpc # Build took: 0:00:11.860417