[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] xen/HVM: atomically access pointers in bufio
From: |
Stefano Stabellini |
Subject: |
Re: [Qemu-devel] [PATCH v2] xen/HVM: atomically access pointers in bufioreq handling |
Date: |
Thu, 23 Jul 2015 11:18:59 +0100 |
User-agent: |
Alpine 2.02 (DEB 1266 2009-07-14) |
On Thu, 23 Jul 2015, Jan Beulich wrote:
> The number of slots per page being 511 (i.e. not a power of two) means
> that the (32-bit) read and write indexes going beyond 2^32 will likely
> disturb operation. The hypervisor side gets I/O req server creation
> extended so we can indicate that we're using suitable atomic accesses
> where needed, allowing it to atomically canonicalize both pointers when
> both have gone through at least one cycle.
>
> The Xen side counterpart (which is not a functional prereq to this
> change, albeit a build one) went in already (commit b7007bc6f9).
>
> Signed-off-by: Jan Beulich <address@hidden>
>
> --- unstable.orig/qemu/upstream/include/hw/xen/xen_common.h 2015-03-31
> 15:58:04.000000000 +0200
> +++ unstable/qemu/upstream/include/hw/xen/xen_common.h 2015-06-15
> 08:24:28.000000000 +0200
> @@ -370,7 +370,8 @@ static inline void xen_unmap_pcidev(XenX
> static inline int xen_create_ioreq_server(XenXC xc, domid_t dom,
> ioservid_t *ioservid)
> {
> - int rc = xc_hvm_create_ioreq_server(xc, dom, 1, ioservid);
> + int rc = xc_hvm_create_ioreq_server(xc, dom,
> HVM_IOREQSRV_BUFIOREQ_ATOMIC,
> + ioservid);
>
I am sorry that I noticed this just now: HVM_IOREQSRV_BUFIOREQ_ATOMIC is
not defined on older versions of Xen and QEMU still needs to build
against them. This change breaks compilation against Xen 4.5 for example.
Please define HVM_IOREQSRV_BUFIOREQ_ATOMIC in
include/hw/xen/xen_common.h when Xen < 4.6. You might have to
introduce a test in configure to detect Xen 4.6, like the others at
configure:1869.