linux_dsm_epyc7002/arch/powerpc/kernel
Gautham R. Shenoy bd00a240dc powerpc/powernv: Fix restore of SPRs upon wake up from hypervisor state loss
pnv_wakeup_tb_loss() currently expects cr4 to be "eq" if the CPU is
waking up from a complete hypervisor state loss. Hence, it currently
restores the SPR contents only if cr4 is "eq".

However, after commit bcef83a00d ("powerpc/powernv: Add platform
support for stop instruction"), on ISA v3.0 CPUs, the function
pnv_restore_hyp_resource() sets cr4 to contain the result of the
comparison between the state the CPU has woken up from and the first
deep stop state before calling pnv_wakeup_tb_loss().

Thus if the CPU woke up from a state that is deeper than the first
deep stop state, cr4 will have "gt" set and hence, pnv_wakeup_tb_loss()
will fail to restore the SPRs on waking up from such a state.

Fix the code in pnv_wakeup_tb_loss() to restore the SPR states when cr4
is "eq" or "gt".

Fixes: bcef83a00d ("powerpc/powernv: Add platform support for stop instruction")
Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Reviewed-by: Shreyas B. Prabhu <shreyasbp@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2016-09-12 12:45:50 +10:00
..
vdso32 powerpc/vdso: Fix build rules to rebuild vdsos correctly 2016-08-10 23:04:12 +10:00
vdso64 powerpc/vdso: Fix build rules to rebuild vdsos correctly 2016-08-10 23:04:12 +10:00
.gitignore
align.c powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
asm-offsets.c powerpc/8xx: Force VIRT_IMMR_BASE to be a positive number 2016-07-09 03:26:53 -05:00
audit.c
btext.c powerpc/mm: Use a helper for finding pte bits mapping I/O area 2016-05-01 18:32:32 +10:00
cacheinfo.c
cacheinfo.h
compat_audit.c
cpu_setup_6xx.S powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
cpu_setup_44x.S
cpu_setup_fsl_booke.S powerpc/cache: add cache flush operation for various e500 2016-03-04 23:44:51 -06:00
cpu_setup_pa6t.S
cpu_setup_power.S powerpc/irq: Add support for HV virtualization interrupts 2016-07-17 16:42:44 +10:00
cpu_setup_ppc970.S
cputable.c powerpc: Add option to use jump label for mmu_has_feature() 2016-08-01 11:15:06 +10:00
crash_dump.c
crash.c powerpc/crash: Rearrange loop condition to avoid out of bounds array access 2016-07-14 20:26:22 +10:00
dbell.c
dma-iommu.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
dma-swiotlb.c powerpc/iommu: Support "hybrid" iommu/direct DMA ops for coherent_mask < dma_mask 2015-07-13 10:10:55 +10:00
dma.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
eeh_cache.c powerpc/eeh: Fix pr_debug()s in eeh_cache.c 2016-07-08 22:09:50 +10:00
eeh_dev.c powerpc/pci: Delay populating pdn 2016-06-21 15:30:56 +10:00
eeh_driver.c powerpc fixes for 4.7 #5 2016-07-15 14:57:47 +10:00
eeh_event.c powerpc: sparse: static-ify some things 2016-04-12 21:05:18 +10:00
eeh_pe.c powerpc/eeh: fix misleading indentation 2016-04-27 09:19:37 +10:00
eeh_sysfs.c
eeh.c powerpc/eeh: Switch to conventional PCI address output in EEH log 2016-08-09 16:52:03 +10:00
entry_32.S powerpc32: provide VIRT_CPU_ACCOUNTING 2016-07-09 01:43:50 -05:00
entry_64.S powerpc/tm: do not use r13 for tabort_syscall 2016-08-29 12:47:56 +10:00
epapr_hcalls.S
epapr_paravirt.c
exceptions-64e.S powerpc32: provide VIRT_CPU_ACCOUNTING 2016-07-09 01:43:50 -05:00
exceptions-64s.S powerpc/pseries: PACA save area fix for MCE vs MCE 2016-08-22 11:09:33 +10:00
fadump.c powerpc/fadump: Fix build error introduced by recent cleanup 2016-07-05 23:49:46 +10:00
firmware.c
fpu.S powerpc: Add the ability to save FPU without giving it up 2016-03-02 23:34:49 +11:00
fsl_booke_entry_mapping.S powerpc/fsl: Force coherent memory on e500mc derivatives 2015-08-07 23:00:01 -05:00
ftrace.c powerpc/ftrace: Separate the heuristics for checking call sites 2016-07-21 20:10:37 +10:00
head_8xx.S powerpc/8xx: add CONFIG_PIN_TLB_IMMR 2016-07-09 02:02:48 -05:00
head_32.S
head_40x.S
head_44x.S powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
head_64.S powerpc/64: Move the content of setup_system() to setup_arch() 2016-07-21 19:14:29 +10:00
head_booke.h
head_fsl_booke.S powerpc/cache: add cache flush operation for various e500 2016-03-04 23:44:51 -06:00
hw_breakpoint.c powerpc/hw_breakpoint: Fix oops when destroying hw_breakpoint event 2016-03-03 22:06:08 +11:00
ibmebus.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
idle_6xx.S
idle_book3e.S
idle_book3s.S powerpc/powernv: Fix restore of SPRs upon wake up from hypervisor state loss 2016-09-12 12:45:50 +10:00
idle_e500.S
idle_power4.S
idle.c
io-workarounds.c powerpc/mm: Differentiate between hugetlb and THP during page walk 2015-10-12 15:30:09 +11:00
io.c
iomap.c powerpc: add io{read,write}64 accessors 2016-05-31 16:41:52 +08:00
iommu.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
irq.c powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
isa-bridge.c powerpc/mm: Use a helper for finding pte bits mapping I/O area 2016-05-01 18:32:32 +10:00
jump_label.c jump_label: Rename JUMP_LABEL_{EN,DIS}ABLE to JUMP_LABEL_{JMP,NOP} 2015-08-03 11:34:12 +02:00
kgdb.c powerpc: Fix kgdb on little endian ppc64le 2016-02-18 00:03:26 +11:00
kprobes.c powerpc: migrate exception table users off module.h and onto extable.h 2016-08-22 11:09:33 +10:00
kvm_emul.S
kvm.c powerpc: Remove redundant breaks 2015-08-06 15:10:20 +10:00
l2cr_6xx.S
legacy_serial.c
machine_kexec_32.c
machine_kexec_64.c powerpc/mm: Move hash table ops to a separate structure 2016-07-21 18:59:09 +10:00
machine_kexec.c powerpc: Update of_remove_property() call sites to remove null checking 2016-05-11 21:54:04 +10:00
Makefile powerpc: move hmi.c to arch/powerpc/kvm/ 2016-08-22 11:09:33 +10:00
mce_power.c powerpc/mm/radix: Fix CONFIG_PPC_MMU_STD_64 typo 2016-05-11 21:53:59 +10:00
mce.c powerpc/book3s: Fix MCE console messages for unrecoverable MCE. 2016-08-09 19:46:54 +10:00
misc_32.S powerpc/32: Get rid of sub_reloc_offset() 2016-06-14 13:58:26 +10:00
misc_64.S powerpc/mm: Move hash table ops to a separate structure 2016-07-21 18:59:09 +10:00
misc.S
module_32.c powerpc/module: Only try to generate the ftrace_caller() stub once 2016-03-07 14:53:53 +11:00
module_64.c powerpc/modules: Never restore r2 for a mprofile-kernel style mcount() call 2016-07-21 20:10:42 +10:00
module.c powerpc/module: Only try to generate the ftrace_caller() stub once 2016-03-07 14:53:53 +11:00
msi.c
nvram_64.c pstore: add lzo/lz4 compression support 2016-06-02 10:59:31 -07:00
of_platform.c
paca.c powerpc/mm: Convert early cpu/mmu feature check to use the new helpers 2016-08-01 11:15:01 +10:00
pci_32.c
pci_64.c powerpc fixes for 4.7 #5 2016-07-15 14:57:47 +10:00
pci_dn.c powerpc/pci: Fix build with PCI_IOV=y and EEH=n 2016-07-07 16:33:27 +10:00
pci_of_scan.c PCI/MSI: Initialize MSI capability for all architectures 2015-11-24 17:45:18 -06:00
pci-common.c powerpc/pseries: use pci_host_bridge.release_fn() to kfree(phb) 2016-08-22 11:09:33 +10:00
pci-hotplug.c powerpc/pci: Don't scan empty slot 2016-05-11 21:54:26 +10:00
pmc.c
ppc32.h
ppc_ksyms_32.c powerpc32: Remove clear_pages() and define clear_page() inline 2016-03-11 17:20:11 -06:00
ppc_ksyms.c powerpc32: move xxxxx_dcache_range() functions inline 2016-03-11 17:20:12 -06:00
ppc_save_regs.S
proc_powerpc.c
process.c powerpc/ptrace: Fix coredump since ptrace TM changes 2016-08-10 16:34:20 +10:00
prom_init_check.sh
prom_init.c powerpc/prom: Fix sub-processor option passed to ibm, client-architecture-support 2016-08-22 11:09:33 +10:00
prom_parse.c
prom.c powerpc/mm: Make MMU_FTR_RADIX a MMU family feature 2016-08-01 11:14:57 +10:00
ptrace32.c
ptrace.c powerpc/ptrace: Fix coredump since ptrace TM changes 2016-08-10 16:34:20 +10:00
reloc_32.S
reloc_64.S
rtas_flash.c
rtas_pci.c
rtas-proc.c powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
rtas-rtc.c
rtas.c powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
rtasd.c powerpc/pseries: start rtasd before PCI probing 2016-07-08 19:22:15 +10:00
setup_32.c powerpc/32: Fix crash during static key init 2016-08-10 19:41:58 +10:00
setup_64.c powerpc/32: Fix crash during static key init 2016-08-10 19:41:58 +10:00
setup-common.c powerpc: Move cpu_has_feature() to a separate file 2016-08-01 11:15:03 +10:00
setup.h powerpc: Merge 32-bit and 64-bit setup_arch() 2016-07-21 19:17:46 +10:00
signal_32.c powerpc: signals: Discard transaction state from signal frames 2016-08-29 12:48:40 +10:00
signal_64.c powerpc: signals: Discard transaction state from signal frames 2016-08-29 12:48:40 +10:00
signal.c powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
signal.h powerpc: Fix misspellings in comments. 2016-03-01 19:27:20 +11:00
smp-tbsync.c
smp.c powerpc, hotplug: Avoid to touch non-existent cpumasks. 2016-08-22 11:09:33 +10:00
stacktrace.c powerpc: Implement save_stack_trace_regs() to enable kprobe stack tracing 2016-01-11 14:27:28 +11:00
suspend.c
swsusp_32.S
swsusp_64.c
swsusp_asm64.S
swsusp_booke.S
swsusp.c powerpc/mm: Abstraction for switch_mmu_context() 2016-05-01 18:33:04 +10:00
sys_ppc32.c
syscalls.c
sysfs.c powerpc/sparse: make some things static 2016-06-16 22:23:11 +10:00
systbl_chk.c powerpc: Standardise on NR_syscalls rather than __NR_syscalls. 2015-11-26 22:11:17 +11:00
systbl_chk.sh powerpc: Standardise on NR_syscalls rather than __NR_syscalls. 2015-11-26 22:11:17 +11:00
systbl.S
tau_6xx.c
time.c RTC for 4.8 2016-08-05 09:48:22 -04:00
tm.S powerpc/tm: Fix stack pointer corruption in __tm_recheckpoint() 2016-07-15 15:00:18 +10:00
trace_clock.c powerpc/ftrace: add powerpc timebase as a trace clock source 2015-08-06 16:36:23 +10:00
traps.c powerpc: migrate exception table users off module.h and onto extable.h 2016-08-22 11:09:33 +10:00
udbg_16550.c
udbg.c
uprobes.c
vdso.c powerpc/vdso: Add missing include file 2016-08-09 16:52:00 +10:00
vecemu.c
vector.S powerpc: Improve comment explaining why we modify VRSAVE 2016-07-26 14:16:19 +10:00
vio.c dma-mapping: use unsigned long for dma_attrs 2016-08-04 08:50:07 -04:00
vmlinux.lds.S powerpc/32: Remove RELOCATABLE_PPC32 2016-07-19 20:17:07 +10:00