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

From: Huang Ying
Date: Sun Apr 26 2009 - 20:59:46 EST


On Fri, 2009-04-24 at 18:09 +0800, Robert Richter wrote:
> On 24.04.09 14:06:50, Huang Ying wrote:
> > On Wed, 2009-04-22 at 18:16 +0800, Robert Richter wrote:
> > > On 22.04.09 11:22:59, 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)
> > >
> > > You may also want to consider to use the in-kernel ring_buffer api
> > > (include/linux/ring_buffer.h).
> >
> > It seems that ring_buffer is not NMI-safe, while mcelog buffer will be
> > used in NMI context and interrupt context. When will ring_buffer to be
> > NMI-safe?
>
> You can use it in nmi context with separate read and write
> buffers. See this patch description:
> 6dad828b76c7224a22ddc9ce7aa495d994f03b31

You use it as oprofile CPU buffer. There is only one reader and one
writer for oprofile CPU buffer, so separating read and write buffers is
sufficient for it to be used there. But there is multiple writer for
MCELOG buffer (from NMI, IRQ and timer), so I think your method doesn't
work here.

Best Regards,
Huang Ying

Attachment: signature.asc
Description: This is a digitally signed message part