hikey960: enable Android Virtualization
so that it's convenient to play with the AVF features.
Tested with the android13-5.10 and android-mainline kernels,
and the 5.4 kernel does not work.
Test: booted with the android13-5.10 and android-mainline branch
"kvm [1] : Protected nVHE mode initialized successfully" in logcat
Change-Id: I16bd9df2c752c8b683a3a3c3b7a457378ba68531
Signed-off-by: Yongqin Liu <yongqin.liu@linaro.org>
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 += \