Re: [RFC PATCH 5/5] GHES: Make NMI handler have a single reader

Jiri Kosina
2015-04-23T08:40:03Z

On Wed, 1 Apr 2015, Borislav Petkov wrote:

> > > From: Jiri Kosina <jkosina@suse.cz>
> > >
> > > Since GHES sources are global, we theoretically need only a single CPU
> > > reading them per NMI instead of a thundering herd of CPUs waiting on a
> > > spinlock in NMI context for no reason at all.
> >
> > I originally wasn't 100% sure whether GHES sources are global (i.e. if it
> > really doesn't matter which CPU is reading the registers), but looking at
> > the code more it actually seems that this is really the right thing to do.
> >
> > Rationale: ghes_ioremap_pfn_nmi() always ioremaps() (exclusively) the page
> > with the registers, performs apei_read() (which is ghes-source specific,
> > but not CPU-specific) and unmaps the page again.
> >
> > There is nothing that would make this CPU-specific. Adding Huang Ying (the
> > original author of the code) to confirm this. Huang?
> >
> > > Do that.
> >
> > I think this should indeed be pushed forward. It fixes horrible spinlock
> > contention on systems which are under NMI storm (such as when perf is
> > active) unrelated to GHES.
>
> Right, so I tested injecting an error without your patch and same
> behavior. So it all points at global sources AFAICT. It would be cool,
> though, if someone who knows the fw confirms unambiguously.

Three weeks have passed, therefore I find this an appropriate time for a
friendly ping :)

Rafael? Naoya? Huang?

This fixes a contention spinlock problem in NMI observed on a real HW, so
it would be really nice to have it fixed.

Thanks,

--
Jiri Kosina
SUSE Labs