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-31 11:26:23 -03:00
2011-01-30 01:14:14 -08:00
2011-04-11 07:27:24 -07:00
2011-03-29 12:11:16 -07:00
2011-03-31 11:26:23 -03:00
2011-03-23 10:42:00 +01:00
2011-04-18 10:15:43 -07:00
2011-03-31 11:26:23 -03:00
2011-04-12 11:13:00 +02:00
2011-03-23 12:24:23 -07:00
2011-03-31 11:26:23 -03: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-01-20 17:50:17 +01:00
2011-01-20 17:50:17 +01:00
2011-01-13 08:03:19 -08:00
2011-03-31 11:26:23 -03:00
2011-03-16 15:11:04 -07:00
2011-03-01 22:24:19 +03:00
2011-03-31 11:26:23 -03:00
2011-03-26 14:15:06 +00:00
2011-03-31 11:26:23 -03:00
2011-02-18 16:54:54 -05:00
2011-03-31 11:26:23 -03:00
2011-01-13 08:03:08 -08:00
2011-04-14 00:22:27 -07:00
2011-03-31 11:26:23 -03:00
2011-02-24 19:58:42 +01:00
2011-01-20 18:30:17 -08:00
2011-03-21 22:59:08 -04:00
2011-03-15 02:42:32 -04:00
2011-01-31 14:03:00 -08:00
2011-03-30 16:53:38 -07:00
2011-01-19 23:51:37 +01:00
2011-01-15 20:07:45 -05:00
2011-03-10 08:52:07 +01:00
2011-03-22 17:43:59 -07:00
2011-03-11 14:25:50 +00:00
2011-01-10 13:31:14 -08:00
2011-01-13 08:03:12 -08:00
2011-03-08 08:28:01 +01:00
2011-01-07 17:50:31 +11:00
2011-03-10 08:52:27 +01:00
2011-04-18 11:41:33 +02:00
2011-03-03 10:53:20 -05:00
2011-03-23 19:47:19 -07:00
2011-03-10 08:52:07 +01:00
2011-03-23 19:47:06 -07:00
2011-01-13 08:03:17 -08:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-02-16 13:30:48 +01:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-03-22 17:44:00 -07:00
2011-03-22 17:44:10 -07:00
2011-03-22 17:44:10 -07:00
2011-03-22 17:44:10 -07:00
2011-03-31 11:26:23 -03:00
2011-03-30 17:14:33 -07:00
2011-01-26 10:50:06 +10:00
2011-03-31 11:26:23 -03:00
2011-01-24 14:51:56 -08:00
2011-03-16 17:54:33 -04:00
2011-01-12 12:47:34 -05:00
2011-01-13 08:03:22 -08:00
2011-03-22 17:44:15 -07:00
2011-03-23 19:47:02 -07:00
2011-01-13 08:03:13 -08:00
2011-03-22 19:25:05 -07:00
2011-03-21 12:13:10 -04:00
2011-03-14 17:02:43 -07:00
2011-01-20 17:01:09 -08:00
2011-01-10 08:51:44 -08:00
2011-03-08 16:10:38 +01:00
2011-04-18 18:25:41 +10:00
2011-03-23 22:16:41 +01:00
2011-03-24 13:54:30 +00:00
2011-01-13 19:59:52 +00:00
2011-03-31 11:26:23 -03:00
2011-02-25 12:00:34 -08:00
2011-03-31 11:26:23 -03:00
2011-03-10 11:35:17 +01:00
2011-03-10 11:35:15 +01:00
2011-03-31 11:26:23 -03:00
2011-03-07 01:12:28 +05:30
2011-02-03 15:39:16 -08:00
2011-03-14 08:40:51 -07:00
2011-04-05 23:51:37 +02:00
2011-03-22 17:44:11 -07:00
2011-01-13 21:49:56 -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
2011-03-23 19:46:17 -07:00
2011-01-12 20:16:43 -05:00
2011-03-31 11:26:23 -03:00
2011-03-14 19:12:20 -04:00
2011-01-09 15:42:55 -08:00
2011-03-15 02:21:45 -04:00
2011-03-31 11:26:23 -03:00
2011-03-21 10:05:22 -07:00
2011-01-10 08:51:44 -08:00
2011-02-03 15:39:17 -08:00
2011-02-16 17:48:59 +01:00
2011-01-07 17:50:27 +11:00
2011-04-12 15:21:04 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-07 17:50:23 +11:00
2011-01-07 17:50:23 +11:00
2011-03-10 10:31:48 -05:00
2011-02-11 16:23:33 -05:00
2011-01-07 17:50:29 +11:00
2011-03-22 08:35:35 +01:00
2011-03-22 17:44:05 -07:00
2011-01-10 22:11:23 +01:00
2011-01-14 08:06:39 -08:00
2011-03-05 10:56:00 +01:00
2011-02-03 16:37:28 +01:00
2011-03-31 11:26:23 -03:00
2011-02-11 15:05:49 +01:00
2011-03-31 11:26:23 -03:00
2011-03-10 19:15:58 +01:00
2011-02-15 15:21:11 -08:00
2011-02-17 09:52:03 -08:00
2011-02-23 00:53:26 +00:00
2011-03-20 14:50:53 +01:00
2011-03-31 11:26:23 -03:00
2011-03-12 15:08:54 -08:00
2011-03-09 16:10:56 -05:00
2011-01-11 23:55:51 +01:00
2011-01-19 23:31:09 -08:00
2011-03-18 15:14:45 -07:00
2011-02-27 16:11:51 -08:00
2011-03-10 16:37:26 -08:00
2011-02-10 07:51:44 -05:00
2011-02-18 12:42:28 -08:00
2011-01-31 21:17:41 -08:00
2011-04-18 13:29:03 -07:00
2011-03-31 11:26:23 -03:00
2011-03-23 19:47:08 -07:00
2011-03-31 11:26:23 -03:00
2011-03-30 00:37:41 +02:00
2011-03-29 14:48:19 +02:00
2011-03-31 11:26:23 -03:00
2011-03-20 21:13:43 -04:00
2011-03-31 11:26:23 -03:00
2011-03-20 20:08:48 -04:00
2011-03-24 08:36:10 +01:00
2011-03-22 16:17:32 -07:00
2011-03-22 04:53:54 -03:00
2011-02-17 11:12:40 -08:00
2011-01-13 17:32:31 -08:00
2011-03-22 17:44:14 -07:00
2011-04-01 16:14:30 +11:00
2011-03-08 11:17:18 +11:00
2011-03-08 11:17:18 +11:00
2011-03-08 11:17:22 +11:00
2011-03-18 16:54:31 +00:00
2011-01-13 17:32:47 -08:00
2011-02-13 16:54:24 -08:00
2011-01-24 14:45:11 +10:30
2011-01-13 08:03:07 -08:00
2011-02-18 08:02:10 -08:00
2011-01-07 17:02:58 -08:00
2011-01-07 08:43:37 +01:00
2011-03-22 17:44:01 -07:00
2011-03-31 11:26:23 -03:00
2011-03-17 13:08:30 -03:00
2011-01-12 11:23:08 +02:00
2011-01-12 11:23:12 +02:00
2011-03-31 11:26:23 -03:00
2011-01-13 08:03:06 -08:00
2011-01-13 08:03:05 -08:00
2011-03-25 21:00:29 -07:00
2011-03-31 11:26:23 -03:00
2011-01-14 13:12:45 +00:00
2011-02-18 11:32:28 -08:00
2011-01-21 13:38:57 -08:00
2011-03-31 11:26:23 -03:00
2011-03-18 22:33:38 -07:00
2011-01-10 19:04:08 +01:00
2011-03-22 04:53:56 -03:00
2011-04-14 16:06:54 -07:00
2011-01-15 13:28:17 +02:00
2011-02-03 16:08:57 -08:00
2011-02-14 17:38:30 -08:00
2011-01-13 17:32:34 -08:00
2011-01-13 17:32:46 -08:00
2011-03-22 17:44:03 -07:00
2011-03-31 11:26:23 -03:00
2011-01-13 17:32:46 -08:00
2011-02-15 10:24:31 +01:00
2011-02-21 15:21:53 -08:00
2011-01-24 14:32:52 +10:30
2011-01-16 13:47:07 -05:00
2011-03-31 11:26:23 -03:00
2011-01-30 01:14:38 -08:00
2011-03-02 13:43:15 -08:00
2011-03-18 09:04:20 -04:00
2011-01-12 20:03:43 -05:00
2011-01-12 20:03:43 -05:00
2011-02-22 10:19:31 -08:00
2011-04-01 20:23:25 -07:00
2011-04-04 17:00:54 +02:00
2011-03-03 13:32:07 -08:00
2011-03-31 11:26:23 -03:00
2011-03-11 15:39:27 -05:00
2011-03-23 15:29:04 -04:00
2011-03-11 15:39:26 -05:00
2011-03-11 15:38:44 -05:00
2011-03-27 17:48:07 +02:00
2011-03-24 17:03:14 -04:00
2011-01-25 15:24:47 -05:00
2011-03-10 17:29:40 +09:00
2011-03-31 11:26:23 -03:00
2011-02-03 16:08:57 -08:00
2011-03-31 11:26:23 -03:00
2011-02-28 01:36:38 -07:00
2011-01-15 22:01:58 -07:00
2011-02-04 11:46:50 -07:00
2011-03-23 14:55:56 -06:00
2011-03-16 17:28:10 -07:00
2011-03-31 11:26:23 -03:00
2011-02-15 11:10:20 +01:00
2011-03-31 11:26:23 -03:00
2011-03-22 17:44:03 -07:00
2011-03-24 10:16:26 -07:00
2011-03-14 02:58:03 -04:00
2011-01-16 13:47:07 -05:00
2011-05-10 15:43:36 -07:00
2011-05-11 15:18:53 -07:00
2011-01-16 11:56:26 -08:00
2011-05-21 12:16:44 -07:00
2011-05-11 15:18:53 -07:00
2011-02-28 11:20:03 +01:00
2011-04-07 11:14:49 -07:00
2011-03-09 11:59:33 -08:00
2011-04-18 10:35:30 -07:00
2011-01-10 07:38:54 -08:00
2011-03-31 11:26:23 -03:00
2011-04-12 11:13:00 +02:00
2011-03-11 15:13:26 -05:00
2011-03-15 00:43:14 +01:00
2011-03-15 00:43:14 +01:00
2011-03-23 22:16:41 +01:00
2011-03-31 11:26:23 -03:00
2011-01-25 15:24:47 -05:00
2011-04-18 10:39:38 +02:00
2011-02-02 15:28:20 +01:00
2011-03-01 22:27:26 +03:00
2011-01-13 08:03:21 -08:00
2011-01-13 08:03:21 -08:00
2011-03-31 11:26:23 -03:00
2011-01-13 08:03:10 -08:00
2011-03-23 19:46:37 -07:00
2011-03-04 09:23:30 -08:00
2011-03-22 17:44:00 -07:00
2011-03-31 11:26:23 -03:00
2011-01-12 19:14:55 +01:00
2011-03-24 21:16:31 -04:00
2011-01-13 17:32:48 -08:00
2011-01-14 02:36:43 +00:00
2011-04-01 07:27:31 -07:00
2011-03-31 11:26:23 -03:00
2011-02-01 11:12:29 -05:00
2011-03-23 19:46:23 -07:00
2011-03-09 13:52:27 -05:00
2011-03-23 19:46:41 -07:00
2011-04-14 16:06:56 -07:00
2011-02-25 15:07:37 -08:00
2011-04-14 16:06:56 -07:00
2011-03-22 17:44:03 -07:00
2011-01-13 08:03:23 -08:00
2011-03-29 18:44:05 -07:00
2011-01-27 12:30:38 +01:00
2011-01-27 12:30:39 +01:00
2011-01-27 12:30:40 +01:00
2011-04-14 16:06:55 -07:00
2011-03-23 19:47:02 -07:00
2011-01-07 17:50:27 +11:00
2011-01-13 08:03:19 -08:00
2011-01-19 15:37:31 +09:00
2011-03-22 17:44:15 -07:00
2011-04-07 11:14:49 -07:00
2011-01-23 21:00:05 +02:00
2011-03-22 20:48:04 +02:00
2011-03-22 17:16:34 +09:00
2011-03-31 11:26:23 -03:00
2011-03-23 07:48:42 -07:00
2011-03-31 11:26:23 -03:00
2011-03-09 14:08:09 -08:00
2011-03-28 06:05:24 -04:00
2011-03-31 11:26:23 -03:00
2011-01-27 12:30:38 +01: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-11 22:54:42 +02:00
2011-03-22 15:47:22 +09:00
2011-03-24 10:16:26 -07:00
2011-03-21 00:40:29 -04:00
2011-03-15 00:43:46 +01:00
2011-03-09 16:43:24 -08:00
2011-03-31 11:26:23 -03:00
2011-01-24 09:33:36 -08:00
2011-02-28 18:00:31 -08:00
2011-02-02 15:28:13 +01:00
2011-02-04 12:41:21 -08:00
2011-02-21 12:53:08 -08:00
2011-03-31 11:26:23 -03:00
2011-02-02 15:28:18 +01:00
2011-03-13 16:35:18 -04:00
2011-02-23 18:05:11 -05:00
2011-01-13 08:03:08 -08:00
2011-03-31 11:26:23 -03:00
2011-02-03 09:28:46 -05:00
2011-02-17 11:59:56 -08:00
2011-01-13 08:03:20 -08:00
2011-03-22 16:17:32 -07:00
2011-03-22 17:44:09 -07:00
2011-03-31 11:26:23 -03:00
2011-03-31 11:26:23 -03:00
2011-01-13 08:03:18 -08:00
2011-03-23 19:47:03 -07:00
2011-03-31 11:26:23 -03:00
2011-03-22 04:53:37 -03:00
2011-03-22 04:53:33 -03:00
2011-03-31 11:26:23 -03:00
2011-03-22 04:54:51 -03:00
2011-01-24 14:45:11 +10:30
2011-02-09 08:19:55 +10:30
2011-03-28 12:53:29 +01:00
2011-04-14 16:06:55 -07:00
2011-02-17 11:13:19 -08:00
2011-03-31 11:26:23 -03:00
2011-02-21 10:07:23 +01:00
2011-03-24 21:17:51 -04:00
2011-01-17 08:05:27 -08:00
2011-03-13 20:22:28 -07:00
2011-03-31 11:26:23 -03:00
2011-01-13 08:03:24 -08:00
2011-03-22 17:44:17 -07:00