NXP MCU 技术论坛
直播中

贾飞世

7年用户 1749经验值
私信 关注
[问答]

使用CAAM和4GB ram在加密文件系统上写入大文件时出现“swiotlb 缓冲区已满”是怎么回事?

将数据传输到 ram 或磁盘中的加密分区时,出现以下错误
caam_jr 30903000 .jr:swiotlb 缓冲区已满(sz:512字节),总计32768 (插槽),已使用32768 (插槽)
caam_jr 30903000.jr:无法映射源
以下是可用于重现问题的代码。

mkdir /tmp
mkdir /data
mount -o size=1G -t tmpfs none /tmp/
dd if=/dev/zero of=/tmp/disk bs=1024 count=200000
losetup /dev/loop1 /tmp/disk
caam-keygen create randomkey ecb -s 16
cat /uboot/caam/randomkey | keyctl padd logon logkey: @u
DM_DISABLE_UDEV=1 dmsetup -v create encrypted --table "0 400000 crypt capi:tk(cbc(aes))-plain :36:logon:logkey: 0 /dev/loop1 0 1 sector_size:512"
mkfs.ext4 /dev/mapper/encrypted
mount /dev/mapper/encrypted /data
dd if=/dev/zero of=/data/crap bs=1024 count=100000



我们正在使用 Yocto Kirkstone 分支和linux-fscl-imx   5 。15 。87 - 2 。2 . 0 +g8a1a87989b6a。 该问题也存在于 linux-imx 内核分支中。
CAAM 在 Dunfell yocto 版本上运行良好,或者如果我们在 uboot 中使用 bootargs=3072M 强制使用 3GB 的 ram 而不是 4GB。
CAAM 驱动程序/DMA/swiotlb 反弹缓冲区似乎是问题所在。

更多回帖

发帖
×
20
完善资料,
赚取积分