[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

More power patches



With the http://people.freebsd.org/~imp/power.20040107.diff patch:

On 10 Jan, Don Lewis wrote:

> fwohci0: vendor=104c, dev=8026
> fwohci0: <1394 Open Host Controller Interface> mem 0xc0204000-0xc0207fff,0xc0209000-0xc02097ff irq 11 at device 7.0 on pci2
> fwohci0: Bus reserved 0x800 bytes for rid 0x10 type 3 at 0xc0209000
> fwohci0: OHCI version 0.0 (ROM=0)
> fwohci0: invalid OHCI version
> fwohci0: FireWire init failed with err=6
> device_probe_and_attach: fwohci0 attach returned 5
> fxp0: <Intel 82801DB (ICH4) Pro/100 VE Ethernet> port 0x8400-0x843f mem 0xc0208000-0xc0208fff irq 11 at device 8.0 on pci2
> fxp0: Bus reserved 0x1000 bytes for rid 0x10 type 3 at 0xc0208000
> fxp0: Ethernet address 00:06:1b:d4:72:bb
> miibus0: <MII bus> on fxp0
> inphy0: <i82562ET 10/100 media interface> on miibus0
> inphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
> fxp0: could not setup irq
> inphy0: detached
> miibus0: detached
> device_probe_and_attach: fxp0 attach returned 22

I spent some time debugging and tracked the fxp problem to the failure
of the following test in ithread_add_handler():

                if (!(ih->ih_flags & IH_FAST) && (temp_ih->ih_flags & IH_FAST))
                        goto fail;

Apparently the failure of fwohci0 to attach somehow sets the IH_FLAG on
irq 11, which is shared by both fwohci0 and fxp0, and a bunch of other
stuff.  If I remove firewire from my kernel config, this machine boots
normally, and fxp0 is able to get its irq and talk to the net.

> 
> Fatal trap 12: page fault while in kernel mode
> cpuid = 0; apic id = 00
> fault virtual address	= 0x0
> fault code		= supervisor write, page not present
> instruction pointer	= 0x8:0xc44b4047
> stack pointer	        = 0x10:0xd7411cec
> frame pointer	        = 0x10:0xd7411d10
> code segment		= base 0x0, limit 0xfffff, type 0x1b
> 			= DPL 0, pres 1, def32 1, gran 1
> processor eflags	= interrupt enabled, resume, IOPL = 0
> current process		= 22 (irq11: fwohci0+)
> kernel: type 12 trap, code=0
> Stopped at      0xc44b4047:     addb    %al,0(%eax)
> db> tr
> _end(c4362600,d7411d48,c085d977,315,0) at 0xc44b4047
> fork_exit(c062abc0,c4362600,d7411d48) at fork_exit+0xb4
> fork_trampoline() at fork_trampoline+0x8
> --- trap 0x1, eip = 0, esp = 0xd7411d7c, ebp = 0 ---

If fwohci0 did not attach, why are we executing irq11: fwohci0+)?


Visit your host, monkey.org