Enable pkvm based on the relevant sysprop rather than /dev/kvm am: 4ff69cacdf am: 34a69be411
Original change: https://android-review.googlesource.com/c/device/google/gs101/+/3128013
Change-Id: Ic587fc28c22bbe105ba3f6118f0b45a128f3335c
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/pkvm/pkvm_enabler.c b/pkvm/pkvm_enabler.c
index cb14ba6..b927318 100644
--- a/pkvm/pkvm_enabler.c
+++ b/pkvm/pkvm_enabler.c
@@ -24,7 +24,6 @@
#include <log/log.h>
-#define KVM_DEVICE "/dev/kvm"
#define MISC_WRITER "/vendor/bin/misc_writer"
int main() {
@@ -33,22 +32,7 @@
pid_t pid;
int ret, wstatus;
- /* Check whether KVM device exists. */
- ret = access(KVM_DEVICE, F_OK);
-
- /* If KVM device exists, return SUCCESS to continue booting. */
- if (ret == 0) {
- exit(EXIT_SUCCESS);
- }
-
- if (ret != -ENOENT) {
- ALOGW("Unexpected error from access(): %d", ret);
- }
-
- /*
- * If KVM device does not exist, run misc_writer and return FAILURE
- * to force a reboot.
- */
+ /* Run misc_writer and return FAILURE to force a reboot. */
pid = fork();
if (pid == -1) {
ALOGE("Could not fork: %d", errno);
diff --git a/pkvm/pkvm_enabler.gs101.rc b/pkvm/pkvm_enabler.gs101.rc
index 6695d3a..4e64d4b 100644
--- a/pkvm/pkvm_enabler.gs101.rc
+++ b/pkvm/pkvm_enabler.gs101.rc
@@ -2,5 +2,10 @@
reboot_on_failure reboot,pkvm-not-enabled
user root
-on early-init
+# Old bootloaders do not set the protected_vm sysprop when pkvm is disabled
+on early-init && property:ro.boot.hypervisor.protected_vm.supported=
+ exec_start pkvm_enabler
+
+# New bootloaders set the protected_vm sysprop to 0 when pkvm is disabled
+on early-init && property:ro.boot.hypervisor.protected_vm.supported=0
exec_start pkvm_enabler