diff --git a/drivers/gpu/nvgpu/common/init/nvgpu_init.c b/drivers/gpu/nvgpu/common/init/nvgpu_init.c index bcdea38b8..96598f553 100644 --- a/drivers/gpu/nvgpu/common/init/nvgpu_init.c +++ b/drivers/gpu/nvgpu/common/init/nvgpu_init.c @@ -87,9 +87,10 @@ static int nvgpu_sw_quiesce_thread(void *data) } nvgpu_err(g, "SW quiesce thread running"); + nvgpu_msleep(NVGPU_SW_QUIESCE_TIMEOUT_MS); - nvgpu_fifo_sw_quiesce(g); + nvgpu_disable_irqs(g); nvgpu_channel_sw_quiesce(g); nvgpu_bug_exit(1); @@ -198,6 +199,7 @@ void nvgpu_sw_quiesce(struct gk20a *g) nvgpu_cond_signal_interruptible(&g->sw_quiesce_cond); gk20a_mask_interrupts(g); + nvgpu_start_gpu_idle(g); nvgpu_fifo_sw_quiesce(g); } diff --git a/drivers/gpu/nvgpu/hal/fbpa/fbpa_tu104.c b/drivers/gpu/nvgpu/hal/fbpa/fbpa_tu104.c index 4fffe243d..e8e2a1a96 100644 --- a/drivers/gpu/nvgpu/hal/fbpa/fbpa_tu104.c +++ b/drivers/gpu/nvgpu/hal/fbpa/fbpa_tu104.c @@ -1,7 +1,7 @@ /* * TU104 FBPA * - * Copyright (c) 2018-2019, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2018-2020, NVIDIA CORPORATION. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -28,6 +28,7 @@ #include #include #include +#include #include "hal/fbpa/fbpa_tu104.h" @@ -96,8 +97,11 @@ void tu104_fbpa_handle_intr(struct gk20a *g, u32 fbpa_id) status = nvgpu_readl(g, offset + fbpa_0_intr_status_r()); if ((status & (ecc_subp0_mask | ecc_subp1_mask)) == 0U) { - nvgpu_err(g, "unknown interrupt fbpa %u status %08x", + nvgpu_err(g, "Unknown interrupt fbpa %u status %08x", fbpa_id, status); + nvgpu_err(g, "Suspected unrecoverable EDC interrupt;" + " HW no longer reliable"); + nvgpu_sw_quiesce(g); return; }