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 {