diff options
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.c | 7 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gk20a.h | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c index 0c6b1e5f..a5b4fddc 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gk20a.c | |||
@@ -1386,6 +1386,8 @@ static int gk20a_probe(struct platform_device *dev) | |||
1386 | 1386 | ||
1387 | gk20a_init_support(dev); | 1387 | gk20a_init_support(dev); |
1388 | 1388 | ||
1389 | init_rwsem(&gk20a->busy_lock); | ||
1390 | |||
1389 | spin_lock_init(&gk20a->mc_enable_lock); | 1391 | spin_lock_init(&gk20a->mc_enable_lock); |
1390 | 1392 | ||
1391 | /* Initialize the platform interface. */ | 1393 | /* Initialize the platform interface. */ |
@@ -1544,6 +1546,9 @@ void gk20a_busy_noresume(struct platform_device *pdev) | |||
1544 | int gk20a_busy(struct platform_device *pdev) | 1546 | int gk20a_busy(struct platform_device *pdev) |
1545 | { | 1547 | { |
1546 | int ret = 0; | 1548 | int ret = 0; |
1549 | struct gk20a *g = get_gk20a(pdev); | ||
1550 | |||
1551 | down_read(&g->busy_lock); | ||
1547 | 1552 | ||
1548 | #ifdef CONFIG_PM_RUNTIME | 1553 | #ifdef CONFIG_PM_RUNTIME |
1549 | ret = pm_runtime_get_sync(&pdev->dev); | 1554 | ret = pm_runtime_get_sync(&pdev->dev); |
@@ -1552,6 +1557,8 @@ int gk20a_busy(struct platform_device *pdev) | |||
1552 | #endif | 1557 | #endif |
1553 | gk20a_scale_notify_busy(pdev); | 1558 | gk20a_scale_notify_busy(pdev); |
1554 | 1559 | ||
1560 | up_read(&g->busy_lock); | ||
1561 | |||
1555 | return ret < 0 ? ret : 0; | 1562 | return ret < 0 ? ret : 0; |
1556 | } | 1563 | } |
1557 | 1564 | ||
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h index ef7945f4..e6630ebf 100644 --- a/drivers/gpu/nvgpu/gk20a/gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/gk20a.h | |||
@@ -220,6 +220,8 @@ struct gk20a { | |||
220 | 220 | ||
221 | bool power_on; | 221 | bool power_on; |
222 | 222 | ||
223 | struct rw_semaphore busy_lock; | ||
224 | |||
223 | struct clk_gk20a clk; | 225 | struct clk_gk20a clk; |
224 | struct fifo_gk20a fifo; | 226 | struct fifo_gk20a fifo; |
225 | struct gr_gk20a gr; | 227 | struct gr_gk20a gr; |