Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 May 2015 21:24:10 +0000 (UTC)
From:      Peter Grehan <grehan@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r282784 - head/usr.sbin/bhyve
Message-ID:  <201505112124.t4BLOAC9093940@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: grehan
Date: Mon May 11 21:24:10 2015
New Revision: 282784
URL: https://svnweb.freebsd.org/changeset/base/282784

Log:
  Handling indirect descriptors is a capability of the host and
  not one that needs to be negotiated. Use the host capabilities
  field and not the negotiated field when verifying that indirect
  descriptors are supported.
  
  Found with the Redhat Windows viostor driver, which clears
  the indirect capability in the negotiated caps and then starts
  using them.
  
  Reported and tested by: Leon Dang (ldang@nahannisys.com)
  MFC after:   2 weeks

Modified:
  head/usr.sbin/bhyve/virtio.c

Modified: head/usr.sbin/bhyve/virtio.c
==============================================================================
--- head/usr.sbin/bhyve/virtio.c	Mon May 11 20:58:05 2015	(r282783)
+++ head/usr.sbin/bhyve/virtio.c	Mon May 11 21:24:10 2015	(r282784)
@@ -316,7 +316,7 @@ vq_getchain(struct vqueue_info *vq, uint
 		if ((vdir->vd_flags & VRING_DESC_F_INDIRECT) == 0) {
 			_vq_record(i, vdir, ctx, iov, n_iov, flags);
 			i++;
-		} else if ((vs->vs_negotiated_caps &
+		} else if ((vs->vs_vc->vc_hv_caps &
 		    VIRTIO_RING_F_INDIRECT_DESC) == 0) {
 			fprintf(stderr,
 			    "%s: descriptor has forbidden INDIRECT flag, "



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505112124.t4BLOAC9093940>