[2.6.0-test1] yenta_socket.c:yenta_get_status returns bad value compared to 2.4

From: Stefan Jones (cretin@gentoo.org)
Date: Sat Jul 26 2003 - 13:31:59 EST


Dear all,

It seems the the change from 2.4 to 2.6 made the state read from
yenta_get_status change it's return value. It reads it from hardware.

The change in value has an effect later on which causes CB_CBCARD not to
be set, and thus SOCKET_CARDBUS not being set, this memory reads are
from the wrong ioport, locking up the machine.

Hardware:
00:0a.0 CardBus bridge: O2 Micro, Inc. OZ6912 Cardbus Controller
with a Netgear wireless card for testing.

see http://www.ussg.iu.edu/hypermail/linux/kernel/0307.3/0166.html
for more info.

I added

printk(KERN_DEBUG "yenta_get_status: status=%04x\n",state);

after the call
u32 state = cb_readl(socket, CB_SOCKET_STATE);
in
static int yenta_get_status(struct pcmcia_socket *sock, unsigned int
*value)
in drivers/pcmcia/yenta_socket.c

in both 2.4.21 and 2.6.0-test1

2.6.0-test1 gives: 30000411
2.4.21 gives: 30000419

I wonder why the values are different, and yet fairly close. It is
enough to give hard lockups ( I debugged this one with printk's and
commenting out code )

I have added

state |= CB_CBCARD;

to the 2.6 kernel and that stops lockups, but I haven't yet tried
forcing the complete value.

What should I do, who should I contact, please advise. ( I am not a
kernel developer )

Stefan

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Thu Jul 31 2003 - 22:00:29 EST