mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 01:50:07 +03:00
gpu: nvgpu: add notifier for pbcrc mismatch
Add below notifier for pbcrc mismatch NVGPU_CHANNEL_PBDMA_PUSHBUFFER_CRC_MISMATCH And use this notifier value when we have pbdma pbcrc interrupt pending Bug 200179981 Change-Id: I289351e990afb0a4e002902881b99023530f6443 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1156210 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Terje Bergstrom
parent
6ff0d4e6eb
commit
9c4f3799d1
@@ -1689,6 +1689,7 @@ static u32 gk20a_fifo_handle_pbdma_intr(struct device *dev,
|
||||
u32 pbdma_intr_0 = gk20a_readl(g, pbdma_intr_0_r(pbdma_id));
|
||||
u32 pbdma_intr_1 = gk20a_readl(g, pbdma_intr_1_r(pbdma_id));
|
||||
u32 handled = 0;
|
||||
u32 error_notifier = NVGPU_CHANNEL_PBDMA_ERROR;
|
||||
bool reset = false;
|
||||
int i;
|
||||
|
||||
@@ -1740,6 +1741,12 @@ static u32 gk20a_fifo_handle_pbdma_intr(struct device *dev,
|
||||
reset = true;
|
||||
}
|
||||
|
||||
if (pbdma_intr_0 & pbdma_intr_0_pbcrc_pending_f()) {
|
||||
error_notifier =
|
||||
NVGPU_CHANNEL_PBDMA_PUSHBUFFER_CRC_MISMATCH;
|
||||
reset = true;
|
||||
}
|
||||
|
||||
if (pbdma_intr_0 & pbdma_intr_0_device_pending_f()) {
|
||||
gk20a_fifo_reset_pbdma_header(g, pbdma_id);
|
||||
|
||||
@@ -1773,8 +1780,7 @@ static u32 gk20a_fifo_handle_pbdma_intr(struct device *dev,
|
||||
struct channel_gk20a *ch = &f->channel[id];
|
||||
|
||||
if (gk20a_channel_get(ch)) {
|
||||
gk20a_set_error_notifier(ch,
|
||||
NVGPU_CHANNEL_PBDMA_ERROR);
|
||||
gk20a_set_error_notifier(ch, error_notifier);
|
||||
gk20a_fifo_recover_ch(g, id, true);
|
||||
gk20a_channel_put(ch);
|
||||
}
|
||||
@@ -1787,7 +1793,7 @@ static u32 gk20a_fifo_handle_pbdma_intr(struct device *dev,
|
||||
list_for_each_entry(ch, &tsg->ch_list, ch_entry) {
|
||||
if (gk20a_channel_get(ch)) {
|
||||
gk20a_set_error_notifier(ch,
|
||||
NVGPU_CHANNEL_PBDMA_ERROR);
|
||||
error_notifier);
|
||||
gk20a_channel_put(ch);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -939,6 +939,7 @@ struct nvgpu_notification {
|
||||
#define NVGPU_CHANNEL_FIFO_ERROR_MMU_ERR_FLT 31
|
||||
#define NVGPU_CHANNEL_PBDMA_ERROR 32
|
||||
#define NVGPU_CHANNEL_RESETCHANNEL_VERIF_ERROR 43
|
||||
#define NVGPU_CHANNEL_PBDMA_PUSHBUFFER_CRC_MISMATCH 80
|
||||
__u16 info16; /* info returned depends on method 000c-000d */
|
||||
__u16 status; /* user sets bit 15, NV sets status 000e-000f */
|
||||
#define NVGPU_CHANNEL_SUBMIT_TIMEOUT 1
|
||||
|
||||
Reference in New Issue
Block a user