[PATCH] x86_64: Fix numa node topology detection for srat based x86_64 boxes
[safe/jmp/linux-2.6] / arch / x86_64 / kernel / mce.c
index 969365c..69541db 100644 (file)
@@ -54,9 +54,12 @@ void mce_log(struct mce *mce)
 {
        unsigned next, entry;
        mce->finished = 0;
-       smp_wmb();
+       wmb();
        for (;;) {
                entry = rcu_dereference(mcelog.next);
+               /* The rmb forces the compiler to reload next in each
+                   iteration */
+               rmb();
                for (;;) {
                        /* When the buffer fills up discard new entries. Assume
                           that the earlier errors are the more interesting. */
@@ -69,6 +72,7 @@ void mce_log(struct mce *mce)
                                entry++;
                                continue;
                        }
+                       break;
                }
                smp_rmb();
                next = entry + 1;
@@ -76,9 +80,9 @@ void mce_log(struct mce *mce)
                        break;
        }
        memcpy(mcelog.entry + entry, mce, sizeof(struct mce));
-       smp_wmb();
+       wmb();
        mcelog.entry[entry].finished = 1;
-       smp_wmb();
+       wmb();
 
        if (!test_and_set_bit(0, &console_logged))
                notify_user = 1;
@@ -217,7 +221,7 @@ void do_machine_check(struct pt_regs * regs, long error_code)
                        panicm_found = 1;
                }
 
-               tainted |= TAINT_MACHINE_CHECK;
+               add_taint(TAINT_MACHINE_CHECK);
        }
 
        /* Never do anything final in the polling timer */