lkml.org 
[lkml]   [2009]   [Sep]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: INFO: possible recursive locking detected ps2_command
    From
    2008/8/8 Dmitry Torokhov <dmitry.torokhov@gmail.com>:
    > On Fri, Aug 08, 2008 at 12:49:49PM +0200, Peter Zijlstra wrote:
    >> On Thu, 2008-07-31 at 23:04 -0400, Dmitry Torokhov wrote:
    >> > On Thu, Jul 31, 2008 at 02:57:39PM -0700, Andrew Morton wrote:
    >> > >
    >> > > (cc linux-input)
    >> > >
    >> > > On Thu, 31 Jul 2008 11:41:25 +0200
    >> > > "Zdenek Kabelac" <zdenek.kabelac@gmail.com> wrote:
    >> > >
    >> > > > Hi
    >> > > >
    >> > > > During mouse unplugging from psaux connector from the laptops' docking
    >> > > > station I've got attached INFO trace.
    >> > > > (laptops still has synaptics device)
    >> > > >
    >> >
    >> > Dell?
    >> >
    >> > > > Also for unknown reason to me  psaux mouse & synaptic device do not
    >> > > > work somehow together - is it hw limitation
    >> > > > of /dev/input/mice  interface?
    >> > > > (USB mouse and synaptics do work quite well together)
    >> > > >
    >> > > > [ INFO: possible recursive locking detected ]
    >> > > > 2.6.27-rc1 #48
    >> > >
    >> > > (it's 2.6.27-rc1)
    >> > >
    >> >
    >> > Peter, here is the trace we talked about long time ago. For some reason
    >> > lockdep annotation only works once. If reconnect is forced or psmouse
    >> > module is reloaded lockdep starts complaining about passthrough port.
    >>
    >> Bit puzzling - and I don't have any ps2 hardware around to test with
    >> (nor do I normally use modules - but that is fixable of course).
    >>
    >> Does Rabin's patch help?
    >>
    >>   http://lkml.org/lkml/2008/8/7/329
    >>
    >
    > I doubt it resolves problem fully because it only takes care of module
    > unload. I can easily trip lockdep by reconnecting the device. Just to
    > give some more details about the problem:
    >
    >  - synaptics touchpads have a pass-through port that allows to connect
    >   either external mouse or maybe a trackpoint device. Both devices
    >   are represented by 'serio' structures and are handled by the same
    >   driver (psmouse).
    >
    >  - as far as I know we have proper locking there and lockdep
    >   annotatinos were added to lockdep to reflect the nesting of the
    >   serio ports.
    >
    >  - if child port (pass-through port) is destroyed and recreated (due
    >   to module unload, or because user requested reconnect through sysfs
    >   or system-initiated reconnect) lockdep starts complaining although
    >   the new child port should still have the same "depth" as the old
    >   one.
    >

    Well just noticed this issue again in my log - during resume operation
    - thus no external mouse connection in the game this time:

    platform dock.2: completing resume
    platform dock.1: completing resume
    platform dock.0: completing resume
    PM: Finishing wakeup.
    Restarting tasks ... done.
    PM: Removing info for No Bus:vcs63
    PM: Removing info for No Bus:vcsa63
    psmouse.c: Failed to enable mouse on isa0060/serio1
    PM: Removing info for No Bus:mouse1
    PM: Removing info for No Bus:event8
    PM: Removing info for No Bus:input8

    =============================================
    [ INFO: possible recursive locking detected ]
    2.6.31-rc8-00043-gf2332bf #30
    ---------------------------------------------
    kseriod/207 is trying to acquire lock:
    (&ps2dev->cmd_mutex){+.+...}, at: [<ffffffff8132675b>] ps2_command+0x5b/0x470

    but task is already holding lock:
    (&ps2dev->cmd_mutex){+.+...}, at: [<ffffffff8132675b>] ps2_command+0x5b/0x470

    other info that might help us debug this:
    4 locks held by kseriod/207:
    #0: (serio_mutex){+.+.+.}, at: [<ffffffff8132453e>] serio_thread+0x3e/0x400
    #1: (&serio->drv_mutex){+.+.+.}, at: [<ffffffff81323b00>]
    serio_connect_driver+0x30/0x60
    #2: (psmouse_mutex){+.+.+.}, at: [<ffffffffa00c5f85>]
    psmouse_connect+0x35/0x370 [psmouse]
    #3: (&ps2dev->cmd_mutex){+.+...}, at: [<ffffffff8132675b>]
    ps2_command+0x5b/0x470

    stack backtrace:
    Pid: 207, comm: kseriod Not tainted 2.6.31-rc8-00043-gf2332bf #30
    Call Trace:
    [<ffffffff8107f0ba>] __lock_acquire+0xe6a/0x1090
    [<ffffffff8107f37a>] lock_acquire+0x9a/0x180
    [<ffffffff8132675b>] ? ps2_command+0x5b/0x470
    [<ffffffff813da81f>] __mutex_lock_common+0x5f/0x4a0
    [<ffffffff8132675b>] ? ps2_command+0x5b/0x470
    [<ffffffff8100f4b8>] ? dump_trace+0x118/0x2f0
    [<ffffffff8132675b>] ? ps2_command+0x5b/0x470
    [<ffffffff813dad41>] mutex_lock_nested+0x41/0x50
    [<ffffffff8132675b>] ps2_command+0x5b/0x470
    [<ffffffffa00c47b3>] psmouse_sliced_command+0x33/0x90 [psmouse]
    [<ffffffffa00c6a9c>] synaptics_pt_write+0x2c/0x60 [psmouse]
    [<ffffffff81326636>] ps2_sendbyte+0x66/0x130
    [<ffffffff8107d7ed>] ? trace_hardirqs_on_caller+0x15d/0x1a0
    [<ffffffff8107d83d>] ? trace_hardirqs_on+0xd/0x10
    [<ffffffff813267f9>] ps2_command+0xf9/0x470
    [<ffffffff8107d83d>] ? trace_hardirqs_on+0xd/0x10
    [<ffffffff813dcbbb>] ? _spin_unlock_irq+0x3b/0x60
    [<ffffffffa00c494c>] psmouse_probe+0x2c/0xa0 [psmouse]
    [<ffffffff81323d86>] ? serio_open+0x16/0x50
    [<ffffffffa00c6108>] psmouse_connect+0x1b8/0x370 [psmouse]
    [<ffffffff81323b0b>] serio_connect_driver+0x3b/0x60
    [<ffffffff81323b50>] serio_driver_probe+0x20/0x30
    [<ffffffff812d2379>] driver_probe_device+0x89/0x180
    [<ffffffff812d2520>] ? __device_attach+0x0/0x60
    [<ffffffff812d2573>] __device_attach+0x53/0x60
    [<ffffffff812d13dc>] bus_for_each_drv+0x6c/0xa0
    [<ffffffff812d2639>] device_attach+0x89/0x90
    [<ffffffff81323cbd>] serio_find_driver+0x1d/0x50
    [<ffffffff813240c7>] serio_reconnect_port+0x57/0x90
    [<ffffffff81324758>] serio_thread+0x258/0x400
    [<ffffffff81069540>] ? autoremove_wake_function+0x0/0x40
    [<ffffffff81324500>] ? serio_thread+0x0/0x400
    [<ffffffff810690e6>] kthread+0xa6/0xb0
    [<ffffffff8100d2da>] child_rip+0xa/0x20
    [<ffffffff8100cc40>] ? restore_args+0x0/0x30
    [<ffffffff81069040>] ? kthread+0x0/0xb0
    [<ffffffff8100d2d0>] ? child_rip+0x0/0x20
    --
    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/

    \
     
     \ /
      Last update: 2009-09-04 00:51    [W:0.046 / U:0.188 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site