|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v7 6/8] xen/arm: introduce GNTTABOP_cache_flush
On Fri, 17 Oct 2014, Jan Beulich wrote:
> >>> On 17.10.14 at 17:31, <stefano.stabellini@xxxxxxxxxxxxx> wrote:
> > +static int grant_map_exists(const struct domain *ld,
> > + struct grant_table *rgt,
> > + unsigned long mfn,
> > + grant_ref_t *ref_count)
> > +{
> > + const struct active_grant_entry *act;
> > + grant_ref_t ref;
> > +
> > + ASSERT(spin_is_locked(&rgt->lock));
> > +
> > + for ( ref = *ref_count; ref < nr_grant_entries(rgt); ref++ )
> > + {
> > + if ( (ref % MAX_GRANT_ENTRIES_ITERATIONS) == 0 && ref !=
> > *ref_count )
> > + {
> > + *ref_count = ref;
> > + return ref;
> > + }
> > +
> > + act = &active_entry(rgt, ref);
> > +
> > + if ( !act->pin )
> > + continue;
> > +
> > + if ( act->domid != ld->domain_id )
> > + continue;
> > +
> > + if ( act->frame != mfn )
> > + continue;
> > +
> > + return 0;
> > + }
> > +
> > + return -1;
>
> Return values need to be adjusted throughout the function: The
> -1 here gets passed up all the way, and hence will be seen as -EPERM
> by the caller of the hypercall, which clearly isn't right. Also returning
> ref (effectively a uint32_t) above doesn't fit with the function
> returning (signed) int. The caller doesn't care about the actual count,
> so just returning 1 in that case would seem fine.
>
> > +#define OPAQUE_CONTINUATION_ARG_SHIFT 16
> > +#define CMD_MASK
> > ((1<<OPAQUE_CONTINUATION_ARG_SHIFT)-1)
>
> Along the lines of MEMOP_CMD_MASK, GNTTABOP_CMD_MASK
> please. Also this needs to be moved and the compat wrapper
> needs to be updated to cope with this extension. And finally 16
> bits here and 11 bits in grant_map_exists() make 27, but you're
> nowhere enforcing this upper limit on grant entry count. Either
> do this, or adjust the value such that together with
> MAX_GRANT_ENTRIES_ITERATIONS you can encode to full
> value range.
All very good points. I'll make the changes.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |