Subject: Re: cardbus/pcmcia
To: Bill Sommerfeld <sommerfeld@orchard.arlington.ma.us>
From: Patrick Welche <prlw1@newn.cam.ac.uk>
List: current-users
Date: 05/25/2001 18:55:37
On Fri, May 18, 2001 at 04:31:23PM -0400, Bill Sommerfeld wrote:
> fxp0: interrupting at irq 9
> cbb0: interrupting at irq 9
> cardslot0 at cbb0 slot 0 flags 0
> cardbus0 at cardslot0: bus 2 device 0 cacheline 0x0, lattimer 0x20
> pcmcia0 at cardslot0
>
> Sharing irq's between serial devices and non-serial devices is
> problematic at the moment.
In the meantime I tried kernels with and without fxp0. The problem seems
to arrive at:
#5 0xc0100bc9 in calltrap ()
#6 0xc039f16d in pcmcia_read_cis (sc=0xc0ac1200)
at ../../../../dev/pcmcia/pcmcia_cis.c:87
#7 0xc039dd99 in pcmcia_card_attach (dev=0xc0ac1200)
at ../../../../dev/pcmcia/pcmcia.c:158
#8 0xc0392028 in cardslot_event_thread (arg=0xc0acb280)
at ../../../../dev/cardbus/cardslot.c:376
What I don't understand is that everything looks benign around there:
pcmcia_read_cis 87:
if (pcmcia_scan_cis((struct device *)sc, pcmcia_parse_cis_tuple,
&state) == -1)
state.card->error++;
...
int
pcmcia_scan_cis(dev, fct, arg)
struct device *dev;
int (*fct) __P((struct pcmcia_tuple *, void *));
void *arg;
(gdb) print *sc
$1 = {dev = {dv_class = DV_DULL, dv_list = {tqe_next = 0xc0ace800,
tqe_prev = 0xc0acb204}, dv_cfdata = 0xc0801ee4, dv_unit = 0,
dv_xname = "pcmcia0\000\000\000\000\000\000\000\000",
dv_parent = 0xc0acb280, dv_flags = 1}, pct = 0xc0807c20, pch = 0xc0ac18e0,
card = {cis1_major = -1, cis1_minor = -1,
cis1_info_buf = '\000' <repeats 255 times>, cis1_info = {0x0, 0x0, 0x0,
0x0}, manufacturer = -1, product = -1, error = 0, pf_head = {
sqh_first = 0x0, sqh_last = 0xc0ac1358}}, ih = 0x0,
sc_enabled_count = 0, iobase = 8192, iosize = 4096}
(gdb) whatis pcmcia_parse_cis_tuple
type = int (struct pcmcia_tuple *, void *)
Where does calltrap() come from?
Cheers,
Patrick