summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h7
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c8
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h1
3 files changed, 16 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h
index 063a5457..451b207b 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_sync_gk20a.h
@@ -103,6 +103,13 @@ struct gk20a_channel_sync {
103void gk20a_channel_sync_destroy(struct gk20a_channel_sync *sync); 103void gk20a_channel_sync_destroy(struct gk20a_channel_sync *sync);
104struct gk20a_channel_sync *gk20a_channel_sync_create(struct channel_gk20a *c); 104struct gk20a_channel_sync *gk20a_channel_sync_create(struct channel_gk20a *c);
105bool gk20a_channel_sync_needs_sync_framework(struct channel_gk20a *c); 105bool gk20a_channel_sync_needs_sync_framework(struct channel_gk20a *c);
106
107#ifdef CONFIG_SYNC
106void gk20a_channel_cancel_pending_sema_waits(struct gk20a *g); 108void gk20a_channel_cancel_pending_sema_waits(struct gk20a *g);
109#else
110static inline void gk20a_channel_cancel_pending_sema_waits(struct gk20a *g)
111{
112}
113#endif
107 114
108#endif 115#endif
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index a65ca6c2..bed728cf 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -47,6 +47,8 @@
47#include "nvgpu_common.h" 47#include "nvgpu_common.h"
48#include "debug_gk20a.h" 48#include "debug_gk20a.h"
49#include "ctrl_gk20a.h" 49#include "ctrl_gk20a.h"
50#include "channel_sync_gk20a.h"
51
50#include "hw_mc_gk20a.h" 52#include "hw_mc_gk20a.h"
51#include "hw_timer_gk20a.h" 53#include "hw_timer_gk20a.h"
52#include "hw_bus_gk20a.h" 54#include "hw_bus_gk20a.h"
@@ -66,6 +68,7 @@
66#include "pstate/pstate.h" 68#include "pstate/pstate.h"
67#endif 69#endif
68 70
71
69#define CREATE_TRACE_POINTS 72#define CREATE_TRACE_POINTS
70#include <trace/events/gk20a.h> 73#include <trace/events/gk20a.h>
71 74
@@ -708,6 +711,10 @@ void gk20a_remove_support(struct device *dev)
708 if (g->dbg_regops_tmp_buf) 711 if (g->dbg_regops_tmp_buf)
709 kfree(g->dbg_regops_tmp_buf); 712 kfree(g->dbg_regops_tmp_buf);
710 713
714 nvgpu_wait_for_deferred_interrupts(g);
715
716 gk20a_channel_cancel_pending_sema_waits(g);
717
711 if (g->pmu.remove_support) 718 if (g->pmu.remove_support)
712 g->pmu.remove_support(&g->pmu); 719 g->pmu.remove_support(&g->pmu);
713 720
@@ -1740,6 +1747,7 @@ void gk20a_busy_noresume(struct device *dev)
1740 */ 1747 */
1741void gk20a_driver_start_unload(struct gk20a *g) 1748void gk20a_driver_start_unload(struct gk20a *g)
1742{ 1749{
1750 gk20a_dbg(gpu_dbg_shutdown, "Driver is now going down!\n");
1743 g->driver_is_dying = 1; 1751 g->driver_is_dying = 1;
1744} 1752}
1745 1753
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index e8c1b30f..dc130e33 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -1081,6 +1081,7 @@ enum gk20a_dbg_categories {
1081 gpu_dbg_sema_v = BIT(16), /* verbose semaphore debugging */ 1081 gpu_dbg_sema_v = BIT(16), /* verbose semaphore debugging */
1082 gpu_dbg_pmu_pstate = BIT(17), /* p state controlled by pmu */ 1082 gpu_dbg_pmu_pstate = BIT(17), /* p state controlled by pmu */
1083 gpu_dbg_xv = BIT(18), /* XVE debugging */ 1083 gpu_dbg_xv = BIT(18), /* XVE debugging */
1084 gpu_dbg_shutdown = BIT(19), /* GPU shutdown tracing */
1084 gpu_dbg_mem = BIT(31), /* memory accesses, very verbose */ 1085 gpu_dbg_mem = BIT(31), /* memory accesses, very verbose */
1085}; 1086};
1086 1087