免费注册 查看新帖 |

Chinaunix

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

[内存管理] 更改 page table entry屬性,卻未生效 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-06 22:31 |只看该作者 |倒序浏览
本帖最后由 wth0722 于 2014-06-06 22:39 编辑

各位先進好,

小弟用ioremap()要了一塊記憶體使用

ioreamp()初始化是要了一塊non-cache的記憶體

我後來有去找該address所在的page table entry

找到 ptep = pte_offset_map(pmd, addr);

把ptep的prot改為 PROT_PTE_DEVICE | L_PTE_MT_DEV_CACHED

上面即為ioremap_cached的屬性

改完之後,以為那一塊記憶體就有cache了,但還是沒有

請教各位大大有什麼想法嗎? 謝謝

论坛徽章:
0
2 [报告]
发表于 2014-06-06 22:42 |只看该作者
本帖最后由 wth0722 于 2014-06-06 22:43 编辑

還是我需要用下列這方式

set_pte_at(&init_mm, addr, pte, pfn_pte(pfn, prot));

去set那page table entry的屬性才是真正寫入成功???



论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
3 [报告]
发表于 2014-06-07 13:13 |只看该作者
怎么确认没成功的呢?

论坛徽章:
0
4 [报告]
发表于 2014-06-07 14:46 |只看该作者
我有一個測試程式利用dma
不去做flush cache就可以看到不一樣結果

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
5 [报告]
发表于 2014-06-09 09:04 |只看该作者
wth0722 发表于 2014-06-07 14:46
我有一個測試程式利用dma
不去做flush cache就可以看到不一樣結果

修改后,再把相应pte的内容打出来看看呢~

论坛徽章:
0
6 [报告]
发表于 2014-06-09 13:19 |只看该作者
已經找出原因了

單純只是去修改記憶體上的page table並沒有用

必需要使用set_pte_at()設定page table entry才有用

论坛徽章:
0
7 [报告]
发表于 2014-06-09 15:13 |只看该作者
看了一下 set_pte_at()之後

發現為什麼直接改memory上的page table entry是無效了

因為set_pte_at()有去變更h/w pte,而上面的變更只是linux pte

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
8 [报告]
发表于 2014-06-09 15:48 |只看该作者
你的内核是啥版本?

论坛徽章:
0
9 [报告]
发表于 2014-06-09 16:49 |只看该作者
Linux 3.4.5

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
10 [报告]
发表于 2014-06-09 18:32 |只看该作者
我看3.10代码中么有set_pte_at()接口的定义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP