1
0
mirror of https://git.yoctoproject.org/meta-ti synced 2026-04-04 01:59:02 +00:00

Compare commits

...

11 Commits

Author SHA1 Message Date
LCPD Automation Script
3db8ddf7f8 CI/CD Auto-Merger: cicd.master.202603261656
Updated the value(s) for:
  u-boot-ti-staging_2026.01: SRCREV_uboot
  linux-ti-staging_6.18: SRCREV

Changelogs:
  u-boot-ti-staging_2026.01: https://git.ti.com/cgit/ti-u-boot/ti-u-boot/log/?qt=range&q=a46241db71e383bb6dda103ecad12b13e7af3c38..2549829cc194ffd9e38b755d2e10c7fc4cd971eb
  linux-ti-staging_6.18: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/?qt=range&q=c164e381f6bc1a72b527f0bf3a6b1fc9af06517f..c214492085504176b9c252a7175e4e60b4b442af

Signed-off-by: LCPD Automation Script <lcpdbld@list.ti.com>
2026-03-26 16:57:53 -05:00
Anshul Dalal
7640ce6a58 am62lxx-evm: fix fitImage address for 128MiB
This patch modifies the load addresses for the kernel fitImage to
provide out-of-box support for 128MiB DDR sizes on AM62l.

The current fitImage uses 0x88000000 as the DTB load address which is
beyond the 128MiB boundary while the kernel load address of 0x82000000
conflicts with U-Boot's SPL load address which causes problems when
enabling falcon mode on the device.

Signed-off-by: Anshul Dalal <anshuld@ti.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-26 15:19:43 -05:00
Shiva Tripathi
764817c28e conf: Enable dynamic tpm-layer support for LUKS
Add BBFILES_DYNAMIC registration for 'tpm-layer' collection to
conditionally include LUKS recipes from dynamic-layers/tpm-layer/
when meta-security/meta-tpm layer is present.

Add tpm-layer to LAYERRECOMMENDS to document the optional
dependency for LUKS functionality.

Update ti-core-initramfs.inc to auto-enable initramfs generation
when DISTRO_FEATURES contains 'luks'.

Signed-off-by: Shiva Tripathi <s-tripathi1@ti.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-26 09:40:56 -05:00
Shiva Tripathi
bd0e3d7ba5 initramfs-module-luks-ftpm: Add fTPM support
Add initramfs module to dynamic-layers/tpm-layer providing LUKS2 full
disk encryption with TPM-sealed keys for TI K3 platforms. Keys are
sealed by firmware TPM (fTPM) running in OP-TEE and stored in eMMC
RPMB.

Features:
- First-boot in-place encryption with tpm2_getrandom key generation
- TPM-sealed key storage via persistent handle 0x81080001
- Automatic unlock on subsequent boots
- Space verification ensuring 32MB available for LUKS header

The module is built only when meta-tpm layer is present and gets
included in initramfs only when DISTRO_FEATURES='luks' and
MACHINE_FEATURES='optee-ftpm'

LUKS packages (cryptsetup, tpm2-tools, tpm2-tss, optee-ftpm,
e2fsprogs-*) significantly increase initramfs size beyond the default
131072 limit. Increase INITRAMFS_MAXSIZE to 200000 to accommodate
these packages.

Signed-off-by: Shiva Tripathi <s-tripathi1@ti.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-26 09:40:56 -05:00
Shiva Tripathi
6f205ef079 linux-ti-staging: Add LUKS encryption config
Add kernel configuration fragment enabling dm-crypt and crypto
algorithms required for LUKS2 full disk encryption. Config is
applied when DISTRO_FEATURES contains 'luks'.

Includes ARM64 crypto optimizations and fTPM support.

Signed-off-by: Shiva Tripathi <s-tripathi1@ti.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-26 09:40:56 -05:00
Mahammed Sadik Shaik
4c4f4b495d ti-extras: update srcrev for jailhouse
update jailhouse linux and uboot to latest

Signed-off-by: Mahammed Sadik Shaik <s-sadik@ti.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-26 09:40:56 -05:00
LCPD Automation Script
ed4c7f9ead CI/CD Auto-Merger: cicd.master.202603241800
Updated the value(s) for:
  ti-linux-fw: TI_LINUX_FW_SRCREV
  u-boot-ti-staging_2025.01: SRCREV_uboot
  linux-ti-staging_6.18: SRCREV

Changelogs:
  ti-linux-fw: https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/log/?qt=range&q=aaa3d54aaa9e837834fa6b6dd99e9fefdfcf7949..9e9d50ff563f83db86d36b72cd7fb4f487d6b414
  u-boot-ti-staging_2025.01: https://git.ti.com/cgit/ti-u-boot/ti-u-boot/log/?qt=range&q=ef2eb76b650415637bd93b0eddfb1e31489117f9..7b9dedb046eb6a720997f61582c7b13da1b5b9f0
  linux-ti-staging_6.18: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/?qt=range&q=fa0fe817f5ee1b0542f757abaded245c6e5a1321..c164e381f6bc1a72b527f0bf3a6b1fc9af06517f

Signed-off-by: LCPD Automation Script <lcpdbld@list.ti.com>
2026-03-24 18:00:45 -05:00
Ryan Eatmon
e00f8d22d8 weston: Update to 15.0.0
oe-core has bumped the version to 15.0.0 [1].  We need to adjust the
bbappend version to % to better match future version changes.

Additionally, the patch needs to be updated to match the weston code
changes.

[1] https://git.openembedded.org/openembedded-core/commit/?id=a1ed6fddd99171536e23d63a5d5b180019d672ad

Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-24 16:56:39 -05:00
Ryan Eatmon
36901e8b0f am65xx-evm-k3r5.conf: Fix defconfig for the main build
A copy/paste error set the wrong defconfig for the main build when
setting up the test build flow.

Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-20 14:21:11 -05:00
Ryan Eatmon
2537d1cce4 check_yocto_rules: Add new exception
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-20 14:21:11 -05:00
Pratham Deshmukh
60d0643b51 conf: machine: am62lxx-evm: Increase max LEB count
The mkfs.ubifs tool was failing with "max_leb_cnt too low (10077 needed)"
error when building tisdk-default-image for am62lxx-evm-rt. Increased
the -c parameter in MKUBIFS_ARGS from 8500 to 12000 to accommodate the
larger filesystem size requirement.

Signed-off-by: Pratham Deshmukh <p-deshmukh@ti.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
2026-03-20 14:21:11 -05:00
19 changed files with 491 additions and 69 deletions

View File

@@ -19,7 +19,8 @@
"meta-ti-bsp/recipes-devtools/binutils/binutils-cross-canadian_%.bbappend",
"meta-ti-bsp/recipes-security/optee/optee-%.bbappend",
"meta-ti-bsp/dynamic-layers/openembedded-layer/recipes-bsp/u-boot/u-boot-ti-%.bbappend",
"meta-ti-bsp/dynamic-layers/openembedded-layer/recipes-ti/initramfs/packagegroup-ti-core-initramfs.bbappend"
"meta-ti-bsp/dynamic-layers/openembedded-layer/recipes-ti/initramfs/packagegroup-ti-core-initramfs.bbappend",
"meta-ti-bsp/dynamic-layers/tpm-layer/recipes-ti/initramfs/packagegroup-ti-core-initramfs.bbappend"
]
},
"GUARD-2" : {

View File

@@ -20,10 +20,13 @@ LAYERDEPENDS_meta-ti-bsp = " \
LAYERRECOMMENDS_meta-ti-bsp = " \
openembedded-layer \
tpm-layer \
"
BBFILES_DYNAMIC += " \
openembedded-layer:${LAYERDIR}/dynamic-layers/openembedded-layer/recipes*/*/*.bbappend \
tpm-layer:${LAYERDIR}/dynamic-layers/tpm-layer/recipes*/*/*.bb \
tpm-layer:${LAYERDIR}/dynamic-layers/tpm-layer/recipes*/*/*.bbappend \
"
SIGGEN_EXCLUDERECIPES_ABISAFE += " \

View File

@@ -6,7 +6,7 @@ require conf/machine/include/am62lxx.inc
IMAGE_FSTYPES += "ubifs ubi"
MKUBIFS_ARGS ?= "-F -m 4096 -e 258048 -c 8500"
MKUBIFS_ARGS ?= "-F -m 4096 -e 258048 -c 12000"
UBINIZE_ARGS ?= "-m 4096 -p 256KiB -s 1024 -O 1024"
@@ -17,3 +17,10 @@ KERNEL_DEVICETREE_PREFIX = " \
KERNEL_DEVICETREE = ""
UBOOT_MACHINE = "am62lx_evm_defconfig"
FIT_CONF_DEFAULT_DTB = "k3-am62l3-evm.dtb"
UBOOT_LOADADDRESS = "0x82400000"
UBOOT_ENTRYPOINT = "0x82400000"
UBOOT_RD_LOADADDRESS = "0x84000000"
UBOOT_RD_ENTRYPOINT = "0x84000000"
UBOOT_DTB_LOADADDRESS = "0x84f00000"
UBOOT_DTBO_LOADADDRESS = "0x84f80000"

View File

@@ -9,5 +9,5 @@ UBOOT_MACHINE:tie-test-builds = ""
UBOOT_CONFIG = ""
UBOOT_CONFIG:prepend:tie-test-builds = "usbdfu main"
UBOOT_CONFIG[main] = "am62x_evm_r5_defconfig"
UBOOT_CONFIG[main] = "am65x_evm_r5_defconfig"
UBOOT_CONFIG[usbdfu] = "am65x_evm_r5_usbdfu_defconfig"

View File

@@ -5,7 +5,7 @@
# TI_CORE_INITRAMFS_ENABLED = "0"
#
#------------------------------------------------------------------------------
TI_CORE_INITRAMFS_ENABLED ?= "${@ '1' if d.getVar('TI_CORE_INITRAMFS_KERNEL_MODULES') or d.getVar('TI_CORE_INITRAMFS_EXTRA_INSTALL') else '0'}"
TI_CORE_INITRAMFS_ENABLED ?= "${@ '1' if d.getVar('TI_CORE_INITRAMFS_KERNEL_MODULES') or d.getVar('TI_CORE_INITRAMFS_EXTRA_INSTALL') or bb.utils.contains('DISTRO_FEATURES', 'luks', True, False, d) else '0'}"
TI_CORE_INITRAMFS_KERNEL_MODULES ?= ""
TI_CORE_INITRAMFS_EXTRA_INSTALL ?= ""

View File

@@ -0,0 +1,341 @@
#!/bin/sh
# initramfs-framework module for LUKS encryption with fTPM support
# Configuration
BOOT_DEV="/dev/mmcblk1p1" # Boot partition (FAT, unencrypted)
ROOT_DEV="/dev/mmcblk1p2" # Root partition (will be encrypted)
CRYPT_NAME="root_crypt"
CRYPT_DEV="/dev/mapper/${CRYPT_NAME}"
BOOT_MNT="/boot_part"
TPM_PRIMARY_CTX="/tmp/tpm_primary.ctx"
TPM_KEY_PRIV="/tmp/tpm_key.priv"
TPM_KEY_PUB="/tmp/tpm_key.pub"
TPM_KEY_CTX="/tmp/tpm_key.ctx"
TPM2_HANDLE="0x81080001" # TPM persistent handle for LUKS key
ENCRYPTION_MARKER="${BOOT_MNT}/.encryption_in_progress"
# Wait for MMC device to appear
wait_for_device() {
local device="$1"
local timeout="${2:-10}"
msg "Waiting for storage device ${device}..."
for i in $(seq 1 ${timeout}); do
if [ -b "${device}" ]; then
return 0
fi
sleep 1
done
return 1
}
# Initialize fTPM and check availability
init_ftpm() {
msg "Initializing secure hardware (fTPM)..."
# Start TEE supplicant (required for fTPM TA to work)
if [ -x /usr/sbin/tee-supplicant ]; then
/usr/sbin/tee-supplicant -d &
TEE_SUPPLICANT_PID=$!
sleep 5
else
info "Warning: Trusted execution environment not available"
return 1
fi
# Load fTPM kernel module
if ! /sbin/modprobe tpm_ftpm_tee; then
info "Warning: TPM module failed to load"
return 1
fi
# Wait for TPM device
for i in $(seq 1 10); do
if [ -c /dev/tpmrm0 ]; then
export TPM2TOOLS_TCTI="device:/dev/tpmrm0"
return 0
fi
sleep 1
done
info "Warning: fTPM not available - encryption will be skipped"
return 1
}
# Generate 32-byte random key using TPM RNG
generate_random_key() {
/usr/bin/tpm2_getrandom --hex 32
}
# Seal data with TPM and store in persistent handle
tpm_seal_key() {
local KEY_DATA="$1"
# Create primary key in owner hierarchy
/usr/bin/tpm2_createprimary -C o -c "${TPM_PRIMARY_CTX}" -Q || return 1
# Create sealed object
echo -n "${KEY_DATA}" | \
/usr/bin/tpm2_create -C "${TPM_PRIMARY_CTX}" \
-u "${TPM_KEY_PUB}" -r "${TPM_KEY_PRIV}" \
-i- -Q || return 1
# Load sealed object into TPM
/usr/bin/tpm2_load -C "${TPM_PRIMARY_CTX}" \
-u "${TPM_KEY_PUB}" -r "${TPM_KEY_PRIV}" \
-c "${TPM_KEY_CTX}" -Q || return 1
# Make key persistent at handle (stored in TPM NV RAM - RPMB)
/usr/bin/tpm2_evictcontrol -C o -c "${TPM_KEY_CTX}" "${TPM2_HANDLE}" || return 1
return 0
}
# Unseal data from TPM persistent handle
tpm_unseal_key() {
# Check if persistent handle exists
if ! /usr/bin/tpm2_getcap handles-persistent | grep -q "${TPM2_HANDLE}"; then
debug "ERROR: TPM persistent handle not found"
return 1
fi
# Unseal key directly from persistent handle
/usr/bin/tpm2_unseal -c "${TPM2_HANDLE}" || return 1
return 0
}
# Perform in-place LUKS encryption (first boot)
encrypt_root_filesystem() {
msg "=========================================="
msg "First boot: Encrypting root filesystem"
msg "=========================================="
# Set marker to track encryption progress
touch "${ENCRYPTION_MARKER}"
sync
# Generate random encryption key using TPM RNG
msg "Generating encryption key..."
LUKS_KEY=$(generate_random_key)
if [ -z "${LUKS_KEY}" ]; then
msg "ERROR: Failed to generate encryption key"
rm -f "${ENCRYPTION_MARKER}"
return 1
fi
# Seal key with TPM before encryption starts
msg "Securing key with TPM..."
if ! tpm_seal_key "${LUKS_KEY}"; then
msg "ERROR: Failed to secure key"
rm -f "${ENCRYPTION_MARKER}"
return 1
fi
# Filesystem check before encryption
msg "Checking filesystem integrity..."
/usr/sbin/e2fsck -f -y "${ROOT_DEV}"
E2FSCK_RET=$?
if [ ${E2FSCK_RET} -ge 4 ]; then
msg "ERROR: Filesystem check failed"
rm -f "${ENCRYPTION_MARKER}"
return 1
fi
# Shrink filesystem before encryption to leave room for LUKS header
msg "Preparing filesystem for encryption..."
/usr/sbin/resize2fs -M "${ROOT_DEV}" || {
msg "ERROR: Failed to prepare filesystem"
rm -f "${ENCRYPTION_MARKER}"
return 1
}
# Verify partition has sufficient space for LUKS header
msg "Verifying space for encryption..."
MIN_BLOCKS=$(/usr/sbin/resize2fs -P "${ROOT_DEV}" 2>&1 | awk '/[Mm]inimum.*:/ {print $NF}')
# Get filesystem block size and device size
BLOCK_SIZE=$(/usr/sbin/tune2fs -l "${ROOT_DEV}" 2>/dev/null | awk '/^Block size:/ {print $NF}')
DEV_NAME=$(basename "${ROOT_DEV}")
PART_SECTORS=$(cat /sys/class/block/"${DEV_NAME}"/size 2>/dev/null)
if [ -z "${MIN_BLOCKS}" ] || [ -z "${BLOCK_SIZE}" ] || [ -z "${PART_SECTORS}" ]; then
msg "ERROR: Unable to determine partition geometry"
rm -f "${ENCRYPTION_MARKER}"
return 1
fi
# Convert filesystem blocks to 512-byte sectors
MIN_SECTORS=$((MIN_BLOCKS * BLOCK_SIZE / 512))
LUKS_SECTORS=65536 # 32MB in 512-byte sectors
if [ $((PART_SECTORS - MIN_SECTORS)) -lt ${LUKS_SECTORS} ]; then
msg "ERROR: Insufficient space for LUKS header (need 32MB free)"
rm -f "${ENCRYPTION_MARKER}"
return 1
fi
# Perform in-place encryption
msg "=========================================="
msg "Encrypting filesystem..."
msg "This will take several minutes."
msg "DO NOT POWER OFF THE DEVICE!"
msg "=========================================="
echo -n "${LUKS_KEY}" | \
/usr/sbin/cryptsetup reencrypt --encrypt \
--type luks2 \
--cipher aes-xts-plain64 \
--key-size 256 \
--hash sha256 \
--reduce-device-size 32M \
--key-file - \
"${ROOT_DEV}" || {
msg "ERROR: Encryption failed"
rm -f "${ENCRYPTION_MARKER}"
return 1
}
msg "=========================================="
msg "Encryption completed successfully!"
msg "=========================================="
# Remove encryption marker
rm -f "${ENCRYPTION_MARKER}"
sync
# Unlock the newly encrypted device
msg "Activating encrypted filesystem..."
echo -n "${LUKS_KEY}" | \
/usr/sbin/cryptsetup luksOpen "${ROOT_DEV}" "${CRYPT_NAME}" --key-file - || {
msg "ERROR: Failed to activate encrypted filesystem"
return 1
}
# Resize filesystem to fit the encrypted device
msg "Optimizing filesystem..."
/usr/sbin/resize2fs -f "${CRYPT_DEV}" || {
msg "ERROR: Failed to optimize filesystem"
return 1
}
# Verify filesystem after resize
/usr/sbin/e2fsck -f -y "${CRYPT_DEV}" || {
info "WARNING: Filesystem verification had issues, but continuing"
}
return 0
}
# Unlock encrypted root filesystem (subsequent boots)
unlock_encrypted_root() {
msg "Unlocking encrypted filesystem..."
# Unseal key from TPM persistent handle
LUKS_KEY=$(tpm_unseal_key)
if [ -z "${LUKS_KEY}" ]; then
msg "ERROR: Failed to retrieve encryption key from TPM"
msg "Attempting passphrase fallback..."
# Try to unlock with passphrase (interactive)
/usr/sbin/cryptsetup luksOpen "${ROOT_DEV}" "${CRYPT_NAME}" || {
fatal "ERROR: Failed to unlock encrypted filesystem"
}
else
# Unlock with unsealed key
echo -n "${LUKS_KEY}" | \
/usr/sbin/cryptsetup luksOpen "${ROOT_DEV}" "${CRYPT_NAME}" --key-file - || {
fatal "ERROR: Failed to unlock with TPM key"
}
fi
msg "Encrypted filesystem unlocked"
}
# Module enabled check
luksftpm_enabled() {
# Always run this module - it handles both encrypted and unencrypted cases
return 0
}
# Module main function
luksftpm_run() {
# Wait for storage device
if ! wait_for_device "${ROOT_DEV}" 10; then
info "Storage device not found, skipping encryption module"
return 0
fi
# Mount boot partition
msg "Mounting boot partition..."
mkdir -p "${BOOT_MNT}"
if ! mount "${BOOT_DEV}" "${BOOT_MNT}"; then
info "ERROR: Failed to mount boot partition, attempting standard boot..."
mkdir -p ${ROOTFS_DIR}
mount "${ROOT_DEV}" ${ROOTFS_DIR}
return 0
fi
# Initialize fTPM
TPM_AVAILABLE=0
if init_ftpm; then
TPM_AVAILABLE=1
fi
# Check filesystem encryption status
msg "Checking filesystem encryption status..."
MOUNT_DEV="${ROOT_DEV}"
if /usr/sbin/cryptsetup isLuks "${ROOT_DEV}"; then
msg "Filesystem is encrypted"
unlock_encrypted_root
MOUNT_DEV="${CRYPT_DEV}"
else
msg "Filesystem is not encrypted"
# Check if encryption is enabled and TPM is available
if [ $TPM_AVAILABLE -eq 1 ]; then
# Check for encryption marker (resume interrupted encryption)
if [ -f "${ENCRYPTION_MARKER}" ]; then
msg "Resuming interrupted encryption..."
if ! encrypt_root_filesystem; then
msg "ERROR: Failed to resume encryption"
msg "Booting without encryption..."
MOUNT_DEV="${ROOT_DEV}"
else
MOUNT_DEV="${CRYPT_DEV}"
fi
else
# First boot - perform encryption
if encrypt_root_filesystem; then
MOUNT_DEV="${CRYPT_DEV}"
else
msg "ERROR: Encryption failed - booting without encryption"
MOUNT_DEV="${ROOT_DEV}"
fi
fi
else
msg "TPM not available - skipping encryption"
MOUNT_DEV="${ROOT_DEV}"
fi
fi
# Unmount boot partition before switching root
umount "${BOOT_MNT}"
# Mount root filesystem to $ROOTFS_DIR (framework expects this)
msg "Mounting root filesystem..."
mkdir -p ${ROOTFS_DIR}
mount "${MOUNT_DEV}" ${ROOTFS_DIR} || {
fatal "ERROR: Failed to mount root filesystem!"
}
# Clean up tmpfs and sensitive variables
rm -f "${TPM_PRIMARY_CTX}" "${TPM_KEY_PUB}" "${TPM_KEY_PRIV}" "${TPM_KEY_CTX}"
unset LUKS_KEY TPM_AVAILABLE MOUNT_DEV TEE_SUPPLICANT_PID
msg "Boot complete"
}

View File

@@ -0,0 +1,43 @@
SUMMARY = "initramfs support for LUKS encryption with fTPM"
DESCRIPTION = "Provides LUKS2 full disk encryption using firmware TPM (fTPM) for key management on TI K3 platforms"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
# Only build for platforms with optee-ftpm support
COMPATIBLE_MACHINE = "null"
COMPATIBLE_MACHINE:k3 = "${@bb.utils.contains('MACHINE_FEATURES', 'optee-ftpm', '.*', 'null', d)}"
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI = "file://luksftpm"
S = "${UNPACKDIR}"
do_install() {
install -d ${D}/init.d
# Install as 85-luksftpm (runs after udev at 01, before rootfs at 90)
install -m 0755 ${UNPACKDIR}/luksftpm ${D}/init.d/85-luksftpm
}
FILES:${PN} = "/init.d/85-luksftpm"
# Runtime dependencies
RDEPENDS:${PN} = "\
initramfs-framework-base \
busybox \
kmod \
cryptsetup \
tpm2-tools \
tpm2-tss \
libtss2-tcti-device \
optee-client \
optee-ftpm \
e2fsprogs-e2fsck \
e2fsprogs-resize2fs \
e2fsprogs-tune2fs \
util-linux-blkid \
kernel-module-tpm-ftpm-tee \
"
PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@@ -0,0 +1,3 @@
LUKS_ENCRYPTION ?= "${@bb.utils.contains('MACHINE_FEATURES', 'optee-ftpm', 'initramfs-module-luks-ftpm', '', d)}"
RDEPENDS:${PN}:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'luks', '${LUKS_ENCRYPTION}', '', d)}"

View File

@@ -0,0 +1 @@
INITRAMFS_MAXSIZE = "200000"

View File

@@ -21,7 +21,7 @@ TI_PKA_FW_VERSION = "2.1.0"
TI_IPC_EXAMPLES_FW_VERSION = "3.52.00.01"
PCM6240_FW_VERSION = "1.0.0.0"
TI_LINUX_FW_SRCREV ?= "aaa3d54aaa9e837834fa6b6dd99e9fefdfcf7949"
TI_LINUX_FW_SRCREV ?= "9e9d50ff563f83db86d36b72cd7fb4f487d6b414"
SRCREV = "${TI_LINUX_FW_SRCREV}"
BRANCH ?= "ti-linux-firmware"

View File

@@ -7,6 +7,6 @@ BRANCH:tie-jailhouse:bsp-ti-6_12 = "ti-u-boot-2025.01-jailhouse"
BRANCH:tie-jailhouse:bsp-ti-6_18 = "ti-u-boot-2026.01-jailhouse"
SRCREV_uboot:tie-jailhouse:bsp-ti-6_12 = "e718bbcec3ebf663c021839753034a224be4cc53"
SRCREV_uboot:tie-jailhouse:bsp-ti-6_18 = "cfac87057b6fed15c4be4f1d35bf0c4001807484"
SRCREV_uboot:tie-jailhouse:bsp-ti-6_18 = "53a287d24610f0747ae4e35cff2afa3af23a48e3"
UBOOT_GIT_URI:tie-jailhouse = "git://git.ti.com/git/processor-sdk/u-boot.git"

View File

@@ -4,6 +4,6 @@ PR = "r0"
BRANCH = "ti-u-boot-2025.01"
SRCREV_uboot = "ef2eb76b650415637bd93b0eddfb1e31489117f9"
SRCREV_uboot = "7b9dedb046eb6a720997f61582c7b13da1b5b9f0"
SRC_URI += "file://0001-binman-migrate-form-pkg_resources-to-importlib.patch"

View File

@@ -4,4 +4,4 @@ PR = "r0"
BRANCH = "ti-u-boot-2026.01"
SRCREV_uboot = "a46241db71e383bb6dda103ecad12b13e7af3c38"
SRCREV_uboot = "2549829cc194ffd9e38b755d2e10c7fc4cd971eb"

View File

@@ -1,6 +1,6 @@
From 5a05e5b66dd3831a9c9c2b3f64bd42419d9ade2d Mon Sep 17 00:00:00 2001
From: Denys Dmytriyenko <denys@konsulko.com>
Date: Thu, 6 Jul 2023 01:48:41 +0000
From 3cddacaa9ea3cfd75732ea9a84312fa68e0bfda7 Mon Sep 17 00:00:00 2001
From: Ryan Eatmon <reatmon@ti.com>
Date: Tue, 24 Mar 2026 10:52:59 -0500
Subject: [PATCH] Revert require GL_EXT_unpack_subimage commit
This reverts commit 593d5af43a8e2c2a3371088fa7ae430d0517c82d.
@@ -13,83 +13,76 @@ Upstream-Status: Inappropriate [specific to TI SGX]
Signed-off-by: Andrew Davis <afd@ti.com>
Signed-off-by: Denys Dmytriyenko <denys@konsulko.com>
Signed-off-by: Ryan Eatmon <reatmon@ti.com>
---
libweston/renderer-gl/gl-renderer-internal.h | 2 ++
libweston/renderer-gl/gl-renderer.c | 29 ++++++++++++++++----
2 files changed, 26 insertions(+), 5 deletions(-)
libweston/renderer-gl/gl-renderer.c | 26 ++++++++++++++++----
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/libweston/renderer-gl/gl-renderer-internal.h b/libweston/renderer-gl/gl-renderer-internal.h
index 5032035..85616c9 100644
index 1afffbda..dbf7b1c3 100644
--- a/libweston/renderer-gl/gl-renderer-internal.h
+++ b/libweston/renderer-gl/gl-renderer-internal.h
@@ -229,6 +229,8 @@ struct gl_renderer {
PFNEGLCREATEPLATFORMWINDOWSURFACEEXTPROC create_platform_window;
bool has_platform_base;
+ bool has_unpack_subimage;
@@ -526,6 +526,8 @@ struct gl_renderer {
struct weston_log_scope *shader_scope;
struct dmabuf_allocator *allocator;
+
PFNEGLBINDWAYLANDDISPLAYWL bind_display;
PFNEGLUNBINDWAYLANDDISPLAYWL unbind_display;
PFNEGLQUERYWAYLANDBUFFERWL query_buffer;
+ bool has_unpack_subimage;
};
static inline uint32_t
diff --git a/libweston/renderer-gl/gl-renderer.c b/libweston/renderer-gl/gl-renderer.c
index e694418b..2be6d621 100644
index 45a2a148..8b238208 100644
--- a/libweston/renderer-gl/gl-renderer.c
+++ b/libweston/renderer-gl/gl-renderer.c
@@ -2523,6 +2523,7 @@ gl_renderer_flush_damage(struct weston_paint_node *pnode)
struct weston_surface *surface = pnode->surface;
const struct weston_testsuite_quirks *quirks =
&surface->compositor->test_data.test_quirks;
+ struct gl_renderer *gr = get_renderer(surface->compositor);
struct weston_buffer *buffer = surface->buffer_ref.buffer;
struct gl_surface_state *gs = get_surface_state(surface);
struct gl_buffer_state *gb = gs->buffer;
@@ -2550,6 +2551,24 @@ gl_renderer_flush_damage(struct weston_paint_node *pnode)
data = wl_shm_buffer_get_data(buffer->shm_buffer);
@@ -3021,6 +3021,22 @@ gl_renderer_flush_damage(struct weston_paint_node *pnode)
data = wl_shm_buffer_get_data(buffer->shm_buffer);
+ if (!gr->has_unpack_subimage) {
+ wl_shm_buffer_begin_access(buffer->shm_buffer);
+ for (j = 0; j < gs->buffer->num_textures; j++) {
+ glBindTexture(GL_TEXTURE_2D, gs->buffer->textures[j]);
+ glTexImage2D(GL_TEXTURE_2D, 0,
+ gs->buffer->gl_format[j],
+ gs->buffer->pitch / pixel_format_hsub(buffer->pixel_format, j),
+ buffer->height / pixel_format_vsub(buffer->pixel_format, j),
+ 0,
+ gl_format_from_internal(gs->buffer->gl_format[j]),
+ gs->buffer->gl_pixel_type,
+ data + gs->buffer->offset[j]);
+ for (j = 0; j < gb->num_textures; j++) {
+ glBindTexture(GL_TEXTURE_2D, gb->textures[j]);
+ gl_texture_2d_store(gr, 0, 0, 0,
+ gb->pitch / pixel_format_hsub(buffer->pixel_format, j),
+ buffer->height / pixel_format_vsub(buffer->pixel_format, j),
+ gb->texture_format[j].external,
+ gb->texture_format[j].type,
+ data + gb->offset[j]);
+ }
+ wl_shm_buffer_end_access(buffer->shm_buffer);
+
+ goto done;
+ }
+
if (gb->needs_full_upload || quirks->gl_force_full_upload) {
wl_shm_buffer_begin_access(buffer->shm_buffer);
@@ -4754,11 +4773,9 @@ gl_renderer_setup(struct weston_compositor *ec)
else
ec->read_format = pixel_format_get_info(DRM_FORMAT_ABGR8888);
- if (gr->gl_version < gr_gl_version(3, 0) &&
- !weston_check_egl_extension(extensions, "GL_EXT_unpack_subimage")) {
if (gb->needs_full_upload || quirks->force_full_upload) {
wl_shm_buffer_begin_access(buffer->shm_buffer);
@@ -5171,11 +5187,9 @@ gl_renderer_setup(struct weston_compositor *ec)
else
ec->read_format = pixel_format_get_info(DRM_FORMAT_ABGR8888);
- if (gr->gl_version < gl_version(3, 0) &&
- !gl_extensions_has(gr, EXTENSION_EXT_UNPACK_SUBIMAGE)) {
- weston_log("GL_EXT_unpack_subimage not available.\n");
- return -1;
- }
+ if (gr->gl_version >= gr_gl_version(3, 0) ||
+ if (gr->gl_version >= gl_version(3, 0) ||
+ weston_check_egl_extension(extensions, "GL_EXT_unpack_subimage"))
+ gr->has_unpack_subimage = true;
if (gr->gl_version >= gr_gl_version(3, 0) ||
weston_check_egl_extension(extensions, "GL_EXT_texture_type_2_10_10_10_REV"))
@@ -4880,6 +4897,8 @@ gl_renderer_setup(struct weston_compositor *ec)
gr_gl_version_minor(gr->gl_version));
weston_log_continue(STAMP_SPACE "read-back format: %s\n",
ec->read_format->drm_format_name);
if (gl_extensions_has(gr, EXTENSION_OES_MAPBUFFER))
GET_PROC_ADDRESS(gr->unmap_buffer, "glUnmapBufferOES");
@@ -5303,6 +5317,8 @@ gl_renderer_setup(struct weston_compositor *ec)
gl_version_minor(gr->gl_version));
weston_log_continue(STAMP_SPACE "read-back format: %s\n",
ec->read_format->drm_format_name);
+ weston_log_continue(STAMP_SPACE "wl_shm sub-image to texture: %s\n",
+ gr->has_unpack_subimage ? "yes" : "no");
weston_log_continue(STAMP_SPACE "glReadPixels supports y-flip: %s\n",
yesno(gr->has_pack_reverse));
weston_log_continue(STAMP_SPACE "glReadPixels supports PBO: %s\n",
weston_log_continue(STAMP_SPACE "glReadPixels supports y-flip: %s\n",
yesno(gl_extensions_has(gr, EXTENSION_ANGLE_PACK_REVERSE_ROW_ORDER)));
weston_log_continue(STAMP_SPACE "glReadPixels supports PBO: %s\n",
--
2.43.0

View File

@@ -0,0 +1,22 @@
# Device Mapper support
CONFIG_MD=y
CONFIG_BLK_DEV_DM=y
CONFIG_DM_CRYPT=y
# Core crypto algorithms for LUKS encryption
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_XTS=y
CONFIG_CRYPTO_SHA256=y
CONFIG_CRYPTO_SHA512=y
# ARM64 optimized crypto for better performance
CONFIG_CRYPTO_AES_ARM64=y
CONFIG_CRYPTO_AES_ARM64_CE=y
CONFIG_CRYPTO_AES_ARM64_CE_BLK=y
# Userspace crypto API for cryptsetup
CONFIG_CRYPTO_USER_API_HASH=y
CONFIG_CRYPTO_USER_API_SKCIPHER=y
# Firmware TPM support via OP-TEE
CONFIG_TCG_FTPM_TEE=m

View File

@@ -22,7 +22,7 @@ S = "${UNPACKDIR}/${BB_GIT_DEFAULT_DESTSUFFIX}"
BRANCH ?= "ti-linux-6.18.y"
SRCREV ?= "fa0fe817f5ee1b0542f757abaded245c6e5a1321"
SRCREV ?= "c214492085504176b9c252a7175e4e60b4b442af"
PV = "6.18.13+git"
KERNEL_REPRODUCIBILITY_PATCHES = " \
@@ -35,3 +35,11 @@ module_conf_rpmsg_client_sample = "blacklist rpmsg_client_sample"
module_conf_ti_k3_r5_remoteproc = "softdep ti_k3_r5_remoteproc pre: virtio_rpmsg_bus"
module_conf_ti_k3_dsp_remoteproc = "softdep ti_k3_dsp_remoteproc pre: virtio_rpmsg_bus"
KERNEL_MODULE_PROBECONF += "rpmsg_client_sample ti_k3_r5_remoteproc ti_k3_dsp_remoteproc"
# LUKS encryption with fTPM kernel configuration
SRC_URI:append:k3 = " \
${@bb.utils.contains('DISTRO_FEATURES', 'luks', 'file://luks-ftpm.cfg', '', d)} \
"
KERNEL_CONFIG_FRAGMENTS:append:k3 = " \
${@bb.utils.contains('DISTRO_FEATURES', 'luks', '${UNPACKDIR}/luks-ftpm.cfg', '', d)} \
"

View File

@@ -5,4 +5,4 @@ BRANCH:tie-jailhouse:bsp-ti-6_12 = "ti-linux-6.12.y-jailhouse"
BRANCH:tie-jailhouse:bsp-ti-6_18 = "ti-linux-6.18.y-jailhouse"
SRCREV:tie-jailhouse:bsp-ti-6_12 = "229a48602ad1557612a4ffabec6a3cbcdd745f87"
SRCREV:tie-jailhouse:bsp-ti-6_18 = "e80c3501e727c8c01454594ca5b10555377dfd60"
SRCREV:tie-jailhouse:bsp-ti-6_18 = "b27ed9ea7bdad936265fe38c6e112d86743fd379"

View File

@@ -9,6 +9,6 @@ BRANCH:tie-jailhouse:bsp-ti-6_12 = "ti-linux-6.12.y-jailhouse"
BRANCH:tie-jailhouse:bsp-ti-6_18 = "ti-linux-6.18.y-jailhouse"
SRCREV:tie-jailhouse:bsp-ti-6_12 = "229a48602ad1557612a4ffabec6a3cbcdd745f87"
SRCREV:tie-jailhouse:bsp-ti-6_18 = "e80c3501e727c8c01454594ca5b10555377dfd60"
SRCREV:tie-jailhouse:bsp-ti-6_18 = "b27ed9ea7bdad936265fe38c6e112d86743fd379"
KERNEL_GIT_URI:tie-jailhouse = "git://git.ti.com/git/processor-sdk/linux.git"