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)
>  {

Reply via email to