# git rev-parse -q --verify 7ccafde7d772c5e015f86e0b7affe7bb6ee5cdbb^{commit} 7ccafde7d772c5e015f86e0b7affe7bb6ee5cdbb already have revision, skipping fetch # git checkout -q -f -B kisskb 7ccafde7d772c5e015f86e0b7affe7bb6ee5cdbb # git clean -qxdf # git log -1 commit 7ccafde7d772c5e015f86e0b7affe7bb6ee5cdbb Author: Nicholas Piggin Date: Thu Oct 13 13:17:14 2016 +1100 powerpc/64s: relocation, register save fixes for system reset interrupt This patch does a couple of things. First of all, powernv immediately explodes when running a relocated kernel, because the system reset exception for handling sleeps does not do correct relocated branches. Secondly, the sleep handling code trashes the condition and cfar registers, which we would like to preserve for debugging purposes (for non-sleep case exception). This patch changes the exception to use the standard format that saves registers before any tests or branches are made. It adds the test for idle-wakeup as an "extra" to break out of the normal exception path. Then it branches to a relocated idle handler that calls the various idle handling functions. After this patch, POWER8 CPU simulator now boots powernv kernel that is running at non-zero. Fixes: 948cf67c4726 ("powerpc: Add NAP mode support on Power7 in HV mode") Cc: stable@vger.kernel.org # v3.0+ Signed-off-by: Nicholas Piggin Acked-by: Gautham R. Shenoy Acked-by: Balbir Singh 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 7ccafde7d772c5e015f86e0b7affe7bb6ee5cdbb # < make -j 48 ARCH=powerpc O=/home/kisskb/slave/build/powerpc-fixes_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-fixes_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-fixes_powerpc-allnoconfig_powerpc-5.3' 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/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/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 CC scripts/mod/empty.o HOSTCC scripts/dtc/flattree.o HOSTCC scripts/mod/mk_elfconfig HOSTCC scripts/dtc/fstree.o HOSTCC scripts/dtc/data.o CC scripts/mod/devicetable-offsets.s HOSTCC scripts/dtc/livetree.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 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/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 CC init/do_mounts.o LD usr/built-in.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 LD arch/powerpc/sysdev/built-in.o CC arch/powerpc/mm/mmap.o AS arch/powerpc/lib/string.o CC arch/powerpc/mm/init_32.o CC arch/powerpc/lib/alloc.o CC arch/powerpc/mm/pgtable_32.o AS arch/powerpc/lib/crtsavres.o AS arch/powerpc/lib/div64.o CC arch/powerpc/lib/feature-fixups.o CC arch/powerpc/mm/ppc_mmu_32.o CC arch/powerpc/mm/mmu_context_hash32.o AS arch/powerpc/mm/hash_low_32.o CC arch/powerpc/mm/hugetlbpage.o CC arch/powerpc/lib/code-patching.o AS arch/powerpc/lib/checksum_32.o AS arch/powerpc/lib/copy_32.o CC arch/powerpc/mm/tlb_hash32.o CC arch/powerpc/lib/checksum_wrappers.o LD arch/powerpc/platforms/built-in.o LD arch/powerpc/math-emu/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/signal_32.o CC arch/powerpc/kernel/vdso.o CC arch/powerpc/kernel/pmc.o CC arch/powerpc/kernel/syscalls.o CC arch/powerpc/kernel/process.o CC arch/powerpc/kernel/cacheinfo.o CC arch/powerpc/kernel/time.o CC arch/powerpc/kernel/prom.o CC arch/powerpc/kernel/sysfs.o CC arch/powerpc/kernel/idle.o CPP arch/powerpc/kernel/systbl_chk.i CC arch/powerpc/kernel/io.o AS arch/powerpc/kernel/misc.o CC arch/powerpc/kernel/traps.o CC arch/powerpc/kernel/udbg.o CC arch/powerpc/kernel/setup-common.o CC arch/powerpc/kernel/signal.o AS arch/powerpc/kernel/misc_32.o CC arch/powerpc/kernel/dma.o CC arch/powerpc/kernel/prom_parse.o AS arch/powerpc/kernel/idle_6xx.o CC arch/powerpc/kernel/of_platform.o AS arch/powerpc/kernel/l2cr_6xx.o LD arch/powerpc/crypto/built-in.o AS arch/powerpc/kernel/cpu_setup_6xx.o AS arch/powerpc/kernel/entry_32.o LDS arch/powerpc/kernel/vdso32/vdso32.lds CC arch/powerpc/kernel/setup_32.o VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o CC arch/powerpc/kernel/pci_32.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/gettimeofday.o AS arch/powerpc/kernel/head_32.o VDSO32A arch/powerpc/kernel/vdso32/datapage.o LDS arch/powerpc/kernel/vmlinux.lds AS arch/powerpc/kernel/fpu.o CALL /home/kisskb/slave/src/arch/powerpc/kernel/systbl_chk.sh VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o VDSO32A arch/powerpc/kernel/vdso32/note.o AS arch/powerpc/kernel/systbl.o LD arch/powerpc/net/built-in.o VDSO32L arch/powerpc/kernel/vdso32/vdso32.so.dbg LD arch/powerpc/lib/built-in.o OBJCOPY arch/powerpc/kernel/vdso32/vdso32.so AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o LD certs/built-in.o LD arch/powerpc/kernel/vdso32/built-in.o LD arch/powerpc/mm/built-in.o LD ipc/built-in.o CC security/min_addr.o CC security/commoncap.o LD crypto/built-in.o CC kernel/fork.o CC kernel/exec_domain.o CC kernel/panic.o CC kernel/softirq.o LD block/built-in.o CC kernel/cpu.o CC kernel/sysctl.o CC kernel/capability.o CC kernel/resource.o CC kernel/exit.o CC kernel/sysctl_binary.o CC kernel/signal.o CC kernel/user.o CC kernel/workqueue.o CC kernel/sys.o CC kernel/kmod.o CC kernel/ptrace.o CC kernel/task_work.o CC kernel/nsproxy.o CC kernel/params.o CC kernel/pid.o CC kernel/sys_ni.o CC kernel/extable.o CC kernel/kthread.o CC kernel/reboot.o CC kernel/notifier.o CC kernel/ksysfs.o CC kernel/cred.o CC kernel/async.o LD sound/built-in.o CC kernel/range.o CC kernel/smpboot.o CC kernel/ucount.o LD kernel/livepatch/built-in.o CC mm/filemap.o CC fs/open.o CC mm/mempool.o LD init/mounts.o CC kernel/power/qos.o CC fs/read_write.o LD init/built-in.o CC kernel/locking/mutex.o CC kernel/locking/semaphore.o CC kernel/irq/irqdesc.o CC kernel/printk/printk.o LD firmware/built-in.o CC kernel/rcu/update.o LD net/built-in.o CC kernel/dma.o CC kernel/up.o CC kernel/elfcore.o CC fs/file_table.o CC kernel/locking/rwsem.o CC kernel/locking/percpu-rwsem.o CC kernel/memremap.o CC kernel/sched/core.o CC kernel/time/time.o CC kernel/locking/rwsem-xadd.o CC fs/super.o CC kernel/sched/loadavg.o CC kernel/sched/clock.o CC fs/char_dev.o LD virt/lib/built-in.o LD arch/powerpc/kernel/built-in.o CC kernel/sched/cputime.o CC kernel/sched/idle_task.o CC fs/stat.o CC kernel/sched/fair.o LD virt/built-in.o CC kernel/sched/rt.o CC kernel/rcu/sync.o CC fs/exec.o CC kernel/sched/deadline.o CC kernel/time/timer.o CC kernel/sched/stop_task.o CC fs/pipe.o CC kernel/sched/wait.o CC kernel/rcu/tiny.o CC kernel/sched/swait.o CC mm/oom_kill.o LD kernel/power/built-in.o LD security/built-in.o CC fs/namei.o CC fs/fcntl.o CC kernel/time/hrtimer.o CC kernel/time/itimer.o CC fs/ioctl.o CC fs/readdir.o CC kernel/sched/completion.o CC mm/maccess.o LD drivers/amba/built-in.o LD drivers/auxdisplay/built-in.o CC kernel/irq/handle.o CC kernel/sched/idle.o LD kernel/locking/built-in.o CC mm/page_alloc.o CC kernel/irq/manage.o LD drivers/block/built-in.o CC lib/lockref.o CC lib/bcd.o LD drivers/bus/built-in.o CC lib/sort.o CC lib/div64.o LD drivers/cdrom/built-in.o CC lib/parser.o CC mm/page-writeback.o CC fs/select.o CC lib/halfmd4.o CC fs/dcache.o CC lib/debug_locks.o CC drivers/char/mem.o LD drivers/clocksource/built-in.o CC fs/inode.o CC lib/random32.o CC drivers/base/component.o LD drivers/clk/bcm/built-in.o CC lib/bust_spinlocks.o CC kernel/time/posix-timers.o CC lib/kasprintf.o LD drivers/firewire/built-in.o CC mm/readahead.o LD drivers/clk/mvebu/built-in.o CC kernel/irq/spurious.o LD drivers/clk/ti/built-in.o CC kernel/time/posix-cpu-timers.o LD kernel/printk/built-in.o CC mm/swap.o CC lib/bitmap.o CC mm/vmscan.o CC mm/truncate.o LD drivers/clk/built-in.o CC lib/scatterlist.o CC fs/attr.o CC lib/gcd.o CC fs/bad_inode.o CC fs/file.o CC kernel/time/timekeeping.o LD kernel/rcu/built-in.o LD drivers/firmware/broadcom/built-in.o CC lib/lcm.o LD drivers/hwtracing/intel_th/built-in.o CC lib/list_sort.o LD drivers/i2c/algos/built-in.o CC lib/uuid.o LD drivers/firmware/meson/built-in.o CC kernel/time/ntp.o CC fs/filesystems.o LD drivers/idle/built-in.o CC fs/namespace.o CC drivers/irqchip/irqchip.o LD drivers/i2c/busses/built-in.o CC lib/flex_array.o LD drivers/firmware/built-in.o CC lib/iov_iter.o CC lib/clz_ctz.o CC lib/bsearch.o LD drivers/gpu/drm/bridge/built-in.o CC lib/find_bit.o LD drivers/lguest/built-in.o LD drivers/i2c/muxes/built-in.o CC kernel/time/clocksource.o CC lib/memweight.o CC lib/llist.o LD drivers/macintosh/built-in.o CC drivers/char/random.o LD drivers/gpu/drm/hisilicon/built-in.o CC fs/seq_file.o LD drivers/i2c/built-in.o CC lib/kfifo.o CC lib/percpu-refcount.o CC lib/percpu_ida.o LD drivers/mfd/built-in.o CC mm/shmem.o LD drivers/gpu/drm/i2c/built-in.o CC fs/xattr.o CC lib/rhashtable.o CC fs/libfs.o CC fs/fs-writeback.o CC fs/pnode.o CC drivers/base/core.o LD drivers/mmc/built-in.o CC lib/reciprocal_div.o LD drivers/gpu/drm/omapdrm/displays/built-in.o LD drivers/irqchip/built-in.o LD drivers/gpu/drm/panel/built-in.o CC kernel/irq/resend.o CC kernel/irq/chip.o LD drivers/net/built-in.o CC fs/splice.o CC kernel/irq/dummychip.o LD drivers/nfc/built-in.o CC lib/once.o LD drivers/gpu/drm/omapdrm/dss/built-in.o CC mm/util.o LD drivers/gpu/drm/tilcdc/built-in.o LD drivers/misc/cb710/built-in.o CC kernel/time/jiffies.o CC kernel/time/timer_list.o LD drivers/gpu/vga/built-in.o CC lib/string_helpers.o LD drivers/gpu/drm/omapdrm/built-in.o CC lib/hexdump.o CC mm/mmzone.o CC lib/kstrtox.o LD drivers/nvme/host/built-in.o CC lib/pci_iomap.o LD drivers/media/common/b2c2/built-in.o LD drivers/misc/eeprom/built-in.o LD drivers/media/common/saa7146/built-in.o LD drivers/gpu/drm/built-in.o CC mm/vmstat.o CC lib/iomap_copy.o CC drivers/of/base.o CC kernel/irq/devres.o CC fs/sync.o LD drivers/media/common/v4l2-tpg/built-in.o LD drivers/nvme/target/built-in.o LD drivers/media/common/siano/built-in.o LD drivers/misc/lis3lv02d/built-in.o CC lib/devres.o CC lib/hweight.o CC lib/bitrev.o LD drivers/nvme/built-in.o LD drivers/media/common/built-in.o LD drivers/gpu/built-in.o CC fs/utimes.o CC fs/stack.o LD drivers/misc/mic/bus/built-in.o LD drivers/platform/built-in.o CC kernel/irq/irqdomain.o CC kernel/time/timeconv.o LD kernel/sched/built-in.o LD drivers/media/firewire/built-in.o LD drivers/misc/mic/built-in.o HOSTCC lib/gen_crc32table CC mm/backing-dev.o CC fs/fs_struct.o LD drivers/power/built-in.o CC mm/mm_init.o CC mm/mmu_context.o CC kernel/time/timecounter.o CC mm/percpu.o CC kernel/time/posix-clock.o CC kernel/time/alarmtimer.o CC fs/statfs.o LD drivers/media/i2c/soc_camera/built-in.o LD drivers/pwm/built-in.o LD drivers/media/mmc/siano/built-in.o LD drivers/misc/ti-st/built-in.o CC drivers/pci/access.o CC lib/syscall.o CC lib/atomic64.o CC lib/strncpy_from_user.o CC kernel/time/clockevents.o LD drivers/media/mmc/built-in.o CC mm/slab_common.o LD drivers/media/i2c/built-in.o LD drivers/misc/built-in.o CC lib/strnlen_user.o CC lib/chacha20.o CC lib/argv_split.o CC kernel/time/tick-common.o CC mm/compaction.o CC fs/fs_pin.o LD drivers/media/platform/omap/built-in.o LD drivers/soc/bcm/built-in.o CC mm/vmacache.o CC mm/interval_tree.o CC fs/nsfs.o CC mm/list_lru.o CC lib/cmdline.o LD drivers/soc/fsl/built-in.o LD drivers/media/platform/built-in.o CC lib/dec_and_lock.o CC lib/ctype.o CC drivers/base/bus.o CC fs/no-block.o CC lib/decompress.o LD drivers/soc/built-in.o LD drivers/tty/ipwireless/built-in.o LD fs/devpts/built-in.o LD fs/exofs/built-in.o CC drivers/char/misc.o CC lib/dma-noop.o CC lib/dump_stack.o CC lib/earlycpio.o LD drivers/tty/serial/built-in.o LD drivers/media/rc/keymaps/built-in.o LD fs/quota/built-in.o CC fs/binfmt_elf.o CC lib/extable.o CC mm/workingset.o CC lib/fdt.o CC lib/fdt_empty_tree.o CC lib/fdt_ro.o CC lib/fdt_rw.o CC fs/ramfs/inode.o LD drivers/media/pci/b2c2/built-in.o LD drivers/media/rc/built-in.o LD drivers/tty/vt/built-in.o CC lib/fdt_strerror.o LD drivers/usb/host/built-in.o LD drivers/media/pci/ddbridge/built-in.o CC lib/fdt_sw.o CC lib/fdt_wip.o CC drivers/of/device.o LD drivers/char/agp/built-in.o LD fs/notify/dnotify/built-in.o LD drivers/tty/built-in.o LD kernel/irq/built-in.o CC lib/idr.o CC lib/flex_proportions.o CC drivers/base/dd.o CC drivers/base/syscore.o LD drivers/media/spi/built-in.o CC drivers/base/driver.o LD drivers/usb/built-in.o CC lib/int_sqrt.o CC lib/ioremap.o LD drivers/media/pci/netup_unidvb/built-in.o LD drivers/media/pci/dm1105/built-in.o CC mm/debug.o LD drivers/media/pci/mantis/built-in.o CC drivers/of/platform.o CC lib/irq_regs.o CC drivers/base/platform.o CC drivers/base/class.o LD drivers/media/tuners/built-in.o CC lib/is_single_threaded.o LD drivers/media/pci/ngene/built-in.o LD fs/notify/fanotify/built-in.o LD fs/notify/inotify/built-in.o CC mm/gup.o CC mm/highmem.o LD drivers/media/pci/pt3/built-in.o LD drivers/media/pci/pt1/built-in.o CC lib/klist.o LD drivers/media/pci/pluto2/built-in.o CC lib/kobject.o CC mm/memory.o CC lib/kobject_uevent.o CC lib/md5.o LD fs/notify/built-in.o CC lib/nmi_backtrace.o CC lib/nodemask.o CC mm/mincore.o LD drivers/media/pci/smipcie/built-in.o CC lib/plist.o CC mm/mlock.o LD drivers/media/pci/saa7146/built-in.o CC mm/mmap.o LD drivers/media/pci/ttpci/built-in.o CC lib/radix-tree.o CC lib/ratelimit.o CC drivers/pci/bus.o LD drivers/char/built-in.o CC mm/mprotect.o LD drivers/video/backlight/built-in.o CC lib/seq_buf.o CC lib/rbtree.o LD kernel/time/built-in.o LD drivers/media/pci/built-in.o CC lib/sha1.o CC lib/string.o CC lib/show_mem.o CC lib/timerqueue.o CC drivers/pci/probe.o LD kernel/built-in.o CC mm/mremap.o CC drivers/pci/host-bridge.o CC lib/vsprintf.o CC lib/win_minmax.o CC mm/msync.o CC drivers/base/cpu.o CC mm/rmap.o LD drivers/media/usb/b2c2/built-in.o CC mm/vmalloc.o LD drivers/video/fbdev/core/built-in.o CC fs/ramfs/file-mmu.o CC drivers/pci/remove.o CC drivers/base/firmware.o CC drivers/base/init.o GEN lib/crc32table.h CC drivers/base/map.o CC lib/crc32.o LD drivers/media/usb/dvb-usb/built-in.o LD drivers/media/usb/dvb-usb-v2/built-in.o CC drivers/base/devres.o LD drivers/media/usb/s2255/built-in.o LD drivers/media/usb/siano/built-in.o CC mm/pagewalk.o LD drivers/media/usb/stkwebcam/built-in.o CC mm/pgtable-generic.o CC mm/init-mm.o LD drivers/media/usb/zr364xx/built-in.o CC mm/memblock.o CC mm/nobootmem.o LD drivers/media/usb/ttusb-dec/built-in.o LD drivers/media/usb/ttusb-budget/built-in.o CC mm/slub.o CC drivers/pci/pci.o CC mm/dmapool.o CC drivers/pci/pci-driver.o CC drivers/of/fdt.o LD drivers/video/fbdev/omap2/omapfb/displays/built-in.o CC drivers/of/fdt_address.o CC drivers/of/address.o CC drivers/of/irq.o CC drivers/base/attribute_container.o CC drivers/base/topology.o CC drivers/base/transport_class.o CC drivers/of/of_pci.o CC drivers/base/container.o CC drivers/base/property.o LD drivers/media/usb/built-in.o CC drivers/of/of_pci_irq.o CC drivers/pci/search.o CC drivers/of/of_reserved_mem.o LD drivers/video/fbdev/omap2/omapfb/dss/built-in.o LD fs/ramfs/ramfs.o LD fs/ramfs/built-in.o CC drivers/base/cacheinfo.o LD fs/built-in.o LD drivers/video/fbdev/omap2/omapfb/built-in.o CC drivers/pci/pci-sysfs.o LD drivers/media/built-in.o CC drivers/pci/rom.o LD drivers/video/fbdev/omap2/built-in.o CC drivers/base/dma-mapping.o LD drivers/base/power/built-in.o CC drivers/pci/irq.o CC drivers/pci/setup-res.o CC drivers/pci/vpd.o CC drivers/pci/setup-bus.o CC drivers/pci/vc.o LD drivers/video/fbdev/built-in.o CC drivers/pci/syscall.o CC drivers/pci/of.o LD drivers/pci/host/built-in.o LD drivers/video/built-in.o LD drivers/of/built-in.o LD drivers/base/built-in.o LD mm/built-in.o AR lib/lib.a EXPORTS lib/lib-ksyms.o LD lib/built-in.o LD drivers/pci/built-in.o LD drivers/built-in.o 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-fixes_powerpc-allnoconfig_powerpc-5.3' Completed OK # rm -rf /home/kisskb/slave/build/powerpc-fixes_powerpc-allnoconfig_powerpc-5.3 # Build took: 0:00:13.123803