On Tue, Dec 22, 2020 at 11:44 PM Christoph Hellwig [off-list ref] wrote:
On Tue, Dec 22, 2020 at 10:52:09PM +0800, Xie Yongji wrote:
quoted
Export zap_page_range() for use in VDUSE.
Err, no. This has absolutely no business being used by drivers.
Now I want to map/unmap some pages in an userland vma dynamically. The
vm_insert_page() is being used for mapping. In the unmapping case, it
looks like the zap_page_range() does what I want. So I export it.
Otherwise, we need some ways to notify userspace to trigger it with
madvise(MADV_DONTNEED), which might not be able to meet all our needs.
For example, unmapping some pages in a memory shrinker function.
So I'd like to know what's the limitation to use zap_page_range() in a
module. And if we can't use it in a module, is there any acceptable
way to achieve that?
Thanks.
Yongji
On Wed, Dec 23, 2020 at 02:32:07PM +0800, Yongji Xie wrote:
Now I want to map/unmap some pages in an userland vma dynamically. The
vm_insert_page() is being used for mapping. In the unmapping case, it
looks like the zap_page_range() does what I want. So I export it.
Otherwise, we need some ways to notify userspace to trigger it with
madvise(MADV_DONTNEED), which might not be able to meet all our needs.
For example, unmapping some pages in a memory shrinker function.
So I'd like to know what's the limitation to use zap_page_range() in a
module. And if we can't use it in a module, is there any acceptable
way to achieve that?
I think the anser is: don't play funny games with unmapped outside of
munmap. Especially as synchronization is very hard to get right.
On Wed, Dec 23, 2020 at 4:13 PM Christoph Hellwig [off-list ref] wrote:
On Wed, Dec 23, 2020 at 02:32:07PM +0800, Yongji Xie wrote:
quoted
Now I want to map/unmap some pages in an userland vma dynamically. The
vm_insert_page() is being used for mapping. In the unmapping case, it
looks like the zap_page_range() does what I want. So I export it.
Otherwise, we need some ways to notify userspace to trigger it with
madvise(MADV_DONTNEED), which might not be able to meet all our needs.
For example, unmapping some pages in a memory shrinker function.
So I'd like to know what's the limitation to use zap_page_range() in a
module. And if we can't use it in a module, is there any acceptable
way to achieve that?
I think the anser is: don't play funny games with unmapped outside of
munmap. Especially as synchronization is very hard to get right.
OK, I will try to let userspace do this.
Thanks,
Yongji