mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-23 09:57:08 +03:00
gpu: nvgpu: always handle gr exception
Always handle gr exception regardless of whether the SM debugger is attached or not. Bug 1699676 Change-Id: If98ab6948c42d3fb1e4f02d54db12745485b0607 Signed-off-by: Adeel Raza <araza@nvidia.com> Reviewed-on: http://git-master/r/1013164 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Terje Bergstrom
parent
21605d09a5
commit
d3bd5adfca
@@ -5571,28 +5571,21 @@ int gk20a_gr_isr(struct gk20a *g)
|
|||||||
/* check if a gpc exception has occurred */
|
/* check if a gpc exception has occurred */
|
||||||
if (exception & gr_exception_gpc_m() && need_reset == 0) {
|
if (exception & gr_exception_gpc_m() && need_reset == 0) {
|
||||||
struct channel_gk20a *fault_ch;
|
struct channel_gk20a *fault_ch;
|
||||||
|
bool post_event = false;
|
||||||
|
|
||||||
gk20a_dbg(gpu_dbg_intr | gpu_dbg_gpu_dbg, "GPC exception pending");
|
gk20a_dbg(gpu_dbg_intr | gpu_dbg_gpu_dbg, "GPC exception pending");
|
||||||
|
|
||||||
/* if no sm debugger is present, clean up the channel */
|
|
||||||
if (!gk20a_gr_sm_debugger_attached(g)) {
|
|
||||||
gk20a_dbg(gpu_dbg_intr | gpu_dbg_gpu_dbg,
|
|
||||||
"SM debugger not attached, clearing interrupt");
|
|
||||||
need_reset |= -EFAULT;
|
|
||||||
} else {
|
|
||||||
bool post_event = false;
|
|
||||||
|
|
||||||
fault_ch = gk20a_fifo_channel_from_hw_chid(g,
|
fault_ch = gk20a_fifo_channel_from_hw_chid(g,
|
||||||
isr_data.chid);
|
isr_data.chid);
|
||||||
|
|
||||||
/* check if any gpc has an exception */
|
/* check if any gpc has an exception */
|
||||||
need_reset |= gk20a_gr_handle_gpc_exception(g,
|
need_reset |= gk20a_gr_handle_gpc_exception(g,
|
||||||
&post_event, fault_ch);
|
&post_event, fault_ch);
|
||||||
|
|
||||||
/* signal clients waiting on an event */
|
/* signal clients waiting on an event */
|
||||||
if (post_event && fault_ch)
|
if (gk20a_gr_sm_debugger_attached(g) && post_event && fault_ch)
|
||||||
gk20a_dbg_gpu_post_events(fault_ch);
|
gk20a_dbg_gpu_post_events(fault_ch);
|
||||||
}
|
|
||||||
|
|
||||||
if (need_reset && ch)
|
if (need_reset && ch)
|
||||||
gk20a_set_error_notifier(ch,
|
gk20a_set_error_notifier(ch,
|
||||||
|
|||||||
Reference in New Issue
Block a user