From a13a4124c7de56d7c38cce106e16f88c429292f8 Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Fri, 11 Mar 2016 07:55:30 -0800 Subject: gpu: nvgpu: Disable illegal comptag interrupt Illegal comptag interrupt is triggered when a page is mapped with two different kinds with incompatible compression status. This can be intentional, so disable the interrupt. Change-Id: I84a212beac147991d09d2d381a9e770b1364f4d8 Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/1029663 (cherry picked from commit 819607a768f9fccdd0b233d58bcf88b9eee4ee19) Reviewed-on: http://git-master/r/1031010 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit --- drivers/gpu/nvgpu/gk20a/hw_ltc_gk20a.h | 6 +++++- drivers/gpu/nvgpu/gk20a/ltc_gk20a.c | 14 ++++++++++---- drivers/gpu/nvgpu/gm20b/hw_ltc_gm20b.h | 6 +++++- drivers/gpu/nvgpu/gm20b/ltc_gm20b.c | 3 ++- 4 files changed, 22 insertions(+), 7 deletions(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/gk20a/hw_ltc_gk20a.h b/drivers/gpu/nvgpu/gk20a/hw_ltc_gk20a.h index 6db5654b..94770431 100644 --- a/drivers/gpu/nvgpu/gk20a/hw_ltc_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/hw_ltc_gk20a.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2014, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2012-2016, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -258,6 +258,10 @@ static inline u32 ltc_ltcs_ltss_intr_en_evicted_cb_m(void) { return 0x1 << 20; } +static inline u32 ltc_ltcs_ltss_intr_en_illegal_compstat_m(void) +{ + return 0x1 << 21; +} static inline u32 ltc_ltc0_lts0_intr_r(void) { return 0x00141020; diff --git a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c index c6ff07da..0d9a98b4 100644 --- a/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/ltc_gk20a.c @@ -1,9 +1,7 @@ /* - * drivers/video/tegra/host/gk20a/ltc_gk20a.c + * GK20A L2 * - * GK20A Graphics - * - * Copyright (c) 2011-2015, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2011-2016, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -173,9 +171,17 @@ out: static void gk20a_ltc_init_fs_state(struct gk20a *g) { + u32 reg; + gk20a_dbg_info("initialize gk20a L2"); g->max_ltc_count = g->ltc_count = 1; + + /* Disable LTC interrupts */ + reg = gk20a_readl(g, ltc_ltcs_ltss_intr_r()); + reg &= ~ltc_ltcs_ltss_intr_en_evicted_cb_m(); + reg &= ~ltc_ltcs_ltss_intr_en_illegal_compstat_m(); + gk20a_writel(g, ltc_ltcs_ltss_intr_r(), reg); } static void gk20a_ltc_isr(struct gk20a *g) diff --git a/drivers/gpu/nvgpu/gm20b/hw_ltc_gm20b.h b/drivers/gpu/nvgpu/gm20b/hw_ltc_gm20b.h index 95e0c43d..aa01e945 100644 --- a/drivers/gpu/nvgpu/gm20b/hw_ltc_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/hw_ltc_gm20b.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2014-2016, NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -286,6 +286,10 @@ static inline u32 ltc_ltcs_ltss_intr_en_illegal_compstat_access_m(void) { return 0x1 << 30; } +static inline u32 ltc_ltcs_ltss_intr_en_illegal_compstat_m(void) +{ + return 0x1 << 21; +} static inline u32 ltc_ltc0_lts0_intr_r(void) { return 0x0014040c; diff --git a/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c b/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c index 5b6bff7f..ffc36903 100644 --- a/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c @@ -1,7 +1,7 @@ /* * GM20B L2 * - * Copyright (c) 2014-2015 NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2014-2016 NVIDIA CORPORATION. All rights reserved. * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, @@ -190,6 +190,7 @@ void gm20b_ltc_init_fs_state(struct gk20a *g) reg = gk20a_readl(g, ltc_ltcs_ltss_intr_r()); reg &= ~ltc_ltcs_ltss_intr_en_evicted_cb_m(); reg &= ~ltc_ltcs_ltss_intr_en_illegal_compstat_access_m(); + reg &= ~ltc_ltcs_ltss_intr_en_illegal_compstat_m(); gk20a_writel(g, ltc_ltcs_ltss_intr_r(), reg); } -- cgit v1.2.2