Skip QD1A.190821.011 in stage-aosp-master

Bug: 141248619
Change-Id: Idad5aead27ab2b6b3fc01ecb0cf2a2b8cd693564
diff --git a/Android.bp b/Android.bp
index d3a2a66..3daac1d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -60,3 +60,15 @@
         "manifest_android.hardware.health.storage@1.0.cuttlefish.xml",
     ],
 }
+
+java_test_host {
+    name: "tombstone_transmit_tests",
+
+    libs: ["tradefed"],
+
+    srcs:  ["tests/src/**/TombstoneTransmitTest.java"],
+
+    test_config: "tests/tombstone-transmit-tests.xml",
+
+    test_suites: ["general-tests"],
+}
diff --git a/Android.mk b/Android.mk
index afddf54..5639a38 100644
--- a/Android.mk
+++ b/Android.mk
@@ -14,10 +14,13 @@
 # limitations under the License.
 #
 
-ifneq ($(filter $(TARGET_DEVICE), vsoc_arm vsoc_arm64 vsoc_x86 vsoc_x86_64),)
+ifneq ($(filter $(TARGET_DEVICE), vsoc_arm vsoc_arm64 vsoc_x86 vsoc_x86_64 vsoc_x86_noapex),)
 LOCAL_PATH:= $(call my-dir)
 
 include $(CLEAR_VARS)
+include $(LOCAL_PATH)/fetcher.mk
+
+include $(CLEAR_VARS)
 include $(LOCAL_PATH)/host_package.mk
 
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index 09f33df..ad736c4 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -15,13 +15,14 @@
 #
 
 PRODUCT_MAKEFILES := \
-	aosp_cf_arm64_phone:$(LOCAL_DIR)/vsoc_arm64/phone/device.mk \
-	aosp_cf_x86_64_phone:$(LOCAL_DIR)/vsoc_x86_64/phone/device.mk \
+	aosp_cf_arm64_phone:$(LOCAL_DIR)/vsoc_arm64/phone/aosp_cf.mk \
+	aosp_cf_x86_64_phone:$(LOCAL_DIR)/vsoc_x86_64/phone/aosp_cf.mk \
 	aosp_cf_x86_auto:$(LOCAL_DIR)/vsoc_x86/auto/device.mk \
-	aosp_cf_x86_pasan:$(LOCAL_DIR)/vsoc_x86/pasan/device.mk \
-	aosp_cf_x86_phone:$(LOCAL_DIR)/vsoc_x86/phone/device.mk \
+	aosp_cf_x86_pasan:$(LOCAL_DIR)/vsoc_x86/pasan/aosp_cf.mk \
+	aosp_cf_x86_phone:$(LOCAL_DIR)/vsoc_x86/phone/aosp_cf.mk \
+	aosp_cf_x86_phone_noapex:$(LOCAL_DIR)/vsoc_x86_noapex/aosp_cf_noapex.mk \
 	aosp_cf_x86_go_phone:$(LOCAL_DIR)/vsoc_x86/go_phone/device.mk \
-	aosp_cf_x86_gsi:$(LOCAL_DIR)/vsoc_x86/gsi/aosp_cf_x86_gsi.mk \
+	aosp_cf_x86_go_512_phone:$(LOCAL_DIR)/vsoc_x86/go_512_phone/device.mk \
 	aosp_cf_x86_tv:$(LOCAL_DIR)/vsoc_x86/tv/device.mk
 
 COMMON_LUNCH_CHOICES := \
diff --git a/CleanSpec.mk b/CleanSpec.mk
new file mode 100644
index 0000000..2899871
--- /dev/null
+++ b/CleanSpec.mk
@@ -0,0 +1,53 @@
+# Copyright (C) 2007 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.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list.  These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+#     $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list.  E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+
+# Deletes product partition directories and symlink when adding a real product partition.
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/product)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/product)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
diff --git a/OWNERS b/OWNERS
index 3f32871..ce92c4f 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1,7 +1,7 @@
-astrachan@google.com
+adelva@google.com
 ghartman@google.com
 jemoreira@google.com
 malchev@google.com
 schuffelen@google.com
 muntsinger@google.com
-rammuthiah@google.com
\ No newline at end of file
+rammuthiah@google.com
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..232cc77
--- /dev/null
+++ b/README.md
@@ -0,0 +1,41 @@
+# So you want to try cuttlefish?
+
+1. Go to http://ci.android.com/
+2. Enter a branch name. Start with `aosp-master` if you don't know what you're
+   looking for
+3. Navigate to `aosp_cf_x86_phone` and click on `userdebug` for the latest build
+4. Click on `Artifacts`
+5. Scroll down to the OTA images. These packages look like
+   `aosp_cf_x86_phone-img-xxxxxx.zip` -- it will always have `img` in the name.
+   Download this file
+6. Scroll down to `cvd-host_package.tar.gz`. You should always download a host
+   package from the same build as your images.
+7. On your local system, combine the packages:
+
+   `$ mkdir cf`
+   `$ cd cf`
+   `$ tar xvf /path/to/cvd-host_package.tar.gz`
+   `$ unzip /path/to/aosp_cf_x86_phone-img-xxxxxx.zip`
+
+8. Launch cuttlefish with:
+
+   `$ HOME=$PWD ./bin/launch_cvd`
+
+9. Stop cuttlefish with:
+
+   `$ HOME=$PWD ./bin/stop_cvd`
+
+# So you want to debug cuttlefish?
+
+You can use `adb` to debug it, just like a physical device:
+
+   `$ ./bin/adb -e shell`
+
+# So you want to see cuttlefish?
+
+You can use the [TightVNC JViewer](https://www.tightvnc.com/download.php). Once
+you have downloaded the *TightVNC Java Viewer JAR in a ZIP archive*, run it with
+
+   `$ java -jar tightvnc-jviewer.jar -ScalingFactor=50 -Tunneling=no -host=localhost -port=6444`
+
+Click "Connect" and you should see a lock screen!
diff --git a/TEST_MAPPING b/TEST_MAPPING
new file mode 100644
index 0000000..e35b82e
--- /dev/null
+++ b/TEST_MAPPING
@@ -0,0 +1,11 @@
+{
+  "presubmit": [
+    {
+      "name": "vts_treble_vintf_framework_test"
+    },
+    {
+      "name": "vts_treble_vintf_vendor_test"
+    }
+  ]
+}
+
diff --git a/fetcher.mk b/fetcher.mk
new file mode 100644
index 0000000..e00b1df
--- /dev/null
+++ b/fetcher.mk
@@ -0,0 +1,12 @@
+bin_path := $(notdir $(HOST_OUT_EXECUTABLES))
+
+fetcher_bin := $(HOST_OUT)/$(bin_path)/fetch_cvd
+
+.PHONY: host_fetcher
+host_fetcher: $(fetcher_bin)
+
+# Build this by default when a developer types make
+droidcore: $(fetcher_bin)
+
+# Build and store them on the build server.
+$(call dist-for-goals, dist_files, $(fetcher_bin))
diff --git a/host_package.mk b/host_package.mk
index 88f79b7..815af3b 100644
--- a/host_package.mk
+++ b/host_package.mk
@@ -5,11 +5,6 @@
 .PHONY: hosttar
 hosttar: $(cvd_host_package_tar)
 
-$(cvd_host_package_tar): PRIVATE_TAR_FORMAT :=
-ifeq ($(HOST_OS),linux)
-$(cvd_host_package_tar): PRIVATE_TAR_FORMAT := --format=gnu
-endif
-
 # Build this by default when a developer types make
 droidcore: $(cvd_host_package_tar)
 
@@ -25,20 +20,37 @@
     adbshell \
     host_region_e2e_test \
     launch_cvd \
+    lpmake \
+    lpunpack \
     socket_forward_proxy \
     socket_vsock_proxy \
     adb_connector \
     stop_cvd \
-    stream_audio \
     vnc_server \
     record_audio \
     cf_qemu.sh \
+    cf_bpttool \
     ivserver \
     virtual_usb_manager \
     kernel_log_monitor \
     extract-vmlinux \
     crosvm \
+    aarch64-linux-gnu/crosvm \
+    aarch64-linux-gnu/libepoxy.so.0 \
+    aarch64-linux-gnu/libgbm.so.1 \
+    aarch64-linux-gnu/libminijail.so \
+    aarch64-linux-gnu/libvirglrenderer.so.0 \
+    x86_64-linux-gnu/crosvm \
+    x86_64-linux-gnu/libepoxy.so.0 \
+    x86_64-linux-gnu/libgbm.so.1 \
+    x86_64-linux-gnu/libminijail.so \
+    x86_64-linux-gnu/libvirglrenderer.so.0 \
     logcat_receiver \
+    config_server \
+    tombstone_receiver \
+    console_forwarder \
+    assemble_cvd \
+    run_cvd \
 
 cvd_host_tests := \
     auto_free_buffer_test \
@@ -62,32 +74,26 @@
     liblog.so \
     libnl.so \
     libc++.so \
+    liblp.so \
+    libsparse-host.so \
+    libcrypto-host.so \
+    libcrypto_utils.so \
+    libext4_utils.so \
+    libz-host.so \
     libicuuc-host.so \
     libicui18n-host.so \
     libandroidicu-host.so \
-    libopus.so \
-    libvirglrenderer_cuttlefish.so \
-    libEGL_swiftshader.so \
-    libGLESv1_CM_swiftshader.so \
-    libGLESv2_swiftshader.so \
-    crosvm/libepoxy.so.0 \
-    crosvm/libgbm.so.1 \
-    crosvm/libminijail.so \
-    crosvm/libvirglrenderer.so.0 \
+    libcuttlefish_device_config.so \
+    cdisk_spec.so \
+    libprotobuf-cpp-full.so \
 
 
-cvd_host_configs := \
-    system-root.dtb \
-    initrd-root.dtb \
-    gsi.fstab \
-
 cvd_host_package_files := \
-     $(addprefix config/,$(cvd_host_configs)) \
      $(addprefix $(bin_path)/,$(cvd_host_executables)) \
      $(addprefix $(lib_path)/,$(cvd_host_shared_libraries)) \
      $(foreach test,$(cvd_host_tests), ${tests_path}/$(test)/$(test)) \
 
 $(cvd_host_package_tar): PRIVATE_FILES := $(cvd_host_package_files)
 $(cvd_host_package_tar): $(addprefix $(HOST_OUT)/,$(cvd_host_package_files))
-	$(hide) rm -rf $@ && tar Scfz $@.tmp -C $(HOST_OUT) $(PRIVATE_TAR_FORMAT) $(PRIVATE_FILES)
+	$(hide) rm -rf $@ && tar Scfz $@.tmp -C $(HOST_OUT) $(PRIVATE_FILES)
 	$(hide) mv $@.tmp $@
diff --git a/shared/BoardConfig.mk b/shared/BoardConfig.mk
index 07f5da1..97a073f 100644
--- a/shared/BoardConfig.mk
+++ b/shared/BoardConfig.mk
@@ -18,34 +18,41 @@
 # Common BoardConfig for all supported architectures.
 #
 
+include build/make/target/board/BoardConfigMainlineCommon.mk
+
+# Reset CF unsupported settings
+TARGET_NO_RECOVERY := false
+BOARD_USES_SYSTEM_OTHER_ODEX :=
+WITH_DEXPREOPT := true
+BOARD_AVB_ENABLE := false
+
+
 TARGET_BOOTLOADER_BOARD_NAME := cutf
 
 # Boot partition size: 32M
 # This is only used for OTA update packages. The image size on disk
 # will not change (as is it not a filesystem.)
-BOARD_BOOTIMAGE_PARTITION_SIZE := 33554432
-BOARD_RECOVERYIMAGE_PARTITION_SIZE := 33554432
+BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864
+BOARD_RECOVERYIMAGE_PARTITION_SIZE := 67108864
 
 # Build a separate vendor.img partition
 BOARD_USES_VENDORIMAGE := true
 BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
-TARGET_COPY_OUT_VENDOR := vendor
 
 BOARD_USES_METADATA_PARTITION := true
 
 # Build a separate product.img partition
 BOARD_USES_PRODUCTIMAGE := true
 BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
-TARGET_COPY_OUT_PRODUCT := product
 
-ifeq ($(TARGET_BUILD_SYSTEM_ROOT_IMAGE),true)
-BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
-endif
+# Build a separate system_ext.img partition
+BOARD_USES_SYSTEM_EXTIMAGE := true
+BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
+TARGET_COPY_OUT_SYSTEM_EXT := system_ext
+
 BOARD_USES_GENERIC_AUDIO := false
 USE_CAMERA_STUB := true
-TARGET_USERIMAGES_USE_EXT4 := true
 TARGET_USERIMAGES_SPARSE_EXT_DISABLED := true
-TARGET_USES_64_BIT_BINDER := true
 
 # Hardware composer configuration
 TARGET_USES_HWC2 := true
@@ -53,16 +60,14 @@
 # The compiler will occasionally generate movaps, etc.
 BOARD_MALLOC_ALIGNMENT := 16
 
-# Make the userdata partition 4G to accomodate ASAN and CTS
-BOARD_USERDATAIMAGE_PARTITION_SIZE := 4294967296
+# Make the userdata partition 4.25G to accomodate ASAN and CTS
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 4563402752
 
 # Cache partition size: 64M
 BOARD_CACHEIMAGE_PARTITION_SIZE := 67108864
 BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
 
 BOARD_GPU_DRIVERS := virgl
-# This prevents mesa3d from unconditionally pulling in some modules
-BOARD_USE_CUSTOMIZED_MESA := true
 
 # Enable goldfish's encoder.
 # TODO(b/113617962) Remove this if we decide to use
@@ -80,27 +85,21 @@
 # TODO(san): See if we can get rid of this.
 BOARD_FLASH_BLOCK_SIZE := 512
 
-WITH_DEXPREOPT := true
-
 USE_OPENGL_RENDERER := true
 
 # Wifi.
 BOARD_WLAN_DEVICE           := wlan0
 BOARD_HOSTAPD_DRIVER        := NL80211
 BOARD_WPA_SUPPLICANT_DRIVER := NL80211
-BOARD_HOSTAPD_PRIVATE_LIB   := lib_driver_cmd_simulated
-BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_simulated
 WPA_SUPPLICANT_VERSION      := VER_0_8_X
 WIFI_DRIVER_FW_PATH_PARAM   := "/dev/null"
 WIFI_DRIVER_FW_PATH_STA     := "/dev/null"
 WIFI_DRIVER_FW_PATH_AP      := "/dev/null"
 
-BOARD_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy
+BOARD_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/vendor
+BOARD_SEPOLICY_DIRS += device/google/cuttlefish/shared/sepolicy/vendor/google
+PRODUCT_PRIVATE_SEPOLICY_DIRS := device/google/cuttlefish/shared/sepolicy/private
 
-# master has breaking changes in dlfcn.h, but the platform SDK hasn't been
-# bumped. Restore the line below when it is.
-VSOC_VERSION_CFLAGS := -DVSOC_PLATFORM_SDK_VERSION=29
-# VSOC_VERSION_CFLAGS := -DVSOC_PLATFORM_SDK_VERSION=${PLATFORM_SDK_VERSION}
 VSOC_STLPORT_INCLUDES :=
 VSOC_STLPORT_LIBS :=
 VSOC_STLPORT_STATIC_LIBS :=
@@ -136,40 +135,18 @@
 DHCPCD_USE_DBUS := no
 DHCPCD_USE_SCRIPT := yes
 
-USE_XML_AUDIO_POLICY_CONF := 1
-
-BOARD_VNDK_VERSION := current
-
-# TODO(b/73078796): remove
-BOARD_PROPERTY_OVERRIDES_SPLIT_ENABLED := true
 
 TARGET_RECOVERY_PIXEL_FORMAT := ABGR_8888
-ifeq ($(TARGET_BUILD_SYSTEM_ROOT_IMAGE),true)
-# Use the initrd version for the dtb build, because we need to have /system
-# defined somewhere, and the dtb fstab doesn't define it (deliberately)
-TARGET_RECOVERY_FSTAB ?= device/google/cuttlefish/shared/config/fstab.initrd
-else ifeq ($(TARGET_USE_DYNAMIC_PARTITIONS),true)
-TARGET_RECOVERY_FSTAB ?= device/google/cuttlefish/shared/config/fstab.initrd-dynamic-partitions
-else
-TARGET_RECOVERY_FSTAB ?= device/google/cuttlefish/shared/config/fstab.initrd
-endif
 
-ifeq ($(TARGET_USE_DYNAMIC_PARTITIONS),true)
-  BOARD_SUPER_PARTITION_SIZE := 6442450944
-  BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions
-  BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor product
-  BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 6442450944
-  BOARD_SUPER_PARTITION_METADATA_DEVICE := vda
-  BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT := true
-  BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true
-  TARGET_RELEASETOOLS_EXTENSIONS := device/google/cuttlefish/shared
-else
-  # No dynamic partitions support; we must specify maximum sizes
-  BOARD_SYSTEMIMAGE_PARTITION_SIZE := 4294967296 # 4 GB
-  BOARD_VENDORIMAGE_PARTITION_SIZE := 536870912 # 512MB
-  BOARD_PRODUCTIMAGE_PARTITION_SIZE := 1610612736 # 1.5GB
-  TARGET_NO_RECOVERY ?= true
-endif
+TARGET_RECOVERY_FSTAB ?= device/google/cuttlefish/shared/config/fstab
+
+BOARD_SUPER_PARTITION_SIZE := 6174015488
+BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor product system_ext
+BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 6174015488
+BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT := true
+BOARD_SUPER_IMAGE_IN_UPDATE_PACKAGE := true
+TARGET_RELEASETOOLS_EXTENSIONS := device/google/cuttlefish/shared
 
 # To see full logs from init, disable ratelimiting.
 # The default is 5 messages per second amortized, with a burst of up to 10.
diff --git a/shared/auto/device.mk b/shared/auto/device.mk
index ecc38be..27ebf12 100644
--- a/shared/auto/device.mk
+++ b/shared/auto/device.mk
@@ -20,9 +20,6 @@
 DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
 DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/auto/manifest.xml
 
-TARGET_BUILD_SYSTEM_ROOT_IMAGE ?= true
-
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)
 $(call inherit-product, device/google/cuttlefish/shared/device.mk)
 
 ################################################
@@ -32,10 +29,6 @@
     packages/services/Car/car_product/init/init.bootstat.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw//init.bootstat.rc \
     packages/services/Car/car_product/init/init.car.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw//init.car.rc
 
-
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml
-
 # Auto core hardware permissions
 PRODUCT_COPY_FILES += \
     frameworks/native/data/etc/car_core_hardware.xml:system/etc/permissions/car_core_hardware.xml \
@@ -72,16 +65,6 @@
 PRODUCT_PACKAGES += \
     android.hardware.gnss@2.0-service
 
-# Cell network connection
-PRODUCT_PACKAGES += \
-    MmsService \
-    Phone \
-    PhoneService \
-    Telecom \
-    TeleService \
-    libcuttlefish-ril \
-    libcuttlefish-rild \
-
 # DRM Properities
 PRODUCT_PROPERTY_OVERRIDES += \
     drm.service.enabled=true
@@ -97,3 +80,5 @@
 
 PRODUCT_ENFORCE_RRO_TARGETS := framework-res
 PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS := device/google/cuttlefish/shared/overlay
+
+TARGET_NO_TELEPHONY := true
diff --git a/shared/config/Android.bp b/shared/config/Android.bp
deleted file mode 100644
index 85017af..0000000
--- a/shared/config/Android.bp
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// 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_headers {
-    name: "cuttlefish_shared_config",
-    vendor: true,
-    export_include_dirs: ["."],
-    host_supported: true,
-}
diff --git a/shared/config/Android.mk b/shared/config/Android.mk
index 744be8f..1397bcc 100644
--- a/shared/config/Android.mk
+++ b/shared/config/Android.mk
@@ -35,37 +35,3 @@
 	$(hide) mkdir -p $(dir $@)
 	$(hide) $< "${TARGET_PRODUCT}" "${PRODUCT_MODEL}" \
 	    "${PLATFORM_SDK_VERSION}" > $@
-
-include $(CLEAR_VARS)
-
-# This file is deprecated and is kept round for host tools compatibility with
-# older target filesystem images. It is not necessary to pass a .dtb blob
-# through to QEMU any more.
-
-LOCAL_MODULE := initrd_root_dtb
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(HOST_OUT)/config
-LOCAL_MODULE_STEM := initrd-root.dtb
-LOCAL_SRC_FILES := initrd-root.dtb
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := system_root_dtb
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(HOST_OUT)/config
-LOCAL_MODULE_STEM := system-root.dtb
-LOCAL_SRC_FILES := system-root.dtb
-
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := gsi_fstab
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(HOST_OUT)/config
-LOCAL_MODULE_STEM := gsi.fstab
-LOCAL_SRC_FILES := gsi.fstab
-
-include $(BUILD_PREBUILT)
diff --git a/shared/config/CleanSpec.mk b/shared/config/CleanSpec.mk
index aa2a605..6551673 100644
--- a/shared/config/CleanSpec.mk
+++ b/shared/config/CleanSpec.mk
@@ -43,4 +43,5 @@
 # Remove gps.vsoc.so and android.hardware.gnss@1.0-impl.so
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/gps.vsoc.so)
 $(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/lib/hw/android.hardware.gnss@1.0-impl.so)
-$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.gnss@1.0-service)
\ No newline at end of file
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.gnss@1.0-service)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/vendor/bin/hw/android.hardware.drm@1.2-service.clearkey)
diff --git a/shared/config/fstab b/shared/config/fstab
new file mode 100644
index 0000000..05d62f9
--- /dev/null
+++ b/shared/config/fstab
@@ -0,0 +1,12 @@
+boot /boot emmc defaults recoveryonly
+system /system ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+# Add all non-dynamic partitions except system, after this comment
+/dev/block/by-name/userdata /data ext4 nodev,noatime,nosuid,errors=panic wait,fileencryption=aes-256-xts:aes-256-cts
+/dev/block/by-name/metadata /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable
+/dev/block/by-name/cache /cache ext4 nodev,noatime,nosuid,errors=panic wait
+# Add all dynamic partitions except system, after this comment
+vendor /vendor ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+product /product ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+system_ext /system_ext ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+/dev/block/zram0 none swap defaults zramsize=75%
+/tmp /sdcard none defaults,bind recoveryonly
diff --git a/shared/config/fstab.composite b/shared/config/fstab.composite
new file mode 100644
index 0000000..ed5b7e3
--- /dev/null
+++ b/shared/config/fstab.composite
@@ -0,0 +1,12 @@
+boot /boot emmc defaults recoveryonly
+system /system ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+# Add all non-dynamic partitions except system, after this comment
+/dev/block/by-name/userdata /data ext4 nodev,noatime,nosuid,errors=panic wait,fileencryption=aes-256-xts:aes-256-cts
+/dev/block/by-name/cache /cache ext4 nodev,noatime,nosuid,errors=panic wait
+/dev/block/by-name/metadata /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable
+# Add all dynamic partitions except system, after this comment
+vendor /vendor ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+product /product ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+system_ext /system_ext ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+/dev/block/zram0 none swap defaults zramsize=75%
+/tmp /sdcard none defaults,bind recoveryonly
diff --git a/shared/config/fstab.dtb b/shared/config/fstab.dtb
deleted file mode 100644
index dee5587..0000000
--- a/shared/config/fstab.dtb
+++ /dev/null
@@ -1,6 +0,0 @@
-boot /boot emmc defaults recoveryonly
-/dev/block/vdb /data ext4 nodev,noatime,nosuid,errors=panic wait,fileencryption=aes-256-xts:aes-256-cts
-/dev/block/vdc /cache ext4 nodev,noatime,nosuid,errors=panic wait
-/dev/block/vdd /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable
-/dev/block/zram0 none swap defaults zramsize=75%
-/tmp /sdcard none defaults,bind recoveryonly
diff --git a/shared/config/fstab.initrd b/shared/config/fstab.initrd
deleted file mode 100644
index c07c7f1..0000000
--- a/shared/config/fstab.initrd
+++ /dev/null
@@ -1,9 +0,0 @@
-boot /boot emmc defaults recoveryonly
-/dev/block/vda /system ext4 noatime,ro,errors=panic wait
-/dev/block/vdb /data ext4 nodev,noatime,nosuid,errors=panic wait,fileencryption=aes-256-xts:aes-256-cts
-/dev/block/vdc /cache ext4 nodev,noatime,nosuid,errors=panic wait
-/dev/block/vdd /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable
-/dev/block/vde /vendor ext4 noatime,ro,errors=panic wait
-/dev/block/vdf /product ext4 noatime,ro,errors=panic wait
-/dev/block/zram0 none swap defaults zramsize=75%
-/tmp /sdcard none defaults,bind recoveryonly
diff --git a/shared/config/fstab.initrd-dynamic-partitions b/shared/config/fstab.initrd-dynamic-partitions
deleted file mode 100644
index 551e168..0000000
--- a/shared/config/fstab.initrd-dynamic-partitions
+++ /dev/null
@@ -1,11 +0,0 @@
-boot /boot emmc defaults recoveryonly
-system /system ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
-# Add all non-dynamic partitions except system, after this comment
-/dev/block/vdb /data ext4 nodev,noatime,nosuid,errors=panic wait,fileencryption=aes-256-xts:aes-256-cts
-/dev/block/vdc /cache ext4 nodev,noatime,nosuid,errors=panic wait
-/dev/block/vdd /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable,first_stage_mount
-# Add all dynamic partitions except system, after this comment
-vendor /vendor ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
-product /product ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
-/dev/block/zram0 none swap defaults zramsize=75%
-/tmp /sdcard none defaults,bind recoveryonly
diff --git a/shared/config/gsi.fstab b/shared/config/gsi.fstab
deleted file mode 100644
index 76c902b..0000000
--- a/shared/config/gsi.fstab
+++ /dev/null
@@ -1,2 +0,0 @@
-/dev/block/vde /vendor ext4 noatime,ro,errors=panic wait
-/dev/block/vdf /product ext4 noatime,ro,errors=panic wait
diff --git a/shared/config/init.common.rc b/shared/config/init.common.rc
index 0c574d1..162da7c 100644
--- a/shared/config/init.common.rc
+++ b/shared/config/init.common.rc
@@ -11,7 +11,17 @@
     chmod 0755 /sys/kernel/debug
     setprop ro.sf.lcd_density ${ro.boot.lcd_density}
     setprop ro.hardware.egl ${ro.boot.hardware.egl}
+    setprop ro.hardware.gralloc ${ro.boot.hardware.gralloc}
+    setprop ro.hardware.hwcomposer ${ro.boot.hardware.hwcomposer}
 
+    # start module load in the background
+    start vendor.insmod_sh
+
+on early-init && property:ro.boot.fstab_name="fstab"
+    mount /dev/block/vdd /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable
+
+on early-init && property:ro.boot.fstab_name="fstab.composite"
+    mount /dev/block/by-name/metadata /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable
 
 on init
     # ZRAM setup
@@ -19,7 +29,7 @@
 
 
 on fs
-    mount_all /vendor/etc/fstab.${ro.hardware}
+    mount_all /vendor/etc/${ro.boot.fstab_name}.${ro.hardware}
     restorecon_recursive /vendor
 
     start setup_wifi
@@ -40,9 +50,11 @@
     chmod 0664 /sys/kernel/debug/ieee80211/phy0/hwsim/ps
     chmod 0664 /sys/kernel/debug/ieee80211/phy1/rc/fixed_rate_idx
 
+
 on post-fs
-    # Set netd memlock rlimit to 8MB b/119279144
-    setrlimit 8 8388608 8388608
+    # set RLIMIT_MEMLOCK to 64MB
+    setrlimit 8 67108864 67108864
+
 
 on post-fs-data
     start vport_trigger
@@ -77,8 +89,14 @@
 # persist.sys.zram_enabled becomes true after boot,
 # we don't want to run swapon_all at that time.
 on sys-boot-completed-set && property:persist.sys.zram_enabled=1
-    swapon_all /vendor/etc/fstab.${ro.hardware}
+    swapon_all /vendor/etc/${ro.boot.fstab_name}.${ro.hardware}
 
+service vendor.insmod_sh /vendor/bin/init.insmod.sh
+    class main
+    user root
+    group root system
+    disabled
+    oneshot
 
 service socket_vsock_proxy /vendor/bin/socket_vsock_proxy -tcp_port=5555 -vsock_port=6520
 
diff --git a/shared/config/init.insmod.sh b/shared/config/init.insmod.sh
new file mode 100755
index 0000000..ccbf716
--- /dev/null
+++ b/shared/config/init.insmod.sh
@@ -0,0 +1,49 @@
+#!/vendor/bin/sh
+
+# 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.
+#
+
+KERNEL_VERSION_NUMBER=`uname -r`
+MAINLINE_STR='mainline'
+if [[ $KERNEL_VERSION_NUMBER == *$MAINLINE_STR* ]]; then
+    IS_MAINLINE=1
+else
+    IS_MAINLINE=0
+fi
+
+KERNEL_VERSION_NUMBER=`echo $KERNEL_VERSION_NUMBER | grep -o -E '^[0-9]+\.[0-9]+'`
+# This folder on cuttlefish contains modules for multiple kernel versions.
+# Hence the need to filter them instead of relying on module.order
+VENDOR_MODULES='/vendor/lib/modules/*.ko'
+
+for f in $VENDOR_MODULES
+do
+    MOD_VERSION=`modinfo $f`
+    MOD_VERSION=`echo $MOD_VERSION | grep -o -E 'vermagic: [0-9a-zA-Z\.-]+'`
+    MOD_VERSION_NUMBER=`echo $MOD_VERSION | grep -o -E '[0-9]+\.[0-9]+'`
+    if [[ $MOD_VERSION == *$MAINLINE_STR* ]]; then
+        IS_MOD_MAINLINE=1
+    else
+        IS_MOD_MAINLINE=0
+    fi
+
+    # TODO (137683279) When we have a few more kernel modules, we'll have to do the module
+    # insertion of least dependencies.
+    if [ $IS_MOD_MAINLINE -eq $IS_MAINLINE ] && [ $MOD_VERSION_NUMBER == $KERNEL_VERSION_NUMBER ]
+    then
+        `insmod $f`
+        echo "Insmod " $f
+    fi
+done
diff --git a/shared/config/init.product.rc b/shared/config/init.product.rc
index a3d10e5..3e49443 100644
--- a/shared/config/init.product.rc
+++ b/shared/config/init.product.rc
@@ -1,2 +1,13 @@
 on early-init
-    setprop ro.setupwizard.mode ${ro.boot.setupwizard_mode}
\ No newline at end of file
+    setprop ro.setupwizard.mode ${ro.boot.setupwizard_mode}
+
+on property:ro.boot.tombstone_transmit=1
+    enable tombstone_transmit
+
+
+service tombstone_transmit /product/bin/tombstone_transmit
+    # Start tombstone_transmit after /data is mounted.
+    class late_start
+    group system
+    user root
+    disabled
\ No newline at end of file
diff --git a/shared/config/init.recovery.common.rc b/shared/config/init.recovery.common.rc
index 1a0280d..6f9ca14 100644
--- a/shared/config/init.recovery.common.rc
+++ b/shared/config/init.recovery.common.rc
@@ -1,6 +1,3 @@
-service socket_vsock_proxy /vendor/bin/socket_vsock_proxy -tcp_port=5555 -vsock_port=6520
-    seclabel u:r:socket_vsock_proxy:s0
-
 service console /system/bin/sh
     class core
     console
@@ -10,8 +7,5 @@
     seclabel u:r:shell:s0
     setenv HOSTNAME console
 
-on boot
-    start socket_vsock_proxy
-
 on property:ro.debuggable=1
     start console
diff --git a/shared/config/initrd-root.dtb b/shared/config/initrd-root.dtb
deleted file mode 100644
index d12be7e..0000000
--- a/shared/config/initrd-root.dtb
+++ /dev/null
Binary files differ
diff --git a/shared/config/initrd-root.dts b/shared/config/initrd-root.dts
deleted file mode 100644
index d27d76a..0000000
--- a/shared/config/initrd-root.dts
+++ /dev/null
@@ -1,51 +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.
- */
-
-/dts-v1/;
-
-/ {
-	firmware {
-		android {
-			compatible = "android,firmware";
-			fstab {
-				compatible = "android,fstab";
-				system {
-					compatible = "android,system";
-					dev = "/dev/block/vda";
-					type = "ext4";
-					mnt_flags = "noatime,ro,errors=panic";
-					fsmgr_flags = "wait";
-				};
-
-				vendor {
-					compatible = "android,vendor";
-					dev = "/dev/block/vde";
-					type = "ext4";
-					mnt_flags = "noatime,ro,errors=panic";
-					fsmgr_flags = "wait";
-				};
-
-				product {
-					compatible = "android,product";
-					dev = "/dev/block/vdf";
-					type = "ext4";
-					mnt_flags = "noatime,ro,errors=panic";
-					fsmgr_flags = "wait";
-				};
-			};
-		};
-	};
-};
diff --git a/shared/config/manifest.xml b/shared/config/manifest.xml
index ad8048d..6cd7bd6 100644
--- a/shared/config/manifest.xml
+++ b/shared/config/manifest.xml
@@ -139,15 +139,10 @@
     <hal format="hidl">
         <name>android.hardware.drm</name>
         <transport>hwbinder</transport>
-        <version>1.2</version>
-        <interface>
-            <name>ICryptoFactory</name>
-            <instance>default</instance>
-        </interface>
-        <interface>
-            <name>IDrmFactory</name>
-            <instance>default</instance>
-        </interface>
+        <fqname>@1.0::ICryptoFactory/default</fqname>
+        <fqname>@1.0::IDrmFactory/default</fqname>
+        <fqname>@1.2::ICryptoFactory/clearkey</fqname>
+        <fqname>@1.2::IDrmFactory/clearkey</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.dumpstate</name>
@@ -158,15 +153,6 @@
             <instance>default</instance>
         </interface>
     </hal>
-    <hal format="hidl">
-        <name>android.hardware.gatekeeper</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IGatekeeper</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
     <!-- TODO (b/130074193): -->
     <hal format="hidl">
         <name>android.hardware.graphics.allocator</name>
@@ -181,7 +167,7 @@
     <hal format="hidl">
         <name>android.hardware.graphics.composer</name>
         <transport>hwbinder</transport>
-        <version>2.1</version>
+        <version>2.2</version>
         <interface>
             <name>IComposer</name>
             <instance>default</instance>
@@ -329,17 +315,15 @@
         </interface>
     </hal>
     -->
-    <!-- TODO (b/130078389):
     <hal format="hidl">
         <name>android.hardware.soundtrigger</name>
         <transport>hwbinder</transport>
-        <version>2.2</version>
+        <version>2.0</version>
         <interface>
             <name>ISoundTriggerHw</name>
             <instance>default</instance>
         </interface>
     </hal>
-    -->
     <!-- TODO (b/130079321):
     <hal format="hidl">
         <name>android.hardware.tetheroffload.config</name>
@@ -365,7 +349,7 @@
     <hal format="hidl">
         <name>android.hardware.usb</name>
         <transport>hwbinder</transport>
-        <version>1.2</version>
+        <version>1.0</version>
         <interface>
             <name>IUsb</name>
             <instance>default</instance>
diff --git a/shared/config/platform_version.h b/shared/config/platform_version.h
deleted file mode 100644
index 52fd218..0000000
--- a/shared/config/platform_version.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * 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.
- */
-#pragma once
-
-#define VSOC_PLATFORM_SDK_VERSION 29
diff --git a/shared/config/system-root.dtb b/shared/config/system-root.dtb
deleted file mode 100644
index 2ebd0d7..0000000
--- a/shared/config/system-root.dtb
+++ /dev/null
Binary files differ
diff --git a/shared/config/system-root.dts b/shared/config/system-root.dts
deleted file mode 100644
index db16f37..0000000
--- a/shared/config/system-root.dts
+++ /dev/null
@@ -1,43 +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.
- */
-
-/dts-v1/;
-
-/ {
-	firmware {
-		android {
-			compatible = "android,firmware";
-			fstab {
-				compatible = "android,fstab";
-				vendor {
-					compatible = "android,vendor";
-					dev = "/dev/block/vde";
-					type = "ext4";
-					mnt_flags = "noatime,ro,errors=panic";
-					fsmgr_flags = "wait";
-				};
-
-				product {
-					compatible = "android,product";
-					dev = "/dev/block/vdf";
-					type = "ext4";
-					mnt_flags = "noatime,ro,errors=panic";
-					fsmgr_flags = "wait";
-				};
-			};
-		};
-	};
-};
diff --git a/shared/device.mk b/shared/device.mk
index 3f1183e..e626c86 100644
--- a/shared/device.mk
+++ b/shared/device.mk
@@ -17,11 +17,9 @@
 # Enable updating of APEXes
 $(call inherit-product, $(SRC_TARGET_DIR)/product/updatable_apex.mk)
 
-PRODUCT_COPY_FILES += device/google/cuttlefish_kernel/4.14-x86_64/kernel:kernel
-
 PRODUCT_SHIPPING_API_LEVEL := 29
-PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS := false
-
+PRODUCT_BUILD_BOOT_IMAGE := true
+PRODUCT_USE_DYNAMIC_PARTITIONS := true
 DISABLE_RILD_OEM_HOOK := true
 
 # Properties that are not vendor-specific. These will go in the product
@@ -30,9 +28,8 @@
 PRODUCT_PRODUCT_PROPERTIES := \
     persist.adb.tcp.port=5555 \
     persist.traced.enable=1 \
-    persist.heapprofd.enable=1 \
     ro.com.google.locationfeatures=1 \
- 
+
 # Explanation of specific properties:
 #   debug.hwui.swap_with_damage avoids boot failure on M http://b/25152138
 #   ro.opengles.version OpenGLES 3.0
@@ -46,6 +43,7 @@
     ro.logd.size=1M \
     ro.opengles.version=196608 \
     wifi.interface=wlan0 \
+    persist.sys.zram_enabled=1 \
 
 # Below is a list of properties we probably should get rid of.
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -63,32 +61,26 @@
 # Packages for various GCE-specific utilities
 #
 PRODUCT_PACKAGES += \
-    audiotop \
-    dhcpcd_wlan0 \
-    gce_fs_monitor \
     socket_forward_proxy \
     socket_vsock_proxy \
     usbforward \
-    VSoCService \
+    CuttlefishService \
     wpa_supplicant.vsoc.conf \
     vsoc_input_service \
     vport_trigger \
     rename_netiface \
     ip_link_add \
     setup_wifi \
+    tombstone_transmit \
     vsock_logcat \
+    tombstone_producer \
 
 #
 # Packages for AOSP-available stuff we use from the framework
 #
 PRODUCT_PACKAGES += \
-    dhcpcd-6.8.2 \
-    dhcpcd-6.8.2.conf \
     e2fsck \
     ip \
-    network \
-    perf \
-    scp \
     sleep \
     tcpdump \
     wpa_supplicant \
@@ -104,9 +96,13 @@
     libGLESv1_CM_swiftshader \
     libGLESv2_swiftshader
 
+# GL implementation for virgl
+PRODUCT_PACKAGES += \
+    libGLES_mesa
+
 DEVICE_PACKAGE_OVERLAYS := device/google/cuttlefish/shared/overlay
-PRODUCT_AAPT_CONFIG := normal large xlarge hdpi xhdpi
-# PRODUCT_AAPT_PREF_CONFIG is intentionally not set to pick up every density resources.
+# PRODUCT_AAPT_CONFIG and PRODUCT_AAPT_PREF_CONFIG are intentionally not set to
+# pick up every density resources.
 
 #
 # General files
@@ -152,37 +148,12 @@
     frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \
     frameworks/native/data/etc/android.software.app_widgets.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.app_widgets.xml \
     system/bt/vendor_libs/test_vendor_lib/data/controller_properties.json:vendor/etc/bluetooth/controller_properties.json \
-
-
-#
-# The fstab requires special handling. For system-as-root builds, we *must*
-# retrieve the vendor partition mount options from DTB, as system must be
-# "pristine" to support GSI. For builds with an initrd, we prefer not to
-# rely on DTB, and *must* retrieve the partition mount options from an fstab
-# in the initrd instead. (In either case, the fstab *must also* be installed to
-# /vendor/etc)
-#
-ifeq ($(TARGET_BUILD_SYSTEM_ROOT_IMAGE),true)
-PRODUCT_COPY_FILES += \
-    device/google/cuttlefish/shared/config/fstab.dtb:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_ivsh \
-    device/google/cuttlefish/shared/config/fstab.dtb:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_cvm \
-
-else ifeq ($(TARGET_USE_DYNAMIC_PARTITIONS),true)
-PRODUCT_COPY_FILES += \
-    device/google/cuttlefish/shared/config/fstab.initrd-dynamic-partitions:$(TARGET_COPY_OUT_RAMDISK)/fstab.cutf_ivsh \
-    device/google/cuttlefish/shared/config/fstab.initrd-dynamic-partitions:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_ivsh \
-    device/google/cuttlefish/shared/config/fstab.initrd-dynamic-partitions:$(TARGET_COPY_OUT_RAMDISK)/fstab.cutf_cvm \
-    device/google/cuttlefish/shared/config/fstab.initrd-dynamic-partitions:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_cvm \
-
-else
-PRODUCT_COPY_FILES += \
-    device/google/cuttlefish/shared/config/fstab.initrd:$(TARGET_COPY_OUT_RAMDISK)/fstab.cutf_ivsh \
-    device/google/cuttlefish/shared/config/fstab.initrd:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_ivsh \
-    device/google/cuttlefish/shared/config/fstab.initrd:$(TARGET_COPY_OUT_RAMDISK)/fstab.cutf_cvm \
-    device/google/cuttlefish/shared/config/fstab.initrd:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_cvm \
-
-endif
-
+    device/google/cuttlefish/shared/config/fstab:$(TARGET_COPY_OUT_RAMDISK)/fstab.cutf_ivsh \
+    device/google/cuttlefish/shared/config/fstab:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_ivsh \
+    device/google/cuttlefish/shared/config/fstab:$(TARGET_COPY_OUT_RAMDISK)/fstab.cutf_cvm \
+    device/google/cuttlefish/shared/config/fstab:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.cutf_cvm \
+    device/google/cuttlefish/shared/config/fstab.composite:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.composite.cutf_ivsh \
+    device/google/cuttlefish/shared/config/fstab.composite:$(TARGET_COPY_OUT_VENDOR)/etc/fstab.composite.cutf_cvm \
 
 #
 # USB Specific
@@ -209,18 +180,18 @@
 #
 PRODUCT_PACKAGES += \
     hwcomposer.drm_minigbm \
-    hwcomposer.cutf_ivsh \
-    hwcomposer.cutf_cvm \
+    hwcomposer.cutf_cvm_ashmem \
+    hwcomposer.cutf_ivsh_ashmem \
     hwcomposer-stats \
-    android.hardware.graphics.composer@2.1-impl \
-    android.hardware.graphics.composer@2.1-service
+    android.hardware.graphics.composer@2.2-impl \
+    android.hardware.graphics.composer@2.2-service
 
 #
 # Gralloc HAL
 #
 PRODUCT_PACKAGES += \
     gralloc.minigbm \
-    gralloc.cutf \
+    gralloc.cutf_ashmem \
     android.hardware.graphics.mapper@2.0-impl-2.1 \
     android.hardware.graphics.allocator@2.0-impl \
     android.hardware.graphics.allocator@2.0-service
@@ -247,6 +218,8 @@
 # Drm HAL
 #
 PRODUCT_PACKAGES += \
+    android.hardware.drm@1.0-impl \
+    android.hardware.drm@1.0-service \
     android.hardware.drm@1.2-service.clearkey
 
 #
@@ -269,9 +242,7 @@
 # Gatekeeper
 #
 PRODUCT_PACKAGES += \
-    gatekeeper.cutf \
-    android.hardware.gatekeeper@1.0-impl \
-    android.hardware.gatekeeper@1.0-service
+    android.hardware.gatekeeper@1.0-service.software
 
 #
 # GPS
@@ -368,5 +339,11 @@
 
 endif
 
+#
+# Shell script Vendor Module Loading
+#
+PRODUCT_COPY_FILES += \
+   $(LOCAL_PATH)/config/init.insmod.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.insmod.sh \
+
 # Host packages to install
 PRODUCT_HOST_PACKAGES += socket_forward_proxy socket_vsock_proxy
diff --git a/shared/go/device.mk b/shared/go/device.mk
index 60c2815..7c7f719 100644
--- a/shared/go/device.mk
+++ b/shared/go/device.mk
@@ -19,4 +19,8 @@
 # By default, enable zram; experiment can toggle the flag,
 # which takes effect on boot
 PRODUCT_PROPERTY_OVERRIDES += \
-    persist.sys.zram_enabled=1
+    ro.statsd.enable=true \
+    pm.dexopt.downgrade_after_inactive_days=10 \
+    pm.dexopt.shared=quicken \
+    dalvik.vm.heapgrowthlimit=128m \
+    dalvik.vm.heapsize=256m \
diff --git a/shared/go_512/device.mk b/shared/go_512/device.mk
index 32701cc..4a95a73 100644
--- a/shared/go_512/device.mk
+++ b/shared/go_512/device.mk
@@ -19,4 +19,8 @@
 # By default, enable zram; experiment can toggle the flag,
 # which takes effect on boot
 PRODUCT_PROPERTY_OVERRIDES += \
-    persist.sys.zram_enabled=1
+    ro.statsd.enable=true \
+    pm.dexopt.downgrade_after_inactive_days=10 \
+    pm.dexopt.shared=quicken \
+    dalvik.vm.heapgrowthlimit=128m \
+    dalvik.vm.heapsize=256m \
diff --git a/shared/gsi/device.mk b/shared/gsi/device.mk
deleted file mode 100644
index 6dfdd8e..0000000
--- a/shared/gsi/device.mk
+++ /dev/null
@@ -1,70 +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.
-#
-
-DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
-
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)
-$(call inherit-product, frameworks/native/build/phone-xhdpi-2048-dalvik-heap.mk)
-
-# use include below so PRODUCT_SHIPPING_API_LEVEL can be overriden
-include device/google/cuttlefish/shared/device.mk
-PRODUCT_SHIPPING_API_LEVEL := 28
-
-TARGET_BUILD_SYSTEM_ROOT_IMAGE ?= true
-
-PRODUCT_CHARACTERISTICS := nosdcard
-
-PRODUCT_PROPERTY_OVERRIDES += \
-    keyguard.no_require_sim=true \
-    ro.cdma.home.operator.alpha=Android \
-    ro.cdma.home.operator.numeric=302780 \
-    vendor.rild.libpath=libcuttlefish-ril.so \
-
-PRODUCT_PACKAGES += \
-    MmsService \
-    Phone \
-    PhoneService \
-    Telecom \
-    TeleService \
-    libcuttlefish-ril \
-    rild \
-
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml
-
-# libGLES_android, SdkSetup, and vintf are in current AOSP GSI
-# SdkSetup may need to be removed when it's moved to emulator vendor.
-PRODUCT_PACKAGES += \
-    libGLES_android \
-    SdkSetup \
-    vintf
-
-# Needed for /system/priv-app/SdkSetup/SdkSetup.apk to pass CTS android.permission2.cts.PrivappPermissionsTest.
-PRODUCT_COPY_FILES += \
-    device/generic/goldfish/data/etc/permissions/privapp-permissions-goldfish.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-goldfish.xml
-
-# NFC:
-#   Provide default libnfc-nci.conf file for devices that does not have one in
-#   vendor/etc because aosp system image (of aosp_$arch products) is going to
-#   be used as GSI.
-#   May need to remove the following for newly launched devices in P since this
-#   NFC configuration file should be in vendor/etc, instead of system/etc
-PRODUCT_COPY_FILES += \
-    device/generic/common/nfc/libnfc-nci.conf:system/etc/libnfc-nci.conf
-
-# These flags are important for the GSI, but break auto
-PRODUCT_ENFORCE_RRO_TARGETS := framework-res
-PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS := device/google/cuttlefish/shared/overlay
diff --git a/shared/gsi/wpa_supplicant_overlay.conf b/shared/gsi/wpa_supplicant_overlay.conf
deleted file mode 100644
index e1f530d..0000000
--- a/shared/gsi/wpa_supplicant_overlay.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-disable_scan_offload=1
-p2p_disabled=1
-tdls_external_control=1
diff --git a/shared/phone/device.mk b/shared/phone/device.mk
index 115f80f..3063000 100644
--- a/shared/phone/device.mk
+++ b/shared/phone/device.mk
@@ -43,11 +43,3 @@
 # These flags are important for the GSI, but break auto
 PRODUCT_ENFORCE_RRO_TARGETS := framework-res
 PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS := device/google/cuttlefish/shared/overlay
-
-TARGET_USE_DYNAMIC_PARTITIONS ?= true
-ifeq ($(TARGET_USE_DYNAMIC_PARTITIONS),true)
-  PRODUCT_USE_DYNAMIC_PARTITIONS := true
-  TARGET_BUILD_SYSTEM_ROOT_IMAGE := false
-else
-  TARGET_BUILD_SYSTEM_ROOT_IMAGE ?= true
-endif
diff --git a/shared/tablet_3g/device.mk b/shared/phone/device_vendor.mk
similarity index 62%
rename from shared/tablet_3g/device.mk
rename to shared/phone/device_vendor.mk
index bb2ab68..0df1f4a 100644
--- a/shared/tablet_3g/device.mk
+++ b/shared/phone/device_vendor.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2017 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.
@@ -16,26 +16,37 @@
 
 DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
 
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base_telephony.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/handheld_vendor.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/telephony_vendor.mk)
+
+PRODUCT_COPY_FILES += \
+    frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml
+
 $(call inherit-product, frameworks/native/build/phone-xhdpi-2048-dalvik-heap.mk)
 $(call inherit-product, device/google/cuttlefish/shared/device.mk)
 
-PRODUCT_CHARACTERISTICS := tablet,nosdcard
+PRODUCT_CHARACTERISTICS := nosdcard
 
 PRODUCT_PROPERTY_OVERRIDES += \
     keyguard.no_require_sim=true \
     ro.cdma.home.operator.alpha=Android \
     ro.cdma.home.operator.numeric=302780 \
+    ro.com.android.dataroaming=true \
     vendor.rild.libpath=libcuttlefish-ril.so \
 
+# TODO: not existing anymore?
 PRODUCT_PACKAGES += \
-    MmsService \
     Phone \
     PhoneService \
-    Telecom \
-    TeleService \
+
+PRODUCT_PACKAGES += \
     libcuttlefish-ril \
-    rild \
+    libcuttlefish-rild
 
 PRODUCT_COPY_FILES += \
     frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml
+
+# TODO: below should be moved to vendor
+# These flags are important for the GSI, but break auto
+PRODUCT_ENFORCE_RRO_TARGETS := framework-res
+PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS := device/google/cuttlefish/shared/overlay
diff --git a/shared/releasetools.py b/shared/releasetools.py
index e401139..198fcc2 100644
--- a/shared/releasetools.py
+++ b/shared/releasetools.py
@@ -25,6 +25,7 @@
 #   know that an image is present in source build but not in target build.
 USERIMAGE_PARTITIONS = [
     "product",
+    "system_ext",
 ]
 
 
diff --git a/shared/sepolicy/OWNERS b/shared/sepolicy/OWNERS
new file mode 100644
index 0000000..854d2e9
--- /dev/null
+++ b/shared/sepolicy/OWNERS
@@ -0,0 +1,13 @@
+adamshih@google.com
+adelva@google.com
+alanstokes@google.com
+bowgotsai@google.com
+jbires@google.com
+jeffv@google.com
+jgalenson@google.com
+jiyong@google.com
+nnk@google.com
+smoreland@google.com
+sspatil@google.com
+tomcherry@google.com
+trong@google.com
diff --git a/shared/sepolicy/bug_map b/shared/sepolicy/bug_map
deleted file mode 100644
index 7c22604..0000000
--- a/shared/sepolicy/bug_map
+++ /dev/null
@@ -1,5 +0,0 @@
-kernel kernel system 130424539
-logpersist logpersist capability 132911257
-shell adbd vsock_socket 131904985
-system_server system_server process 65201432
-vendor_init kernel system 130424539
diff --git a/shared/sepolicy/genfs_contexts b/shared/sepolicy/genfs_contexts
deleted file mode 100644
index 9a0b876..0000000
--- a/shared/sepolicy/genfs_contexts
+++ /dev/null
@@ -1,9 +0,0 @@
-genfscon sysfs /devices/pnp0/00:00/rtc  u:object_r:sysfs_rtc:s0
-genfscon sysfs /devices/pci0000:00/0000:00:07.0/virtio5/net u:object_r:sysfs_net:s0 # (new) qemu buried_eth0 & wlan0
-genfscon sysfs /devices/pci0000:00/0000:00:08.0/virtio6/net u:object_r:sysfs_net:s0 # (new) qemu rmnet0
-genfscon sysfs /devices/pci0000:00/0000:00:09.0/virtio8/net u:object_r:sysfs_net:s0 # (new) crosvm buried_eth0 & wlan0
-genfscon sysfs /devices/pci0000:00/0000:00:0a.0/virtio9/net u:object_r:sysfs_net:s0 # (new) crosvm rmnet0
-genfscon sysfs /devices/pci0000:00/0000:00:09.0/virtio7/net u:object_r:sysfs_net:s0 # (old) qemu buried_eth0 & wlan0
-genfscon sysfs /devices/pci0000:00/0000:00:0a.0/virtio8/net u:object_r:sysfs_net:s0 # (old) qemu rmnet0
-genfscon sysfs /devices/pci0000:00/0000:00:0b.0/virtio10/net u:object_r:sysfs_net:s0 # (old) crosvm buried_eth0 & wlan0
-genfscon sysfs /devices/pci0000:00/0000:00:0c.0/virtio11/net u:object_r:sysfs_net:s0 # (old) crosvm rmnet0
diff --git a/shared/sepolicy/hal_graphics_composer_default.te b/shared/sepolicy/hal_graphics_composer_default.te
deleted file mode 100644
index 1a9bd47..0000000
--- a/shared/sepolicy/hal_graphics_composer_default.te
+++ /dev/null
@@ -1,2 +0,0 @@
-#============= hal_graphics_composer_default ==============
-vndbinder_use(hal_graphics_composer_default)
diff --git a/shared/sepolicy/private/file_contexts b/shared/sepolicy/private/file_contexts
new file mode 100644
index 0000000..0b92144
--- /dev/null
+++ b/shared/sepolicy/private/file_contexts
@@ -0,0 +1,4 @@
+#############################
+# Product files
+#
+/product/bin/tombstone_transmit  u:object_r:tombstone_transmit_exec:s0
diff --git a/shared/sepolicy/private/property_contexts b/shared/sepolicy/private/property_contexts
new file mode 100644
index 0000000..72cef1b
--- /dev/null
+++ b/shared/sepolicy/private/property_contexts
@@ -0,0 +1 @@
+ro.boot.vsock_tombstone_port  u:object_r:vsock_tombstone_port_prop:s0
diff --git a/shared/sepolicy/private/tombstone_transmit.te b/shared/sepolicy/private/tombstone_transmit.te
new file mode 100644
index 0000000..a17ed10
--- /dev/null
+++ b/shared/sepolicy/private/tombstone_transmit.te
@@ -0,0 +1,12 @@
+type tombstone_transmit, domain, coredomain;
+type tombstone_transmit_exec, exec_type, file_type;
+
+init_daemon_domain(tombstone_transmit);
+
+type vsock_tombstone_port_prop, property_type;
+get_prop(tombstone_transmit, vsock_tombstone_port_prop)
+
+allow tombstone_transmit self:capability net_admin;
+r_dir_file(tombstone_transmit, tombstone_data_file)
+
+allow tombstone_transmit self:{ vsock_socket } create_socket_perms_no_ioctl;
diff --git a/shared/sepolicy/property_contexts b/shared/sepolicy/property_contexts
deleted file mode 100644
index b7ac336..0000000
--- a/shared/sepolicy/property_contexts
+++ /dev/null
@@ -1,12 +0,0 @@
-bt.rootcanal_test_console  u:object_r:hal_bluetooth_sim_prop:s0
-sys.cf.ser.  u:object_r:sys_cf_ser_prop:s0
-vendor.ser.  u:object_r:vendor_ser_prop:s0
-ro.boot.cuttlefish_ril  u:object_r:cuttlefish_ril_prop:s0
-ro.boot.hardware.egl u:object_r:cf_graphics_config_prop:s0 exact string
-ro.boot.vsock_frames_port  u:object_r:vsock_frames_port_prop:s0
-ro.boot.vsock_logcat_port  u:object_r:vsock_logcat_port_prop:s0
-ro.cdma.home.operator.alpha  u:object_r:vendor_init_radio_prop:s0
-ro.cdma.home.operator.numeric  u:object_r:vendor_init_radio_prop:s0
-vendor.vsock_logcat_status  u:object_r:vsock_logcat_status_prop:s0
-qemu.sf.back_camera_caps  u:object_r:hal_camera_prop:s0
-qemu.sf.front_camera_caps  u:object_r:hal_camera_prop:s0
diff --git a/shared/sepolicy/adbd.te b/shared/sepolicy/vendor/adbd.te
similarity index 100%
rename from shared/sepolicy/adbd.te
rename to shared/sepolicy/vendor/adbd.te
diff --git a/shared/sepolicy/bootanim.te b/shared/sepolicy/vendor/bootanim.te
similarity index 90%
rename from shared/sepolicy/bootanim.te
rename to shared/sepolicy/vendor/bootanim.te
index 11bd2bc..9ac7954 100644
--- a/shared/sepolicy/bootanim.te
+++ b/shared/sepolicy/vendor/bootanim.te
@@ -3,3 +3,4 @@
 allow bootanim kernel:fd use;
 
 allow bootanim self:process execmem;
+gpu_access(bootanim)
diff --git a/shared/sepolicy/vendor/bug_map b/shared/sepolicy/vendor/bug_map
new file mode 100644
index 0000000..77b48f0
--- /dev/null
+++ b/shared/sepolicy/vendor/bug_map
@@ -0,0 +1,10 @@
+init system_lib_file dir b/133444385
+init system_lib_file file b/133444385
+kernel kernel system b/130424539
+logpersist logpersist capability b/132911257
+platform_app radio_prop property_service b/140284352
+priv_app proc_net file b/124422390
+shell adbd vsock_socket b/131904985
+system_server system_server process b/65201432
+vendor_init kernel system b/130424539
+zygote ramdump_app process b/139558100
diff --git a/shared/sepolicy/cameraserver.te b/shared/sepolicy/vendor/cameraserver.te
similarity index 100%
rename from shared/sepolicy/cameraserver.te
rename to shared/sepolicy/vendor/cameraserver.te
diff --git a/shared/sepolicy/device.te b/shared/sepolicy/vendor/device.te
similarity index 80%
rename from shared/sepolicy/device.te
rename to shared/sepolicy/vendor/device.te
index c29c2bf..38f0a2f 100644
--- a/shared/sepolicy/device.te
+++ b/shared/sepolicy/vendor/device.te
@@ -5,4 +5,3 @@
 type region_screen_device, dev_type;
 type socket_forward_device, dev_type;
 type virtual_serial_device, dev_type;
-typeattribute system_block_device super_block_device_type;
diff --git a/shared/sepolicy/file.te b/shared/sepolicy/vendor/file.te
similarity index 81%
rename from shared/sepolicy/file.te
rename to shared/sepolicy/vendor/file.te
index fa8ea02..a90bdd0 100644
--- a/shared/sepolicy/file.te
+++ b/shared/sepolicy/vendor/file.te
@@ -3,3 +3,4 @@
 type sensors_hal_socket, file_type;
 type tombstone_snapshot_file, file_type;
 type var_run_system_file, file_type;
+type sysfs_gpu, fs_type, sysfs_type;
diff --git a/shared/sepolicy/file_contexts b/shared/sepolicy/vendor/file_contexts
similarity index 60%
rename from shared/sepolicy/file_contexts
rename to shared/sepolicy/vendor/file_contexts
index 6beb444..69c5ad8 100644
--- a/shared/sepolicy/file_contexts
+++ b/shared/sepolicy/vendor/file_contexts
@@ -1,13 +1,26 @@
 ##########################
 # Devices
 #
-/dev/block/vda  u:object_r:system_block_device:s0
-/dev/block/vdb  u:object_r:userdata_block_device:s0
-/dev/block/vdc  u:object_r:cache_block_device:s0
-/dev/block/vdd  u:object_r:metadata_block_device:s0
-/dev/block/vde  u:object_r:system_block_device:s0
-/dev/block/vdf  u:object_r:system_block_device:s0
+
+# crosvm block devices
+/dev/block/pci/pci0000:00/0000:00:01\.0/by-name/boot u:object_r:boot_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:01\.0/by-name/metadata u:object_r:metadata_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:01\.0/by-name/misc u:object_r:misc_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:01\.0/by-name/super u:object_r:super_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:01\.0/by-name/userdata u:object_r:userdata_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:01\.0/by-name/cache u:object_r:cache_block_device:s0
+# qemu block devices
+/dev/block/pci/pci0000:00/0000:00:03\.0/by-name/boot u:object_r:boot_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:03\.0/by-name/metadata u:object_r:metadata_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:03\.0/by-name/misc u:object_r:misc_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:03\.0/by-name/super u:object_r:super_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:03\.0/by-name/userdata u:object_r:userdata_block_device:s0
+/dev/block/pci/pci0000:00/0000:00:03\.0/by-name/cache u:object_r:cache_block_device:s0
+
 /dev/block/zram0  u:object_r:swap_block_device:s0
+/dev/dri u:object_r:gpu_device:s0
+/dev/dri/card0  u:object_r:graphics_device:s0
+/dev/dri/renderD128  u:object_r:gpu_device:s0
 /dev/e2e_managed  u:object_r:region_e2e_test_device:s0
 /dev/e2e_manager  u:object_r:region_e2e_test_device:s0
 /dev/e2e_primary  u:object_r:region_e2e_test_device:s0
@@ -41,22 +54,29 @@
 /vendor/bin/hw/libcuttlefish-rild  u:object_r:libcuttlefish_rild_exec:s0
 /vendor/bin/hw/android\.hardware\.power\.stats@1\.0-service\.mock  u:object_r:hal_power_stats_default_exec:s0
 /vendor/bin/hw/android\.hardware\.bluetooth@1\.0-service\.sim  u:object_r:hal_bluetooth_sim_exec:s0
-/vendor/bin/hw/android\.hardware\.drm@1\.1-service\.clearkey  u:object_r:hal_drm_default_exec:s0
+/vendor/bin/hw/android\.hardware\.drm@1\.2-service\.clearkey  u:object_r:hal_drm_clearkey_exec:s0
+/vendor/bin/hw/android\.hardware\.drm@1\.2-service-lazy\.clearkey  u:object_r:hal_drm_clearkey_exec:s0
 /vendor/bin/hw/android\.hardware\.dumpstate@1\.0-service\.cuttlefish  u:object_r:hal_dumpstate_impl_exec:s0
+/vendor/bin/hw/android\.hardware\.gatekeeper@1\.0-service\.software  u:object_r:hal_gatekeeper_default_exec:s0
 /vendor/bin/hw/android\.hardware\.health@2\.0-service\.cuttlefish  u:object_r:hal_health_default_exec:s0
 /vendor/bin/hw/android\.hardware\.health\.storage@1\.0-service\.cuttlefish u:object_r:hal_health_storage_default_exec:s0
 /vendor/bin/hw/android\.hardware\.neuralnetworks@1\.2-service-sample-.*   u:object_r:hal_neuralnetworks_sample_exec:s0
 /vendor/bin/hw/android\.hardware\.vibrator@1\.3-service\.example u:object_r:hal_vibrator_default_exec:s0
+/vendor/bin/hw/android\.hardware\.tv\.cec@1\.0-service\.mock u:object_r:hal_tv_cec_mock_exec:s0
 /vendor/bin/ip_link_add  u:object_r:ip_link_add_exec:s0
 /vendor/bin/setup_wifi  u:object_r:setup_wifi_exec:s0
 /vendor/bin/hw/android\.hardware\.sensors@2\.0-service\.mock  u:object_r:hal_sensors_default_exec:s0
 /vendor/bin/hw/android\.hardware\.input\.classifier@1\.0-service.default  u:object_r:hal_input_classifier_default_exec:s0
 /vendor/bin/hw/android\.hardware\.thermal@2\.0-service\.mock  u:object_r:hal_thermal_default_exec:s0
 /vendor/bin/hw/android\.hardware\.authsecret@1\.0-service  u:object_r:hal_authsecret_default_exec:s0
+/vendor/bin/init\.insmod\.sh  u:object_r:init_insmod_sh_exec:s0
 
 /vendor/lib(64)?/cuttlefish_auto_resources.so  u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libdrm.so  u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/libglapi.so  u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/dri/.* u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/hw/android\.hardware\.graphics\.mapper@2\.0-impl-2\.1\.so u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/hw/gralloc.vsoc.so  u:object_r:same_process_hal_file:s0
-/vendor/lib(64)?/hw/gralloc.cutf.so  u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/hw/gralloc.cutf_ashmem.so  u:object_r:same_process_hal_file:s0
+/vendor/lib(64)?/hw/gralloc.minigbm.so  u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/libcuttlefish_fs.so  u:object_r:same_process_hal_file:s0
 /vendor/lib(64)?/vsoc_lib.so  u:object_r:same_process_hal_file:s0
diff --git a/shared/sepolicy/gceservice.te b/shared/sepolicy/vendor/gceservice.te
similarity index 100%
rename from shared/sepolicy/gceservice.te
rename to shared/sepolicy/vendor/gceservice.te
diff --git a/shared/sepolicy/vendor/genfs_contexts b/shared/sepolicy/vendor/genfs_contexts
new file mode 100644
index 0000000..28f55bf
--- /dev/null
+++ b/shared/sepolicy/vendor/genfs_contexts
@@ -0,0 +1,21 @@
+genfscon sysfs /devices/pnp0/00:00/rtc  u:object_r:sysfs_rtc:s0 # qemu virtual rtc
+genfscon sysfs /devices/platform/rtc-test.0/rtc  u:object_r:sysfs_rtc:s0 # crosvm has no rtc, use kernel test driver
+genfscon sysfs /devices/platform/rtc-test.1/rtc  u:object_r:sysfs_rtc:s0 # crosvm has no rtc, use kernel test driver
+genfscon sysfs /devices/platform/rtc-test.2/rtc  u:object_r:sysfs_rtc:s0 # crosvm has no rtc, use kernel test driver
+genfscon sysfs /devices/pci0000:00/0000:00:04.0/virtio2/net u:object_r:sysfs_net:s0 # (new) qemu composite buried_eth0 & wlan0
+genfscon sysfs /devices/pci0000:00/0000:00:05.0/virtio3/net u:object_r:sysfs_net:s0 # (new) qemu composite rmnet0
+genfscon sysfs /devices/pci0000:00/0000:00:06.0/virtio5/net u:object_r:sysfs_net:s0 # (new) crosvm composite buried_eth0 & wlan0
+genfscon sysfs /devices/pci0000:00/0000:00:07.0/virtio6/net u:object_r:sysfs_net:s0 # (new) crosvm composite rmnet0
+genfscon sysfs /devices/pci0000:00/0000:00:07.0/virtio5/net u:object_r:sysfs_net:s0 # (new) qemu buried_eth0 & wlan0
+genfscon sysfs /devices/pci0000:00/0000:00:08.0/virtio6/net u:object_r:sysfs_net:s0 # (new) qemu rmnet0
+genfscon sysfs /devices/pci0000:00/0000:00:09.0/virtio8/net u:object_r:sysfs_net:s0 # (new) crosvm buried_eth0 & wlan0
+genfscon sysfs /devices/pci0000:00/0000:00:0a.0/virtio9/net u:object_r:sysfs_net:s0 # (new) crosvm rmnet0
+genfscon sysfs /devices/pci0000:00/0000:00:09.0/virtio7/net u:object_r:sysfs_net:s0 # (old) qemu buried_eth0 & wlan0
+genfscon sysfs /devices/pci0000:00/0000:00:0a.0/virtio8/net u:object_r:sysfs_net:s0 # (old) qemu rmnet0
+genfscon sysfs /devices/pci0000:00/0000:00:0b.0/virtio10/net u:object_r:sysfs_net:s0 # (old) crosvm buried_eth0 & wlan0
+genfscon sysfs /devices/pci0000:00/0000:00:0c.0/virtio11/net u:object_r:sysfs_net:s0 # (old) crosvm rmnet0
+genfscon sysfs /devices/pci0000:00/0000:00:0b.0/device u:object_r:sysfs_gpu:s0
+genfscon sysfs /devices/pci0000:00/0000:00:0b.0/subsystem_device u:object_r:sysfs_gpu:s0
+genfscon sysfs /devices/pci0000:00/0000:00:0b.0/subsystem_vendor u:object_r:sysfs_gpu:s0
+genfscon sysfs /devices/pci0000:00/0000:00:0b.0/uevent u:object_r:sysfs_gpu:s0
+genfscon sysfs /devices/pci0000:00/0000:00:0b.0/vendor u:object_r:sysfs_gpu:s0
diff --git a/shared/sepolicy/vendor/google/ramdump_app.te b/shared/sepolicy/vendor/google/ramdump_app.te
new file mode 100644
index 0000000..c054f6d
--- /dev/null
+++ b/shared/sepolicy/vendor/google/ramdump_app.te
@@ -0,0 +1,2 @@
+type ramdump_app, domain;
+
diff --git a/shared/sepolicy/vendor/google/seapp_contexts b/shared/sepolicy/vendor/google/seapp_contexts
new file mode 100644
index 0000000..0be8810
--- /dev/null
+++ b/shared/sepolicy/vendor/google/seapp_contexts
@@ -0,0 +1,2 @@
+# Ramdump app
+user=_app seinfo=platform name=com.android.ramdump domain=ramdump_app type=app_data_file levelFrom=all
diff --git a/shared/sepolicy/hal_bluetooth_sim.te b/shared/sepolicy/vendor/hal_bluetooth_sim.te
similarity index 100%
rename from shared/sepolicy/hal_bluetooth_sim.te
rename to shared/sepolicy/vendor/hal_bluetooth_sim.te
diff --git a/shared/sepolicy/hal_camera_default.te b/shared/sepolicy/vendor/hal_camera_default.te
similarity index 100%
rename from shared/sepolicy/hal_camera_default.te
rename to shared/sepolicy/vendor/hal_camera_default.te
diff --git a/shared/sepolicy/vendor/hal_drm_clearkey.te b/shared/sepolicy/vendor/hal_drm_clearkey.te
new file mode 100644
index 0000000..2da9420
--- /dev/null
+++ b/shared/sepolicy/vendor/hal_drm_clearkey.te
@@ -0,0 +1,10 @@
+# policy for /vendor/bin/hw/android.hardware.drm clearkey service
+type hal_drm_clearkey, domain;
+type hal_drm_clearkey_exec, exec_type, vendor_file_type, file_type;
+
+init_daemon_domain(hal_drm_clearkey)
+
+hal_server_domain(hal_drm_clearkey, hal_drm)
+
+vndbinder_use(hal_drm_clearkey);
+
diff --git a/shared/sepolicy/hal_drm_default.te b/shared/sepolicy/vendor/hal_drm_default.te
similarity index 100%
rename from shared/sepolicy/hal_drm_default.te
rename to shared/sepolicy/vendor/hal_drm_default.te
diff --git a/shared/sepolicy/hal_dumpstate_impl.te b/shared/sepolicy/vendor/hal_dumpstate_impl.te
similarity index 100%
rename from shared/sepolicy/hal_dumpstate_impl.te
rename to shared/sepolicy/vendor/hal_dumpstate_impl.te
diff --git a/shared/sepolicy/hal_gnss_default.te b/shared/sepolicy/vendor/hal_gnss_default.te
similarity index 100%
rename from shared/sepolicy/hal_gnss_default.te
rename to shared/sepolicy/vendor/hal_gnss_default.te
diff --git a/shared/sepolicy/hal_graphics_allocator.te b/shared/sepolicy/vendor/hal_graphics_allocator.te
similarity index 100%
rename from shared/sepolicy/hal_graphics_allocator.te
rename to shared/sepolicy/vendor/hal_graphics_allocator.te
diff --git a/shared/sepolicy/vendor/hal_graphics_allocator_default.te b/shared/sepolicy/vendor/hal_graphics_allocator_default.te
new file mode 100644
index 0000000..00f38cc
--- /dev/null
+++ b/shared/sepolicy/vendor/hal_graphics_allocator_default.te
@@ -0,0 +1 @@
+gpu_access(hal_graphics_allocator_default)
diff --git a/shared/sepolicy/hal_graphics_composer.te b/shared/sepolicy/vendor/hal_graphics_composer.te
similarity index 75%
rename from shared/sepolicy/hal_graphics_composer.te
rename to shared/sepolicy/vendor/hal_graphics_composer.te
index 05ea544..5b4f974 100644
--- a/shared/sepolicy/hal_graphics_composer.te
+++ b/shared/sepolicy/vendor/hal_graphics_composer.te
@@ -3,5 +3,7 @@
 allow hal_graphics_composer_server hal_graphics_allocator_default_tmpfs:file read;
 allow hal_graphics_composer_server region_screen_device:chr_file rw_file_perms;
 allow hal_graphics_composer_server self:{ socket vsock_socket } create_socket_perms_no_ioctl;
+gpu_access(hal_graphics_composer_server)
 
 get_prop(hal_graphics_composer_server, vsock_frames_port_prop)
+get_prop(hal_graphics_composer_server, cuttlefish_config_server_port_prop)
diff --git a/shared/sepolicy/vendor/hal_graphics_composer_default.te b/shared/sepolicy/vendor/hal_graphics_composer_default.te
new file mode 100644
index 0000000..6b89710
--- /dev/null
+++ b/shared/sepolicy/vendor/hal_graphics_composer_default.te
@@ -0,0 +1,4 @@
+vndbinder_use(hal_graphics_composer_default)
+
+allow hal_graphics_composer_default self:netlink_kobject_uevent_socket { bind create read };
+get_prop(hal_graphics_composer_default, cf_graphics_config_prop)
diff --git a/shared/sepolicy/hal_neuralnetworks_sample.te b/shared/sepolicy/vendor/hal_neuralnetworks_sample.te
similarity index 100%
rename from shared/sepolicy/hal_neuralnetworks_sample.te
rename to shared/sepolicy/vendor/hal_neuralnetworks_sample.te
diff --git a/shared/sepolicy/hal_sensors.te b/shared/sepolicy/vendor/hal_sensors.te
similarity index 100%
rename from shared/sepolicy/hal_sensors.te
rename to shared/sepolicy/vendor/hal_sensors.te
diff --git a/shared/sepolicy/vendor/hal_tv_cec_mock.te b/shared/sepolicy/vendor/hal_tv_cec_mock.te
new file mode 100644
index 0000000..6d96f96
--- /dev/null
+++ b/shared/sepolicy/vendor/hal_tv_cec_mock.te
@@ -0,0 +1,11 @@
+# hal_tv_cec_mock service
+type hal_tv_cec_mock, domain;
+hal_server_domain(hal_tv_cec_mock, hal_tv_cec);
+# Allow tv cec HAL's mock implementation to use vendor-binder service
+vndbinder_use(hal_tv_cec_mock);
+
+allow hal_tv_cec_mock hal_allocator:fd use;
+
+type hal_tv_cec_mock_exec, exec_type, file_type, vendor_file_type;
+
+init_daemon_domain(hal_tv_cec_mock)
diff --git a/shared/sepolicy/hal_vehicle_default.te b/shared/sepolicy/vendor/hal_vehicle_default.te
similarity index 100%
rename from shared/sepolicy/hal_vehicle_default.te
rename to shared/sepolicy/vendor/hal_vehicle_default.te
diff --git a/shared/sepolicy/init.te b/shared/sepolicy/vendor/init.te
similarity index 100%
rename from shared/sepolicy/init.te
rename to shared/sepolicy/vendor/init.te
diff --git a/shared/sepolicy/vendor/init_insmod_sh.te b/shared/sepolicy/vendor/init_insmod_sh.te
new file mode 100644
index 0000000..5400a37
--- /dev/null
+++ b/shared/sepolicy/vendor/init_insmod_sh.te
@@ -0,0 +1,11 @@
+type init_insmod_sh, domain;
+type init_insmod_sh_exec, exec_type, vendor_file_type, file_type;
+
+init_daemon_domain(init_insmod_sh)
+
+allow init_insmod_sh vendor_shell_exec:file rx_file_perms;
+allow init_insmod_sh vendor_toolbox_exec:file rx_file_perms;
+
+# Allow insmod
+allow init_insmod_sh self:capability sys_module;
+allow init_insmod_sh vendor_file:system module_load;
diff --git a/shared/sepolicy/ip_link_add.te b/shared/sepolicy/vendor/ip_link_add.te
similarity index 100%
rename from shared/sepolicy/ip_link_add.te
rename to shared/sepolicy/vendor/ip_link_add.te
diff --git a/shared/sepolicy/kernel.te b/shared/sepolicy/vendor/kernel.te
similarity index 100%
rename from shared/sepolicy/kernel.te
rename to shared/sepolicy/vendor/kernel.te
diff --git a/shared/sepolicy/libcuttlefish_rild.te b/shared/sepolicy/vendor/libcuttlefish_rild.te
similarity index 70%
rename from shared/sepolicy/libcuttlefish_rild.te
rename to shared/sepolicy/vendor/libcuttlefish_rild.te
index 627dd3f..8894919 100644
--- a/shared/sepolicy/libcuttlefish_rild.te
+++ b/shared/sepolicy/vendor/libcuttlefish_rild.te
@@ -1,4 +1,3 @@
-type cuttlefish_ril_prop, property_type;
 type libcuttlefish_rild, domain;
 type libcuttlefish_rild_exec, exec_type, vendor_file_type, file_type;
 
@@ -11,4 +10,6 @@
 # Failing to create these sockets appears to be non-fatal
 net_domain(libcuttlefish_rild)
 
-get_prop(libcuttlefish_rild, cuttlefish_ril_prop)
+get_prop(libcuttlefish_rild, cuttlefish_config_server_port_prop)
+
+allow libcuttlefish_rild self:{ socket vsock_socket } create_socket_perms_no_ioctl;
diff --git a/shared/sepolicy/logpersist.te b/shared/sepolicy/vendor/logpersist.te
similarity index 82%
rename from shared/sepolicy/logpersist.te
rename to shared/sepolicy/vendor/logpersist.te
index 22e6da5..7152409 100644
--- a/shared/sepolicy/logpersist.te
+++ b/shared/sepolicy/vendor/logpersist.te
@@ -4,3 +4,5 @@
 allow logpersist device:dir r_dir_perms;
 allow logpersist device:fifo_file ra_file_perms;
 allow logpersist virtual_serial_device:chr_file ra_file_perms;
+
+allowxperm logpersist device:fifo_file ioctl F2FS_IOC_SET_PIN_FILE;
diff --git a/shared/sepolicy/mediacodec.te b/shared/sepolicy/vendor/mediacodec.te
similarity index 100%
rename from shared/sepolicy/mediacodec.te
rename to shared/sepolicy/vendor/mediacodec.te
diff --git a/shared/sepolicy/netd.te b/shared/sepolicy/vendor/netd.te
similarity index 100%
rename from shared/sepolicy/netd.te
rename to shared/sepolicy/vendor/netd.te
diff --git a/shared/sepolicy/vendor/platform_app.te b/shared/sepolicy/vendor/platform_app.te
new file mode 100644
index 0000000..775e964
--- /dev/null
+++ b/shared/sepolicy/vendor/platform_app.te
@@ -0,0 +1 @@
+gpu_access(platform_app)
diff --git a/shared/sepolicy/vendor/priv_app.te b/shared/sepolicy/vendor/priv_app.te
new file mode 100644
index 0000000..05c9e47
--- /dev/null
+++ b/shared/sepolicy/vendor/priv_app.te
@@ -0,0 +1 @@
+gpu_access(priv_app)
diff --git a/shared/sepolicy/vendor/property.te b/shared/sepolicy/vendor/property.te
new file mode 100644
index 0000000..19e3896
--- /dev/null
+++ b/shared/sepolicy/vendor/property.te
@@ -0,0 +1 @@
+type cuttlefish_config_server_port_prop, property_type;
diff --git a/shared/sepolicy/vendor/property_contexts b/shared/sepolicy/vendor/property_contexts
new file mode 100644
index 0000000..5127c67
--- /dev/null
+++ b/shared/sepolicy/vendor/property_contexts
@@ -0,0 +1,19 @@
+bt.rootcanal_test_console  u:object_r:hal_bluetooth_sim_prop:s0
+qemu.sf.back_camera_caps  u:object_r:hal_camera_prop:s0
+qemu.sf.front_camera_caps  u:object_r:hal_camera_prop:s0
+ro.boot.cuttlefish_config_server_port  u:object_r:cuttlefish_config_server_port_prop:s0
+ro.boot.fstab_name u:object_r:cf_fstab_name_prop:s0 exact string
+ro.boot.hardware.egl u:object_r:cf_graphics_config_prop:s0 exact string
+ro.boot.hardware.gralloc u:object_r:cf_graphics_config_prop:s0 exact string
+ro.boot.hardware.hwcomposer u:object_r:cf_graphics_config_prop:s0 exact string
+ro.boot.lcd_density u:object_r:cf_graphics_config_prop:s0 exact int
+ro.boot.vsock_frames_port  u:object_r:vsock_frames_port_prop:s0
+ro.boot.vsock_logcat_port  u:object_r:vsock_logcat_port_prop:s0
+ro.cdma.home.operator.alpha  u:object_r:vendor_init_radio_prop:s0
+ro.cdma.home.operator.numeric  u:object_r:vendor_init_radio_prop:s0
+sys.cf.ser.  u:object_r:sys_cf_ser_prop:s0
+vendor.ser.  u:object_r:vendor_ser_prop:s0
+vendor.vsock_logcat_status  u:object_r:vsock_logcat_status_prop:s0
+hwc.drm.device u:object_r:cf_graphics_config_prop:s0 exact string
+hwc.drm.exclude_non_hwfb_imports u:object_r:cf_graphics_config_prop:s0 exact int
+hwc.drm.use_overlay_planes u:object_r:cf_graphics_config_prop:s0 exact int
diff --git a/shared/sepolicy/recovery.te b/shared/sepolicy/vendor/recovery.te
similarity index 100%
rename from shared/sepolicy/recovery.te
rename to shared/sepolicy/vendor/recovery.te
diff --git a/shared/sepolicy/rename_netiface.te b/shared/sepolicy/vendor/rename_netiface.te
similarity index 100%
rename from shared/sepolicy/rename_netiface.te
rename to shared/sepolicy/vendor/rename_netiface.te
diff --git a/shared/sepolicy/seapp_contexts b/shared/sepolicy/vendor/seapp_contexts
similarity index 100%
rename from shared/sepolicy/seapp_contexts
rename to shared/sepolicy/vendor/seapp_contexts
diff --git a/shared/sepolicy/service.te b/shared/sepolicy/vendor/service.te
similarity index 100%
rename from shared/sepolicy/service.te
rename to shared/sepolicy/vendor/service.te
diff --git a/shared/sepolicy/service_contexts b/shared/sepolicy/vendor/service_contexts
similarity index 100%
rename from shared/sepolicy/service_contexts
rename to shared/sepolicy/vendor/service_contexts
diff --git a/shared/sepolicy/setup_wifi.te b/shared/sepolicy/vendor/setup_wifi.te
similarity index 100%
rename from shared/sepolicy/setup_wifi.te
rename to shared/sepolicy/vendor/setup_wifi.te
diff --git a/shared/sepolicy/shell.te b/shared/sepolicy/vendor/shell.te
similarity index 100%
rename from shared/sepolicy/shell.te
rename to shared/sepolicy/vendor/shell.te
diff --git a/shared/sepolicy/socket_forward_proxy.te b/shared/sepolicy/vendor/socket_forward_proxy.te
similarity index 100%
rename from shared/sepolicy/socket_forward_proxy.te
rename to shared/sepolicy/vendor/socket_forward_proxy.te
diff --git a/shared/sepolicy/socket_vsock_proxy.te b/shared/sepolicy/vendor/socket_vsock_proxy.te
similarity index 100%
rename from shared/sepolicy/socket_vsock_proxy.te
rename to shared/sepolicy/vendor/socket_vsock_proxy.te
diff --git a/shared/sepolicy/surfaceflinger.te b/shared/sepolicy/vendor/surfaceflinger.te
similarity index 83%
rename from shared/sepolicy/surfaceflinger.te
rename to shared/sepolicy/vendor/surfaceflinger.te
index 877d012..05774e7 100644
--- a/shared/sepolicy/surfaceflinger.te
+++ b/shared/sepolicy/vendor/surfaceflinger.te
@@ -2,3 +2,4 @@
 
 # Read GCE initial metadata file
 allow surfaceflinger initial_metadata_file:file r_file_perms;
+gpu_access(surfaceflinger)
diff --git a/shared/sepolicy/vendor/system_app.te b/shared/sepolicy/vendor/system_app.te
new file mode 100644
index 0000000..4a85066
--- /dev/null
+++ b/shared/sepolicy/vendor/system_app.te
@@ -0,0 +1 @@
+gpu_access(system_app)
diff --git a/shared/sepolicy/system_server.te b/shared/sepolicy/vendor/system_server.te
similarity index 94%
rename from shared/sepolicy/system_server.te
rename to shared/sepolicy/vendor/system_server.te
index 703eeb5..23497fc 100644
--- a/shared/sepolicy/system_server.te
+++ b/shared/sepolicy/vendor/system_server.te
@@ -5,3 +5,4 @@
 # (system/sepolicy) contains a corresponding neverallow which would cause build-time errors if the
 # allow execmem rule were added here.
 permissive system_server;
+gpu_access(system_server)
diff --git a/shared/sepolicy/vendor/te_macros b/shared/sepolicy/vendor/te_macros
new file mode 100644
index 0000000..d49e378
--- /dev/null
+++ b/shared/sepolicy/vendor/te_macros
@@ -0,0 +1,9 @@
+#####################################
+# gpu_access(client_domain)
+# Allow client_domain to communicate with the virgl GPU
+define(`gpu_access', `
+allow $1 gpu_device:dir { open read search };
+allow $1 gpu_device:chr_file { getattr read write };
+allow $1 graphics_device:chr_file { getattr };
+allow $1 sysfs_gpu:file { getattr open read };
+')
diff --git a/shared/sepolicy/ueventd.te b/shared/sepolicy/vendor/ueventd.te
similarity index 100%
rename from shared/sepolicy/ueventd.te
rename to shared/sepolicy/vendor/ueventd.te
diff --git a/shared/sepolicy/vendor/untrusted_app_all.te b/shared/sepolicy/vendor/untrusted_app_all.te
new file mode 100644
index 0000000..c429fc2
--- /dev/null
+++ b/shared/sepolicy/vendor/untrusted_app_all.te
@@ -0,0 +1 @@
+gpu_access(untrusted_app_all)
diff --git a/shared/sepolicy/usbforward.te b/shared/sepolicy/vendor/usbforward.te
similarity index 100%
rename from shared/sepolicy/usbforward.te
rename to shared/sepolicy/vendor/usbforward.te
diff --git a/shared/sepolicy/vendor_init.te b/shared/sepolicy/vendor/vendor_init.te
similarity index 82%
rename from shared/sepolicy/vendor_init.te
rename to shared/sepolicy/vendor/vendor_init.te
index 79a1374..e57bec0 100644
--- a/shared/sepolicy/vendor_init.te
+++ b/shared/sepolicy/vendor/vendor_init.te
@@ -1,5 +1,6 @@
 type vendor_init_radio_prop, property_type;
 type cf_graphics_config_prop, property_type;
+type cf_fstab_name_prop, property_type;
 
 allow vendor_init {
   audio_device
@@ -15,3 +16,5 @@
 get_prop(vendor_init, vendor_ser_prop)
 
 get_prop(vendor_init, cf_graphics_config_prop)
+
+get_prop(vendor_init, cf_fstab_name_prop)
diff --git a/shared/sepolicy/vport_trigger.te b/shared/sepolicy/vendor/vport_trigger.te
similarity index 100%
rename from shared/sepolicy/vport_trigger.te
rename to shared/sepolicy/vendor/vport_trigger.te
diff --git a/shared/sepolicy/vsoc_guest_region_e2e_test.te b/shared/sepolicy/vendor/vsoc_guest_region_e2e_test.te
similarity index 100%
rename from shared/sepolicy/vsoc_guest_region_e2e_test.te
rename to shared/sepolicy/vendor/vsoc_guest_region_e2e_test.te
diff --git a/shared/sepolicy/vsoc_input_service.te b/shared/sepolicy/vendor/vsoc_input_service.te
similarity index 100%
rename from shared/sepolicy/vsoc_input_service.te
rename to shared/sepolicy/vendor/vsoc_input_service.te
diff --git a/shared/sepolicy/vsock_logcat.te b/shared/sepolicy/vendor/vsock_logcat.te
similarity index 100%
rename from shared/sepolicy/vsock_logcat.te
rename to shared/sepolicy/vendor/vsock_logcat.te
diff --git a/shared/sepolicy/zygote.te b/shared/sepolicy/vendor/zygote.te
similarity index 100%
rename from shared/sepolicy/zygote.te
rename to shared/sepolicy/vendor/zygote.te
diff --git a/shared/tablet/device.mk b/shared/tablet/device.mk
deleted file mode 100644
index 6038275..0000000
--- a/shared/tablet/device.mk
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Copyright (C) 2017 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.
-#
-
-DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
-
-$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_base.mk)
-$(call inherit-product, frameworks/native/build/tablet-7in-xhdpi-2048-dalvik-heap.mk)
-$(call inherit-product, device/google/cuttlefish/shared/device.mk)
-
-PRODUCT_CHARACTERISTICS := tablet,nosdcard
-
-DEVICE_PACKAGE_OVERLAYS := device/google/gce_x86/overlay_tablet
-
-PRODUCT_COPY_FILES += \
-    frameworks/native/data/etc/tablet_core_hardware.xml:system/etc/permissions/tablet_core_hardware.xml
-
diff --git a/shared/tv/device.mk b/shared/tv/device.mk
index be4ddda..25eb85e 100644
--- a/shared/tv/device.mk
+++ b/shared/tv/device.mk
@@ -20,3 +20,9 @@
 $(call inherit-product, $(SRC_TARGET_DIR)/product/core_minimal.mk)
 $(call inherit-product, device/google/cuttlefish/shared/device.mk)
 
+# HDMI CEC HAL
+PRODUCT_PACKAGES += android.hardware.tv.cec@1.0-service.mock
+
+# Enabling managed profiles
+PRODUCT_COPY_FILES += frameworks/native/data/etc/android.software.managed_users.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.managed_users.xml
+DEVICE_PACKAGE_OVERLAYS += device/google/cuttlefish/shared/tv/overlay
diff --git a/shared/tv/overlay/frameworks/base/core/res/res/values/config.xml b/shared/tv/overlay/frameworks/base/core/res/res/values/config.xml
new file mode 100644
index 0000000..195a8a7
--- /dev/null
+++ b/shared/tv/overlay/frameworks/base/core/res/res/values/config.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<resources>
+    <!--  Maximum number of supported users -->
+    <integer name="config_multiuserMaximumUsers">4</integer>
+</resources>
diff --git a/tests/src/com/android/tests/tombstoneTransmit/TombstoneTransmitTest.java b/tests/src/com/android/tests/tombstoneTransmit/TombstoneTransmitTest.java
new file mode 100644
index 0000000..4be6d5a
--- /dev/null
+++ b/tests/src/com/android/tests/tombstoneTransmit/TombstoneTransmitTest.java
@@ -0,0 +1,167 @@
+/*
+ * 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.
+ */
+
+package com.android.tests.tombstoneTransmit;
+
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.TestDeviceOptions;
+import com.android.tradefed.device.TestDeviceOptions.InstanceType;
+import com.android.tradefed.util.CommandResult;
+import com.android.tradefed.util.CommandStatus;
+import com.android.tradefed.util.FileUtil;
+import com.android.tradefed.util.StreamUtil;
+import com.android.tradefed.log.LogUtil.CLog;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import java.io.IOException;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Tests the tombstone transfer feature available on cuttlefish devices. This
+ * feature is used to transfer tombstones off the guest as they are created.
+ */
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class TombstoneTransmitTest extends BaseHostJUnit4Test {
+    /** Path on the device containing the tombstones */
+    private static final String TOMBSTONE_PATH = "/data/tombstones/";
+    private static final String TOMBSTONE_PRODUCER = "tombstone_producer";
+    private static final int NUM_TOMBSTONES_IN_TEST = 1000;
+
+    /**
+     * Triggers 1000 tombstones on the virtual device and verifies the integrity of each one.
+     * Note that the tombstone generation is chunk'd since the virtual device overwrites the oldest
+     * tombstone once the 500th is created (or 50th in the case of most physical devices).
+     */
+    private static final int NUM_TOMBSTONES_PER_LOOP = 500;
+    @Test
+    public void testTombstoneTransmitIntegrity() throws Exception {
+        InstanceType type = getDevice().getOptions().getInstanceType();
+        // It can't be guaranteed that this test is run on a virtual device.
+        if(!InstanceType.CUTTLEFISH.equals(type) && !InstanceType.REMOTE_NESTED_AVD.equals(type)) {
+            CLog.i("This test must be run on a Cuttlefish device. Aborting.");
+            return;
+        } else {
+            CLog.i("This test IS being run on a Cuttlefish device.");
+        }
+
+        for(int i = 0; i < 2; i++) {
+            clearTombstonesFromCuttlefish();
+            List<String> hostTombstoneListPreCrash = convertFileListToStringList(
+                getDevice().getTombstones());
+            List<String> guestTombstoneListPreCrash = convertFileListToStringList(
+                getTombstonesViaAdb());
+
+            for(int j = 0; j < NUM_TOMBSTONES_PER_LOOP; j++) {
+                CommandResult commandResult = getDevice().executeShellV2Command(TOMBSTONE_PRODUCER);
+                Assert.assertEquals(CommandStatus.FAILED, commandResult.getStatus());
+            }
+
+            List<String> hostTombstoneListPostCrash = 
+                convertFileListToStringList(getDevice().getTombstones());
+            List<String> guestTombstoneListPostCrash = 
+                convertFileListToStringList(getTombstonesViaAdb());
+
+            // Clear out all tombstones pretest.
+            hostTombstoneListPostCrash.removeAll(hostTombstoneListPreCrash);
+            guestTombstoneListPostCrash.removeAll(guestTombstoneListPreCrash);
+
+            CLog.i("===========Host Tombstone Statistics===========");
+            printTombstoneListStats(hostTombstoneListPostCrash);
+            CLog.i("===========Guest Tombstone Statistics===========");
+            printTombstoneListStats(guestTombstoneListPostCrash);
+
+            Assert.assertTrue("Tombstones on guest and host do not match",
+                hostTombstoneListPostCrash.containsAll(guestTombstoneListPostCrash));
+            Assert.assertEquals("Host does not have expected tombstone count in this iteration",
+                hostTombstoneListPostCrash.size(), NUM_TOMBSTONES_PER_LOOP);
+            Assert.assertEquals("Guest does not have expected tombstone count in this iteration",
+                guestTombstoneListPostCrash.size(), NUM_TOMBSTONES_PER_LOOP);
+        }
+    }
+
+    public static void printTombstoneListStats(List<String> tList) {
+        CLog.i("List contains %d tombstones.", tList.size());
+
+        int averageTombstoneLength = 0;
+        for(String tombstone: tList) {
+            averageTombstoneLength += tombstone.length();
+        }
+
+        if(tList.size() != 0) {
+            CLog.i("Average tombstone size is %d.", averageTombstoneLength / tList.size());
+        }
+    }
+
+    public void clearTombstonesFromCuttlefish() throws DeviceNotAvailableException {
+        if (!getDevice().isAdbRoot()) {
+            throw new DeviceNotAvailableException("Device was not root, cannot collect tombstones."
+                , getDevice().getSerialNumber());
+        }
+
+        // Clear all tombstones on AVD
+        CommandResult commandResult = getDevice().
+            executeShellV2Command("rm -rf " + TOMBSTONE_PATH + "*");
+        Assert.assertEquals(CommandStatus.SUCCESS, commandResult.getStatus());
+    }
+
+    // This is blatantly copied from tradefed class NativeDevice's version of getTombstones
+    private List<File> getTombstonesViaAdb() throws DeviceNotAvailableException {
+        List<File> tombstones = new ArrayList<>();
+        if (!getDevice().isAdbRoot()) {
+            throw new DeviceNotAvailableException("Device was not root, cannot collect tombstones."
+                , getDevice().getSerialNumber());
+        }
+
+        for (String tombName : getDevice().getChildren(TOMBSTONE_PATH)) {
+            File tombFile = getDevice().pullFile(TOMBSTONE_PATH + tombName);
+            if (tombFile != null) {
+                tombstones.add(tombFile);
+            }
+        }
+        return tombstones;
+    }
+
+    private List<String> convertFileListToStringList(List<File> inputList) throws IOException {
+        List<String> output = new ArrayList<String>();
+        for(File f: inputList) {
+            output.add(convertFileContentsToString(f));
+        }
+
+        return output;
+    }
+
+    private String convertFileContentsToString(File f) throws IOException {
+        StringBuilder stringBuilder = new StringBuilder();
+        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
+        String line;
+        while ((line = br.readLine()) != null) {
+            stringBuilder.append(line).append('\n');
+        }
+
+        return stringBuilder.toString();
+    }
+}
diff --git a/tests/tombstone-transmit-tests.xml b/tests/tombstone-transmit-tests.xml
new file mode 100644
index 0000000..08e8a25
--- /dev/null
+++ b/tests/tombstone-transmit-tests.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<configuration description="Config for tombstone transfer to host test cases">
+    <option name="test-suite-tag" value="tombstone_transmit_tests" />
+    <option name="test-suite-tag" value="apct" />
+
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
+    <test class="com.android.tradefed.testtype.HostTest" >
+         <option name="jar" value="tombstone_transmit_tests.jar" />
+    </test>
+
+</configuration>
+
diff --git a/vsoc_arm64/BoardConfig.mk b/vsoc_arm64/BoardConfig.mk
index 7bb3c5d..0668328 100644
--- a/vsoc_arm64/BoardConfig.mk
+++ b/vsoc_arm64/BoardConfig.mk
@@ -32,4 +32,4 @@
 TARGET_2ND_CPU_VARIANT := cortex-a53
 TARGET_TRANSLATE_2ND_ARCH := false
 
-BUILD_BROKEN_DUP_RULES := true
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(wildcard device/google/cuttlefish_kernel/4.19-arm64/*.ko)
diff --git a/shared/wear/device.mk b/vsoc_arm64/device.mk
similarity index 66%
rename from shared/wear/device.mk
rename to vsoc_arm64/device.mk
index bc30379..6e0f910 100644
--- a/shared/wear/device.mk
+++ b/vsoc_arm64/device.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2017 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.
@@ -12,10 +12,5 @@
 # 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.
-#
 
-DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
-
-$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_no_telephony.mk)
-$(call inherit-product, device/google/cuttlefish/shared/device.mk)
-
+PRODUCT_COPY_FILES += device/google/cuttlefish_kernel/4.19-arm64/kernel:kernel
diff --git a/vsoc_arm64/phone/aosp_cf.mk b/vsoc_arm64/phone/aosp_cf.mk
new file mode 100644
index 0000000..035a5c5
--- /dev/null
+++ b/vsoc_arm64/phone/aosp_cf.mk
@@ -0,0 +1,49 @@
+#
+# 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.
+#
+
+#
+# All components inherited here go to system image (same as GSI system)
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+
+PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
+    root/init.zygote64_32.rc \
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
+
+PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
+
+#
+# All components inherited here go to product image (same as GSI product)
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
+
+#
+# All components inherited here go to vendor image
+#
+$(call inherit-product, device/google/cuttlefish/shared/phone/device_vendor.mk)
+
+#
+# Special settings for the target
+#
+DEVICE_PACKAGE_OVERLAYS += device/google/cuttlefish/vsoc_arm64/phone/overlay
+
+$(call inherit-product, device/google/cuttlefish/vsoc_arm64/device.mk)
+
+
+PRODUCT_NAME := aosp_cf_arm64_phone
+PRODUCT_DEVICE := vsoc_arm64
+PRODUCT_MODEL := Cuttlefish arm64 phone
diff --git a/vsoc_arm64/phone/device.mk b/vsoc_arm64/phone/device.mk
deleted file mode 100644
index c05d456..0000000
--- a/vsoc_arm64/phone/device.mk
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# Copyright (C) 2017 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, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
-$(call inherit-product, device/google/cuttlefish/shared/phone/device.mk)
-
-PRODUCT_NAME := aosp_cf_arm64_phone
-PRODUCT_DEVICE := vsoc_arm64
-PRODUCT_MODEL := Cuttlefish arm64 phone
-PRODUCT_PACKAGE_OVERLAYS := device/google/cuttlefish/vsoc_arm64/phone/overlay
diff --git a/vsoc_arm64/phone/overlay/frameworks/base/core/res/res/values/config.xml b/vsoc_arm64/phone/overlay/frameworks/base/core/res/res/values/config.xml
index 2b7dfbe..90e50c7 100644
--- a/vsoc_arm64/phone/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/vsoc_arm64/phone/overlay/frameworks/base/core/res/res/values/config.xml
@@ -38,15 +38,15 @@
     <item>Android,android,,,,,,,,310,260,,default,dun,ims</item>
   </string-array>
   <bool name="config_wifi_dual_band_support" translatable="false">true</bool>
-  <bool name="config_bluetooth_address_validation">true</bool>
-  <bool name="config_sms_capable">true</bool>
+  <bool name="config_bluetooth_address_validation" translatable="false">true</bool>
+  <bool name="config_sms_capable" translatable="false">true</bool>
   <string name="default_sms_application" translatable="false">com.android.mms</string>
-  <bool name="config_showNavigationBar">true</bool>
-  <dimen name="config_viewConfigurationTouchSlop">12dp</dimen>
-  <integer name="config_mobile_mtu">1460</integer>
-  <!-- cuttlefish uses mac80211-hwsim, which does not support Preferred
-  Network Offload feature. We disable the use of this feature here. -->
-  <bool translatable="false" name="config_wifi_background_scan_support">false</bool>
+  <bool name="config_showNavigationBar" translatable="false">true</bool>
+  <dimen name="config_viewConfigurationTouchSlop" translatable="false">12dp</dimen>
+  <integer name="config_mobile_mtu" translatable="false">1460</integer>
+  <!-- cuttlefish uses mac80211-hwsim, which does not support the Preferred
+  Network Offload feature. The below config disables the use of this feature. -->
+  <bool name="config_wifi_background_scan_support" translatable="false">false</bool>
   <!--  Maximum number of supported users -->
-  <integer name="config_multiuserMaximumUsers">4</integer>
+  <integer name="config_multiuserMaximumUsers" translatable="false">4</integer>
 </resources>
diff --git a/vsoc_x86/BoardConfig.mk b/vsoc_x86/BoardConfig.mk
index 68b1e63..d4b1772 100644
--- a/vsoc_x86/BoardConfig.mk
+++ b/vsoc_x86/BoardConfig.mk
@@ -23,12 +23,12 @@
 TARGET_BOARD_PLATFORM := vsoc_x86
 TARGET_ARCH := x86
 TARGET_ARCH_VARIANT := x86
-TARGET_2ND_ARCH := arm
-TARGET_TRANSLATE_2ND_ARCH := true
 TARGET_CPU_ABI := x86
-TARGET_2ND_CPU_ABI := armeabi-v7a
-TARGET_2ND_CPU_ABI2 := armeabi
-TARGET_2ND_ARCH_VARIANT := armv7-a-neon
-TARGET_2ND_CPU_VARIANT := generic
+
+TARGET_NATIVE_BRIDGE_ARCH := arm
+TARGET_NATIVE_BRIDGE_ARCH_VARIANT := armv7-a-neon
+TARGET_NATIVE_BRIDGE_CPU_VARIANT := generic
+TARGET_NATIVE_BRIDGE_ABI := armeabi-v7a armeabi
 
 BUILD_BROKEN_DUP_RULES := true
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(wildcard device/google/cuttlefish_kernel/4.19-x86_64/*.ko)
diff --git a/vsoc_x86/auto/device.mk b/vsoc_x86/auto/device.mk
index 233785b..72adfdd 100644
--- a/vsoc_x86/auto/device.mk
+++ b/vsoc_x86/auto/device.mk
@@ -15,6 +15,7 @@
 #
 
 $(call inherit-product, device/google/cuttlefish/shared/auto/device.mk)
+$(call inherit-product, device/google/cuttlefish/vsoc_x86/device.mk)
 
 PRODUCT_NAME := aosp_cf_x86_auto
 PRODUCT_DEVICE := vsoc_x86
diff --git a/vsoc_x86/auto/overlay/frameworks/base/core/res/res/values/config.xml b/vsoc_x86/auto/overlay/frameworks/base/core/res/res/values/config.xml
index e6368cf..b3a4b68 100644
--- a/vsoc_x86/auto/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/vsoc_x86/auto/overlay/frameworks/base/core/res/res/values/config.xml
@@ -18,9 +18,9 @@
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
   <!-- Enable multi-user. -->
-  <bool name="config_enableMultiUserUI">true</bool>
+  <bool name="config_enableMultiUserUI" translatable="false">true</bool>
   <!-- If true, all guest users created on the device will be ephemeral. -->
-  <bool name="config_guestUserEphemeral">true</bool>
+  <bool name="config_guestUserEphemeral" translatable="false">true</bool>
   <!--  Maximum number of users allowed on the device. -->
-  <integer name="config_multiuserMaximumUsers">4</integer>
-</resources>
\ No newline at end of file
+  <integer name="config_multiuserMaximumUsers" translatable="false">4</integer>
+</resources>
diff --git a/shared/wear/device.mk b/vsoc_x86/device.mk
similarity index 66%
copy from shared/wear/device.mk
copy to vsoc_x86/device.mk
index bc30379..ead090e 100644
--- a/shared/wear/device.mk
+++ b/vsoc_x86/device.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2017 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.
@@ -12,10 +12,5 @@
 # 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.
-#
 
-DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
-
-$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_no_telephony.mk)
-$(call inherit-product, device/google/cuttlefish/shared/device.mk)
-
+PRODUCT_COPY_FILES += device/google/cuttlefish_kernel/4.19-x86_64/kernel:kernel
diff --git a/vsoc_x86/pasan/device.mk b/vsoc_x86/go_512_phone/device.mk
similarity index 69%
rename from vsoc_x86/pasan/device.mk
rename to vsoc_x86/go_512_phone/device.mk
index f78c2d1..b33d06e 100644
--- a/vsoc_x86/pasan/device.mk
+++ b/vsoc_x86/go_512_phone/device.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2017 The Android Open Source Project
+# 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.
@@ -14,10 +14,10 @@
 # limitations under the License.
 #
 
-$(call inherit-product, device/google/cuttlefish/shared/phone/device.mk)
+$(call inherit-product, device/google/cuttlefish/shared/go_512/device.mk)
+$(call inherit-product, device/google/cuttlefish/vsoc_x86/phone/device.mk)
 
-PRODUCT_NAME := aosp_cf_x86_pasan
+PRODUCT_NAME := aosp_cf_x86_go_512_phone
 PRODUCT_DEVICE := vsoc_x86
-PRODUCT_MODEL := Cuttlefish x86 phone
-# Intentionally points to phone overlay to avoid code duplication
+PRODUCT_MODEL := Cuttlefish x86 Go 512 phone
 PRODUCT_PACKAGE_OVERLAYS := device/google/cuttlefish/vsoc_x86/phone/overlay
diff --git a/vsoc_x86/go_phone/device.mk b/vsoc_x86/go_phone/device.mk
index ef62d70..b61edc5 100644
--- a/vsoc_x86/go_phone/device.mk
+++ b/vsoc_x86/go_phone/device.mk
@@ -16,6 +16,7 @@
 
 $(call inherit-product, device/google/cuttlefish/shared/go/device.mk)
 $(call inherit-product, device/google/cuttlefish/vsoc_x86/phone/device.mk)
+$(call inherit-product, device/google/cuttlefish/vsoc_x86/device.mk)
 
 PRODUCT_NAME := aosp_cf_x86_go_phone
 PRODUCT_DEVICE := vsoc_x86
diff --git a/vsoc_x86/gsi/aosp_cf_x86_gsi.mk b/vsoc_x86/gsi/aosp_cf_x86_gsi.mk
deleted file mode 100644
index 64ee7a4..0000000
--- a/vsoc_x86/gsi/aosp_cf_x86_gsi.mk
+++ /dev/null
@@ -1,36 +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.
-#
-
-$(call inherit-product, device/google/cuttlefish/shared/gsi/device.mk)
-
-PRODUCT_NAME := aosp_cf_x86_gsi
-PRODUCT_DEVICE := vsoc_x86
-PRODUCT_MODEL := Cuttlefish x86 GSI
-
-# Enable A/B update
-AB_OTA_UPDATER := true
-AB_OTA_PARTITIONS := system
-PRODUCT_PACKAGES += \
-    update_engine \
-    update_verifier
-
-# Needed by Pi newly launched device to pass VtsTrebleSysProp on GSI
-#PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true
-
-# Support addtional P vendor interface
-PRODUCT_EXTRA_VNDK_VERSIONS := 28
-
-PRODUCT_PACKAGE_OVERLAYS := device/google/cuttlefish/vsoc_x86/phone/overlay
diff --git a/vsoc_x86/pasan/aosp_cf.mk b/vsoc_x86/pasan/aosp_cf.mk
new file mode 100644
index 0000000..a1e1abf
--- /dev/null
+++ b/vsoc_x86/pasan/aosp_cf.mk
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+
+#
+# All components inherited here go to system image (same as GSI system)
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
+
+PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
+
+#
+# All components inherited here go to product image (same as GSI product)
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
+
+#
+# All components inherited here go to vendor image
+#
+$(call inherit-product, device/google/cuttlefish/shared/phone/device_vendor.mk)
+
+#
+# Special settings for the target
+#
+DEVICE_PACKAGE_OVERLAYS += device/google/cuttlefish/vsoc_x86/phone/overlay
+
+$(call inherit-product, device/google/cuttlefish/vsoc_x86/device.mk)
+
+
+PRODUCT_NAME := aosp_cf_x86_pasan
+PRODUCT_DEVICE := vsoc_x86
+PRODUCT_MODEL := Cuttlefish x86 phone
diff --git a/vsoc_x86/phone/aosp_cf.mk b/vsoc_x86/phone/aosp_cf.mk
new file mode 100644
index 0000000..7ed1407
--- /dev/null
+++ b/vsoc_x86/phone/aosp_cf.mk
@@ -0,0 +1,44 @@
+#
+# 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.
+#
+
+#
+# All components inherited here go to system image (same as GSI system)
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
+
+PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
+
+#
+# All components inherited here go to product image (same as GSI product)
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
+
+#
+# All components inherited here go to vendor image
+#
+$(call inherit-product, device/google/cuttlefish/shared/phone/device_vendor.mk)
+
+#
+# Special settings for the target
+#
+DEVICE_PACKAGE_OVERLAYS += device/google/cuttlefish/vsoc_x86/phone/overlay
+
+$(call inherit-product, device/google/cuttlefish/vsoc_x86/device.mk)
+
+
+PRODUCT_NAME := aosp_cf_x86_phone
+PRODUCT_DEVICE := vsoc_x86
+PRODUCT_MODEL := Cuttlefish x86 phone
diff --git a/vsoc_x86/phone/device.mk b/vsoc_x86/phone/device.mk
index 0f64829..a3caa19 100644
--- a/vsoc_x86/phone/device.mk
+++ b/vsoc_x86/phone/device.mk
@@ -15,6 +15,7 @@
 #
 
 $(call inherit-product, device/google/cuttlefish/shared/phone/device.mk)
+$(call inherit-product, device/google/cuttlefish/vsoc_x86/device.mk)
 
 PRODUCT_NAME := aosp_cf_x86_phone
 PRODUCT_DEVICE := vsoc_x86
diff --git a/vsoc_x86/phone/overlay/frameworks/base/core/res/res/values/config.xml b/vsoc_x86/phone/overlay/frameworks/base/core/res/res/values/config.xml
index 2b7dfbe..90e50c7 100644
--- a/vsoc_x86/phone/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/vsoc_x86/phone/overlay/frameworks/base/core/res/res/values/config.xml
@@ -38,15 +38,15 @@
     <item>Android,android,,,,,,,,310,260,,default,dun,ims</item>
   </string-array>
   <bool name="config_wifi_dual_band_support" translatable="false">true</bool>
-  <bool name="config_bluetooth_address_validation">true</bool>
-  <bool name="config_sms_capable">true</bool>
+  <bool name="config_bluetooth_address_validation" translatable="false">true</bool>
+  <bool name="config_sms_capable" translatable="false">true</bool>
   <string name="default_sms_application" translatable="false">com.android.mms</string>
-  <bool name="config_showNavigationBar">true</bool>
-  <dimen name="config_viewConfigurationTouchSlop">12dp</dimen>
-  <integer name="config_mobile_mtu">1460</integer>
-  <!-- cuttlefish uses mac80211-hwsim, which does not support Preferred
-  Network Offload feature. We disable the use of this feature here. -->
-  <bool translatable="false" name="config_wifi_background_scan_support">false</bool>
+  <bool name="config_showNavigationBar" translatable="false">true</bool>
+  <dimen name="config_viewConfigurationTouchSlop" translatable="false">12dp</dimen>
+  <integer name="config_mobile_mtu" translatable="false">1460</integer>
+  <!-- cuttlefish uses mac80211-hwsim, which does not support the Preferred
+  Network Offload feature. The below config disables the use of this feature. -->
+  <bool name="config_wifi_background_scan_support" translatable="false">false</bool>
   <!--  Maximum number of supported users -->
-  <integer name="config_multiuserMaximumUsers">4</integer>
+  <integer name="config_multiuserMaximumUsers" translatable="false">4</integer>
 </resources>
diff --git a/vsoc_x86/tv/device.mk b/vsoc_x86/tv/device.mk
index 336993f..7689ee3 100644
--- a/vsoc_x86/tv/device.mk
+++ b/vsoc_x86/tv/device.mk
@@ -15,6 +15,7 @@
 #
 
 $(call inherit-product, device/google/cuttlefish/shared/tv/device.mk)
+$(call inherit-product, device/google/cuttlefish/vsoc_x86/device.mk)
 
 PRODUCT_NAME := aosp_cf_x86_tv
 PRODUCT_DEVICE := vsoc_x86
diff --git a/vsoc_x86_64/BoardConfig.mk b/vsoc_x86_64/BoardConfig.mk
index 8c2fa67..90ab500 100644
--- a/vsoc_x86_64/BoardConfig.mk
+++ b/vsoc_x86_64/BoardConfig.mk
@@ -24,11 +24,21 @@
 TARGET_ARCH := x86_64
 TARGET_ARCH_VARIANT := silvermont
 TARGET_CPU_ABI := x86_64
-TARGET_CPU_ABI_LIST_32_BIT := x86
+
 TARGET_2ND_ARCH := x86
 TARGET_2ND_CPU_ABI := x86
-TARGET_2ND_CPU_ABI2 := x86
 TARGET_2ND_ARCH_VARIANT := silvermont
 TARGET_2ND_CPU_VARIANT := silvermont
-TARGET_TRANSLATE_2ND_ARCH := false
 
+TARGET_NATIVE_BRIDGE_ARCH := arm64
+TARGET_NATIVE_BRIDGE_ARCH_VARIANT := armv8-a
+TARGET_NATIVE_BRIDGE_CPU_VARIANT := generic
+TARGET_NATIVE_BRIDGE_ABI := arm64-v8a
+
+TARGET_NATIVE_BRIDGE_2ND_ARCH := arm
+TARGET_NATIVE_BRIDGE_2ND_ARCH_VARIANT := armv7-a-neon
+TARGET_NATIVE_BRIDGE_2ND_CPU_VARIANT := generic
+TARGET_NATIVE_BRIDGE_2ND_ABI := armeabi-v7a armeabi
+
+BUILD_BROKEN_DUP_RULES := true
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(wildcard device/google/cuttlefish_kernel/4.19-x86_64/*.ko)
diff --git a/shared/wear/device.mk b/vsoc_x86_64/device.mk
similarity index 66%
copy from shared/wear/device.mk
copy to vsoc_x86_64/device.mk
index bc30379..ead090e 100644
--- a/shared/wear/device.mk
+++ b/vsoc_x86_64/device.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2017 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.
@@ -12,10 +12,5 @@
 # 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.
-#
 
-DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
-
-$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_no_telephony.mk)
-$(call inherit-product, device/google/cuttlefish/shared/device.mk)
-
+PRODUCT_COPY_FILES += device/google/cuttlefish_kernel/4.19-x86_64/kernel:kernel
diff --git a/vsoc_x86_64/phone/aosp_cf.mk b/vsoc_x86_64/phone/aosp_cf.mk
new file mode 100644
index 0000000..4e10a23
--- /dev/null
+++ b/vsoc_x86_64/phone/aosp_cf.mk
@@ -0,0 +1,49 @@
+#
+# 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.
+#
+
+#
+# All components inherited here go to system image (same as GSI system)
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
+
+PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \
+    root/init.zygote64_32.rc \
+
+$(call inherit-product, $(SRC_TARGET_DIR)/product/mainline_system.mk)
+
+PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := relaxed
+
+#
+# All components inherited here go to product image (same as GSI product)
+#
+$(call inherit-product, $(SRC_TARGET_DIR)/product/aosp_product.mk)
+
+#
+# All components inherited here go to vendor image
+#
+$(call inherit-product, device/google/cuttlefish/shared/phone/device_vendor.mk)
+
+#
+# Special settings for the target
+#
+DEVICE_PACKAGE_OVERLAYS += device/google/cuttlefish/vsoc_x86_64/phone/overlay
+
+$(call inherit-product, device/google/cuttlefish/vsoc_x86_64/device.mk)
+
+
+PRODUCT_NAME := aosp_cf_x86_64_phone
+PRODUCT_DEVICE := vsoc_x86_64
+PRODUCT_MODEL := Cuttlefish x86_64 phone
diff --git a/vsoc_x86_64/phone/device.mk b/vsoc_x86_64/phone/device.mk
deleted file mode 100644
index 41fb83a..0000000
--- a/vsoc_x86_64/phone/device.mk
+++ /dev/null
@@ -1,24 +0,0 @@
-#
-# Copyright (C) 2017 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, $(SRC_TARGET_DIR)/product/core_64_bit.mk)
-$(call inherit-product, device/google/cuttlefish/shared/phone/device.mk)
-
-PRODUCT_NAME := aosp_cf_x86_64_phone
-PRODUCT_DEVICE := vsoc_x86_64
-PRODUCT_MODEL := Cuttlefish x86_64 phone
-PRODUCT_PACKAGE_OVERLAYS := device/google/cuttlefish/vsoc_x86_64/phone/overlay
-
diff --git a/vsoc_x86_64/phone/overlay/frameworks/base/core/res/res/values/config.xml b/vsoc_x86_64/phone/overlay/frameworks/base/core/res/res/values/config.xml
index 149279a..74469e5 100644
--- a/vsoc_x86_64/phone/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/vsoc_x86_64/phone/overlay/frameworks/base/core/res/res/values/config.xml
@@ -38,15 +38,15 @@
     <item>Android,android,,,,,,,,302,780,,default,dun,ims</item>
   </string-array>
   <bool name="config_wifi_dual_band_support" translatable="false">true</bool>
-  <bool name="config_bluetooth_address_validation">true</bool>
-  <bool name="config_sms_capable">true</bool>
+  <bool name="config_bluetooth_address_validation" translatable="false">true</bool>
+  <bool name="config_sms_capable" translatable="false">true</bool>
   <string name="default_sms_application" translatable="false">com.android.mms</string>
-  <bool name="config_showNavigationBar">true</bool>
-  <dimen name="config_viewConfigurationTouchSlop">12dp</dimen>
-  <integer name="config_mobile_mtu">1460</integer>
-  <!-- cuttlefish uses mac80211-hwsim, which does not support Preferred
-  Network Offload feature. We disable the use of this feature here. -->
-  <bool translatable="false" name="config_wifi_background_scan_support">false</bool>
+  <bool name="config_showNavigationBar" translatable="false">true</bool>
+  <dimen name="config_viewConfigurationTouchSlop" translatable="false">12dp</dimen>
+  <integer name="config_mobile_mtu" translatable="false">1460</integer>
+  <!-- cuttlefish uses mac80211-hwsim, which does not support the Preferred
+  Network Offload feature. The below config disables the use of this feature. -->
+  <bool name="config_wifi_background_scan_support" translatable="false">false</bool>
   <!--  Maximum number of supported users -->
-  <integer name="config_multiuserMaximumUsers">4</integer>
+  <integer name="config_multiuserMaximumUsers" translatable="false">4</integer>
 </resources>
diff --git a/shared/wear/device.mk b/vsoc_x86_noapex/BoardConfig.mk
similarity index 64%
copy from shared/wear/device.mk
copy to vsoc_x86_noapex/BoardConfig.mk
index bc30379..906129e 100644
--- a/shared/wear/device.mk
+++ b/vsoc_x86_noapex/BoardConfig.mk
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2017 The Android Open Source Project
+# 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.
@@ -14,8 +14,11 @@
 # limitations under the License.
 #
 
-DEVICE_MANIFEST_FILE += device/google/cuttlefish/shared/config/manifest.xml
+#
+# x86 target for Cuttlefish that doesn't support APEX.
+#
 
-$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_no_telephony.mk)
-$(call inherit-product, device/google/cuttlefish/shared/device.mk)
+include device/google/cuttlefish/vsoc_x86/BoardConfig.mk
 
+TARGET_FLATTEN_APEX := true
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(wildcard device/google/cuttlefish_kernel/4.19-x86_64/*.ko)
diff --git a/vsoc_x86_noapex/aosp_cf_noapex.mk b/vsoc_x86_noapex/aosp_cf_noapex.mk
new file mode 100644
index 0000000..fcf7607
--- /dev/null
+++ b/vsoc_x86_noapex/aosp_cf_noapex.mk
@@ -0,0 +1,26 @@
+#
+# 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.
+#
+
+# Order of this and the following statements is important.
+# Putting this first in the list takes precedence over the one inherited from
+# aosp_cf.
+PRODUCT_PROPERTY_OVERRIDES += ro.apex.updatable=false
+
+$(call inherit-product, device/google/cuttlefish/vsoc_x86/phone/aosp_cf.mk)
+
+PRODUCT_NAME := aosp_cf_x86_phone_noapex
+PRODUCT_DEVICE := vsoc_x86_noapex
+PRODUCT_MODEL := Cuttlefish x86 phone without APEX support