Yinghai Lu
b7f42ab2e2
x86, apic: Move dmar_table_init() out of enable_IR()
On an x2apic system, we got:
[ 1.818072] ------------[ cut here ]------------
[ 1.820376] WARNING: at kernel/lockdep.c:2461 lockdep_trace_alloc+0xa5/0xe9()
[ 1.835282] Hardware name: ASSY,
[ 1.839006] Modules linked in:
[ 1.841253] Pid: 1, comm: swapper Not tainted 2.6.31-rc5-tip-03926-g39aaa80-dirty #510
[ 1.858056] Call Trace:
[ 1.859913] [<ffffffff810d13aa>] ? lockdep_trace_alloc+0xa5/0xe9
[ 1.876270] [<ffffffff81093f37>] warn_slowpath_common+0x8d/0xd0
[ 1.879132] [<ffffffff81093fa1>] warn_slowpath_null+0x27/0x3d
[ 1.896823] [<ffffffff810d13aa>] lockdep_trace_alloc+0xa5/0xe9
[ 1.900659] [<ffffffff810cf5a0>] ? lock_release_holdtime+0x2f/0x199
[ 1.917188] [<ffffffff81167a3c>] kmem_cache_alloc_notrace+0x42/0x111
[ 1.922320] [<ffffffff8106fe8c>] ? reserve_memtype+0x152/0x518
[ 1.938137] [<ffffffff8106f8b1>] ? pat_pagerange_is_ram+0x4a/0x91
[ 1.941730] [<ffffffff8106fe8c>] reserve_memtype+0x152/0x518
[ 1.958115] [<ffffffff8106ce62>] __ioremap_caller+0x1dd/0x30f
[ 1.975507] [<ffffffff81ce2c5c>] ? acpi_os_map_memory+0x2a/0x47
[ 1.978987] [<ffffffff8106d0fd>] ioremap_nocache+0x2a/0x40
[ 2.031400] [<ffffffff810d0364>] ? trace_hardirqs_off+0x20/0x36
[ 2.036096] [<ffffffff81ce2c5c>] acpi_os_map_memory+0x2a/0x47
[ 2.046263] [<ffffffff815cd642>] acpi_tb_verify_table+0x3d/0x85
[ 2.050349] [<ffffffff81d34af7>] ? _spin_unlock_irqrestore+0x50/0x76
[ 2.067327] [<ffffffff815ccad6>] acpi_get_table_with_size+0x64/0xd9
[ 2.070860] [<ffffffff81d34af7>] ? _spin_unlock_irqrestore+0x50/0x76
[ 2.088000] [<ffffffff825c88d5>] dmar_table_detect+0x33/0x70
[ 2.092047] [<ffffffff825c8a01>] dmar_table_init+0x43/0x428
[ 2.106854] [<ffffffff825a7537>] enable_IR+0x1c/0x8d
[ 2.110256] [<ffffffff825a7624>] enable_IR_x2apic+0x7c/0x19e
[ 2.127139] [<ffffffff825a4876>] native_smp_prepare_cpus+0x139/0x3b8
[ 2.145175] [<ffffffff8259678d>] kernel_init+0x71/0x1da
[ 2.148913] [<ffffffff8104305a>] child_rip+0xa/0x20
[ 2.152349] [<ffffffff810429fc>] ? restore_args+0x0/0x30
[ 2.167931] [<ffffffff8259671c>] ? kernel_init+0x0/0x1da
[ 2.171671] [<ffffffff81043050>] ? child_rip+0x0/0x20
[ 2.187607] ---[ end trace a7919e7f17c0a725 ]---
Venkatesh Pallipadi said:
| Looks like the problem started with this commit
|
| commit ce69a78450
| Author: Gleb Natapov <gleb@redhat.com>
| Date: Mon Jul 20 15:24:17 2009 +0300
|
| x86/apic: Enable x2APIC without interrupt remapping under KVM
|
| Before this commit, dmar_table_init() was getting called
| with interrupts enabled and after this commit, it is getting
| called with interrupts disabled.
so try to move out dmar_table_init out of that function.
Analyzed-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Gleb Natapov <gleb@redhat.com>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: "Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>
LKML-Reference: <4A899F3C.2050104@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-08-17 20:22:56 +02:00
..
2009-07-14 13:32:48 -07:00
2009-08-17 20:22:56 +02:00
2009-07-10 14:25:03 -07:00
2009-03-10 16:24:23 +01:00
2009-07-02 18:32:05 +02:00
2009-07-01 16:52:53 +02:00
2008-11-28 15:24:39 +01:00
2009-06-12 21:32:31 +02:00
2009-06-12 22:27:03 +09:30
2009-05-11 17:44:39 -07:00
2009-04-03 19:25:57 +02:00
2009-03-15 07:03:15 +01:00
2009-06-15 21:30:25 -07:00
2008-10-20 08:52:39 -07:00
2008-10-20 08:52:39 -07:00
2009-06-15 15:20:40 +02:00
2008-10-13 10:33:15 +02:00
2009-04-24 10:18:51 +02:00
2009-03-13 11:57:22 +01:00
2009-04-07 13:36:36 +02:00
2009-07-01 22:37:23 +02:00
2009-07-01 22:37:23 +02:00
2009-06-25 22:06:11 +02:00
2009-04-14 11:45:33 +02:00
2009-07-08 10:30:03 -07:00
2009-03-13 02:37:18 +01:00
2009-04-08 14:16:32 +02:00
2008-08-18 08:50:19 +02:00
2009-03-27 17:28:43 +01:00
2009-02-25 08:27:46 +01:00
2009-02-24 18:08:40 +01:00
2009-06-16 17:47:32 -07:00
2009-06-20 10:56:46 -07:00
2009-06-18 18:40:18 -04:00
2009-06-18 18:40:18 -04:00
2009-03-14 17:23:47 -07:00
2009-03-14 15:37:14 -07:00
2009-06-17 21:35:10 -07:00
2009-06-17 21:35:10 -07:00
2008-12-12 11:08:42 +01:00
2009-06-14 18:24:29 +02:00
2008-10-20 18:27:03 +02:00
2009-03-04 20:33:16 +01:00
2009-02-10 13:13:23 +01:00
2009-06-16 19:47:27 -07:00
2009-02-23 00:08:11 +01:00
2009-06-16 19:47:28 -07:00
2009-03-21 16:57:04 +05:30
2009-03-02 12:07:48 +01:00
2009-02-24 21:52:45 +01:00
2009-02-09 12:16:05 +01:00
2009-06-11 23:31:52 +02:00
2009-06-11 23:31:52 +02:00
2008-10-28 17:10:27 +01:00
2009-03-21 16:55:45 +05:30
2009-06-10 15:49:10 -07:00
2009-04-02 00:49:02 +02:00
2009-07-03 14:34:22 +02:00
2009-04-21 13:41:47 -07:00
2009-01-02 17:46:24 +01:00
2009-05-07 22:01:05 -07:00
2009-05-07 22:01:05 -07:00
2009-07-06 13:57:03 -07:00
2009-02-23 00:08:11 +01:00
2009-03-30 22:05:14 +10:30
2009-06-07 16:35:11 +02:00
2009-06-15 21:30:25 -07:00
2009-05-12 10:36:44 +02:00
2009-03-12 13:13:07 +01:00
2009-06-12 21:47:05 +09:30
2009-05-18 09:33:29 +02:00
2009-06-15 21:30:25 -07:00
2009-02-14 23:05:25 +01:00
2009-01-30 14:51:44 -08:00
2009-01-30 14:51:44 -08:00
2009-01-20 17:14:28 +01:00
2009-06-10 16:16:27 -07:00
2009-04-14 13:03:36 +02:00
2009-07-01 18:56:16 +01:00
2009-07-08 10:30:03 -07:00
2009-04-07 08:31:11 -07:00
2009-06-22 21:38:22 -07:00
2008-09-22 12:58:36 +02:00
2009-01-29 14:16:51 +01:00
2009-06-10 19:53:40 -07:00
2009-06-10 19:53:40 -07:00
2009-06-15 12:40:03 +02:00
2009-04-24 10:18:52 +02:00
2008-10-15 14:25:14 +02:00
2009-06-07 12:22:15 +02:00
2009-06-07 15:51:20 +02:00
2009-03-10 18:13:25 -07:00
2009-03-10 18:13:25 -07:00
2009-03-21 16:56:37 +05:30
2009-06-22 11:56:24 +09:00
2009-06-23 10:33:32 +02:00
2009-06-11 23:31:52 +02:00
2009-06-11 23:31:52 +02:00
2009-06-12 13:50:24 +03:00
2009-06-12 23:01:05 +02:00
Merge branches 'x86/alternatives', 'x86/cleanups', 'x86/commandline', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/exports', 'x86/fpu', 'x86/gart', 'x86/idle', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/oprofile', 'x86/paravirt', 'x86/reboot', 'x86/sparse-fixes', 'x86/tsc', 'x86/urgent' and 'x86/vmalloc' into x86-v28-for-linus-phase1
2008-10-06 18:17:07 +02:00
2008-10-22 22:55:23 -07:00
2009-04-30 21:16:49 +02:00
2009-02-23 00:08:11 +01:00
2009-03-30 22:05:14 +10:30
2009-06-24 17:33:58 +02:00
2009-03-21 16:55:24 +05:30
2009-02-13 11:35:01 -08:00
2009-02-13 11:35:01 -08:00
2008-12-08 13:49:45 +01:00
2009-06-25 22:06:11 +02:00
2009-05-07 09:32:10 +02:00
2009-06-20 10:57:40 -07:00
2009-02-17 17:52:44 +01:00
2009-04-08 14:58:10 +02:00
2009-04-22 17:41:25 +02:00
2009-03-11 09:49:01 +01:00
2009-06-10 16:15:14 -07:00
2009-04-07 13:34:16 -07:00
2009-04-21 13:41:47 -07:00
2009-06-12 09:21:33 +02:00
2009-03-25 21:34:28 +01:00
2009-05-28 14:15:54 +02:00
2009-01-16 14:20:22 +01:00
2009-04-20 14:33:00 -07:00