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

Re: [Xen-devel] [PATCH for Xen 4.5] xen/arm: Add support for GICv3 for domU



Hi Jan,

On 10/31/2014 01:37 PM, Jan Beulich wrote:
>>>> On 31.10.14 at 12:23, <julien.grall@xxxxxxxxxx> wrote:
>> On 31/10/2014 09:02, Jan Beulich wrote:
>>>> +        domctl->u.configuredomain.gic_version = gic_version;
>>>> +
>>>> +        /* TODO: Make the copy generic for all ARCH domctl */
>>>> +        if ( __copy_to_guest(u_domctl, domctl, 1) )
>>>
>>> With just a single field needing copying, __copy_field_to_guest()
>>> would be quite a bit more efficient.
>>
>> The configuredomain structure contains only a field and I plan to rework 
>> this code for Xen 4.6 to make this copy generic within the function (see 
>> the TODO).
>>
>> Anyway, for this use case using __copy_field_to_guest is not more 
>> efficient for ARM.
> 
> But you don't say why. To me there's a difference between copying
> 1 byte or 128.

The cost of copying 128 bytes is negligible compare to the complexity of
raw_copy_to_guest. Furthermore this DOMCTL is not in an hot path (will
always been called once during domain boot).

Hence, this copy will be common to all ARCH domctl in Xen 4.6. I didn't
do the change know to avoid touching too much code.

> 
>>>> --- a/xen/include/public/domctl.h
>>>> +++ b/xen/include/public/domctl.h
>>>> @@ -68,6 +68,19 @@ struct xen_domctl_createdomain {
>>>>   typedef struct xen_domctl_createdomain xen_domctl_createdomain_t;
>>>>   DEFINE_XEN_GUEST_HANDLE(xen_domctl_createdomain_t);
>>>>
>>>> +#if defined(__arm__) || defined(__aarch64__)
>>>> +#define XEN_DOMCTL_CONFIG_GIC_DEFAULT   0
>>>> +#define XEN_DOMCTL_CONFIG_GIC_V2        1
>>>> +#define XEN_DOMCTL_CONFIG_GIC_V3        2
>>>> +/* XEN_DOMCTL_configure_domain */
>>>> +struct xen_domctl_configuredomain {
>>>
>>> The naming suggests that the #if really should be around just the
>>> gic_version field (with a dummy field in the #else case to be C89
>>> compatible, e.g. a zero width unnamed bitfield) and the
>>> corresponding #define-s above, ...
>>
>> It's a bit like xen_domctl_setvcpuextstate which is defined only for x86 
>> while the name seem pretty common.
> 
> That's a particularly bad example to compare with, as this is about
> CPU registers having got added after the ABI was defined. This
> (hopefully) shouldn't have many similar cases on other architectures.
> Plus, doing things in an odd way just because there's an odd
> precedent is always suspicious to me.
> 
>> I think we have to stay consistent in this header and not defining 
>> DOMCTL which is not used for a specific architecture.
> 
> Yes, I always advocate for consistency - provided what is there is
> a reasonable reference and was done properly.

Would renaming the structure name with "xen_arm_domctl_configuredomain"
would be sufficient for you?

Regards,

-- 
Julien Grall

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


 


Rackspace

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