Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751359AbXEXQSV (ORCPT ); Thu, 24 May 2007 12:18:21 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1750738AbXEXQSN (ORCPT ); Thu, 24 May 2007 12:18:13 -0400 Received: from smtp1.linux-foundation.org ([207.189.120.13]:45454 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750707AbXEXQSM (ORCPT ); Thu, 24 May 2007 12:18:12 -0400 Date: Thu, 24 May 2007 09:16:10 -0700 (PDT) From: Linus Torvalds To: Romano Giannetti cc: Chris Wright , Chuck Ebbert , Linux Kernel Mailing List , stable@kernel.org, Justin Forbes , Zwane Mwaikambo , "Theodore Ts'o" , Randy Dunlap , Dave Jones , Chuck Wolber , Chris Wedgwood , Michael Krufky , akpm@linux-foundation.org, alan@lxorguk.ukuu.org.uk, "Rafael J. Wysocki" , Pavel Machek Subject: Re: [patch 00/69] -stable review In-Reply-To: <1180008394.15600.26.camel@localhost> Message-ID: References: <20070521191612.800400000@sous-sol.org> <4652070D.3090509@redhat.com> <20070521212522.GL3429@sequoia.sous-sol.org> <1179870110.16656.2.camel@localhost> <1180008394.15600.26.camel@localhost> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=us-ascii Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2771 Lines: 69 On Thu, 24 May 2007, Romano Giannetti wrote: > > I discovered that SysRq-t works during the pause. So I pressed it more > or less halfway the pause; the full result is here: > http://www.dea.icai.upcomillas.es/romano/linux/info/dmesg-resume.txt > > It seems that most of the tasks are in > > [] refrigerator+0x41/0x60 Yeah, but the interesting one is this pair: events/0 R running 0 4 1 (L-TLB) sleep.sh D 0000014F 0 5798 5789 (NOTLB) Call Trace: [] kobject_uevent_env+0x3a1/0x4a0 [] wait_for_completion+0x79/0xb0 [] default_wake_function+0x0/0x10 [] _request_firmware+0x1c8/0x310 [] request_firmware+0xf/0x20 [] pcmcia_bus_match+0x28d/0x3c0 [pcmcia] [] netlink_broadcast+0x1f7/0x310 [] driver_probe_device+0x34/0xc0 [] klist_next+0x4e/0xa0 [] bus_for_each_drv+0x44/0x70 [] device_attach+0x7a/0x80 [] __device_attach+0x0/0x10 [] bus_attach_device+0x26/0x60 [] device_add+0x5e6/0x6e0 [] kobject_init+0x2f/0x50 [] pcmcia_device_add+0x185/0x220 [pcmcia] [] pcmcia_card_add+0xa1/0xc0 [pcmcia] [] ti12xx_power_hook+0x180/0x1d0 [yenta_socket] [] ds_event+0x80/0xb0 [pcmcia] [] send_event+0x39/0x70 [pcmcia_core] [] socket_insert+0x86/0xe0 [pcmcia_core] [] pcmcia_socket_dev_resume+0x7b/0x90 [pcmcia_core] [] pci_device_resume+0x1f/0x60 [] resume_device+0x5f/0xf0 ie we have a deadlock because resume wants to do that firmware request, but the event daemon is apparently spinning like mad. And yes, request_firmware() has a "loading_timeout" in seconds. And it's 60. So that explains your pause right there! It might be some unfortunate interaction with process freezing (my favorite whipping boy), but it could also be something else. I suspect we should treat suspend/resume as a bootup event, and not allow execve() for that case at all. Right now we have: retval = -EPERM; if (current->fs->root) retval = kernel_execve(sub_info->path, sub_info->argv, sub_info->envp); in kernel/kmod.c, and that "current->fs->root" thing basically protects us from trying to run a user-mode helper early in the boot sequence, but we might want to add a conditional like "&& !resuming" to that test.. Linus - 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/