Skip to content

1.56 bump - #3098

Open
rmuthiah wants to merge 50 commits into
google:version-1.56-devfrom
rmuthiah:1.56-bump
Open

1.56 bump#3098
rmuthiah wants to merge 50 commits into
google:version-1.56-devfrom
rmuthiah:1.56-bump

Conversation

@rmuthiah

@rmuthiah rmuthiah commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator
PR SHA Message
#2802 919c322 Use host monotonic clock for timestamp
#2842 53c93a5 Implement custom lens_facing control for emulated_camera_mplane.
#2849 84bcd4c Default lens_facing to EXTERNAL.
#2913 6a29968 Emulate signal gain for emulated_camera_mplane.
#2899 edb4b50 modem_simulator: prevent unhandled exceptions for strings shorter than 2
#2899 89c61d3 modem_simulator: prevent unhandled exceptions for incorrect input
#2899 1115303 modem_simulator: fix the possible OOB if the buffer is not null terminated
#2899 78af707 modem_simulator: avoid referring to a dead object
#2876 e1668f4 #VibeCoding Support AT+CEID and AT+CATR in modem simulator
#2922 3933def #VibeCoding cuttlefish: Add iccprofile_for_sim1.xml and CTS profile for dual-SIM support
#2862 1c37663 Fix dependency issues with fetch:build_api_credentials
#2862 7d7b96f Fix dependency issues with fetch:build_api_flags
#2862 5b8c6c9 Fix dependency issues with fetch:downloaders
#2862 402e0df Fix build issues with fetch:fetch_context
#2862 e98d223 Fix dependency issues with fetch:fetch_cvd
#2965 949efe4 Extract parse_time to a separate function
#2965 a6f585f Add a test for ParseTime
#2965 962ad51 Fix parsing timestamps without milliseconds
#2917 1e048e5 gigabyte-ampere-cuttlefish-installer: pin kernel and NVIDIA driver
#2917 e25a3af cloud-init-image-for-cuttlefish: pin kernel and NVIDIA driver
#2917 23edd52 gigabyte-ampere-cuttlefish-installer: enable ARM64 nested virtualization
#2908 54aeb86 gigabyte-ampere-cuttlefish-installer: utils: download-ci-cf.sh: use JSON API
#2951 8d7ad93 gigabyte-ampere-cuttlefish-installer: stop preinstalling kernels in the preseed check environment
#2961 8eded80 gigabyte-ampere-cuttlefish-installer: pin the workflow actions
#2961 ee01e25 gigabyte-ampere-cuttlefish-installer: wait for the vm to finish booting
#2975 4a44a70 gigabyte-ampere-cuttlefish-installer: resolve the build id via status.json
#2789 cf53c34 Cherry-pick of ag/40371614
#2745 3c72c35 Add netsim_modem CLI flag and route cellular modem over VSOCK to netsimd
#2851 7e37f4c cuttlefish: Wire up Netsim UDS socket (--grpc_uds_path)
#2973 ae587e1 feat(cvd): Inject NETSIM_GRPC_PORT as environment variable into netsimd
#2901 8f54b82 Fix frontend host_orchestrator BUILD.bazel file references
#3016 f99579b host_orchestrator: reject archive entries that escape the extraction dir
#2792 095b3d8 Update off Node 20
#2947 fe3aaa2 cvd: Update --media flag format to [type]:[key=value]
#3034 4a59f57 Support target configuration preset in Cuttlefish cvd load JSON
#3048 9d519cd cvd: Fallback to --help when --helpxml is unsupported in status fetcher
#2906 76310e6 Hold kernel package during base image builds
#2856 842d306 Reduce the number of nginx worker processes in container
#2829 8b337d6 Fix xts test result assertion.
#2926 2d239a9 Update compile_commands.json generator
#2873 7358755 Add and support for Guest Lavapipe GPU mode
#2953 642d0e6 Add an optional A/B pvmfw partition to the OS composite disk
#2987 407a844 Add --enable_pkvm flag to provision the guest as a pKVM host
#2885 28447ed Fix file already exist error while running substitute in Docker
#3080 d6fe6c2 ci: Remove pseudo-TTY allocation (-it) from podman exec in e2e test runners
#3080 2d0be37 ci: Remove trailing character slice workaround in run-cw-sharded-e2e-test
Branch-specific a550791 Use a special cache version for version-1.56-dev
#2931 05aa7d5 Use fixed crun version in relevant GitHub Actions
#2795 a0da7f6 Revert Ensure Proper FIFO Provisioning for Shared UWB Services
#2786 d429656 Fix double-write of bootconfig partition.

chihchiachen and others added 30 commits August 26, 2026 10:52
Previously, outgoing buffer timestamps in emulated_camera_mplane and
emulated_camera_splane were calculated directly from the frame sequence
index:

tv_sec = (sequence + 1) / 1000
tv_usec = (sequence + 1) % 1000

This formula caused severe clock drift due to two issues:
1. Incorrect Time Scaling: sequence increments by 1 per frame. Dividing
   by 1000 caused tv_sec to advance by 1 second only after 1,000 frames
   (~33.3 seconds of real wall-clock time at 30 FPS).
2. Microsecond Miscalculation: In timeval, tv_usec is measured in
   microseconds (10^-6 s). Doing % 1000 without scaling caused the
   timestamp to advance by only 1 microsecond per frame.

This change replaces the sequence-based calculation with the host's
actual monotonic clock, avoiding timestamp drift and buffer rejections
in the guest.

Bug: b/474406105
Bug: b/502639876
Test: cvd create --media="type=v4l2_emulated_camera_mplane,lens_facing=FRONT" && adb shell "su 0 v4l2-ctl -d /dev/video1 --list-ctrls"
- Avoid breaking existing virtio-media workflows for auto and XR
  targets.

Bug: b/527931134
Interact with the control:

```
adb shell "su 0 v4l2-ctl -d /dev/video1 -l"
adb shell "su 0 v4l2-ctl -d /dev/video1 --set-ctrl=gain=500"
```

Introduce CameraControls, to manage the state of control values.

Bug: b/539617743
Assisted-by: Jetski:Gemini 3.5 Flash
std::string::compare

> The overloads taking parameters named pos1 or pos2
> throws std::out_of_range if the argument is out of range.

Bug: 509614113
Signed-off-by: Roman Kiryanov <rkir@google.com>
std::stoi:

> std::invalid_argument if no conversion could be performed.
> std::out_of_range if the converted value would fall out of the range

Bug: 509614113
Signed-off-by: Roman Kiryanov <rkir@google.com>
…nated

If the `Read` call fills the whole buffer,
`commands.append(buffer.data())` with no zero
characters will read past the buffer. If the
`Read` produces data with zero characters in
the middle, it will cause a loss of data.

Bug: 509614113
Signed-off-by: Roman Kiryanov <rkir@google.com>
The `sms_pdu` is used in an async callback,
potentially after the control leaves the scope.

Bug: 509614113
Signed-off-by: Roman Kiryanov <rkir@google.com>
Implement custom AT commands AT+CEID and AT+CATR in the modem simulator
to expose the EID and ATR values configured in the simulated SIM profile (XML).
This allows the radio HAL to query these values dynamically instead of
hardcoding them, supporting eSIM slot detection.

BUG=532745689
…or dual-SIM support

Add simulator profile for SIM 1 and CTS carrier API test profile to enable dual-SIM modem simulation support.
These profiles are identical to their SIM 0 counterparts except for the ICCID (and its binary EF representation), IMSI, and EID.
Also ignore SIGPIPE from clients in modem simulator.

BUG=532745689
Test: http://go/forrest-run/L25500030157036716
Bug: b/542342091
Install kernel 6.18.15-1~bpo13+1 (validated for ARM64 nested
virtualization on AmpereOne) and the matching NVIDIA driver
550.163.01-4~bpo13+1 from a snapshot.debian.org archive snapshot

Bug: 537008147
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
Install kernel 6.18.15-1~bpo13+1 and the matching NVIDIA driver
550.163.01-4~bpo13+1 from a snapshot.debian.org archive snapshot,
matching the versions pinned by the preseed installer

The Debian cloud image enables trixie-backports by default, so
the pinned versions are installed unconditionally rather than
gated on backports detection

Bug: 537008147
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
Append kvm-arm.mode=nested to GRUB command line so installed
hosts boot with KVM nested virtualization (NV2) enabled if
available

Bug: 537008147
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
…SON API

The previous way to download the artifacts doesn't work.
We fix it by using the latest JSON API. And also make the
script more verbose on error.

Signed-off-by: Ying-Chun Liu (PaulLiu) <liupa@google.com>
…he preseed check environment

The check container installed linux-image-arm64 and linux-headers-arm64
from the live trixie/trixie-security archives. Real installer targets
never have trixie headers, and their presence makes DKMS build the
pinned NVIDIA driver against whatever kernel trixie-security shipped
that day - an unpinned moving target. This broke on 2026-07-31 when
Debian published 6.12.100, which the 550.163.01 driver fails to
compile against, failing the nvidia matrix cell.

With no stray kernels the block under test provides its own pinned
kernel and DKMS builds only against the pinned, snapshot-frozen
headers. Verified: the failing cell reproduced against 6.12.100
headers, and the same block passes with them absent (module builds
and installs for 6.18.15).

Bug: 537008147
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
The workflow still referenced actions by tag, which the zizmor blanket
policy rejects as soon as the file is touched. Pin them to the hashes
the tags currently point at, keeping the same major versions so the
artifact upload and download stay compatible.

Bug: 537008147
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
The qemu test jobs treat the serial console login prompt as "vm is
ready" and ssh into the guest right away. The prompt only means getty
started: the guest is still booting, so the ssh handshake gets reset
(kex_exchange_identification: read: Connection reset by peer) and, once
that is past, dns is not up yet for the first command needing it.

The console is polled every 30s, so the ssh always lands at the same
point after boot and whether it works is luck. Four of twelve job
instances across six recent runs failed this way, on both jobs and
regardless of which kernel the installer had put on the vm.

Wait until systemd reports the boot finished before using the vm.

Bug: 537008147
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
….json

The /builds/latest/ redirect the script followed is rate limited and
returns 403 once the quota is exhausted, failing the download. Read the
id from the target's status.json instead, which is not on that quota,
and build the artifact URLs from it directly.

Bug: 537008147
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
Fix netsim vsock proxy parameters for vhost-user-vsock

Cuttlefish host launcher run_cvd fails to pass --vhost_user_vsock=true
to socket_vsock_proxy helper processes (hci_vsock_proxy and
test_vsock_proxy).

This results in the proxy processes binding to the host kernel vsock
interface rather than the vhost-user Unix domain socket when
vhost_user_vsock is enabled, causing guest vsock connections to hang.

Bug: b/520342656
Test: Manual verification on CF target with vhost-user-vsock
Enables netsim to act as the cellular modem simulator for Cuttlefish by passing VSOCK connections directly to netsimd:

1. CLI & Instance Configuration:
   - Adds '--netsim_modem' flag to launch_cvd to route cellular modem traffic to netsim.
   - Disables the legacy standalone modem_simulator process when '--netsim_modem' or '--netsim' is active.
   - Records modem simulator instance count and SIM type in CuttlefishConfig.

2. VSOCK Server Routing ('netsim_server.cpp'):
   - Creates a VSOCK server socket ('SharedFD::VsockServer') listening on each guest modem simulator port.
   - Configures the CELLULAR chip in netsimd's startup JSON ('-s'), passing the inherited listening file descriptor as 'vsockFd' and the SIM configuration as 'simType'.

Refactored netsim radio enabling to use per-instance config checks in netsim_server.cpp to support mixed-mode multi-instance clusters, and removed the global netsim_radio_enabled config.

Bug: 514348948
Bug: 530300761
Bug: 532125591
Test: launch_cvd --netsim_modem
Exposes `EnableNetsimNfc()` instead of netsim_radio_enabled
to simplify netsim nfc checking, avoiding passing --grpc_uds_path unconditionally.

Bug: 525044943
Test: bazel build //base/cvd/cuttlefish/...

TAG=agy
CONV=97998051-73aa-44c8-83ac-51de8d5fd83d
TAG=agy
CONV=7e6b7c86-e570-4900-a8f4-683776c7dc60
Assisted-by: Jetski:GeminiNext
rmuthiah and others added 16 commits August 26, 2026 10:53
Remove deleted Go source files (fetchartifactsaction.go,
createcvdaction_test.go, instancemanager_test.go) and unused
dependencies from frontend/src/host_orchestrator/orchestrator/BUILD.bazel.

Bug: b/519240653
The user-artifacts extractor (ExtractArtifact -> untar/unzip) joined
attacker-controlled archive entry names onto the destination directory
with no containment check and created symlink entries verbatim, allowing
a crafted .tar.gz/.zip to write files outside the extraction directory

Add isSafeToExtract() and use it in untar and unzip to verify each
entry's resolved path stays within the destination, and reuse it to
reject symlink entries whose resolved target escapes it. Add regression
tests for the tar-traversal, tar-symlink and zip-traversal vectors.
There's a warning that Node 20 is being deprecated.
To quiet it, apply the minimal update to the dep that's pulling
in Node 20.

In this case - that's github actions on v7. Just bumped it to v8
which updates to Node 24 under the hood.
Modify --media flag parsing logic to support the new pattern:
"--media=[type]:[key1]=[val1]:[key2]=[val2]"
e.g. "--media=v4l2_emulated_camera_mplane:lens_facing=BACK"

This clearly separates the primary media type from its optional
properties using `:`.

Bug: b/541325033
Assisted-by: Jetski:Gemini 3.5 Flash
Adds optional string config = 11 to message Instance in load_config.proto.
Updates cf_configs_instances.cpp to emit --config=<preset> per instance,
allowing cvd load and cloud orchestrators to pass configuration presets
natively in JSON.
Older guest host tools (e.g. Android T / tm-qpr-dev / SDK 32) do not support
--helpxml and abort with SIGABRT when it is passed, resulting in empty output
and ParseGflagsXmlHelp failure. Fall back to --help if ParseGflagsXmlHelp fails.

Bug: b/546992730
Assisted-By: Antigravity:Gemini-Next
This was triggering too many baseimage respins
when someone needed to release an image in a pinch.
- Handle tests result with "fail" value.

Bug: b/533039176
Upstream is unmaintained, this fork has continued development.

Bug: b/540519007
Test: bazel run @hedron_compile_commands//:refresh_all
Based on valentine.burley@collabora's arsp/4898478.

This introduces a couple of new guest config values to determine if
various vulkan apexes are supported in order to work around the fact
that Cuttlefish at HEAD currently has both gfxstream and swiftshader
in a single apex (aosp/2818460). After this change is released, the
lavapipe vulkan apex can be introduced and the pre-existing gfxstream
plus swiftshader apex can be split.

Bug: b/530070181
Bug: b/536966381

Test: bazel run //cuttlefish/package:cvd -- create \
      (on main with pre-existing vulkan apex)

Test: bazel run //cuttlefish/package:cvd -- create \
      --gpu_mode=guest_swiftshader
      (on main with pre-existing vulkan apex)

Test: bazel run //cuttlefish/package:cvd -- create \
      --gpu_mode=gfxstream_guest_angle
      (on main with pre-existing vulkan apex)

Test: bazel run //cuttlefish/package:cvd -- create \
      --gpu_mode=gfxstream_guest_angle
      (on main with separated vulkan apexes from ag/41081278)

Test: bazel run //cuttlefish/package:cvd -- create \
      (on main with separated vulkan apexes from ag/41081278)

Test: bazel run //cuttlefish/package:cvd -- create \
      --gpu_mode=guest_lavapipe
      (on main with separated vulkan apexes from ag/41081278)

Test: bazel run //cuttlefish/package:cvd -- create \
      --config_file=spec.json
       (where spec.json specifies older udc image)
The image comes from the Android build when available. Targets that
don't build protected VM firmware are unaffected.

Bug: 536088107
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
When set, pass --nested=on to crosvm so the guest boots at virtual
EL2, and append kvm-arm.mode=protected and
kvm-arm.protected_modules=pkvm_iommu_temp to the guest kernel
command line.

Also disable virtio-pmem for pkvm guests (host writeback of the
storage-backed pmem files invalidates the guest's nested stage-2,
making the guest extremely slow) and keep pkvm_iommu_temp.ko in
the first-stage ramdisk during module redistribution.

Requires a nested-virt capable host, a crosvm with --nested
support, and a guest image built for pKVM.

Bug: 536088107
Signed-off-by: Dmitrii Merkurev <dimorinny@google.com>
In the OverlayFS, even if unlink() is succeeded, looks like there is
a delay between unlink call and the file is actually disappears.

Change to use rename call which ensures atomic operation for
substitution.
…unners

When `podman exec -it` was executed in CI scripts, pseudo-terminal
allocation (-t) caused stdout lines to be emitted with CRLF (\r\n).
In `runner-special`, capturing this into bash passed carriage returns to
`bazel test`, which failed with:
  invalid target name '... \r': target names may not end with carriage returns

This failure appeared intermittently / "flaky" across CI runs because:
- The previous query used `sh -c "stty -onlcr && bazel query ..." 2>/dev/null`.
- On runner instances where `stty -onlcr` returned non-zero (non-TTY subshell),
  the `&&` short-circuited and silently skipped `bazel query`. With `targets=""`,
  the loop ran 0 tests and falsely passed.
- On runner instances where `stty` succeeded, `bazel query` executed, but the
  host-side PTY bridge still appended `\r\n`, causing Bazel to reject the target
  names on every retry.

Remove `-it` from all `podman exec` calls in both `presubmit.yaml`
and `run-cw-sharded-e2e-test/action.yaml`.

TAG=agy
CONV=cee1b9c6-d222-4154-8c11-924d01e88f39
…test

Now that `-it` has been removed and `podman exec` produces clean Unix
stdout lines without trailing carriage returns, remove the `t="${t::-1}"`
string slicing workaround.

TAG=agy
CONV=cee1b9c6-d222-4154-8c11-924d01e88f39
@rmuthiah
rmuthiah requested a review from Databean August 26, 2026 09:56
This has diverged enough from main that we are seeing some strangeness.
@rmuthiah rmuthiah added kokoro:force-run Trigger a presubmit build unconditionally. kokoro:run Run e2e tests. labels Aug 26, 2026
@GoogleCuttlefishTesterBot GoogleCuttlefishTesterBot removed kokoro:run Run e2e tests. kokoro:force-run Trigger a presubmit build unconditionally. labels Aug 26, 2026
ser-io and others added 3 commits August 26, 2026 19:38
GitHub Actions runners have been failing with non-deterministic failures during e2e tests
with the error "crun: unknown version specified". This can occur because newer versions
of Podman on the `ubuntu-24.04` runner generate OCI configurations that are incompatible
with the older version of `crun` pre-installed on the runner.

BUG=b/540850996
Assisted-by: Jetski:Gemini 3.5 Flash
WriteAll(bootconfig_fd, bootconfig) was being called twice in
BootConfigPartition::CreateIfNeeded -- once to capture bytesWritten,
once inside the CF_EXPECT() comparison. The second call appended
duplicate bytes to the partition file, corrupting it. Drop the second
call and compare bytesWritten directly.
@rmuthiah rmuthiah added kokoro:force-run Trigger a presubmit build unconditionally. kokoro:run Run e2e tests. labels Aug 26, 2026
@GoogleCuttlefishTesterBot GoogleCuttlefishTesterBot removed kokoro:run Run e2e tests. kokoro:force-run Trigger a presubmit build unconditionally. labels Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.