Module Name: src Committed By: martin Date: Tue May 31 14:07:52 UTC 2022
Modified Files: src/sys/dev/pci/ixgbe [netbsd-8]: ix_txrx.c ixgbe.c ixgbe.h ixv.c Log Message: Pull up following revision(s) (requested by msaitoh in ticket #1745): sys/dev/pci/ixgbe/ix_txrx.c: revision 1.98 sys/dev/pci/ixgbe/ixv.c: revision 1.181 sys/dev/pci/ixgbe/ixgbe.c: revision 1.315 sys/dev/pci/ixgbe/ixgbe.h: revision 1.86 bus_dmamem_unmap() before bus_dmamem_free(), otherwise we may give back meomry which is still (and will stay) mapped. Fixes one instance of "panic: HYPERVISOR_mmu_update failed" on Xen. There may be others. Fix a bug that the legacy interrupt doesn't work when MSI-X allocation failed. Fixes PR kern/56857. Remove unused adapter->msix_mem. To generate a diff of this commit: cvs rdiff -u -r1.24.2.24 -r1.24.2.25 src/sys/dev/pci/ixgbe/ix_txrx.c cvs rdiff -u -r1.88.2.50 -r1.88.2.51 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.24.6.24 -r1.24.6.25 src/sys/dev/pci/ixgbe/ixgbe.h cvs rdiff -u -r1.56.2.37 -r1.56.2.38 src/sys/dev/pci/ixgbe/ixv.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/ixgbe/ix_txrx.c diff -u src/sys/dev/pci/ixgbe/ix_txrx.c:1.24.2.24 src/sys/dev/pci/ixgbe/ix_txrx.c:1.24.2.25 --- src/sys/dev/pci/ixgbe/ix_txrx.c:1.24.2.24 Mon May 30 17:05:51 2022 +++ src/sys/dev/pci/ixgbe/ix_txrx.c Tue May 31 14:07:51 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ix_txrx.c,v 1.24.2.24 2022/05/30 17:05:51 martin Exp $ */ +/* $NetBSD: ix_txrx.c,v 1.24.2.25 2022/05/31 14:07:51 martin Exp $ */ /****************************************************************************** @@ -64,7 +64,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.24.2.24 2022/05/30 17:05:51 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ix_txrx.c,v 1.24.2.25 2022/05/31 14:07:51 martin Exp $"); #include "opt_inet.h" #include "opt_inet6.h" @@ -2322,6 +2322,7 @@ ixgbe_dma_free(struct adapter *adapter, bus_dmamap_sync(dma->dma_tag->dt_dmat, dma->dma_map, 0, dma->dma_size, BUS_DMASYNC_POSTREAD | BUS_DMASYNC_POSTWRITE); ixgbe_dmamap_unload(dma->dma_tag, dma->dma_map); + bus_dmamem_unmap(dma->dma_tag->dt_dmat, dma->dma_vaddr, dma->dma_size); bus_dmamem_free(dma->dma_tag->dt_dmat, &dma->dma_seg, 1); ixgbe_dma_tag_destroy(dma->dma_tag); } /* ixgbe_dma_free */ Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.88.2.50 src/sys/dev/pci/ixgbe/ixgbe.c:1.88.2.51 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.88.2.50 Mon May 30 17:05:51 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.c Tue May 31 14:07:51 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.88.2.50 2022/05/30 17:05:51 martin Exp $ */ +/* $NetBSD: ixgbe.c,v 1.88.2.51 2022/05/31 14:07:51 martin Exp $ */ /****************************************************************************** @@ -64,7 +64,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.88.2.50 2022/05/30 17:05:51 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixgbe.c,v 1.88.2.51 2022/05/31 14:07:51 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1091,7 +1091,6 @@ ixgbe_attach(device_t parent, device_t d ixgbe_free_queues(adapter); /* Fallback to legacy interrupt */ - adapter->feat_en &= ~IXGBE_FEATURE_MSIX; if (adapter->feat_cap & IXGBE_FEATURE_MSI) adapter->feat_en |= IXGBE_FEATURE_MSI; adapter->num_queues = 1; @@ -5033,7 +5032,7 @@ ixgbe_enable_intr(struct adapter *adapte IXGBE_WRITE_REG(hw, IXGBE_EIMS, mask); /* With MSI-X we use auto clear */ - if (adapter->msix_mem) { + if ((adapter->feat_en & IXGBE_FEATURE_MSIX) != 0) { /* * We use auto clear for RTX_QUEUE only. Don't use other * interrupts (e.g. link interrupt). BTW, we don't use @@ -5065,7 +5064,7 @@ ixgbe_disable_intr_internal(struct adapt /* disable interrupts other than queues */ IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIMC, ~IXGBE_EIMC_RTX_QUEUE); - if (adapter->msix_mem) + if ((adapter->feat_en & IXGBE_FEATURE_MSIX) != 0) IXGBE_WRITE_REG(&adapter->hw, IXGBE_EIAC, 0); for (int i = 0; i < adapter->num_queues; i++, que++) @@ -6710,6 +6709,7 @@ ixgbe_allocate_msix(struct adapter *adap adapter->osdep.nintrs) != 0) { aprint_error_dev(dev, "failed to allocate MSI-X interrupt\n"); + adapter->feat_en &= ~IXGBE_FEATURE_MSIX; return (ENXIO); } @@ -6909,7 +6909,7 @@ ixgbe_configure_interrupts(struct adapte if (msgs < 2) goto msi; - adapter->msix_mem = (void *)1; /* XXX */ + adapter->feat_en |= IXGBE_FEATURE_MSIX; /* Figure out a reasonable auto config value */ queues = (ncpu > (msgs - 1)) ? (msgs - 1) : ncpu; @@ -6963,7 +6963,7 @@ msi: adapter->feat_en &= ~IXGBE_FEATURE_SRIOV; msgs = pci_msi_count(adapter->osdep.pc, adapter->osdep.tag); - adapter->msix_mem = NULL; /* XXX */ + adapter->feat_en &= ~IXGBE_FEATURE_MSIX; if (msgs > 1) msgs = 1; if (msgs != 0) { Index: src/sys/dev/pci/ixgbe/ixgbe.h diff -u src/sys/dev/pci/ixgbe/ixgbe.h:1.24.6.24 src/sys/dev/pci/ixgbe/ixgbe.h:1.24.6.25 --- src/sys/dev/pci/ixgbe/ixgbe.h:1.24.6.24 Sun Jan 30 16:06:35 2022 +++ src/sys/dev/pci/ixgbe/ixgbe.h Tue May 31 14:07:52 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.h,v 1.24.6.24 2022/01/30 16:06:35 martin Exp $ */ +/* $NetBSD: ixgbe.h,v 1.24.6.25 2022/05/31 14:07:52 martin Exp $ */ /****************************************************************************** SPDX-License-Identifier: BSD-3-Clause @@ -479,7 +479,6 @@ struct adapter { struct if_percpuq *ipq; /* softint-based input queues */ struct resource *pci_mem; - struct resource *msix_mem; /* NetBSD: Interrupt resources are in osdep */ Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.56.2.37 src/sys/dev/pci/ixgbe/ixv.c:1.56.2.38 --- src/sys/dev/pci/ixgbe/ixv.c:1.56.2.37 Mon May 30 17:05:51 2022 +++ src/sys/dev/pci/ixgbe/ixv.c Tue May 31 14:07:51 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: ixv.c,v 1.56.2.37 2022/05/30 17:05:51 martin Exp $ */ +/* $NetBSD: ixv.c,v 1.56.2.38 2022/05/31 14:07:51 martin Exp $ */ /****************************************************************************** @@ -35,7 +35,7 @@ /*$FreeBSD: head/sys/dev/ixgbe/if_ixv.c 331224 2018-03-19 20:55:05Z erj $*/ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.56.2.37 2022/05/30 17:05:51 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ixv.c,v 1.56.2.38 2022/05/31 14:07:51 martin Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -3401,7 +3401,6 @@ ixv_configure_interrupts(struct adapter return -1; } - adapter->msix_mem = (void *)1; /* XXX */ aprint_normal_dev(dev, "Using MSI-X interrupts with %d vectors\n", msgs); adapter->num_queues = queues;