lkml.org 
[lkml]   [2003]   [Jul]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: yenta-socket oops with 2.5.73-mm3, 2.5.74, 2.5.74-mm1
Date
Applied both patches without offsets.

Did 20 halt cycles with e100 loaded - no oopses. Seems to
be fixed.

The oops without e100 seems to be fixed too but needs more
watching as it's probability increases when power is off for
longer than the short time in above test where power is switched
on again within a few seconds after the halt.

Regards
Michael


On Monday 07 July 2003 06:15, Russell King wrote:
> On Sun, Jul 06, 2003 at 12:39:34AM +0200, Daniel Ritz wrote:
> > problem is that an interrupt arrives before socket->thread_wait is
> > initialized so we crash in __wake_up_common. i think source of the
> > interrupt is socket_init called before the initialization. but an
> > interrupt can still arrive before...
>
> I suspect that even with your patch below, there is the posibility
> to receive an unintentional call into pcmcia_parse_events() from some
> socket drivers. The all round better fix is to make pcmcia_parse_events()
> ignore socket change events until the socket thread is up and running.
>
> Nevertheless, the patch looks correct, so I am still interested in
> whether your patch helps solve Michael's problem.
>
> > michael, can you try this one?
>
> Daniel's patch:
>
> --- 1.50/drivers/pcmcia/cs.c Mon Jun 30 22:22:30 2003
> +++ edited/cs.c Sat Jul 5 23:58:07 2003
> @@ -338,13 +338,13 @@
> socket->erase_busy.next = socket->erase_busy.prev = &socket->erase_busy;
> INIT_LIST_HEAD(&socket->cis_cache);
> spin_lock_init(&socket->lock);
> -
> - init_socket(socket);
> -
> init_completion(&socket->thread_done);
> init_waitqueue_head(&socket->thread_wait);
> init_MUTEX(&socket->skt_sem);
> spin_lock_init(&socket->thread_lock);
> +
> + init_socket(socket);
> +
> ret = kernel_thread(pccardd, socket, CLONE_KERNEL);
> if (ret < 0)
> return ret;
>
> and my patch (may apply with some offset, which I'm about to check
> into bk anyway):
>
> --- linux/drivers/pcmcia/cs.c.old Fri Jul 4 10:21:50 2003
> +++ linux/drivers/pcmcia/cs.c Sun Jul 6 23:04:10 2003
> @@ -870,11 +870,13 @@
>
> void pcmcia_parse_events(struct pcmcia_socket *s, u_int events)
> {
> - spin_lock(&s->thread_lock);
> - s->thread_events |= events;
> - spin_unlock(&s->thread_lock);
> + if (s->thread) {
> + spin_lock(&s->thread_lock);
> + s->thread_events |= events;
> + spin_unlock(&s->thread_lock);
>
> - wake_up(&s->thread_wait);
> + wake_up(&s->thread_wait);
> + }
> } /* pcmcia_parse_events */

--
Powered by linux-2.5.74-mm1. Compiled with gcc-2.95-3 - mature and rock solid

My current linux related activities:
- 2.5 yenta_socket testing
- Test development and testing of swsusp and ACPI S3
- Everyday usage of 2.5 kernel

More info on 2.5 kernel: http://www.codemonkey.org.uk/post-halloween-2.5.txt

-
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/

\
 
 \ /
  Last update: 2005-03-22 13:46    [W:0.097 / U:1.552 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site