summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/prom_init_check.sh
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-09-19 18:27:58 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2011-09-20 16:09:47 +1000
commit27f4488872d9ef2a4b9aa2be58fb0789d6c0ba84 (patch)
tree204a12bb5b61beda8df7b5eaa78499191cb28721 /arch/powerpc/kernel/prom_init_check.sh
parent344eb010b2e399069bac474a9fd0ba04908a2601 (diff)
downloadlinux-27f4488872d9ef2a4b9aa2be58fb0789d6c0ba84.tar.gz
linux-27f4488872d9ef2a4b9aa2be58fb0789d6c0ba84.tar.bz2
linux-27f4488872d9ef2a4b9aa2be58fb0789d6c0ba84.zip
powerpc/powernv: Add OPAL takeover from PowerVM
On machines supporting the OPAL firmware version 1, the system is initially booted under pHyp. We then use a special hypercall to verify if OPAL is available and if it is, we then trigger a "takeover" which disables pHyp and loads the OPAL runtime firmware, giving control to the kernel in hypervisor mode. This patch add the necessary code to detect that the OPAL takeover capability is present when running under PowerVM (aka pHyp) and perform said takeover to get hypervisor control of the processor. To perform the takeover, we must first use RTAS (within Open Firmware runtime environment) to start all processors & threads, in order to give control to OPAL on all of them. We then call the takeover hypercall on everybody, OPAL will re-enter the kernel main entry point passing it a flat device-tree. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/kernel/prom_init_check.sh')
-rw-r--r--arch/powerpc/kernel/prom_init_check.sh3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/prom_init_check.sh b/arch/powerpc/kernel/prom_init_check.sh
index 9f82f4937892..20af6aada517 100644
--- a/arch/powerpc/kernel/prom_init_check.sh
+++ b/arch/powerpc/kernel/prom_init_check.sh
@@ -20,7 +20,8 @@ WHITELIST="add_reloc_offset __bss_start __bss_stop copy_and_flush
_end enter_prom memcpy memset reloc_offset __secondary_hold
__secondary_hold_acknowledge __secondary_hold_spinloop __start
strcmp strcpy strlcpy strlen strncmp strstr logo_linux_clut224
-reloc_got2 kernstart_addr memstart_addr linux_banner"
+reloc_got2 kernstart_addr memstart_addr linux_banner _stext
+opal_query_takeover opal_do_takeover opal_enter_rtas opal_secondary_entry"
NM="$1"
OBJ="$2"