Hi folks,

The 2025.10 tag has been pushed to master on gitlab.com/lava/lava.
.deb packages have been built in GitLab CI and are published at

  https://apt.lavasoftware.org/release

Docker images for amd64 and arm64 have been built in GitLab CI and
are available from

  https://registry.gitlab.com/

and

  https://hub.docker.com/u/lavasoftware

Changes in this release
==================

# Device-types

## New device-types

* acer-cp714-1hn-rex
* acer-cpe794-1n-rex
* imx8mp-frdm
* imx91-11x11-frdm-imx91s
* imx943-15x15-lpddr4-evk
* imx95-15x15-frdm
* k3-am625-verdin-wifi-mallow
* mt8196-rauru-navi-sku2
* rk3576-rock-4d

## Removed device-types

* aml-s905d3-cc: duplicates of meson-sm1-s905d3-libretech-cc

## u-boot

Support dynamic device tree update using fdt command. This feature allows dynamic modifications to the loaded DTB.

For example, the device dictionary could include the following to enable the ethernet at runtime on the mt8365-genio-350-evk:

```jinja
{% set uboot_fdt_extra_commands = ['fdt set /soc/ethernet status okay'] %}
```

# LAVA Server

## Database migration

A new partial index on TestCase table to improve performances when creating the Job Errors page.

## gunicorn optimization

Use gunicorn's `--preload` mode to optimize memory usage.

The preload mode will load all the Python files before forking the workers. This allows the Python code to be shared in memory between worker processes resulting in less overall RAM being used.

## XMLRPC API

Add a new `proxy.scheduler.device_types.devices` endpoint to list the devices of a given device-type. The function allows to filter by device health.

# LAVA worker

## Kernel crashes

When a kernel panic happens a board can reboot faster than the end of the kernel panic could be printed. This will result the job error becoming `wait for prompt timed out` which is very misleading.
   
In this release, the error message will be `Kernel panic - not syncing` even if matching the end of kernel panic fails.

## Log queue

The `lava-run` process is now using a [multiprocessing.Queue](https://docs.python.org/3/library/multiprocessing.html#multiprocessing.Queue) instead of a pipe to keep pending log lines in memory.

`multiprocessing.Queue` uses a unlimited queue as a internal buffer and a separate thread to feed the pipe. It helps prevent job execution from being blocked when logs are not consumed from the pipe in time

## HTTP cache rules

This release introduced rules and fallback when using the http caching service option. In the dispatcher configuration, you can now specify 4 different parameters to configure the http caching service, which URL to exclude and include and to fallback or not to the original URL if the caching service failed.

```jinja
http_url_format_string: "https://cache.lavasoftware.org/api/v1/fetch?url=%s"
http_cache_include_rules: ["https://.*example.com"]
http_cache_exclude_rules: ["https://10.*"]
http_cache_fallback_origin_url: True
```

## Log parsing performances

Remove the [pexpect](https://pexpect.readthedocs.io/en/stable/) delays for both reading and writing to the DUT serial console. This is improving log parsing speed when a lot of interaction are happening.

## Worker and job cancellation during restart

When restarting lava-worker, the process waits for attached lava jobs to finish cleanly. Due to a bug in previous version, canceling such jobs on the LAVA server was not taken into account by the worker. Starting in the release, lava-worker will correctly cancel lava jobs.

## Worker logs

Log time in lava-worker and lava-docker-worker log file into UTC. This has been broken since 2018.


Rgds

--
Rémi Duraffort
Principal Tech Lead
LAVA Tech Lead
Automation Software Team
Linaro