免费注册 查看新帖 |

Chinaunix

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

[内存管理] DMA要求必须是连续的物理页面吗? [复制链接]

论坛徽章:
6
季节之章:冬
日期:2015-01-20 17:18:002015年辞旧岁徽章
日期:2015-03-03 16:54:15数据库技术版块每日发帖之星
日期:2015-12-20 06:20:00程序设计版块每日发帖之星
日期:2016-06-09 06:20:00每日论坛发贴之星
日期:2016-06-09 06:20:002016科比退役纪念章
日期:2017-01-12 14:08:57
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-16 17:28 |只看该作者 |倒序浏览
DMA要求必须是连续的物理页面吗?

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2014-04-16 19:14 |只看该作者
回复 1# liklstar
DMA要求必须是连续的物理页面吗?


早期的设备是这样要求的,但是有些支持scatter/gather模式的硬件,可以接受不连续的物理页面进行DMA传输数据(比如网卡)

   

论坛徽章:
0
3 [报告]
发表于 2014-04-16 21:46 |只看该作者
回复 2# 瀚海书香
这种利用sg的DMA操作,目的地址空间应该是要物理连续的吧。

论坛徽章:
1
拜羊年徽章
日期:2015-03-03 16:15:43
4 [报告]
发表于 2014-04-17 05:41 来自手机 |只看该作者
分片连续就可以。每一块scatter 片要连续。

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
5 [报告]
发表于 2014-04-17 09:45 |只看该作者
本帖最后由 arm-linux-gcc 于 2014-04-17 09:48 编辑

回复 2# 瀚海书香


   
可以让dma通过iommu直接访问虚拟地址吗?

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:17
6 [报告]
发表于 2014-04-17 10:39 |只看该作者
有iommu当然可以

没有的话, 还有ioswtlb

论坛徽章:
1
水瓶座
日期:2013-09-28 21:40:25
7 [报告]
发表于 2014-04-17 10:55 |只看该作者
回复 6# 帅绝人寰


    什么是ioswtlb?软件tlb?什么机制?

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
8 [报告]
发表于 2014-04-17 11:03 |只看该作者
回复 7# bensenq


http://lwn.net/Articles/91870/

The Itanium architecture took a different approach, known as the "software I/O translation buffer" or "swiotlb." The swiotlb code simply allocates a large chunk of low memory early in the bootstrap process; this memory is then handed out in response to DMA allocation requests. In many cases, use of swiotlb memory involves the creation of "bounce buffers," where data is copied between the driver's buffer and the device-accessible swiotlb space. Memory used for the swiotlb is removed from the normal Linux memory management mechanism and is, thus, inaccessible for any use other than DMA buffers. For these reasons, the swiotlb is seen as, at best, inelegant.

论坛徽章:
1
水瓶座
日期:2013-09-28 21:40:25
9 [报告]
发表于 2014-04-17 11:27 |只看该作者
回复 8# asuka2001

谢谢,大致明白了。不过感觉这种方式不仅会导致性能下降,而且会增加Driver的复杂度!
   

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
10 [报告]
发表于 2014-04-17 11:28 |只看该作者
回复 9# bensenq

不会增加驱动的复杂度。我记得是从 dma_ops那边的接口封装了。所以驱动无法知道底下的实现是真正的 iommu还是 swiotlb
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP