Hi folks,

The 2022.01.1 tag has been pushed to master on git.lavasoftware.org.
.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://hub.lavasoftware.org/

and

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


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

# Device-types

## New device-types

New supported devices:
* acer-cb317-1h-c3z6-dedede
* dell-latitude-5400-4305U-sarien (split from dell-latitude-5400-sarien)
* fsl-ls1046a-frwy
* fsl-ls2088a-rdb
* fsl-lx2162a-qds
* hp-x360-12b-ca0500na-n4000-octopus
* lenovo-TPad-C13-Yoga-zork
* rk3399-rock-pi-4b
* seco-b68
*

## fsl-l*-rdb

Allow to boot from an alternate bank. In order to use this feature, set `uboot_altbank` to `True` in the job context:

```yaml
context:
  uboot_altbank: true
```

Admins should set `uboot_altbank_cmd` in the device-type template.

# lava-dispatcher-host

Add support for docker device sharing under cgroups v2.

Under cgroups v2, device access control is done with BPF programs only. When docker creates a container, it already attaches a BPF program to that container cgroup. lava-dispather-host replaces that BPF program with one of its own, that allows the regular list of devices containers can usually access (`/dev/null`, `/dev/zero`, ...), plus all the devices shared with the container. Subsequent device sharing with the same container overrides that BPF program with a new one

# Scheduler

## Balance job scheduling between submitters

This patch is intended to prevent submitter starvation when jobs have the same priority and single submitter sends a large batch of jobs.

It is implemented by determining a number of already running jobs for each submitter and using it to annotate the jobs submitted to the queue. This allows reordering the job queue for picking a job from the submitter that could potentially be starving for an available device. To ensure fairness in edge cases (equal number of running jobs, single device of given device type) jobs sharing the same set of attributes are randomised.

## Active workers

Only schedule jobs on active workers. When a worker is in maintenance, no jobs will be scheduled on the attached devices.

# kexec

Add an option to download the artifacts from deployment action. The job would look like:

```yaml
- deploy:
    to: download
    images:
      kernel:
        url: https://example.com/Image.bin
      initrd:
        url: https://example.com/rootfs.cpio.gz
        compression: gz
- boot:
    method: minimal
    auto_login:
      [...]
    prompts:
    - "root@localhost:~# "
 - boot:
    method: kexec
    deploy: true
    kernel: /boot/Image.bin
    initrd: /boot/rootfs.cpio.gz
    command: /usr/sbin/kexec
    [...]
```

# Overlay

Add support for tar filesystem. This allow to add overlays to nfsrootfs for the boards that use NFS.


Rgds

--
Rémi Duraffort
LAV A and Tux Architect
Linaro