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

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





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

 


Rackspace

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