Skip to content

Releases: wchen99998/aosp

v0.1.10

Choose a tag to compare

@wchen99998 wchen99998 released this 24 Mar 07:25

v0.1.10 Release Notes

Rebuilt aosp_cf_arm64_only_phone_qemu outputs after fixing the guest-side
gfxstream Vulkan deadlock caused by holding ResourceTracker::mLock across the
synchronous vkQueueWaitIdle() round-trip in
ResourceTracker::on_vkQueueSubmitTemplate().

What Changed

  • Updated the guest gfxstream Vulkan encoder so
    on_vkQueueSubmitTemplate() copies the post-submit fence and sync objects it
    needs under mLock, releases the lock, waits in vkQueueWaitIdle(), and
    only then signals the copied-out OS objects.
  • Kept the source delta in the tracked patch snapshot as
    patches/0010-external-mesa3d-gfxstream-avoid-resource-tracker-deadlock.patch
    so the ignored src/ checkout and the repo's recorded source delta stay
    aligned.
  • The change narrows lock scope instead of adding extra waits, so it is not
    expected to introduce a material performance regression.

Why

VulkanQueueSubmitWithCommands intentionally avoids the normal VkEncoder
transport lock for these submits, so the deadlock was not primarily caused by
holding the encoder lock across host I/O. The real lock inversion was in the
guest:

  • render-thread submit flow held ResourceTracker::mLock while synchronously
    waiting for vkQueueWaitIdle()
  • another guest thread could reserve an earlier seqno and then block in
    DestroyMapping::mapHandles_VkFence() waiting on the same mLock
  • the host decoder then waited forever for the earlier seqno packet that the
    guest could no longer flush

Releasing mLock before the host round-trip removes that edge.

Validation

  • m -j$(nproc) completed successfully for
    aosp_cf_arm64_only_phone_qemu on 2026-03-24.
  • ./scripts/prepare_plain_qemu.sh completed successfully against the rebuilt
    image set.
  • Plain-QEMU boot validation completed successfully using the documented
    software-GL path with QEMU_BOOT_HARDWARE_VULKAN=pastel:
    • adb get-state returned device
    • getprop sys.boot_completed returned 1
    • runtime properties confirmed
      ro.hardware.vulkan=pastel, ro.hardware.gralloc=minigbm, and
      ro.hardware.hwcomposer=ranchu
    • /dev/block/by-name/frp resolved to /dev/block/vda2
  • Boot logs captured in /tmp/qemu-v018-hvc0.log and /tmp/qemu-v018-hvc2.log
    show sys.boot_completed=1, and SurfaceFlinger: Boot is finished appears
    in the HVC2 log.
  • DATE=2026-03-24 TAG=v0.1.10 ./scripts/make_release_bundle.sh completed
    successfully and generated the release archive, manifest, checksum file, and
    release notes asset.

Validation Scope

  • This validation confirms the rebuilt image boots and the release bundle is
    usable on the host-safe plain-QEMU software path.
  • It does not reproduce the original gfxstream deadlock end-to-end on a
    gfxstream-capable host, so this release relies on the guest-side root-cause
    analysis and code inspection for the deadlock fix itself.

What Is Included

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-24.tar.zst
  • matching manifest and SHA-256 files
  • generated release notes under release-assets/v0.1.10-notes.md

How To Use It

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the plain-QEMU launch flow.

Release Asset Paths

  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-24.tar.zst
  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-24.manifest.txt
  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-24.sha256
  • release-assets/v0.1.10-notes.md

v0.1.9

Choose a tag to compare

@wchen99998 wchen99998 released this 24 Mar 02:51

Validated update for aosp_cf_arm64_only_phone_qemu on 2026-03-24.

What changed:

  • tracks the full patch series under patches/ instead of relying on ignored src/ state
  • removes Bluetooth, UWB, and NFC from the built QEMU image
  • keeps ro.surface_flinger.max_frame_buffer_acquired_buffers=3 baked into the product
  • includes the additional NFC platform-availability and allowed-deps fixes needed to keep the image buildable after removing the NFC stack

Validation summary:

  • rebuilt aosp_cf_arm64_only_phone_qemu successfully
  • staged a fresh plain-QEMU bundle with scripts/prepare_plain_qemu.sh
  • booted a fresh guest with scripts/run_plain_qemu.sh
  • confirmed sys.boot_completed=1
  • confirmed ro.surface_flinger.max_frame_buffer_acquired_buffers=3
  • confirmed com.android.systemui is running
  • confirmed pm list features reports no Bluetooth, UWB, or NFC features
  • confirmed pm list packages reports no Bluetooth, UWB, or NFC packages
  • confirmed ps -A shows no Bluetooth, UWB, or NFC service processes
  • confirmed getprop exposes no Bluetooth, UWB, or NFC properties
  • confirmed /system/apex and /vendor/apex contain no com.android.bt, com.android.uwb, com.android.nfcservices, or com.google.cf.nfc

Assets:

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-24.tar.zst: compiled build outputs used for the validated boot
  • matching manifest and SHA-256 files
  • v0.1.9-patches.tar.gz: tracked patch series from this repo commit

v0.1.8

Choose a tag to compare

@wchen99998 wchen99998 released this 23 Mar 18:39

Initial release of the validated aosp_cf_arm64_only_phone_qemu build outputs.

What is included:

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-23.tar.zst
  • matching manifest and SHA-256 files

Why this asset format:

  • the direct processed plain-qemu/os-disk.raw boot image is too large to publish comfortably
  • this release instead ships the compiled output set that was used to produce the validated plain-QEMU bundle

How to use:

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the validated no-harness QEMU launch flow.

v0.1.7

Choose a tag to compare

@wchen99998 wchen99998 released this 23 Mar 14:33

v0.1.7 Release Notes

Rebuilt aosp_cf_arm64_only_phone_qemu outputs after baking
ro.surface_flinger.max_frame_buffer_acquired_buffers=3 into the QEMU product.

What Changed

  • Added the QEMU-specific SurfaceFlinger default-property override
    ro.surface_flinger.max_frame_buffer_acquired_buffers=3.
  • Kept the change in the tracked patch snapshot so the ignored src/ checkout
    and the repo's recorded source delta stay aligned.
  • Updated the QEMU graphics contract, validation checklist, and boot notes to
    describe the new baked runtime expectation.

Validation

  • m -j$(nproc) completed successfully for
    aosp_cf_arm64_only_phone_qemu on 2026-03-23.
  • Confirmed the generated output contains
    ro.surface_flinger.max_frame_buffer_acquired_buffers=3 in
    out/target/product/vsoc_arm64_only/vendor/build.prop.
  • ./scripts/prepare_plain_qemu.sh completed successfully against the rebuilt
    image set.
  • DATE=2026-03-23 TAG=v0.1.7 ./scripts/make_release_bundle.sh completed
    successfully and generated the release archive, manifest, checksum file, and
    release notes asset.

What Is Included

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-23.tar.zst
  • matching manifest and SHA-256 files
  • generated release notes under release-assets/v0.1.7-notes.md

How To Use It

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the plain-QEMU launch flow.

Release Asset Paths

  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-23.tar.zst
  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-23.manifest.txt
  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-23.sha256
  • release-assets/v0.1.7-notes.md

v0.1.6

Choose a tag to compare

@wchen99998 wchen99998 released this 22 Mar 06:05

v0.1.6 Release Notes

Rebuilt aosp_cf_arm64_only_phone_qemu outputs after adding guest-side device
permissions for the goldfish address-space and pipe devices required by the
ranchu gralloc allocator.

What Changed

  • Added ueventd entries for /dev/goldfish_address_space and
    /dev/goldfish_pipe_dprctd (0666 system:system) to the shared cuttlefish
    ueventd.rc. These are no-ops on non-QEMU cuttlefish builds because the
    device nodes are never created.
  • Created a QEMU-specific SELinux policy directory
    (shared/config/qemu/sepolicy/) containing:
    • device.te — defines the qemu_device SELinux type
    • domain.te — grants domain-wide access to qemu_device character devices
      (required because gfxstream same-process HAL libraries load into arbitrary
      app domains)
    • file_contexts — labels /dev/goldfish_address_space and
      /dev/goldfish_pipe_dprctd as qemu_device
  • Wired the new sepolicy directory into the QEMU product makefile via
    BOARD_VENDOR_SEPOLICY_DIRS, so only the QEMU product carries these policies.

Why

The ranchu gralloc allocator opens /dev/goldfish_address_space (via
GoldfishAddressSpaceHostMemoryAllocator) and /dev/goldfish_pipe_dprctd (via
qemu_pipe_open("refcount")). Without ueventd rules the kernel-created nodes
default to root:root 0600, and without SELinux labels they are assigned the
unlabeled type — both of which block the allocator from opening them, causing
a fatal crash at boot.

Validation

  • Full plain-QEMU software-GL validation with QEMU_BOOT_HARDWARE_GRALLOC=minigbm:
    • adb -s 127.0.0.1:6570 get-state returned device
    • adb -s 127.0.0.1:6570 shell getprop sys.boot_completed returned 1
    • adb -s 127.0.0.1:6570 shell getprop ro.hardware.gralloc returned
      minigbm
    • adb -s 127.0.0.1:6570 shell ps -A | grep allocator showed
      android.hardware.graphics.allocator-service.minigbm
  • Confirmed vendor/etc/ueventd.rc in the built image contains the goldfish
    entries (/dev/goldfish_address_space and /dev/goldfish_pipe_dprctd).
  • Confirmed vendor/etc/selinux/vendor_file_contexts labels both goldfish
    device nodes as qemu_device.

What Is Included

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-22.tar.zst
  • matching manifest and SHA-256 files
  • generated release notes under release-assets/v0.1.6-notes.md

How To Use It

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the plain-QEMU launch flow.

Release Asset Paths

  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-22.tar.zst
  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-22.manifest.txt
  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-22.sha256
  • release-assets/v0.1.6-notes.md

v0.1.5

Choose a tag to compare

@wchen99998 wchen99998 released this 21 Mar 15:21

Validated aosp_cf_arm64_only_phone_qemu rebuild after fixing the missing
mapper/ranchu product integration in the QEMU flavor.

What is included:

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-21-r2.tar.zst
  • matching manifest and SHA-256 files

What changed:

  • the QEMU product now installs the ranchu mapper VINTF fragment
    vendor/etc/vintf/manifest/mapper.ranchu.xml
  • the cuttlefish graphics SELinux service contexts now include
    mapper/ranchu
  • servicemanager now finds mapper/ranchu in the guest image instead of
    failing on a missing VINTF declaration

Why this asset format:

  • the direct processed plain-qemu/os-disk.raw boot image is too large to publish comfortably
  • this release instead ships the compiled output set that was used to produce the validated plain-QEMU bundle

Validation summary:

  • plain-QEMU software-GL boot still reached adb device and
    sys.boot_completed=1 with QEMU_BOOT_HARDWARE_GRALLOC=minigbm
  • targeted ranchu validation on this non-gfxstream host progressed past the
    old missing-mapper failure and now aborts later with
    GoldfishAddressSpaceHostMemoryAllocator failed to open, which is the
    expected host-pipe limitation on this machine

How to use:

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the validated no-harness QEMU launch flow.

v0.1.4

Choose a tag to compare

@wchen99998 wchen99998 released this 21 Mar 13:48

v0.1.4 Release Notes

Rebuilt aosp_cf_arm64_only_phone_qemu outputs after fixing the QEMU gralloc
selector to key off ro.boot.hardware.gralloc during early-init.

What Changed

  • init.vendor.qemu.rc now selects the ranchu allocator from the boot property
    instead of the later-derived ro.hardware.gralloc property.
  • This avoids the early-init ordering bug where allocator.rc could still
    leave the default minigbm service selected even when
    QEMU_BOOT_HARDWARE_GRALLOC=ranchu.
  • The main graphics-contract and validation docs were updated to describe the
    boot-property-based selector.

What Is Included

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-21-r1.tar.zst
  • matching manifest and SHA-256 files
  • generated release notes under release-assets/v0.1.4-notes.md

How To Use It

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the plain-QEMU launch flow.

Release Asset Paths

  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-21-r1.tar.zst
  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-21-r1.manifest.txt
  • release-assets/aosp_cf_arm64_only_phone_qemu-out-2026-03-21-r1.sha256
  • release-assets/v0.1.4-notes.md

v0.1.4-temp1

v0.1.4-temp1 Pre-release
Pre-release

Choose a tag to compare

@wchen99998 wchen99998 released this 21 Mar 13:25

Initial release of the validated aosp_cf_arm64_only_phone_qemu build outputs.

What is included:

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-21.tar.zst
  • matching manifest and SHA-256 files

Why this asset format:

  • the direct processed plain-qemu/os-disk.raw boot image is too large to publish comfortably
  • this release instead ships the compiled output set that was used to produce the validated plain-QEMU bundle

How to use:

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the validated no-harness QEMU launch flow.

v0.1.3 — Dual gralloc backend support (standalone)

Choose a tag to compare

@wchen99998 wchen99998 released this 21 Mar 13:25

v0.1.3 Release Notes

Validated aosp_cf_arm64_only_phone_qemu build outputs with dual gralloc
backend support (minigbm + ranchu).

What Changed

  • The QEMU product now ships both gralloc backends as standalone vendor
    binaries (not APEXes):
    • android.hardware.graphics.allocator-service.minigbm + mapper.minigbm
      — default for plain-QEMU/software-GL
    • android.hardware.graphics.allocator-service.ranchu + mapper.ranchu
      — gfxstream-native, for gfxstream-capable hosts
  • The QEMU init fragment (init.vendor.qemu.rc) stops the default minigbm
    allocator and starts the ranchu one when ro.hardware.gralloc=ranchu.
  • SELinux file_contexts added for the ranchu allocator binary and mapper.
  • The goldfish allocator-service.ranchu module no longer bundles init_rc or
    vintf_fragments so it coexists with the minigbm allocator on Cuttlefish.

What Is Included

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-21.tar.zst
  • matching manifest and SHA-256 files

How To Use It

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the validated no-harness QEMU launch flow.

For gfxstream hosts, set QEMU_BOOT_HARDWARE_GRALLOC=ranchu in the launch
environment.

Validated Facts

  • guest ADB: 127.0.0.1:6550
  • sys.boot_completed=1
  • ro.hardware.gralloc=minigbm
  • ro.hardware.hwcomposer=ranchu
  • debug.hwui.renderer=skiagl
  • debug.renderengine.backend=skiaglthreaded
  • ro.hardware.egl=angle
  • ro.hardware.vulkan=pastel
  • android.hardware.graphics.allocator-service.minigbm running (PID 552)
  • android.hardware.graphics.allocator-service.ranchu binary present at
    /vendor/bin/hw/
  • mapper.ranchu.so present at /vendor/lib64/hw/
  • no SurfaceFlinger crashes
  • no gralloc APEX in /vendor/apex/

v0.1.3-test1

v0.1.3-test1 Pre-release
Pre-release

Choose a tag to compare

@wchen99998 wchen99998 released this 21 Mar 12:30

Initial release of the validated aosp_cf_arm64_only_phone_qemu build outputs.

What is included:

  • aosp_cf_arm64_only_phone_qemu-out-2026-03-21.tar.zst
  • matching manifest and SHA-256 files

Why this asset format:

  • the direct processed plain-qemu/os-disk.raw boot image is too large to publish comfortably
  • this release instead ships the compiled output set that was used to produce the validated plain-QEMU bundle

How to use:

  1. Extract the archive under the repository root.
  2. Place the included image files under src/out/target/product/vsoc_arm64_only.
  3. Run ./scripts/prepare_plain_qemu.sh.
  4. Follow docs/BOOT.md for the validated no-harness QEMU launch flow.