diff --git a/build.config.msm.common b/build.config.msm.common index 4c58c8b02bc0..a53c846c8dbc 100644 --- a/build.config.msm.common +++ b/build.config.msm.common @@ -161,10 +161,23 @@ if [ -e "${KERNEL_DIR}/modules.blocklist.${CONFIG_TARGET}" ]; then VENDOR_DLKM_MODULES_BLOCKLIST="${KERNEL_DIR}/modules.blocklist.${CONFIG_TARGET}" fi +if [ "${BUILD_VENDOR_DLKM}" == "1" ]; then + COMBINED_MODULE_LIST=$(mktemp) +fi + +if [[ "${PREPARE_SYSTEM_DLKM}" == "1" && ! -z "${SYSTEM_DLKM_MODULES_LIST}" ]]; then + { + awk -F'/' '{print $NF}' ${SYSTEM_DLKM_MODULES_LIST} + [ -f "${MODULES_LIST}" ] && cat "${MODULES_LIST}" + } > ${COMBINED_MODULE_LIST} +fi + function prepare_vendor_dlkm() { if [ -z "${VENDOR_DLKM_MODULES_LIST}" ]; then local module_list_flag= - if [ -e "${MODULES_LIST}" ]; then + if [ -s "${COMBINED_MODULE_LIST}" ]; then + module_list_flag="-f ${COMBINED_MODULE_LIST}" + elif [ -e "${MODULES_LIST}" ]; then module_list_flag="-f ${MODULES_LIST}" else module_list_flag="-e ''" @@ -175,8 +188,10 @@ function prepare_vendor_dlkm() { VENDOR_DLKM_MODULES_LIST="${MODULES_STAGING_DIR}/vendor_dlkm.modules.load" fi - SUPER_IMAGE_CONTENTS+="${DIST_DIR}/vendor_dlkm.img" + SUPER_IMAGE_CONTENTS+=("${DIST_DIR}/vendor_dlkm.img") + rm ${COMBINED_MODULE_LIST} } + if [ "${BUILD_VENDOR_DLKM}" == "1" ]; then append_cmd DIST_CMDS 'prepare_vendor_dlkm' if [ -e "${KERNEL_DIR}/modules.vendor_blocklist.${CONFIG_TARGET}" ]; then @@ -184,6 +199,28 @@ if [ "${BUILD_VENDOR_DLKM}" == "1" ]; then fi fi +function prepare_system_dlkm() { + if [ "${PREPARE_SYSTEM_DLKM}" == "1" ]; then + if [ -e "${KERNEL_DIR}/modules.systemdlkm_blocklist.${CONFIG_TARGET}" ]; then + SYSTEM_DLKM_MODULES_BLOCKLIST="${KERNEL_DIR}/modules.systemdlkm_blocklist.${CONFIG_TARGET}" + cp $SYSTEM_DLKM_MODULES_BLOCKLIST ${DIST_DIR}/system_dlkm.modules.blocklist + + if [ "${APPEND_SYSTEM_DLKM_BLOCKLIST_TO_VENDOR_RAMDISK}" == "1" ]; then + (cd ${DIST_DIR} && find -name system_dlkm.modules.blocklist | cpio -H newc -o) > ${DIST_DIR}/system_dlkm_blocklist.cpio + if [ -n "${TARGET_HAS_SEPARATE_RD}" ]; then + ${RAMDISK_COMPRESS} "${DIST_DIR}/system_dlkm_blocklist.cpio" >"${DIST_DIR}/system_dlkm_blocklist.${RAMDISK_EXT}" + cat "${DIST_DIR}/system_dlkm_blocklist.${RAMDISK_EXT}" >>"${VENDOR_RAMDISK_BINARY}" + else + VENDOR_RAMDISK_BINARY+=" ${DIST_DIR}/system_dlkm_blocklist.cpio" + fi + fi + + fi + SUPER_IMAGE_CONTENTS+=("${DIST_DIR}/system_dlkm.img") + fi +} +append_cmd DIST_CMDS 'prepare_system_dlkm' + KERNEL_BINARY=Image ################################################################################ @@ -222,7 +259,7 @@ fi ################################################################################ ## Miscellaneous if [ -n "${EXTRA_CONFIGS}" ]; then - for extra_config in "${EXTRA_CONFIGS}" + for extra_config in "${EXTRA_CONFIGS[@]}" do . ${extra_config} done diff --git a/build.config.msm.gki b/build.config.msm.gki index c80d4c2606a3..061b89286df0 100644 --- a/build.config.msm.gki +++ b/build.config.msm.gki @@ -34,6 +34,7 @@ function sanity_check_abi() { # In that case, turn on some options for trimming and strict mode # which would normally be disabled because they conflict with # mixed build + PREPARE_SYSTEM_DLKM=0 if [ "${VARIANT}" = gki ]; then TRIM_NONLISTED_KMI=1 KMI_SYMBOL_LIST_STRICT_MODE=1 diff --git a/build.config.msm.kalama b/build.config.msm.kalama index 38d61d6038ce..356cb96322c9 100644 --- a/build.config.msm.kalama +++ b/build.config.msm.kalama @@ -14,6 +14,8 @@ BOOT_IMAGE_HEADER_VERSION=4 BASE_ADDRESS=0x80000000 PAGE_SIZE=4096 BUILD_VENDOR_DLKM=1 +PREPARE_SYSTEM_DLKM=1 +SYSTEM_DLKM_MODULES_LIST=${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules SUPER_IMAGE_SIZE=0x10000000 TRIM_UNUSED_MODULES=1 BUILD_INIT_BOOT_IMG=1 diff --git a/build.config.msm.pineapple b/build.config.msm.pineapple index 960b7f8b54b2..c0304ba0d4d5 100644 --- a/build.config.msm.pineapple +++ b/build.config.msm.pineapple @@ -14,6 +14,8 @@ BOOT_IMAGE_HEADER_VERSION=4 BASE_ADDRESS=0x80000000 PAGE_SIZE=4096 BUILD_VENDOR_DLKM=1 +PREPARE_SYSTEM_DLKM=1 +SYSTEM_DLKM_MODULES_LIST=${ROOT_DIR}/${KERNEL_DIR}/android/gki_system_dlkm_modules SUPER_IMAGE_SIZE=0x10000000 TRIM_UNUSED_MODULES=1 BUILD_INIT_BOOT_IMG=1 diff --git a/modules.systemdlkm_blocklist.msm.pineapple b/modules.systemdlkm_blocklist.msm.pineapple new file mode 100644 index 000000000000..85698d918b21 --- /dev/null +++ b/modules.systemdlkm_blocklist.msm.pineapple @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-only +# Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. +