svn commit: r232232 - head/sys/x86/x86
John Baldwin
jhb at FreeBSD.org
Mon Feb 27 17:33:16 UTC 2012
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;
}
More information about the svn-src-all
mailing list