From nobody Tue Nov 29 17:40:23 2022 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NM8kH3Ylcz4jMMK; Tue, 29 Nov 2022 17:40:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NM8kH2gJPz4byR; Tue, 29 Nov 2022 17:40:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1669743623; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xm9uMW4Fg5SoYDUUoyk+6rGkpgVvwDnX5DNs4DsGYog=; b=I0oApjIh0rhD3hNncGsNrKbIqtuuyoRy56//ULxaAoa0lslj9pD4pGeuQanglcx0Qg/Pjk r5vTugqDRCfMqK4KL9Z7/ugpIu6GmekFyFc/VMlG9FteRrl2QfYDCUT1AnD2WuVCSJQ2x0 dEGHhjGerqy9b40Ed0K5k0bSWNAk7DF3c0NJKZ9FPek4OlITUTrdz2Mr73QRN2SlQDPEnE RoiGST093tvp/AU8Hw/eqq6exybgNND0sI3KHkymK91H249TyGEyqDoKQ4qBAbHl4VCWv/ QBo7Cdv5LuQVmQsQeVB37tmxlCjIBHpfRcIFn1Rylef0SalAs+JaEgJFAoa9XQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1669743623; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=xm9uMW4Fg5SoYDUUoyk+6rGkpgVvwDnX5DNs4DsGYog=; b=nhISpZF+bXEP2Q2HXp4dEk/ScabsrQqzWflr2hRQzIl16PAT/XkNjRgNPs3I4gWj+ckDx2 Jy+64VcpbNQvRyowtHjqhInJ2v6qwWdB2ZEtVxqzeFZOSX9lzDhyrcoyx5Ec/12qpfQt52 0adQ+5Ork3yuzdiP1xHFZvmhp8Fy8BC3urIsvrwTOtdMZcosY6NSOnel7OWBkcTNKU8kZP vVdc6pztZ39YrgAujiR/kjLDy4XuIjDIB0Kem/jyjC1cc57RHyuKz/rHyxyOyqOGpRoVeV /0E1M8GuOr/o4ydd2sFIUt4XtQqtdl225bdTghA0YIx3ntgnez6ncgitrDNmbg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1669743623; a=rsa-sha256; cv=none; b=f/ZBQtHXauvJKkRotMNLG94nTEWksqnjhLaiKdoRG1axLG8EGCLKZbEipKpjuL4HtmyK09 cR4J8qMw+f78chMiDz273AI/VXOtWz7bnlbN4V+2lAxblWxhx0WUb/ch66AntP/RF4DAk7 vUtTC60+5T/crGwwS1dWFLmlBIqVXmxvI1L7shqvuKmHFr4141WZxun+oUrCID1/Onbsa6 RNoMIzrsbBYvnJvrErGUXATchpTrXxun+AuP/51V08P9H4Vb1dUZa0+Zq7YqNDaBlFb2Yv A4IK2SEAsNtia+ebPMNUpOOIPBWsbz/YeO9j1IOwTY262Q548LIpN0ybw0fd/A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4NM8kH1Z3HzQb5; Tue, 29 Nov 2022 17:40:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2ATHeNVv051713; Tue, 29 Nov 2022 17:40:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2ATHeNTl051712; Tue, 29 Nov 2022 17:40:23 GMT (envelope-from git) Date: Tue, 29 Nov 2022 17:40:23 GMT Message-Id: <202211291740.2ATHeNTl051712@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 37b52f666115 - stable/13 - bhyve: Drop volatile qualifiers from virtio rings List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 37b52f666115cc24e9bc5165d2d17be0338c3b8b Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=37b52f666115cc24e9bc5165d2d17be0338c3b8b commit 37b52f666115cc24e9bc5165d2d17be0338c3b8b Author: Mark Johnston AuthorDate: 2022-11-11 15:02:10 +0000 Commit: Mark Johnston CommitDate: 2022-11-29 17:40:13 +0000 bhyve: Drop volatile qualifiers from virtio rings The qualifiers are there presumably because these rings are mapped into the guest, but they do not appear to be required for correctness, and bhyve generally doesn't qualify accesses to guest memory this way. Moreover, the qualifiers are discarded by snapshot code, causing clang to emit warnings. Just stop using volatile here. MFC after: 2 weeks Reviewed by: corvink, jhb Differential Revision: https://reviews.freebsd.org/D37291 (cherry picked from commit 593200c23b57ea6977bf5084b91fc5c63dacbb80) --- usr.sbin/bhyve/virtio.c | 13 ++++++------- usr.sbin/bhyve/virtio.h | 8 ++++---- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/usr.sbin/bhyve/virtio.c b/usr.sbin/bhyve/virtio.c index a63e85e6692f..b55b36bb5978 100644 --- a/usr.sbin/bhyve/virtio.c +++ b/usr.sbin/bhyve/virtio.c @@ -214,10 +214,9 @@ vi_vq_init(struct virtio_softc *vs, uint32_t pfn) * descriptor. */ static inline void -_vq_record(int i, volatile struct vring_desc *vd, - struct vmctx *ctx, struct iovec *iov, int n_iov, - struct vi_req *reqp) { - +_vq_record(int i, struct vring_desc *vd, struct vmctx *ctx, struct iovec *iov, + int n_iov, struct vi_req *reqp) +{ if (i >= n_iov) return; iov[i].iov_base = paddr_guest2host(ctx, vd->addr, vd->len); @@ -271,7 +270,7 @@ vq_getchain(struct vqueue_info *vq, struct iovec *iov, int niov, u_int ndesc, n_indir; u_int idx, next; struct vi_req req; - volatile struct vring_desc *vdir, *vindir, *vp; + struct vring_desc *vdir, *vindir, *vp; struct vmctx *ctx; struct virtio_softc *vs; const char *name; @@ -409,8 +408,8 @@ vq_retchains(struct vqueue_info *vq, uint16_t n_chains) void vq_relchain_prepare(struct vqueue_info *vq, uint16_t idx, uint32_t iolen) { - volatile struct vring_used *vuh; - volatile struct vring_used_elem *vue; + struct vring_used *vuh; + struct vring_used_elem *vue; uint16_t mask; /* diff --git a/usr.sbin/bhyve/virtio.h b/usr.sbin/bhyve/virtio.h index a14765e49764..51c57da8c46d 100644 --- a/usr.sbin/bhyve/virtio.h +++ b/usr.sbin/bhyve/virtio.h @@ -298,14 +298,14 @@ struct vqueue_info { uint32_t vq_pfn; /* PFN of virt queue (not shifted!) */ - volatile struct vring_desc *vq_desc; /* descriptor array */ - volatile struct vring_avail *vq_avail; /* the "avail" ring */ - volatile struct vring_used *vq_used; /* the "used" ring */ + struct vring_desc *vq_desc; /* descriptor array */ + struct vring_avail *vq_avail; /* the "avail" ring */ + struct vring_used *vq_used; /* the "used" ring */ }; /* as noted above, these are sort of backwards, name-wise */ #define VQ_AVAIL_EVENT_IDX(vq) \ - (*(volatile uint16_t *)&(vq)->vq_used->ring[(vq)->vq_qsize]) + (*(uint16_t *)&(vq)->vq_used->ring[(vq)->vq_qsize]) #define VQ_USED_EVENT_IDX(vq) \ ((vq)->vq_avail->ring[(vq)->vq_qsize])