> -----Original Message-----
> From: Qemu-devel [mailto:qemu-devel-
> bounces+paul.durrant=citrix....@nongnu.org] On Behalf Of Ross Lagerwall
> Sent: 11 October 2017 16:52
> To: qemu-devel@nongnu.org
> Cc: Anthony Perard <anthony.per...@citrix.com>; Ross Lagerwall
> <ross.lagerw...@citrix.com>; Stefano Stabellini <sstabell...@kernel.org>
> Subject: [Qemu-devel] [PATCH] xen: Log errno rather than return value
> 
> xen_modified_memory() sets errno to communicate what went wrong so
> log
> this rather than the return value which is not interesting.
> 
> Signed-off-by: Ross Lagerwall <ross.lagerw...@citrix.com>
> ---
>  hw/i386/xen/xen-hvm.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c
> index d9ccd5d..8028bed 100644
> --- a/hw/i386/xen/xen-hvm.c
> +++ b/hw/i386/xen/xen-hvm.c
> @@ -1446,7 +1446,7 @@ void xen_hvm_modified_memory(ram_addr_t
> start, ram_addr_t length)
>          if (rc) {
>              fprintf(stderr,
>                      "%s failed for "RAM_ADDR_FMT" ("RAM_ADDR_FMT"): %i, 
> %s\n",
> -                    __func__, start, nb_pages, rc, strerror(-rc));
> +                    __func__, start, nb_pages, errno, strerror(errno));

I think this is actually a deeper problem. If QEMU is using compat code, which 
one way or another will go via xencall, then xen_modified_memory() will return 
a hypercall errno. However, if it goes via libxendevicemodel and an up-to-date 
privcmd, then it will return -1 and errno will be set. Thus I think the correct 
fix is not this patch, but a fix in xen_modified_memory() to return -errno and 
a fix in libxendevicemodel and the compat code in libxencntrl to behave 
consistently. It's all rather horrible.

  Paul

>          }
>      }
>  }
> --
> 2.9.5
> 


Reply via email to