免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2819 | 回复: 4

[硬件及驱动] blk_queue_bounce回弹缓冲区问题 [复制链接]

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
发表于 2012-04-29 16:01 |显示全部楼层
本帖最后由 embeddedlwp 于 2012-05-27 10:18 编辑

460void blk_queue_bounce(request_queue_t *q, struct bio **bio_orig)
461{
462        mempool_t *pool;
463
464        /*
465         * for non-isa bounce case, just check if the bounce pfn is equal
466         * to or bigger than the highest pfn in the system -- in that case,
467         * don't waste time iterating over bio segments
468         */
469        if (!(q->bounce_gfp & GFP_DMA)) {
470                if (q->bounce_pfn >= blk_max_pfn)
471                        return;
472                pool = page_pool;

473        } else {
474                BUG_ON(!isa_page_pool);
475                pool = isa_page_pool;
476        }
477
478        /*
479         * slow path
480         */
481        __blk_queue_bounce(q, bio_orig, pool);
482}

这里if (!(q->bounce_gfp & GFP_DMA)),什么时候需要回弹且bounce_gfp的GFP_DMA没有置位?

ULK3上说“ISA总线使用老式的DMA只能处理24的物理地址。因此,回弹缓冲区的上限设为16MB,也就是说,
页框号为4096,。然而,当处理老式设备时,块设备驱动程序通常不依赖回弹缓冲区,相反,它们更倾向于直接
在ZONE_DMA内存区中分配DMA缓冲区”

对这句话我的理解是,驱动想从ZONE_DMA分配,但是如果分配不成功那么会fall back到ZONE_NORMAL,
如果还是分配不成功fall back到ZONE_HIGH,此时再要访问memory只能通过buffer bouncing。不知对不对?

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
发表于 2012-04-29 19:15 |显示全部楼层
那时去笔试,有一题是:what's bounce buffer?

真心懒得百度,直接写了Don't know.

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
发表于 2012-04-29 19:38 |显示全部楼层
就是DMA区不够大,所以大家都去申请NORMAL区,必要的时候再临时copy一份数据到预留的DMA区,和设备交互完了,再释放

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
发表于 2012-04-29 19:49 |显示全部楼层
本帖最后由 embeddedlwp 于 2012-04-29 19:54 编辑

回复 2# tempname2



奥,记起来了,确实有这题,当时我也不会的!

BTW:拿到offer没啊?

   

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
发表于 2012-04-29 19:58 |显示全部楼层
回复 3# smalloc



看代码红色的部分,貌似意思是如果回弹标志缓冲区的内存分配标志不是GFP_DMA,仍然会回弹?只是memory pool不一样,这是怎么回事啊?


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

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP