summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/common/linux/module.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2017-05-11 16:12:03 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-05-26 06:34:08 -0400
commit726900b8433294fd89a6d730d2fec9de8e33afda (patch)
tree6d6aa5b6e07a792441e43b74ea273f85933eebe0 /drivers/gpu/nvgpu/common/linux/module.c
parent0bb47c3675d2030545d40353931e2b8120541de4 (diff)
gpu: nvgpu: Split stalling interrupt handling
Split handling of stalling interrupt to Linux specific chip agnostic and OS independent chip specific parts. Linux specific chip independent part contains handler for ISR and passing the control to a bottom half. It uses the new MC HALs intr_stall (query interrupt status), intr_pause (pause interrupts) and intr_resume (resume interrupts). MC HAL isr_stall now returns void and gets called in thread context and thus remove isr_thread_stall and replace the implementation with isr_stall. JIRA NVGPU-26 Change-Id: I206f330f6fc4a1f4def47c5f986585ac4080216d Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1480243 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/common/linux/module.c')
-rw-r--r--drivers/gpu/nvgpu/common/linux/module.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/common/linux/module.c b/drivers/gpu/nvgpu/common/linux/module.c
index ab99bef0..5e8af065 100644
--- a/drivers/gpu/nvgpu/common/linux/module.c
+++ b/drivers/gpu/nvgpu/common/linux/module.c
@@ -36,6 +36,7 @@
36#include "gk20a/ctxsw_trace_gk20a.h" 36#include "gk20a/ctxsw_trace_gk20a.h"
37#include "pci.h" 37#include "pci.h"
38#include "module.h" 38#include "module.h"
39#include "intr.h"
39#ifdef CONFIG_TEGRA_19x_GPU 40#ifdef CONFIG_TEGRA_19x_GPU
40#include "nvgpu_gpuid_t19x.h" 41#include "nvgpu_gpuid_t19x.h"
41#endif 42#endif
@@ -482,7 +483,7 @@ static irqreturn_t gk20a_intr_isr_stall(int irq, void *dev_id)
482{ 483{
483 struct gk20a *g = dev_id; 484 struct gk20a *g = dev_id;
484 485
485 return g->ops.mc.isr_stall(g); 486 return nvgpu_intr_stall(g);
486} 487}
487 488
488static irqreturn_t gk20a_intr_isr_nonstall(int irq, void *dev_id) 489static irqreturn_t gk20a_intr_isr_nonstall(int irq, void *dev_id)
@@ -496,7 +497,7 @@ static irqreturn_t gk20a_intr_thread_stall(int irq, void *dev_id)
496{ 497{
497 struct gk20a *g = dev_id; 498 struct gk20a *g = dev_id;
498 499
499 return g->ops.mc.isr_thread_stall(g); 500 return nvgpu_intr_thread_stall(g);
500} 501}
501 502
502void gk20a_remove_support(struct gk20a *g) 503void gk20a_remove_support(struct gk20a *g)