Merge "Revert "Disable build-time debugfs restrictions on GSI builds"" into main
diff --git a/core/android_soong_config_vars.mk b/core/android_soong_config_vars.mk
index 70b3744..758d404 100644
--- a/core/android_soong_config_vars.mk
+++ b/core/android_soong_config_vars.mk
@@ -141,6 +141,7 @@
 $(call add_soong_config_var_value,ANDROID,release_avf_enable_vendor_modules,$(RELEASE_AVF_ENABLE_VENDOR_MODULES))
 $(call add_soong_config_var_value,ANDROID,release_avf_enable_virt_cpufreq,$(RELEASE_AVF_ENABLE_VIRT_CPUFREQ))
 $(call add_soong_config_var_value,ANDROID,release_avf_microdroid_kernel_version,$(RELEASE_AVF_MICRODROID_KERNEL_VERSION))
+$(call add_soong_config_var_value,ANDROID,release_avf_support_custom_vm_with_paravirtualized_devices,$(RELEASE_AVF_SUPPORT_CUSTOM_VM_WITH_PARAVIRTUALIZED_DEVICES))
 
 $(call add_soong_config_var_value,ANDROID,release_binder_death_recipient_weak_from_jni,$(RELEASE_BINDER_DEATH_RECIPIENT_WEAK_FROM_JNI))
 
diff --git a/core/config.mk b/core/config.mk
index 22ec292..daefa70 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -420,12 +420,9 @@
 .KATI_READONLY := TARGET_MAX_PAGE_SIZE_SUPPORTED
 
 # Boolean variable determining if AOSP relies on bionic's PAGE_SIZE macro.
+TARGET_NO_BIONIC_PAGE_SIZE_MACRO := false
 ifdef PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO
   TARGET_NO_BIONIC_PAGE_SIZE_MACRO := $(PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO)
-else ifeq ($(call math_lt,$(VSR_VENDOR_API_LEVEL),35),true)
-  TARGET_NO_BIONIC_PAGE_SIZE_MACRO := false
-else
-  TARGET_NO_BIONIC_PAGE_SIZE_MACRO := true
 endif
 .KATI_READONLY := TARGET_NO_BIONIC_PAGE_SIZE_MACRO
 
diff --git a/target/product/aosp_arm64.mk b/target/product/aosp_arm64.mk
index d944615..d3514a5 100644
--- a/target/product/aosp_arm64.mk
+++ b/target/product/aosp_arm64.mk
@@ -72,5 +72,3 @@
 PRODUCT_DEVICE := generic_arm64
 PRODUCT_BRAND := Android
 PRODUCT_MODEL := AOSP on ARM64
-
-PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
diff --git a/target/product/aosp_x86_64.mk b/target/product/aosp_x86_64.mk
index 4344f50..3040dd3 100644
--- a/target/product/aosp_x86_64.mk
+++ b/target/product/aosp_x86_64.mk
@@ -74,5 +74,3 @@
 PRODUCT_DEVICE := generic_x86_64
 PRODUCT_BRAND := Android
 PRODUCT_MODEL := AOSP on x86_64
-
-PRODUCT_NO_BIONIC_PAGE_SIZE_MACRO := true
diff --git a/tools/aconfig/aconfig_storage_read_api/Android.bp b/tools/aconfig/aconfig_storage_read_api/Android.bp
index 3746d17..a0980b6 100644
--- a/tools/aconfig/aconfig_storage_read_api/Android.bp
+++ b/tools/aconfig/aconfig_storage_read_api/Android.bp
@@ -69,7 +69,7 @@
 }
 
 // flag read api cc interface
-cc_library_static {
+cc_library {
     name: "libaconfig_storage_read_api_cc",
     srcs: ["aconfig_storage_read_api.cpp"],
     generated_headers: [
@@ -83,5 +83,10 @@
         "libaconfig_storage_protos_cc",
         "libprotobuf-cpp-lite",
         "libbase",
+        "liblog",
+    ],
+    apex_available: [
+        "//apex_available:platform",
+        "//apex_available:anyapex",
     ],
 }
diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py
index a2c0949..b39a82c 100644
--- a/tools/releasetools/add_img_to_target_files.py
+++ b/tools/releasetools/add_img_to_target_files.py
@@ -1055,20 +1055,6 @@
     for call in add_partition_calls:
       add_partition(*call)
   else:
-    # When calling avbtool make_vbmeta_image, it uses the `partitions`
-    # dictionary to include the options for --include_descriptors_from_image.
-    # The vbmeta image is different if the order of the
-    # --include_descriptors_from_image changes. As the images are generated
-    # parallelly and entries are added on completion of image creation,
-    # this `partitions` dict might be indeterministic as the order of
-    # completion of image creation cannot be predicted.
-    # To address this issue, add keys to the dict `partitions` with null values
-    # in the order they are listed in the variable `add_partition_calls`, and
-    # then the values are updated by `add_partition` keeping the order of the
-    # items. This ensures generated vbmeta.img is the same for the same input.
-    for call in add_partition_calls:
-      if call[1]:
-        partitions[call[0]] = None
     with ThreadPoolExecutor(max_workers=len(add_partition_calls)) as executor:
       for future in [executor.submit(add_partition, *call) for call in add_partition_calls]:
         future.result()
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index 264c2d8..9771992 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -1524,7 +1524,7 @@
       AVB_ARG_NAME_CHAIN_PARTITION: []
   }
 
-  for partition, path in partitions.items():
+  for partition, path in sorted(partitions.items()):
     avb_partition_arg = GetAvbPartitionArg(partition, path, info_dict)
     if not avb_partition_arg:
       continue
@@ -1612,7 +1612,7 @@
       "avb_custom_vbmeta_images_partition_list", "").strip().split()]
 
   avb_partitions = {}
-  for partition, path in partitions.items():
+  for partition, path in sorted(partitions.items()):
     if partition not in needed_partitions:
       continue
     assert (partition in AVB_PARTITIONS or