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

[Xen-devel] Re: RFC: Using grant table to give iomem permission



On Fri, 2007-05-18 at 15:45 +0100, Keir Fraser wrote:
> On 18/5/07 15:14, "Kieran Mansley" <kmansley@xxxxxxxxxxxxxx> wrote:
> 
> >>> Some questions from me:
> >>>  - does this approach seem sane?
> >> 
> >> There's no reason you shouldn't be able to use GNTMAP_host_map as usual, 
> >> and
> >> do refcounting in the active grant entry, also as usual.
> > 
> > OK.  My reluctance to do that was simply that I wasn't sure if the
> > operations that take place when doing a GNTMAP_host_map would conflict
> > with those when doing an iomem_map.  If you think they shouldn't, I'll
> > give it a go.
> 
> I'm not sure what you mean.

That if GNTMAP_host_map is specified, the map/unmap operations do a
number of things that might not be appropriate.  eg.

    if ( op->flags & GNTMAP_host_map )
    {
        rc = create_grant_host_mapping(op->host_addr, frame, op->flags);
        if ( rc != GNTST_okay )
        {
            if ( !(op->flags & GNTMAP_readonly) )
                put_page_type(mfn_to_page(frame));
            put_page(mfn_to_page(frame));
            goto undo_out;
        }

I could prevent it doing these things in the case of it being iomem, but
in that case I felt that it was no longer really doing a host_map
operation, and so to avoid confusion (e.g. others maintaining the code
might not realise that GNTMAP_host_map can mean two different things)
thought it better to give it a separate type.

> > That raises one of my other questions which is how to test for it being
> > a valid RAM page, as in the absence of it GNTMAP_iomem_map that's pretty
> > much the only indicator that it's iomem we're dealing with.  As I said,
> > mfn_valid() doesn't seem to be sufficient.
> 
> Yes, I misled you here. You want the middle bit of get_page_from_l1e(). It
> checks for !mfn_valid()||page_get_owner()==dom_io. Then you'd do an
> iomem_access_permitted check passing in a pointer to the granting domain.
> 
> You should perhaps pull the core of get_page_from_l1e() into a supporting
> function which you can then make available for common/grant_table.c to call
> into.

Very helpful, thanks

Kieran


_______________________________________________
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®.