# git rev-parse -q --verify 0a72e672e338544e36285885ac4d846606a606e4^{commit} 0a72e672e338544e36285885ac4d846606a606e4 already have revision, skipping fetch # git checkout -q -f -B kisskb 0a72e672e338544e36285885ac4d846606a606e4 # git clean -qxdf # git log -1 commit 0a72e672e338544e36285885ac4d846606a606e4 Author: Michael Neuling Date: Fri Dec 11 09:34:42 2015 +1100 powerpc: Copy only required pieces of the mm_context_t to the paca Currently we copy the whole mm_context_t to the paca but only access a few bits of it. This is wasteful of space paca and also takes quite some time in the hot path of context switching. This patch pulls in only the required bits from the mm_context_t to the paca and on context switch, copies only those. Benchmarking this (On top of Anton's recent MSR context switching changes [1]) using processes and yield shows an improvement of almost 3% on POWER8: http://ozlabs.org/~anton/junkcode/context_switch2.c ./context_switch2 --test=yield --process 0 0 1. https://lists.ozlabs.org/pipermail/linuxppc-dev/2015-October/135700.html Signed-off-by: Michael Neuling Signed-off-by: Michael Ellerman # < /opt/cross/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-gcc --version # < git log --format=%s --max-count=1 0a72e672e338544e36285885ac4d846606a606e4 # < make -j 48 ARCH=powerpc O=/home/kisskb/slave/build/mpe_powerpc-allnoconfig_powerpc CROSS_COMPILE=/opt/cross/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- allnoconfig # make -j 48 ARCH=powerpc O=/home/kisskb/slave/build/mpe_powerpc-allnoconfig_powerpc CROSS_COMPILE=/opt/cross/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux- make[1]: Entering directory '/home/kisskb/slave/build/mpe_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/irq_work.h WRAP arch/powerpc/include/generated/asm/rwsem.h WRAP arch/powerpc/include/generated/asm/preempt.h WRAP arch/powerpc/include/generated/asm/mcs_spinlock.h 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/vtime.h WRAP arch/powerpc/include/generated/asm/local64.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/mod/mk_elfconfig HOSTCC scripts/dtc/dtc.o CC scripts/mod/empty.o CC scripts/mod/devicetable-offsets.s HOSTCC scripts/dtc/fstree.o HOSTCC scripts/dtc/flattree.o HOSTCC scripts/dtc/data.o HOSTCC scripts/dtc/livetree.o SHIPPED scripts/dtc/dtc-parser.tab.c SHIPPED scripts/dtc/dtc-lexer.lex.c HOSTCC scripts/dtc/checks.o HOSTCC scripts/dtc/treesource.o HOSTCC scripts/dtc/srcpos.o HOSTCC scripts/dtc/util.o SHIPPED scripts/dtc/dtc-parser.tab.h HOSTCC scripts/dtc/dtc-parser.tab.o HOSTCC scripts/dtc/dtc-lexer.lex.o MKELF scripts/mod/elfconfig.h HOSTCC scripts/mod/modpost.o HOSTCC scripts/mod/sumversion.o GEN scripts/mod/devicetable-offsets.h HOSTCC scripts/mod/file2alias.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 LD usr/built-in.o CC init/init_task.o CC init/noinitramfs.o CC init/do_mounts.o CHK include/generated/compile.h CC init/main.o UPD include/generated/compile.h CC arch/powerpc/mm/pgtable.o CC arch/powerpc/mm/mem.o CC arch/powerpc/mm/fault.o CC arch/powerpc/mm/pgtable_32.o CC arch/powerpc/mm/tlb_hash32.o CC arch/powerpc/mm/mmap.o AS arch/powerpc/mm/hash_low_32.o CC arch/powerpc/mm/init_32.o CC arch/powerpc/mm/ppc_mmu_32.o CC init/version.o CC arch/powerpc/mm/hugetlbpage.o CC arch/powerpc/mm/mmu_context_hash32.o LD arch/powerpc/sysdev/built-in.o LD arch/powerpc/platforms/built-in.o AS arch/powerpc/lib/string.o CC arch/powerpc/lib/alloc.o CC arch/powerpc/lib/ppc_ksyms.o AS arch/powerpc/lib/crtsavres.o CC arch/powerpc/lib/code-patching.o CC arch/powerpc/lib/feature-fixups.o AS arch/powerpc/lib/copy_32.o AS arch/powerpc/lib/div64.o AS arch/powerpc/lib/checksum_32.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/cputable.o CC arch/powerpc/kernel/irq.o CC arch/powerpc/kernel/align.o CC arch/powerpc/kernel/syscalls.o CC arch/powerpc/kernel/signal_32.o CC arch/powerpc/kernel/pmc.o CC arch/powerpc/kernel/idle.o CPP arch/powerpc/kernel/systbl_chk.i CC arch/powerpc/kernel/vdso.o CC arch/powerpc/kernel/process.o CC arch/powerpc/kernel/cacheinfo.o CC arch/powerpc/kernel/sysfs.o CC arch/powerpc/kernel/time.o CC arch/powerpc/kernel/prom.o CC arch/powerpc/kernel/signal.o AS arch/powerpc/kernel/misc_32.o CC arch/powerpc/kernel/io.o CC arch/powerpc/kernel/dma.o CC arch/powerpc/kernel/setup-common.o CC arch/powerpc/kernel/udbg.o CC arch/powerpc/kernel/of_platform.o CC arch/powerpc/kernel/traps.o CC arch/powerpc/kernel/prom_parse.o AS arch/powerpc/kernel/cpu_setup_6xx.o AS arch/powerpc/kernel/l2cr_6xx.o AS arch/powerpc/kernel/idle_6xx.o AS arch/powerpc/kernel/misc.o LD arch/powerpc/net/built-in.o AS arch/powerpc/kernel/entry_32.o CC arch/powerpc/kernel/setup_32.o CC arch/powerpc/kernel/pci_32.o CC arch/powerpc/kernel/pci_of_scan.o CC arch/powerpc/kernel/pci-common.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/sigtramp.o CALL /home/kisskb/slave/src/arch/powerpc/kernel/systbl_chk.sh VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o VDSO32A arch/powerpc/kernel/vdso32/datapage.o AS arch/powerpc/kernel/systbl.o VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o LD certs/built-in.o VDSO32A arch/powerpc/kernel/vdso32/note.o LD arch/powerpc/lib/built-in.o VDSO32L arch/powerpc/kernel/vdso32/vdso32.so.dbg LD ipc/built-in.o OBJCOPY arch/powerpc/kernel/vdso32/vdso32.so AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o CC security/commoncap.o CC security/min_addr.o LD crypto/built-in.o LD arch/powerpc/mm/built-in.o LD arch/powerpc/kernel/vdso32/built-in.o LD init/mounts.o LD block/built-in.o CC kernel/fork.o CC kernel/exit.o CC mm/oom_kill.o CC mm/mempool.o CC kernel/softirq.o CC kernel/cpu.o CC kernel/panic.o CC kernel/exec_domain.o CC kernel/capability.o CC kernel/resource.o CC mm/filemap.o CC kernel/user.o CC kernel/signal.o CC mm/page-writeback.o CC kernel/ptrace.o CC kernel/sys.o CC mm/swap.o CC kernel/sysctl_binary.o CC mm/readahead.o CC mm/page_alloc.o CC mm/maccess.o CC kernel/sysctl.o CC mm/truncate.o LD sound/built-in.o CC kernel/kmod.o LD init/built-in.o CC mm/vmscan.o CC mm/shmem.o CC fs/open.o CC fs/read_write.o CC mm/util.o CC fs/file_table.o LD firmware/built-in.o CC kernel/workqueue.o CC kernel/pid.o CC kernel/task_work.o CC mm/mmzone.o LD net/built-in.o CC mm/vmstat.o CC mm/backing-dev.o CC mm/mm_init.o CC kernel/extable.o CC mm/mmu_context.o CC kernel/params.o CC mm/percpu.o LD virt/lib/built-in.o CC kernel/kthread.o LD virt/built-in.o CC mm/slab_common.o CC mm/compaction.o CC fs/super.o CC kernel/sys_ni.o CC kernel/nsproxy.o CC kernel/notifier.o CC mm/vmacache.o CC kernel/ksysfs.o CC kernel/cred.o CC kernel/reboot.o CC mm/interval_tree.o CC mm/list_lru.o CC mm/workingset.o CC lib/lockref.o CC mm/debug.o LD drivers/amba/built-in.o CC fs/char_dev.o CC kernel/async.o CC kernel/range.o LD security/built-in.o CC mm/gup.o CC kernel/smpboot.o CC mm/highmem.o LD drivers/auxdisplay/built-in.o CC mm/memory.o CC lib/bcd.o LD drivers/block/built-in.o LD kernel/livepatch/built-in.o CC mm/mincore.o CC mm/mlock.o CC lib/div64.o LD drivers/bus/built-in.o CC kernel/printk/printk.o CC mm/mmap.o CC kernel/power/qos.o CC kernel/locking/mutex.o CC kernel/irq/irqdesc.o CC mm/mremap.o CC mm/mprotect.o CC kernel/rcu/update.o LD arch/powerpc/kernel/built-in.o LD drivers/cdrom/built-in.o CC drivers/base/component.o CC mm/msync.o CC mm/vmalloc.o CC kernel/dma.o CC mm/rmap.o CC mm/pagewalk.o CC mm/pgtable-generic.o CC drivers/char/mem.o CC kernel/up.o CC kernel/sched/core.o CC kernel/elfcore.o CC kernel/sched/loadavg.o CC kernel/memremap.o CC mm/init-mm.o CC lib/sort.o CC kernel/sched/clock.o CC kernel/time/time.o CC mm/nobootmem.o CC kernel/time/timer.o CC kernel/time/hrtimer.o CC fs/stat.o CC mm/memblock.o CC fs/exec.o CC lib/parser.o CC kernel/rcu/sync.o CC kernel/rcu/tiny.o CC mm/dmapool.o CC mm/slub.o CC fs/pipe.o CC drivers/char/misc.o CC drivers/char/random.o CC fs/namei.o CC fs/fcntl.o LD drivers/char/agp/built-in.o CC kernel/sched/cputime.o CC fs/ioctl.o CC kernel/sched/idle_task.o CC kernel/irq/handle.o CC kernel/sched/fair.o CC kernel/irq/manage.o CC kernel/time/itimer.o CC kernel/locking/semaphore.o CC kernel/sched/rt.o CC kernel/sched/deadline.o CC drivers/base/core.o CC kernel/sched/stop_task.o CC drivers/base/bus.o LD kernel/power/built-in.o CC drivers/base/dd.o CC kernel/sched/wait.o CC drivers/base/syscore.o LD kernel/printk/built-in.o CC kernel/sched/completion.o CC lib/halfmd4.o CC drivers/base/driver.o CC drivers/base/class.o CC drivers/base/platform.o CC drivers/base/cpu.o CC kernel/sched/idle.o CC drivers/base/firmware.o CC drivers/base/init.o CC lib/debug_locks.o CC kernel/irq/spurious.o LD kernel/rcu/built-in.o CC lib/random32.o CC kernel/time/posix-timers.o CC lib/bust_spinlocks.o CC kernel/time/posix-cpu-timers.o CC lib/kasprintf.o CC lib/bitmap.o CC kernel/irq/resend.o CC lib/scatterlist.o CC drivers/base/map.o CC drivers/base/devres.o CC fs/readdir.o CC kernel/time/timekeeping.o CC drivers/base/attribute_container.o CC drivers/base/transport_class.o CC kernel/time/ntp.o CC drivers/base/topology.o CC kernel/time/jiffies.o CC kernel/time/clocksource.o CC kernel/locking/rwsem.o CC kernel/locking/percpu-rwsem.o CC kernel/time/timer_list.o CC kernel/irq/chip.o CC kernel/time/timeconv.o CC kernel/locking/rwsem-xadd.o CC kernel/irq/devres.o CC kernel/irq/dummychip.o CC drivers/base/container.o CC kernel/irq/irqdomain.o CC drivers/base/property.o CC drivers/base/cacheinfo.o CC lib/gcd.o CC lib/lcm.o CC fs/select.o CC fs/dcache.o CC lib/list_sort.o CC lib/uuid.o CC kernel/time/timecounter.o LD drivers/base/power/built-in.o CC drivers/base/dma-mapping.o CC kernel/time/posix-clock.o CC lib/flex_array.o CC fs/attr.o CC fs/inode.o CC lib/iov_iter.o CC kernel/time/alarmtimer.o CC fs/bad_inode.o CC fs/file.o CC kernel/time/clockevents.o CC kernel/time/tick-common.o CC lib/clz_ctz.o CC lib/bsearch.o CC lib/find_bit.o CC fs/filesystems.o CC lib/llist.o LD drivers/char/built-in.o CC fs/namespace.o CC lib/memweight.o CC fs/seq_file.o CC lib/kfifo.o CC lib/rhashtable.o CC lib/percpu_ida.o CC lib/percpu-refcount.o CC lib/reciprocal_div.o CC fs/xattr.o CC lib/once.o LD kernel/locking/built-in.o LD drivers/clocksource/built-in.o CC fs/libfs.o LD drivers/clk/bcm/built-in.o CC fs/pnode.o CC fs/fs-writeback.o CC lib/string_helpers.o CC fs/sync.o CC fs/splice.o CC lib/hexdump.o LD drivers/clk/built-in.o CC lib/kstrtox.o LD drivers/firewire/built-in.o CC fs/utimes.o CC lib/pci_iomap.o CC fs/fs_struct.o CC fs/stack.o CC lib/iomap_copy.o CC fs/statfs.o LD mm/built-in.o CC lib/devres.o LD drivers/gpio/built-in.o CC lib/bitrev.o CC lib/hweight.o HOSTCC lib/gen_crc32table CC lib/syscall.o LD kernel/sched/built-in.o LD drivers/firmware/broadcom/built-in.o LD drivers/hwtracing/intel_th/built-in.o LD kernel/irq/built-in.o LD drivers/gpu/vga/built-in.o CC fs/fs_pin.o CC lib/atomic64.o CC lib/strncpy_from_user.o CC lib/strnlen_user.o LD drivers/firmware/built-in.o LD drivers/hsi/clients/built-in.o LD drivers/idle/built-in.o CC lib/argv_split.o CC lib/cmdline.o CC drivers/irqchip/irqchip.o CC lib/ctype.o CC lib/dec_and_lock.o CC lib/decompress.o LD drivers/hsi/controllers/built-in.o LD drivers/gpu/drm/bridge/built-in.o LD drivers/lguest/built-in.o LD drivers/gpu/drm/i2c/built-in.o LD drivers/leds/built-in.o CC lib/dump_stack.o CC fs/no-block.o LD drivers/hsi/built-in.o CC lib/earlycpio.o LD drivers/i2c/algos/built-in.o CC fs/nsfs.o CC lib/extable.o LD drivers/gpu/drm/panel/built-in.o LD drivers/gpu/drm/tilcdc/built-in.o CC lib/fdt.o CC lib/fdt_ro.o CC lib/fdt_empty_tree.o LD fs/devpts/built-in.o LD drivers/base/built-in.o CC lib/fdt_strerror.o LD fs/exofs/built-in.o CC lib/fdt_rw.o CC lib/fdt_sw.o LD fs/quota/built-in.o CC lib/fdt_wip.o LD drivers/macintosh/built-in.o CC lib/flex_proportions.o LD drivers/gpu/drm/built-in.o LD drivers/i2c/busses/built-in.o CC lib/idr.o LD drivers/i2c/muxes/built-in.o CC lib/int_sqrt.o CC lib/ioremap.o CC fs/binfmt_elf.o LD drivers/mfd/built-in.o CC lib/irq_regs.o CC lib/is_single_threaded.o CC lib/klist.o LD fs/notify/dnotify/built-in.o CC fs/ramfs/inode.o CC lib/kobject.o LD drivers/i2c/built-in.o CC fs/ramfs/file-mmu.o CC lib/nmi_backtrace.o CC lib/kobject_uevent.o CC lib/md5.o LD drivers/net/built-in.o LD drivers/mmc/built-in.o CC lib/plist.o CC lib/radix-tree.o CC lib/proportions.o LD drivers/nfc/built-in.o CC lib/ratelimit.o LD fs/notify/fanotify/built-in.o LD drivers/gpu/built-in.o LD drivers/irqchip/built-in.o CC lib/sha1.o CC lib/rbtree.o CC lib/seq_buf.o LD fs/notify/inotify/built-in.o LD drivers/platform/built-in.o CC lib/show_mem.o CC lib/vsprintf.o LD drivers/pwm/built-in.o GEN lib/crc32table.h LD kernel/time/built-in.o CC lib/string.o CC lib/timerqueue.o LD drivers/misc/cb710/built-in.o LD drivers/soc/built-in.o LD fs/notify/built-in.o CC lib/crc32.o LD kernel/built-in.o LD drivers/misc/eeprom/built-in.o LD drivers/nvme/host/built-in.o CC drivers/of/base.o LD drivers/usb/host/built-in.o CC drivers/of/device.o CC drivers/of/platform.o CC drivers/of/fdt.o LD drivers/misc/lis3lv02d/built-in.o CC drivers/of/fdt_address.o CC drivers/of/irq.o LD drivers/misc/ti-st/built-in.o LD drivers/nvme/built-in.o CC drivers/of/address.o CC drivers/of/of_reserved_mem.o CC drivers/of/of_pci.o LD drivers/video/backlight/built-in.o LD drivers/usb/built-in.o CC drivers/of/of_pci_irq.o LD drivers/media/firewire/built-in.o LD drivers/tty/ipwireless/built-in.o LD drivers/tty/serial/built-in.o LD drivers/tty/vt/built-in.o LD drivers/misc/mic/bus/built-in.o LD drivers/tty/built-in.o LD drivers/misc/mic/built-in.o LD fs/ramfs/ramfs.o LD fs/ramfs/built-in.o LD drivers/media/tuners/built-in.o CC drivers/video/fbdev/core/fb_notify.o LD drivers/misc/built-in.o LD drivers/media/mmc/siano/built-in.o LD drivers/video/fbdev/omap2/dss/built-in.o LD drivers/video/fbdev/omap2/displays-new/built-in.o LD drivers/media/common/siano/built-in.o LD drivers/media/i2c/soc_camera/built-in.o LD drivers/media/platform/omap/built-in.o LD drivers/media/common/saa7146/built-in.o LD drivers/media/rc/keymaps/built-in.o LD drivers/media/common/b2c2/built-in.o LD drivers/media/platform/built-in.o LD drivers/video/fbdev/omap2/built-in.o LD drivers/media/i2c/built-in.o LD drivers/media/rc/built-in.o LD drivers/media/common/built-in.o CC drivers/pci/access.o LD drivers/media/mmc/built-in.o CC drivers/pci/bus.o CC drivers/pci/probe.o CC drivers/pci/remove.o CC drivers/pci/pci.o CC drivers/pci/host-bridge.o CC drivers/pci/pci-sysfs.o CC drivers/pci/rom.o CC drivers/pci/setup-res.o CC drivers/pci/vpd.o CC drivers/pci/pci-driver.o CC drivers/pci/search.o CC drivers/pci/of.o CC drivers/pci/syscall.o CC drivers/pci/vc.o CC drivers/pci/setup-bus.o CC drivers/pci/irq.o LD drivers/pci/host/built-in.o LD drivers/media/pci/dm1105/built-in.o LD drivers/media/pci/ddbridge/built-in.o LD drivers/media/pci/pluto2/built-in.o LD drivers/media/pci/ngene/built-in.o LD drivers/media/pci/mantis/built-in.o LD drivers/media/pci/netup_unidvb/built-in.o LD drivers/media/pci/b2c2/built-in.o LD drivers/media/pci/pt3/built-in.o LD drivers/media/pci/saa7146/built-in.o LD drivers/media/pci/pt1/built-in.o LD drivers/media/pci/ttpci/built-in.o LD drivers/media/pci/smipcie/built-in.o LD drivers/media/usb/b2c2/built-in.o LD drivers/media/usb/dvb-usb/built-in.o LD drivers/media/usb/siano/built-in.o LD drivers/media/usb/dvb-usb-v2/built-in.o LD drivers/media/usb/ttusb-budget/built-in.o LD drivers/media/pci/built-in.o LD drivers/media/usb/stkwebcam/built-in.o LD drivers/media/usb/ttusb-dec/built-in.o LD drivers/media/usb/s2255/built-in.o LD drivers/media/usb/zr364xx/built-in.o LD drivers/video/fbdev/core/built-in.o LD drivers/video/fbdev/built-in.o LD drivers/media/usb/built-in.o LD drivers/video/built-in.o LD lib/built-in.o LD fs/built-in.o LD drivers/media/built-in.o LD drivers/of/built-in.o AR lib/lib.a LD drivers/pci/built-in.o LD drivers/built-in.o 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/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/mpe_powerpc-allnoconfig_powerpc' Completed OK # rm -rf /home/kisskb/slave/build/mpe_powerpc-allnoconfig_powerpc # Build took: 0:00:25.638668