From 0eb8eb4dccbd47876db97f96eafbf95c3bb745ff Mon Sep 17 00:00:00 2001 From: Harshdeep Dhatt Date: Thu, 23 Jul 2020 13:19:24 -0600 Subject: [PATCH] msm: kgsl: Modify the a6xx interrupt mask for hwsched With hardware scheduling, we only need to enable a subset of interrupts as the rest of them are completely owned by GMU. Change-Id: I32afc4420299688b9a4322804ce972c79f1a7a22 Signed-off-by: Harshdeep Dhatt --- drivers/gpu/msm/adreno_a6xx.c | 20 ++------------------ drivers/gpu/msm/adreno_a6xx.h | 25 +++++++++++++++++++++++++ drivers/gpu/msm/adreno_a6xx_gmu.c | 2 ++ drivers/gpu/msm/adreno_a6xx_hwsched.c | 2 ++ drivers/gpu/msm/adreno_a6xx_rgmu.c | 2 ++ 5 files changed, 33 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/msm/adreno_a6xx.c b/drivers/gpu/msm/adreno_a6xx.c index fb9cda3c9713..e1698a5c03f4 100644 --- a/drivers/gpu/msm/adreno_a6xx.c +++ b/drivers/gpu/msm/adreno_a6xx.c @@ -17,22 +17,6 @@ #include "adreno_trace.h" #include "kgsl_trace.h" -#define A6XX_INT_MASK \ - ((1 << A6XX_INT_CP_AHB_ERROR) | \ - (1 << A6XX_INT_ATB_ASYNCFIFO_OVERFLOW) | \ - (1 << A6XX_INT_RBBM_GPC_ERROR) | \ - (1 << A6XX_INT_CP_SW) | \ - (1 << A6XX_INT_CP_HW_ERROR) | \ - (1 << A6XX_INT_CP_IB2) | \ - (1 << A6XX_INT_CP_IB1) | \ - (1 << A6XX_INT_CP_RB) | \ - (1 << A6XX_INT_CP_CACHE_FLUSH_TS) | \ - (1 << A6XX_INT_RBBM_ATB_BUS_OVERFLOW) | \ - (1 << A6XX_INT_RBBM_HANG_DETECT) | \ - (1 << A6XX_INT_UCHE_OOB_ACCESS) | \ - (1 << A6XX_INT_UCHE_TRAP_INTR) | \ - (1 << A6XX_INT_TSB_WRITE_ERROR)) - /* IFPC & Preemption static powerup restore list */ static u32 a6xx_pwrup_reglist[] = { A6XX_VSC_ADDR_MODE_CNTL, @@ -439,8 +423,6 @@ void a6xx_start(struct adreno_device *adreno_dev) unsigned int rgb565_predicator = 0; static bool patch_reglist; - adreno_dev->irq_mask = A6XX_INT_MASK; - /* enable hardware clockgating */ a6xx_hwcg_set(adreno_dev, true); @@ -2532,6 +2514,8 @@ static int a6xx_probe(struct platform_device *pdev, INIT_WORK(&device->idle_check_ws, kgsl_idle_check); + adreno_dev->irq_mask = A6XX_INT_MASK; + return 0; } diff --git a/drivers/gpu/msm/adreno_a6xx.h b/drivers/gpu/msm/adreno_a6xx.h index 5fa428139b4f..c8895ef8d9d7 100644 --- a/drivers/gpu/msm/adreno_a6xx.h +++ b/drivers/gpu/msm/adreno_a6xx.h @@ -186,6 +186,31 @@ struct cpu_gpu_lock { /* Size of the CP_INIT pm4 stream in dwords */ #define A6XX_CP_INIT_DWORDS 12 +#define A6XX_INT_MASK \ + ((1 << A6XX_INT_CP_AHB_ERROR) | \ + (1 << A6XX_INT_ATB_ASYNCFIFO_OVERFLOW) | \ + (1 << A6XX_INT_RBBM_GPC_ERROR) | \ + (1 << A6XX_INT_CP_SW) | \ + (1 << A6XX_INT_CP_HW_ERROR) | \ + (1 << A6XX_INT_CP_IB2) | \ + (1 << A6XX_INT_CP_IB1) | \ + (1 << A6XX_INT_CP_RB) | \ + (1 << A6XX_INT_CP_CACHE_FLUSH_TS) | \ + (1 << A6XX_INT_RBBM_ATB_BUS_OVERFLOW) | \ + (1 << A6XX_INT_RBBM_HANG_DETECT) | \ + (1 << A6XX_INT_UCHE_OOB_ACCESS) | \ + (1 << A6XX_INT_UCHE_TRAP_INTR) | \ + (1 << A6XX_INT_TSB_WRITE_ERROR)) + +#define A6XX_HWSCHED_INT_MASK \ + ((1 << A6XX_INT_CP_AHB_ERROR) | \ + (1 << A6XX_INT_ATB_ASYNCFIFO_OVERFLOW) | \ + (1 << A6XX_INT_RBBM_GPC_ERROR) | \ + (1 << A6XX_INT_RBBM_ATB_BUS_OVERFLOW) | \ + (1 << A6XX_INT_UCHE_OOB_ACCESS) | \ + (1 << A6XX_INT_UCHE_TRAP_INTR) | \ + (1 << A6XX_INT_TSB_WRITE_ERROR)) + /** * to_a6xx_core - return the a6xx specific GPU core struct * @adreno_dev: An Adreno GPU device handle diff --git a/drivers/gpu/msm/adreno_a6xx_gmu.c b/drivers/gpu/msm/adreno_a6xx_gmu.c index dd71faf813ac..e25b409f1f83 100644 --- a/drivers/gpu/msm/adreno_a6xx_gmu.c +++ b/drivers/gpu/msm/adreno_a6xx_gmu.c @@ -3333,6 +3333,8 @@ int a6xx_gmu_device_probe(struct platform_device *pdev, timer_setup(&device->idle_timer, gmu_idle_timer, 0); + adreno_dev->irq_mask = A6XX_INT_MASK; + return 0; } diff --git a/drivers/gpu/msm/adreno_a6xx_hwsched.c b/drivers/gpu/msm/adreno_a6xx_hwsched.c index 52017b2df964..127facf3d300 100644 --- a/drivers/gpu/msm/adreno_a6xx_hwsched.c +++ b/drivers/gpu/msm/adreno_a6xx_hwsched.c @@ -705,6 +705,8 @@ int a6xx_hwsched_probe(struct platform_device *pdev, timer_setup(&device->idle_timer, hwsched_idle_timer, 0); + adreno_dev->irq_mask = A6XX_HWSCHED_INT_MASK; + return 0; } diff --git a/drivers/gpu/msm/adreno_a6xx_rgmu.c b/drivers/gpu/msm/adreno_a6xx_rgmu.c index dd312269c080..0cb54da191c3 100644 --- a/drivers/gpu/msm/adreno_a6xx_rgmu.c +++ b/drivers/gpu/msm/adreno_a6xx_rgmu.c @@ -1310,6 +1310,8 @@ int a6xx_rgmu_device_probe(struct platform_device *pdev, timer_setup(&device->idle_timer, rgmu_idle_timer, 0); + adreno_dev->irq_mask = A6XX_INT_MASK; + return 0; }