Skip site navigation (1)Skip section navigation (2)
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>

next in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199802010052.QAA14335>