# git rev-parse -q --verify 038170a23b6b7a42fb6a03414e03b8e8f8838c77^{commit} 038170a23b6b7a42fb6a03414e03b8e8f8838c77 already have revision, skipping fetch # git checkout -q -f -B kisskb 038170a23b6b7a42fb6a03414e03b8e8f8838c77 # git clean -qxdf # git log -1 commit 038170a23b6b7a42fb6a03414e03b8e8f8838c77 Author: Michael Ellerman Date: Mon Jun 20 19:23:43 2016 +1000 powerpc: Fix faults caused by radix patching of SLB miss handler As part of the Radix MMU support we added some feature sections in the SLB miss handler. These are intended to catch the case that we incorrectly take an SLB miss when Radix is enabled, and instead of crashing weirdly they bail out to a well defined exit path and trigger an oops. However the way they were written meant the bailout case was enabled by default until we did CPU feature patching. On powermacs the early debug prints in setup_system() can cause an SLB miss, which happens before code patching, and so the SLB miss handler would incorrectly bailout and crash during boot. Fix it by inverting the sense of the feature section, so that the code which is in place at boot is correct for the hash case. Once we determine we are using Radix - which will never happen on a powermac - only then do we patch in the bailout case which unconditionally jumps. Fixes: caca285e5ab4 ("powerpc/mm/radix: Use STD_MMU_64 to properly isolate hash related code") Reported-by: Denis Kirjanov Tested-by: Denis Kirjanov Signed-off-by: Michael Ellerman # < /opt/cross/kisskb/gcc-5.3.0-nolibc/powerpc-linux/bin/powerpc-linux-gcc --version # < git log --format=%s --max-count=1 038170a23b6b7a42fb6a03414e03b8e8f8838c77 # < 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/powerpc-linux/bin/powerpc-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/powerpc-linux/bin/powerpc-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 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 UPD include/config/kernel.release CHK include/generated/uapi/linux/version.h UPD include/generated/uapi/linux/version.h 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/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 CC scripts/mod/devicetable-offsets.s HOSTCC scripts/dtc/treesource.o HOSTCC scripts/dtc/srcpos.o HOSTCC scripts/dtc/checks.o SHIPPED scripts/dtc/dtc-lexer.lex.c HOSTCC scripts/dtc/util.o SHIPPED scripts/dtc/dtc-parser.tab.c SHIPPED scripts/dtc/dtc-parser.tab.h HOSTCC scripts/dtc/dtc-parser.tab.o GEN scripts/mod/devicetable-offsets.h MKELF scripts/mod/elfconfig.h HOSTCC scripts/dtc/dtc-lexer.lex.o 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 LD usr/built-in.o CC init/main.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 LD arch/powerpc/sysdev/built-in.o CC arch/powerpc/mm/mem.o CC arch/powerpc/mm/fault.o AS arch/powerpc/lib/string.o CC arch/powerpc/lib/alloc.o CC arch/powerpc/lib/feature-fixups.o AS arch/powerpc/lib/copy_32.o CC arch/powerpc/lib/code-patching.o CC arch/powerpc/mm/init_32.o CC arch/powerpc/mm/ppc_mmu_32.o CC init/version.o AS arch/powerpc/lib/div64.o LD arch/powerpc/platforms/built-in.o AS arch/powerpc/mm/hash_low_32.o CC arch/powerpc/mm/pgtable_32.o CC arch/powerpc/mm/mmap.o CC arch/powerpc/lib/ppc_ksyms.o CC arch/powerpc/mm/hugetlbpage.o AS arch/powerpc/lib/crtsavres.o CC arch/powerpc/lib/checksum_wrappers.o CC arch/powerpc/mm/pgtable.o LD arch/powerpc/crypto/built-in.o AS arch/powerpc/lib/checksum_32.o CC arch/powerpc/mm/tlb_hash32.o CC arch/powerpc/mm/mmu_context_hash32.o LD arch/powerpc/math-emu/built-in.o LD arch/powerpc/net/built-in.o CC arch/powerpc/kernel/ptrace.o CC arch/powerpc/kernel/syscalls.o CC arch/powerpc/kernel/signal.o CC arch/powerpc/kernel/process.o CPP arch/powerpc/kernel/systbl_chk.i CC arch/powerpc/kernel/idle.o CC arch/powerpc/kernel/pmc.o CC arch/powerpc/kernel/irq.o CC arch/powerpc/kernel/cputable.o CC arch/powerpc/kernel/align.o CC arch/powerpc/kernel/signal_32.o CC arch/powerpc/kernel/vdso.o CC arch/powerpc/kernel/setup-common.o CC arch/powerpc/kernel/io.o CC arch/powerpc/kernel/udbg.o CC arch/powerpc/kernel/dma.o AS arch/powerpc/kernel/misc_32.o AS arch/powerpc/kernel/misc.o CC arch/powerpc/kernel/sysfs.o CC arch/powerpc/kernel/time.o CC arch/powerpc/kernel/prom.o CC arch/powerpc/kernel/traps.o CC arch/powerpc/kernel/cacheinfo.o AS arch/powerpc/kernel/cpu_setup_6xx.o CC arch/powerpc/kernel/prom_parse.o AS arch/powerpc/kernel/l2cr_6xx.o AS arch/powerpc/kernel/idle_6xx.o CC arch/powerpc/kernel/of_platform.o AS arch/powerpc/kernel/entry_32.o CC arch/powerpc/kernel/setup_32.o LD arch/powerpc/lib/built-in.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 LD certs/built-in.o AS arch/powerpc/kernel/head_32.o LDS arch/powerpc/kernel/vmlinux.lds CALL /home/kisskb/slave/src/arch/powerpc/kernel/systbl_chk.sh AS arch/powerpc/kernel/fpu.o AS arch/powerpc/kernel/systbl.o LDS arch/powerpc/kernel/vdso32/vdso32.lds VDSO32A arch/powerpc/kernel/vdso32/sigtramp.o VDSO32A arch/powerpc/kernel/vdso32/note.o VDSO32A arch/powerpc/kernel/vdso32/cacheflush.o VDSO32A arch/powerpc/kernel/vdso32/datapage.o VDSO32A arch/powerpc/kernel/vdso32/gettimeofday.o VDSO32L arch/powerpc/kernel/vdso32/vdso32.so.dbg LD init/mounts.o LD ipc/built-in.o OBJCOPY arch/powerpc/kernel/vdso32/vdso32.so AS arch/powerpc/kernel/vdso32/vdso32_wrapper.o CC security/min_addr.o CC security/commoncap.o LD arch/powerpc/kernel/vdso32/built-in.o LD arch/powerpc/mm/built-in.o LD crypto/built-in.o CC kernel/exec_domain.o CC kernel/panic.o CC kernel/exit.o CC kernel/fork.o LD block/built-in.o CC kernel/softirq.o CC kernel/cpu.o CC kernel/capability.o CC kernel/sysctl_binary.o CC kernel/sysctl.o CC kernel/resource.o CC fs/char_dev.o CC fs/stat.o CC fs/exec.o CC fs/open.o CC kernel/ptrace.o CC kernel/user.o CC kernel/signal.o CC fs/read_write.o CC fs/file_table.o CC fs/super.o CC kernel/sys.o CC fs/pipe.o CC fs/ioctl.o CC fs/fcntl.o CC fs/readdir.o CC fs/namei.o CC fs/select.o CC kernel/kmod.o CC fs/dcache.o CC kernel/pid.o CC fs/inode.o CC kernel/workqueue.o CC fs/attr.o CC mm/mempool.o CC mm/filemap.o CC fs/bad_inode.o CC fs/file.o LD sound/built-in.o LD init/built-in.o CC fs/filesystems.o CC mm/oom_kill.o CC mm/maccess.o CC fs/namespace.o CC mm/page_alloc.o LD firmware/built-in.o CC kernel/task_work.o LD net/built-in.o CC kernel/extable.o CC mm/page-writeback.o CC kernel/params.o CC kernel/kthread.o CC fs/seq_file.o CC fs/xattr.o CC mm/readahead.o CC kernel/sys_ni.o CC kernel/nsproxy.o CC mm/swap.o CC kernel/notifier.o CC kernel/ksysfs.o LD arch/powerpc/kernel/built-in.o CC kernel/cred.o CC fs/libfs.o CC kernel/reboot.o CC kernel/async.o LD virt/lib/built-in.o CC fs/fs-writeback.o CC fs/pnode.o CC mm/truncate.o CC kernel/range.o CC fs/splice.o CC fs/sync.o LD virt/built-in.o CC kernel/smpboot.o LD security/built-in.o CC mm/vmscan.o CC fs/utimes.o LD kernel/livepatch/built-in.o CC fs/stack.o LD drivers/amba/built-in.o CC fs/fs_struct.o CC lib/lockref.o CC mm/shmem.o CC kernel/locking/mutex.o CC fs/statfs.o CC kernel/power/qos.o CC kernel/irq/irqdesc.o CC kernel/printk/printk.o CC kernel/rcu/update.o CC fs/fs_pin.o CC kernel/dma.o LD drivers/auxdisplay/built-in.o CC fs/nsfs.o CC fs/no-block.o LD fs/devpts/built-in.o CC kernel/up.o CC lib/bcd.o CC kernel/sched/core.o LD fs/exofs/built-in.o CC kernel/elfcore.o LD drivers/block/built-in.o LD fs/quota/built-in.o CC kernel/memremap.o CC kernel/irq/handle.o CC fs/binfmt_elf.o CC kernel/sched/loadavg.o CC kernel/time/time.o CC lib/div64.o CC mm/util.o CC kernel/time/timer.o LD drivers/bus/built-in.o LD fs/notify/dnotify/built-in.o LD fs/notify/fanotify/built-in.o CC fs/ramfs/inode.o CC fs/ramfs/file-mmu.o CC kernel/rcu/sync.o CC kernel/rcu/tiny.o CC kernel/sched/clock.o CC mm/mmzone.o CC kernel/sched/cputime.o CC kernel/irq/manage.o LD fs/notify/inotify/built-in.o LD drivers/cdrom/built-in.o LD kernel/printk/built-in.o CC kernel/sched/idle_task.o CC mm/backing-dev.o CC mm/vmstat.o LD fs/notify/built-in.o CC mm/mm_init.o CC drivers/base/component.o CC kernel/locking/semaphore.o CC kernel/locking/rwsem.o CC mm/mmu_context.o LD drivers/clocksource/built-in.o CC drivers/base/core.o CC drivers/base/bus.o CC lib/sort.o CC drivers/char/mem.o CC drivers/base/syscore.o CC drivers/char/misc.o CC drivers/base/dd.o CC drivers/char/random.o LD drivers/clk/mvebu/built-in.o LD drivers/clk/bcm/built-in.o LD drivers/char/agp/built-in.o LD drivers/firewire/built-in.o CC mm/percpu.o CC mm/slab_common.o CC mm/vmacache.o CC mm/interval_tree.o CC kernel/irq/spurious.o LD drivers/clk/ti/built-in.o CC mm/compaction.o CC mm/list_lru.o CC mm/workingset.o CC mm/debug.o CC mm/gup.o LD kernel/rcu/built-in.o CC mm/memory.o CC drivers/base/driver.o CC mm/highmem.o CC mm/mincore.o LD drivers/clk/built-in.o CC lib/halfmd4.o CC lib/parser.o CC mm/mlock.o CC kernel/sched/fair.o CC lib/debug_locks.o CC mm/mmap.o CC mm/mprotect.o LD drivers/firmware/broadcom/built-in.o LD drivers/gpio/built-in.o CC kernel/time/hrtimer.o CC mm/mremap.o CC mm/msync.o CC mm/rmap.o LD kernel/power/built-in.o CC kernel/time/itimer.o CC kernel/time/posix-timers.o LD drivers/firmware/built-in.o CC kernel/time/posix-cpu-timers.o CC kernel/time/ntp.o LD fs/ramfs/ramfs.o CC kernel/time/timekeeping.o CC kernel/time/jiffies.o CC kernel/time/clocksource.o CC kernel/time/timer_list.o LD fs/ramfs/built-in.o CC kernel/time/timeconv.o CC mm/vmalloc.o CC drivers/base/class.o CC mm/pagewalk.o LD drivers/hsi/clients/built-in.o CC kernel/irq/resend.o CC kernel/locking/percpu-rwsem.o CC drivers/base/platform.o CC lib/random32.o LD drivers/hsi/controllers/built-in.o CC mm/pgtable-generic.o CC mm/init-mm.o CC mm/nobootmem.o LD drivers/gpu/drm/hisilicon/built-in.o LD drivers/gpu/drm/panel/built-in.o LD drivers/gpu/drm/bridge/built-in.o LD drivers/gpu/drm/i2c/built-in.o LD drivers/hsi/built-in.o LD drivers/gpu/drm/omapdrm/displays/built-in.o LD drivers/hwtracing/intel_th/built-in.o CC kernel/sched/rt.o LD drivers/gpu/drm/omapdrm/dss/built-in.o LD drivers/gpu/drm/tilcdc/built-in.o CC mm/memblock.o CC kernel/sched/deadline.o CC mm/dmapool.o CC drivers/irqchip/irqchip.o LD drivers/leds/built-in.o CC mm/slub.o LD drivers/idle/built-in.o LD drivers/gpu/drm/omapdrm/built-in.o LD drivers/lguest/built-in.o CC drivers/base/cpu.o CC kernel/time/timecounter.o CC kernel/sched/stop_task.o LD drivers/i2c/algos/built-in.o CC kernel/sched/wait.o LD drivers/gpu/drm/built-in.o CC kernel/time/posix-clock.o CC kernel/time/alarmtimer.o CC lib/bust_spinlocks.o CC kernel/irq/chip.o CC kernel/irq/dummychip.o CC lib/kasprintf.o LD drivers/i2c/busses/built-in.o CC kernel/time/clockevents.o CC kernel/sched/swait.o CC kernel/time/tick-common.o LD drivers/i2c/muxes/built-in.o CC kernel/sched/completion.o LD drivers/gpu/vga/built-in.o CC kernel/sched/idle.o LD drivers/i2c/built-in.o LD fs/built-in.o CC kernel/locking/rwsem-xadd.o CC lib/scatterlist.o CC drivers/base/firmware.o CC lib/bitmap.o LD drivers/gpu/built-in.o CC lib/lcm.o CC lib/gcd.o CC kernel/irq/devres.o CC kernel/irq/irqdomain.o CC drivers/base/init.o CC lib/list_sort.o LD drivers/macintosh/built-in.o LD drivers/mfd/built-in.o CC drivers/base/map.o CC lib/flex_array.o CC lib/uuid.o CC drivers/base/devres.o CC drivers/base/attribute_container.o CC lib/iov_iter.o CC drivers/base/transport_class.o CC drivers/base/container.o CC lib/clz_ctz.o CC lib/bsearch.o CC drivers/base/topology.o LD drivers/nfc/built-in.o LD drivers/mmc/built-in.o LD drivers/net/built-in.o LD drivers/char/built-in.o CC drivers/base/cacheinfo.o LD drivers/misc/cb710/built-in.o CC drivers/base/property.o LD drivers/irqchip/built-in.o CC drivers/base/dma-mapping.o LD drivers/base/power/built-in.o LD drivers/misc/eeprom/built-in.o LD drivers/nvme/host/built-in.o LD drivers/media/firewire/built-in.o LD drivers/misc/lis3lv02d/built-in.o LD drivers/misc/ti-st/built-in.o LD drivers/nvme/built-in.o CC drivers/of/base.o LD kernel/locking/built-in.o CC drivers/of/device.o LD drivers/misc/mic/bus/built-in.o CC lib/find_bit.o LD drivers/media/i2c/soc_camera/built-in.o LD drivers/power/built-in.o LD drivers/platform/built-in.o LD drivers/media/mmc/siano/built-in.o CC lib/llist.o LD drivers/media/platform/omap/built-in.o LD drivers/pwm/built-in.o LD drivers/media/common/b2c2/built-in.o LD drivers/media/common/saa7146/built-in.o LD drivers/misc/mic/built-in.o LD drivers/media/common/siano/built-in.o LD drivers/media/platform/built-in.o CC lib/memweight.o LD drivers/media/i2c/built-in.o LD drivers/usb/host/built-in.o LD drivers/media/common/v4l2-tpg/built-in.o CC lib/kfifo.o LD drivers/misc/built-in.o LD drivers/media/mmc/built-in.o CC lib/percpu_ida.o LD drivers/soc/bcm/built-in.o CC lib/rhashtable.o CC drivers/of/platform.o CC lib/percpu-refcount.o LD drivers/media/tuners/built-in.o LD drivers/usb/built-in.o LD drivers/media/common/built-in.o LD drivers/tty/serial/built-in.o LD drivers/tty/ipwireless/built-in.o LD drivers/media/rc/keymaps/built-in.o CC drivers/of/fdt.o LD drivers/soc/fsl/built-in.o LD drivers/tty/vt/built-in.o CC drivers/of/address.o CC lib/reciprocal_div.o CC drivers/of/irq.o CC drivers/of/of_pci.o CC drivers/of/fdt_address.o CC lib/string_helpers.o LD kernel/irq/built-in.o CC drivers/of/of_reserved_mem.o CC lib/hexdump.o CC lib/once.o LD drivers/soc/built-in.o LD drivers/media/rc/built-in.o CC drivers/of/of_pci_irq.o CC lib/kstrtox.o CC lib/pci_iomap.o LD drivers/video/backlight/built-in.o CC lib/devres.o CC lib/hweight.o LD drivers/tty/built-in.o CC lib/iomap_copy.o CC drivers/pci/access.o CC lib/bitrev.o HOSTCC lib/gen_crc32table CC drivers/pci/bus.o CC lib/syscall.o CC drivers/pci/probe.o CC drivers/pci/host-bridge.o CC drivers/pci/remove.o CC drivers/pci/pci.o LD drivers/video/fbdev/core/built-in.o LD drivers/media/pci/b2c2/built-in.o LD drivers/media/usb/b2c2/built-in.o LD kernel/time/built-in.o CC lib/atomic64.o CC lib/strncpy_from_user.o LD drivers/media/usb/dvb-usb/built-in.o CC lib/strnlen_user.o LD drivers/media/pci/mantis/built-in.o LD drivers/media/usb/s2255/built-in.o LD drivers/media/usb/dvb-usb-v2/built-in.o CC lib/argv_split.o LD drivers/media/pci/ddbridge/built-in.o LD drivers/media/pci/dm1105/built-in.o LD drivers/media/usb/siano/built-in.o CC lib/cmdline.o LD drivers/video/fbdev/omap2/omapfb/displays/built-in.o CC lib/decompress.o CC lib/dec_and_lock.o CC lib/ctype.o CC drivers/pci/pci-driver.o LD drivers/media/pci/netup_unidvb/built-in.o LD drivers/media/pci/pluto2/built-in.o CC lib/dma-noop.o CC drivers/pci/pci-sysfs.o CC drivers/pci/search.o LD drivers/media/pci/ngene/built-in.o CC drivers/pci/rom.o LD drivers/video/fbdev/omap2/omapfb/dss/built-in.o LD drivers/media/usb/stkwebcam/built-in.o LD drivers/media/pci/pt1/built-in.o CC drivers/pci/setup-res.o CC lib/earlycpio.o CC lib/dump_stack.o LD drivers/media/pci/pt3/built-in.o LD drivers/media/usb/ttusb-dec/built-in.o LD drivers/media/usb/ttusb-budget/built-in.o LD drivers/media/pci/saa7146/built-in.o LD drivers/video/fbdev/omap2/omapfb/built-in.o CC lib/extable.o LD drivers/media/pci/smipcie/built-in.o LD drivers/media/usb/zr364xx/built-in.o LD drivers/media/pci/ttpci/built-in.o CC drivers/pci/irq.o CC lib/fdt.o CC drivers/pci/vpd.o CC lib/fdt_empty_tree.o CC lib/fdt_ro.o LD drivers/media/usb/built-in.o CC drivers/pci/syscall.o CC drivers/pci/setup-bus.o CC drivers/pci/vc.o CC drivers/pci/of.o LD drivers/media/pci/built-in.o CC lib/fdt_rw.o LD drivers/pci/host/built-in.o CC lib/fdt_strerror.o CC lib/fdt_wip.o LD drivers/video/fbdev/omap2/built-in.o LD kernel/sched/built-in.o CC lib/fdt_sw.o LD drivers/video/fbdev/built-in.o CC lib/flex_proportions.o LD kernel/built-in.o CC lib/idr.o CC lib/irq_regs.o CC lib/ioremap.o CC lib/int_sqrt.o CC lib/klist.o CC lib/kobject.o CC lib/kobject_uevent.o CC lib/md5.o CC lib/is_single_threaded.o LD drivers/video/built-in.o CC lib/nmi_backtrace.o CC lib/plist.o CC lib/nodemask.o LD drivers/media/built-in.o CC lib/radix-tree.o CC lib/seq_buf.o CC lib/show_mem.o CC lib/ratelimit.o CC lib/rbtree.o CC lib/sha1.o CC lib/timerqueue.o CC lib/string.o CC lib/vsprintf.o GEN lib/crc32table.h CC lib/crc32.o LD mm/built-in.o LD drivers/base/built-in.o LD drivers/of/built-in.o LD lib/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/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-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.688765