Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754995AbZCYFGt (ORCPT ); Wed, 25 Mar 2009 01:06:49 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751443AbZCYFGk (ORCPT ); Wed, 25 Mar 2009 01:06:40 -0400 Received: from fgwmail6.fujitsu.co.jp ([192.51.44.36]:60657 "EHLO fgwmail6.fujitsu.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750867AbZCYFGj (ORCPT ); Wed, 25 Mar 2009 01:06:39 -0400 Message-ID: <49C9BBD7.4040705@jp.fujitsu.com> Date: Wed, 25 Mar 2009 14:06:31 +0900 From: Kenji Kaneshige User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Alex Chiang CC: jbarnes@virtuousgeek.org, linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Trent Piepho Subject: Re: [PATCH v5 09/13] PCI: Introduce /sys/bus/pci/devices/.../remove References: <20090320204327.12275.43010.stgit@bob.kio> <20090320205636.12275.1825.stgit@bob.kio> <49C74FCC.7070308@jp.fujitsu.com> <20090324192905.GA25984@ldl.fc.hp.com> In-Reply-To: <20090324192905.GA25984@ldl.fc.hp.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3444 Lines: 96 Alex Chiang wrote: > * Kenji Kaneshige : >> I still have the following kernel error messages in testing with your >> latest set of patches (Jesse's linux-next). The test case is removing >> e1000e device or its parent bridge by "echo 1 > /sys/bus/pci/devices/ >> .../remove". >> >> [ 537.379995] ============================================= >> [ 537.380124] [ INFO: possible recursive locking detected ] >> [ 537.380128] 2.6.29-rc8-kk #1 >> [ 537.380128] --------------------------------------------- >> [ 537.380128] events/4/56 is trying to acquire lock: >> [ 537.380128] (events){--..}, at: [] flush_workqueue+0x0/0xa0 >> [ 537.380128] >> [ 537.380128] but task is already holding lock: >> [ 537.380128] (events){--..}, at: [] run_workqueue+0x108/0x230 >> [ 537.380128] >> [ 537.380128] other info that might help us debug this: >> [ 537.380128] 3 locks held by events/4/56: >> [ 537.380128] #0: (events){--..}, at: [] run_workqueue+0x108/0x230 >> [ 537.380128] #1: (&ss->work){--..}, at: [] run_workqueue+0x108/0x230 >> [ 537.380128] #2: (pci_remove_rescan_mutex){--..}, at: [] remove_callback+0x21/0x40 > > I still cannot reproduce this lockdep issue, even using your > .config with an e1000e device on an x86_64 kernel. :( > > I tried removing the endpoint, an intermediate bridge device, and > the parent bus. I don't know what I'm doing wrong... > I don't know either... The reproducibility is 100% on my environment. The steps are just boot the system and remove the device. > Can you please try this patch though, and see if it fixes the > warning? It applies on top of my other sysfs patch that > introduces a mutex in sysfs_schedule_callback. Anyway, I confirmed the kernel error messages were gone with the patch against sysfs. Note that I used the following patch I made for testing instead since your patch could not be applied to Jesse's linux-next. Thanks, Kenji Kaneshige fs/sysfs/file.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) Index: linux-next-20090323/fs/sysfs/file.c =================================================================== --- linux-next-20090323.orig/fs/sysfs/file.c 2009-03-25 12:09:37.000000000 +0900 +++ linux-next-20090323/fs/sysfs/file.c 2009-03-25 13:40:10.000000000 +0900 @@ -677,6 +677,7 @@ kfree(ss); } +static struct workqueue_struct *sysfsd_wq; /** * sysfs_schedule_callback - helper to schedule a callback for a kobject * @kobj: object we're acting for. @@ -704,6 +705,17 @@ if (!try_module_get(owner)) return -ENODEV; + + if (!sysfsd_wq) { + sysfsd_wq = create_workqueue("sysfsd"); + if (!sysfsd_wq) { + printk(KERN_ERR + "%s: Could not create workqueue\n", __func__); + WARN_ON(1); + return -ENOMEM; + } + } + ss = kmalloc(sizeof(*ss), GFP_KERNEL); if (!ss) { module_put(owner); @@ -715,7 +727,7 @@ ss->data = data; ss->owner = owner; INIT_WORK(&ss->work, sysfs_schedule_callback_work); - schedule_work(&ss->work); + queue_work(sysfsd_wq, &ss->work); return 0; } EXPORT_SYMBOL_GPL(sysfs_schedule_callback); -- 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/