linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] habanalabs: Avoid using a non-initialized MMU cache mutex
@ 2019-05-13 11:32 Oded Gabbay
       [not found] ` <20190513141010.8EC6820862@mail.kernel.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Oded Gabbay @ 2019-05-13 11:32 UTC (permalink / raw)
  To: linux-kernel; +Cc: gregkh, Tomer Tayar, stable

From: Tomer Tayar <ttayar@habana.ai>

The MMU cache mutex is used in the ASIC hw_init() functions, but it is
initialized only later in hl_mmu_init().
This patch prevents it by moving the initialization to the
device_early_init() function.

Signed-off-by: Tomer Tayar <ttayar@habana.ai>
Signed-off-by: Oded Gabbay <oded.gabbay@gmail.com>
Cc: stable@vger.kernel.org
---
 drivers/misc/habanalabs/device.c | 2 ++
 drivers/misc/habanalabs/mmu.c    | 8 +-------
 2 files changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/misc/habanalabs/device.c b/drivers/misc/habanalabs/device.c
index 91a9e47a3482..0b19d3eefb98 100644
--- a/drivers/misc/habanalabs/device.c
+++ b/drivers/misc/habanalabs/device.c
@@ -231,6 +231,7 @@ static int device_early_init(struct hl_device *hdev)
 
 	mutex_init(&hdev->fd_open_cnt_lock);
 	mutex_init(&hdev->send_cpu_message_lock);
+	mutex_init(&hdev->mmu_cache_lock);
 	INIT_LIST_HEAD(&hdev->hw_queues_mirror_list);
 	spin_lock_init(&hdev->hw_queues_mirror_lock);
 	atomic_set(&hdev->in_reset, 0);
@@ -260,6 +261,7 @@ static int device_early_init(struct hl_device *hdev)
  */
 static void device_early_fini(struct hl_device *hdev)
 {
+	mutex_destroy(&hdev->mmu_cache_lock);
 	mutex_destroy(&hdev->send_cpu_message_lock);
 
 	hl_cb_mgr_fini(hdev, &hdev->kernel_cb_mgr);
diff --git a/drivers/misc/habanalabs/mmu.c b/drivers/misc/habanalabs/mmu.c
index 533d9315b6fb..10aee3141444 100644
--- a/drivers/misc/habanalabs/mmu.c
+++ b/drivers/misc/habanalabs/mmu.c
@@ -404,15 +404,12 @@ int hl_mmu_init(struct hl_device *hdev)
 
 	/* MMU H/W init was already done in device hw_init() */
 
-	mutex_init(&hdev->mmu_cache_lock);
-
 	hdev->mmu_pgt_pool =
 			gen_pool_create(__ffs(prop->mmu_hop_table_size), -1);
 
 	if (!hdev->mmu_pgt_pool) {
 		dev_err(hdev->dev, "Failed to create page gen pool\n");
-		rc = -ENOMEM;
-		goto err_pool_create;
+		return -ENOMEM;
 	}
 
 	rc = gen_pool_add(hdev->mmu_pgt_pool, prop->mmu_pgt_addr +
@@ -436,8 +433,6 @@ int hl_mmu_init(struct hl_device *hdev)
 
 err_pool_add:
 	gen_pool_destroy(hdev->mmu_pgt_pool);
-err_pool_create:
-	mutex_destroy(&hdev->mmu_cache_lock);
 
 	return rc;
 }
@@ -459,7 +454,6 @@ void hl_mmu_fini(struct hl_device *hdev)
 
 	kvfree(hdev->mmu_shadow_hop0);
 	gen_pool_destroy(hdev->mmu_pgt_pool);
-	mutex_destroy(&hdev->mmu_cache_lock);
 
 	/* MMU H/W fini will be done in device hw_fini() */
 }
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] habanalabs: Avoid using a non-initialized MMU cache mutex
       [not found]   ` <CAFCwf10Ve9jpDZ8LnvFr=85ytHN8nhyBu9YJft0acTy5q3V_rg@mail.gmail.com>
@ 2019-05-13 16:41     ` Sasha Levin
  0 siblings, 0 replies; 2+ messages in thread
From: Sasha Levin @ 2019-05-13 16:41 UTC (permalink / raw)
  To: Oded Gabbay
  Cc: Tomer Tayar, Linux-Kernel@Vger. Kernel. Org, Greg Kroah-Hartman, stable

On Mon, May 13, 2019 at 05:22:30PM +0300, Oded Gabbay wrote:
>On Mon, May 13, 2019 at 5:10 PM Sasha Levin <sashal@kernel.org> wrote:
>>
>> Hi,
>>
>> [This is an automated email]
>>
>> This commit has been processed because it contains a -stable tag.
>> The stable tag indicates that it's relevant for the following trees: all
>>
>> The bot has tested the following trees: v5.0.15, v4.19.42, v4.14.118, v4.9.175, v4.4.179, v3.18.139.
>>
>> v5.0.15: Failed to apply! Possible dependencies:
>>     0861e41de530 ("habanalabs: add context and ASID modules")
>>     839c48030d27 ("habanalabs: add basic Goya h/w initialization")
>>     9494a8dd8d22 ("habanalabs: add h/w queues module")
>>     99b9d7b4970c ("habanalabs: add basic Goya support")
>>     be5d926b5c10 ("habanalabs: add command buffer module")
>>     c4d66343a46a ("habanalabs: add skeleton driver")
>>     d91389bc839d ("habanalabs: add sysfs and hwmon support")
>>     eff6f4a0e70b ("habanalabs: add command submission module")
>>
>> v4.19.42: Failed to apply! Possible dependencies:
>>     0861e41de530 ("habanalabs: add context and ASID modules")
>>     839c48030d27 ("habanalabs: add basic Goya h/w initialization")
>>     9494a8dd8d22 ("habanalabs: add h/w queues module")
>>     99b9d7b4970c ("habanalabs: add basic Goya support")
>>     be5d926b5c10 ("habanalabs: add command buffer module")
>>     c4d66343a46a ("habanalabs: add skeleton driver")
>>     fcb418cd567f ("pvpanic: move pvpanic to misc as common driver")
>>
>> v4.14.118: Failed to apply! Possible dependencies:
>>     01451ad47e27 ("powerpc/powermac: Use setup_timer() helper")
>>     8275b77a1513 ("mfd: rts5249: Add support for RTS5250S power saving")
>>     83ad1e6a1dc0 ("powerpc/oprofile: Use setup_timer() helper")
>>     8d6b1bf20f61 ("powerpc/6xx: Use setup_timer() helper")
>>     9494a8dd8d22 ("habanalabs: add h/w queues module")
>>     b1fc2839d2f9 ("drm/msm: Implement preemption for A5XX targets")
>>     b9eaf1872222 ("treewide: init_timer() -> setup_timer()")
>>     be5d926b5c10 ("habanalabs: add command buffer module")
>>     c4d66343a46a ("habanalabs: add skeleton driver")
>>     cd414f3d9316 ("drm/msm: Move memptrs to msm_gpu")
>>     e455b69ddf9b ("misc: rtsx: Move Realtek Card Reader Driver to misc")
>>     e629cfa36ea0 ("MIPS: Lasat: Use setup_timer() helper")
>>     e99e88a9d2b0 ("treewide: setup_timer() -> timer_setup()")
>>     f97decac5f4c ("drm/msm: Support multiple ringbuffers")
>>
>> v4.9.175: Failed to apply! Possible dependencies:
>>     01451ad47e27 ("powerpc/powermac: Use setup_timer() helper")
>>     118f6523793d ("mfd: rtsx: Convert forgotten dev_info() statement to pcr_dbg()")
>>     53460c53b761 ("[media] au0828: Add timer to restart TS stream if no data arrives on bulk endpoint")
>>     7c96f59e0caf ("[media] s5p-mfc: Fix initialization of internal structures")
>>     8275b77a1513 ("mfd: rts5249: Add support for RTS5250S power saving")
>>     83ad1e6a1dc0 ("powerpc/oprofile: Use setup_timer() helper")
>>     87d284443d07 ("mfd: rtsx: Do retry when DMA transfer error")
>>     8d6b1bf20f61 ("powerpc/6xx: Use setup_timer() helper")
>>     9494a8dd8d22 ("habanalabs: add h/w queues module")
>>     b9eaf1872222 ("treewide: init_timer() -> setup_timer()")
>>     be5d926b5c10 ("habanalabs: add command buffer module")
>>     c4d66343a46a ("habanalabs: add skeleton driver")
>>     cf43e6be865a ("block: add scalable completion tracking of requests")
>>     e26ae3660b9c ("mfd: rtsx: Make arrays depth and cd_mask static const")
>>     e455b69ddf9b ("misc: rtsx: Move Realtek Card Reader Driver to misc")
>>     e629cfa36ea0 ("MIPS: Lasat: Use setup_timer() helper")
>>     e806402130c9 ("block: split out request-only flags into a new namespace")
>>     e99e88a9d2b0 ("treewide: setup_timer() -> timer_setup()")
>>
>> v4.4.179: Failed to apply! Possible dependencies:
>>     118f6523793d ("mfd: rtsx: Convert forgotten dev_info() statement to pcr_dbg()")
>>     53460c53b761 ("[media] au0828: Add timer to restart TS stream if no data arrives on bulk endpoint")
>>     7c96f59e0caf ("[media] s5p-mfc: Fix initialization of internal structures")
>>     80c1bce9aa31 ("[media] au0828: Refactoring for start_urb_transfer()")
>>     8275b77a1513 ("mfd: rts5249: Add support for RTS5250S power saving")
>>     87d284443d07 ("mfd: rtsx: Do retry when DMA transfer error")
>>     9494a8dd8d22 ("habanalabs: add h/w queues module")
>>     9815c7cf22da ("NFC: pn533: Separate physical layer from the core implementation")
>>     b9eaf1872222 ("treewide: init_timer() -> setup_timer()")
>>     be5d926b5c10 ("habanalabs: add command buffer module")
>>     c4d66343a46a ("habanalabs: add skeleton driver")
>>     e26ae3660b9c ("mfd: rtsx: Make arrays depth and cd_mask static const")
>>     e455b69ddf9b ("misc: rtsx: Move Realtek Card Reader Driver to misc")
>>     e99e88a9d2b0 ("treewide: setup_timer() -> timer_setup()")
>>
>> v3.18.139: Failed to apply! Possible dependencies:
>>     0523b8f41473 ("mfd: rtsx: Using pcr_dbg replace dev_dbg")
>>     0b271258544b ("mfd: rt5033: Add Richtek RT5033 driver core.")
>>     19f3bd548f27 ("mfd: rtsx: Remove LCTLR defination")
>>     338a12814297 ("mfd: Add support for Diolan DLN-2 devices")
>>     5cb5d9616a47 ("mfd: rtsx: Fix PM suspend for 5227 & 5249")
>>     663c425f2c8d ("mfd: rtsx: Add support for rts524A")
>>     8275b77a1513 ("mfd: rts5249: Add support for RTS5250S power saving")
>>     9494a8dd8d22 ("habanalabs: add h/w queues module")
>>     9e33ce79f828 ("mfd: rtsx: Update PETXCFG address")
>>     a3b63979f8a3 ("mfd: rtsx: Add func to split u32 into register")
>>     b038538104d5 ("mfd: rtsx: Update phy register")
>>     b158b69a3765 ("mfd: rtsx: Simplify function return logic")
>>     be5d926b5c10 ("habanalabs: add command buffer module")
>>     c4d66343a46a ("habanalabs: add skeleton driver")
>>     ce6a5acc9387 ("mfd: rtsx: Add support for rts522A")
>>     e455b69ddf9b ("misc: rtsx: Move Realtek Card Reader Driver to misc")
>>     e89f231826a7 ("mfd: rtsx: Update driving settings")
>>
>>
>> How should we proceed with this patch?
>>
>> --
>> Thanks,
>> Sasha
>
>ok, I see my mistake.
>How do I specify a specific kernel version ?
>Because this applies only to future 5.1.X, that aren't available yet.

Take a look at
https://www.kernel.org/doc/Documentation/process/stable-kernel-rules.rst

A "Fixes" tag also helps a lot.

--
Thanks,
Sasha

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-05-13 16:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-13 11:32 [PATCH] habanalabs: Avoid using a non-initialized MMU cache mutex Oded Gabbay
     [not found] ` <20190513141010.8EC6820862@mail.kernel.org>
     [not found]   ` <CAFCwf10Ve9jpDZ8LnvFr=85ytHN8nhyBu9YJft0acTy5q3V_rg@mail.gmail.com>
2019-05-13 16:41     ` Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).