linux/arch/powerpc/kernel
Greg Kurz a3bf9fbdad powerpc/pseries: Fix xive=off command line
On POWER9, if the hypervisor supports XIVE exploitation mode, the
guest OS will unconditionally requests for the XIVE interrupt mode
even if XIVE was deactivated with the kernel command line xive=off.
Later on, when the spapr XIVE init code handles xive=off, it disables
XIVE and tries to fall back on the legacy mode XICS.

This discrepency causes a kernel panic because the hypervisor is
configured to provide the XIVE interrupt mode to the guest :

  kernel BUG at arch/powerpc/sysdev/xics/xics-common.c:135!
  ...
  NIP xics_smp_probe+0x38/0x98
  LR  xics_smp_probe+0x2c/0x98
  Call Trace:
    xics_smp_probe+0x2c/0x98 (unreliable)
    pSeries_smp_probe+0x40/0xa0
    smp_prepare_cpus+0x62c/0x6ec
    kernel_init_freeable+0x148/0x448
    kernel_init+0x2c/0x148
    ret_from_kernel_thread+0x5c/0x68

Look for xive=off during prom_init and don't ask for XIVE in this
case. One exception though: if the host only supports XIVE, we still
want to boot so we ignore xive=off.

Similarly, have the spapr XIVE init code to looking at the interrupt
mode negotiated during CAS, and ignore xive=off if the hypervisor only
supports XIVE.

Fixes: eac1e731b5 ("powerpc/xive: guest exploitation of the XIVE interrupt controller")
Cc: stable@vger.kernel.org # v4.20
Reported-by: Pavithra R. Prakash <pavrampu@in.ibm.com>
Signed-off-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2019-06-02 19:39:36 +10:00
..
syscalls uapi: Wire up the mount API syscalls on non-x86 arches [ver #2] 2019-05-16 12:23:45 -04:00
trace powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO 2019-02-23 22:31:40 +11:00
vdso32 powerpc/vdso: Drop unnecessary cc-ldoption 2019-05-01 10:49:58 +10:00
vdso64 powerpc/vdso: Drop unnecessary cc-ldoption 2019-05-01 10:49:58 +10:00
.gitignore
align.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
asm-offsets.c Merge branch 'topic/ppc-kvm' into next 2019-04-30 22:52:03 +10:00
audit.c
btext.c powerpc: Rework btext_find_display to use of_stdout and device_type helpers 2018-11-26 22:33:37 +11:00
cacheinfo.c powerpc/cacheinfo: Remove double free 2019-05-17 23:28:00 +10:00
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S powerpc/6xx: fix setup and use of SPRN_SPRG_PGDIR for hash32 2019-03-19 00:30:19 +11:00
cpu_setup_44x.S
cpu_setup_fsl_booke.S powerpc/mm: move platform specific mmu-xxx.h in platform directories 2018-12-04 19:45:01 +11:00
cpu_setup_pa6t.S
cpu_setup_power.S powerpc: Turn off CPU_FTR_P9_TM_HV_ASSIST in non-hypervisor mode 2018-10-09 16:04:27 +11:00
cpu_setup_ppc970.S
cputable.c powerpc: don't use direct assignation during early boot. 2019-05-03 01:20:25 +10:00
crash.c powerpc: remove kdump.h from page.h 2018-07-30 22:47:53 +10:00
crash_dump.c powerpc: don't use ioremap_prot() nor __ioremap() unless really needed. 2018-10-14 18:04:09 +11:00
dbell.c powerpc: Add doorbell tracepoints 2019-05-01 16:45:05 +10:00
dma-iommu.c powerpc/dma: use the dma_direct mapping routines 2019-02-18 22:41:04 +11:00
dma-mask.c dma-mapping, powerpc: simplify the arch dma_set_mask override 2019-02-18 22:41:03 +11:00
dma-swiotlb.c powerpc/dma: use the generic direct mapping bypass 2019-02-18 22:41:04 +11:00
dt_cpu_ftrs.c treewide: add checks for the return value of memblock_alloc*() 2019-03-12 10:04:02 -07:00
early_32.c powerpc/32: use memset() instead of memset_io() to zero BSS 2019-05-03 01:20:26 +10:00
eeh.c powerpc/eeh: Add eeh_force_recover to debugfs 2019-02-22 00:10:15 +11:00
eeh_cache.c powerpc/eeh_cache: Bump log level of eeh_addr_cache_print() 2019-02-22 00:10:14 +11:00
eeh_dev.c powerpc/eeh: Cleanup list_head field names 2018-10-13 22:21:25 +11:00
eeh_driver.c powerpc/eeh: Improve recovery of passed-through devices 2019-02-05 11:55:44 +11:00
eeh_event.c powerpc/eeh: Add eeh_force_recover to debugfs 2019-02-22 00:10:15 +11:00
eeh_pe.c powerpc/eeh: Add include_passed to eeh_pe_state_clear() 2019-02-05 11:55:43 +11:00
eeh_sysfs.c powerpc/eeh: Add include_passed to eeh_pe_state_clear() 2019-02-05 11:55:43 +11:00
entry_32.S powerpc/entry: Remove unneeded need_resched() loop 2019-05-03 02:54:57 +10:00
entry_64.S powerpc/entry: Remove unneeded need_resched() loop 2019-05-03 02:54:57 +10:00
epapr_hcalls.S powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU 2019-02-23 22:31:40 +11:00
epapr_paravirt.c
exceptions-64e.S powerpc/fsl: Fix the flush of branch predictor. 2019-02-27 22:52:38 +11:00
exceptions-64s.S Merge branch 'topic/ppc-kvm' into next 2019-04-30 22:52:03 +10:00
fadump.c powerpc/mm: move hugetlb_disabled into asm/hugetlb.h 2019-05-03 01:20:24 +10:00
firmware.c
fpu.S powerpc/64: Don't trace code that runs with the soft irq mask unreconciled 2019-05-03 01:58:11 +10:00
fsl_booke_entry_mapping.S
head_8xx.S powerpc/32: implement fast entry for syscalls on non BOOKE 2019-05-03 01:20:27 +10:00
head_32.h powerpc/32: implement fast entry for syscalls on non BOOKE 2019-05-03 01:20:27 +10:00
head_32.S powerpc/32: implement fast entry for syscalls on non BOOKE 2019-05-03 01:20:27 +10:00
head_40x.S powerpc/32: implement fast entry for syscalls on non BOOKE 2019-05-03 01:20:27 +10:00
head_44x.S powerpc/32: implement fast entry for syscalls on BOOKE 2019-05-03 01:20:27 +10:00
head_64.S powerpc/64: Fix booting large kernels with STRICT_KERNEL_RWX 2019-04-20 22:02:12 +10:00
head_booke.h powerpc/32: implement fast entry for syscalls on BOOKE 2019-05-03 01:20:27 +10:00
head_fsl_booke.S powerpc/32: implement fast entry for syscalls on BOOKE 2019-05-03 01:20:27 +10:00
hw_breakpoint.c powerpc: Add force enable of DAWR on P9 option 2019-04-20 22:20:45 +10:00
idle.c
idle_6xx.S powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU 2019-02-23 22:31:40 +11:00
idle_book3e.S powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO 2019-02-23 22:31:40 +11:00
idle_book3s.S powerpc/64s: Reimplement book3s idle code in C 2019-04-30 22:37:48 +10:00
idle_e500.S powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU 2019-02-23 22:31:40 +11:00
idle_power4.S powerpc/64: Replace CURRENT_THREAD_INFO with PACA_THREAD_INFO 2019-02-23 22:31:40 +11:00
ima_kexec.c
io-workarounds.c powerpc: handover page flags with a pgprot_t parameter 2018-10-14 18:04:09 +11:00
io.c
iomap.c powerpc: iomap.c: introduce io{read|write}64_{lo_hi|hi_lo} 2018-04-05 14:59:26 +10:00
iommu.c IOMMU Updates for Linux v4.21 2019-01-01 15:55:29 -08:00
irq.c powerpc/64: Don't trace code that runs with the soft irq mask unreconciled 2019-05-03 01:58:11 +10:00
isa-bridge.c powerpc: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
jump_label.c jump_label: move 'asm goto' support test to Kconfig 2019-01-06 09:46:51 +09:00
kexec_elf_64.c kernel/kexec_file.c: allow archs to set purgatory load address 2018-04-13 17:10:28 -07:00
kgdb.c powerpc: Activate CONFIG_THREAD_INFO_IN_TASK 2019-02-23 22:31:40 +11:00
kprobes-ftrace.c bpf/error-inject/kprobes: Clear current_kprobe and enable preempt in kprobe 2018-06-21 12:33:19 +02:00
kprobes.c bpf/error-inject/kprobes: Clear current_kprobe and enable preempt in kprobe 2018-06-21 12:33:19 +02:00
kvm.c kmemleak: powerpc: skip scanning holes in the .bss section 2019-04-05 16:02:30 -10:00
kvm_emul.S powerpc: move ASM_CONST and stringify_in_c() into asm-const.h 2018-07-30 22:48:16 +10:00
l2cr_6xx.S treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
legacy_serial.c powerpc: Use of_node_name_eq for node name comparisons 2018-12-22 21:29:50 +11:00
machine_kexec.c powerpc: remove kdump.h from page.h 2018-07-30 22:47:53 +10:00
machine_kexec_32.c
machine_kexec_64.c powerpc: Activate CONFIG_THREAD_INFO_IN_TASK 2019-02-23 22:31:40 +11:00
machine_kexec_file_64.c powerpc, kexec_file: factor out memblock-based arch_kexec_walk_mem() 2018-12-06 14:38:50 +00:00
Makefile powerpc: disable KASAN instrumentation on early/critical files. 2019-05-03 01:20:26 +10:00
mce.c powerpc/powernv/mce: Print additional information about MCE error. 2019-05-01 22:23:20 +10:00
mce_power.c powerpc/powernv/mce: Print additional information about MCE error. 2019-05-01 22:23:20 +10:00
misc.S powerpc/misc: merge reloc_offset() and add_reloc_offset() 2018-06-04 00:39:17 +10:00
misc_32.S powerpc/32: Remove CURRENT_THREAD_INFO and rename TI_CPU 2019-02-23 22:31:40 +11:00
misc_64.S powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
module.c powerpc64/module elfv1: Set opd addresses after module relocation 2018-10-20 13:26:47 +11:00
module.lds
module_32.c powerpc/sparse: Fix plain integer as NULL pointer warning 2018-05-25 12:04:38 +10:00
module_64.c powerpc/64/module: REL32 relocation range check 2018-10-20 13:26:47 +11:00
msi.c powerpc/msi: Fix NULL pointer access in teardown code 2018-11-29 23:49:11 +11:00
nvram_64.c powerpc: Adopt nvram module for PPC64 2019-01-22 10:21:45 +01:00
of_platform.c
optprobes.c
optprobes_head.S
paca.c powerpc/mm: Add helpers for accessing hash translation related variables 2019-04-21 23:12:38 +10:00
pci-common.c powerpc updates for 5.1 2019-03-07 12:56:26 -08:00
pci-hotplug.c
pci_32.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
pci_64.c powerpc: handover page flags with a pgprot_t parameter 2018-10-14 18:04:09 +11:00
pci_dn.c
pci_of_scan.c powerpc: Use device_type helpers to access the node type 2018-11-26 22:33:37 +11:00
pmc.c powerpc: change CONFIG_6xx to CONFIG_PPC_BOOK3S_32 2018-11-26 22:33:37 +11:00
ppc32.h
ppc_save_regs.S powerpc: move ASM_CONST and stringify_in_c() into asm-const.h 2018-07-30 22:48:16 +10:00
proc_powerpc.c
process.c powerpc/64: Don't trace code that runs with the soft irq mask unreconciled 2019-05-03 01:58:11 +10:00
prom.c powerpc: use memblock functions returning virtual address 2019-03-12 10:04:01 -07:00
prom_init.c powerpc/pseries: Fix xive=off command line 2019-06-02 19:39:36 +10:00
prom_init_check.sh powerpc/prom_init: don't use string functions from lib/ 2019-05-03 01:20:25 +10:00
prom_parse.c
ptrace.c powerpc: Add force enable of DAWR on P9 option 2019-04-20 22:20:45 +10:00
ptrace32.c
reloc_32.S
reloc_64.S
rtas-proc.c powerpc updates for 4.18 2018-06-07 10:23:33 -07:00
rtas-rtc.c powerpc: use time64_t in read_persistent_clock 2018-06-03 20:43:33 +10:00
rtas.c memblock: drop memblock_alloc_base() 2019-03-12 10:04:01 -07:00
rtas_flash.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
rtas_pci.c
rtasd.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
security.c powerpc updates for 5.2 2019-05-10 05:29:27 -07:00
setup-common.c powerpc/setup: replace ifdefs by IS_ENABLED() wherever possible. 2019-05-03 01:58:11 +10:00
setup.h powerpc/tau: Synchronize function prototypes and body 2018-05-25 12:04:43 +10:00
setup_32.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
setup_64.c powerpc updates for 5.2 2019-05-10 05:29:27 -07:00
signal.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
signal.h powerpc/syscalls: signal_{32, 64} - switch to SYSCALL_DEFINE 2018-05-10 23:25:13 +10:00
signal_32.c Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
signal_64.c powerpc/tm: Avoid machine crash on rt_sigreturn() 2019-05-01 23:03:29 +10:00
smp-tbsync.c
smp.c powerpc: 'current_set' is now a table of task_struct pointers 2019-02-23 22:31:40 +11:00
stacktrace.c powerpc: Remove export of save_stack_trace_tsk_reliable() 2019-03-02 14:43:05 +11:00
suspend.c
swsusp.c
swsusp_32.S powerpc: clean inclusions of asm/feature-fixups.h 2018-07-30 22:48:17 +10:00
swsusp_64.c
swsusp_asm64.S powerpc/64s/hash: Simplify slb_flush_and_rebolt() 2018-10-14 18:04:09 +11:00
swsusp_booke.S
sys_ppc32.c powerpc/syscalls: kill ppc32_select() 2018-05-10 23:25:15 +10:00
syscalls.c powerpc/64: Make sys_switch_endian() traceable 2019-02-22 00:10:15 +11:00
sysfs.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
systbl.S powerpc: remove nargs from __SYSCALL 2019-03-02 14:43:05 +11:00
systbl_chk.sh powerpc: Make it clearer that systbl check errors are errors 2018-05-10 23:25:16 +10:00
tau_6xx.c powerpc/tau: Make some function static 2018-05-25 12:04:44 +10:00
time.c powerpc/hmi: Fix kernel hang when TB is in error state. 2019-05-03 02:54:57 +10:00
tm.S Merge branch 'fixes' into next 2018-10-09 16:51:05 +11:00
traps.c panic: add an option to replay all the printk message in buffer 2019-05-18 15:52:26 -07:00
udbg.c powerpc: use a CONSOLE_LOGLEVEL_DEBUG macro 2019-01-14 20:39:27 +11:00
udbg_16550.c
uprobes.c
vdso.c powerpc/vdso: don't clear PG_reserved 2019-03-05 21:07:18 -08:00
vecemu.c powerpc: Add a missing include header 2018-05-25 12:04:46 +10:00
vector.S powerpc/64: Don't trace code that runs with the soft irq mask unreconciled 2019-05-03 01:58:11 +10:00
vmlinux.lds.S powerpc/kconfig: define CONFIG_DATA_SHIFT and CONFIG_ETEXT_SHIFT 2019-02-23 21:04:32 +11:00
watchdog.c powerpc/watchdog: Use hrtimers for per-CPU heartbeat 2019-04-30 11:31:02 +10:00