From: Jesse Stockall <stockall@magma.ca>
To: Stefano Rivoir <s.rivoir@gts.it>
Cc: Andrew Morton <akpm@osdl.org>, linux-kernel@vger.kernel.org
Subject: Re: 2.6.7-mm7
Date: Fri, 09 Jul 2004 07:45:07 -0400 [thread overview]
Message-ID: <1089373506.8067.7.camel@homer.blizzard.org> (raw)
In-Reply-To: <40EE732C.5020404@gts.it>
On Fri, 2004-07-09 at 06:27, Stefano Rivoir wrote:
>
> It seems that hotplug "subsystem" is having problems (I use debian/sid),
> because it stucks during
>
> /sbin/modprobe -s -q ehci_hcd
>
> Note that I'm seeing this after a /etc/init.d/hotplug start (after a
> successfull boot), but just before I had a kernel oops (see attached
> file) when issuing a /etc/init.d/hotplug stop.
Hi
This is a known issue that appeared in 2.6.7-mm6. See below for a
temporary fix. Check the [2.6.7-mm6 - USB problems] thread on
linux-usb-devel@lists.sourceforge.net for more info.
Jesse
<-- msg from Alan Stern -->
This patch fixes a problem with my recent set of locking changes for
USB.
The problem is that rw-semaphores don't have the semantics I need. I
need
something where, if the semaphore is locked for reading and a writer is
waiting for the lock, another reader will be granted a readlock
immediately. That's because there are several places where a thread
holding the readlock will acquire the readlock again, in a nested or
recursive fashion. If a writer is waiting for the first readlock to be
released, the standard semantics will yield deadlock.
This patch implements those alternate semantics by putting writers on a
separate wait queue. It's a little bit awkward and has a definite
roll-you-own flavor, but it works. Please apply.
Alan Stern
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
===== drivers/usb/core/usb.c 1.281 vs edited =====
--- 1.281/drivers/usb/core/usb.c Wed Jun 30 09:44:26 2004
+++ edited/drivers/usb/core/usb.c Wed Jul 7 15:47:23 2004
@@ -64,6 +64,7 @@
/* Not honored on modular build */
static DECLARE_RWSEM(usb_all_devices_rwsem);
+static DECLARE_WAIT_QUEUE_HEAD(usb_all_devices_wqh);
static int generic_probe (struct device *dev)
@@ -933,6 +934,7 @@
{
up(&udev->serialize);
up_read(&usb_all_devices_rwsem);
+ wake_up(&usb_all_devices_wqh);
}
/**
@@ -940,10 +942,15 @@
*
* This is necessary when registering a new driver or probing a bus,
* since the driver-model core may try to use any usb_device.
+ *
+ * Unfortunately we have to use a separate wait queue, because we need
+ * to make sure that a thread waiting for a writelock won't block other
+ * threads from acquiring a readlock.
*/
void usb_lock_all_devices(void)
{
- down_write(&usb_all_devices_rwsem);
+ wait_event(usb_all_devices_wqh,
+ down_write_trylock(&usb_all_devices_rwsem));
}
/**
@@ -952,6 +959,7 @@
void usb_unlock_all_devices(void)
{
up_write(&usb_all_devices_rwsem);
+ wake_up(&usb_all_devices_wqh);
}
--
Jesse Stockall <stockall@magma.ca>
next prev parent reply other threads:[~2004-07-09 11:47 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-07-09 6:50 2.6.7-mm7 Andrew Morton
2004-07-09 8:15 ` 2.6.7-mm7 Stefano Rivoir
2004-07-09 9:41 ` 2.6.7-mm7 Andrew Morton
2004-07-09 10:27 ` 2.6.7-mm7 Stefano Rivoir
2004-07-09 10:32 ` 2.6.7-mm7 Stefano Rivoir
2004-07-09 11:45 ` Jesse Stockall [this message]
2004-07-09 18:54 ` 2.6.7-mm7 Andrew Morton
2004-07-09 19:52 ` 2.6.7-mm7 Jesse Stockall
2004-07-09 20:00 ` 2.6.7-mm7 Andrew Morton
2004-07-09 22:21 ` 2.6.7-mm7 Greg KH
2004-07-09 19:56 ` 2.6.7-mm7 Alan Stern
2004-07-09 10:32 ` 2.6.7-mm7 Jurgen Kramer
2004-07-09 10:39 ` 2.6.7-mm7 Andrew Morton
2004-07-09 11:16 ` 2.6.7-mm7 Jurgen Kramer
2004-07-09 14:40 ` 2.6.7-mm7 Felipe Alfaro Solana
2004-07-09 16:40 ` 2.6.7-mm7 Jurgen Kramer
2004-07-09 11:44 ` 2.6.7-mm7 Michael Geithe
2004-07-09 22:15 ` 2.6.7-mm7 Greg KH
2004-07-10 0:07 ` 2.6.7-mm7 Michael Geithe
2004-07-09 20:38 ` 2.6.7-mm7 Joseph Fannin
2004-07-09 21:11 ` 2.6.7-mm7 Andrew Morton
2004-07-14 22:01 ` 2.6.7-mm7 Tom Rini
2004-07-17 16:17 ` 2.6.7-mm7 Paul Mackerras
2004-07-17 19:19 ` 2.6.7-mm7 Joseph Fannin
2004-07-09 21:04 ` 2.6.7-mm7 William Lee Irwin III
2004-07-09 22:11 ` 2.6.7-mm7 William Lee Irwin III
2004-07-09 22:14 ` 2.6.7-mm7 Andrew Morton
2004-07-09 22:24 ` 2.6.7-mm7 James Bottomley
2004-07-09 23:40 ` 2.6.7-mm7 Andrew Morton
2004-07-10 2:47 ` 2.6.7-mm7 James Bottomley
2004-07-10 4:34 ` 2.6.7-mm7 Joshua Kwan
2004-07-10 4:40 ` 2.6.7-mm7 Joshua Kwan
2004-07-10 18:29 ` 2.6.7-mm7 Diego Calleja García
2004-07-10 20:04 ` 2.6.7-mm7 Marcin Gibuła
2004-07-10 20:10 ` 2.6.7-mm7 Marcin Gibuła
2004-07-10 20:27 ` 2.6.7-mm7 Andrew Morton
2004-07-10 20:32 ` 2.6.7-mm7 Marcin Gibuła
2004-07-11 4:19 ` 2.6.7-mm7 Dax Kelson
2004-07-11 4:40 ` 2.6.7-mm7 Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2004-07-10 6:21 2.6.7-mm7 Zoltan Boszormenyi
[not found] <A6974D8E5F98D511BB910002A50A6647615FFB70@hdsmsx403.hd.intel.com>
2004-07-11 2:23 ` 2.6.7-mm7 Len Brown
2004-07-11 10:23 ` 2.6.7-mm7 Thomas Svedberg
2004-07-11 15:49 ` 2.6.7-mm7 Zoltan Boszormenyi
[not found] <A6974D8E5F98D511BB910002A50A6647615FFA5D@hdsmsx403.hd.intel.com>
2004-07-11 2:34 ` 2.6.7-mm7 Len Brown
2004-07-11 18:32 ` 2.6.7-mm7 Michael Geithe
[not found] <A6974D8E5F98D511BB910002A50A6647615FFA8A@hdsmsx403.hd.intel.com>
2004-07-11 2:36 ` 2.6.7-mm7 Len Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1089373506.8067.7.camel@homer.blizzard.org \
--to=stockall@magma.ca \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=s.rivoir@gts.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.