On Tue, 25 Jul 2017 17:45:59 +0200 Borislav Petkov <[email protected]> wrote:
> From: Borislav Petkov <[email protected]> > > Convert the part which decodes the error description to the sequence > buffer facility and thus save ourselves the many printk() invocations > building the decoded string. > > No functionality change. > > Signed-off-by: Borislav Petkov <[email protected]> > --- > drivers/edac/mce_amd.c | 203 > ++++++++++++++++++++++++++----------------------- > 1 file changed, 108 insertions(+), 95 deletions(-) > > diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c > index a11a671c7a38..1f5e9bb161f3 100644 > --- a/drivers/edac/mce_amd.c > +++ b/drivers/edac/mce_amd.c > @@ -1,3 +1,4 @@ > +#include <linux/seq_buf.h> > #include <linux/module.h> > #include <linux/slab.h> > > @@ -306,6 +307,11 @@ static struct smca_mce_desc smca_mce_descs[] = { > [SMCA_SMU] = { smca_smu_mce_desc, ARRAY_SIZE(smca_smu_mce_desc) > }, > }; > > +/* 128 because, well, nice and round - two cachelines. */ > +#define BUF_LEN 128 > +static char __err_buf[BUF_LEN]; > +static struct seq_buf sb; What happens if two CPUs have mce's at the same time? Wouldn't one corrupt the other buffer. 128 isn't too big to put on the stack is it? -- Steve > + > static bool f12h_mc0_mce(u16 ec, u8 xec) > {

