mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 09:12:24 +03:00
gpu: nvgpu: skip taking g->busy_lock in gk20a_idle
We use g->busy_lock in gk20a_do_idle() to prevent submitting more jobs to h/w and to wait for currently running jobs to finish But requesting this lock in gk20a_idle() prevents decrementing runtime counter and hence gk20a_do_idle() can timeout with below prints [ 148.904739] gk20a 17000000.gp10b: Timeout detected @ gk20a_do_idle+0x30/0x38 [ 148.912185] gk20a 17000000.gp10b: __gk20a_do_idle: failed to idle - refcount 4 != 1 Hence skip requesting this lock in gk20a_idle() Bug 200294536 Change-Id: I060075fdee1b68e1b5fa11baa44a3f5ce4917d94 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1480777 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
3bc022cb38
commit
47cd4860f0
@@ -1908,12 +1908,11 @@ void gk20a_idle(struct gk20a *g)
|
|||||||
struct device *dev;
|
struct device *dev;
|
||||||
|
|
||||||
atomic_dec(&g->usage_count);
|
atomic_dec(&g->usage_count);
|
||||||
down_read(&g->busy_lock);
|
|
||||||
|
|
||||||
dev = g->dev;
|
dev = g->dev;
|
||||||
|
|
||||||
if (!(dev && gk20a_can_busy(g)))
|
if (!(dev && gk20a_can_busy(g)))
|
||||||
goto fail;
|
return;
|
||||||
|
|
||||||
if (pm_runtime_enabled(dev)) {
|
if (pm_runtime_enabled(dev)) {
|
||||||
#ifdef CONFIG_PM
|
#ifdef CONFIG_PM
|
||||||
@@ -1927,8 +1926,6 @@ void gk20a_idle(struct gk20a *g)
|
|||||||
} else {
|
} else {
|
||||||
gk20a_scale_notify_idle(dev);
|
gk20a_scale_notify_idle(dev);
|
||||||
}
|
}
|
||||||
fail:
|
|
||||||
up_read(&g->busy_lock);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gk20a_disable(struct gk20a *g, u32 units)
|
void gk20a_disable(struct gk20a *g, u32 units)
|
||||||
|
|||||||
Reference in New Issue
Block a user