RE: [PATCH 1/2] xen/granttable: Support sub-page grants

From: Paul Durrant
Date: Wed Dec 07 2011 - 03:59:48 EST




> -----Original Message-----
> From: ANNIE LI [mailto:annie.li@xxxxxxxxxx]
> Sent: 07 December 2011 03:36
> To: Ian Campbell
> Cc: xen-devel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx;
> konrad.wilk@xxxxxxxxxx; jeremy@xxxxxxxx; kurt.hackel@xxxxxxxxxx;
> Paul Durrant
> Subject: Re: [PATCH 1/2] xen/granttable: Support sub-page grants
>
> Thanks for your reviewing, Ian.
> >> EXPORT_SYMBOL_GPL(gnttab_grant_foreign_access);
> >>
> >> +int gnttab_grant_foreign_access_subpage_v2(domid_t domid,
> unsigned long frame,
> >> + int flags, unsigned page_off,
> >> + unsigned length)
> > Please drop the v2 suffixes on the public functions.
> OK, the initial interface is without v2 suffixes. It was added in
> order to reminder user the interfaces are only available for grant
> table v2.
> But I am fine to remove it, and following ops fn pointers are
> better.
> > Any reason not to route these via the ops table for consistency
> with
> > all the other ops? Then your availability check becomes a test for
> > NULL fn pointer rather than a specific version.
> Ok, it is good.
> How about following implements?
>
> gnttab_v1_ops = {
> ...
> .access_subpage = NULL;
> .access_ref_subpage = NULL;
> .access_trans = NULL;
> .access_ref_trans = NULL;
> }
>
> gnttab_v2_ops = {
> ...
> .access_subpage = access_subpage_v2;
> .access_ref_subpage = access_ref_subpage_v2; .access_trans =
> access_trans_v2; .access_ref_trans = access_ref_trans_v2; }
>


Do you need ops for the ref and non-ref functions? I would have thought you could just have the ref ones since the all the non-ref variants do is allocate and then call the ref variant.

Paul

> gnttab_request_version()
> {
> .....
> if(v2)
> gnttab_interface = &gnttab_v2_ops;
> else
> gnttab_interface = &gnttab_v1_ops; .....
> }
>
> int gnttab_grant_foreign_access_subpage()
> {
> if(gnttab_interface->access_subpage != NULL)
> return gnttab_interface->access_subpage;
> return Esomething;
> }
>
> Same operations for access_ref_subpage, access_trans and
> access_ref_trans.
>
> bool gnttab_subpage_available()
> {
> return (gnttab_interface->access_subpage != NULL); }
>
> bool gnttab_subpage_available()
> {
> return (gnttab_interface->access_trans != NULL); }
>
> Thanks
> Annie
¢éì®&Þ~º&¶¬–+-±éÝ¥Šw®žË±Êâmébžìdz¹Þ)í…æèw*jg¬±¨¶‰šŽŠÝj/êäz¹ÞŠà2ŠÞ¨è­Ú&¢)ß«a¶Úþø®G«éh®æj:+v‰¨Šwè†Ù>Wš±êÞiÛaxPjØm¶Ÿÿà -»+ƒùdš_