ramdump: Use RAMDUMP_TEXTOFFSET to integrate text modifications [1/1]
PD#SWPL-182182
PD#SWPL-190334
Problem:
TEXTOFFSET was changed from 0x00208000 to 0x02008000, causing some
devices to fail to start.
1. t5d Android U upgrade project, ko becomes build, uImage size
increases to 36MB. It is too big to relocate.
2. There is only 48MB in 0x020080000~0x5000000 area, and cannot
open kasan.
Solution:
1. use new config CONFIG_AMLOGIC_RAMDUMP_TEXTOFFSET instead of
CONFIG_AMLOGIC_RAMDUMP. And TEXTOFFSET is 0x00208000 default.
2. Use a new solution instead of modifying TEXT. Specifically,
during kernel panic, move 0-24MB to a higher address. Reboot to
uboot and then copy back.
Verify:
T5D
Change-Id: I1c9c086b89129893e5542676b54228e03b4e34c2
Signed-off-by: dongqing.li <dongqing.li@amlogic.com>
diff --git a/amlogic_utils.sh b/amlogic_utils.sh
index 7fc3ee1..6b6dcef 100644
--- a/amlogic_utils.sh
+++ b/amlogic_utils.sh
@@ -1313,7 +1313,7 @@
if [ "${ARCH}" = "arm64" ]; then
(cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) Image)
elif [ "${ARCH}" = "arm" ]; then
- (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x2008000 uImage)
+ (cd ${OUT_DIR} && make O=${OUT_DIR} ${TOOL_ARGS} "${MAKE_ARGS[@]}" -j$(nproc) LOADADDR=0x00208000 uImage)
fi
set +x
fi
@@ -1551,7 +1551,12 @@
function set_default_parameters () {
if [ "${ARCH}" = "arm" ]; then
- ARGS+=("LOADADDR=0x02008000")
+ CONFIGFILE=${ROOT_DIR}/${FRAGMENT_CONFIG}
+ if [[ -f "${CONFIGFILE}" && `grep "CONFIG_AMLOGIC_RAMDUMP_TEXTOFFSET=y" "${CONFIGFILE}"` ]]; then
+ ARGS+=("LOADADDR=0x02008000")
+ else
+ ARGS+=("LOADADDR=0x00208000")
+ fi
else
ARCH=arm64
fi
@@ -1872,7 +1877,14 @@
export MKBOOTIMG_STAGING_DIR="${MODULES_STAGING_DIR}/mkbootimg_staging"
export OUT_AMLOGIC_DIR=$(readlink -m ${COMMON_OUT_DIR}/amlogic)
- tool_args+=("LOADADDR=0x02008000")
+ CONFIGFILE=${ROOT_DIR}/${FRAGMENT_CONFIG}
+ echo "android 32bit config file: ${CONFIGFILE}"
+ if [[ -f "${CONFIGFILE}" && `grep "CONFIG_AMLOGIC_RAMDUMP_TEXTOFFSET=y" "${CONFIGFILE}"` ]]; then
+ # FRAGMENT_CONFIG: ./common_drivers/arch/arm/configs/amlogic_a32.fragment
+ tool_args+=("LOADADDR=0x02008000")
+ else
+ tool_args+=("LOADADDR=0x00208000")
+ fi
tool_args+=("DEPMOD=depmod")
tool_args+=("KCONFIG_EXT_MODULES_PREFIX=${KCONFIG_EXT_MODULES_PREFIX}")
tool_args+=("KCONFIG_EXT_PREFIX=${KCONFIG_EXT_PREFIX}")