Module Name:    src
Committed By:   jdolecek
Date:           Sat May 13 20:17:43 UTC 2017

Modified Files:
        src/sys/dev/pci: vioscsi.c

Log Message:
fix number of maximum segments in the queue allocation so that
MAXPHYS-sized tranfer fits inside the indirect descriptor; avoids the
!indirect path in virtio_enqueue_reserve() for these transfers,
which runs out of the vq_entries and triggers XS_RESOURCE_SHORTAGE for
bigger number of outstanding tranfers

fixes PR kern/52199 by MB


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/dev/pci/vioscsi.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/pci/vioscsi.c
diff -u src/sys/dev/pci/vioscsi.c:1.16 src/sys/dev/pci/vioscsi.c:1.17
--- src/sys/dev/pci/vioscsi.c:1.16	Sat Mar 25 23:58:35 2017
+++ src/sys/dev/pci/vioscsi.c	Sat May 13 20:17:42 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vioscsi.c,v 1.16 2017/03/25 23:58:35 christos Exp $	*/
+/*	$NetBSD: vioscsi.c,v 1.17 2017/05/13 20:17:42 jdolecek Exp $	*/
 /*	$OpenBSD: vioscsi.c,v 1.3 2015/03/14 03:38:49 jsg Exp $	*/
 
 /*
@@ -18,7 +18,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vioscsi.c,v 1.16 2017/03/25 23:58:35 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vioscsi.c,v 1.17 2017/05/13 20:17:42 jdolecek Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -154,7 +154,7 @@ vioscsi_attach(device_t parent, device_t
 
 	for(i=0; i < __arraycount(sc->sc_vqs); i++) {
 		rv = virtio_alloc_vq(vsc, &sc->sc_vqs[i], i, MAXPHYS,
-		    1 + howmany(MAXPHYS, NBPG),
+		    VIRTIO_SCSI_MIN_SEGMENTS + howmany(MAXPHYS, NBPG),
 		    vioscsi_vq_names[i]);
 		if (rv) {
 			aprint_error_dev(sc->sc_dev,

Reply via email to