if_re does not work

John Baldwin jhb at freebsd.org
Tue Jul 11 15:02:11 UTC 2006


On Tuesday 11 July 2006 01:30, Bill Paul wrote:
> > Hi all,
> > 
> > I have two CardBus card with RealTek 8169SB as follows:
> > 
> > NETGEAR GA511
> > Buffalo LPC-CB-CLGT
> > 
> > But they act up from revision 1.68 of if_re.c.
> 
> This has nothing to do with the re(4) driver. The problem is that
> the cardbus code is not allocating an interrupt resource for the device:
> 
> > It is a log of NETGEAR GA511 inserting to ThinkPad X40.
> 
> It sure is.
>  
> > Jul 10 22:54:33 x40 kernel: re0: <RealTek 8169SB/8110SB Single-chip 
Gigabit Ethernet> port 0x3000-0x30ff mem 0xd0211000-0xd02111ff at device 0.0 
on cardbus0
> 
> Note that there is no 'irq' mentioned anywhere in this line, which is why
> you get this error:
> 
> > Jul 10 22:54:33 x40 kernel: re0: couldn't set up irq
> 
> If you really think this is related to the driver, prove it: back out
> the changes (while keeping the rest of your kernel the same) and see if
> it works again. I don't think it will.

In theory the bus_alloc_resource(.., SYS_RES_IRQ, ...) should route an 
interrupt for the re0 device but it won't show up in the probe line in that 
case since the probe line is printed before re_attach() is called.  In fact,
in the failing case, it wasn't bus_alloc_resource() that failed, but
bus_setup_intr().  This is most likely not an re0 issue however.

goto-san, can you add printf's to i386/i386/intr_machdep.c:intr_add_handler()
and kern/kern_intr.c:intr_event_add_handler() to see which of the EINVAL
cases is being triggered?

-- 
John Baldwin


More information about the freebsd-current mailing list