Re: [PATCH] drm/xen-front: fix pointer casts

2018-05-23 Thread Oleksandr Andrushchenko

On 05/23/2018 02:06 PM, Juergen Gross wrote:

On 23/05/18 12:00, Oleksandr Andrushchenko wrote:

On 05/23/2018 12:19 PM, Juergen Gross wrote:

On 21/05/18 09:39, Oleksandr Andrushchenko wrote:

From: Oleksandr Andrushchenko 

Building for a 32-bit target results in warnings from casting
between a 32-bit pointer and a 64-bit integer. Fix the warnings
by casting those pointers to uintptr_t first.

Signed-off-by: Oleksandr Andrushchenko

---
   drivers/gpu/drm/xen/xen_drm_front.h   | 4 ++--
   drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 2 +-
   2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xen/xen_drm_front.h
b/drivers/gpu/drm/xen/xen_drm_front.h
index 2c2479b571ae..8e15dbebc4ba 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.h
+++ b/drivers/gpu/drm/xen/xen_drm_front.h
@@ -126,12 +126,12 @@ struct xen_drm_front_drm_info {
     static inline u64 xen_drm_front_fb_to_cookie(struct
drm_framebuffer *fb)
   {
-    return (u64)fb;
+    return (u64)(uintptr_t)fb;

Do you really still need the cast to u64?

Indeed, I can remove (u64) now, thank you

   }
     static inline u64 xen_drm_front_dbuf_to_cookie(struct
drm_gem_object *gem_obj)
   {
-    return (u64)gem_obj;
+    return (u64)(uintptr_t)gem_obj;
   }
     int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline
*pipeline,
diff --git a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
index 8099cb343ae3..47fc93847765 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
@@ -122,7 +122,7 @@ static void guest_calc_num_grefs(struct
xen_drm_front_shbuf *buf)
   }
     #define xen_page_to_vaddr(page) \
-    ((phys_addr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
+    ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))

phys_addr_t for a virtual address?

This is because the resulting value is then passed to gnttab_set_map_op/
gnttab_set_unmap_op which expects host address to be passed as
phys_addr_t addr :(

Okay, but this means the compiler should do the necessary cast when
you drop the cast to phys_addr_t in xen_page_to_vaddr(), as the cast
to uintptr_t is already producing an unsigned integer value which can
easily be promoted to more bits, right?

Right, so I can safely use:
 #define xen_page_to_vaddr(page) \
- ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
+   ((uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))



Juergen

Thank you for your time and comments,
Oleksandr


Re: [PATCH] drm/xen-front: fix pointer casts

2018-05-23 Thread Oleksandr Andrushchenko

On 05/23/2018 02:06 PM, Juergen Gross wrote:

On 23/05/18 12:00, Oleksandr Andrushchenko wrote:

On 05/23/2018 12:19 PM, Juergen Gross wrote:

On 21/05/18 09:39, Oleksandr Andrushchenko wrote:

From: Oleksandr Andrushchenko 

Building for a 32-bit target results in warnings from casting
between a 32-bit pointer and a 64-bit integer. Fix the warnings
by casting those pointers to uintptr_t first.

Signed-off-by: Oleksandr Andrushchenko

---
   drivers/gpu/drm/xen/xen_drm_front.h   | 4 ++--
   drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 2 +-
   2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xen/xen_drm_front.h
b/drivers/gpu/drm/xen/xen_drm_front.h
index 2c2479b571ae..8e15dbebc4ba 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.h
+++ b/drivers/gpu/drm/xen/xen_drm_front.h
@@ -126,12 +126,12 @@ struct xen_drm_front_drm_info {
     static inline u64 xen_drm_front_fb_to_cookie(struct
drm_framebuffer *fb)
   {
-    return (u64)fb;
+    return (u64)(uintptr_t)fb;

Do you really still need the cast to u64?

Indeed, I can remove (u64) now, thank you

   }
     static inline u64 xen_drm_front_dbuf_to_cookie(struct
drm_gem_object *gem_obj)
   {
-    return (u64)gem_obj;
+    return (u64)(uintptr_t)gem_obj;
   }
     int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline
*pipeline,
diff --git a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
index 8099cb343ae3..47fc93847765 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
@@ -122,7 +122,7 @@ static void guest_calc_num_grefs(struct
xen_drm_front_shbuf *buf)
   }
     #define xen_page_to_vaddr(page) \
-    ((phys_addr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
+    ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))

phys_addr_t for a virtual address?

This is because the resulting value is then passed to gnttab_set_map_op/
gnttab_set_unmap_op which expects host address to be passed as
phys_addr_t addr :(

Okay, but this means the compiler should do the necessary cast when
you drop the cast to phys_addr_t in xen_page_to_vaddr(), as the cast
to uintptr_t is already producing an unsigned integer value which can
easily be promoted to more bits, right?

Right, so I can safely use:
 #define xen_page_to_vaddr(page) \
- ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
+   ((uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))



Juergen

Thank you for your time and comments,
Oleksandr


Re: [PATCH] drm/xen-front: fix pointer casts

2018-05-23 Thread Juergen Gross
On 23/05/18 12:00, Oleksandr Andrushchenko wrote:
> On 05/23/2018 12:19 PM, Juergen Gross wrote:
>> On 21/05/18 09:39, Oleksandr Andrushchenko wrote:
>>> From: Oleksandr Andrushchenko 
>>>
>>> Building for a 32-bit target results in warnings from casting
>>> between a 32-bit pointer and a 64-bit integer. Fix the warnings
>>> by casting those pointers to uintptr_t first.
>>>
>>> Signed-off-by: Oleksandr Andrushchenko
>>> 
>>> ---
>>>   drivers/gpu/drm/xen/xen_drm_front.h   | 4 ++--
>>>   drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 2 +-
>>>   2 files changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xen/xen_drm_front.h
>>> b/drivers/gpu/drm/xen/xen_drm_front.h
>>> index 2c2479b571ae..8e15dbebc4ba 100644
>>> --- a/drivers/gpu/drm/xen/xen_drm_front.h
>>> +++ b/drivers/gpu/drm/xen/xen_drm_front.h
>>> @@ -126,12 +126,12 @@ struct xen_drm_front_drm_info {
>>>     static inline u64 xen_drm_front_fb_to_cookie(struct
>>> drm_framebuffer *fb)
>>>   {
>>> -    return (u64)fb;
>>> +    return (u64)(uintptr_t)fb;
>> Do you really still need the cast to u64?
> Indeed, I can remove (u64) now, thank you
>>
>>>   }
>>>     static inline u64 xen_drm_front_dbuf_to_cookie(struct
>>> drm_gem_object *gem_obj)
>>>   {
>>> -    return (u64)gem_obj;
>>> +    return (u64)(uintptr_t)gem_obj;
>>>   }
>>>     int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline
>>> *pipeline,
>>> diff --git a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
>>> b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
>>> index 8099cb343ae3..47fc93847765 100644
>>> --- a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
>>> +++ b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
>>> @@ -122,7 +122,7 @@ static void guest_calc_num_grefs(struct
>>> xen_drm_front_shbuf *buf)
>>>   }
>>>     #define xen_page_to_vaddr(page) \
>>> -    ((phys_addr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
>>> +    ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
>> phys_addr_t for a virtual address?
> This is because the resulting value is then passed to gnttab_set_map_op/
> gnttab_set_unmap_op which expects host address to be passed as
> phys_addr_t addr :(

Okay, but this means the compiler should do the necessary cast when
you drop the cast to phys_addr_t in xen_page_to_vaddr(), as the cast
to uintptr_t is already producing an unsigned integer value which can
easily be promoted to more bits, right?


Juergen


Re: [PATCH] drm/xen-front: fix pointer casts

2018-05-23 Thread Juergen Gross
On 23/05/18 12:00, Oleksandr Andrushchenko wrote:
> On 05/23/2018 12:19 PM, Juergen Gross wrote:
>> On 21/05/18 09:39, Oleksandr Andrushchenko wrote:
>>> From: Oleksandr Andrushchenko 
>>>
>>> Building for a 32-bit target results in warnings from casting
>>> between a 32-bit pointer and a 64-bit integer. Fix the warnings
>>> by casting those pointers to uintptr_t first.
>>>
>>> Signed-off-by: Oleksandr Andrushchenko
>>> 
>>> ---
>>>   drivers/gpu/drm/xen/xen_drm_front.h   | 4 ++--
>>>   drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 2 +-
>>>   2 files changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xen/xen_drm_front.h
>>> b/drivers/gpu/drm/xen/xen_drm_front.h
>>> index 2c2479b571ae..8e15dbebc4ba 100644
>>> --- a/drivers/gpu/drm/xen/xen_drm_front.h
>>> +++ b/drivers/gpu/drm/xen/xen_drm_front.h
>>> @@ -126,12 +126,12 @@ struct xen_drm_front_drm_info {
>>>     static inline u64 xen_drm_front_fb_to_cookie(struct
>>> drm_framebuffer *fb)
>>>   {
>>> -    return (u64)fb;
>>> +    return (u64)(uintptr_t)fb;
>> Do you really still need the cast to u64?
> Indeed, I can remove (u64) now, thank you
>>
>>>   }
>>>     static inline u64 xen_drm_front_dbuf_to_cookie(struct
>>> drm_gem_object *gem_obj)
>>>   {
>>> -    return (u64)gem_obj;
>>> +    return (u64)(uintptr_t)gem_obj;
>>>   }
>>>     int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline
>>> *pipeline,
>>> diff --git a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
>>> b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
>>> index 8099cb343ae3..47fc93847765 100644
>>> --- a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
>>> +++ b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
>>> @@ -122,7 +122,7 @@ static void guest_calc_num_grefs(struct
>>> xen_drm_front_shbuf *buf)
>>>   }
>>>     #define xen_page_to_vaddr(page) \
>>> -    ((phys_addr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
>>> +    ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
>> phys_addr_t for a virtual address?
> This is because the resulting value is then passed to gnttab_set_map_op/
> gnttab_set_unmap_op which expects host address to be passed as
> phys_addr_t addr :(

Okay, but this means the compiler should do the necessary cast when
you drop the cast to phys_addr_t in xen_page_to_vaddr(), as the cast
to uintptr_t is already producing an unsigned integer value which can
easily be promoted to more bits, right?


Juergen


Re: [PATCH] drm/xen-front: fix pointer casts

2018-05-23 Thread Oleksandr Andrushchenko

On 05/23/2018 12:19 PM, Juergen Gross wrote:

On 21/05/18 09:39, Oleksandr Andrushchenko wrote:

From: Oleksandr Andrushchenko 

Building for a 32-bit target results in warnings from casting
between a 32-bit pointer and a 64-bit integer. Fix the warnings
by casting those pointers to uintptr_t first.

Signed-off-by: Oleksandr Andrushchenko 
---
  drivers/gpu/drm/xen/xen_drm_front.h   | 4 ++--
  drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 2 +-
  2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xen/xen_drm_front.h 
b/drivers/gpu/drm/xen/xen_drm_front.h
index 2c2479b571ae..8e15dbebc4ba 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.h
+++ b/drivers/gpu/drm/xen/xen_drm_front.h
@@ -126,12 +126,12 @@ struct xen_drm_front_drm_info {
  
  static inline u64 xen_drm_front_fb_to_cookie(struct drm_framebuffer *fb)

  {
-   return (u64)fb;
+   return (u64)(uintptr_t)fb;

Do you really still need the cast to u64?

Indeed, I can remove (u64) now, thank you



  }
  
  static inline u64 xen_drm_front_dbuf_to_cookie(struct drm_gem_object *gem_obj)

  {
-   return (u64)gem_obj;
+   return (u64)(uintptr_t)gem_obj;
  }
  
  int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline *pipeline,

diff --git a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c 
b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
index 8099cb343ae3..47fc93847765 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
@@ -122,7 +122,7 @@ static void guest_calc_num_grefs(struct xen_drm_front_shbuf 
*buf)
  }
  
  #define xen_page_to_vaddr(page) \

-   ((phys_addr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
+   ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))

phys_addr_t for a virtual address?

This is because the resulting value is then passed to gnttab_set_map_op/
gnttab_set_unmap_op which expects host address to be passed as
phys_addr_t addr :(
Please see [1], [2]: regardless of the fact that xen_page_to_vaddr does
produce host address I have to convert it to phys_addr_t then to pass to 
[1] and [2].

Please also see [3], [4], [5] which either cast to phys_addr_t or
unsigned long or u64.


Juergen


[1] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/include/xen/grant_table.h#L147
[2] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/include/xen/grant_table.h#L163
[3] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/drivers/block/xen-blkback/blkback.c#L845
[4] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/drivers/net/xen-netback/netback.c#L334
[5] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/drivers/xen/xenbus/xenbus_client.c#L478


Re: [PATCH] drm/xen-front: fix pointer casts

2018-05-23 Thread Oleksandr Andrushchenko

On 05/23/2018 12:19 PM, Juergen Gross wrote:

On 21/05/18 09:39, Oleksandr Andrushchenko wrote:

From: Oleksandr Andrushchenko 

Building for a 32-bit target results in warnings from casting
between a 32-bit pointer and a 64-bit integer. Fix the warnings
by casting those pointers to uintptr_t first.

Signed-off-by: Oleksandr Andrushchenko 
---
  drivers/gpu/drm/xen/xen_drm_front.h   | 4 ++--
  drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 2 +-
  2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/xen/xen_drm_front.h 
b/drivers/gpu/drm/xen/xen_drm_front.h
index 2c2479b571ae..8e15dbebc4ba 100644
--- a/drivers/gpu/drm/xen/xen_drm_front.h
+++ b/drivers/gpu/drm/xen/xen_drm_front.h
@@ -126,12 +126,12 @@ struct xen_drm_front_drm_info {
  
  static inline u64 xen_drm_front_fb_to_cookie(struct drm_framebuffer *fb)

  {
-   return (u64)fb;
+   return (u64)(uintptr_t)fb;

Do you really still need the cast to u64?

Indeed, I can remove (u64) now, thank you



  }
  
  static inline u64 xen_drm_front_dbuf_to_cookie(struct drm_gem_object *gem_obj)

  {
-   return (u64)gem_obj;
+   return (u64)(uintptr_t)gem_obj;
  }
  
  int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline *pipeline,

diff --git a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c 
b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
index 8099cb343ae3..47fc93847765 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
@@ -122,7 +122,7 @@ static void guest_calc_num_grefs(struct xen_drm_front_shbuf 
*buf)
  }
  
  #define xen_page_to_vaddr(page) \

-   ((phys_addr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
+   ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))

phys_addr_t for a virtual address?

This is because the resulting value is then passed to gnttab_set_map_op/
gnttab_set_unmap_op which expects host address to be passed as
phys_addr_t addr :(
Please see [1], [2]: regardless of the fact that xen_page_to_vaddr does
produce host address I have to convert it to phys_addr_t then to pass to 
[1] and [2].

Please also see [3], [4], [5] which either cast to phys_addr_t or
unsigned long or u64.


Juergen


[1] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/include/xen/grant_table.h#L147
[2] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/include/xen/grant_table.h#L163
[3] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/drivers/block/xen-blkback/blkback.c#L845
[4] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/drivers/net/xen-netback/netback.c#L334
[5] 
https://elixir.bootlin.com/linux/v4.17-rc6/source/drivers/xen/xenbus/xenbus_client.c#L478


Re: [PATCH] drm/xen-front: fix pointer casts

2018-05-23 Thread Juergen Gross
On 21/05/18 09:39, Oleksandr Andrushchenko wrote:
> From: Oleksandr Andrushchenko 
> 
> Building for a 32-bit target results in warnings from casting
> between a 32-bit pointer and a 64-bit integer. Fix the warnings
> by casting those pointers to uintptr_t first.
> 
> Signed-off-by: Oleksandr Andrushchenko 
> ---
>  drivers/gpu/drm/xen/xen_drm_front.h   | 4 ++--
>  drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.h 
> b/drivers/gpu/drm/xen/xen_drm_front.h
> index 2c2479b571ae..8e15dbebc4ba 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.h
> +++ b/drivers/gpu/drm/xen/xen_drm_front.h
> @@ -126,12 +126,12 @@ struct xen_drm_front_drm_info {
>  
>  static inline u64 xen_drm_front_fb_to_cookie(struct drm_framebuffer *fb)
>  {
> - return (u64)fb;
> + return (u64)(uintptr_t)fb;

Do you really still need the cast to u64?

>  }
>  
>  static inline u64 xen_drm_front_dbuf_to_cookie(struct drm_gem_object 
> *gem_obj)
>  {
> - return (u64)gem_obj;
> + return (u64)(uintptr_t)gem_obj;
>  }
>  
>  int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline *pipeline,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c 
> b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
> index 8099cb343ae3..47fc93847765 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
> @@ -122,7 +122,7 @@ static void guest_calc_num_grefs(struct 
> xen_drm_front_shbuf *buf)
>  }
>  
>  #define xen_page_to_vaddr(page) \
> - ((phys_addr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
> + ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))

phys_addr_t for a virtual address?


Juergen


Re: [PATCH] drm/xen-front: fix pointer casts

2018-05-23 Thread Juergen Gross
On 21/05/18 09:39, Oleksandr Andrushchenko wrote:
> From: Oleksandr Andrushchenko 
> 
> Building for a 32-bit target results in warnings from casting
> between a 32-bit pointer and a 64-bit integer. Fix the warnings
> by casting those pointers to uintptr_t first.
> 
> Signed-off-by: Oleksandr Andrushchenko 
> ---
>  drivers/gpu/drm/xen/xen_drm_front.h   | 4 ++--
>  drivers/gpu/drm/xen/xen_drm_front_shbuf.c | 2 +-
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/gpu/drm/xen/xen_drm_front.h 
> b/drivers/gpu/drm/xen/xen_drm_front.h
> index 2c2479b571ae..8e15dbebc4ba 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front.h
> +++ b/drivers/gpu/drm/xen/xen_drm_front.h
> @@ -126,12 +126,12 @@ struct xen_drm_front_drm_info {
>  
>  static inline u64 xen_drm_front_fb_to_cookie(struct drm_framebuffer *fb)
>  {
> - return (u64)fb;
> + return (u64)(uintptr_t)fb;

Do you really still need the cast to u64?

>  }
>  
>  static inline u64 xen_drm_front_dbuf_to_cookie(struct drm_gem_object 
> *gem_obj)
>  {
> - return (u64)gem_obj;
> + return (u64)(uintptr_t)gem_obj;
>  }
>  
>  int xen_drm_front_mode_set(struct xen_drm_front_drm_pipeline *pipeline,
> diff --git a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c 
> b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
> index 8099cb343ae3..47fc93847765 100644
> --- a/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
> +++ b/drivers/gpu/drm/xen/xen_drm_front_shbuf.c
> @@ -122,7 +122,7 @@ static void guest_calc_num_grefs(struct 
> xen_drm_front_shbuf *buf)
>  }
>  
>  #define xen_page_to_vaddr(page) \
> - ((phys_addr_t)pfn_to_kaddr(page_to_xen_pfn(page)))
> + ((phys_addr_t)(uintptr_t)pfn_to_kaddr(page_to_xen_pfn(page)))

phys_addr_t for a virtual address?


Juergen