Hi folks,

The 205.02 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

* imx8dxl-evk-dl2
* imx8dxl-orangebox
* imx8mp-ipi-lec
* imx8mp-tqma8mpql-mba8mpxl
* imx91-11x11-frdm
* imx943-19x19-lpddr4-evk
* imx943-19x19-lpddr5-evk
* mimxrt1170-evk
* mimxrt1180-evk
* mt8365-genio-350-evk
* mt8370-genio-510-evk
* mt8395-genio-1200-evk
* mt8390-genio-700-evk
* mt8395-radxa-nio-12l
* mt8188-geralt-ciri-sku1
* mt8188-geralt-ciri-sku2

## AVH

Add support for firmware package. In the job definition, add:

```yaml
fw_package:
  url: https://example.com/kronos-baremetal-psa-secure-storage-1.0.zip
  storage_file: virtio_0
  root_partition: 1
```

## fastboot

Add support for auto fastboot device detection. If only one fastboot device is attached to a dispatcher, LAVA can now automatically discover the adb and fastboot serial number. In the device dictionary, add:

```jinja
{% set fastboot_auto_detection = true %}
```

## FVP
Allow to pass custom environment variables to the FVP binary. In the job definition add `environment: ["HELLO=WORLD"]`

## JLink

### Custom erase and reset commands

Allow to customize erase and reset commands. In the device-type template add:

```jinja
{% set erase_command = "erase" %}
{% set reset_command = "r" %}
```

## K3

Use common templates for K3 platforms. This template provides `booti` addresses and also set `uboot_ramdisk_format` to `raw` by default.

### Multi-core boards

Allow JLink to connect to multi-core boards (e.g. M33 or M7). In the device-type template, a new parameter lists the supported core types. By default, LAVA will connect to the first in the list.

```jinja
{% set supported_core_types = ['M33', 'M7'] %}
```

To select another core, specify it in the job definition:

```yaml
- boot:
    method: jlink
    coretype : "M7"
    [...]
```

### QEMU

Add `mips64el`, `ppc64le` and `riscv32` to the list of supported architectures.

## u-boot devices

Add support for raw initramfs images. For device-type with recent u-boot, use raw ramdisk format by updating the device-type template:

```jinja
{% set uboot_ramdisk_format = uboot_ramdisk_format|default('raw') %}
```

# LAVA dispatcher

## Timeout and retries

When only deploy/boot/test block timeout is defined, the same timeout is used for all the actions inside the block. When a RetryAction's child action fails on timeout, it leaves no time for the next retry to run as the parent timeout is respected too.
   
This change propagates timeout by levels and retries for retry actions. It uses `parent_timeout // parent_retries` for child action timeout. The logic is similar to setting a smaller named/child action timeout manually.

This change might require some adaptations to the timeout. For instance downloads are automatically retried 3 times, so the download timeout will be divided by 3 with this change, allowing for some retries.

## lava-dispatcher-host

Make `lava-dispatcher-host` cli startup 3 times faster. This is import as this is used in udev rules.

# LAVA server

## Database configuration

Allow to set database `CONN_MAX_AGE` and `CONN_HEALTH_CHECKS` from environment variables:

```yaml
LAVA_SETTINGS_DB_CONN_MAX_AGE=60
LAVA_SETTINGS_DB_CONN_HEALTH_CHECKS=true
```

Or inside `LAVA_JSON_SETTINGS` with:

```
DB_CONN_MAX_AGE=60
DB_CONN_HEALTH_CHECKS=true
```

## Notifications

Allow to send notification to device owner. In the notification block, add:

```yaml
to:
  user: "{LAVA_DEVICE_OWNER}"
```

## Scheduler queue timeout

Allow to specify a default schedule queue timeout. In the configuration add:

```yaml
QUEUE_TIMEOUT_HOURS=5  # In hours
```


Rgds

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