From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37068) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c9TnK-0002zo-J3 for qemu-devel@nongnu.org; Wed, 23 Nov 2016 04:24:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c9TnH-0005o9-C4 for qemu-devel@nongnu.org; Wed, 23 Nov 2016 04:24:46 -0500 Received: from prv-mh.provo.novell.com ([137.65.248.74]:46600) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c9TnH-0005nr-2X for qemu-devel@nongnu.org; Wed, 23 Nov 2016 04:24:43 -0500 Message-Id: <58356E680200007800121299@prv-mh.provo.novell.com> Date: Wed, 23 Nov 2016 02:24:40 -0700 From: "Jan Beulich" References: <58356D610200007800121289@prv-mh.provo.novell.com> In-Reply-To: <58356D610200007800121289@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Subject: [Qemu-devel] [PATCH 2/3] xen: slightly simplify bufioreq handling List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: anthony.perard@citrix.com, Paul Durrant , Stefano Stabellini , xen-devel There's no point setting fields always receiving the same value on each iteration, as handle_ioreq() doesn't alter them anyway. Set state and count once ahead of the loop, drop the redundant clearing of data_is_ptr, and avoid the meaningless setting of df altogether. Also avoid doing an unsigned long calculation of size when the field to be initialized is only 32 bits wide (and the shift value in the range 0...3). Signed-off-by: Jan Beulich --- a/xen-hvm.c +++ b/xen-hvm.c @@ -995,6 +995,8 @@ static int handle_buffered_iopage(XenIOS } =20 memset(&req, 0x00, sizeof(req)); + req.state =3D STATE_IOREQ_READY; + req.count =3D 1; =20 for (;;) { uint32_t rdptr =3D buf_page->read_pointer, wrptr; @@ -1009,15 +1011,11 @@ static int handle_buffered_iopage(XenIOS break; } buf_req =3D &buf_page->buf_ioreq[rdptr % IOREQ_BUFFER_SLOT_NUM]; - req.size =3D 1UL << buf_req->size; - req.count =3D 1; + req.size =3D 1U << buf_req->size; req.addr =3D buf_req->addr; req.data =3D buf_req->data; - req.state =3D STATE_IOREQ_READY; req.dir =3D buf_req->dir; - req.df =3D 1; req.type =3D buf_req->type; - req.data_is_ptr =3D 0; xen_rmb(); qw =3D (req.size =3D=3D 8); if (qw) { @@ -1032,6 +1030,13 @@ static int handle_buffered_iopage(XenIOS =20 handle_ioreq(state, &req); =20 + /* 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. + */ + assert(req.state =3D=3D STATE_IOREQ_READY); + assert(req.count =3D=3D 1); + assert(!req.data_is_ptr); + atomic_add(&buf_page->read_pointer, qw + 1); } =20 From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jan Beulich" Subject: [PATCH 2/3] xen: slightly simplify bufioreq handling Date: Wed, 23 Nov 2016 02:24:40 -0700 Message-ID: <58356E680200007800121299@prv-mh.provo.novell.com> References: <58356D610200007800121289@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c9TnJ-0000qU-ON for xen-devel@lists.xenproject.org; Wed, 23 Nov 2016 09:24:45 +0000 In-Reply-To: <58356D610200007800121289@prv-mh.provo.novell.com> Content-Disposition: inline List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: anthony.perard@citrix.com, xen-devel , Paul Durrant , Stefano Stabellini List-Id: xen-devel@lists.xenproject.org VGhlcmUncyBubyBwb2ludCBzZXR0aW5nIGZpZWxkcyBhbHdheXMgcmVjZWl2aW5nIHRoZSBzYW1l IHZhbHVlIG9uIGVhY2gKaXRlcmF0aW9uLCBhcyBoYW5kbGVfaW9yZXEoKSBkb2Vzbid0IGFsdGVy IHRoZW0gYW55d2F5LiBTZXQgc3RhdGUgYW5kCmNvdW50IG9uY2UgYWhlYWQgb2YgdGhlIGxvb3As IGRyb3AgdGhlIHJlZHVuZGFudCBjbGVhcmluZyBvZgpkYXRhX2lzX3B0ciwgYW5kIGF2b2lkIHRo ZSBtZWFuaW5nbGVzcyBzZXR0aW5nIG9mIGRmIGFsdG9nZXRoZXIuCgpBbHNvIGF2b2lkIGRvaW5n IGFuIHVuc2lnbmVkIGxvbmcgY2FsY3VsYXRpb24gb2Ygc2l6ZSB3aGVuIHRoZSBmaWVsZCB0bwpi ZSBpbml0aWFsaXplZCBpcyBvbmx5IDMyIGJpdHMgd2lkZSAoYW5kIHRoZSBzaGlmdCB2YWx1ZSBp biB0aGUgcmFuZ2UKMC4uLjMpLgoKU2lnbmVkLW9mZi1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNo QHN1c2UuY29tPgoKLS0tIGEveGVuLWh2bS5jCisrKyBiL3hlbi1odm0uYwpAQCAtOTk1LDYgKzk5 NSw4IEBAIHN0YXRpYyBpbnQgaGFuZGxlX2J1ZmZlcmVkX2lvcGFnZShYZW5JT1MKICAgICB9CiAK ICAgICBtZW1zZXQoJnJlcSwgMHgwMCwgc2l6ZW9mKHJlcSkpOworICAgIHJlcS5zdGF0ZSA9IFNU QVRFX0lPUkVRX1JFQURZOworICAgIHJlcS5jb3VudCA9IDE7CiAKICAgICBmb3IgKDs7KSB7CiAg ICAgICAgIHVpbnQzMl90IHJkcHRyID0gYnVmX3BhZ2UtPnJlYWRfcG9pbnRlciwgd3JwdHI7CkBA IC0xMDA5LDE1ICsxMDExLDExIEBAIHN0YXRpYyBpbnQgaGFuZGxlX2J1ZmZlcmVkX2lvcGFnZShY ZW5JT1MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJ1Zl9yZXEgPSAm YnVmX3BhZ2UtPmJ1Zl9pb3JlcVtyZHB0ciAlIElPUkVRX0JVRkZFUl9TTE9UX05VTV07Ci0gICAg ICAgIHJlcS5zaXplID0gMVVMIDw8IGJ1Zl9yZXEtPnNpemU7Ci0gICAgICAgIHJlcS5jb3VudCA9 IDE7CisgICAgICAgIHJlcS5zaXplID0gMVUgPDwgYnVmX3JlcS0+c2l6ZTsKICAgICAgICAgcmVx LmFkZHIgPSBidWZfcmVxLT5hZGRyOwogICAgICAgICByZXEuZGF0YSA9IGJ1Zl9yZXEtPmRhdGE7 Ci0gICAgICAgIHJlcS5zdGF0ZSA9IFNUQVRFX0lPUkVRX1JFQURZOwogICAgICAgICByZXEuZGly ID0gYnVmX3JlcS0+ZGlyOwotICAgICAgICByZXEuZGYgPSAxOwogICAgICAgICByZXEudHlwZSA9 IGJ1Zl9yZXEtPnR5cGU7Ci0gICAgICAgIHJlcS5kYXRhX2lzX3B0ciA9IDA7CiAgICAgICAgIHhl bl9ybWIoKTsKICAgICAgICAgcXcgPSAocmVxLnNpemUgPT0gOCk7CiAgICAgICAgIGlmIChxdykg ewpAQCAtMTAzMiw2ICsxMDMwLDEzIEBAIHN0YXRpYyBpbnQgaGFuZGxlX2J1ZmZlcmVkX2lvcGFn ZShYZW5JT1MKIAogICAgICAgICBoYW5kbGVfaW9yZXEoc3RhdGUsICZyZXEpOwogCisgICAgICAg IC8qIE9ubHkgcmVxLmRhdGEgbWF5IGdldCB1cGRhdGVkIGJ5IGhhbmRsZV9pb3JlcSgpLCBhbGJl aXQgZXZlbiB0aGF0CisgICAgICAgICAqIHNob3VsZCBub3QgaGFwcGVuIGFzIHN1Y2ggZGF0YSB3 b3VsZCBuZXZlciBtYWtlIGl0IHRvIHRoZSBndWVzdC4KKyAgICAgICAgICovCisgICAgICAgIGFz c2VydChyZXEuc3RhdGUgPT0gU1RBVEVfSU9SRVFfUkVBRFkpOworICAgICAgICBhc3NlcnQocmVx LmNvdW50ID09IDEpOworICAgICAgICBhc3NlcnQoIXJlcS5kYXRhX2lzX3B0cik7CisKICAgICAg ICAgYXRvbWljX2FkZCgmYnVmX3BhZ2UtPnJlYWRfcG9pbnRlciwgcXcgKyAxKTsKICAgICB9CiAK CgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=