Module Name:    src
Committed By:   yamaguchi
Date:           Mon May 25 07:37:47 UTC 2020

Modified Files:
        src/sys/dev/pci: virtio.c virtio_pci.c virtiovar.h

Log Message:
Register an interrupt handler for virtqueue to that for pci
to reduce function call


To generate a diff of this commit:
cvs rdiff -u -r1.39 -r1.40 src/sys/dev/pci/virtio.c
cvs rdiff -u -r1.8 -r1.9 src/sys/dev/pci/virtio_pci.c
cvs rdiff -u -r1.14 -r1.15 src/sys/dev/pci/virtiovar.h

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/virtio.c
diff -u src/sys/dev/pci/virtio.c:1.39 src/sys/dev/pci/virtio.c:1.40
--- src/sys/dev/pci/virtio.c:1.39	Mon May 25 07:29:52 2020
+++ src/sys/dev/pci/virtio.c	Mon May 25 07:37:47 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: virtio.c,v 1.39 2020/05/25 07:29:52 yamaguchi Exp $	*/
+/*	$NetBSD: virtio.c,v 1.40 2020/05/25 07:37:47 yamaguchi Exp $	*/
 
 /*
  * Copyright (c) 2010 Minoura Makoto.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: virtio.c,v 1.39 2020/05/25 07:29:52 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: virtio.c,v 1.40 2020/05/25 07:37:47 yamaguchi Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -277,8 +277,9 @@ virtio_vq_intr(struct virtio_softc *sc)
 }
 
 static int
-virtio_vq_mq_intr(struct virtqueue *vq)
+virtio_vq_mq_intr(void *arg)
 {
+	struct virtqueue *vq = arg;
 
 	return virtio_vq_intr_common(vq);
 }

Index: src/sys/dev/pci/virtio_pci.c
diff -u src/sys/dev/pci/virtio_pci.c:1.8 src/sys/dev/pci/virtio_pci.c:1.9
--- src/sys/dev/pci/virtio_pci.c:1.8	Mon May 25 07:29:52 2020
+++ src/sys/dev/pci/virtio_pci.c	Mon May 25 07:37:47 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: virtio_pci.c,v 1.8 2020/05/25 07:29:52 yamaguchi Exp $ */
+/* $NetBSD: virtio_pci.c,v 1.9 2020/05/25 07:37:47 yamaguchi Exp $ */
 
 /*
  * Copyright (c) 2010 Minoura Makoto.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: virtio_pci.c,v 1.8 2020/05/25 07:29:52 yamaguchi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: virtio_pci.c,v 1.9 2020/05/25 07:37:47 yamaguchi Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -80,7 +80,6 @@ static void	virtio_pci_free_interrupts(s
 
 static int	virtio_pci_intr(void *arg);
 static int	virtio_pci_msix_queue_intr(void *);
-static int	virtio_pci_msix_vq_intr(void *);
 static int	virtio_pci_msix_config_intr(void *);
 static int	virtio_pci_setup_msix_vectors(struct virtio_softc *);
 static int	virtio_pci_setup_msix_interrupts(struct virtio_softc *,
@@ -511,6 +510,7 @@ virtio_pci_setup_msix_interrupts(struct 
 	struct virtio_pci_softc * const psc = (struct virtio_pci_softc *)sc;
 	device_t self = sc->sc_dev;
 	pci_chipset_tag_t pc = pa->pa_pc;
+	struct virtqueue *vq;
 	char intrbuf[PCI_INTRSTR_LEN];
 	char intr_xname[INTRDEVNAMEBUF];
 	char const *intrstr;
@@ -534,6 +534,7 @@ virtio_pci_setup_msix_interrupts(struct 
 	if (sc->sc_child_mq) {
 		for (qid = 0; qid < sc->sc_nvqs; qid++) {
 			n = idx + qid;
+			vq = &sc->sc_vqs[qid];
 
 			snprintf(intr_xname, sizeof(intr_xname), "%s vq#%d",
 			    device_xname(sc->sc_dev), qid);
@@ -544,8 +545,7 @@ virtio_pci_setup_msix_interrupts(struct 
 			}
 
 			psc->sc_ihs[n] = pci_intr_establish_xname(pc, psc->sc_ihp[n],
-			    sc->sc_ipl, virtio_pci_msix_vq_intr, &sc->sc_vqs[qid],
-			    intr_xname);
+			    sc->sc_ipl, vq->vq_intrhand, vq, intr_xname);
 			if (psc->sc_ihs[n] == NULL) {
 				aprint_error_dev(self, "couldn't establish MSI-X for a vq\n");
 				goto error;
@@ -798,15 +798,6 @@ virtio_pci_msix_queue_intr(void *arg)
 }
 
 static int
-virtio_pci_msix_vq_intr(void *arg)
-{
-	struct virtqueue *vq = arg;
-
-	KASSERT(vq->vq_intrhand != NULL);
-	return vq->vq_intrhand(vq);
-}
-
-static int
 virtio_pci_msix_config_intr(void *arg)
 {
 	struct virtio_softc *sc = arg;

Index: src/sys/dev/pci/virtiovar.h
diff -u src/sys/dev/pci/virtiovar.h:1.14 src/sys/dev/pci/virtiovar.h:1.15
--- src/sys/dev/pci/virtiovar.h:1.14	Mon May 25 07:29:52 2020
+++ src/sys/dev/pci/virtiovar.h	Mon May 25 07:37:47 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: virtiovar.h,v 1.14 2020/05/25 07:29:52 yamaguchi Exp $	*/
+/*	$NetBSD: virtiovar.h,v 1.15 2020/05/25 07:37:47 yamaguchi Exp $	*/
 
 /*
  * Copyright (c) 2010 Minoura Makoto.
@@ -117,7 +117,7 @@ struct virtqueue {
 	/* interrupt handler */
 	int			(*vq_done)(struct virtqueue*);
 	void			*vq_done_ctx;
-	int			(*vq_intrhand)(struct virtqueue*);
+	int			(*vq_intrhand)(void *);
 };
 
 struct virtio_attach_args {

Reply via email to