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;
        }
 
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to