Merge "Refactor vm_config.json parsing routine" into main
diff --git a/android/virtmgr/src/crosvm.rs b/android/virtmgr/src/crosvm.rs
index 4d19670..f9fbd16 100644
--- a/android/virtmgr/src/crosvm.rs
+++ b/android/virtmgr/src/crosvm.rs
@@ -369,6 +369,7 @@
/// Callbacks to clients of the VM.
pub callbacks: VirtualMachineCallbacks,
/// VirtualMachineService binder object for the VM.
+ #[allow(dead_code)]
pub vm_service: Mutex<Option<Strong<dyn IVirtualMachineService>>>,
/// Recorded metrics of VM such as timestamp or cpu / memory usage.
pub vm_metric: Mutex<VmMetric>,
diff --git a/build/microdroid/Android.bp b/build/microdroid/Android.bp
index 289bc82..27d0246 100644
--- a/build/microdroid/Android.bp
+++ b/build/microdroid/Android.bp
@@ -44,22 +44,7 @@
},
]
-soong_config_module_type {
- name: "flag_aware_microdroid_system_image",
- module_type: "android_system_image",
- config_namespace: "ANDROID",
- bool_variables: [
- "release_avf_enable_dice_changes",
- "release_avf_enable_multi_tenant_microdroid_vm",
- ],
- properties: [
- "deps",
- "dirs",
- "multilib",
- ],
-}
-
-flag_aware_microdroid_system_image {
+android_system_image {
name: "microdroid",
use_avb: true,
avb_private_key: ":microdroid_sign_key",
@@ -108,7 +93,13 @@
"traced",
"traced_probes",
"perfetto",
- ] + microdroid_shell_and_utilities,
+ ] + select(release_flag("RELEASE_AVF_ENABLE_MULTI_TENANT_MICRODROID_VM"), {
+ true: [
+ "microdroid_etc_passwd",
+ "microdroid_etc_group",
+ ],
+ default: [],
+ }) + microdroid_shell_and_utilities,
multilib: {
common: {
deps: [
@@ -128,7 +119,10 @@
"microdroid_kexec",
"microdroid_manager",
"zipfuse",
- ],
+ ] + select(release_flag("RELEASE_AVF_ENABLE_DICE_CHANGES"), {
+ true: ["derive_microdroid_vendor_dice_node"],
+ default: [],
+ }),
},
},
arch: {
@@ -147,33 +141,16 @@
},
linker_config_src: "linker.config.json",
base_dir: "system",
- dirs: microdroid_rootdirs,
+ dirs: microdroid_rootdirs + select(release_flag("RELEASE_AVF_ENABLE_DICE_CHANGES"), {
+ true: ["microdroid_resources"],
+ default: [],
+ }),
symlinks: microdroid_symlinks,
file_contexts: ":microdroid_file_contexts.gen",
// For deterministic output, use fake_timestamp, hard-coded uuid
fake_timestamp: "1611569676",
// python -c "import uuid; print(uuid.uuid5(uuid.NAMESPACE_URL, 'www.android.com/avf/microdroid/system'))"
uuid: "5fe079c6-f01a-52be-87d3-d415231a72ad",
-
- // Below are dependencies that are conditionally enabled depending on value of build flags.
- soong_config_variables: {
- release_avf_enable_dice_changes: {
- multilib: {
- lib64: {
- deps: ["derive_microdroid_vendor_dice_node"],
- },
- },
- dirs: [
- "microdroid_resources",
- ],
- },
- release_avf_enable_multi_tenant_microdroid_vm: {
- deps: [
- "microdroid_etc_passwd",
- "microdroid_etc_group",
- ],
- },
- },
}
prebuilt_etc {
@@ -224,15 +201,15 @@
name: "microdroid_build_prop_gen_x86_64",
srcs: [
"build.prop",
- ":buildinfo.prop",
+ ":system-build.prop",
],
out: ["build.prop.out"],
- cmd: "(echo '# build properties from buildinfo.prop module' && " +
- "grep ro\\.build\\.version\\.codename= $(location :buildinfo.prop) && " +
- "grep ro\\.build\\.version\\.release= $(location :buildinfo.prop) && " +
- "grep ro\\.build\\.version\\.sdk= $(location :buildinfo.prop) && " +
- "grep ro\\.build\\.version\\.security_patch= $(location :buildinfo.prop) && " +
- "grep ro\\.build\\.version\\.known_codenames= $(location :buildinfo.prop) && " +
+ cmd: "(echo '# build properties from system/build.prop' && " +
+ "grep ro\\.build\\.version\\.codename= $(location :system-build.prop) && " +
+ "grep ro\\.build\\.version\\.release= $(location :system-build.prop) && " +
+ "grep ro\\.build\\.version\\.sdk= $(location :system-build.prop) && " +
+ "grep ro\\.build\\.version\\.security_patch= $(location :system-build.prop) && " +
+ "grep ro\\.build\\.version\\.known_codenames= $(location :system-build.prop) && " +
"cat $(location build.prop) && " +
"echo ro.product.cpu.abilist=x86_64 && " +
"echo ro.product.cpu.abi=x86_64) > $(out)",
@@ -242,15 +219,15 @@
name: "microdroid_build_prop_gen_arm64",
srcs: [
"build.prop",
- ":buildinfo.prop",
+ ":system-build.prop",
],
out: ["build.prop.out"],
- cmd: "(echo '# build properties from buildinfo.prop module' && " +
- "grep ro\\.build\\.version\\.codename= $(location :buildinfo.prop) && " +
- "grep ro\\.build\\.version\\.release= $(location :buildinfo.prop) && " +
- "grep ro\\.build\\.version\\.sdk= $(location :buildinfo.prop) && " +
- "grep ro\\.build\\.version\\.security_patch= $(location :buildinfo.prop) && " +
- "grep ro\\.build\\.version\\.known_codenames= $(location :buildinfo.prop) && " +
+ cmd: "(echo '# build properties from system/build.prop' && " +
+ "grep ro\\.build\\.version\\.codename= $(location :system-build.prop) && " +
+ "grep ro\\.build\\.version\\.release= $(location :system-build.prop) && " +
+ "grep ro\\.build\\.version\\.sdk= $(location :system-build.prop) && " +
+ "grep ro\\.build\\.version\\.security_patch= $(location :system-build.prop) && " +
+ "grep ro\\.build\\.version\\.known_codenames= $(location :system-build.prop) && " +
"cat $(location build.prop) && " +
"echo ro.product.cpu.abilist=arm64-v8a && " +
"echo ro.product.cpu.abi=arm64-v8a) > $(out)",
@@ -308,19 +285,7 @@
},
}
-soong_config_module_type {
- name: "flag_aware_microdroid_filesystem",
- module_type: "android_filesystem",
- config_namespace: "ANDROID",
- bool_variables: [
- "release_avf_enable_dice_changes",
- ],
- properties: [
- "dirs",
- ],
-}
-
-flag_aware_microdroid_filesystem {
+android_filesystem {
name: "microdroid_ramdisk",
deps: [
"init_first_stage.microdroid",
@@ -333,17 +298,11 @@
"mnt",
"debug_ramdisk",
"second_stage_resources",
- ],
+ ] + select(release_flag("RELEASE_AVF_ENABLE_DICE_CHANGES"), {
+ true: ["microdroid_resources"],
+ default: [],
+ }),
type: "compressed_cpio",
-
- // Below are dependencies that are conditionally enabled depending on value of build flags.
- soong_config_variables: {
- release_avf_enable_dice_changes: {
- dirs: [
- "microdroid_resources",
- ],
- },
- },
}
android_filesystem {
@@ -400,32 +359,16 @@
srcs: [":pvmfw_embedded_key"],
}
-soong_config_module_type {
- name: "flag_aware_microdroid_vbmeta",
- module_type: "vbmeta",
- config_namespace: "ANDROID",
- bool_variables: [
- "release_avf_enable_vendor_modules",
- ],
- properties: [
- "partitions",
- ],
-}
-
-flag_aware_microdroid_vbmeta {
+vbmeta {
name: "microdroid_vbmeta",
partition_name: "vbmeta",
private_key: ":microdroid_sign_key",
partitions: [
"microdroid",
- ],
- soong_config_variables: {
- release_avf_enable_vendor_modules: {
- conditions_default: {
- partitions: ["microdroid_vendor"],
- },
- },
- },
+ ] + select(release_flag("RELEASE_AVF_ENABLE_VENDOR_MODULES"), {
+ true: [],
+ default: ["microdroid_vendor"],
+ }),
}
prebuilt_etc {
diff --git a/guest/pvmfw/src/fdt.rs b/guest/pvmfw/src/fdt.rs
index 939a4ea..953fdae 100644
--- a/guest/pvmfw/src/fdt.rs
+++ b/guest/pvmfw/src/fdt.rs
@@ -593,7 +593,6 @@
) -> Result<(), RebootReason> {
let mem_flags = PciMemoryFlags(range.addr.0);
let range_type = mem_flags.range_type();
- let prefetchable = mem_flags.prefetchable();
let bus_addr = range.addr.1;
let cpu_addr = range.parent_addr;
let size = range.size;
@@ -602,10 +601,6 @@
error!("Invalid range type {:?} for bus address {:#x} in PCI node", range_type, bus_addr);
return Err(RebootReason::InvalidFdt);
}
- if prefetchable {
- error!("PCI bus address {:#x} in PCI node is prefetchable", bus_addr);
- return Err(RebootReason::InvalidFdt);
- }
// Enforce ID bus-to-cpu mappings, as used by crosvm.
if bus_addr != cpu_addr {
error!("PCI bus address: {:#x} is different from CPU address: {:#x}", bus_addr, cpu_addr);
diff --git a/libs/fdtpci/src/lib.rs b/libs/fdtpci/src/lib.rs
index 602f736..bdd904f 100644
--- a/libs/fdtpci/src/lib.rs
+++ b/libs/fdtpci/src/lib.rs
@@ -206,7 +206,7 @@
impl PciMemoryFlags {
/// Returns whether this PCI range is prefetchable
pub fn prefetchable(self) -> bool {
- self.0 & 0x80000000 != 0
+ self.0 & 0x40000000 != 0
}
/// Returns the type of this PCI range
diff --git a/libs/libvmbase/src/hyp/hypervisor/kvm.rs b/libs/libvmbase/src/hyp/hypervisor/kvm.rs
index 8450bed..e496f09 100644
--- a/libs/libvmbase/src/hyp/hypervisor/kvm.rs
+++ b/libs/libvmbase/src/hyp/hypervisor/kvm.rs
@@ -75,7 +75,7 @@
const VENDOR_HYP_KVM_MMIO_GUARD_UNMAP_FUNC_ID: u32 = 0xc6000008;
const VENDOR_HYP_KVM_DEV_REQ_MMIO_FUNC_ID: u32 = 0xc6000012;
-const VENDOR_HYP_KVM_DEV_REQ_DMA_FUNC_ID: u32 = 0xc6000013;
+const VENDOR_HYP_KVM_DEV_REQ_DMA_FUNC_ID: u32 = 0xc600001b;
pub(super) struct RegularKvmHypervisor;