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

Re: [Xen-devel] [PATCH v3] x86/altp2m: Added xc_altp2m_set_mem_access_multi()



>>> On 09.10.17 at 13:19, <ppircalabu@xxxxxxxxxxxxxxx> wrote:
> On Lu, 2017-10-09 at 04:36 -0600, Jan Beulich wrote:
>> > > > On 09.10.17 at 12:10, <ppircalabu@xxxxxxxxxxxxxxx> wrote:
>> > On Vi, 2017-10-06 at 09:34 -0600, Jan Beulich wrote:
>> > > > > > On 05.10.17 at 17:42, <ppircalabu@xxxxxxxxxxxxxxx> wrote:
>> > > > --- a/xen/tools/compat-build-header.py
>> > > > +++ b/xen/tools/compat-build-header.py
>> > > > @@ -16,6 +16,7 @@ pats = [
>> > > >   [ r"(8|16|32|64)_compat_t([^\w]|$)", r"\1_t\2" ],
>> > > >   [ r"(^|[^\w])xen_?(\w*)_compat_t([^\w]|$$)",
>> > > > r"\1compat_\2_t\3"
>> > > > ],
>> > > >   [ r"(^|[^\w])XEN_?", r"\1COMPAT_" ],
>> > > > + [ r"(^|[^\w])HVMMEM_?", r"\1COMPAT_HVMMEM_" ],
>> > > What is this needed for? I can't find any instance of HVMMEM_*
>> > > elsewhere in the patch. As you can see, so far there are only
>> > > pretty generic tokens being replaced here.
>> > > 
>> > Without this, both hvmmem_type_t and hvmmem_type_compat_t enums
>> > will
>> > define the same values (e.g.  HVMMEM_ram_rw,) resulting in a
>> > compile
>> > error. By adding this translation we will have a COMPAT_HVMMEM
>> > value
>> > for each HVMMEM_ value defined in public/hvm/hvm_op.h) (e.g.
>> > HVMMEM_ram_rw -> COMPAT_HVMMEM_ram_rw)
>> That's ugly. I realize that we shouldn't even attempt to translate
>> enumerations (or to be fully precise, there shouldn't be any
>> enumerations in the public interface in the first place), as the
>> enumerator values ought to remain consistent between native
>> and compat uses. Hence we could either convert the enum to a
>> set of #define-s, or we would need a mechanism to exclude
>> parts of a header from the compat conversion.
>> 
>> In the end the problem here is because of the enumerators,
>> other than xenmem_access_t's, aren't properly prefixed with
>> XEN or XEN_ (or else the script would already handle them fine
>> afaict). So another variant of addressing this would be to
>> deprecate (but not remove) the current names, introducing
>> properly named ones for __XEN_INTERFACE_VERSION__ >=
>> 0x00040a00.
>> 
> Unfortunately the enum is referenced also in other functions
> (e.g. xendevicemodel_set_mem_type) so replacing it with #defines would
> be more difficult.
> When generating the compat headers,-DXEN_GENERATING_COMPAT_HEADERS is
> defined (xen/include/Makefile). I can guard hvmmem_type_t with an
> #ifndef XEN_GENERATING_COMPAT_HEADERS so the enum is not processed by
> the compat-build-header.py script. (in my opinion this is the minimum-
> impact approach)
> Do you agree with this?

I'm not entirely happy about that approach, but it'll do for the
moment.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

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