@@ -80,6 +80,7 @@ UKI_CONFIG_FILE ?= "${UNPACKDIR}/uki.conf"
UKI_FILENAME ?= "uki.efi"
UKI_KERNEL_FILENAME ?= "${KERNEL_IMAGETYPE}"
UKI_CMDLINE ?= "rootwait root=LABEL=root"
+UKI_DEVICETREE ?= "${KERNEL_DEVICETREE}"
# secure boot keys and cert, needs sbsign-tools-native (meta-secure-core)
#UKI_SB_KEY ?= ""
#UKI_SB_CERT ?= ""
@@ -149,8 +150,9 @@ python do_uki() {
ukify_cmd += " --cmdline='%s'" % (cmdline)
# dtb
- if d.getVar('KERNEL_DEVICETREE'):
- for dtb in d.getVar('KERNEL_DEVICETREE').split():
+ uki_devicetree = d.getVar('UKI_DEVICETREE')
+ if uki_devicetree:
+ for dtb in uki_devicetree.split():
# DTBs are without sub-directories in deploy_dir
dtb_name = os.path.basename(dtb)
dtb_path = "%s/%s" % (deploy_dir_image, dtb_name)
@@ -47,6 +47,9 @@ QB_DEFAULT_KERNEL = "none"
# boot command line provided via uki, not via bootloader
UKI_CMDLINE = "rootwait root=LABEL=root console=${KERNEL_CONSOLE}"
+# qemu provides the devicetree at boot, do not embed a dtb in the uki for selftests
+UKI_DEVICETREE = ""
+
# disable kvm, breaks boot
QEMU_USE_KVM = ""
@@ -106,6 +109,9 @@ QB_DEFAULT_KERNEL = "none"
# boot command line provided via uki, not via bootloader
UKI_CMDLINE = "rootwait root=LABEL=root console=${KERNEL_CONSOLE}"
+# qemu provides the devicetree at boot, do not embed a dtb in the uki for selftests
+UKI_DEVICETREE = ""
+
# disable kvm, breaks boot
QEMU_USE_KVM = ""
@@ -1556,6 +1556,9 @@ QB_DEFAULT_KERNEL = "none"
# boot command line provided via uki, not via bootloader
UKI_CMDLINE = "rootwait root=LABEL=root console=${KERNEL_CONSOLE}"
+# qemu provides the devicetree at boot, do not embed a dtb in the uki for selftests
+UKI_DEVICETREE = ""
+
"""
self.append_config(config)
bitbake('core-image-base ovmf')
According to the Unified Kernel Image (UKI) specification [1], including a compiled device tree in the .dtb section of a UKI is optional. However, the current implementation always packages device trees listed in KERNEL_DEVICETREE into the UKI by default. This makes uki.bbclass unsuitable for systems that rely on firmware-provided DTBs and do not want a DTB embedded in the UKI. Fix this by introducing a new UKI_DEVICETREE variable to control device tree packaging. The .dtb section is now populated from UKI_DEVICETREE instead of KERNEL_DEVICETREE. Users who do not want DTBs included in the UKI can override UKI_DEVICETREE to an empty value from their recipes. Update the UKI selftests accordingly, as QEMU does not provide a device tree to embed. [1] https://uapi-group.org/specifications/specs/unified_kernel_image/ Signed-off-by: Viswanath Kraleti <viswanath.kraleti@oss.qualcomm.com> --- meta/classes-recipe/uki.bbclass | 6 ++++-- meta/lib/oeqa/selftest/cases/uki.py | 6 ++++++ meta/lib/oeqa/selftest/cases/wic.py | 3 +++ 3 files changed, 13 insertions(+), 2 deletions(-)