From 46aff099d2e8587f94dfa0de1eb47a75a9067b60 Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Wed, 28 Oct 2020 13:50:47 -0700 Subject: [PATCH] Do not assume GKI just with vendor_boot. This change ensures changes to GENERIC_KERNEL_CMDLINE only affects devices that explicitly says it uses GKI/generic boot image. In details, if the device has vendor_boot, but does not explicitly specify that it uses GKI/generic boot image, do not include GENERIC_KERNEL_CMDLINE in boot. boot cmdline is left empty in this case. The old logic: - If device uses GKI *OR* has vendor_boot: boot uses GENERIC_KERNEL_CMDLINE, and do not include kernel base and pagesize. - If device has vendor_boot, INTERNAL_KERNEL_CMDLINE, kernel base and pagesize goes in vendor_boot. - If device does not use GKI nor have vendor_boot: boot uses INTERNAL_KERNEL_CMDLINE, and includes kernel base and pagesize. The new logic: - If using GKI, boot uses GENERIC_KERNEL_CMDLINE. Remove kernel base and pagesize because they are device-specific. - If not using GKI: - If building vendor_boot, INTERNAL_KERNEL_CMDLINE, base and pagesize goes in vendor_boot; boot does not have cmdline, base or pagesize. - Otherwise, put them in boot Comparison of the code before and after: - If device uses GKI, - For boot partition: - cmdline continues to be GENERIC_KERNEL_CMDLINE - kernel base and pagesize continues to be excluded - For vendor_boot partition: - cmdline continues to be INTERNAL_KERNEL_CMDLINE - kernel base and pagesize continues to be included - If device does not use GKI: - If device has a vendor_boot partition: - For boot partition: * cmdline changes from GENERIC_KERNEL_CMDLINE to empty - kernel base and pagesize continues to be excluded - For vendor_boot partition: - cmdline continues to be INTERNAL_KERNEL_CMDLINE - kernel base and pagesize continues to be included - If device does not have a vendor_boot partition: - For boot partition: - cmdline continues to be INTERNAL_KERNEL_CMDLINE - kernel base and pagesize continues to be included Test: builds Bug: 171512004 Change-Id: I4feac435698f43ac299b430bff66147057865a62 --- core/Makefile | 45 ++++++++++++++++++++------------------------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/core/Makefile b/core/Makefile index 8ca00ed826..83328bb5b0 100644 --- a/core/Makefile +++ b/core/Makefile @@ -754,30 +754,27 @@ endif INTERNAL_KERNEL_CMDLINE := $(strip $(INTERNAL_KERNEL_CMDLINE) buildvariant=$(TARGET_BUILD_VARIANT) $(VERITY_KEYID)) -boot_uses_generic_kernel_image := -ifdef BUILDING_VENDOR_BOOT_IMAGE - # building vendor boot image, dtb/base/pagesize go there - boot_uses_generic_kernel_image := true -else ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) - boot_uses_generic_kernel_image := true -endif - -ifeq (true,$(boot_uses_generic_kernel_image)) +# kernel cmdline/base/pagesize in boot. +# - If using GKI, use GENERIC_KERNEL_CMDLINE. Remove kernel base and pagesize because they are +# device-specific. +# - If not using GKI: +# - If building vendor_boot, INTERNAL_KERNEL_CMDLINE, base and pagesize goes in vendor_boot. +# - Otherwise, put them in boot. +ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) ifdef GENERIC_KERNEL_CMDLINE INTERNAL_BOOTIMAGE_ARGS += --cmdline "$(GENERIC_KERNEL_CMDLINE)" endif -else # boot_uses_generic_kernel_image != true -ifdef BOARD_KERNEL_BASE - INTERNAL_BOOTIMAGE_ARGS += --base $(BOARD_KERNEL_BASE) -endif -ifdef BOARD_KERNEL_PAGESIZE - INTERNAL_BOOTIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE) -endif -ifdef INTERNAL_KERNEL_CMDLINE - INTERNAL_BOOTIMAGE_ARGS += --cmdline "$(INTERNAL_KERNEL_CMDLINE)" -endif -endif # boot_uses_generic_kernel_image == true -boot_uses_generic_kernel_image := +else ifndef BUILDING_VENDOR_BOOT_IMAGE # && BOARD_USES_GENERIC_KERNEL_IMAGE != true + ifdef INTERNAL_KERNEL_CMDLINE + INTERNAL_BOOTIMAGE_ARGS += --cmdline "$(INTERNAL_KERNEL_CMDLINE)" + endif + ifdef BOARD_KERNEL_BASE + INTERNAL_BOOTIMAGE_ARGS += --base $(BOARD_KERNEL_BASE) + endif + ifdef BOARD_KERNEL_PAGESIZE + INTERNAL_BOOTIMAGE_ARGS += --pagesize $(BOARD_KERNEL_PAGESIZE) + endif +endif # BUILDING_VENDOR_BOOT_IMAGE == "" && BOARD_USES_GENERIC_KERNEL_IMAGE != true INTERNAL_MKBOOTIMG_VERSION_ARGS := \ --os_version $(PLATFORM_VERSION_LAST_STABLE) \ @@ -4541,11 +4538,9 @@ endif ifdef INSTALLED_KERNEL_TARGET $(hide) cp $(INSTALLED_KERNEL_TARGET) $(zip_root)/BOOT/ endif -ifdef INSTALLED_VENDOR_BOOTIMAGE_TARGET +ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) echo "$(GENERIC_KERNEL_CMDLINE)" > $(zip_root)/BOOT/cmdline -else ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) - echo "$(GENERIC_KERNEL_CMDLINE)" > $(zip_root)/BOOT/cmdline -else # INSTALLED_VENDOR_BOOTIMAGE_TARGET == "" && BOARD_USES_GENERIC_KERNEL_IMAGE != true +else ifndef INSTALLED_VENDOR_BOOTIMAGE_TARGET # && BOARD_USES_GENERIC_KERNEL_IMAGE != true echo "$(INTERNAL_KERNEL_CMDLINE)" > $(zip_root)/BOOT/cmdline ifdef INSTALLED_2NDBOOTLOADER_TARGET cp $(INSTALLED_2NDBOOTLOADER_TARGET) $(zip_root)/BOOT/second