# 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
```