hikey960: enable Android Virtualization am: 8c352a4c5c am: 28d58e37f5
Original change: https://android-review.googlesource.com/c/device/linaro/hikey/+/2373270
Change-Id: I06e387c2ddf2b532942b57e0136946e1752b4a90
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/hikey960.mk b/hikey960.mk
index 7a35a22..1888158 100644
--- a/hikey960.mk
+++ b/hikey960.mk
@@ -18,6 +18,29 @@
endif
endif
+# only kernels after 5.10 support KVM
+ifndef HIKEY960_ENABLE_AVF
+ ifeq ($(TARGET_KERNEL_USE), mainline)
+ HIKEY960_ENABLE_AVF := true
+ else
+ KERNEL_MAJ := $(word 1, $(subst ., ,$(TARGET_KERNEL_USE)))
+ KERNEL_MIN := $(word 2, $(subst ., ,$(TARGET_KERNEL_USE)))
+ KER_GT_5 := $(shell [ $(KERNEL_MAJ) -gt 5 ] && echo true)
+ KER_GE_5_10 := $(shell [ $(KERNEL_MIN) -ge 10 ] && echo true)
+
+ ifeq ($(KER_GT_5), true)
+ HIKEY960_ENABLE_AVF := true
+ else
+ ifeq ($(KERNEL_MAJ), 5)
+ # for kernel after 5.10
+ ifeq ($(KER_GE_5_10),true)
+ HIKEY960_ENABLE_AVF := true
+ endif
+ endif # end for 5.10
+ endif # end for 5.X
+ endif # end for mainline
+endif # end for HIKEY960_ENABLE_AVF
+
include $(LOCAL_PATH)/vendor-package-ver.mk
# Inherit the common device configuration
diff --git a/hikey960/BoardConfig.mk b/hikey960/BoardConfig.mk
index f7deb4c..71a6273 100644
--- a/hikey960/BoardConfig.mk
+++ b/hikey960/BoardConfig.mk
@@ -12,6 +12,18 @@
BOARD_KERNEL_CMDLINE += androidboot.boot_devices=soc/ff3b0000.ufs
BOARD_KERNEL_CMDLINE += loglevel=15 androidboot.slot_suffix=_a
+ifeq ($(HIKEY960_ENABLE_AVF), true)
+# The GKI kernel set protected mode by default via gki_defconfig,
+# but hikey960 does not support the protected kvm mode, here overwriting
+# to make it possible to play with AVF in the non-protected mode.
+BOARD_KERNEL_CMDLINE += kvm-arm.mode=nvhe
+# hypervisor.version would be better to be the same as CROSVM_PLATFORM_VERSION in
+# packages/modules/Virtualization/virtualizationmanager/src/crosvm.rs
+BOARD_KERNEL_CMDLINE += androidboot.hypervisor.version=1.0.0
+BOARD_KERNEL_CMDLINE += androidboot.hypervisor.vm.supported=1
+BOARD_KERNEL_CMDLINE += androidboot.hypervisor.protected_vm.supported=0
+endif
+
ifeq ($(TARGET_BUILTIN_EDID), true)
BOARD_KERNEL_CMDLINE += drm_kms_helper.edid_firmware=edid/1920x1080.bin
endif
diff --git a/hikey960/device-hikey960.mk b/hikey960/device-hikey960.mk
index d311865..7d17880 100644
--- a/hikey960/device-hikey960.mk
+++ b/hikey960/device-hikey960.mk
@@ -14,6 +14,13 @@
# limitations under the License.
#
+ifeq ($(HIKEY960_ENABLE_AVF), true)
+# Based on the instructions in the following link:
+# https://android.googlesource.com/platform/packages/modules/Virtualization/+/refs/heads/master/microdroid/README.md
+# Tested with the android13-5.10 and android-mainline kernels.
+$(call inherit-product, packages/modules/Virtualization/apex/product_packages.mk)
+endif
+
# Enable Virtual A/B
AB_OTA_UPDATER := true
AB_OTA_PARTITIONS += \