Patchwork hw/qxl.c: Fix compilation failures on 32 bit hosts

login
register
mail settings
Submitter Peter Maydell
Date March 16, 2012, 1:50 p.m.
Message ID <1331905804-11240-1-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/147207/
State New
Headers show

Comments

Peter Maydell - March 16, 2012, 1:50 p.m.
Fix compilation failures on 32 bit hosts (cast from pointer to
integer of different size; %ld expects 'long int' not uint64_t).

Reported-by: Steve Langasek <steve.langasek@canonical.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 hw/qxl.c |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)
Stefan Weil - March 16, 2012, 2:37 p.m.
Am 16.03.2012 14:50, schrieb Peter Maydell:
> Fix compilation failures on 32 bit hosts (cast from pointer to
> integer of different size; %ld expects 'long int' not uint64_t).
>
> Reported-by: Steve Langasek<steve.langasek@canonical.com>
> Signed-off-by: Peter Maydell<peter.maydell@linaro.org>
> ---
>   hw/qxl.c |   16 ++++++++--------
>   1 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/hw/qxl.c b/hw/qxl.c
> index e17b0e3..47dc383 100644
> --- a/hw/qxl.c
> +++ b/hw/qxl.c
> @@ -149,7 +149,7 @@ void qxl_spice_update_area(PCIQXLDevice *qxl, uint32_t surface_id,
>       } else {
>           assert(cookie != NULL);
>           spice_qxl_update_area_async(&qxl->ssd.qxl, surface_id, area,
> -                                    clear_dirty_region, (uint64_t)cookie);
> +                                    clear_dirty_region, (uintptr_t)cookie);
>       }
>   }
>
> @@ -171,7 +171,7 @@ static void qxl_spice_destroy_surface_wait(PCIQXLDevice *qxl, uint32_t id,
>           cookie = qxl_cookie_new(QXL_COOKIE_TYPE_IO,
>                                   QXL_IO_DESTROY_SURFACE_ASYNC);
>           cookie->u.surface_id = id;
> -        spice_qxl_destroy_surface_async(&qxl->ssd.qxl, id, (uint64_t)cookie);
> +        spice_qxl_destroy_surface_async(&qxl->ssd.qxl, id, (uintptr_t)cookie);
>       } else {
>           qxl->ssd.worker->destroy_surface_wait(qxl->ssd.worker, id);
>           qxl_spice_destroy_surface_wait_complete(qxl, id);
> @@ -181,8 +181,8 @@ static void qxl_spice_destroy_surface_wait(PCIQXLDevice *qxl, uint32_t id,
>   static void qxl_spice_flush_surfaces_async(PCIQXLDevice *qxl)
>   {
>       spice_qxl_flush_surfaces_async(&qxl->ssd.qxl,
> -        (uint64_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
> -                                 QXL_IO_FLUSH_SURFACES_ASYNC));
> +        (uintptr_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
> +                                  QXL_IO_FLUSH_SURFACES_ASYNC));
>   }
>
>   void qxl_spice_loadvm_commands(PCIQXLDevice *qxl, struct QXLCommandExt *ext,
> @@ -213,8 +213,8 @@ static void qxl_spice_destroy_surfaces(PCIQXLDevice *qxl, qxl_async_io async)
>   {
>       if (async) {
>           spice_qxl_destroy_surfaces_async(&qxl->ssd.qxl,
> -                (uint64_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
> -                                         QXL_IO_DESTROY_ALL_SURFACES_ASYNC));
> +                (uintptr_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
> +                                          QXL_IO_DESTROY_ALL_SURFACES_ASYNC));
>       } else {
>           qxl->ssd.worker->destroy_surfaces(qxl->ssd.worker);
>           qxl_spice_destroy_surfaces_complete(qxl);
> @@ -743,7 +743,7 @@ static void interface_async_complete_io(PCIQXLDevice *qxl, QXLCookie *cookie)
>       }
>       if (cookie&&  current_async != cookie->io) {
>           fprintf(stderr,
> -                "qxl: %s: error: current_async = %d != %ld = cookie->io\n",
> +                "qxl: %s: error: current_async = %d != %" PRId64 " = cookie->io\n",
>                   __func__, current_async, cookie->io);
>    

current_async is uint32_t,  so maybe you can also replace %d by %" PRIu32 ".
Is io unsigned (I don't have the headers, but think it is)? Then PRIu64
would be better.

With these modifications you may add

Reviewed-by: Stefan Weil <sw@weilnetz.de>

Cheers,
Stefan

>       }
>       switch (current_async) {
> @@ -812,7 +812,7 @@ static void interface_update_area_complete(QXLInstance *sin,
>   static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)
>   {
>       PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
> -    QXLCookie *cookie = (QXLCookie *)cookie_token;
> +    QXLCookie *cookie = (QXLCookie *)(uintptr_t)cookie_token;
>
>       switch (cookie->type) {
>       case QXL_COOKIE_TYPE_IO:
>
Peter Maydell - March 16, 2012, 2:56 p.m.
On 16 March 2012 14:37, Stefan Weil <sw@weilnetz.de> wrote:
>>          fprintf(stderr,
>> -                "qxl: %s: error: current_async = %d != %ld =
>> cookie->io\n",
>> +                "qxl: %s: error: current_async = %d != %" PRId64 " =
>> cookie->io\n",
>>                  __func__, current_async, cookie->io);
>>
>
>
> current_async is uint32_t,  so maybe you can also replace %d by %" PRIu32 ".
> Is io unsigned (I don't have the headers, but think it is)? Then PRIu64
> would be better.

Yes, cookie->io is uint64_t, but I just want to fix compile warnings,
not make functional changes (it might be a semantically signed value
that we happen to be carrying in an unsigned type, for instance).

I agree that we could use PRId32 in theory, but on the other hand
it doesn't cause any compiler warnings and we also use %d for it
elsewhere in the function. I'd rather leave that kind of cleanup
for somebody who wants to deal with it more systematically.

-- PMM
Gerd Hoffmann - March 19, 2012, 12:02 p.m.
On 03/16/12 14:50, Peter Maydell wrote:
> Fix compilation failures on 32 bit hosts (cast from pointer to
> integer of different size; %ld expects 'long int' not uint64_t).

Acked-by: Gerd Hoffmann <kraxel@redhat.com>

cheers,
  Gerd
Gerd Hoffmann - March 19, 2012, 1:03 p.m.
On 03/19/12 13:02, Gerd Hoffmann wrote:
> On 03/16/12 14:50, Peter Maydell wrote:
>> Fix compilation failures on 32 bit hosts (cast from pointer to
>> integer of different size; %ld expects 'long int' not uint64_t).
> 
> Acked-by: Gerd Hoffmann <kraxel@redhat.com>

Oops, scratch that, should have been "added to spice patch queue".

cheers,
  Gerd

Patch

diff --git a/hw/qxl.c b/hw/qxl.c
index e17b0e3..47dc383 100644
--- a/hw/qxl.c
+++ b/hw/qxl.c
@@ -149,7 +149,7 @@  void qxl_spice_update_area(PCIQXLDevice *qxl, uint32_t surface_id,
     } else {
         assert(cookie != NULL);
         spice_qxl_update_area_async(&qxl->ssd.qxl, surface_id, area,
-                                    clear_dirty_region, (uint64_t)cookie);
+                                    clear_dirty_region, (uintptr_t)cookie);
     }
 }
 
@@ -171,7 +171,7 @@  static void qxl_spice_destroy_surface_wait(PCIQXLDevice *qxl, uint32_t id,
         cookie = qxl_cookie_new(QXL_COOKIE_TYPE_IO,
                                 QXL_IO_DESTROY_SURFACE_ASYNC);
         cookie->u.surface_id = id;
-        spice_qxl_destroy_surface_async(&qxl->ssd.qxl, id, (uint64_t)cookie);
+        spice_qxl_destroy_surface_async(&qxl->ssd.qxl, id, (uintptr_t)cookie);
     } else {
         qxl->ssd.worker->destroy_surface_wait(qxl->ssd.worker, id);
         qxl_spice_destroy_surface_wait_complete(qxl, id);
@@ -181,8 +181,8 @@  static void qxl_spice_destroy_surface_wait(PCIQXLDevice *qxl, uint32_t id,
 static void qxl_spice_flush_surfaces_async(PCIQXLDevice *qxl)
 {
     spice_qxl_flush_surfaces_async(&qxl->ssd.qxl,
-        (uint64_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
-                                 QXL_IO_FLUSH_SURFACES_ASYNC));
+        (uintptr_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
+                                  QXL_IO_FLUSH_SURFACES_ASYNC));
 }
 
 void qxl_spice_loadvm_commands(PCIQXLDevice *qxl, struct QXLCommandExt *ext,
@@ -213,8 +213,8 @@  static void qxl_spice_destroy_surfaces(PCIQXLDevice *qxl, qxl_async_io async)
 {
     if (async) {
         spice_qxl_destroy_surfaces_async(&qxl->ssd.qxl,
-                (uint64_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
-                                         QXL_IO_DESTROY_ALL_SURFACES_ASYNC));
+                (uintptr_t)qxl_cookie_new(QXL_COOKIE_TYPE_IO,
+                                          QXL_IO_DESTROY_ALL_SURFACES_ASYNC));
     } else {
         qxl->ssd.worker->destroy_surfaces(qxl->ssd.worker);
         qxl_spice_destroy_surfaces_complete(qxl);
@@ -743,7 +743,7 @@  static void interface_async_complete_io(PCIQXLDevice *qxl, QXLCookie *cookie)
     }
     if (cookie && current_async != cookie->io) {
         fprintf(stderr,
-                "qxl: %s: error: current_async = %d != %ld = cookie->io\n",
+                "qxl: %s: error: current_async = %d != %" PRId64 " = cookie->io\n",
                 __func__, current_async, cookie->io);
     }
     switch (current_async) {
@@ -812,7 +812,7 @@  static void interface_update_area_complete(QXLInstance *sin,
 static void interface_async_complete(QXLInstance *sin, uint64_t cookie_token)
 {
     PCIQXLDevice *qxl = container_of(sin, PCIQXLDevice, ssd.qxl);
-    QXLCookie *cookie = (QXLCookie *)cookie_token;
+    QXLCookie *cookie = (QXLCookie *)(uintptr_t)cookie_token;
 
     switch (cookie->type) {
     case QXL_COOKIE_TYPE_IO: