From 43c2dac50d6c8a38b1d8a89a86d146ea9539140d Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Thu, 2 Nov 2023 16:13:39 -0400 Subject: Add initial DRM lease test images Add guest and host image as well as associated configuration recipes for simple DRM lease testing. The agl-host-image-drm-least-test image has two guests that each run Weston + desktop-shell with a different background color. A known issue at the moment is that networking is not functional in the guests, this will be investigated further. Bug-AGL: SPEC-4955 Change-Id: Ib69e627bb251180c2d7a1175de53d2fb1561aa61 Signed-off-by: Scott Murray --- .../lxc-config-drm-lease-test-cluster/basic.in | 9 +++++ .../environment.in | 8 ++++ .../lxc-config-drm-lease-test-cluster/misc.in | 3 ++ .../lxc-config-drm-lease-test-cluster/mount.in | 17 +++++++++ .../lxc-config-drm-lease-test-cluster/network.in | 5 +++ .../system.conf.drm-lease-test-cluster.in | 2 + .../lxc-config-drm-lease-test-cluster_1.0.bb | 7 ++++ .../lxc-config-drm-lease-test-ivi/basic.in | 9 +++++ .../lxc-config-drm-lease-test-ivi/environment.in | 8 ++++ .../lxc-config-drm-lease-test-ivi/misc.in | 3 ++ .../lxc-config-drm-lease-test-ivi/mount.in | 17 +++++++++ .../lxc-config-drm-lease-test-ivi/network.in | 5 +++ .../system.conf.drm-lease-test-ivi.in | 2 + .../lxc-config-drm-lease-test-ivi_1.0.bb | 7 ++++ .../wayland/weston-ini-conf-drm-lease-test.bb | 43 ++++++++++++++++++++++ .../weston.ini.cluster | 26 +++++++++++++ .../weston-ini-conf-drm-lease-test/weston.ini.ivi | 26 +++++++++++++ .../images/agl-host-image-drm-lease-test.bb | 27 ++++++++++++++ .../images/guest-image-drm-lease-test-cluster.bb | 13 +++++++ .../images/guest-image-drm-lease-test-ivi.bb | 13 +++++++ 20 files changed, 250 insertions(+) create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/basic.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/environment.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/misc.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/mount.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/network.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/system.conf.drm-lease-test-cluster.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster_1.0.bb create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/basic.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/environment.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/misc.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/mount.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/network.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/system.conf.drm-lease-test-ivi.in create mode 100644 meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi_1.0.bb create mode 100644 meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test.bb create mode 100644 meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test/weston.ini.cluster create mode 100644 meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test/weston.ini.ivi create mode 100644 meta-agl-ic-container/recipes-platform/images/agl-host-image-drm-lease-test.bb create mode 100644 meta-agl-ic-container/recipes-platform/images/guest-image-drm-lease-test-cluster.bb create mode 100644 meta-agl-ic-container/recipes-platform/images/guest-image-drm-lease-test-ivi.bb diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/basic.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/basic.in new file mode 100644 index 00000000..d4a490ab --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/basic.in @@ -0,0 +1,9 @@ +# lxc basic setting +lxc.rootfs.path = dir:/var/lib/machines/drm-lease-test-cluster +lxc.signal.halt = SIGRTMIN+3 +lxc.signal.reboot = SIGTERM +lxc.uts.name = "cluster" +lxc.tty.max = 1 +lxc.pty.max = 1 +lxc.cap.drop = sys_module mac_admin mac_override sys_time + diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/environment.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/environment.in new file mode 100644 index 00000000..632252d5 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/environment.in @@ -0,0 +1,8 @@ +# lxc environment variable setting +lxc.environment = QT_QPA_PLATFORM=wayland +lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/ +lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/ +lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/ +lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell +lxc.environment = PIPEWIRE_RUNTIME_DIR=/var + diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/misc.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/misc.in new file mode 100644 index 00000000..9b4f4883 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/misc.in @@ -0,0 +1,3 @@ +# lxc misc setting +lxc.start.auto = @LXC_AUTO_START@ + diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/mount.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/mount.in new file mode 100644 index 00000000..0468866d --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/mount.in @@ -0,0 +1,17 @@ +# lxc mount setting +lxc.mount.entry = /var/lib/lxc/drm-lease-test-cluster/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file + +lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed +lxc.mount.entry = shm /dev/shm tmpfs defaults 0 0 +lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0 +lxc.mount.entry = tmpfs run tmpfs defaults +lxc.mount.entry = /run/udev/data run/udev/data none ro,bind,optional,create=dir + +lxc.cgroup.devices.allow = c 226:* rwm +lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir + +lxc.mount.entry = /run/drm-lease-manager/lease-ivi var/display/drm-lease-manager/lease none bind,create=file + +lxc.cgroup.devices.allow = c 13:* rwm +lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir +lxc.mount.entry = /run/pipewire/pipewire-0 var/pipewire-0 none bind,optional,create=file diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/network.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/network.in new file mode 100644 index 00000000..87fff1de --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/network.in @@ -0,0 +1,5 @@ +# lxc network setting +lxc.net.0.type = veth +lxc.net.0.link = lxcbr0 +lxc.net.0.flags = up +lxc.net.0.hwaddr = 00:16:3e:69:87:a5 diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/system.conf.drm-lease-test-cluster.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/system.conf.drm-lease-test-cluster.in new file mode 100644 index 00000000..f496c589 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster/system.conf.drm-lease-test-cluster.in @@ -0,0 +1,2 @@ +[Manager] +#DefaultEnvironment = diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster_1.0.bb b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster_1.0.bb new file mode 100644 index 00000000..a30505e9 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-cluster_1.0.bb @@ -0,0 +1,7 @@ +DESCRIPTION = "AGL cluster demo container LXC config" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" + +inherit lxc-config + +LXC_AUTO_START ??= "1" diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/basic.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/basic.in new file mode 100644 index 00000000..186ab509 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/basic.in @@ -0,0 +1,9 @@ +# lxc basic setting +lxc.rootfs.path = dir:/var/lib/machines/drm-lease-test-ivi +lxc.signal.halt = SIGRTMIN+3 +lxc.signal.reboot = SIGTERM +lxc.uts.name = "ivi" +lxc.tty.max = 1 +lxc.pty.max = 1 +lxc.cap.drop = sys_module mac_admin mac_override sys_time + diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/environment.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/environment.in new file mode 100644 index 00000000..632252d5 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/environment.in @@ -0,0 +1,8 @@ +# lxc environment variable setting +lxc.environment = QT_QPA_PLATFORM=wayland +lxc.environment = QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins/ +lxc.environment = QML_IMPORT_PATH=/usr/lib/qml/ +lxc.environment = QML2_IMPORT_PATH=/usr/lib/qml/ +lxc.environment = QT_WAYLAND_SHELL_INTEGRATION=xdg-shell +lxc.environment = PIPEWIRE_RUNTIME_DIR=/var + diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/misc.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/misc.in new file mode 100644 index 00000000..9b4f4883 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/misc.in @@ -0,0 +1,3 @@ +# lxc misc setting +lxc.start.auto = @LXC_AUTO_START@ + diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/mount.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/mount.in new file mode 100644 index 00000000..2026c577 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/mount.in @@ -0,0 +1,17 @@ +# lxc mount setting +lxc.mount.entry = /var/lib/lxc/drm-lease-test-ivi/system.conf etc/systemd/system.conf.d/10-environment.conf none bind,optional,create=file + +lxc.mount.auto = cgroup:mixed proc:mixed sys:mixed +lxc.mount.entry = shm /dev/shm tmpfs defaults 0 0 +lxc.mount.entry = /sys/kernel/security sys/kernel/security none ro,bind,optional 0 0 +lxc.mount.entry = tmpfs run tmpfs defaults +lxc.mount.entry = /run/udev/data run/udev/data none ro,bind,optional,create=dir + +lxc.cgroup.devices.allow = c 226:* rwm +lxc.mount.entry = /dev/dri dev/dri none bind,optional,create=dir + +lxc.mount.entry = /run/drm-lease-manager/lease-ivi var/display/drm-lease-manager/lease none bind,create=file + +lxc.cgroup.devices.allow = c 13:* rwm +lxc.mount.entry = /dev/input dev/input none bind,optional,create=dir +lxc.mount.entry = /run/pipewire/pipewire-0 var/pipewire-0 none bind,optional,create=file diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/network.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/network.in new file mode 100644 index 00000000..6545b1ad --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/network.in @@ -0,0 +1,5 @@ +# lxc network setting +lxc.net.0.type = veth +lxc.net.0.link = lxcbr0 +lxc.net.0.flags = up +lxc.net.0.hwaddr = 00:16:3e:69:87:a4 diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/system.conf.drm-lease-test-ivi.in b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/system.conf.drm-lease-test-ivi.in new file mode 100644 index 00000000..f496c589 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi/system.conf.drm-lease-test-ivi.in @@ -0,0 +1,2 @@ +[Manager] +#DefaultEnvironment = diff --git a/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi_1.0.bb b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi_1.0.bb new file mode 100644 index 00000000..a30505e9 --- /dev/null +++ b/meta-agl-ic-container/recipes-container/lxc-config/lxc-config-drm-lease-test-ivi_1.0.bb @@ -0,0 +1,7 @@ +DESCRIPTION = "AGL cluster demo container LXC config" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9" + +inherit lxc-config + +LXC_AUTO_START ??= "1" diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test.bb b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test.bb new file mode 100644 index 00000000..15b44ed2 --- /dev/null +++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test.bb @@ -0,0 +1,43 @@ +SUMMARY = "Configuration files for the Weston compositors for DRM lease testing" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +SRC_URI = " \ + file://weston.ini.ivi \ + file://weston.ini.cluster \ +" + +S = "${WORKDIR}" + +inherit allarch update-alternatives + +# On-target weston.ini directory +weston_ini_dir = "${sysconfdir}/xdg/weston" + +do_install() { + install -d ${D}${weston_ini_dir} + install -m 0644 ${WORKDIR}/weston.ini.ivi ${D}${weston_ini_dir}/ + install -m 0644 ${WORKDIR}/weston.ini.cluster ${D}${weston_ini_dir}/ +} + +ALTERNATIVE_LINK_NAME[weston.ini] = "${weston_ini_dir}/weston.ini" + +RDEPENDS:${PN} = "${BPN}-ivi" +ALLOW_EMPTY:${PN} = "1" + +PACKAGE_BEFORE_PN += "${PN}-ivi" + +FILES:${PN}-ivi = "${weston_ini_dir}/weston.ini.ivi" + +RPROVIDES:${PN}-ivi = "weston-ini" +ALTERNATIVE:${PN}-ivi = "weston.ini" +ALTERNATIVE_TARGET_${PN}-ivi = "${weston_ini_dir}/weston.ini.ivi" + +PACKAGE_BEFORE_PN += "${PN}-cluster" + +FILES:${PN}-cluster = "${weston_ini_dir}/weston.ini.cluster" + +RPROVIDES:${PN}-cluster = "weston-ini" +RCONFLICTS:${PN}-cluster = "${PN}-ivi" +ALTERNATIVE:${PN}-cluster = "weston.ini" +ALTERNATIVE_TARGET_${PN}-cluster = "${weston_ini_dir}/weston.ini.cluster" diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test/weston.ini.cluster b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test/weston.ini.cluster new file mode 100644 index 00000000..13347577 --- /dev/null +++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test/weston.ini.cluster @@ -0,0 +1,26 @@ +[core] +backend=drm-backend.so +require-input=false +idle-time=0 +modules=systemd-notify.so + +[shell] +locking=false +panel-position=none +background-color=0xff00ff00 + +[output] +name=Virtual-1 +mode=1920x1080 + +[output] +name=Virtual-2 +mode=1920x1080 + +[output] +name=HDMI-A-1 +mode=1920x1080 + +[output] +name=HDMI-A-2 +mode=1920x1080 diff --git a/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test/weston.ini.ivi b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test/weston.ini.ivi new file mode 100644 index 00000000..24d4ee29 --- /dev/null +++ b/meta-agl-ic-container/recipes-graphics/wayland/weston-ini-conf-drm-lease-test/weston.ini.ivi @@ -0,0 +1,26 @@ +[core] +backend=drm-backend.so +require-input=false +idle-time=0 +modules=systemd-notify.so + +[shell] +locking=false +panel-position=none +background-color=0xffff0000 + +[output] +name=Virtual-1 +mode=1920x1080 + +[output] +name=Virtual-2 +mode=1920x1080 + +[output] +name=HDMI-A-1 +mode=1920x1080 + +[output] +name=HDMI-A-2 +mode=1920x1080 diff --git a/meta-agl-ic-container/recipes-platform/images/agl-host-image-drm-lease-test.bb b/meta-agl-ic-container/recipes-platform/images/agl-host-image-drm-lease-test.bb new file mode 100644 index 00000000..09b6ddac --- /dev/null +++ b/meta-agl-ic-container/recipes-platform/images/agl-host-image-drm-lease-test.bb @@ -0,0 +1,27 @@ +SUMMARY = "DRM Lease LXC test host image" +LICENSE = "MIT" + +require lxc-host-image-minimal.bb +require recipes-platform/images/agl-lxc-install-single-image.inc +require recipes-platform/images/agl-lxc-autostart.inc + +CONTAINER_IMAGES ?= "agl-container-ivi:guest-image-drm-lease-test-ivi \ + agl-container-cluster:guest-image-drm-lease-test-cluster \ + " + +IMAGE_INSTALL += " \ + kernel-modules \ +" + +# packages required for network bridge settings via lxc-net +IMAGE_INSTALL += " \ + lxc-networking \ + iptables-modules \ + dnsmasq \ + systemd-netif-config \ + kernel-module-xt-addrtype \ + kernel-module-xt-multiport \ +" + +# Under the this line, shall describe machine specific package. +IMAGE_INSTALL:append:rcar-gen3 = " kernel-module-gles gles-user-module-firmware" diff --git a/meta-agl-ic-container/recipes-platform/images/guest-image-drm-lease-test-cluster.bb b/meta-agl-ic-container/recipes-platform/images/guest-image-drm-lease-test-cluster.bb new file mode 100644 index 00000000..13563da8 --- /dev/null +++ b/meta-agl-ic-container/recipes-platform/images/guest-image-drm-lease-test-cluster.bb @@ -0,0 +1,13 @@ +SUMMARY = "DRM Lease LXC test guest image" +LICENSE = "MIT" + +require guest-image-minimal.bb + +IMAGE_INSTALL += " \ + systemd-netif-config \ + weston \ + weston-init-guest \ + weston-ini-conf-drm-lease-test-cluster \ +" + +IMAGE_INSTALL:append:raspberrypi4 = " mesa-megadriver" diff --git a/meta-agl-ic-container/recipes-platform/images/guest-image-drm-lease-test-ivi.bb b/meta-agl-ic-container/recipes-platform/images/guest-image-drm-lease-test-ivi.bb new file mode 100644 index 00000000..be8fcbff --- /dev/null +++ b/meta-agl-ic-container/recipes-platform/images/guest-image-drm-lease-test-ivi.bb @@ -0,0 +1,13 @@ +SUMMARY = "DRM Lease LXC test guest image" +LICENSE = "MIT" + +require guest-image-minimal.bb + +IMAGE_INSTALL += " \ + systemd-netif-config \ + weston \ + weston-init-guest \ + weston-ini-conf-drm-lease-test-ivi \ +" + +IMAGE_INSTALL:append:raspberrypi4 = " mesa-megadriver" -- cgit 1.2.3-korg