On Tue, Oct 27, 2009 at 7:27 PM, Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> wrote: > 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); > I'm compiling now, branching off from the problematic commit. What info do you want me to send you? Thanks. -- 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