mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: force CAR reset in do_idle() for gm20b
In gk20a_do_idle(), we wait for platform->railgate_delay to allow GPU to go into rail gate But sometimes we set platform->railgate_delay = INT_MAX to disable GPU rail gating but allow it to suspend during low power state Due to this, force_idle API fails (it waits for INT_MAX) To fix this, allow forcing CAR reset instead of rail gating with flag "force_reset_in_do_idle" defined in gk20a_platform Set this flag for gm20b until we fix the railgate_delay Bug 1517584 Change-Id: I031aa56f87d4db3727e2c3a3e5eeaf18503dd449 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/593704 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
This commit is contained in:
committed by
Dan Willemsen
parent
1d0e302b53
commit
0e89e42318
@@ -1659,7 +1659,7 @@ int __gk20a_do_idle(struct platform_device *pdev)
|
||||
*/
|
||||
pm_runtime_put_sync(&pdev->dev);
|
||||
|
||||
if (platform->can_railgate) {
|
||||
if (platform->can_railgate && !platform->force_reset_in_do_idle) {
|
||||
/* add sufficient delay to allow GPU to rail gate */
|
||||
msleep(platform->railgate_delay);
|
||||
|
||||
|
||||
@@ -76,6 +76,12 @@ struct gk20a_platform {
|
||||
/* Adaptative ELPG: true = enable flase = disable */
|
||||
bool enable_aelpg;
|
||||
|
||||
/*
|
||||
* gk20a_do_idle() API can take GPU either into rail gate or CAR reset
|
||||
* This flag can be used to force CAR reset case instead of rail gate
|
||||
*/
|
||||
bool force_reset_in_do_idle;
|
||||
|
||||
/* Default big page size 64K or 128K */
|
||||
u32 default_big_page_size;
|
||||
|
||||
|
||||
@@ -485,6 +485,8 @@ static struct gk20a_platform t132_gk20a_tegra_platform = {
|
||||
.enable_elpg = true,
|
||||
.enable_aelpg = true,
|
||||
|
||||
.force_reset_in_do_idle = false,
|
||||
|
||||
.default_big_page_size = SZ_128K,
|
||||
|
||||
.probe = gk20a_tegra_probe,
|
||||
@@ -526,6 +528,8 @@ struct gk20a_platform gk20a_tegra_platform = {
|
||||
.enable_elpg = true,
|
||||
.enable_aelpg = true,
|
||||
|
||||
.force_reset_in_do_idle = false,
|
||||
|
||||
.default_big_page_size = SZ_128K,
|
||||
|
||||
.probe = gk20a_tegra_probe,
|
||||
@@ -568,6 +572,8 @@ struct gk20a_platform gm20b_tegra_platform = {
|
||||
.enable_elpg = true,
|
||||
.enable_aelpg = true,
|
||||
|
||||
.force_reset_in_do_idle = true,
|
||||
|
||||
.default_big_page_size = SZ_128K,
|
||||
|
||||
.probe = gk20a_tegra_probe,
|
||||
|
||||
Reference in New Issue
Block a user