Date: Sat, 31 Jan 98 16:57:37 -0700 From: "Sean J. Schluntz" <schluntz@pinpt.com> To: "Mike Smith" <mike@smith.net.au>, "Sean J. Schluntz" <schluntz@clicknet.com> Cc: "Goeringer, Michael" <goeringerm@keywest.ird.rl.af.mil>, <freebsd-mobile@FreeBSD.ORG> Subject: Re: Ach! Slot 0, unfielded interrupt 0 (unbreakable loop) Message-ID: <199802010052.QAA14335@gromit.pinpt.com>
index | next in thread | raw e-mail
First, thank you very much for the great amount of assistance you have
given me on this. It's a true road map for me to follow.
*From the fingers of Mike Smith
>> > The "driver allocation failed" message means that the 'ep' driver,
>> > given the mappings supplied, failed to locate your card.
>> >
>> > You should add some debugging messages to the 'ep' driver's probe
>> > routines to determine the cause of the rejection.
>>
>> Hm, unfortunately this is a step beyond me. I can give it a shot, but
>> I'm pretty basic when it comes to coding C.
>
>OK, first perhaps you should go back to basics.
>
>Configure 'ep0' into your kernel; just copy it as-is from GENERIC.
Check!
>Make sure pccardd is *NOT* running. Insert the card and say
>"pccardc dumpcis". Look through the output for an entry like this:
Does killing it after it launches ok? I found that I got strange errors
if I turned off pccard in rc.conf but was able to get the info you
mentioned when I let the system load it on boot and then killed it.
>Tuple #3, code = 0x15 (Version 1 info), length = 43
> 000: 04 01 44 41 4e 50 45 58 00 45 4e 2d 36 32 30 30
> 010: 50 32 00 52 65 76 2e 54 31 00 50 43 4d 43 49 41
> 020: 20 45 74 68 65 72 6e 65 74 00 ff
> Version = 4.1, Manuf = [DANPEX],card vers = [EN-6200P2]
> Addit. info = [Rev.T1],[PCMCIA Ethernet]
>
>It won't look exactly like this, but what you want is the Manuf and vers
>fields. I think you have these OK already though.
Got it, you are right I had this one. I had gotten it from the error
message that It could not find "3Com Corporation" "3C589D" so I
originally copped the 3C589 section and changed it for the 'D'.
>
>Now look through the output for one like this:
>
>Tuple #8, code = 0x1b (Configuration entry), length = 7
> 000: 20 08 ca 60 00 03 1f
> Config index = 0x20
> Card decodes 10 address lines, limited 8/16 Bit I/O
> I/O address # 1: block start = 0x300 block length = 0x20
I actually got two?: ('scuze any typos, it's on the laptop and I'm
writing from the PMac.)
Tuple #7, code 0x1b (Configuration entry), length = 15
000: 03 01 71 55 26 26 54
Config index = 0x1(default)
and
Tuple #8, code 0x1b (Configuration entry), length = 7
000: 03 01 71 55 26 26 54
Config index = 0x3
>What you are interested in is the configuration index number (here
>0x20). The normal entry for the '589 is 0x1, and you want to make sure
>that the I/O address it specifies *is* valid on your system. If it's
>not, pick another configuration index.
>
>Create an /etc/pccard.conf containing *just* this:
>
>io 0x240-0x360
>irq 10
>
># 3com 3c589D
>card "3Com Corporation" "3C589D"
> config 0x1 "ep0" 10
> insert /etc/pccard_ether ep0 -link0
> remove /sbin/ifconfig ep0 delete
>
>Check your laptop's manual for IRQ details, IRQ 10 is normally but not
>always available. Change the first string to match the "Manuf"
>parameter, and the second to match the "vers" parameter extracted in
>the dumpcis command above. Change the 0x1 on the 'config' line if
>necessary to select a valid configuration index.
>
>Now start pccardd.
>
Ok, here is what happens:
config 0x1 "ep0" 10
Card inserted, slot 0 # 30-45 second delay
Slot0, unfielded interrupt (0)
Slot0, unfielded interrupt (0)
Slot0, unfielded interrupt (0)
Slot0, unfielded interrupt (0)
... # Hard reboot is the only answer.
config 0x3 "ep0" 10
Card inserted, slot 0 # 30-45 second delay
Slot0, unfielded interrupt (0)
Slot0, unfielded interrupt (0)
Slot0, unfielded interrupt (0)
Slot0, unfielded interrupt (0)
... # Hard reboot is the only answer.
config 0x300 "ep0" 10
Card inserted, slot 0 # 10-20 second delay
Jan 31 16:45:24 quarry cardd[249]: Resource allocation failure for
3Com Corporation.
>If you still get the "driver allocation failed" messages, you will have
>to do a little hacking. In the file sys/i386/isa/if_ep.c, there is a
>function ep_pccard_init(), right near the top of the file. There are
>several places where this function returns ENXIO without printing an
>error message; you should add printf() statements before these returns
>in such a fashion as to be able to tell which one is the one causing
>your allocation to fail. At this point, it should be possible to
>determine the actual cause of your problem.
I went ahead and made the changes (even though this is a resource error
not a driver error) and added a printf to the two ENXIO exits that
didn't' supply an error but still nothing. Should I do the same to
another area of the code to find the problem with the resource allocation?
Thanks again for all of your help!
-Sean
----------------------------------------------------------------------
Sean J. Schluntz schluntz@pinpt.com
Systems Engineer (408) 997-6900 x222
PinPoint Software Corporation http://www.pinpt.com
home |
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199802010052.QAA14335>
