IEP、RVE、DVBM 与视频隧道

IEP、RVE、DVBM 与视频隧道

1. IEP

iep.o由:

  • iep_drv.o
  • hw_iep_reg.o
  • iep_iommu_ops.o
  • DRM启用时的iep_iommu_drm.o

组成。

IEP提供图像增强/处理,注册misc device,通过ioctl提交图像参数和buffer。

2. IEP数据路径

1
2
3
4
5
6
7
8
9
open
-> session/private data
-> ioctl configure source/destination
-> map buffers through IOMMU
-> build registers
-> power/clock on
-> run
-> IRQ/wait
-> unmap

3. IEP与IEP2

旧IEP位于独立iep/;IEP2作为MPP backend由ROCKCHIP_MPP_IEP2构建。二者ABI和调度路径不同,不应仅按名称混用。

4. RVE

RVE目录包含:

  • driver/ioctl;
  • job;
  • register conversion;
  • fence;
  • debugger。

它同样注册misc device,异步路径需维护input/output fence和job lifetime。

5. DVBM

Direct Video Buffer Manager用于视频producer/consumer间buffer状态协调。它不负责codec或scanout本身,而是减少复制并管理直接视频路径。

关键问题:

  • producer不能覆盖consumer仍在用的buffer;
  • generation/sequence避免ABA;
  • disconnect后唤醒所有waiter;
  • timeout不能留下永久占用slot。

6. Video Tunnel

rkvtunnel.c注册misc device,提供open/release/ioctl/compat ioctl。Tunnel建立producer/consumer及buffer传递关系。

7. Tunnel生命周期

1
2
3
4
5
6
7
create/connect
-> allocate/import buffers
-> producer queues frame
-> consumer acquires
-> consumer releases
-> disconnect
-> drain/wakeup/free

进程异常退出必须触发disconnect cleanup。

8. dma-buf与Fence

零拷贝并不意味着无同步:

  • dma-buf解决共享;
  • IOMMU解决device address;
  • fence解决完成顺序;
  • cache maintenance解决CPU/device一致性;
  • ownership protocol解决谁能写。

9. 配置

  • IEP
  • ROCKCHIP_RVE及可选proc/debugfs;
  • ROCKCHIP_DVBM
  • ROCKCHIP_VIDEO_TUNNEL,默认n。

10. RK3588

Vendor defconfig明确启用IEP;RVE/DVBM/tunnel需以产品最终.config为准。节点存在但status disabled时不会probe。

11. 错误处理

硬件timeout必须fail fence并回收映射;tunnel disconnect必须使阻塞ioctl返回;IOMMU fault后不能继续复用已损坏task。

12. 安全

  • 对fd/handle建立每session ownership;
  • 禁止猜测别人的buffer ID;
  • 校验plane边界;
  • 限制队列深度;
  • 防止close与IRQ double free;
  • debugfs/procfs不要暴露地址和敏感帧信息;
  • secure video buffer不得映射到普通CPU/userspace路径。

13. 调试

按“节点→session→buffer→fence→job→IRQ→IOMMU→clock/reset”顺序定位。只看到ioctl timeout时不要直接归因于codec,可能是consumer未release或fence未signal。

文章互动

阅读 --

留言

0 条留言

正在加载留言…