TEE-TA学习轨迹第六篇:解决OP-TEE驱动添加中断
由于没有添加tee的中断导致设备节点和驱动没法注册成功报错性质说明这是非致命的配置缺失不影响 OP-TEE 核心功能内核已经成功通过 SMC 链路识别到 OP-TEE 安全世界revision 4.10 代表通信正常常规的 CA 调用 TA 等同步操作完全可用仅缺少「安全世界主动通知正常世界」的异步中断异步事件、中断唤醒等功能不可用驱动会自动降级为轮询模式错误原因你添加的 optee 设备树节点只配置了 SMC 通信方式没有声明中断资源。OP-TEE 驱动需要一个 SPI 中断来接收安全世界的异步通知调用 platform_get_irq 获取不到中断就会返回 -ENXIO错误码 -6。修复补充设备树中断配置QEMU virt 平台有多个空闲 SPI 中断可用标准 OP-TEE 调试使用SPI 5 号中断未被其他外设占用兼容所有版本。1. 修改设备树 optee 节点找到 firmware 下的 optee 节点补充 interrupts 属性firmware { optee { compatible linaro,optee-tz; method smc; /* 新增异步通知中断配置 */ interrupts 0x00 0x05 0x04; }; };参数说明第 1 个 cell 0x00GIC 中断类型0 代表 SPI共享外设中断第 2 个 cell 0x05SPI 中断编号 5对应硬件中断号 32537属于空闲未占用区间第 3 个 cell 0x04中断触发方式高电平触发匹配 GICv2 标准2. 重新编译并替换 dtbdtc -I dts qemu_virt_optee.dts -O dtb -o qemu_virt_optee.dtb重启 QEMU 后重新启动内核即可。验证效果修复后进入系统执行dmesg | grep optee ls /dev/tee*正常会输出日志不再有 IRQ 报错出现 optee: initialized 完成提示设备节点 /dev/tee0、/dev/teepriv0 正常存在OP-TEE 全功能可用