On Wed, Aug 04, 2010 at 08:17:00PM +1000, Jonathan Gray wrote: > On Tue, Aug 03, 2010 at 11:12:01PM +0100, Stuart Henderson wrote: > > Do you know what the last working kernel was? > > > > I have an archive of old kernels if you want to track it down without > > the cvs up -D / compile dance, mail me offlist. > > broken: > OpenBSD 4.7-current (GENERIC) #104: Thu Jul 8 16:47:03 MDT 2010 > > works: > OpenBSD 4.7-current (GENERIC) #98: Wed Jul 7 18:25:12 MDT 2010 > > I don't see how it could be an em problem as there are no commits > in this window and all the commits either side of it are chip > specific to other chips.
With a lot of help debugging from Mike Belopuhov, turns out to be am em bug in the original support for these chips from dms that gcc4 exposes. There seems to be a seperate problem with linkstate but a NA200 boots and all the ports can pass traffic with this diff. Index: if_em.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_em.c,v retrieving revision 1.242 diff -u -p -r1.242 if_em.c --- if_em.c 3 Aug 2010 16:21:52 -0000 1.242 +++ if_em.c 4 Aug 2010 15:00:35 -0000 @@ -1648,12 +1648,11 @@ em_allocate_pci_resources(struct em_soft * can confuse the system */ if(sc->hw.mac_type == em_icp_xxxx) { - uint8_t offset; + int offset; pcireg_t val; if (!pci_get_capability(sc->osdep.em_pa.pa_pc, - sc->osdep.em_pa.pa_tag, PCI_CAP_ID_ST, (int*) &offset, - &val)) { + sc->osdep.em_pa.pa_tag, PCI_CAP_ID_ST, &offset, &val)) { return (0); } offset += PCI_ST_SMIA_OFFSET;