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 8:35 PM, Paul E. McKenney
<paulmck@xxxxxxxxxxxxxxxxxx> wrote:
> On Tue, Oct 27, 2009 at 08:18:10PM -0400, eschvoca wrote:
>> 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?
>
> Given that Arjan is much more familiar with the boot-up code than am I,
> I suggest sending him the stack trace generated by the WARN_ONCE().
> It should be tagged on the console with "First blocking call to
> synchronize_rcu()".
>
>                                                        Thanx, Paul
>

Here is the trace from dmesg:

[   13.334718] EXT4-fs error (device sda2): ext4_mb_generate_buddy:
EXT4-fs: group 4: 1051 blocks in bitmap, 108 in gd
[   13.334733] Aborting journal on device sda2:8.
[   13.368166] ext4_abort called.
[   13.368171] EXT4-fs error (device sda2): ext4_journal_start_sb:
Detected aborted journal
[   13.368174] Remounting filesystem read-only
[   13.389014] lp: driver loaded but no devices found
[   13.401049] dcdbas dcdbas: Dell Systems Management Base Driver
(version 5.6.0-3.2)
[   13.867414] EXT4-fs error (device sda2) in
ext4_reserve_inode_write: Journal has aborted
[   13.892484] Remounting filesystem read-only
[   14.034630] EXT4-fs error (device sda2): ext4_mb_generate_buddy:
EXT4-fs: group 5: 6795 blocks in bitmap, 6082 in gd
[   14.034692] mpage_da_map_blocks block allocation failed for inode
16807 at logical offset 0 with max blocks 1 with error -30
[   14.034700] This should not happen.!! Data will be lost
[   14.034708] ext4_da_writepages: jbd2_start: 1024 pages, ino 16807; err -30
[   14.034711] Pid: 48, comm: pdflush Tainted: G        W
2.6.29-rc7.14-paul1 #1
[   14.034712] Call Trace:
[   14.034718]  [<c04e1278>] ? printk+0x18/0x20
[   14.034723]  [<c022ac87>] ext4_da_writepages+0x567/0x5a0
[   14.034726]  [<c022db90>] ? ext4_da_get_block_write+0x0/0x220
[   14.034730]  [<c0190681>] do_writepages+0x21/0x40
[   14.034733]  [<c01d195a>] __writeback_single_inode+0x8a/0x430
[   14.034736]  [<c0123724>] ? dequeue_task+0xc4/0x110
[   14.034739]  [<c01d2157>] generic_sync_sb_inodes+0x347/0x440
[   14.034741]  [<c01d23fd>] writeback_inodes+0x4d/0xe0
[   14.034744]  [<c018fb7e>] background_writeout+0x9e/0xc0
[   14.034746]  [<c0190d51>] pdflush+0x131/0x200
[   14.034748]  [<c018fae0>] ? background_writeout+0x0/0xc0
[   14.034750]  [<c0190c20>] ? pdflush+0x0/0x200
[   14.034753]  [<c014916c>] kthread+0x3c/0x70
[   14.034755]  [<c0149130>] ? kthread+0x0/0x70
[   14.034759]  [<c0103f27>] kernel_thread_helper+0x7/0x10
[   14.034835] journal commit I/O error

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

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

  Powered by Linux