Perfect!
My NA200 (both 600MHz and 1.2 GHz version) can boot again with this
diff.
Many thanks to you, Mike, Jonathan and Stuart, and of course to the
entire OpenBSD team!
Could this be commited before 4.8 release?
Holger
;-se

Jonathan Gray <j...@goblin.cx> hat am 4. August 2010 um 17:12
geschrieben:

> 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 JulB  8 16:47:03 MDT 2010
> >
> > works:
> > OpenBSD 4.7-current (GENERIC) #98: Wed JulB  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.cB  B  B  B  3 Aug 2010 16:21:52 -0000B  B  B  B  1.242
> +++ if_em.cB  B  B  B  4 Aug 2010 15:00:35 -0000
> @@ -1648,12 +1648,11 @@ em_allocate_pci_resources(struct em_soft
>B  B  B  B  B  B * can confuse the system
>B  B  B  B  B  B */
>B  B  B  B  B  if(sc->hw.mac_type == em_icp_xxxx) {
> -B  B  B  B  B  B  B  B  uint8_t offset;
> +B  B  B  B  B  B  B  B  int offset;
>B  B  B  B  B  B  B  B  B  pcireg_t val;
>B  B  B  B  B  B  B  B  B 
>B  B  B  B  B  B  B  B  B  if (!pci_get_capability(sc->osdep.em_pa.pa_pc,
> -B  B  B  B  B  B  B  B  B  B  sc->osdep.em_pa.pa_tag, PCI_CAP_ID_ST,
(int*)
> &offset,
> -B  B  B  B  B  B  B  B  B  B  &val)) {
> +B  B  B  B  B  B  B  B  B  B  sc->osdep.em_pa.pa_tag, PCI_CAP_ID_ST,
&offset,
> &val)) {
>B  B  B  B  B  B  B  B  B  B  B  B  B  return (0);
>B  B  B  B  B  B  B  B  B  }
>B  B  B  B  B  B  B  B  B  offset += PCI_ST_SMIA_OFFSET;

Reply via email to