Re: PATCH 2.4.0.4.6: workaround for BUG() in slab.c

From: Linus Torvalds (torvalds@transmeta.com)
Date: Fri Jul 14 2000 - 13:16:19 EST


In article <396F2DF2.6FB2A67A@uow.edu.au>,
Andrew Morton <andrewm@uow.edu.au> wrote:
>
>We don't want to create another kernel thread just for cardbus.

Actually, we do.

In fact, we already did. There's a thread per socket, exactly because in
the end a lot of these things need to have a thread context. Do a 'ps ax'
and grep for "CardBus Watcher"..

However, for all the wrong reasons (ie this is not how the old cs layer
works), the rest of the pcmcia layer doesn't know about this, and uses
timers for all its delays (because it thinks that it runs from an
interrupt context), instead of just doing a "schedule_timeout()".

>I think the best general way to fix this is for the timer handler to do
>nothing but register a callback with something which is running in
>process context, such as `swapper'.

Actually, the best thing is to not use a timer handler at all, because
cs really _can_ sleep now. Which would make the code a lot more readable
too (the current timer-driven state-machine is rather opaque..)

[ Except this only works with the yenta.c driver - the other low-level
  drivers don't do this. I'm inclined to remove the other low-level
  drivers from the kernel, and just say that the in-kernel pcmcia
  support only supports cardbus controllers until somebody decides to
  port them to use kernel threads. Which should be fairly easy, but
  requires testing. ]

Comments?

                Linus

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



This archive was generated by hypermail 2b29 : Sat Jul 15 2000 - 21:00:20 EST