[PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()

Jan Beulich posted 1 patch 1 month, 4 weeks ago
Failed in applying to current master (apply log)
There is a newer version of this series
[PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Jan Beulich 1 month, 4 weeks ago
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@suse.com>

--- 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))
 
 #ifdef CONFIG_ARM_32
 /**
--- a/xen/arch/x86/hvm/nestedhvm.c
+++ b/xen/arch/x86/hvm/nestedhvm.c
@@ -125,7 +125,7 @@ static int __init cf_check nestedhvm_set
     /* shadow_io_bitmaps can't be declared static because
      *   they must fulfill hw requirements (page aligned section)
      *   and doing so triggers the ASSERT(va >= XEN_VIRT_START)
-     *   in __virt_to_maddr()
+     *   in virt_to_maddr()
      *
      * So as a compromise pre-allocate them when xen boots.
      * This function must be called from within start_xen() when
--- a/xen/arch/x86/include/asm/page.h
+++ b/xen/arch/x86/include/asm/page.h
@@ -269,8 +269,6 @@ void scrub_page_cold(void *);
 #define mfn_valid(mfn)      __mfn_valid(mfn_x(mfn))
 #define virt_to_mfn(va)     __virt_to_mfn(va)
 #define mfn_to_virt(mfn)    __mfn_to_virt(mfn)
-#define virt_to_maddr(va)   __virt_to_maddr((unsigned long)(va))
-#define maddr_to_virt(ma)   __maddr_to_virt((unsigned long)(ma))
 #define maddr_to_page(ma)   __maddr_to_page(ma)
 #define page_to_maddr(pg)   __page_to_maddr(pg)
 #define virt_to_page(va)    __virt_to_page(va)
--- a/xen/arch/x86/include/asm/x86_64/page.h
+++ b/xen/arch/x86/include/asm/x86_64/page.h
@@ -34,7 +34,7 @@ static inline unsigned long canonicalise
 #define pdx_to_virt(pdx) ((void *)(DIRECTMAP_VIRT_START + \
                                    ((unsigned long)(pdx) << PAGE_SHIFT)))
 
-static inline unsigned long __virt_to_maddr(unsigned long va)
+static inline unsigned long virt_to_maddr(unsigned long va)
 {
     ASSERT(va < DIRECTMAP_VIRT_END);
     if ( va >= DIRECTMAP_VIRT_START )
@@ -47,8 +47,9 @@ static inline unsigned long __virt_to_ma
 
     return xen_phys_start + va - XEN_VIRT_START;
 }
+#define virt_to_maddr(va) virt_to_maddr((unsigned long)(va))
 
-static inline void *__maddr_to_virt(unsigned long ma)
+static inline void *maddr_to_virt(unsigned long ma)
 {
     /* Offset in the direct map, accounting for pdx compression */
     unsigned long va_offset = maddr_to_directmapoff(ma);
Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Julien Grall 1 month, 4 weeks ago
Hi Jan,

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@suse.com>
> 
> --- 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 (?). So I would rather prefer if we keep the name distinct on Arm.

Let see what the other Arm maintainers think.

Cheers,

-- 
Julien Grall
Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Michal Orzel 1 month, 3 weeks ago

On 05/03/2024 20:24, Julien Grall wrote:
> 
> 
> Hi Jan,
> 
> 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@suse.com>
>>
>> --- 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 (?). So I would rather prefer if we keep the name distinct on Arm.
> 
> Let see what the other Arm maintainers think.
I share the same opinion. If it's about double underscores that violates MISRA rule, I think
we deviated it the same way we deviated unique identifiers (IIRC).

~Michal
Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Jan Beulich 1 month, 3 weeks ago
On 05.03.2024 20:24, Julien Grall wrote:
> Hi Jan,
> 
> 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@suse.com>
>>
>> --- 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.

Jan
Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Julien Grall 1 month, 3 weeks ago
Hi Jan,

On 06/03/2024 07:22, Jan Beulich wrote:
> On 05.03.2024 20:24, Julien Grall wrote:
>> Hi Jan,
>>
>> 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@suse.com>
>>>
>>> --- 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.

Cheers,

-- 
Julien Grall
Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Jan Beulich 1 month, 3 weeks ago
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@suse.com>
>>>>
>>>> --- 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.

Jan
Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Julien Grall 1 month, 3 weeks ago
Hi Jan,

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@suse.com>
>>>>>
>>>>> --- 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.

Cheers,


-- 
Julien Grall
Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Jan Beulich 1 month, 3 weeks ago
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@suse.com>
>>>>>>
>>>>>> --- 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
Re: [PATCH] x86+Arm: drop (rename) __virt_to_maddr() / __maddr_to_virt()
Posted by Oleksii 1 month, 4 weeks ago
Changes looks good to me.

Reviewed-by: Oleksii Kurochko <oleksii.kurochko@gmail.com>

I'll update the RISC-V part correspondingly.

~ Oleksii

On Tue, 2024-03-05 at 09:33 +0100, 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@suse.com>
> 
> --- 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))
>  
>  #ifdef CONFIG_ARM_32
>  /**
> --- a/xen/arch/x86/hvm/nestedhvm.c
> +++ b/xen/arch/x86/hvm/nestedhvm.c
> @@ -125,7 +125,7 @@ static int __init cf_check nestedhvm_set
>      /* shadow_io_bitmaps can't be declared static because
>       *   they must fulfill hw requirements (page aligned section)
>       *   and doing so triggers the ASSERT(va >= XEN_VIRT_START)
> -     *   in __virt_to_maddr()
> +     *   in virt_to_maddr()
>       *
>       * So as a compromise pre-allocate them when xen boots.
>       * This function must be called from within start_xen() when
> --- a/xen/arch/x86/include/asm/page.h
> +++ b/xen/arch/x86/include/asm/page.h
> @@ -269,8 +269,6 @@ void scrub_page_cold(void *);
>  #define mfn_valid(mfn)      __mfn_valid(mfn_x(mfn))
>  #define virt_to_mfn(va)     __virt_to_mfn(va)
>  #define mfn_to_virt(mfn)    __mfn_to_virt(mfn)
> -#define virt_to_maddr(va)   __virt_to_maddr((unsigned long)(va))
> -#define maddr_to_virt(ma)   __maddr_to_virt((unsigned long)(ma))
>  #define maddr_to_page(ma)   __maddr_to_page(ma)
>  #define page_to_maddr(pg)   __page_to_maddr(pg)
>  #define virt_to_page(va)    __virt_to_page(va)
> --- a/xen/arch/x86/include/asm/x86_64/page.h
> +++ b/xen/arch/x86/include/asm/x86_64/page.h
> @@ -34,7 +34,7 @@ static inline unsigned long canonicalise
>  #define pdx_to_virt(pdx) ((void *)(DIRECTMAP_VIRT_START + \
>                                     ((unsigned long)(pdx) <<
> PAGE_SHIFT)))
>  
> -static inline unsigned long __virt_to_maddr(unsigned long va)
> +static inline unsigned long virt_to_maddr(unsigned long va)
>  {
>      ASSERT(va < DIRECTMAP_VIRT_END);
>      if ( va >= DIRECTMAP_VIRT_START )
> @@ -47,8 +47,9 @@ static inline unsigned long __virt_to_ma
>  
>      return xen_phys_start + va - XEN_VIRT_START;
>  }
> +#define virt_to_maddr(va) virt_to_maddr((unsigned long)(va))
>  
> -static inline void *__maddr_to_virt(unsigned long ma)
> +static inline void *maddr_to_virt(unsigned long ma)
>  {
>      /* Offset in the direct map, accounting for pdx compression */
>      unsigned long va_offset = maddr_to_directmapoff(ma);