diff --git a/init/first_stage_mount.cpp b/init/first_stage_mount.cpp index 55cce6eaa..927b45f22 100644 --- a/init/first_stage_mount.cpp +++ b/init/first_stage_mount.cpp @@ -305,6 +305,11 @@ bool FirstStageMountVBootV2::InitDevices() { return false; } } + + if (IsArcvm() && !block_dev_init_.InitHvcDevice("hvc1")) { + return false; + } + return true; } diff --git a/init/selinux.cpp b/init/selinux.cpp index c2d9b8d28..01af2b64d 100644 --- a/init/selinux.cpp +++ b/init/selinux.cpp @@ -474,6 +474,8 @@ void SelinuxRestoreContext() { RestoreconIfExists(SnapshotManager::GetGlobalRollbackIndicatorPath().c_str(), 0); RestoreconIfExists("/metadata/gsi", SELINUX_ANDROID_RESTORECON_RECURSE | SELINUX_ANDROID_RESTORECON_SKIP_SEHASH); + + RestoreconIfExists("/dev/hvc1", 0); } int SelinuxKlogCallback(int type, const char* fmt, ...) { diff --git a/init/util.h b/init/util.h index aa24123df..056539181 100644 --- a/init/util.h +++ b/init/util.h @@ -18,6 +18,7 @@ #include #include +#include #include #include @@ -108,6 +109,10 @@ inline constexpr bool IsMicrodroid() { #endif } +inline bool IsArcvm() { + return !access("/is_arcvm", F_OK); +} + bool Has32BitAbi(); std::string GetApexNameFromFileName(const std::string& path);