[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Question about grant table



>>> On 23.04.12 at 23:13, Ruslan Nikolaev <nruslan_devel@xxxxxxxxx> wrote:
> Hi
> 
> I have a question regarding a grant table. I have a case when I have some 
> shared (between domains) pages mapped to the user space. I created a special 
> driver which implements mmap(). That, in turns, will execute 
> gnttab_map_refs(). This all works fine until I want to do something like 
> exec().
> 
> After I do exec(), I want to mmap() the *same* pages (i.e. using the same 
> grant references) to some new user address space which is chosen by mmap(). 
> During exec(), it will invalidate user address space, and  release() from 
> mmu_notifier will be called. This means, that my driver will execute 
> gnttab_unmap_refs. After exec() succeeded, I invoke mmap() again which will 
> do gnttab_map_refs().
> 
> At this point I get kernel errors like this:
> [  198.939095] BUG: Bad page map in process a.out  pte:80000002457f1167 
> pmd:245094067
> [  198.939099] page:ffffea000915fc40 count:1 mapcount:-1 mapping:          
> (null) index:0xffff8802d958f720
> [  198.939102] page flags: 0x8000000000000814(referenced|dirty|private)
> [  198.939109] addr:00007fd302f40000 vm_flags:000e00fb anon_vma:          
> (null) mapping:ffff8802d782f760 index:0
> [  198.939124] vma->vm_ops->fault: 0x0
> [  198.939128] vma->vm_file->f_op->mmap: syscall_driver_mmap+0x0/0xc9 
> [syscall_driver]

This I cannot spot in the upstream kernel (and you also didn't indicate
that you use something different), so I think you need to start
investigation at that end.

Jan

> So, I have two questions in this regard:
> 1. Does gnttab_unmap_refs removes grant references, so that I cannot use 
> them any longer? What would be proper way to preserve grant references but at 
> the same time unmap from the current user address space shared pages?
> 
> 2. What happens to the counters like count, mapcount when I do 
> gnttab_map_refs() and gnntab_unmap_refs()?
> 
> Thanks,
> Ruslan
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx 
> http://lists.xen.org/xen-devel 




_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.