On 08/07/2019 21:28, Julien Grall wrote:
>>>>
>>>> https://lore.kernel.org/xen-devel/1561109798-8744-5-git-send-email-andrew.coop...@citrix.com/T/#t
>>>>
>>>>
>>>
>>> To be honest, I think it is wrong to try to micro-optimize a common
>>> prototype for the benefit of one architecture and one compiler version
>>> (or even none per the e-mail).
>>
>> The prototype wasn't common.  Observe that before this patch, ARM used
>> unsigned long while x86 used uint16_t.  It should become common,
>> however.
>
> I am not sure to follow this. AFAICT, we use uint16_t properly on Arm.

Look at the modifications to gnttab_clear_flags(), and in particular,
the removals.  Before this patch, the API really is different between
ARM and x86.  (Although it differed between unsigned long and unsigned
int.  The uint16_t was a mistake on my behalf.)

>
>>
>> In practice, we're talking about bits 3 and 4, and this isn't liable to
>> change in a hurry.
>>
>>> One could also argue that this may be not beneficial for the non-x86
>>> architecture depending on how the compiler decide to do the cast from
>>> 32-bit to 16-bit...
>>
>> All architecture necessarily suffer the downcast somewhere, even x86.
>> ARM's is in the prototype for guest_clear_mask16(), but in terms of the
>> common logic for calculating conditionally which bits to clear, keeping
>> everything as unsigned int for as long as possible offers the most
>> flexibility to the compiler, as it can see all the constants involved.
>
> This is the argument I was looking for :). Thank you for writing it!

Can I take this as an ack, or a request for clarification in the commit
message, or something else?

(This detail is the final outstanding piece for the series to be committed.)

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

Reply via email to