summaryrefslogtreecommitdiff
path: root/mali_kbase/backend/gpu/mali_kbase_irq_linux.c
diff options
context:
space:
mode:
authorSidath Senanayake <sidaths@google.com>2019-06-27 14:37:54 +0200
committerSidath Senanayake <sidaths@google.com>2019-06-27 14:37:54 +0200
commit228451ed83f4840e863beff27b33ca9a460f820b (patch)
treedd7cbcae7ac302e9d381d95251ad5a0298bec5ae /mali_kbase/backend/gpu/mali_kbase_irq_linux.c
parentac90f0dd5fbae0b94e9720203a8bb2e81fd4b679 (diff)
downloadgpu-228451ed83f4840e863beff27b33ca9a460f820b.tar.gz
Mali Valhall DDK r19p0 KMD
Provenance: 95928c7e8 (collaborate/EAC/v_r19p0) VX504X08X-BU-00000-r19p0-01rel0 - Android DDK NOTE: This is identical to the Bifrost r19p0 KMD as the only differences between b_r19p0 and v_r19p0 are outside of the KMD. So as far as the KMD goes, 95928c7e8 and d441d721a in Collaborate are identical. Signed-off-by: Sidath Senanayake <sidaths@google.com> Change-Id: I261cba9d04daaf8c5ca55e4cb319cf47402dc5f4
Diffstat (limited to 'mali_kbase/backend/gpu/mali_kbase_irq_linux.c')
-rw-r--r--mali_kbase/backend/gpu/mali_kbase_irq_linux.c42
1 files changed, 20 insertions, 22 deletions
diff --git a/mali_kbase/backend/gpu/mali_kbase_irq_linux.c b/mali_kbase/backend/gpu/mali_kbase_irq_linux.c
index dd0279a..643f450 100644
--- a/mali_kbase/backend/gpu/mali_kbase_irq_linux.c
+++ b/mali_kbase/backend/gpu/mali_kbase_irq_linux.c
@@ -1,6 +1,6 @@
/*
*
- * (C) COPYRIGHT 2014-2016,2018 ARM Limited. All rights reserved.
+ * (C) COPYRIGHT 2014-2016,2018-2019 ARM Limited. All rights reserved.
*
* This program is free software and is provided to you under the terms of the
* GNU General Public License version 2 as published by the Free Software
@@ -49,12 +49,11 @@ static irqreturn_t kbase_job_irq_handler(int irq, void *data)
struct kbase_device *kbdev = kbase_untag(data);
u32 val;
- spin_lock_irqsave(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_lock_irqsave(&kbdev->hwaccess_lock, flags);
if (!kbdev->pm.backend.gpu_powered) {
/* GPU is turned off - IRQ is not for us */
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock,
- flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
return IRQ_NONE;
}
@@ -65,15 +64,18 @@ static irqreturn_t kbase_job_irq_handler(int irq, void *data)
dev_warn(kbdev->dev, "%s: irq %d irqstatus 0x%x before driver is ready\n",
__func__, irq, val);
#endif /* CONFIG_MALI_DEBUG */
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock, flags);
- if (!val)
+ if (!val) {
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
return IRQ_NONE;
+ }
dev_dbg(kbdev->dev, "%s: irq %d irqstatus 0x%x\n", __func__, irq, val);
kbase_job_done(kbdev, val);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
+
return IRQ_HANDLED;
}
@@ -85,12 +87,11 @@ static irqreturn_t kbase_mmu_irq_handler(int irq, void *data)
struct kbase_device *kbdev = kbase_untag(data);
u32 val;
- spin_lock_irqsave(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_lock_irqsave(&kbdev->hwaccess_lock, flags);
if (!kbdev->pm.backend.gpu_powered) {
/* GPU is turned off - IRQ is not for us */
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock,
- flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
return IRQ_NONE;
}
@@ -103,7 +104,7 @@ static irqreturn_t kbase_mmu_irq_handler(int irq, void *data)
dev_warn(kbdev->dev, "%s: irq %d irqstatus 0x%x before driver is ready\n",
__func__, irq, val);
#endif /* CONFIG_MALI_DEBUG */
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
if (!val) {
atomic_dec(&kbdev->faults_pending);
@@ -125,12 +126,11 @@ static irqreturn_t kbase_gpu_irq_handler(int irq, void *data)
struct kbase_device *kbdev = kbase_untag(data);
u32 val;
- spin_lock_irqsave(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_lock_irqsave(&kbdev->hwaccess_lock, flags);
if (!kbdev->pm.backend.gpu_powered) {
/* GPU is turned off - IRQ is not for us */
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock,
- flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
return IRQ_NONE;
}
@@ -141,7 +141,7 @@ static irqreturn_t kbase_gpu_irq_handler(int irq, void *data)
dev_dbg(kbdev->dev, "%s: irq %d irqstatus 0x%x before driver is ready\n",
__func__, irq, val);
#endif /* CONFIG_MALI_DEBUG */
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
if (!val)
return IRQ_NONE;
@@ -230,18 +230,17 @@ static irqreturn_t kbase_job_irq_test_handler(int irq, void *data)
struct kbase_device *kbdev = kbase_untag(data);
u32 val;
- spin_lock_irqsave(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_lock_irqsave(&kbdev->hwaccess_lock, flags);
if (!kbdev->pm.backend.gpu_powered) {
/* GPU is turned off - IRQ is not for us */
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock,
- flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
return IRQ_NONE;
}
val = kbase_reg_read(kbdev, JOB_CONTROL_REG(JOB_IRQ_STATUS));
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
if (!val)
return IRQ_NONE;
@@ -262,18 +261,17 @@ static irqreturn_t kbase_mmu_irq_test_handler(int irq, void *data)
struct kbase_device *kbdev = kbase_untag(data);
u32 val;
- spin_lock_irqsave(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_lock_irqsave(&kbdev->hwaccess_lock, flags);
if (!kbdev->pm.backend.gpu_powered) {
/* GPU is turned off - IRQ is not for us */
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock,
- flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
return IRQ_NONE;
}
val = kbase_reg_read(kbdev, MMU_REG(MMU_IRQ_STATUS));
- spin_unlock_irqrestore(&kbdev->pm.backend.gpu_powered_lock, flags);
+ spin_unlock_irqrestore(&kbdev->hwaccess_lock, flags);
if (!val)
return IRQ_NONE;