From 71b7f7fbd0aa95d0f026bdee8a061ae5a8c34055 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Thu, 21 Feb 2019 11:36:37 +0000 Subject: [PATCH] Add support for *_CPU_VARIANT_RUNTIME flags Specified in the BoardConfig, and default to the value of the non _RUNTIME variants. These flags do not modify build-time compilation, but get written to system properties on /vendor and can be inspected at runtime to run/compile code for the specified cpu. Migrate the bionic and ART cpu variant flags to use the new variables, but leave the ART preopting using the non-_RUNTIME variants. Bug: 120773446 Test: boot downstream device specifying CPU_VARIANT_RUNTIME flags Test: grep dalvik.vm vendor/default.prop Change-Id: Idc81110172582f38f84cca87f2eff140c5b5f9ac --- core/Makefile | 8 ++++---- core/config.mk | 14 ++++++++++++++ core/product.mk | 2 ++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/core/Makefile b/core/Makefile index 7327244f71..cfa042c0e1 100644 --- a/core/Makefile +++ b/core/Makefile @@ -183,18 +183,18 @@ FINAL_VENDOR_DEFAULT_PROPERTIES += \ # Add cpu properties for bionic and ART. FINAL_VENDOR_DEFAULT_PROPERTIES += ro.bionic.arch=$(TARGET_ARCH) -FINAL_VENDOR_DEFAULT_PROPERTIES += ro.bionic.cpu_variant=$(TARGET_CPU_VARIANT) +FINAL_VENDOR_DEFAULT_PROPERTIES += ro.bionic.cpu_variant=$(TARGET_CPU_VARIANT_RUNTIME) FINAL_VENDOR_DEFAULT_PROPERTIES += ro.bionic.2nd_arch=$(TARGET_2ND_ARCH) -FINAL_VENDOR_DEFAULT_PROPERTIES += ro.bionic.2nd_cpu_variant=$(TARGET_2ND_CPU_VARIANT) +FINAL_VENDOR_DEFAULT_PROPERTIES += ro.bionic.2nd_cpu_variant=$(TARGET_2ND_CPU_VARIANT_RUNTIME) FINAL_VENDOR_DEFAULT_PROPERTIES += persist.sys.dalvik.vm.lib.2=libart.so -FINAL_VENDOR_DEFAULT_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).variant=$(DEX2OAT_TARGET_CPU_VARIANT) +FINAL_VENDOR_DEFAULT_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).variant=$(DEX2OAT_TARGET_CPU_VARIANT_RUNTIME) ifneq ($(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES),) FINAL_VENDOR_DEFAULT_PROPERTIES += dalvik.vm.isa.$(TARGET_ARCH).features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) endif ifdef TARGET_2ND_ARCH - FINAL_VENDOR_DEFAULT_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).variant=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT) + FINAL_VENDOR_DEFAULT_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).variant=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT_RUNTIME) ifneq ($($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES),) FINAL_VENDOR_DEFAULT_PROPERTIES += dalvik.vm.isa.$(TARGET_2ND_ARCH).features=$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) endif diff --git a/core/config.mk b/core/config.mk index 518e138db7..5f08f2f947 100644 --- a/core/config.mk +++ b/core/config.mk @@ -298,12 +298,24 @@ TARGET_PRODUCT_KERNEL_HEADERS := $(patsubst %/,%,$(TARGET_PRODUCT_KERNEL_HEADERS $(call validate-kernel-headers,$(TARGET_PRODUCT_KERNEL_HEADERS)) # Clean up/verify variables defined by the board config file. +# TODO: Move this to right after the BoardConfig parsing. TARGET_BOOTLOADER_BOARD_NAME := $(strip $(TARGET_BOOTLOADER_BOARD_NAME)) TARGET_CPU_ABI := $(strip $(TARGET_CPU_ABI)) ifeq ($(TARGET_CPU_ABI),) $(error No TARGET_CPU_ABI defined by board config: $(board_config_mk)) endif TARGET_CPU_ABI2 := $(strip $(TARGET_CPU_ABI2)) +TARGET_CPU_VARIANT := $(strip $(TARGET_CPU_VARIANT)) +TARGET_CPU_VARIANT_RUNTIME := $(strip $(TARGET_CPU_VARIANT_RUNTIME)) + +TARGET_2ND_CPU_ABI := $(strip $(TARGET_2ND_CPU_ABI)) +TARGET_2ND_CPU_ABI2 := $(strip $(TARGET_2ND_CPU_ABI2)) +TARGET_2ND_CPU_VARIANT := $(strip $(TARGET_2ND_CPU_VARIANT)) +TARGET_2ND_CPU_VARIANT_RUNTIME := $(strip $(TARGET_2ND_CPU_VARIANT_RUNTIME)) + +# Default *_CPU_VARIANT_RUNTIME to CPU_VARIANT if unspecified. +TARGET_CPU_VARIANT_RUNTIME := $(or $(TARGET_CPU_VARIANT_RUNTIME),$(TARGET_CPU_VARIANT)) +TARGET_2ND_CPU_VARIANT_RUNTIME := $(or $(TARGET_2ND_CPU_VARIANT_RUNTIME),$(TARGET_2ND_CPU_VARIANT)) BOARD_KERNEL_BASE := $(strip $(BOARD_KERNEL_BASE)) BOARD_KERNEL_PAGESIZE := $(strip $(BOARD_KERNEL_PAGESIZE)) @@ -1135,11 +1147,13 @@ endif first_non_empty_of_three = $(if $(1),$(1),$(if $(2),$(2),$(3))) DEX2OAT_TARGET_ARCH := $(TARGET_ARCH) DEX2OAT_TARGET_CPU_VARIANT := $(call first_non_empty_of_three,$(TARGET_CPU_VARIANT),$(TARGET_ARCH_VARIANT),default) +DEX2OAT_TARGET_CPU_VARIANT_RUNTIME := $(call first_non_empty_of_three,$(TARGET_CPU_VARIANT_RUNTIME),$(TARGET_ARCH_VARIANT),default) DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := default ifdef TARGET_2ND_ARCH $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH := $(TARGET_2ND_ARCH) $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT := $(call first_non_empty_of_three,$(TARGET_2ND_CPU_VARIANT),$(TARGET_2ND_ARCH_VARIANT),default) +$(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT_RUNTIME := $(call first_non_empty_of_three,$(TARGET_2ND_CPU_VARIANT_RUNTIME),$(TARGET_2ND_ARCH_VARIANT),default) $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := default endif diff --git a/core/product.mk b/core/product.mk index 8a539829f5..efe029bc14 100644 --- a/core/product.mk +++ b/core/product.mk @@ -375,11 +375,13 @@ _product_stash_var_list := $(_product_var_list) \ TARGET_CPU_ABI \ TARGET_CPU_ABI2 \ TARGET_CPU_VARIANT \ + TARGET_CPU_VARIANT_RUNTIME \ TARGET_2ND_ARCH \ TARGET_2ND_ARCH_VARIANT \ TARGET_2ND_CPU_ABI \ TARGET_2ND_CPU_ABI2 \ TARGET_2ND_CPU_VARIANT \ + TARGET_2ND_CPU_VARIANT_RUNTIME \ TARGET_BOARD_PLATFORM \ TARGET_BOARD_PLATFORM_GPU \ TARGET_BOARD_KERNEL_HEADERS \