From a30f3075544b5edd2144383459d2650a88b1cde7 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Fri, 5 Jan 2018 11:14:35 -0800 Subject: gpu: nvgpu: Free enabled flags on driver unload Make sure the enabled flags are freed before the driver unloads. Bug 200369180 Change-Id: Ibac9ee61ca99bdfda03d76e393c7cd6cb6cc299a Signed-off-by: Alex Waterman Reviewed-on: https://git-master.nvidia.com/r/1632752 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/common/enabled.c | 8 ++++++++ drivers/gpu/nvgpu/common/linux/module.c | 2 ++ drivers/gpu/nvgpu/include/nvgpu/enabled.h | 1 + 3 files changed, 11 insertions(+) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/common/enabled.c b/drivers/gpu/nvgpu/common/enabled.c index 06cbbe34..cded36c8 100644 --- a/drivers/gpu/nvgpu/common/enabled.c +++ b/drivers/gpu/nvgpu/common/enabled.c @@ -40,6 +40,14 @@ int nvgpu_init_enabled_flags(struct gk20a *g) return 0; } +/* + * Call this on driver shutdown! + */ +void nvgpu_free_enabled_flags(struct gk20a *g) +{ + nvgpu_kfree(g, g->enabled_flags); +} + bool nvgpu_is_enabled(struct gk20a *g, int flag) { return test_bit(flag, g->enabled_flags); diff --git a/drivers/gpu/nvgpu/common/linux/module.c b/drivers/gpu/nvgpu/common/linux/module.c index 5d91da8f..cc2b5ec7 100644 --- a/drivers/gpu/nvgpu/common/linux/module.c +++ b/drivers/gpu/nvgpu/common/linux/module.c @@ -673,6 +673,8 @@ void gk20a_remove_support(struct gk20a *g) #ifdef CONFIG_TEGRA_19x_GPU t19x_remove_support(g); #endif + + nvgpu_free_enabled_flags(g); } static int gk20a_init_support(struct platform_device *dev) diff --git a/drivers/gpu/nvgpu/include/nvgpu/enabled.h b/drivers/gpu/nvgpu/include/nvgpu/enabled.h index e7dd61d2..001cafb0 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/enabled.h +++ b/drivers/gpu/nvgpu/include/nvgpu/enabled.h @@ -170,5 +170,6 @@ bool nvgpu_is_enabled(struct gk20a *g, int flag); bool __nvgpu_set_enabled(struct gk20a *g, int flag, bool state); int nvgpu_init_enabled_flags(struct gk20a *g); +void nvgpu_free_enabled_flags(struct gk20a *g); #endif -- cgit v1.2.2