Thanks! I’ve put the patch in and installed the new kernel. It sure produces a lot of debugging output, but so far every time I boot it comes up working. I’ll keep trying to see if I can get it to fail, but I’m wondering if there’s a timing issue during startup that gets masked with all the debugging output?
-bob On Apr 16, 2017, at 9:10 PM, Kimihiro Nonaka <[email protected]> wrote: > On Sun, Apr 16, 2017 at 9:03 PM, Robert Nestor <[email protected]> wrote: > >> I’ve been running -current on a new laptop and have installed a number of >> snapshots since 7.99.59. With the 7.99.67 snapshot I’m seeing the message >> “iwm0: fatal firmware error” occasionally on boot. There is no other >> information on this that I can find and obviously at that point the network >> device isn’t usable. A reboot almost always seems to clear it up. Never >> saw this issue on earlier versions of -current, so I’m assuming it’s >> something that crept in. >> >> dmesg report on this device: >> iwm0 at pci2 dev 0 function 0: vendor 8086 product 08b2 (rev. 0x83) >> iwm0: interrupting at msi2 vec 0 >> iwm0: hw rev 0x140, fw ver 17.352738.0, address 90:2e:1c:12:36:80 >> iwm0: 11a rates: 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps >> iwm0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps >> iwm0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps >> 36Mbps 48Mbps 54Mbps >> iwm0: fatal firmware error >> >> If anyone has an idea or suggestion to help track this down just let me know >> and I’ll do what I can to help out. > > Could you enable debug output and send logs? > > diff --git a/sys/dev/pci/if_iwm.c b/sys/dev/pci/if_iwm.c > index 4a15ebd7d3f..da47b7d4287 100644 > --- a/sys/dev/pci/if_iwm.c > +++ b/sys/dev/pci/if_iwm.c > @@ -150,10 +150,11 @@ __KERNEL_RCSID(0, "$NetBSD: if_iwm.c,v 1.71 > 2017/03/14 23:59:26 nonaka Exp $"); > #define le16_to_cpup(_a_) (le16toh(*(const uint16_t *)(_a_))) > #define le32_to_cpup(_a_) (le32toh(*(const uint32_t *)(_a_))) > > +#define IWM_DEBUG > #ifdef IWM_DEBUG > #define DPRINTF(x) do { if (iwm_debug > 0) printf x; } while (0) > #define DPRINTFN(n, x) do { if (iwm_debug >= (n)) printf x; } while (0) > -int iwm_debug = 0; > +int iwm_debug = 12; > #else > #define DPRINTF(x) do { ; } while (0) > #define DPRINTFN(n, x) do { ; } while (0) > > Regards, > -- > Kimihiro Nonaka
