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

Re: [Xen-devel] Question about grant table

  • To: "xen-devel@xxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxx>
  • From: Ruslan Nikolaev <nruslan_devel@xxxxxxxxx>
  • Date: Tue, 24 Apr 2012 03:02:10 -0700 (PDT)
  • Delivery-date: Tue, 24 Apr 2012 10:02:30 +0000
  • Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=wNtfP3hJ13pUo50LpLozwHIz63G99HNq6opeBG84evVKWR/84gSOItWSDPcPT7cgvwvrXfvWTOv2l5MTeBuILUPYPTe5z/VqMLOFzqcuyoL/cLN7qLiak2+XcE2pvmTSZ7/RMlYFIdoLHlzo+ddnSWqUYoLNGuzRQ7iF+I3yh3o=;
  • List-id: Xen developer discussion <xen-devel.lists.xen.org>

Ok. Can you tell what 'clear_pte' for gnttab_unmap_refs exactly do?


----- Original Message -----
From: Jan Beulich <JBeulich@xxxxxxxx>
To: Ruslan Nikolaev <nruslan_devel@xxxxxxxxx>
Cc: "xen-devel@xxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxx>
Sent: Tuesday, April 24, 2012 3:58 AM
Subject: 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.


> 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 mailing list



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