Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Feb 2012 17:33:16 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r232232 - head/sys/x86/x86
Message-ID:  <201202271733.q1RHXGuA029337@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Mon Feb 27 17:33:16 2012
New Revision: 232232
URL: http://svn.freebsd.org/changeset/base/232232

Log:
  - Panic up front if a kernel does not include 'device atpic' and an
    APIC is not found.
  - Don't panic if lapic_enable_cmc() is called and the APIC is not enabled.
    This can happen due to booting a kernel with APIC disabled on a CPU that
    supports CMCI.
  - Wrap a long line.

Modified:
  head/sys/x86/x86/local_apic.c

Modified: head/sys/x86/x86/local_apic.c
==============================================================================
--- head/sys/x86/x86/local_apic.c	Mon Feb 27 17:31:38 2012	(r232231)
+++ head/sys/x86/x86/local_apic.c	Mon Feb 27 17:33:16 2012	(r232232)
@@ -34,6 +34,7 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "opt_atpic.h"
 #include "opt_hwpmc_hooks.h"
 #include "opt_kdtrace.h"
 
@@ -308,7 +309,8 @@ lapic_create(u_int apic_id, int boot_cpu
 	lapics[apic_id].la_ioint_irqs[APIC_TIMER_INT - APIC_IO_INTS] =
 	    IRQ_TIMER;
 #ifdef KDTRACE_HOOKS
-	lapics[apic_id].la_ioint_irqs[IDT_DTRACE_RET - APIC_IO_INTS] = IRQ_DTRACE_RET;
+	lapics[apic_id].la_ioint_irqs[IDT_DTRACE_RET - APIC_IO_INTS] =
+	    IRQ_DTRACE_RET;
 #endif
 
 
@@ -890,6 +892,10 @@ lapic_enable_cmc(void)
 {
 	u_int apic_id;
 
+#ifdef DEV_ATPIC
+	if (lapic == NULL)
+		return;
+#endif
 	apic_id = PCPU_GET(apic_id);
 	KASSERT(lapics[apic_id].la_present,
 	    ("%s: missing APIC %u", __func__, apic_id));
@@ -1286,6 +1292,9 @@ apic_init(void *dummy __unused)
 	if (best_enum == NULL) {
 		if (bootverbose)
 			printf("APIC: Could not find any APICs.\n");
+#ifndef DEV_ATPIC
+		panic("running without device atpic requires a local APIC");
+#endif
 		return;
 	}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201202271733.q1RHXGuA029337>