diff --git a/build.config.msm.common b/build.config.msm.common index b32abb51b8ad..4c58c8b02bc0 100644 --- a/build.config.msm.common +++ b/build.config.msm.common @@ -207,6 +207,18 @@ if [ ! -z $DTB_IMG_CREATE ] && [ ! $DTB_IMG_CREATE -eq "0" ]; then append_cmd DIST_CMDS 'make_dtb_img' fi +################################################################################ +## Cating all the DTBs and create a dtb.img for a virtual machine +function make_vm_dtb_img() { + mkdir -p ${DIST_DIR}/ + for i in "${!MKDTIMGDTBS[@]}"; do + mkdtboimg.py create ${DIST_DIR}/${i}-dtb.img --page_size=${PAGE_SIZE} ${DIST_DIR}/${MKDTIMGDTBS[$i]}*.dtb + done +} +if [ -n "$VM_DTB_IMG_CREATE" ] && [ ! "$VM_DTB_IMG_CREATE" -eq "0" ]; then + append_cmd DIST_CMDS 'make_vm_dtb_img' +fi + ################################################################################ ## Miscellaneous if [ -n "${EXTRA_CONFIGS}" ]; then diff --git a/build.config.msm.pineapple.tuivm b/build.config.msm.pineapple.tuivm new file mode 100644 index 000000000000..81c187010ad1 --- /dev/null +++ b/build.config.msm.pineapple.tuivm @@ -0,0 +1,9 @@ +################################################################################ +## Inheriting MSM configs +. ${KERNEL_DIR}/build.config.msm.pineapple.vm +################################################################################ + +MKDTIMGDTBS=() +MKDTIMGDTBS["pineapple_tuivm"]="pineapple-vm" + +################################################################################ diff --git a/build.config.msm.pineapple.vm b/build.config.msm.pineapple.vm new file mode 100644 index 000000000000..652aac9b7c4c --- /dev/null +++ b/build.config.msm.pineapple.vm @@ -0,0 +1,45 @@ +################################################################################ +## Inheriting configs from ACK +. ${ROOT_DIR}/common/build.config.common +. ${ROOT_DIR}/common/build.config.aarch64 + +################################################################################ +## Variant setup +MSM_ARCH=pineapple_tuivm +VARIANTS=(defconfig debug_defconfig) +[ -z "${VARIANT}" ] && VARIANT=debug_defconfig + +if [ -e "${ROOT_DIR}/msm-kernel" -a "${KERNEL_DIR}" = "common" ]; then + KERNEL_DIR="msm-kernel" +fi + +BOOT_IMAGE_HEADER_VERSION=3 +BASE_ADDRESS=0x80000000 +PAGE_SIZE=4096 +VM_DTB_IMG_CREATE=1 + +declare -A MKDTIMGDTBS + +################################################################################ +## Define TUI VM parameters +TUIVM_KERNEL_OFFSET=0x0 +TUIVM_DTB_OFFSET=0x2000000 +TUIVM_RAMDISK_OFFSET=0x2100000 + +MKDTIMGDTBS["pineapple_tuivm"]="pineapple-vm" + +################################################################################ +## Define OEM VM parameters +OEMVM_KERNEL_OFFSET=0x0 +OEMVM_DTB_OFFSET=0x2000000 +OEMVM_RAMDISK_OFFSET=0x2100000 + +MKDTIMGDTBS["pineapple_oemvm"]="pineapple-oemvm" + +VM_SIZE_EXT4=270000000 +DUMMY_IMG_SIZE=4096 + +################################################################################ +## Inheriting MSM configs +. ${KERNEL_DIR}/build.config.msm.common +. ${KERNEL_DIR}/build.config.msm.vm diff --git a/build.config.msm.vm b/build.config.msm.vm new file mode 100644 index 000000000000..5b1aa21077c8 --- /dev/null +++ b/build.config.msm.vm @@ -0,0 +1,49 @@ +################################################################################ +# Common configuration for building kernel for Virtual Machines +DEFCONFIG="generic_vm_defconfig" +OPENSSL_DIR=${KERNEL_DIR}/../build/build-tools/path/linux-x86/openssl + +append_cmd POST_DEFCONFIG_CMDS 'update_signing_keys_config' + +function update_signing_keys_config() { + if test -f "${OPENSSL_DIR}"; then + ${OPENSSL_DIR} req -new -nodes -utf8 -newkey rsa:1024 -days 36500 \ + -batch -x509 -config ${KERNEL_DIR}/certs/qcom_x509.genkey \ + -outform PEM -out ${OUT_DIR}/verity_cert.pem -keyout ${OUT_DIR}/verity_key.pem + + ${OPENSSL_DIR} req -new -nodes -utf8 -sha256 -days 36500 \ + -batch -x509 -config ${KERNEL_DIR}/certs/qcom_x509.genkey \ + -outform PEM -out ${OUT_DIR}/signing_key.pem -keyout ${OUT_DIR}/signing_key.pem + + ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \ + --set-str CONFIG_MODULE_SIG_KEY "${OUT_DIR}/signing_key.pem" \ + --set-str CONFIG_SYSTEM_TRUSTED_KEYS "${OUT_DIR}/verity_cert.pem" + + (cd ${OUT_DIR} && \ + make ${CC_LD_ARG} O=${OUT_DIR} ${MAKE_ARGS} olddefconfig) + fi +} + +append_cmd POST_KERNEL_BUILD_CMDS 'move_signing_keys' + +function move_signing_keys() { + cp ${OUT_DIR}/signing_key.pem ${OUT_DIR}/certs + cp ${OUT_DIR}/verity_key.pem ${OUT_DIR}/certs + cp ${OUT_DIR}/verity_cert.pem ${OUT_DIR}/certs +} + +function build_defconfig_fragments() { + if [[ "${VARIANT}" =~ ^(defconfig|debug_defconfig)$ ]]; then + apply_defconfig_fragment ${KERNEL_DIR}/arch/${ARCH}/configs/vendor/${MSM_ARCH}.config vendor/${MSM_ARCH}_defconfig + + if [ "${VARIANT}" = defconfig ]; then + return + fi + + apply_defconfig_fragment ${KERNEL_DIR}/arch/${ARCH}/configs/vendor/${MSM_ARCH}_debug.config vendor/${MSM_ARCH}-debug_defconfig + else + echo "Variant '${VARIANT}' unsupported by gki" + exit 1 + fi +} +build_defconfig_fragments