Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 3 Feb 2013 23:33:52 +0000 (UTC)
From:      Bryan Venteicher <bryanv@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r246305 - in projects/virtio/sys/dev/virtio: . pci
Message-ID:  <201302032333.r13NXq6l087757@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bryanv
Date: Sun Feb  3 23:33:51 2013
New Revision: 246305
URL: http://svnweb.freebsd.org/changeset/base/246305

Log:
  virtio_pci: Move no interrupt check into the PCI interrupt handlers
  
  Approved by:	grehan (implicit)

Modified:
  projects/virtio/sys/dev/virtio/pci/virtio_pci.c
  projects/virtio/sys/dev/virtio/virtqueue.c

Modified: projects/virtio/sys/dev/virtio/pci/virtio_pci.c
==============================================================================
--- projects/virtio/sys/dev/virtio/pci/virtio_pci.c	Sun Feb  3 23:32:56 2013	(r246304)
+++ projects/virtio/sys/dev/virtio/pci/virtio_pci.c	Sun Feb  3 23:33:51 2013	(r246305)
@@ -1252,8 +1252,10 @@ vtpci_legacy_intr(void *xsc)
 		vtpci_config_intr(sc);
 
 	if (isr & VIRTIO_PCI_ISR_INTR) {
-		for (i = 0; i < sc->vtpci_nvqs; i++, vqx++)
-			virtqueue_intr(vqx->vtv_vq);
+		for (i = 0; i < sc->vtpci_nvqs; i++, vqx++) {
+			if (vqx->vtv_no_intr == 0)
+				virtqueue_intr(vqx->vtv_vq);
+		}
 	}
 }
 
@@ -1268,8 +1270,10 @@ vtpci_vq_shared_intr_filter(void *xsc)
 	sc = xsc;
 	vqx = &sc->vtpci_vqs[0];
 
-	for (i = 0; i < sc->vtpci_nvqs; i++, vqx++)
-		rc |= virtqueue_intr_filter(vqx->vtv_vq);
+	for (i = 0; i < sc->vtpci_nvqs; i++, vqx++) {
+		if (vqx->vtv_no_intr == 0)
+			rc |= virtqueue_intr_filter(vqx->vtv_vq);
+	}
 
 	return (rc ? FILTER_SCHEDULE_THREAD : FILTER_STRAY);
 }
@@ -1284,8 +1288,10 @@ vtpci_vq_shared_intr(void *xsc)
 	sc = xsc;
 	vqx = &sc->vtpci_vqs[0];
 
-	for (i = 0; i < sc->vtpci_nvqs; i++, vqx++)
-		virtqueue_intr(vqx->vtv_vq);
+	for (i = 0; i < sc->vtpci_nvqs; i++, vqx++) {
+		if (vqx->vtv_no_intr == 0)
+			virtqueue_intr(vqx->vtv_vq);
+	}
 }
 
 static int

Modified: projects/virtio/sys/dev/virtio/virtqueue.c
==============================================================================
--- projects/virtio/sys/dev/virtio/virtqueue.c	Sun Feb  3 23:32:56 2013	(r246304)
+++ projects/virtio/sys/dev/virtio/virtqueue.c	Sun Feb  3 23:33:51 2013	(r246305)
@@ -417,8 +417,6 @@ int
 virtqueue_intr_filter(struct virtqueue *vq)
 {
 
-	if (__predict_false(vq->vq_intrhand == NULL))
-		return (0);
 	if (vq->vq_used_cons_idx == vq->vq_ring.used->idx)
 		return (0);
 
@@ -431,8 +429,7 @@ void
 virtqueue_intr(struct virtqueue *vq)
 {
 
-	if (__predict_true(vq->vq_intrhand != NULL))
-		vq->vq_intrhand(vq->vq_intrhand_arg);
+	vq->vq_intrhand(vq->vq_intrhand_arg);
 }
 
 int



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