|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
On 06.03.2024 11:24, Julien Grall wrote:
> On 06/03/2024 09:59, Jan Beulich wrote:
>> On 06.03.2024 10:44, Julien Grall wrote:
>>> On 06/03/2024 07:22, Jan Beulich wrote:
>>>> On 05.03.2024 20:24, Julien Grall wrote:
>>>>> The title is quite confusing. I would have expected the macro...
>>>>>
>>>>> On 05/03/2024 08:33, Jan Beulich wrote:
>>>>>> There's no use of them anymore except in the definitions of the non-
>>>>>> underscore-prefixed aliases. Rename the inline functions, adjust the
>>>>>> virt_to_maddr() #define-e, and purge the (x86-only) maddr_to_virt() one,
>>>>>> thus eliminating a bogus cast which would have allowed the passing of a
>>>>>> pointer type variable into maddr_to_virt() to go silently.
>>>>>>
>>>>>> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
>>>>>>
>>>>>> --- a/xen/arch/arm/include/asm/mm.h
>>>>>> +++ b/xen/arch/arm/include/asm/mm.h
>>>>>> @@ -256,12 +256,12 @@ static inline void __iomem *ioremap_wc(p
>>>>>> /* Page-align address and convert to frame number format */
>>>>>> #define paddr_to_pfn_aligned(paddr)
>>>>>> paddr_to_pfn(PAGE_ALIGN(paddr))
>>>>>>
>>>>>> -static inline paddr_t __virt_to_maddr(vaddr_t va)
>>>>>> +static inline paddr_t virt_to_maddr(vaddr_t va)
>>>>>> {
>>>>>> uint64_t par = va_to_par(va);
>>>>>> return (par & PADDR_MASK & PAGE_MASK) | (va & ~PAGE_MASK);
>>>>>> }
>>>>>> -#define virt_to_maddr(va) __virt_to_maddr((vaddr_t)(va))
>>>>>> +#define virt_to_maddr(va) virt_to_maddr((vaddr_t)(va))
>>>>>
>>>>> ... to be removed. But you keep it and just overload the name. I know it
>>>>> is not possible to remove the macro because some callers are using
>>>>> pointers (?).
>>>>
>>>> Indeed. I actually tried without, but the build fails miserably.
>>>>
>>>>> So I would rather prefer if we keep the name distinct on Arm.
>>>>>
>>>>> Let see what the other Arm maintainers think.
>>>>
>>>> Well, okay. I'm a little surprised though; I was under the impression
>>>> that a goal would be to, eventually, get rid of all the __-prefixed
>>>> secondary variants of this kind of helpers.
>>>
>>> Because of MISRA? If so, you would be replacing one violation by another
>>> one (duplicated name). IIRC we decided to deviate it, yet I don't
>>> particular want to use the pattern in Arm headers when there is no need.
>>>
>>> If you are trying to solve MISRA, then I think we want to either remove
>>> the macro (not possible here) or suffix with the double-underscore the
>>> static inline helper.
>>
>> No, Misra is only secondary here. Many of these helpers come in two flavors
>> such than one can be overridden in individual source files. That's mainly
>> connected to type-safety being generally wanted, but not always easy to
>> achieve without a lot of code churn. We've made quite a bit of progress
>> there, and imo ultimately the need for two flavors of doing the same thing
>> ought to disappear.
>
> What about converting the static inline to a macro? As we cast 'va', I
> don't think we have any benefits to keep the static inline helper and
> provide a thin wrapper with just a cast.
>
> This would address my concern and possibly address your wish to remove
> the double-underscore version.
Hmm, I didn't even think in that direction, seeing that generally we aim
at moving from macros to inline functions. But yes, if converting to a
macro is acceptable, that'll be what I do in v2 then.
Jan
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |