Igb driver in 2.1rc1 2013-08-08 kernel panics on boot
-
when booting the live memstick image from the snapshots mirror dated 2013-08-08 the boot process is curtailed with a kernel panic:
SMP: AP CPU #2 Launched! SMP: AP CPU #1 Launched! SMP: AP CPU #3 Launched! panic: m_getzone: m_getjcl: invalid cluster type cpuid = 0 KDB: enter: panic [thread] Stopped at kdb_enter+0x3b: movq $0,0xc06ce2(%rip) db> bt Tracing pid 12 tid 100035 td 0xffffff000354b460 kdb_enter() at kdb_enter+0x3b panic() at panic+0x180 igb_refresh_mbufs() at igb_refresh_mbufs+0x31b igb_rxeof() at igb_rxeof+0x665 igb_msix_que() at igb_msix_que+0xfa intr_event_execute_handlers() at intr_event_execute_handlers+0x104 ithread_loop() at ithread_loop+0x95 fork_exit() at fork_exit+0x11f fork_trampoline() at fork_trampoline+0xe --- trap 0, rip = 0, rsp = 0xffffff8000111d00, rbp = 0 --- db> [/thread]
-
I have three intel cards, one of which is on board, so removing is impossible. The specific kp can be found on a FreeBSD site that I don't have a link to right now by googling "m_getzone: m_getjcl" In quotes. That site indicates a bug in Igb discovered in 2012 in FreeBSD 8.3.
-
http://lists.freebsd.org/pipermail/freebsd-stable/2011-May/062596.html has some related discoveries and investigation from 2011.
-
Try with hw.pci.enable_msix=0 in /boot/loader.conf.local
http://www.freebsd.org/cgi/query-pr.cgi?pr=172113
-
setting hw.pci.enable_msix=0 in the bootloader did allow the boot to continue without the kp. Thanks for the tip. What, if any, problems or restrictions might I expect with disabling msi-x? I note it's an extended msi implementation for allowing interrupts without an out-of-band separate pin. So is disabling msi-x forcing the os to use polling instead? Is that going to reduce performance?
-
So is disabling msi-x forcing the os to use polling instead?
Nope… http://forum.pfsense.org/index.php?topic=50252.0
Is that going to reduce performance?
For sure the performance will be better than with an unbootable box. ;D :D
-
IIRC the order of preference from the driver goes something like:
MSIX -> MSI -> Interrupts. If you disable one, it falls back to the next in line. On FreeBSD 8.x several driver+chip combinations have issues with MSI-X and MSI, but others work fine. So it's preferred but not required.
Polling wouldn't be selected automatically it would have to be manually enabled. (and not recommended in almost every case)