> -----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 >