diff options
author | Sidath Senanayake <sidaths@google.com> | 2019-06-27 14:37:54 +0200 |
---|---|---|
committer | Sidath Senanayake <sidaths@google.com> | 2019-06-27 14:37:54 +0200 |
commit | 228451ed83f4840e863beff27b33ca9a460f820b (patch) | |
tree | dd7cbcae7ac302e9d381d95251ad5a0298bec5ae /mali_kbase/backend/gpu/mali_kbase_irq_linux.c | |
parent | ac90f0dd5fbae0b94e9720203a8bb2e81fd4b679 (diff) | |
download | gpu-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.c | 42 |
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; |