It should be placed before first time producer and consumer are used. Signed-off-by: Wei Liu <wei.l...@citrix.com> --- Cc: Stefano Stabellini <sstabell...@kernel.org> Cc: Anthony Perard <anthony.per...@citrix.com>
Backport candidate to our own tree. --- hw/display/xenfb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index 9866dfd..7f4fad7 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -775,10 +775,10 @@ static void xenfb_handle_events(struct XenFB *xenfb) prod = page->out_prod; out_cons = page->out_cons; + xen_rmb(); if (prod - out_cons > XENFB_OUT_RING_LEN) { return; } - xen_rmb(); /* ensure we see ring contents up to prod */ for (cons = out_cons; cons != prod; cons++) { union xenfb_out_event *event = &XENFB_OUT_RING_REF(page, cons); uint8_t type = event->type; -- 2.1.4