Toybrick

RK3588-RGA IOMMU超过4G的问题

Jasonuiao

新手上路

积分
16
楼主
发表于 昨天 18:00    查看: 24|回复: 1 | [复制链接]    打印 | 只看该作者
3588是3个RGA core,RGA3 40bit IOMMU,RGA2是32bit。
我现在使用dma-buf申请的内存给到rga用,处理两个进程的视频输入、RGA转换、显示正常。但是开三路视频给到RGA处理,就出现了这个报错:
[ 1875.904909] rga_mm: RGA_MMU unsupported memory larger than 4G!
根据<librga_souce_path>/samples/allocator_demo/src/rga_allocator_dma32_demo.cpp的解决方案,想去申请32位内存,但是系统下没有这个节点。只有/dev/dma_heap/system


请问有什么建议吗?

使用importbuffer_xx提前将外部内存导入到RGA驱动内部。
cat /sys/kernel/debug/rkrga/load
num of scheduler = 3
================= load ==================
scheduler[0]: rga3
         load = 17%
-----------------------------------
scheduler[1]: rga3
         load = 0%
-----------------------------------
scheduler[2]: rga2
         load = 0%
-----------------------------------


回复

使用道具 举报

Jasonuiao

新手上路

积分
16
沙发
 楼主| 发表于 9 小时前 | 只看该作者
多进程暂时解决,基本方案就是:
1.importbuffer_* 接口配置
2.DMA32、graphicbuffer(USAGE_WITHIN_4G)等限制内存分配范围。
3.修改内存映射范围。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

产品中心 购买渠道 开源社区 Wiki教程 资料下载 关于Toybrick


快速回复 返回顶部 返回列表