Yinghai Lu
9f728f53dd
PCI/e1000e: Add and use pci_disable_link_state_locked()
Need to use it in _e1000e_disable_aspm. This routine is used for error
recovery, where the pci_bus_sem is already held, and we don't want
pci_disable_link_state to try to take it again. So add a locked variant
for use in cases like this.
Found lock up:
[ 2374.654557] kworker/32:1 D ffff881027f6b0f0 0 6075 2 0x00000000
[ 2374.654816] ffff88503f099a68 0000000000000046 ffff88503f098000 0000000000004000
[ 2374.654837] 00000000001d1ec0 ffff88503f099fd8 00000000001d1ec0 ffff88503f099fd8
[ 2374.654860] 0000000000004000 00000000001d1ec0 ffff88503dcc8000 ffff88503f090000
[ 2374.654880] Call Trace:
[ 2374.654898] [<ffffffff810b1302>] ? __lock_acquired+0x3a/0x224
[ 2374.654914] [<ffffffff81c2b59c>] ? _raw_spin_unlock_irq+0x30/0x36
[ 2374.654925] [<ffffffff810b069d>] ? trace_hardirqs_on_caller+0x1f/0x178
[ 2374.654936] [<ffffffff81c2ab24>] rwsem_down_failed_common+0xd3/0x103
[ 2374.654945] [<ffffffff810b158f>] ? __lock_contended+0x3a/0x2a2
[ 2374.654955] [<ffffffff81c2ab7b>] rwsem_down_read_failed+0x12/0x14
[ 2374.654967] [<ffffffff813371e4>] call_rwsem_down_read_failed+0x14/0x30
[ 2374.654981] [<ffffffff8135df20>] ? pci_disable_link_state+0x5f/0xf5
[ 2374.654990] [<ffffffff81c2a0e6>] ? down_read+0x7e/0x91
[ 2374.654999] [<ffffffff8135df20>] ? pci_disable_link_state+0x5f/0xf5
[ 2374.655008] [<ffffffff8135df20>] pci_disable_link_state+0x5f/0xf5
[ 2374.655024] [<ffffffff81661796>] e1000e_disable_aspm+0x55/0x5a
[ 2374.655037] [<ffffffff816677eb>] e1000_io_slot_reset+0x59/0xea
[ 2374.655048] [<ffffffff8135fe0d>] ? report_mmio_enabled+0x5d/0x5d
[ 2374.655057] [<ffffffff8135fe3b>] report_slot_reset+0x2e/0x5d
[ 2374.655072] [<ffffffff8135369e>] pci_walk_bus+0x8a/0xb7
[ 2374.655081] [<ffffffff8135fe0d>] ? report_mmio_enabled+0x5d/0x5d
[ 2374.655091] [<ffffffff813603be>] broadcast_error_message+0xa4/0xb2
[ 2374.655101] [<ffffffff81352c71>] ? pci_bus_read_config_dword+0x72/0x80
[ 2374.655110] [<ffffffff813606df>] do_recovery+0x9e/0xf9
[ 2374.655120] [<ffffffff81360786>] handle_error_source+0x4c/0x51
[ 2374.655129] [<ffffffff81360974>] aer_isr_one_error+0x1e9/0x21a
[ 2374.655138] [<ffffffff81360a6c>] aer_isr+0xc7/0xcc
[ 2374.655147] [<ffffffff813609a5>] ? aer_isr_one_error+0x21a/0x21a
[ 2374.655159] [<ffffffff81096d9f>] process_one_work+0x237/0x3ec
[ 2374.655168] [<ffffffff81096d10>] ? process_one_work+0x1a8/0x3ec
[ 2374.655178] [<ffffffff8109728d>] worker_thread+0x17c/0x240
[ 2374.655186] [<ffffffff810b0803>] ? trace_hardirqs_on+0xd/0xf
[ 2374.655196] [<ffffffff81097111>] ? manage_workers+0xab/0xab
[ 2374.655209] [<ffffffff8109c8ed>] kthread+0xa0/0xa8
[ 2374.655223] [<ffffffff81c332d4>] kernel_thread_helper+0x4/0x10
[ 2374.655232] [<ffffffff81c2b880>] ? retint_restore_args+0xe/0xe
[ 2374.655243] [<ffffffff8109c84d>] ? __init_kthread_worker+0x5b/0x5b
[ 2374.655252] [<ffffffff81c332d0>] ? gs_change+0xb/0xb
when aer happens,
pci_walk_bus already have down_read(&pci_bus_sem)...
then report_slot_reset
==> e1000_io_slot_reset
==> e1000e_disable_aspm
==> pci_disable_link_state...
We can not use pci_disable_link_state, and it will try to hold pci_bus_sem again.
Try to have __pci_disable_link_state that will not need to hold pci_bus_sem.
-v2: change name to pci_disable_link_state_locked() according to Jesse.
[jbarnes: make sure new function is exported for modules]
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
2011-05-21 12:16:44 -07:00
..
2011-03-05 10:55:57 +01:00
2010-07-18 15:07:15 -07:00
2011-01-24 14:32:54 +10:30
2011-03-18 10:37:40 -07:00
2011-03-31 11:26:23 -03:00
2011-04-07 11:14:49 -07:00
2011-04-11 07:27:24 -07:00
2011-04-14 13:39:45 -07:00
2011-04-17 17:50:01 -07:00
2011-04-11 13:15:56 -07:00
2011-03-31 11:26:23 -03:00
2011-04-13 11:34:19 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-05-21 12:16:44 -07:00
2011-01-11 14:03:09 -08:00
2011-03-14 14:49:29 -07:00
2011-02-28 13:22:44 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-04-07 11:14:49 -07:00
2011-03-11 01:16:23 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-05-10 05:01:31 -07:00
2011-04-11 07:27:24 -07:00
2011-03-31 11:26:23 -03:00
2011-04-11 13:15:57 -07:00
2010-07-18 19:15:25 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-04-07 11:14:49 -07:00
2011-04-13 11:53:11 -07:00
2011-03-31 11:26:23 -03:00
2011-04-12 23:52:44 +01:00
2011-03-31 11:26:23 -03:00
2011-04-11 12:55:48 -07:00
2011-03-10 13:18:12 -05:00
2011-04-11 13:15:56 -07:00
2011-03-31 11:26:23 -03:00
2011-04-11 07:27:24 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-04-14 13:16:51 -07:00
2011-03-15 19:38:03 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2009-09-01 01:13:50 -07:00
2010-12-21 02:16:08 -08:00
2010-05-10 05:01:31 -07:00
2010-12-21 02:16:08 -08:00
2010-05-14 00:19:28 -07:00
2010-11-09 09:17:56 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-06-03 03:18:23 -07:00
2010-05-14 00:19:28 -07:00
2010-11-17 12:21:14 -08:00
2010-12-12 16:45:14 +01:00
2009-09-01 01:14:07 -07:00
2009-09-01 01:14:07 -07:00
2009-09-01 01:14:07 -07:00
2010-11-09 09:17:56 -08:00
2011-03-23 14:10:37 -07:00
2010-07-11 18:15:08 -07:00
2011-03-31 11:26:23 -03:00
2010-04-01 18:38:33 -07:00
2011-03-31 11:26:23 -03:00
2010-08-21 23:09:36 -07:00
2010-05-14 00:19:28 -07:00
2011-03-23 14:10:36 -07:00
2009-12-04 15:39:55 +01:00
2011-03-31 11:26:23 -03:00
2010-11-09 09:17:56 -08:00
2010-10-24 13:41:39 -07:00
2010-12-11 12:01:48 -08:00
2010-09-09 21:36:39 -07:00
2011-02-21 13:49:48 +01:00
2010-12-01 11:11:31 -08:00
2011-03-31 11:26:23 -03:00
2010-08-24 12:24:07 -07:00
2011-03-28 22:26:34 -07:00
2011-01-10 13:31:14 -08:00
2010-09-26 18:34:29 -07:00
2011-03-28 22:26:34 -07:00
2011-03-14 15:00:12 -07:00
2010-09-26 18:34:29 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-12-23 11:44:34 -08:00
2011-01-31 20:44:46 -08:00
2011-03-12 15:08:54 -08:00
2011-01-27 15:02:57 -08:00
2010-09-02 19:06:22 -07:00
2011-03-14 16:49:28 -07:00
2010-07-14 13:40:36 -07:00
2011-03-22 19:25:05 -07:00
2011-03-22 19:25:05 -07:00
2011-03-31 11:26:23 -03:00
2010-09-24 07:40:29 -07:00
2010-05-10 05:01:31 -07:00
2010-09-26 18:34:29 -07:00
2010-08-25 15:35:43 -07:00
2010-09-26 18:34:29 -07:00
2011-02-01 13:19:07 -08:00
2011-01-27 14:18:34 -08:00
2010-01-07 23:54:26 -08:00
2011-03-29 14:48:19 +02:00
2009-11-11 19:22:21 -08:00
2011-02-28 12:22:21 -08:00
2010-09-29 13:23:30 -07:00
2010-09-26 18:34:29 -07:00
2010-12-21 02:16:08 -08:00
2011-01-13 10:05:56 -08:00
2010-12-21 02:16:08 -08:00
2011-03-31 11:26:23 -03:00
2011-01-31 20:56:54 -08:00
2010-12-25 19:37:49 -08:00
2011-03-03 13:30:20 -08:00
2010-05-14 00:19:28 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-05-14 00:19:28 -07:00
2010-08-25 15:35:43 -07:00
2011-02-28 13:22:44 -07:00
2011-02-28 13:22:44 -07:00
2011-02-28 13:22:44 -07:00
2011-03-03 21:27:42 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-02-28 13:22:44 -07:00
2010-06-03 03:18:23 -07:00
2011-03-18 21:53:03 -07:00
2011-03-03 12:19:11 -08:00
2010-11-12 14:05:43 -08:00
2010-03-30 22:02:32 +09:00
2011-03-18 15:12:14 -07:00
2011-03-31 11:26:23 -03:00
2011-02-28 13:22:44 -07:00
2011-01-14 12:45:54 -08:00
2010-12-25 19:37:49 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-05-14 00:19:28 -07:00
2010-12-21 02:16:08 -08:00
2010-03-30 22:02:32 +09:00
2010-08-30 13:50:45 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-12-10 15:55:24 -08:00
2010-09-06 18:21:56 -07:00
2011-01-03 12:43:10 -08:00
2010-08-25 15:35:43 -07:00
2011-03-31 11:26:23 -03:00
2010-03-30 23:42:26 -07:00
2010-12-12 16:45:14 +01:00
2010-07-12 20:21:44 -07:00
2011-03-27 23:35:04 -07:00
2011-02-13 21:44:44 -08:00
2011-03-16 11:14:38 -07:00
2010-06-02 06:12:19 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-05-05 21:27:44 -07:00
2011-03-27 23:35:05 -07:00
2010-11-09 09:17:56 -08:00
2010-03-30 22:02:32 +09:00
2011-03-31 11:26:23 -03:00
2010-11-09 09:17:56 -08:00
2011-02-28 13:22:44 -07:00
2010-09-01 08:55:23 -06:00
2010-05-26 20:44:30 -07:00
2010-05-14 00:19:28 -07:00
2011-04-17 23:27:16 -07:00
2011-03-31 11:26:23 -03:00
2010-07-05 19:41:18 -07:00
2010-08-25 15:35:43 -07:00
2011-02-28 12:22:20 -08:00
2010-06-02 17:50:38 +10:00
2010-05-10 05:01:31 -07:00
2010-07-12 20:21:44 -07:00
2011-03-21 18:22:22 -07:00
2011-03-10 14:26:00 -08:00
2011-03-15 19:38:03 -07:00
2009-10-12 23:59:08 -07:00
2010-09-26 18:34:29 -07:00
2011-03-31 11:26:23 -03:00
2011-03-03 13:02:32 -08:00
2010-06-21 13:40:25 -07:00
2011-03-03 13:02:31 -08:00
2010-03-30 22:02:32 +09:00
2011-03-31 11:26:23 -03:00
2010-08-06 09:25:50 -06:00
2011-04-12 14:56:00 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-11-17 10:37:52 -08:00
2010-07-05 20:08:05 -07:00
2011-01-06 11:30:23 -08:00
2010-05-10 05:01:31 -07:00
2010-12-21 02:16:08 -08:00
2010-12-21 02:16:08 -08:00
2010-05-14 00:19:28 -07:00
2011-03-19 23:06:33 -07:00
2010-06-28 12:41:33 -07:00
2011-03-31 11:26:23 -03:00
2010-08-17 02:31:15 -07:00
2010-09-02 19:06:22 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-09-15 22:06:05 -07:00
2011-01-10 16:13:33 -08:00
2011-03-22 17:44:17 -07:00
2011-03-31 11:26:23 -03:00
2011-01-10 16:13:33 -08:00
2011-03-31 11:26:23 -03:00
2011-04-11 07:27:24 -07:00
2010-09-21 18:04:47 -07:00
2011-03-12 15:08:42 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-06-03 03:18:23 -07:00
2011-03-31 11:26:23 -03:00
2011-03-18 10:37:40 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-20 17:33:19 -07:00
2011-03-23 19:46:42 -07:00
2010-08-25 15:35:43 -07:00
2009-09-01 01:14:07 -07:00
2010-07-15 20:46:22 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-05-10 05:01:31 -07:00
2010-10-27 12:23:20 -07:00
2010-10-24 13:41:39 -07:00
2010-12-06 12:59:04 -08:00
2010-05-14 00:19:28 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-14 14:10:15 -07:00
2011-03-31 11:26:23 -03:00
2011-04-12 14:56:00 -07:00
2011-02-24 22:17:02 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2010-10-24 16:25:39 -07:00
2010-09-26 18:34:29 -07:00
2010-08-27 19:25:59 -07:00
2011-01-25 22:41:55 -08:00
2011-03-31 11:26:23 -03:00
2010-05-10 05:01:31 -07:00
2010-02-15 09:27:02 -08:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-05-14 00:19:28 -07:00
2010-12-21 02:16:08 -08:00
2011-04-11 07:27:24 -07:00
2010-11-05 15:25:48 -07:00
2011-03-31 11:26:23 -03:00
2010-03-30 22:02:32 +09:00
2010-05-10 05:01:31 -07:00
2011-01-03 11:06:35 -08:00
2010-09-02 19:06:22 -07:00
2011-04-01 20:10:08 -07:00
2010-05-14 00:19:28 -07:00
2010-07-05 19:41:11 -07:00
2010-09-26 18:34:29 -07:00
2011-02-28 13:22:44 -07:00
2011-03-31 11:26:23 -03:00
2010-12-26 22:37:05 -08:00
2010-09-26 18:34:29 -07:00
2011-03-31 11:26:23 -03:00
2011-03-18 10:37:40 -07:00
2011-02-28 13:22:44 -07:00
2011-03-31 11:26:23 -03:00
2011-02-28 13:22:44 -07:00
2011-02-28 13:22:44 -07:00
2010-08-06 09:25:50 -06:00
2010-08-19 00:04:34 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-03 13:02:31 -08:00
2011-01-24 15:07:06 -08:00
2010-09-26 18:34:29 -07:00
2011-03-31 11:26:23 -03:00
2011-03-03 12:21:14 -08:00
2011-03-31 11:26:23 -03:00
2010-06-03 03:18:23 -07:00
2010-03-30 22:02:32 +09:00
2011-02-28 13:22:44 -07:00
2011-03-31 11:26:23 -03:00
2011-03-21 18:24:53 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-20 16:59:33 -08:00
2011-02-10 11:03:31 -08:00
2010-12-21 02:16:08 -08:00
2011-03-15 19:38:03 -07:00
2011-03-31 11:26:23 -03:00
2010-07-12 20:21:45 -07:00
2010-12-25 19:37:49 -08:00
2011-03-31 11:26:23 -03:00
2010-05-18 23:01:55 -07:00