mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
e2500be2b8
In commit27f4488872
"Add OPAL takeover from PowerVM" we added support for "takeover" on OPAL v1 machines. This was a mode of operation where we would boot under pHyp, and query for the presence of OPAL. If detected we would then do a special sequence to take over the machine, and the kernel would end up running in hypervisor mode. OPAL v1 was never a supported product, and was never shipped outside IBM. As far as we know no one is still using it. Newer versions of OPAL do not use the takeover mechanism. Although the query for OPAL should be harmless on machines with newer OPAL, we have seen a machine where it causes a crash in Open Firmware. The code in early_init_devtree() to copy boot_command_line into cmd_line was added in commit817c21ad9a
"Get kernel command line accross OPAL takeover", and AFAIK is only used by takeover, so should also be removed. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
80 lines
2.0 KiB
Bash
80 lines
2.0 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright © 2008 IBM Corporation
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version
|
|
# 2 of the License, or (at your option) any later version.
|
|
|
|
# This script checks prom_init.o to see what external symbols it
|
|
# is using, if it finds symbols not in the whitelist it returns
|
|
# an error. The point of this is to discourage people from
|
|
# intentionally or accidentally adding new code to prom_init.c
|
|
# which has side effects on other parts of the kernel.
|
|
|
|
# If you really need to reference something from prom_init.o add
|
|
# it to the list below:
|
|
|
|
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 _stext
|
|
__prom_init_toc_start __prom_init_toc_end btext_setup_display TOC."
|
|
|
|
NM="$1"
|
|
OBJ="$2"
|
|
|
|
ERROR=0
|
|
|
|
for UNDEF in $($NM -u $OBJ | awk '{print $2}')
|
|
do
|
|
# On 64-bit nm gives us the function descriptors, which have
|
|
# a leading . on the name, so strip it off here.
|
|
UNDEF="${UNDEF#.}"
|
|
|
|
if [ $KBUILD_VERBOSE ]; then
|
|
if [ $KBUILD_VERBOSE -ne 0 ]; then
|
|
echo "Checking prom_init.o symbol '$UNDEF'"
|
|
fi
|
|
fi
|
|
|
|
OK=0
|
|
for WHITE in $WHITELIST
|
|
do
|
|
if [ "$UNDEF" = "$WHITE" ]; then
|
|
OK=1
|
|
break
|
|
fi
|
|
done
|
|
|
|
# ignore register save/restore funcitons
|
|
if [ "${UNDEF:0:9}" = "_restgpr_" ]; then
|
|
OK=1
|
|
fi
|
|
if [ "${UNDEF:0:10}" = "_restgpr0_" ]; then
|
|
OK=1
|
|
fi
|
|
if [ "${UNDEF:0:11}" = "_rest32gpr_" ]; then
|
|
OK=1
|
|
fi
|
|
if [ "${UNDEF:0:9}" = "_savegpr_" ]; then
|
|
OK=1
|
|
fi
|
|
if [ "${UNDEF:0:10}" = "_savegpr0_" ]; then
|
|
OK=1
|
|
fi
|
|
if [ "${UNDEF:0:11}" = "_save32gpr_" ]; then
|
|
OK=1
|
|
fi
|
|
|
|
if [ $OK -eq 0 ]; then
|
|
ERROR=1
|
|
echo "Error: External symbol '$UNDEF' referenced" \
|
|
"from prom_init.c" >&2
|
|
fi
|
|
done
|
|
|
|
exit $ERROR
|