WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Cannot get shared page in domU

To: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
Subject: Re: [Xen-devel] Cannot get shared page in domU
From: Xin Jin <jxinpku@xxxxxxxxx>
Date: Thu, 10 Nov 2011 20:02:25 -0500
Cc: Daniel Castro <evil.dani@xxxxxxxxx>, xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Thu, 10 Nov 2011 17:03:29 -0800
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=v/og3pQwAscD8QZiUzNO2S8MgQ+ywbAepjRDoLoKEsA=; b=m/s2YkD8Ei+M/MTDhAx0Tes9YsNVBJ0sDKFFgzKO9i731Kwvq046FuDgoLgi4jHHR/ mQBZJPcPawKoVQ+pZzQ3DZ6BsnYy9dItJxIWDkXoZganzbo3zl4huenSr6Sy9EF6Y0Jz +UITxvdtlAfhlieSyoylFDWvNaAw1oLontgzI=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20111110222134.GA24563@xxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <CAKpDeakqB2eRMbGLZwuY9Dyka+BFJSwNO+1g=9WmyJ6uF+b61A@xxxxxxxxxxxxxx> <CAP2B858Uiic4+ZOKBcTNChf+Nt++G4pwktyrE=U+CLn2sCdwjg@xxxxxxxxxxxxxx> <CAKpDeamBEHAnpUo5mqLZrAa3=DwLsAdSgzbj9YEfS8o6JK9gKQ@xxxxxxxxxxxxxx> <20111110222134.GA24563@xxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx


On Thu, Nov 10, 2011 at 5:21 PM, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote:
On Thu, Nov 10, 2011 at 10:54:23AM -0500, Xin Jin wrote:
> In
>
> share_mem->gref =
> gnttab_grant_foreign_access(domid_remote, virt_to_mfn(share_mem), 0);

Huh? There are four parameters for that function.
The function I use is 
int gnttab_grant_foreign_access(domid_t domid, unsigned long frame, int readonly);
It only has 3 parameters.

The function
void gnttab_grant_foreign_access_ref(grant_ref_t ref, domid_t domid, unsigned long frame, int readonly);
has 4 papameters.
 

When you setup your map_op, are you setting
 GNTMAP_application_map | GNTMAP_contains_pte
?
Or are using GNTMAP_host_map
I use GNTMAP_host_map to get the grant page as following. 
share_vmarea = alloc_vm_area(PAGE_SIZE);
gnttab_set_map_op( &map_op, (unsigned long)share_vmarea->addr, GNTMAP_host_map, gref, domid_remote );
HYPERVISOR_grant_table_op( GNTTABOP_map_grant_ref, &map_op, 1 );
 
Did you look in the 3.1 linux kerne in the gntdev.c driver? Or the other drivers?
Can you use grant-alloc for your code (which can setup shared memory
segements between guests) instead of doing this in the kernel?

I'm writing a kernel driver module, which tries to communicate between domUs through shared memory. I only want to use grant table, and do not want to involve Xen event channel.

When I did as the code above, the code works well in dom0. It means dom0 can use the following hypercall
"share_vmarea = alloc_vm_area(PAGE_SIZE);
gnttab_set_map_op( &map_op, (unsigned long)share_vmarea->addr, GNTMAP_host_map, gref, domid_remote );
HYPERVISOR_grant_table_op( GNTTABOP_map_grant_ref, &map_op, 1 );"
to get the grant page successfully.

But when I use the same code in domU, it cause errors in kernel "unable to request kernel paging request at ffffc900000da00c".

(I used the right remote_domid to specify which domain to grant the page to.)

Do you know what's wrong? How can I get it right?


>
> I have explicitly specified the domid that can use the gref as
> "domid_remote".
>
> What else can be wrong?
>
> On Thu, Nov 10, 2011 at 12:09 AM, Daniel Castro <evil.dani@xxxxxxxxx> wrote:
>
> > On Thu, Nov 10, 2011 at 1:15 PM, Xin Jin <jxinpku@xxxxxxxxx> wrote:
> > > Hi, I cannot get a shared page in domU.
> > > In a domU, I used the folloing code to grant a page to another domU.
> > > share_mem = (share_mem_desp *) __get_free_page(GFP_KERNEL);
> > > share_mem->gref = gnttab_grant_foreign_access(domid_remote,
> > > virt_to_mfn(share_mem), 0);
> > > In another domU, I used the folloing code to get the shared page.
> > > share_vmarea = alloc_vm_area(PAGE_SIZE);
> > > gnttab_set_map_op( &map_op, (unsigned long)share_vmarea->addr,
> > > GNTMAP_host_map, gref, domid_remote );
> > > HYPERVISOR_grant_table_op( GNTTABOP_map_grant_ref, &map_op, 1 );
> > > While using the exactly same code to get the shared page in dom0, it woks
> > > all well. But it cannot work in domU.
> > > I use Xen 4.1.1 and fedora 14 ( linux 3.1.0 both for dom0 and domU ).
> > > Can anyone help me?
> > On the interface struct when you issue the hypercall you need to
> > specify the domid that can use the gref. Maybe the default is domid 0.
> > The struct grant_entry_v1 has member domid for the foreign guest,
> > check that value.
> >
> > > Thanks!
> > > -- Xin
> > >
> > >
> > > _______________________________________________
> > > Xen-devel mailing list
> > > Xen-devel@xxxxxxxxxxxxxxxxxxx
> > > http://lists.xensource.com/xen-devel
> > >
> > >
> >
> >
> >
> > --
> > +-=====---------------------------+
> > | +---------------------------------+ | This space intentionally blank
> > for notetaking.
> > | |   | Daniel Castro,                |
> > | |   | Consultant/Programmer.|
> > | |   | U Andes                         |
> > +-------------------------------------+
> >
>
>
>
> --
> Xin JIN
> PhD student
> Department of Computer Science
> Princeton University

> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel




--
Xin JIN
PhD student
Department of Computer Science
Princeton University

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>