diff --git a/dpm_image.bzl b/dpm_image.bzl new file mode 100644 index 000000000000..f3a216d284c5 --- /dev/null +++ b/dpm_image.bzl @@ -0,0 +1,32 @@ +load("@//build/kernel/kleaf:hermetic_tools.bzl", "hermetic_genrule") + +def define_dpm_image(tv): + target = tv.split("_")[0] + hermetic_genrule( + name = "{}_dpm_image".format(tv), + srcs = [ + "//msm-kernel:{}_build_config".format(tv), + "//msm-kernel:{}/{}-dpm-overlay.dtbo".format(tv, target), + ], + outs = ["{}/dpm.img".format(tv)], + cmd = """ + # Stub out append_cmd + append_cmd() {{ + : + }} + + set +u + source "$(location //msm-kernel:{tv}_build_config)" + set -u + + $(location //prebuilts/kernel-build-tools:linux-x86/bin/mkdtboimg) \ + create "$@" --page_size="$$PAGE_SIZE" \ + "$(location //msm-kernel:{tv}/{target}-dpm-overlay.dtbo)" + """.format( + tv = tv, + target = target, + ), + tools = [ + "//prebuilts/kernel-build-tools:linux-x86/bin/mkdtboimg", + ], + ) diff --git a/msm_kernel_la.bzl b/msm_kernel_la.bzl index c03591da4606..2b67998c1dcb 100644 --- a/msm_kernel_la.bzl +++ b/msm_kernel_la.bzl @@ -28,6 +28,7 @@ load(":msm_common.bzl", "define_top_level_config", "gen_config_without_source_li load(":msm_dtc.bzl", "define_dtc_dist") load(":msm_abl.bzl", "define_abl_dist") load(":avb_boot_img.bzl", "avb_sign_boot_image") +load(":dpm_image.bzl", "define_dpm_image") load(":image_opts.bzl", "boot_image_opts") load(":target_variants.bzl", "la_variants") load(":modules.bzl", "COMMON_GKI_MODULES_LIST") @@ -195,7 +196,8 @@ def _define_image_build( dtbo_list = [], vendor_ramdisk_binaries = None, gki_ramdisk_prebuilt_binary = None, - in_tree_module_list = []): + in_tree_module_list = [], + dpm_overlay = False): """Creates a `kernel_images` target which will generate bootable device images Args: @@ -273,6 +275,9 @@ def _define_image_build( boot_partition_size = int(boot_image_opts.boot_partition_size), ) + if dpm_overlay: + define_dpm_image(target) + native.filegroup( name = "{}_system_dlkm_image_file".format(target), srcs = ["{}_images".format(base_kernel)], @@ -303,7 +308,8 @@ def _define_kernel_dist( variant, base_kernel, define_abi_targets, - boot_image_opts = boot_image_opts()): + boot_image_opts = boot_image_opts(), + dpm_overlay = False): """Creates distribution targets for kernel builds When Bazel builds everything, the outputs end up buried in `bazel-bin`. @@ -339,6 +345,9 @@ def _define_kernel_dist( msm_dist_targets.append("{}_avb_sign_boot_image".format(target)) + if dpm_overlay: + msm_dist_targets.append(":{}_dpm_image".format(target)) + board_cmdline_extras = " ".join(boot_image_opts.board_kernel_cmdline_extras) if board_cmdline_extras: msm_dist_targets.append("{}_extra_cmdline".format(target)) @@ -404,6 +413,7 @@ def define_msm_la( variant, in_tree_module_list, kmi_enforced = True, + dpm_overlay = False, boot_image_opts = boot_image_opts()): """Top-level kernel build definition macro for an MSM platform @@ -412,6 +422,7 @@ def define_msm_la( variant: variant of kernel to build (e.g. "gki") in_tree_module_list: list of in-tree modules kmi_enforced: boolean determining if the KMI contract should be enforced + dpm_overlay: boolean determining if a `dpm.img` should be generated boot_image_header_version: boot image header version (for `boot.img`) base_address: edk2 base address page_size: kernel page size @@ -475,6 +486,7 @@ def define_msm_la( boot_image_opts = boot_image_opts, boot_image_outs = None if dtb_list else ["boot.img", "init_boot.img"], in_tree_module_list = in_tree_module_list, + dpm_overlay = dpm_overlay, ) _define_kernel_dist( @@ -484,6 +496,7 @@ def define_msm_la( base_kernel, define_abi_targets, boot_image_opts = boot_image_opts, + dpm_overlay = dpm_overlay, ) _define_uapi_library(target) diff --git a/pineapple.bzl b/pineapple.bzl index 3705160c8db7..cb038c285bf6 100644 --- a/pineapple.bzl +++ b/pineapple.bzl @@ -316,4 +316,5 @@ def define_pineapple(): board_kernel_cmdline_extras = board_kernel_cmdline_extras, board_bootconfig_extras = board_bootconfig_extras, ), + dpm_overlay = True, )