x86, mrst: Conditionally register cpu hotplug notifier for apbt
authorJacob Pan <jacob.jun.pan@linux.intel.com>
Mon, 19 Apr 2010 18:23:43 +0000 (11:23 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Tue, 20 Apr 2010 21:38:28 +0000 (14:38 -0700)
APB timer is used on Moorestown platforms but not on a standard PC.
If APB timer code is compiled in but not initialized at run-time due
to lack of FW reported SFI table, kernel would panic when the non-boot
CPUs are offlined and notifier is called.

https://bugzilla.kernel.org/show_bug.cgi?id=15786

This patch ensures CPU hotplug notifier for APB timer is only registered
when the APBT timer block is initialized.

Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com>
LKML-Reference: <1271701423-1162-1-git-send-email-jacob.jun.pan@linux.intel.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
arch/x86/kernel/apb_timer.c

index ff469e47005921779f3c589ec3e77e401a4346a3..a35347501d36883b802c6471ed466b4e271ce8c8 100644 (file)
@@ -429,7 +429,7 @@ static int apbt_cpuhp_notify(struct notifier_block *n,
 
 static __init int apbt_late_init(void)
 {
-       if (disable_apbt_percpu)
+       if (disable_apbt_percpu || !apb_timer_block_enabled)
                return 0;
        /* This notifier should be called after workqueue is ready */
        hotcpu_notifier(apbt_cpuhp_notify, -20);