]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - arch/x86/kernel/cpu/mcheck/mce_64.c
KVM: Add VT-x machine check support
[karo-tx-linux.git] / arch / x86 / kernel / cpu / mcheck / mce_64.c
index 82614f1b923a6069598acea774a7a8fc071dc062..289cc481502887dd228161157002b297e4a5a73d 100644 (file)
@@ -239,9 +239,10 @@ void machine_check_poll(enum mcp_flags flags, mce_banks_t *b)
                 * Don't get the IP here because it's unlikely to
                 * have anything to do with the actual error location.
                 */
-
-               mce_log(&m);
-               add_taint(TAINT_MACHINE_CHECK);
+               if (!(flags & MCP_DONTLOG)) {
+                       mce_log(&m);
+                       add_taint(TAINT_MACHINE_CHECK);
+               }
 
                /*
                 * Clear state for this bank.
@@ -419,6 +420,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
  out2:
        atomic_dec(&mce_entry);
 }
+EXPORT_SYMBOL_GPL(do_machine_check);
 
 #ifdef CONFIG_X86_MCE_INTEL
 /***
@@ -585,7 +587,7 @@ static void mce_init(void *dummy)
         * Log the machine checks left over from the previous reset.
         */
        bitmap_fill(all_banks, MAX_NR_BANKS);
-       machine_check_poll(MCP_UC, &all_banks);
+       machine_check_poll(MCP_UC|(!mce_bootlog ? MCP_DONTLOG : 0), &all_banks);
 
        set_in_cr4(X86_CR4_MCE);
 
@@ -1162,7 +1164,7 @@ static __init int mce_init_device(void)
        if (!mce_available(&boot_cpu_data))
                return -EIO;
 
-       alloc_cpumask_var(&mce_device_initialized, GFP_KERNEL);
+       zalloc_cpumask_var(&mce_device_initialized, GFP_KERNEL);
 
        err = mce_init_banks();
        if (err)