zoukankan      html  css  js  c++  java
  • (OK) 从do_register_framebuffer开始的函数调用关系


    http://lkml.iu.edu/hypermail/linux/kernel/1301.0/01502.html


    Hi,

    I am getting this during hibernate/resume with current Linus' head
    (5f738967e89584f99c6a11c6bf09b16c50b6a03e).

    ======================================================
    [ INFO: possible circular locking dependency detected ]
    3.8.0-rc2-00038-ge93d369 #178 Not tainted
    -------------------------------------------------------
    s2disk/3024 is trying to acquire lock:
    ((fb_notifier_list).rwsem){++++.+}, at: [<ffffffff8107791a>] __blocking_notifier_call_chain+0x5a/0xd0

    but task is already holding lock:
    (console_lock){+.+.+.}, at: [<ffffffff81339865>] do_fb_ioctl+0x455/0x590

    which lock already depends on the new lock.


    the existing dependency chain (in reverse order) is:

    -> #1 (console_lock){+.+.+.}:
    [<ffffffff810b1c22>] validate_chain+0x632/0x720
    [<ffffffff810b2069>] __lock_acquire+0x359/0x580
    [<ffffffff810b23b1>] lock_acquire+0x121/0x190
    [<ffffffff810478df>] console_lock+0x6f/0x80
    [<ffffffff813b4a5d>] register_con_driver+0x5d/0x160
    [<ffffffff813b6c7d>] take_over_console+0x2d/0x70
    [<ffffffff81346e33>] fbcon_takeover+0x63/0xc0
    [<ffffffff81347b05>] fbcon_fb_registered+0xc5/0x170
    [<ffffffff81347d88>] fbcon_event_notify+0x1d8/0x690
    [<ffffffff815a83b3>] notifier_call_chain+0x93/0x140
    [<ffffffff81077931>] __blocking_notifier_call_chain+0x71/0xd0
    [<ffffffff810779a1>] blocking_notifier_call_chain+0x11/0x20
    [<ffffffff81337836>] fb_notifier_call_chain+0x16/0x20
    [<ffffffff81338ed1>] do_register_framebuffer+0x221/0x2e0

    [<ffffffff81338fb2>] register_framebuffer+0x22/0x40
    [<ffffffffa00e538c>] drm_fb_helper_single_fb_probe+0x2bc/0x300 [drm_kms_helper]
    [<ffffffffa00e5462>] drm_fb_helper_initial_config+0x92/0xd0 [drm_kms_helper]
    [<ffffffffa014528b>] intel_fbdev_init+0x8b/0xc0 [i915]
    [<ffffffffa00f8d63>] i915_load_modeset_init+0x113/0x1d0 [i915]
    [<ffffffffa00fad25>] i915_driver_load+0x5e5/0x940 [i915]
    [<ffffffffa009cb46>] drm_get_pci_dev+0x196/0x2a0 [drm]
    [<ffffffffa00f590d>] i915_pci_probe+0x3d/0x90 [i915]
    [<ffffffff81323359>] local_pci_probe+0x49/0x80
    [<ffffffff81323469>] __pci_device_probe+0xd9/0xe0
    [<ffffffff81324686>] pci_device_probe+0x36/0x60
    [<ffffffff813dbce9>] really_probe+0x79/0x350
    [<ffffffff813dc014>] driver_probe_device+0x54/0xa0
    [<ffffffff813dc0fb>] __driver_attach+0x9b/0xa0
    [<ffffffff813d9ea8>] bus_for_each_dev+0x68/0x90
    [<ffffffff813db99c>] driver_attach+0x1c/0x20
    [<ffffffff813db3b8>] bus_add_driver+0x1d8/0x290
    [<ffffffff813dc683>] driver_register+0x63/0x150
    [<ffffffff81324792>] __pci_register_driver+0x62/0x70
    [<ffffffffa009cd5c>] drm_pci_init+0x10c/0x120 [drm]
    [<ffffffffa018c05d>] tpm_bios_measurements_start+0x5d/0xa0 [tpm_bios]
    [<ffffffff810001dd>] do_one_initcall+0x3d/0x180
    [<ffffffff810bdbfb>] do_init_module+0x6b/0x1d0
    [<ffffffff810c089e>] load_module+0x6fe/0x7e0
    [<ffffffff810c0aeb>] sys_init_module+0x9b/0xc0
    [<ffffffff815ad229>] system_call_fastpath+0x16/0x1b

    -> #0 ((fb_notifier_list).rwsem){++++.+}:
    [<ffffffff810b158e>] check_prev_add+0x3de/0x440
    [<ffffffff810b1c22>] validate_chain+0x632/0x720
    [<ffffffff810b2069>] __lock_acquire+0x359/0x580
    [<ffffffff810b23b1>] lock_acquire+0x121/0x190
    [<ffffffff815a13a2>] down_read+0x42/0x60
    [<ffffffff8107791a>] __blocking_notifier_call_chain+0x5a/0xd0
    [<ffffffff810779a1>] blocking_notifier_call_chain+0x11/0x20
    [<ffffffff81337836>] fb_notifier_call_chain+0x16/0x20
    [<ffffffff81339262>] fb_set_var+0x232/0x3e0
    [<ffffffff81339878>] do_fb_ioctl+0x468/0x590
    [<ffffffff81339c6d>] fb_ioctl+0x3d/0x50
    [<ffffffff811a460d>] do_vfs_ioctl+0x9d/0x350
    [<ffffffff811a4951>] sys_ioctl+0x91/0xb0
    [<ffffffff815ad229>] system_call_fastpath+0x16/0x1b

    other info that might help us debug this:

    Possible unsafe locking scenario:

    CPU0 CPU1
    ---- ----
    lock(console_lock);
    lock((fb_notifier_list).rwsem);
    lock(console_lock);
    lock((fb_notifier_list).rwsem);

    *** DEADLOCK ***

    2 locks held by s2disk/3024:
    #0: (&fb_info->lock){+.+.+.}, at: [<ffffffff81337dd2>] lock_fb_info+0x22/0x50
    #1: (console_lock){+.+.+.}, at: [<ffffffff81339865>] do_fb_ioctl+0x455/0x590

    stack backtrace:
    Pid: 3024, comm: s2disk Not tainted 3.8.0-rc2-00038-ge93d369 #178
    Call Trace:
    [<ffffffff810af6cf>] print_circular_bug+0x10f/0x120
    [<ffffffff810b158e>] check_prev_add+0x3de/0x440
    [<ffffffff810b1c22>] validate_chain+0x632/0x720
    [<ffffffff810b2069>] __lock_acquire+0x359/0x580
    [<ffffffff810b0f7d>] ? trace_hardirqs_on+0xd/0x10
    [<ffffffff810b23b1>] lock_acquire+0x121/0x190
    [<ffffffff8107791a>] ? __blocking_notifier_call_chain+0x5a/0xd0
    [<ffffffff815a13a2>] down_read+0x42/0x60
    [<ffffffff8107791a>] ? __blocking_notifier_call_chain+0x5a/0xd0
    [<ffffffff8107791a>] __blocking_notifier_call_chain+0x5a/0xd0
    [<ffffffff810779a1>] blocking_notifier_call_chain+0x11/0x20
    [<ffffffff81337836>] fb_notifier_call_chain+0x16/0x20
    [<ffffffff81339262>] fb_set_var+0x232/0x3e0
    [<ffffffff81339865>] ? do_fb_ioctl+0x455/0x590
    [<ffffffff810b0f7d>] ? trace_hardirqs_on+0xd/0x10
    [<ffffffff81339878>] do_fb_ioctl+0x468/0x590
    [<ffffffff810b2069>] ? __lock_acquire+0x359/0x580
    [<ffffffff811b1b6c>] ? fget_light+0xbc/0x480
    [<ffffffff81339c6d>] fb_ioctl+0x3d/0x50
    [<ffffffff811a460d>] do_vfs_ioctl+0x9d/0x350
    [<ffffffff811b1ae7>] ? fget_light+0x37/0x480
    [<ffffffff811a4951>] sys_ioctl+0x91/0xb0
    [<ffffffff815ad229>] system_call_fastpath+0x16/0x1b


    --
    Jiri Kosina
    SUSE Labs
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@xxxxxxxxxxxxxxx
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

  • 相关阅读:
    centos6.8安装DB2 10.5
    linux yum配置本地iso镜像
    DB2的空间数据库管理复杂配置
    高性能计算linux集群常用配置
    centos 6.8操作系统安装arcgis server 10.4
    【转】用python实现简单的文本情感分析
    Python3制作中文词云图
    MongoDB Replica Set搭建集群
    pycharm编写spark程序,导入pyspark包
    Mysql变量声明与使用
  • 原文地址:https://www.cnblogs.com/ztguang/p/12645179.html
Copyright © 2011-2022 走看看