linux/arch/powerpc
Shreyas B. Prabhu 1706567117 powerpc/kvm: make hypervisor state restore a function
In the current code, when the thread wakes up in reset vector, some
of the state restore code and check for whether a thread needs to
branch to kvm is duplicated. Reorder the code such that this
duplication is avoided.

At a higher level this is what the change looks like-

Before this patch -
power7_wakeup_tb_loss:
	restore hypervisor state
	if (thread needed by kvm)
		goto kvm_start_guest
	restore nvgprs, cr, pc
	rfid to process context

power7_wakeup_loss:
	restore nvgprs, cr, pc
	rfid to process context

reset vector:
	if (waking from deep idle states)
		goto power7_wakeup_tb_loss
	else
		if (thread needed by kvm)
			goto kvm_start_guest
		goto power7_wakeup_loss

After this patch -
power7_wakeup_tb_loss:
	restore hypervisor state
	return

power7_restore_hyp_resource():
	if (waking from deep idle states)
		goto power7_wakeup_tb_loss
	return

power7_wakeup_loss:
	restore nvgprs, cr, pc
	rfid to process context

reset vector:
	power7_restore_hyp_resource()
	if (thread needed by kvm)
                goto kvm_start_guest
	goto power7_wakeup_loss

Reviewed-by: Paul Mackerras <paulus@samba.org>
Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: Shreyas B. Prabhu <shreyas@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2016-07-15 20:18:38 +10:00
..
boot powerpc/boot: Add OPAL console to epapr wrappers 2016-07-05 23:58:54 +10:00
configs powerpc/pseries: Auto-online hotplugged memory 2016-07-15 20:18:37 +10:00
crypto powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
include powerpc fixes for 4.7 #5 2016-07-15 14:57:47 +10:00
kernel powerpc/kvm: make hypervisor state restore a function 2016-07-15 20:18:38 +10:00
kvm powerpc/kvm: Clarify __user annotations 2016-07-14 20:43:50 +10:00
lib powerpc/lib: Clarify that adde is an instruction and we mean plural 2016-07-15 20:18:37 +10:00
math-emu
mm powerpc fixes for 4.7 #5 2016-07-15 14:57:47 +10:00
net powerpc/ebpf/jit: Implement JIT compiler for extended BPF 2016-06-24 15:17:57 +10:00
oprofile powerpc: Various typo fixes 2016-06-14 13:58:26 +10:00
perf powerpc/perf: Export Power9 generic and cache events to sysfs 2016-07-05 23:49:48 +10:00
platforms powerpc/pseries: Remove call to memblock_add() 2016-07-15 20:18:37 +10:00
scripts powerpc/ftrace: Add Kconfig & Make glue for mprofile-kernel 2016-03-07 14:53:56 +11:00
sysdev powerpc: Make ppc_md.{halt, restart} __noreturn 2016-07-14 21:12:06 +10:00
xmon powerpc/xmon: Dump ISA 2.07 SPRs 2016-07-14 20:26:24 +10:00
Kconfig powerpc/ebpf/jit: Implement JIT compiler for extended BPF 2016-06-24 15:17:57 +10:00
Kconfig.debug powerpc/pseries: HVC early debug options should depend on HVC_CONSOLE 2016-07-15 15:02:26 +10:00
Makefile powerpc/sparse: Pass endianness to sparse 2016-07-14 20:44:03 +10:00
relocs_check.sh powerpc: Convert relocs_check to a shell script using grep 2015-03-23 14:47:39 +11:00