More power patches
Don Lewis
truckman at FreeBSD.org
Sun Jan 11 04:44:28 PST 2004
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+)?
More information about the freebsd-mobile
mailing list