Re: Re-implement MCE log ring buffer as per-CPU ring buffer

From: Andi Kleen
Date: Wed Apr 22 2009 - 07:20:56 EST


Ingo Molnar wrote:
* Huang Ying <ying.huang@xxxxxxxxx> wrote:

Re-implement MCE log ring buffer as per-CPU ring buffer for better scalability. Basic design is as follow:

Before changing anything substantial in the MCE code it would be necessary to clean up and then unify the 32-bit and 64-bit side of the MCE code first. (Which essentially means extending the 64-bit-only code to 32-bit)

I don't disagree. In fact my original patchkit had this first in 6-7 patches,
but I dropped the 32bit unification because you complained about
the interface. It's great that you changed your mind on that.
Anyways if we can go forward that now fine by me.

The big part is to make sure that the hardware workarounds in the
32bit code get applied to 64bit. These are essentially the quirks
of PPro and K7.

Then there's some straight forward work needed to make the 64bit
code 32bit clean (mostly a few unsigned long -> u64)

And then there are the old non MCA handlers for p5 and winchip.
These are best kept separate, there isn't really much code commonality
here because they use completely different registers.

I've put a few cleanup patches into tip:x86/mce2 (warning: there are a few broken ones at the tail - so consider it WIP), to help make this happen:

dd98699: x86, mce: print number of MCE banks
ef319a8: x86, mce: unify
be0f336: x86, mce: unify, prepare for 32-bit
90c99b7: x86, mce: prepare unification
1e1d4f8: x86, mce: prepare mce.h and mce_64.c for unification
fd6b13f: x86, mce: clean up mce_64.c
f7f8e03: x86, mce: clean up mce_intel.c
b19c8ea: x86, mce: unify the Intel thermal interrupt code
> 6eade5b: mce: unify Intel thermal init, prepare

I don't think there's much to unify here, the 64bit code
can be just used as is on 32bit too (only needs the 64bit
mce_log infrastructure) and the 32bit code be dropped.

Would it be possible to drop these two changesets?

d393769: x86, mce: clean up mce.h
7bb2efa: x86, mce: clean up winchip.c
3b94f2b: x86, mce: clean up p5.c
13a219b: x86, mce: clean up mce_32.c
e69e307: x86, mce: clean up non-fatal.c
3b9a5bc: x86, mce: clean up k7.c
79e1d29: x86, mce: clean up p6.c
c5fac5b: x86, mce: clean up therm_throt.c
788a16a: x86, mce: clean up p4.c
07d7726: x86, mce: clean up mce_amd_64.c
a6a6958: x86, mce: clean up the sysfs variables namespace
895f799: x86, mce: clean up the mce_64.c code

these are the more questionable ones in need of restructurin

And then restart here? Add 32bit workarounds, add hook
to initialize p5/winchip, make 64bit code 32bit clean.
That can come straight from my patchkit. I can do that
if there is interest.

-Andi
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/