[PATCH v2 1/3] powerpc/pseries: Parse control memory access error
Michael Ellerman
mpe at ellerman.id.au
Tue Aug 24 16:39:57 AEST 2021
Hi Ganesh,
Some comments below ...
Ganesh Goudar <ganeshgr at linux.ibm.com> writes:
> Add support to parse and log control memory access
> error for pseries.
>
> Signed-off-by: Ganesh Goudar <ganeshgr at 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
More information about the Linuxppc-dev
mailing list