svn commit: r327013 - head/sys/net

Stephen Hurd shurd at FreeBSD.org
Fri Dec 22 18:34:43 UTC 2017


Oleg Bulyzhin wrote:
> On Wed, Dec 20, 2017 at 01:03:34AM +0000, Stephen Hurd wrote:
>> Author: shurd
>> Date: Wed Dec 20 01:03:34 2017
>> New Revision: 327013
>> URL: https://svnweb.freebsd.org/changeset/base/327013
>>
>> Log:
>>    Support attaching tx queues to cpus
>>    
>>    This will attempt to use a different thread/core on the same L2
>>    cache when possible, or use the same cpu as the rx thread when not.
>>    If SMP isn't enabled, don't go looking for cores to use. This is mostly
>>    useful when using shared TX/RX queues.
>>    
>>    Reviewed by:	sbruno
>>    Sponsored by:	Limelight Networks
>>    Differential Revision:	https://reviews.freebsd.org/D12446
> i'm getting this panic:
>
> [skipped]
> ix0: <Intel(R) PRO/10GbE PCI-Express Network Driver> port 0xcc00-0xcc1f mem 0xfde80000-0xfdefffff,0xfde7c000-0xfde7ffff irq 18 at device 0.0 on pci2
> ix0: using 2048 tx descriptors and 2048 rx descriptors
> ix0: msix_init qsets capped at 16
> ix0: pxm cpus: 4 queue msgs: 63 admincnt: 1
> ix0: using 4 rx queues 4 tx queues
> ix0: attempting to allocate 5 MSI-X vectors (64 supported)
> msi: routing MSI-X IRQ 259 to local APIC 0 vector 54
> msi: routing MSI-X IRQ 260 to local APIC 0 vector 55
> msi: routing MSI-X IRQ 261 to local APIC 0 vector 56
> msi: routing MSI-X IRQ 262 to local APIC 0 vector 57
> msi: routing MSI-X IRQ 263 to local APIC 0 vector 58
> ix0: using IRQs 259-263 for MSI-X
> ix0: Using MSIX interrupts with 5 vectors
> ix0: allocated for 4 queues
> ix0: allocated for 4 rx queues
> panic: Assertion gtask->gt_taskqueue != NULL failed at /usr/src/sys/net/iflib.c:5177
> cpuid = 0
> time = 1
> KDB: enter: panic
> [ thread pid 0 tid 100000 ]
> Stopped at      kdb_enter+0x3b: movq    $0,kdb_why
> db> bt
> Tracing pid 0 tid 100000 td 0xffffffff80bf63c0
> kdb_enter() at kdb_enter+0x3b/frame 0xffffffff81004130
> vpanic() at vpanic+0x1b9/frame 0xffffffff810041b0
> kassert_panic() at kassert_panic+0x173/frame 0xffffffff81004220
> iflib_irq_set_affinity() at iflib_irq_set_affinity+0xae2/frame 0xffffffff810042e0
> iflib_irq_alloc_generic() at iflib_irq_alloc_generic+0x1f7/frame 0xffffffff81004350
> ixgbe_if_msix_intr_assign() at ixgbe_if_msix_intr_assign+0xa2/frame 0xffffffff810043d0
> iflib_device_register() at iflib_device_register+0x2a6a/frame 0xffffffff810046f0
> iflib_device_attach() at iflib_device_attach+0xb7/frame 0xffffffff81004720
> device_attach() at device_attach+0x3f7/frame 0xffffffff81004770
> bus_generic_attach() at bus_generic_attach+0x5a/frame 0xffffffff81004790
> pci_attach() at pci_attach+0xd5/frame 0xffffffff810047d0
> device_attach() at device_attach+0x3f7/frame 0xffffffff81004820
> bus_generic_attach() at bus_generic_attach+0x5a/frame 0xffffffff81004840
> acpi_pcib_pci_attach() at acpi_pcib_pci_attach+0xa1/frame 0xffffffff81004880
> device_attach() at device_attach+0x3f7/frame 0xffffffff810048d0
> bus_generic_attach() at bus_generic_attach+0x5a/frame 0xffffffff810048f0
> pci_attach() at pci_attach+0xd5/frame 0xffffffff81004930
> device_attach() at device_attach+0x3f7/frame 0xffffffff81004980
> bus_generic_attach() at bus_generic_attach+0x5a/frame 0xffffffff810049a0
> acpi_pcib_acpi_attach() at acpi_pcib_acpi_attach+0x3bc/frame 0xffffffff81004a10
> device_attach() at device_attach+0x3f7/frame 0xffffffff81004a60
> bus_generic_attach() at bus_generic_attach+0x5a/frame 0xffffffff81004a80
> acpi_attach() at acpi_attach+0xe85/frame 0xffffffff81004b30
> device_attach() at device_attach+0x3f7/frame 0xffffffff81004b80
> bus_generic_attach() at bus_generic_attach+0x5a/frame 0xffffffff81004ba0
> nexus_acpi_attach() at nexus_acpi_attach+0x73/frame 0xffffffff81004bd0
> device_attach() at device_attach+0x3f7/frame 0xffffffff81004c20
> bus_generic_new_pass() at bus_generic_new_pass+0x116/frame 0xffffffff81004c50
> bus_set_pass() at bus_set_pass+0x8c/frame 0xffffffff81004c80
> configure() at configure+0x9/frame 0xffffffff81004c90
> mi_startup() at mi_startup+0x9c/frame 0xffffffff81004cb0
> btext() at btext+0x2c

Can you provide me with the output of ``sysctl kern.sched.topology_spec''?

It would also be useful to add a line in iflib.c at the beginning of 
iflib_irq_set_affinity() to show the parameters:

       int cpuid;
      int err, tid;

+device_printf(ctx->ifc_dev, "irq=%d, type=%d, qid=%d, name=%s\n", irq, 
type, qid, name);
      cpuid = find_nth(ctx, qid);
      tid = get_thread_num(ctx, type, qid);
      MPASS(tid >= 0);

And provide the new dmesg with this added output.


More information about the svn-src-head mailing list