gpu: nvgpu: enhance class error debug info

Updated gk20a_gr_handle_class_error with
sub channel info, mme related info.

Also printing the correct method info from
isr_data->offset by left shifting it by 2.

Generated following hw definitions for gk20a/gm20b/gp10b/gp106
to dump relevant data in gk20a_gr_handle_class_error:
gr_trapped_addr_mme_generated_v
gr_trapped_addr_datahigh_v
gr_trapped_addr_priv_v
gr_trapped_data_lo_r
gr_trapped_data_mme_r
gr_trapped_data_mme_pc_v

Bug 2003671

Change-Id: I02e15ef16d7498b6a7dc2af547a14e84d570e8a7
Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1574061
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
seshendra Gadagottu
2017-10-05 17:36:51 -07:00
committed by mobile promotions
parent 1760dc8e80
commit 9712b4e5ac
5 changed files with 114 additions and 5 deletions

View File

@@ -268,6 +268,22 @@ static inline u32 gr_trapped_addr_subch_v(u32 r)
{
return (r >> 16U) & 0x7U;
}
static inline u32 gr_trapped_addr_mme_generated_v(u32 r)
{
return (r >> 20U) & 0x1U;
}
static inline u32 gr_trapped_addr_datahigh_v(u32 r)
{
return (r >> 24U) & 0x1U;
}
static inline u32 gr_trapped_addr_priv_v(u32 r)
{
return (r >> 28U) & 0x1U;
}
static inline u32 gr_trapped_addr_status_v(u32 r)
{
return (r >> 31U) & 0x1U;
}
static inline u32 gr_trapped_data_lo_r(void)
{
return 0x00400708U;
@@ -276,6 +292,14 @@ static inline u32 gr_trapped_data_hi_r(void)
{
return 0x0040070cU;
}
static inline u32 gr_trapped_data_mme_r(void)
{
return 0x00400710U;
}
static inline u32 gr_trapped_data_mme_pc_v(u32 r)
{
return (r >> 0U) & 0x7ffU;
}
static inline u32 gr_status_r(void)
{
return 0x00400700U;

View File

@@ -256,6 +256,22 @@ static inline u32 gr_trapped_addr_subch_v(u32 r)
{
return (r >> 16U) & 0x7U;
}
static inline u32 gr_trapped_addr_mme_generated_v(u32 r)
{
return (r >> 20U) & 0x1U;
}
static inline u32 gr_trapped_addr_datahigh_v(u32 r)
{
return (r >> 24U) & 0x1U;
}
static inline u32 gr_trapped_addr_priv_v(u32 r)
{
return (r >> 28U) & 0x1U;
}
static inline u32 gr_trapped_addr_status_v(u32 r)
{
return (r >> 31U) & 0x1U;
}
static inline u32 gr_trapped_data_lo_r(void)
{
return 0x00400708U;
@@ -264,6 +280,14 @@ static inline u32 gr_trapped_data_hi_r(void)
{
return 0x0040070cU;
}
static inline u32 gr_trapped_data_mme_r(void)
{
return 0x00400710U;
}
static inline u32 gr_trapped_data_mme_pc_v(u32 r)
{
return (r >> 0U) & 0x7ffU;
}
static inline u32 gr_status_r(void)
{
return 0x00400700U;

View File

@@ -252,6 +252,22 @@ static inline u32 gr_trapped_addr_subch_v(u32 r)
{
return (r >> 16U) & 0x7U;
}
static inline u32 gr_trapped_addr_mme_generated_v(u32 r)
{
return (r >> 20U) & 0x1U;
}
static inline u32 gr_trapped_addr_datahigh_v(u32 r)
{
return (r >> 24U) & 0x1U;
}
static inline u32 gr_trapped_addr_priv_v(u32 r)
{
return (r >> 28U) & 0x1U;
}
static inline u32 gr_trapped_addr_status_v(u32 r)
{
return (r >> 31U) & 0x1U;
}
static inline u32 gr_trapped_data_lo_r(void)
{
return 0x00400708U;
@@ -260,6 +276,14 @@ static inline u32 gr_trapped_data_hi_r(void)
{
return 0x0040070cU;
}
static inline u32 gr_trapped_data_mme_r(void)
{
return 0x00400710U;
}
static inline u32 gr_trapped_data_mme_pc_v(u32 r)
{
return (r >> 0U) & 0xfffU;
}
static inline u32 gr_status_r(void)
{
return 0x00400700U;

View File

@@ -256,6 +256,22 @@ static inline u32 gr_trapped_addr_subch_v(u32 r)
{
return (r >> 16U) & 0x7U;
}
static inline u32 gr_trapped_addr_mme_generated_v(u32 r)
{
return (r >> 20U) & 0x1U;
}
static inline u32 gr_trapped_addr_datahigh_v(u32 r)
{
return (r >> 24U) & 0x1U;
}
static inline u32 gr_trapped_addr_priv_v(u32 r)
{
return (r >> 28U) & 0x1U;
}
static inline u32 gr_trapped_addr_status_v(u32 r)
{
return (r >> 31U) & 0x1U;
}
static inline u32 gr_trapped_data_lo_r(void)
{
return 0x00400708U;
@@ -264,6 +280,14 @@ static inline u32 gr_trapped_data_hi_r(void)
{
return 0x0040070cU;
}
static inline u32 gr_trapped_data_mme_r(void)
{
return 0x00400710U;
}
static inline u32 gr_trapped_data_mme_pc_v(u32 r)
{
return (r >> 0U) & 0xfffU;
}
static inline u32 gr_status_r(void)
{
return 0x00400700U;