Hi Theodore, I got this lockdep warning in linux-next. I've not bisected it.. however seems most related to this patchset. [ 3.004015] ================================= [ 3.004161] [ INFO: inconsistent lock state ] [ 3.004161] 3.5.0-rc5+ #3 Not tainted [ 3.004161] --------------------------------- [ 3.004161] inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage. [ 3.004161] swapper/0/1 [HC1[1]:SC0[0]:HE0:SE1] takes: [ 3.004161] (&input_pool.lock){?.+...}, at: [] mix_pool_bytes.constprop.17+0x28/0x52 [ 3.004161] {HARDIRQ-ON-W} state was registered at: [ 3.004161] [] __lock_acquire+0x594/0x7cb [ 3.004161] [] lock_acquire+0xdb/0x127 [ 3.004161] [] _raw_spin_lock+0x45/0x78 [ 3.004161] [] account+0x2c/0xdd [ 3.004161] [] extract_entropy+0x9a/0x10a [ 3.004161] [] xfer_secondary_pool+0x8a/0xfa [ 3.004161] [] extract_entropy+0x85/0x10a [ 3.004161] [] get_random_bytes+0x20/0x22 [ 3.004161] [] neigh_hash_alloc+0xaf/0xc9 [ 3.004161] [] neigh_table_init+0x8c/0x264 [ 3.004161] [] arp_init+0x10/0x4d [ 3.004161] [] inet_init+0x1a4/0x2b0 [ 3.004161] [] do_one_initcall+0x7f/0x134 [ 3.004161] [] kernel_init+0x13c/0x1c0 [ 3.004161] [] kernel_thread_helper+0x4/0x10 [ 3.004161] irq event stamp: 766846 [ 3.004161] hardirqs last enabled at (766845): [] _raw_spin_unlock_irqrestore+0x3f/0x55 [ 3.004161] hardirqs last disabled at (766846): [] common_interrupt+0x67/0x6c [ 3.004161] softirqs last enabled at (766808): [] __do_softirq+0x1b1/0x205 [ 3.004161] softirqs last disabled at (766793): [] call_softirq+0x1c/0x30 [ 3.004161] [ 3.004161] other info that might help us debug this: [ 3.004161] Possible unsafe locking scenario: [ 3.004161] [ 3.004161] CPU0 [ 3.004161] ---- [ 3.004161] lock(&input_pool.lock); [ 3.004161] [ 3.004161] lock(&input_pool.lock); [ 3.004161] [ 3.004161] *** DEADLOCK *** [ 3.004161] [ 3.004161] 4 locks held by swapper/0/1: [ 3.004161] #0: (&__lockdep_no_validate__){......}, at: [] __driver_attach+0x3f/0x85 [ 3.004161] #1: (&__lockdep_no_validate__){......}, at: [] __driver_attach+0x4d/0x85 [ 3.004161] #2: (&bdev->bd_mutex){+.+.+.}, at: [] __blkdev_get+0x60/0x3bf [ 3.004161] #3: (&(&q->__queue_lock)->rlock){-.....}, at: [] blk_done+0x35/0xf6 [ 3.004161] [ 3.004161] stack backtrace: [ 3.004161] Pid: 1, comm: swapper/0 Not tainted 3.5.0-rc5+ #3 [ 3.004161] Call Trace: [ 3.004161] [] print_usage_bug.part.32+0x272/0x281 [ 3.004161] [] ? save_stack_trace+0x2c/0x49 [ 3.004161] [] ? check_usage_backwards+0xed/0xed [ 3.004161] [] mark_lock+0x364/0x502 [ 3.004161] [] __lock_acquire+0x526/0x7cb [ 3.004161] [] ? mempool_free_slab+0x17/0x19 [ 3.004161] [] ? kmem_cache_free+0xce/0x133 [ 3.004161] [] lock_acquire+0xdb/0x127 [ 3.004161] [] ? mix_pool_bytes.constprop.17+0x28/0x52 [ 3.004161] [] ? bio_free+0x3d/0x56 [ 3.004161] [] _raw_spin_lock_irqsave+0x51/0x8b [ 3.004161] [] ? mix_pool_bytes.constprop.17+0x28/0x52 [ 3.004161] [] ? bio_endio+0x2d/0x2f [ 3.004161] [] mix_pool_bytes.constprop.17+0x28/0x52 [ 3.004161] [] ? blk_update_request+0x3d8/0x469 [ 3.004161] [] add_timer_randomness+0x56/0x10d [ 3.004161] [] add_disk_randomness+0x2e/0x30 [ 3.004161] [] blk_update_bidi_request+0x63/0x6d [ 3.004161] [] __blk_end_bidi_request+0x17/0x31 [ 3.004161] [] __blk_end_request_all+0x22/0x2a [ 3.004161] [] blk_done+0x98/0xf6 [ 3.004161] [] vring_interrupt+0x2b/0x38 [ 3.004161] [] handle_irq_event_percpu+0x7f/0x1fd [ 3.004161] [] handle_irq_event+0x41/0x61 [ 3.004161] [] handle_edge_irq+0xc9/0xf0 [ 3.004161] [] handle_irq+0x125/0x132 [ 3.004161] [] ? irq_enter+0x19/0x77 [ 3.004161] [] do_IRQ+0x4d/0xb4 [ 3.004161] [] common_interrupt+0x6c/0x6c [ 3.004161] [] ? read_hpet+0x16/0x1a [ 3.004161] [] ktime_get_ts+0x73/0xbb [ 3.004161] [] ? __lock_page+0x68/0x68 [ 3.004161] [] __delayacct_blkio_start+0x22/0x24 [ 3.004161] [] io_schedule+0x52/0xcd [ 3.004161] [] sleep_on_page+0xe/0x12 [ 3.004161] [] __wait_on_bit_lock+0x46/0x8f [ 3.004161] [] ? blkdev_write_begin+0x25/0x25 [ 3.004161] [] __lock_page+0x66/0x68 [ 3.004161] [] ? autoremove_wake_function+0x3d/0x3d [ 3.004161] [] do_read_cache_page+0xd2/0x15d [ 3.004161] [] ? efi_partition+0xeb/0x82a [ 3.004161] [] read_cache_page_async+0x1c/0x1e [ 3.004161] [] read_cache_page+0xe/0x18 [ 3.004161] [] read_dev_sector+0x30/0x8a [ 3.004161] [] read_lba+0xa4/0x10c [ 3.004161] [] efi_partition+0x112/0x82a [ 3.004161] [] ? string.isra.3+0x3d/0xa4 [ 3.004161] [] ? vsnprintf+0x77/0x433 [ 3.004161] [] ? snprintf+0x34/0x36 [ 3.004161] [] check_partition+0xf5/0x1b4 [ 3.004161] [] rescan_partitions+0xae/0x29f [ 3.004161] [] ? _raw_spin_unlock+0x29/0x3d [ 3.004161] [] __blkdev_get+0x183/0x3bf [ 3.004161] [] ? unlock_new_inode+0x61/0x66 [ 3.004161] [] blkdev_get+0x18f/0x30a [ 3.004161] [] ? unlock_new_inode+0x61/0x66 [ 3.004161] [] ? bdget+0x121/0x130 [ 3.004161] [] ? put_device+0x17/0x19 [ 3.004161] [] add_disk+0x2bc/0x42d [ 3.004161] [] ? revalidate_disk+0x68/0x74 [ 3.004161] [] ? vp_get+0x4b/0x5f [ 3.004161] [] virtblk_probe+0x467/0x56b [ 3.004161] [] ? driver_probe_device+0x1c4/0x1c4 [ 3.004161] [] virtio_dev_probe+0xb7/0xdb [ 3.004161] [] driver_probe_device+0xa6/0x1c4 [ 3.004161] [] __driver_attach+0x62/0x85 [ 3.004161] [] ? local_clock+0xf/0x3c [ 3.004161] [] bus_for_each_dev+0x57/0x89 [ 3.004161] [] driver_attach+0x1e/0x20 [ 3.004161] [] bus_add_driver+0x100/0x23d [ 3.004161] [] ? loop_init+0x133/0x133 [ 3.004161] [] ? loop_init+0x133/0x133 [ 3.004161] [] driver_register+0x93/0x10e [ 3.004161] [] ? loop_init+0x133/0x133 [ 3.004161] [] register_virtio_driver+0x28/0x2c [ 3.004161] [] init+0x54/0x8b [ 3.004161] [] ? max_loop_setup+0x1a/0x1a [ 3.004161] [] do_one_initcall+0x7f/0x134 [ 3.004161] [] kernel_init+0x13c/0x1c0 [ 3.004161] [] ? do_early_param+0x8d/0x8d [ 3.004161] [] kernel_thread_helper+0x4/0x10 [ 3.004161] [] ? finish_task_switch+0x42/0xd3 [ 3.004161] [] ? retint_restore_args+0xe/0xe [ 3.004161] [] ? start_kernel+0x35c/0x35c [ 3.004161] [] ? gs_change+0xb/0xb [ 3.243752] vda: unknown partition table Thanks, Fengguang