linux系统vmalloc分配过大,请教: 中断中可以用vmalloc 分配出来内存里面的变量吗?...

本文讨论在ARM平台上使用vmalloc分配64k内存页给super block info的情况,由于kmalloc可能因页碎片导致分配失败,考虑使用vmalloc。文章指出,vmalloc会分配物理页并映射页表,但在用户进程的硬件中断中访问这些地址可能会引发页故障。虽然页表异常能同步页表,但需确保vmalloc的内存不用于DMA。作者寻求确认,如果仅同步页表,是否可行。
摘要由CSDN通过智能技术生成

问题另外一个意思是: 中断中产生一个vmalloc_fault 类型的page fault, 可以吗?

做的平台是arm, 想要用vmalloc申请一个64k的内存页, 给supoer block info (一般fs驱动里面大家都用的kmalloc,但是它要分配16个连续页可能分配不成功, 因为页碎片厉害), 我但是不知道这么做有没有问题...

因为vmalloc()干的事情是:

1. 分配了真实物理页面(比如代号PPP)

2. 映射了主页表。

如果一个用户进程执行中, 硬件中断访问了这个PPP的某一个地址, 那么由于用户进程没有和主页表同步, 于是发生缺页异常(但是页表异常里面干的事情就是执行一个set_pte来同步一下页表就退出)

看这个里面的讨论, x86、arm都差不多是相同的如上描述的情况:

http://bbs.chinaunix.net/thread-4077478-1-1.html

就想请教, 如果知道vmalloc出来的这片地址不会被用到dma 里面去, 如果仅仅是异常里面同步一下页表,是不是就没有问题?

谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值