免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2125 | 回复: 0
打印 上一主题 下一主题

linux下驱动开发-cache刷新问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-09 16:15 |只看该作者 |倒序浏览
最近在编写一个矩阵乘的驱动,由于矩阵很大(140M),所以我们事先在内存里分配了512M的空间(作为保留内存),使用mmap()函数映射到用户空间。内核中调用的io_remap_pfn_range来建立映射关系,同时设置为nocache。在这种情况下矩阵执行正确。
由于部分矩阵需要转置(矩阵直接在映射的这片空间),关闭了cache导致速度很慢,现在使用remap_pfn_range映射,打开cache,结果矩阵执行不正确,所以猜测由于cache的存在,导致数据没有写入到物理地址(矩阵乘读数写数都用连续的物理地址),最终导致结果不正确。
现在使用过msync()、__clear_cache()、flush_cache_all()都没有实现cache中的数据写入物理地址,是否操作系统不管这部分保留内存了?还是我cache使用有问题?
望不吝赐教!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP