DO NOT MERGE - Merge QQ1A.200105.003 into stage-aosp-master

Merged-In: Ie1703fa3a6dd07cae9ae901c5709b36994e33c57
Change-Id: Ibd76d993d26af778681b1ed3809f7f906a639fcf
diff --git a/Android.bp b/Android.bp
index e69df8d..913278a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -2,5 +2,6 @@
     imports: [
         "hardware/google/interfaces",
         "hardware/google/pixel",
+        "hardware/qcom/bootctrl",
     ],
 }
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index b9464cc..d48e20f 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -16,7 +16,9 @@
 
 PRODUCT_MAKEFILES := \
     $(LOCAL_DIR)/aosp_bonito.mk \
-    $(LOCAL_DIR)/aosp_sargo.mk
+    $(LOCAL_DIR)/aosp_sargo.mk \
+    $(LOCAL_DIR)/aosp_bonito_hwasan.mk \
+    $(LOCAL_DIR)/aosp_sargo_hwasan.mk
 
 COMMON_LUNCH_CHOICES := \
     aosp_bonito-userdebug \
diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
index 952ff8b..5c5d83f 100644
--- a/BoardConfig-common.mk
+++ b/BoardConfig-common.mk
@@ -37,7 +37,6 @@
 TARGET_BOARD_COMMON_PATH := device/google/bonito/sdm710
 
 BUILD_BROKEN_DUP_RULES := true
-BUILD_BROKEN_ENG_DEBUG_TAGS := true
 
 BOARD_KERNEL_CMDLINE += console=ttyMSM0,115200n8 androidboot.console=ttyMSM0 printk.devkmsg=on
 BOARD_KERNEL_CMDLINE += msm_rtb.filter=0x237
@@ -74,17 +73,25 @@
 BOARD_USES_RECOVERY_AS_BOOT := true
 BOARD_USES_METADATA_PARTITION := true
 
+AB_OTA_UPDATER := true
+
+AB_OTA_PARTITIONS += \
+    boot \
+    system \
+    vbmeta \
+    dtbo \
+    product \
+    system_ext
+
 BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
 
 # Partitions (listed in the file) to be wiped under recovery.
 TARGET_RECOVERY_WIPE := device/google/bonito/recovery.wipe
 TARGET_RECOVERY_FSTAB := device/google/bonito/fstab.hardware
 TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
 TARGET_RECOVERY_UI_LIB := \
-    librecovery_ui_bonito \
-    libnos_citadel_for_recovery \
-    libnos_for_recovery \
-    libbootloader_message \
+    librecovery_ui_pixel \
     libfstab
 
 # system.img
@@ -102,7 +109,8 @@
 BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := \
     system \
     vendor \
-    product
+    product \
+    system_ext
 
 BOARD_SUPER_PARTITION_SIZE := 4072669184
 BOARD_SUPER_PARTITION_METADATA_DEVICE := system
diff --git a/CleanSpec.mk b/CleanSpec.mk
index e8d17b1..6d71bc6 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -174,3 +174,6 @@
 # Remove generic atrace HAL
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/init/android.hardware.atrace@1.0-service.rc)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/etc/vintf/manifest/android.hardware.atrace@1.0-service.xml)
+
+# Remove obsolete android.hardware.boot@1.0-impl-wrapper.recovery.so
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/recovery/root/system/lib64/hw/android.hardware.boot@1.0-impl-wrapper.recovery.so)
diff --git a/aosp_bonito.mk b/aosp_bonito.mk
index df6bd1b..8b2a6f2 100644
--- a/aosp_bonito.mk
+++ b/aosp_bonito.mk
@@ -14,21 +14,39 @@
 # limitations under the License.
 #
 
-# Inherit from the common Open Source product configuration
+#
+# All components inherited here go to system image
+#
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
+
+# Enable mainline checking
+# TODO(b/138706293): Enable mainline checking later
+# PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
+
+#
+# All components inherited here go to system_ext image
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
+
+#
+# All components inherited here go to product image
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
+
+#
+# All components inherited here go to vendor image
+#
+# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
 
 $(call inherit-product, device/google/bonito/device-bonito.mk)
 $(call inherit-product-if-exists, vendor/google_devices/bonito/proprietary/device-vendor.mk)
 
-PRODUCT_PROPERTY_OVERRIDES += \
-    ro.config.ringtone=Ring_Synth_04.ogg \
-    ro.com.android.dataroaming=true \
-
-PRODUCT_PACKAGES += \
-    PhotoTable \
-    WallpaperPicker \
-    WAPPushManager \
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
 
 # STOPSHIP deal with Qualcomm stuff later
 # PRODUCT_RESTRICT_VENDOR_FILES := all
@@ -38,7 +56,3 @@
 PRODUCT_NAME := aosp_bonito
 PRODUCT_DEVICE := bonito
 PRODUCT_MODEL := AOSP on bonito
-
-PRODUCT_COPY_FILES += \
-    device/sample/etc/apns-full-conf.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/apns-conf.xml \
-    $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
diff --git a/aosp_bonito_hwasan.mk b/aosp_bonito_hwasan.mk
new file mode 100644
index 0000000..7598503
--- /dev/null
+++ b/aosp_bonito_hwasan.mk
@@ -0,0 +1,23 @@
+#
+# Copyright 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+$(call inherit-product, device/google/bonito/aosp_bonito.mk)
+PRODUCT_NAME := aosp_bonito_hwasan
+
+# Add "hwaddress" as a global sanitizer if it's missing.
+ifeq ($(filter hwaddress,$(SANITIZE_TARGET)),)
+  SANITIZE_TARGET := $(strip $(SANITIZE_TARGET) hwaddress)
+endif
diff --git a/aosp_sargo.mk b/aosp_sargo.mk
index 2b00316..cc92418 100644
--- a/aosp_sargo.mk
+++ b/aosp_sargo.mk
@@ -14,21 +14,39 @@
 # limitations under the License.
 #
 
-# Inherit from the common Open Source product configuration
+#
+# All components inherited here go to system image
+#
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
-$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
+
+# Enable mainline checking
+# TODO(b/138706293): Enable mainline checking later
+# PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
+
+#
+# All components inherited here go to system_ext image
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_system_ext.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_system_ext.mk)
+
+#
+# All components inherited here go to product image
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
+
+#
+# All components inherited here go to vendor image
+#
+# TODO(b/136525499): move *_vendor.mk into the vendor makefile later
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
 
 $(call inherit-product, device/google/bonito/device-sargo.mk)
 $(call inherit-product-if-exists, vendor/google_devices/bonito/proprietary/device-vendor.mk)
 
-PRODUCT_PROPERTY_OVERRIDES += \
-    ro.config.ringtone=Ring_Synth_04.ogg \
-    ro.com.android.dataroaming=true \
-
-PRODUCT_PACKAGES += \
-    PhotoTable \
-    WallpaperPicker \
-    WAPPushManager \
+PRODUCT_COPY_FILES += \
+    $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \
 
 # STOPSHIP deal with Qualcomm stuff later
 # PRODUCT_RESTRICT_VENDOR_FILES := all
@@ -38,7 +56,3 @@
 PRODUCT_NAME := aosp_sargo
 PRODUCT_DEVICE := sargo
 PRODUCT_MODEL := AOSP on sargo
-
-PRODUCT_COPY_FILES += \
-    device/sample/etc/apns-full-conf.xml:$(TARGET_COPY_OUT_PRODUCT)/etc/apns-conf.xml \
-    $(LOCAL_PATH)/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml
diff --git a/aosp_sargo_hwasan.mk b/aosp_sargo_hwasan.mk
new file mode 100644
index 0000000..37227b6
--- /dev/null
+++ b/aosp_sargo_hwasan.mk
@@ -0,0 +1,23 @@
+#
+# Copyright 2019 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+$(call inherit-product, device/google/bonito/aosp_sargo.mk)
+PRODUCT_NAME := aosp_sargo_hwasan
+
+# Add "hwaddress" as a global sanitizer if it's missing.
+ifeq ($(filter hwaddress,$(SANITIZE_TARGET)),)
+  SANITIZE_TARGET := $(strip $(SANITIZE_TARGET) hwaddress)
+endif
diff --git a/bonito/AndroidBoard.mk b/bonito/AndroidBoard.mk
index 840550b..5ad7cbd 100644
--- a/bonito/AndroidBoard.mk
+++ b/bonito/AndroidBoard.mk
@@ -34,21 +34,10 @@
 INSTALLED_RADIOIMAGE_TARGET += $(INSTALLED_PERSISTIMAGE_TARGET)
 
 
-INTERNAL_KERNEL_MODULES := \
-	$(foreach file,$(wildcard device/google/bonito-kernel/*.ko \
-	    device/google/bonito-kernel/modules.dep),\
-	    $(file):$(TARGET_OUT_VENDOR)/lib/modules/$(notdir $(file)))
-
-INSTALLED_KERNEL_MODULES := $(call copy-many-files,$(INTERNAL_KERNEL_MODULES))
-
-.PHONY: kernel-modules
-kernel-modules: $(INSTALLED_KERNEL_MODULES)
-	@echo Kernel modules installed
-
 .PHONY: persistimage
 persistimage: $(INSTALLED_PERSISTIMAGE_TARGET)
 
-droidcore: $(INSTALLED_PERSISTIMAGE_TARGET) $(INSTALLED_KERNEL_MODULES)
+droidcore: $(INSTALLED_PERSISTIMAGE_TARGET)
 
 
 # copy kernel headers to the build tree
diff --git a/bootctrl/Android.bp b/bootctrl/Android.bp
new file mode 100644
index 0000000..9dcf767
--- /dev/null
+++ b/bootctrl/Android.bp
@@ -0,0 +1,21 @@
+//
+// Copyright (C) 2019 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_library {
+    name: "bootctrl.sdm710",
+    defaults: ["bootctrl_hal_defaults"],
+    static_libs: ["libgptutils.bonito"],
+}
diff --git a/device-common.mk b/device-common.mk
index 78ec0e5..80406bd 100644
--- a/device-common.mk
+++ b/device-common.mk
@@ -21,6 +21,9 @@
 # define hardware platform
 PRODUCT_PLATFORM := sdm670
 
+# Enable updating of APEXes
+$(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
+
 include device/google/bonito/device-audio-mfg.mk
 include device/google/bonito/device.mk
 
diff --git a/device.mk b/device.mk
index 5ac9ed9..107b02b 100644
--- a/device.mk
+++ b/device.mk
@@ -48,7 +48,7 @@
     ro.control_privapp_permissions=enforce
 
 # Enable on-access verification of priv apps. This requires fs-verity support in kernel.
-PRODUCT_PRODUCT_PROPERTIES += \
+PRODUCT_PROPERTY_OVERRIDES += \
     ro.apk_verity.mode=1
 
 PRODUCT_PACKAGES += \
@@ -138,7 +138,8 @@
     ro.sys.sdcardfs=1
 
 PRODUCT_PACKAGES += \
-    bootctrl.sdm710
+    bootctrl.sdm710 \
+    bootctrl.sdm710.recovery
 
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.cp_system_other_odex=1
@@ -147,13 +148,6 @@
 PRODUCT_PACKAGES += \
     checkpoint_gc
 
-AB_OTA_PARTITIONS += \
-    boot \
-    system \
-    vbmeta \
-    dtbo \
-    product
-
 AB_OTA_POSTINSTALL_CONFIG += \
     RUN_POSTINSTALL_system=true \
     POSTINSTALL_PATH_system=system/bin/otapreopt_script \
@@ -166,14 +160,6 @@
     FILESYSTEM_TYPE_vendor=ext4 \
     POSTINSTALL_OPTIONAL_vendor=true
 
-# Enable update engine sideloading by including the static version of the
-# boot_control HAL and its dependencies.
-PRODUCT_STATIC_BOOT_CONTROL_HAL := \
-    bootctrl.sdm710 \
-    libgptutils \
-    libz \
-    libcutils
-
 PRODUCT_PACKAGES += \
     update_engine_sideload \
     sg_write_buffer \
@@ -222,10 +208,12 @@
     frameworks/native/data/etc/android.hardware.nfc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.xml \
     frameworks/native/data/etc/android.hardware.nfc.hce.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hce.xml \
     frameworks/native/data/etc/android.hardware.nfc.hcef.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hcef.xml \
+    frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nxp.mifare.xml \
     frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
     frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
     frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
     frameworks/native/data/etc/android.hardware.telephony.carrierlock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.carrierlock.xml \
+    frameworks/native/data/etc/android.hardware.se.omapi.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.se.omapi.uicc.xml \
     frameworks/native/data/etc/android.hardware.strongbox_keystore.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.strongbox_keystore.xml \
     frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \
 
@@ -310,7 +298,6 @@
     persist.radio.ROTATION_ENABLE=1 \
     persist.radio.VT_ENABLE=1 \
     persist.radio.VT_HYBRID_ENABLE=1 \
-    persist.radio.reboot_on_modem_change=true \
     persist.vendor.radio.apm_sim_not_pwdn=1 \
     persist.vendor.radio.custom_ecc=1 \
     persist.vendor.radio.data_ltd_sys_ind=1 \
@@ -422,10 +409,12 @@
     frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020B/android.hardware.nfc.uicc.xml \
     frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020C/android.hardware.nfc.uicc.xml \
     frameworks/native/data/etc/android.hardware.nfc.ese.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020D/android.hardware.nfc.ese.xml \
+    frameworks/native/data/etc/android.hardware.se.omapi.ese.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020D/android.hardware.se.omapi.ese.xml \
     frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020E/android.hardware.nfc.uicc.xml \
     frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020F/android.hardware.nfc.uicc.xml \
     frameworks/native/data/etc/android.hardware.nfc.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020G/android.hardware.nfc.uicc.xml \
-    frameworks/native/data/etc/android.hardware.nfc.ese.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020H/android.hardware.nfc.ese.xml
+    frameworks/native/data/etc/android.hardware.nfc.ese.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020H/android.hardware.nfc.ese.xml \
+    frameworks/native/data/etc/android.hardware.se.omapi.ese.xml:$(TARGET_COPY_OUT_VENDOR)/odm/etc/permissions/sku_G020D/android.hardware.se.omapi.ese.xml \
 
 PRODUCT_COPY_FILES += \
     device/google/bonito/nfc/com.google.hardware.pixel.japan.xml:$(TARGET_COPY_OUT_ODM)/etc/permissions/sku_G020D/com.google.hardware.pixel.japan.xml \
@@ -492,6 +481,7 @@
 # Boot control HAL
 PRODUCT_PACKAGES += \
     android.hardware.boot@1.0-impl \
+    android.hardware.boot@1.0-impl.recovery \
     android.hardware.boot@1.0-service \
 
 # Vibrator HAL
@@ -692,8 +682,6 @@
 PRODUCT_PACKAGES += \
     vndk-sp
 
-PRODUCT_ENFORCE_RRO_TARGETS := *
-
 # Override heap growth limit due to high display density on device
 PRODUCT_PROPERTY_OVERRIDES += \
     dalvik.vm.heapgrowthlimit=256m
diff --git a/fstab.hardware b/fstab.hardware
index 422c9cc..d79826e 100644
--- a/fstab.hardware
+++ b/fstab.hardware
@@ -7,6 +7,7 @@
 
 #<src>                                                 <mnt_point>                        <type>  <mnt_flags and options>                            <fs_mgr_flags>
 system                                                  /system                           ext4    ro,barrier=1                                         wait,slotselect,avb=vbmeta,logical,first_stage_mount
+system_ext                                              /system_ext                       ext4    ro,barrier=1                                         wait,slotselect,avb,logical,first_stage_mount
 vendor                                                  /vendor                           ext4    ro,barrier=1                                         wait,slotselect,avb,logical,first_stage_mount
 product                                                 /product                          ext4    ro,barrier=1                                         wait,slotselect,avb,logical,first_stage_mount
 /dev/block/by-name/metadata                             /metadata                         ext4    noatime,nosuid,nodev,discard,sync                    wait,formattable,first_stage_mount
diff --git a/recovery/Android.bp b/gpt-utils/Android.bp
similarity index 64%
rename from recovery/Android.bp
rename to gpt-utils/Android.bp
index f87dc95..271e945 100644
--- a/recovery/Android.bp
+++ b/gpt-utils/Android.bp
@@ -1,5 +1,5 @@
 //
-// Copyright (C) 2018 The Android Open Source Project
+// Copyright (C) 2019 The Android Open Source Project
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -14,27 +14,25 @@
 // limitations under the License.
 //
 
-cc_library_static {
-    name: "librecovery_ui_bonito",
-    owner: "google",
+cc_library {
+    name: "libgptutils.bonito",
+    vendor: true,
+    recovery_available: true,
+    shared_libs: [
+        "libcutils",
+        "liblog",
+        "libz",
+    ],
     cflags: [
         "-Wall",
-        "-Wextra",
         "-Werror",
-        "-pedantic",
     ],
     srcs: [
-        "recovery_ui.cpp",
+        "gpt-utils.cpp",
     ],
-
-    static_libs: [
-        "libbase",
-        "libbootloader_message",
-        "libnos_for_recovery",
-        "libnos_citadel_for_recovery",
+    owner: "qti",
+    header_libs: [
+        "device_kernel_headers",
     ],
-
-    shared_libs: [
-        "librecovery_ui",
-    ],
+    export_include_dirs: ["."],
 }
diff --git a/gpt-utils/Android.mk b/gpt-utils/Android.mk
deleted file mode 100644
index 6dd1a44..0000000
--- a/gpt-utils/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-#
-# Copyright 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := gpt-utils.cpp
-ifeq ($(TARGET_COMPILE_WITH_MSM_KERNEL),true)
-LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
-LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
-endif
-LOCAL_SHARED_LIBRARIES := liblog libz
-LOCAL_MODULE := libgptutils
-LOCAL_MODULE_OWNER := qti
-include $(BUILD_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_SRC_FILES := gpt-utils.cpp
-ifeq ($(TARGET_COMPILE_WITH_MSM_KERNEL),true)
-LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
-LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
-endif
-LOCAL_SHARED_LIBRARIES += liblog libcutils libz
-LOCAL_EXPORT_HEADER_LIBRARY_HEADERS := libgptutils_headers
-LOCAL_MODULE := libgptutils
-LOCAL_MODULE_OWNER := qti
-LOCAL_PROPRIETARY_MODULE := true
-include $(BUILD_SHARED_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := libgptutils_headers
-LOCAL_EXPORT_C_INCLUDE_DIRS:=$(LOCAL_PATH)
-include $(BUILD_HEADER_LIBRARY)
diff --git a/gpt-utils/gpt-utils.cpp b/gpt-utils/gpt-utils.cpp
index ff6e535..2a97f1b 100644
--- a/gpt-utils/gpt-utils.cpp
+++ b/gpt-utils/gpt-utils.cpp
@@ -747,7 +747,6 @@
     enum gpt_state gpt_prim, gpt_second;
     enum boot_update_stage internal_stage;
     struct stat xbl_partition_stat;
-    struct stat ufs_dir_stat;
 
     if (!dev_path) {
         fprintf(stderr, "%s: Invalid dev_path\n",
@@ -970,7 +969,6 @@
 
 int prepare_boot_update(enum boot_update_stage stage)
 {
-        int r, fd;
         int is_ufs = gpt_utils_is_ufs_device();
         struct stat ufs_dir_stat;
         struct update_data data;
diff --git a/gpt-utils/gpt-utils.h b/gpt-utils/gpt-utils.h
index fb272ef..0051d2b 100644
--- a/gpt-utils/gpt-utils.h
+++ b/gpt-utils/gpt-utils.h
@@ -84,7 +84,8 @@
             "dtbo", "hyp", "keymaster", "qupfw", "storsec", \
             "tz", "vbmeta", "xbl_config"
 
-#define AB_PTN_LIST PTN_SWAP_LIST, "boot", "system", "vendor", "modem"
+#define AB_PTN_LIST PTN_SWAP_LIST, "boot", "system", "vendor", "modem", \
+                                   "system_ext", "product"
 #define BOOT_DEV_DIR    "/dev/block/bootdevice/by-name"
 
 /******************************************************************************
diff --git a/init.hardware.rc b/init.hardware.rc
index f2c6d83..616aba9 100644
--- a/init.hardware.rc
+++ b/init.hardware.rc
@@ -40,7 +40,7 @@
     # Enable thermal mitigation
     write /sys/devices/virtual/thermal/tz-by-name/backup-charge/mode enabled
 
-service vendor.charger /charger
+service vendor.charger /system/bin/charger
     class charger
     seclabel u:r:charger:s0
     user system
@@ -825,7 +825,7 @@
     setprop persist.vendor.radio.uicc_se_enabled true
 on property:ro.boot.hardware.sku=G020D
     setprop persist.vendor.nfc.uicc_enabled false
-    setprop persist.vendor.radio.uicc_se_enabled false
+    setprop persist.vendor.radio.uicc_se_enabled true
     interface_start android.hardware.secure_element@1.1::ISecureElement/eSE1
 on property:ro.boot.hardware.sku=G020E
     setprop persist.vendor.nfc.uicc_enabled true
@@ -838,7 +838,7 @@
     setprop persist.vendor.radio.uicc_se_enabled true
 on property:ro.boot.hardware.sku=G020H
     setprop persist.vendor.nfc.uicc_enabled false
-    setprop persist.vendor.radio.uicc_se_enabled false
+    setprop persist.vendor.radio.uicc_se_enabled true
     interface_start android.hardware.secure_element@1.1::ISecureElement/eSE1
 
 # charger driver exposes now finer grain control, map demo mode to those properties
@@ -895,15 +895,13 @@
 on property:vendor.fps.init.succeed=true && property:init.svc.vendor.fps_hal=stopped
     start init-fingerprint-sh
 
-# Write the dark theme magic (`theme-dark`, or 0x7468656d652d6461726b in hex string) to /misc
-# partition. Offset 0 in vendor space is effectively offset 2048 in /misc partition.
-service vendor.theme_set /vendor/bin/misc_writer --vendor-space-offset 0 --hex-string 0x7468656d652d6461726b
+# Write the dark theme magic to /misc partition.
+service vendor.theme_set /vendor/bin/misc_writer --set-dark-theme
     disabled
     oneshot
 
-# Clear the 10-byte dark theme magic in /misc partition. Offset 0 in vendor space is effectively
-# offset 2048 in /misc partition.
-service vendor.theme_clear /vendor/bin/misc_writer --vendor-space-offset 0 --hex-string 0x00000000000000000000
+# Clear the dark theme magic in /misc partition.
+service vendor.theme_clear /vendor/bin/misc_writer --clear-dark-theme
     disabled
     oneshot
 
@@ -918,3 +916,14 @@
 
 on property:persist.sys.theme=0
     start vendor.theme_clear
+
+on init && property:ro.boot.slot_successful=no
+    write /sys/module/msm_poweroff/parameters/warm_reset 1
+
+# Set or clear the warm reset flag upon the change of system property. The flag itself is set
+# by writing a sysfs file; and the file will be read by kernel.
+on property:ota.warm_reset=1
+    write /sys/module/msm_poweroff/parameters/warm_reset 1
+
+on property:ota.warm_reset=0
+    write /sys/module/msm_poweroff/parameters/warm_reset 0
diff --git a/json-c/Android.mk b/json-c/Android.mk
index 139a10c..9cd1e23 100644
--- a/json-c/Android.mk
+++ b/json-c/Android.mk
@@ -1,23 +1,7 @@
-LIBJSON_ROOT := $(call my-dir)
+LOCAL_PATH := $(call my-dir)
 include $(CLEAR_VARS)
 LOCAL_MODULE := libjson
-LOCAL_PATH := $(LIBJSON_ROOT)
-LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
-LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
-LOCAL_COPY_HEADERS_TO := libjson/inc
-LOCAL_COPY_HEADERS := bits.h \
-		config.h \
-		debug.h \
-		linkhash.h \
-		arraylist.h \
-		json.h \
-		json_config.h \
-		json_inttypes.h \
-		json_util.h \
-		json_object.h \
-		json_tokener.h \
-		json_object_iterator.h \
-		json_c_version.h
+LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
 LOCAL_SRC_FILES := arraylist.c \
 		debug.c \
 		json_c_version.c \
diff --git a/manifest.xml b/manifest.xml
index ed62740..8000b1d 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -45,15 +45,6 @@
         </interface>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.bluetooth.a2dp</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IBluetoothAudioOffload</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
         <name>android.hardware.bluetooth.audio</name>
         <transport>hwbinder</transport>
         <version>2.0</version>
diff --git a/nfc/manifest_se_eSE1.xml b/nfc/manifest_se_eSE1.xml
index b334e0d..5a9372c 100644
--- a/nfc/manifest_se_eSE1.xml
+++ b/nfc/manifest_se_eSE1.xml
@@ -2,11 +2,8 @@
     <hal format="hidl">
         <name>android.hardware.secure_element</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>ISecureElement</name>
-            <instance>eSE1</instance>
-        </interface>
+        <fqname>@1.0::ISecureElement/SIM1</fqname>
+        <fqname>@1.1::ISecureElement/eSE1</fqname>
     </hal>
     <hal format="hidl">
         <name>vendor.nxp.nxpese</name>
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index bef2559..be9c87f 100644
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -231,12 +231,6 @@
     <!-- Whether the display blanks itself when transition from a doze to a non-doze state -->
     <bool name="config_displayBlanksAfterDoze">true</bool>
 
-    <!-- ImsService package name to bind to by default, if config_dynamic_bind_ims is true -->
-    <string name="config_ims_package" translatable="false">org.codeaurora.ims</string>
-
-    <!-- Flag specifying whether or not IMS will use the ImsResolver dynamically -->
-    <bool name="config_dynamic_bind_ims">true</bool>
-
     <!-- Specifies whether to decouple the auto-suspend state of the device from the display on/off state. -->
     <bool name="config_powerDecoupleAutoSuspendModeFromDisplay">true</bool>
 
diff --git a/overlay/packages/services/Telephony/res/values/config.xml b/overlay/packages/services/Telephony/res/values/config.xml
index f9a7c26..fde52c2 100644
--- a/overlay/packages/services/Telephony/res/values/config.xml
+++ b/overlay/packages/services/Telephony/res/values/config.xml
@@ -23,6 +23,12 @@
     <!-- Flag indicating whether the device supports RTT (real-time text) -->
     <bool name="config_support_rtt">true</bool>
 
+    <!-- String indicating the package name of the device ImsService implementation for MMTEL. -->
+    <string name="config_ims_mmtel_package">org.codeaurora.ims</string>
+
+    <!-- String indicating the package name of the device ImsService implementation for RCS. -->
+    <string name="config_ims_rcs_package">com.android.service.ims</string>
+
     <!-- This device supports the AudioManager Telephony audio device and output onto this
          device using {@link AudioDeviceInfo#TYPE_TELEPHONY}.
          This is used to support carriers which generate a recording tone to the remote party
diff --git a/recovery/recovery_ui.cpp b/recovery/recovery_ui.cpp
deleted file mode 100644
index e3f16f2..0000000
--- a/recovery/recovery_ui.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <stdint.h>
-#include <string.h>
-
-#include <string>
-#include <string_view>
-#include <vector>
-
-#include <android-base/endian.h>
-#include <android-base/logging.h>
-#include <app_nugget.h>
-#include <bootloader_message/bootloader_message.h>
-#include <nos/NuggetClient.h>
-#include <nos/debug.h>
-#include <recovery_ui/device.h>
-#include <recovery_ui/screen_ui.h>
-
-namespace android {
-namespace device {
-namespace google {
-namespace bonito {
-
-namespace {
-
-/** Wipe user data from Titan M. */
-bool WipeTitanM() {
-    // Connect to Titan M
-    ::nos::NuggetClient client;
-    client.Open();
-    if (!client.IsOpen()) {
-        LOG(ERROR) << "Failed to connect to Titan M";
-        return false;
-    }
-
-    // Tell it to wipe user data
-    const uint32_t magicValue = htole32(ERASE_CONFIRMATION);
-    std::vector<uint8_t> magic(sizeof(magicValue));
-    memcpy(magic.data(), &magicValue, sizeof(magicValue));
-    const uint32_t status
-            = client.CallApp(APP_ID_NUGGET, NUGGET_PARAM_NUKE_FROM_ORBIT, magic, nullptr);
-    if (status != APP_SUCCESS) {
-        LOG(ERROR) << "Titan M user data wipe failed: " << ::nos::StatusCodeString(status)
-                   << " (" << status << ")";
-        return false;
-    }
-
-    LOG(INFO) << "Titan M wipe successful";
-    return true;
-}
-
-// Wipes the provisioned flag as part of data wipe.
-bool WipeProvisionedFlag() {
-    // Must be consistent with the one in init.hardware.rc (10-byte `theme-dark`).
-    const std::string wipe_str(10, '\x00');
-    constexpr size_t kProvisionedFlagOffsetInVendorSpace = 0;
-    if (std::string err; !WriteMiscPartitionVendorSpace(
-            wipe_str.data(), wipe_str.size(), kProvisionedFlagOffsetInVendorSpace, &err)) {
-        LOG(ERROR) << "Failed to write wipe string: " << err;
-        return false;
-    }
-    LOG(INFO) << "Provisioned flag wiped successful";
-    return true;
-}
-
-} // namespace
-
-class BonitoDevice : public ::Device
-{
-public:
-    BonitoDevice(::ScreenRecoveryUI* const ui) : ::Device(ui) {}
-
-    /** Hook to wipe user data not stored in /data */
-    bool PostWipeData() override {
-        // Try to do everything but report a failure if anything wasn't successful
-        bool totalSuccess = true;
-        ::RecoveryUI* const ui = GetUI();
-
-        ui->Print("Wiping Titan M...\n");
-        if (!WipeTitanM()) {
-            totalSuccess = false;
-        }
-
-        if (!WipeProvisionedFlag()) {
-            totalSuccess = false;
-        }
-
-        // Extendable to wipe other components
-
-        return totalSuccess;
-    }
-};
-
-} // namespace bonito
-} // namespace google
-} // namespace device
-} // namespace android
-
-Device *make_device()
-{
-    return new ::android::device::google::bonito::BonitoDevice(new ::ScreenRecoveryUI);
-}
diff --git a/sdm710/thermal-engine/Android.mk b/sdm710/thermal-engine/Android.mk
index 7b0ac46..5e477c6 100644
--- a/sdm710/thermal-engine/Android.mk
+++ b/sdm710/thermal-engine/Android.mk
@@ -6,14 +6,6 @@
 LOCAL_PATH:= $(call my-dir)
 
 include $(CLEAR_VARS)
-
-LOCAL_VENDOR_MODULE := true
-LOCAL_COPY_HEADERS_TO := thermal-engine
-LOCAL_COPY_HEADERS := ./thermal_client.h
-
-include $(BUILD_COPY_HEADERS)
-
-include $(CLEAR_VARS)
 LOCAL_MODULE := libThermal_headers
 LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH)
 LOCAL_VENDOR_MODULE := true
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
index fb7abcd..bcfcc61 100644
--- a/self-extractors/extract-lists.txt
+++ b/self-extractors/extract-lists.txt
@@ -5,6 +5,7 @@
     ;;
   qcom)
     TO_EXTRACT="\
+            system/app/ims/ims.apk \
             system/app/QtiTelephonyService/QtiTelephonyService.apk \
             system/etc/cne/andsfCne.xml \
             system/etc/permissions/cneapiclient.xml \
@@ -18,11 +19,7 @@
             system/etc/permissions/uimremoteclient.xml \
             system/etc/permissions/uimremoteserver.xml \
             system/etc/permissions/UimService.xml \
-            system/framework/com.android.future.usb.accessory.jar \
-            system/framework/com.android.location.provider.jar \
-            system/framework/com.android.mediadrm.signer.jar \
             system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar \
-            system/framework/javax.obex.jar \
             system/framework/qcrilhook.jar \
             system/framework/QtiTelephonyServicelibrary.jar \
             system/framework/uimremoteclientlibrary.jar \
@@ -42,7 +39,6 @@
             system/lib64/lib-imsvt.so \
             system/lib64/lib-imsvtutils.so \
             system/lib64/libmdsprpc_system.so \
-            system/lib64/libminui.so \
             system/lib64/libQTEEConnector_system.so \
             system/lib64/librcc.so \
             system/lib64/libsdm-disp-apis.so \
@@ -60,8 +56,6 @@
             system/lib/lib-imsvt.so \
             system/lib/lib-imsvtutils.so \
             system/lib/libmdsprpc_system.so \
-            system/lib/libminui.so \
-            system/lib/libnl.so \
             system/lib/libQTEEConnector_system.so \
             system/lib/librcc.so \
             system/lib/libsdm-disp-apis.so \
diff --git a/self-extractors/qcom/staging/Android.mk b/self-extractors/qcom/staging/Android.mk
index b7bee38..7c88157 100644
--- a/self-extractors/qcom/staging/Android.mk
+++ b/self-extractors/qcom/staging/Android.mk
@@ -1,8 +1,18 @@
 LOCAL_PATH := $(call my-dir)
 
-include $(CLEAR_VARS)
-
 ifneq ($(filter bonito, $(TARGET_DEVICE)),)
+include $(CLEAR_VARS)
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+LOCAL_MODULE := ims
+LOCAL_MODULE_TAGS := optional
+LOCAL_BUILT_MODULE_STEM := package.apk
+LOCAL_MODULE_OWNER := qcom
+LOCAL_MODULE_CLASS := APPS
+LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
+LOCAL_CERTIFICATE := platform
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
 LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
 LOCAL_MODULE := QtiTelephonyService
 LOCAL_MODULE_TAGS := optional
@@ -13,3 +23,4 @@
 LOCAL_CERTIFICATE := platform
 include $(BUILD_PREBUILT)
 endif
+
diff --git a/self-extractors/qcom/staging/device-partial.mk b/self-extractors/qcom/staging/device-partial.mk
index bef3733..4ede68f 100644
--- a/self-extractors/qcom/staging/device-partial.mk
+++ b/self-extractors/qcom/staging/device-partial.mk
@@ -14,6 +14,7 @@
 
 # AOSP packages required by the blobs
 PRODUCT_PACKAGES := \
+    ims \
     QtiTelephonyService
 
 #  blob(s) necessary for bonito hardware
@@ -30,11 +31,7 @@
     vendor/qcom/bonito/proprietary/uimremoteclient.xml:system/etc/permissions/uimremoteclient.xml:qcom \
     vendor/qcom/bonito/proprietary/uimremoteserver.xml:system/etc/permissions/uimremoteserver.xml:qcom \
     vendor/qcom/bonito/proprietary/UimService.xml:system/etc/permissions/UimService.xml:qcom \
-    vendor/qcom/bonito/proprietary/com.android.future.usb.accessory.jar:system/framework/com.android.future.usb.accessory.jar:qcom \
-    vendor/qcom/bonito/proprietary/com.android.location.provider.jar:system/framework/com.android.location.provider.jar:qcom \
-    vendor/qcom/bonito/proprietary/com.android.mediadrm.signer.jar:system/framework/com.android.mediadrm.signer.jar:qcom \
     vendor/qcom/bonito/proprietary/com.qualcomm.qti.uceservice-V2.0-java.jar:system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar:qcom \
-    vendor/qcom/bonito/proprietary/javax.obex.jar:system/framework/javax.obex.jar:qcom \
     vendor/qcom/bonito/proprietary/qcrilhook.jar:system/framework/qcrilhook.jar:qcom \
     vendor/qcom/bonito/proprietary/QtiTelephonyServicelibrary.jar:system/framework/QtiTelephonyServicelibrary.jar:qcom \
     vendor/qcom/bonito/proprietary/uimremoteclientlibrary.jar:system/framework/uimremoteclientlibrary.jar:qcom \
@@ -54,7 +51,6 @@
     vendor/qcom/bonito/proprietary/lib64/lib-imsvt.so:system/lib64/lib-imsvt.so:qcom \
     vendor/qcom/bonito/proprietary/lib64/lib-imsvtutils.so:system/lib64/lib-imsvtutils.so:qcom \
     vendor/qcom/bonito/proprietary/lib64/libmdsprpc_system.so:system/lib64/libmdsprpc_system.so:qcom \
-    vendor/qcom/bonito/proprietary/lib64/libminui.so:system/lib64/libminui.so:qcom \
     vendor/qcom/bonito/proprietary/lib64/libQTEEConnector_system.so:system/lib64/libQTEEConnector_system.so:qcom \
     vendor/qcom/bonito/proprietary/lib64/librcc.so:system/lib64/librcc.so:qcom \
     vendor/qcom/bonito/proprietary/lib64/libsdm-disp-apis.so:system/lib64/libsdm-disp-apis.so:qcom \
@@ -72,8 +68,6 @@
     vendor/qcom/bonito/proprietary/lib-imsvt.so:system/lib/lib-imsvt.so:qcom \
     vendor/qcom/bonito/proprietary/lib-imsvtutils.so:system/lib/lib-imsvtutils.so:qcom \
     vendor/qcom/bonito/proprietary/libmdsprpc_system.so:system/lib/libmdsprpc_system.so:qcom \
-    vendor/qcom/bonito/proprietary/libminui.so:system/lib/libminui.so:qcom \
-    vendor/qcom/bonito/proprietary/libnl.so:system/lib/libnl.so:qcom \
     vendor/qcom/bonito/proprietary/libQTEEConnector_system.so:system/lib/libQTEEConnector_system.so:qcom \
     vendor/qcom/bonito/proprietary/librcc.so:system/lib/librcc.so:qcom \
     vendor/qcom/bonito/proprietary/libsdm-disp-apis.so:system/lib/libsdm-disp-apis.so:qcom \
diff --git a/self-extractors_sargo/extract-lists.txt b/self-extractors_sargo/extract-lists.txt
index fb7abcd..bcfcc61 100644
--- a/self-extractors_sargo/extract-lists.txt
+++ b/self-extractors_sargo/extract-lists.txt
@@ -5,6 +5,7 @@
     ;;
   qcom)
     TO_EXTRACT="\
+            system/app/ims/ims.apk \
             system/app/QtiTelephonyService/QtiTelephonyService.apk \
             system/etc/cne/andsfCne.xml \
             system/etc/permissions/cneapiclient.xml \
@@ -18,11 +19,7 @@
             system/etc/permissions/uimremoteclient.xml \
             system/etc/permissions/uimremoteserver.xml \
             system/etc/permissions/UimService.xml \
-            system/framework/com.android.future.usb.accessory.jar \
-            system/framework/com.android.location.provider.jar \
-            system/framework/com.android.mediadrm.signer.jar \
             system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar \
-            system/framework/javax.obex.jar \
             system/framework/qcrilhook.jar \
             system/framework/QtiTelephonyServicelibrary.jar \
             system/framework/uimremoteclientlibrary.jar \
@@ -42,7 +39,6 @@
             system/lib64/lib-imsvt.so \
             system/lib64/lib-imsvtutils.so \
             system/lib64/libmdsprpc_system.so \
-            system/lib64/libminui.so \
             system/lib64/libQTEEConnector_system.so \
             system/lib64/librcc.so \
             system/lib64/libsdm-disp-apis.so \
@@ -60,8 +56,6 @@
             system/lib/lib-imsvt.so \
             system/lib/lib-imsvtutils.so \
             system/lib/libmdsprpc_system.so \
-            system/lib/libminui.so \
-            system/lib/libnl.so \
             system/lib/libQTEEConnector_system.so \
             system/lib/librcc.so \
             system/lib/libsdm-disp-apis.so \
diff --git a/self-extractors_sargo/qcom/staging/Android.mk b/self-extractors_sargo/qcom/staging/Android.mk
index 9d06c02..9d76fef 100644
--- a/self-extractors_sargo/qcom/staging/Android.mk
+++ b/self-extractors_sargo/qcom/staging/Android.mk
@@ -1,8 +1,18 @@
 LOCAL_PATH := $(call my-dir)
 
-include $(CLEAR_VARS)
-
 ifneq ($(filter sargo, $(TARGET_DEVICE)),)
+include $(CLEAR_VARS)
+LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
+LOCAL_MODULE := ims
+LOCAL_MODULE_TAGS := optional
+LOCAL_BUILT_MODULE_STEM := package.apk
+LOCAL_MODULE_OWNER := qcom
+LOCAL_MODULE_CLASS := APPS
+LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
+LOCAL_CERTIFICATE := platform
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
 LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
 LOCAL_MODULE := QtiTelephonyService
 LOCAL_MODULE_TAGS := optional
@@ -13,4 +23,3 @@
 LOCAL_CERTIFICATE := platform
 include $(BUILD_PREBUILT)
 endif
-
diff --git a/self-extractors_sargo/qcom/staging/device-partial.mk b/self-extractors_sargo/qcom/staging/device-partial.mk
index f15a9de..9fdefd8 100644
--- a/self-extractors_sargo/qcom/staging/device-partial.mk
+++ b/self-extractors_sargo/qcom/staging/device-partial.mk
@@ -14,6 +14,7 @@
 
 # AOSP packages required by the blobs
 PRODUCT_PACKAGES := \
+    ims \
     QtiTelephonyService
 
 #  blob(s) necessary for sargo hardware
@@ -30,11 +31,7 @@
     vendor/qcom/sargo/proprietary/uimremoteclient.xml:system/etc/permissions/uimremoteclient.xml:qcom \
     vendor/qcom/sargo/proprietary/uimremoteserver.xml:system/etc/permissions/uimremoteserver.xml:qcom \
     vendor/qcom/sargo/proprietary/UimService.xml:system/etc/permissions/UimService.xml:qcom \
-    vendor/qcom/sargo/proprietary/com.android.future.usb.accessory.jar:system/framework/com.android.future.usb.accessory.jar:qcom \
-    vendor/qcom/sargo/proprietary/com.android.location.provider.jar:system/framework/com.android.location.provider.jar:qcom \
-    vendor/qcom/sargo/proprietary/com.android.mediadrm.signer.jar:system/framework/com.android.mediadrm.signer.jar:qcom \
     vendor/qcom/sargo/proprietary/com.qualcomm.qti.uceservice-V2.0-java.jar:system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar:qcom \
-    vendor/qcom/sargo/proprietary/javax.obex.jar:system/framework/javax.obex.jar:qcom \
     vendor/qcom/sargo/proprietary/qcrilhook.jar:system/framework/qcrilhook.jar:qcom \
     vendor/qcom/sargo/proprietary/QtiTelephonyServicelibrary.jar:system/framework/QtiTelephonyServicelibrary.jar:qcom \
     vendor/qcom/sargo/proprietary/uimremoteclientlibrary.jar:system/framework/uimremoteclientlibrary.jar:qcom \
@@ -54,7 +51,6 @@
     vendor/qcom/sargo/proprietary/lib64/lib-imsvt.so:system/lib64/lib-imsvt.so:qcom \
     vendor/qcom/sargo/proprietary/lib64/lib-imsvtutils.so:system/lib64/lib-imsvtutils.so:qcom \
     vendor/qcom/sargo/proprietary/lib64/libmdsprpc_system.so:system/lib64/libmdsprpc_system.so:qcom \
-    vendor/qcom/sargo/proprietary/lib64/libminui.so:system/lib64/libminui.so:qcom \
     vendor/qcom/sargo/proprietary/lib64/libQTEEConnector_system.so:system/lib64/libQTEEConnector_system.so:qcom \
     vendor/qcom/sargo/proprietary/lib64/librcc.so:system/lib64/librcc.so:qcom \
     vendor/qcom/sargo/proprietary/lib64/libsdm-disp-apis.so:system/lib64/libsdm-disp-apis.so:qcom \
@@ -72,8 +68,6 @@
     vendor/qcom/sargo/proprietary/lib-imsvt.so:system/lib/lib-imsvt.so:qcom \
     vendor/qcom/sargo/proprietary/lib-imsvtutils.so:system/lib/lib-imsvtutils.so:qcom \
     vendor/qcom/sargo/proprietary/libmdsprpc_system.so:system/lib/libmdsprpc_system.so:qcom \
-    vendor/qcom/sargo/proprietary/libminui.so:system/lib/libminui.so:qcom \
-    vendor/qcom/sargo/proprietary/libnl.so:system/lib/libnl.so:qcom \
     vendor/qcom/sargo/proprietary/libQTEEConnector_system.so:system/lib/libQTEEConnector_system.so:qcom \
     vendor/qcom/sargo/proprietary/librcc.so:system/lib/librcc.so:qcom \
     vendor/qcom/sargo/proprietary/libsdm-disp-apis.so:system/lib/libsdm-disp-apis.so:qcom \
diff --git a/voice_processing/Android.mk b/voice_processing/Android.mk
index 674881f..8883109 100644
--- a/voice_processing/Android.mk
+++ b/voice_processing/Android.mk
@@ -19,7 +19,6 @@
 LOCAL_SRC_FILES := voice_processing_descriptors.c
 LOCAL_C_INCLUDES += $(call include-path-for, audio-effects)
 LOCAL_HEADER_LIBRARIES := libhardware_headers
-LOCAL_MULTILIB := $(AUDIOSERVER_MULTILIB)
 LOCAL_MODULE := libqcomvoiceprocessingdescriptors
 LOCAL_MODULE_RELATIVE_PATH := soundfx
 LOCAL_MODULE_TAGS := optional