Re: USB regression: devices not initially recognized

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 27, 2009 at 06:50:30PM -0400, eschvoca wrote:
> On Tue, Oct 27, 2009 at 12:10 PM, Paul E. McKenney
> <paulmck@xxxxxxxxxxxxxxxxxx> wrote:
> > On Tue, Oct 27, 2009 at 10:24:22AM -0400, eschvoca@xxxxxxxxx wrote:
> >> Hi Paul,
> >> On Tue, Oct 27, 2009 at 1:00 AM, Paul E. McKenney <
> >> paulmck@xxxxxxxxxxxxxxxxxx> wrote:
> >>
> >> > On Mon, Oct 26, 2009 at 09:33:33PM -0700, Arjan van de Ven wrote:
> >> > > On Mon, 26 Oct 2009 22:31:16 -0400
> >> > > eschvoca <eschvoca@xxxxxxxxx> wrote:
> >> > >
> >> > > > Hi Oliver,
> >> > > >
> >> > > > (Adding cc: Arjan)
> >> > > >
> >> > > > On Wed, Oct 14, 2009 at 10:54 PM, eschvoca <eschvoca@xxxxxxxxx> wrote:
> >> > > > > Hi Oliver,
> >> > > > >
> >> > > > > It ends up that the problem happens sporadically -- some reboots the
> >> > > > > keyboard and bluetooth adapter don't work while other reboots it
> >> > > > > does. I tried variations of reboot vs suspend vs shutdown vs unplug
> >> > > > > power and couldn't find a repeatable pattern.  Perhaps the problem
> >> > > > > is related to Ubuntu trying to speed up the boot process which
> >> > > > > doesn't wait long enough for the USB devices to respond.  My mouse
> >> > > > > always works while my USB bluetooth dongle and keyboard (through a
> >> > > > > GASIA PS2toUSB Adapter) do not.
> >> > > > >
> >> > > > > I've been looking for a guide on how to do a "git bisect" on vanilla
> >> > > > > kernels on ubuntu but haven't found anything that works well.  I
> >> > > > > compiled a vanilla kernel but when I went to install the debs I was
> >> > > > > warned that there already was a 2.6.28 kernel there and I would
> >> > > > > overwrite it.  I would like to do a "git bisect" on the vanilla
> >> > > > > kernel and be able to install them without conflicts.  Currently
> >> > > > > the problem is showing up in about 25% of reboots.
> >> > > > >
> >> > > > > Please direct.
> >> > > > >
> >> > > > > Thanks.
> >> > > >
> >> > > > After 16 bisects I tracked down the problem with my USB keyboard
> >> > > > adapter and USB bluetooth dongle not initializing on boot-up to this
> >> > > > commit:
> >> > >
> >> > > my fear is the following: something ELSE in the system is missing a
> >> > > synchronize_rcu(), and this case happened to save it by virtue of being
> >> > > spurious.
> >> > >
> >> > > Paul: do we call synchronize_rcu() before we go to userspace for the
> >> > > first time somewhere?
> >> >
> >> > In many cases, yes.  But I don't know of a specific synchronize_rcu()
> >> > that is guaranteed to be executed before the first userspace execution
> >> > on all kernel configurations for all architectures.
> >> >
> >> > I recommend putting a printk() in synchronize_rcu() to check up on this
> >> > on the system in question.  (Or a WARN_ON_ONCE() if log space is limited.)
> >>
> >> If you are recommending I put in a prink() then I will need a patch.  Also
> >> tell me what information you want me to collect.  I'm just an avid Linux
> >> fan/user that would really like my keyboard/USB devices to work on boot-up.
> >
> > Fair enough.  Could you please send me your .config?  The output of
> > "grep RCU .config" will suffice.  I also need to know what version of
> > the kernel you are using -- looks like 2.6.28, but please let me know.
> >
> 
> I'm using a vanilla kernel repository to compile at commit
> b79e83bdd961ec9b862191c0df51aaeb3cb85664 (according to the Makefile it
> is 2.6.29-rc7).
> 
> $> grep RCU .config
> # RCU Subsystem
> CONFIG_TREE_RCU=y
> # CONFIG_TREE_PREEMPT_RCU is not set
> # CONFIG_RCU_TRACE is not set
> CONFIG_RCU_FANOUT=32
> # CONFIG_RCU_FANOUT_EXACT is not set
> # CONFIG_TREE_RCU_TRACE is not set
> # CONFIG_RCU_TORTURE_TEST is not set
> # CONFIG_RCU_CPU_STALL_DETECTOR is not set

Got it, thank you!  Could you please give the following (untested)
patch a go?

							Thanx, Paul


diff --git a/kernel/rcupdate.c b/kernel/rcupdate.c
index cae8a05..ce855b2 100644
--- a/kernel/rcupdate.c
+++ b/kernel/rcupdate.c
@@ -86,6 +86,7 @@ void synchronize_rcu(void)
 	if (rcu_blocking_is_gp())
 		return;
 
+WARN_ONCE(1, "First blocking call to synchronize_rcu()");
 	init_completion(&rcu.completion);
 	/* Will wake me after RCU finished. */
 	call_rcu(&rcu.head, wakeme_after_rcu);
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux