diff options
author | Jan Beulich <JBeulich@suse.com> | 2016-11-25 03:06:58 -0700 |
---|---|---|
committer | Stefano Stabellini <sstabellini@kernel.org> | 2016-11-28 11:26:29 -0800 |
commit | e514379de52573131ccc47441787e5fab6dbfc08 (patch) | |
tree | 531630e8bb81699b9e9acbb457e0a3f99b8969b8 /xen-hvm.c | |
parent | f37f29d31488fe36354e59b2fdc4fae83b2cf763 (diff) |
xen: ignore direction in bufioreq handling
There's no way to communicate back read data, so only writes can ever
be usefully specified. Ignore the field, paving the road for eventually
re-using the bit for something else in a few (many?) years time.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Paul Durrant <paul.durrant@citrix.com>
Acked-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
Diffstat (limited to 'xen-hvm.c')
-rw-r--r-- | xen-hvm.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -997,6 +997,7 @@ static int handle_buffered_iopage(XenIOState *state) memset(&req, 0x00, sizeof(req)); req.state = STATE_IOREQ_READY; req.count = 1; + req.dir = IOREQ_WRITE; for (;;) { uint32_t rdptr = buf_page->read_pointer, wrptr; @@ -1014,7 +1015,6 @@ static int handle_buffered_iopage(XenIOState *state) req.size = 1U << buf_req->size; req.addr = buf_req->addr; req.data = buf_req->data; - req.dir = buf_req->dir; req.type = buf_req->type; xen_rmb(); qw = (req.size == 8); @@ -1031,10 +1031,12 @@ static int handle_buffered_iopage(XenIOState *state) handle_ioreq(state, &req); /* Only req.data may get updated by handle_ioreq(), albeit even that - * should not happen as such data would never make it to the guest. + * should not happen as such data would never make it to the guest (we + * can only usefully see writes here after all). */ assert(req.state == STATE_IOREQ_READY); assert(req.count == 1); + assert(req.dir == IOREQ_WRITE); assert(!req.data_is_ptr); atomic_add(&buf_page->read_pointer, qw + 1); |