Hi Ganesh,

Some comments below ...

Ganesh Goudar <ganes...@linux.ibm.com> writes:
> Add support to parse and log control memory access
> error for pseries.
>
> Signed-off-by: Ganesh Goudar <ganes...@linux.ibm.com>
> ---
> v2: No changes in this patch.
> ---
>  arch/powerpc/platforms/pseries/ras.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/arch/powerpc/platforms/pseries/ras.c 
> b/arch/powerpc/platforms/pseries/ras.c
> index 167f2e1b8d39..608c35cad0c3 100644
> --- a/arch/powerpc/platforms/pseries/ras.c
> +++ b/arch/powerpc/platforms/pseries/ras.c
> @@ -80,6 +80,7 @@ struct pseries_mc_errorlog {
>  #define MC_ERROR_TYPE_TLB            0x04
>  #define MC_ERROR_TYPE_D_CACHE                0x05
>  #define MC_ERROR_TYPE_I_CACHE                0x07
> +#define MC_ERROR_TYPE_CTRL_MEM_ACCESS        0x08
...
>  
> +#define MC_ERROR_CTRL_MEM_ACCESS_PTABLE_WALK 0
> +#define MC_ERROR_CTRL_MEM_ACCESS_OP_ACCESS   1


Where do the above values come from?

> +
>  static inline u8 rtas_mc_error_sub_type(const struct pseries_mc_errorlog 
> *mlog)
>  {
>       switch (mlog->error_type) {
> @@ -112,6 +116,8 @@ static inline u8 rtas_mc_error_sub_type(const struct 
> pseries_mc_errorlog *mlog)
>       case    MC_ERROR_TYPE_ERAT:
>       case    MC_ERROR_TYPE_TLB:
>               return (mlog->sub_err_type & 0x03);
> +     case    MC_ERROR_TYPE_CTRL_MEM_ACCESS:
> +             return (mlog->sub_err_type & 0x70) >> 4;

Can you add to the comment above sub_err_type explaining what these bits are.

>       default:
>               return 0;
>       }
> @@ -699,6 +705,21 @@ static int mce_handle_err_virtmode(struct pt_regs *regs,
>       case MC_ERROR_TYPE_I_CACHE:
>               mce_err.error_type = MCE_ERROR_TYPE_ICACHE;
>               break;
> +     case MC_ERROR_TYPE_CTRL_MEM_ACCESS:
> +             mce_err.error_type = MCE_ERROR_TYPE_RA;
> +             if (mce_log->sub_err_type & 0x80)

This appears many times in the file.

Can we add eg. MC_EFFECTIVE_ADDR_PROVIDED?

> +                     eaddr = be64_to_cpu(mce_log->effective_address);
> +             switch (err_sub_type) {
> +             case MC_ERROR_CTRL_MEM_ACCESS_PTABLE_WALK:
> +                     mce_err.u.ra_error_type =
> +                             MCE_RA_ERROR_PAGE_TABLE_WALK_LOAD_STORE_FOREIGN;

That name is ridiculously long, but I guess that's not your fault :)
We can fix it up in a later patch.

> +                     break;
> +             case MC_ERROR_CTRL_MEM_ACCESS_OP_ACCESS:
> +                     mce_err.u.ra_error_type =
> +                             MCE_RA_ERROR_LOAD_STORE_FOREIGN;
> +                     break;
> +             }
> +             break;

cheers

Reply via email to