diff options
author | Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> | 2019-11-04 13:32:46 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2019-11-19 10:12:53 -0500 |
commit | 56fc13fe6caa67e1017e048763c9eaa32330187b (patch) | |
tree | bb02cc776adcc0fbffa211073fe7e27842c83f51 /drivers/gpu/drm/amd/display/dmub | |
parent | 46250a0cba4ce9c9754b922ef89a2aa484209164 (diff) | |
download | linux-56fc13fe6caa67e1017e048763c9eaa32330187b.tar.gz linux-56fc13fe6caa67e1017e048763c9eaa32330187b.tar.bz2 linux-56fc13fe6caa67e1017e048763c9eaa32330187b.zip |
drm/amd/display: Don't spin forever waiting for DMCUB phy/auto init
[Why]
It's an interface violation to use infinite loops within DMUB
service functions and we'll lock up the kernel by doing so.
[How]
Revert the function back to its intended functionality.
Move the infinite loops into DC/DM as necessary.
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Sun peng Li <Sunpeng.Li@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/dmub')
-rw-r--r-- | drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c index 5ae1906ff1b1..60c574a39c6a 100644 --- a/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c +++ b/drivers/gpu/drm/amd/display/dmub/src/dmub_srv.c @@ -400,19 +400,14 @@ enum dmub_status dmub_srv_wait_for_phy_init(struct dmub_srv *dmub, if (!dmub->hw_init || !dmub->hw_funcs.is_phy_init) return DMUB_STATUS_INVALID; -/* for (i = 0; i <= timeout_us; i += 10) { + for (i = 0; i <= timeout_us; i += 10) { if (dmub->hw_funcs.is_phy_init(dmub)) return DMUB_STATUS_OK; udelay(10); - }*/ - while (!dmub->hw_funcs.is_phy_init(dmub)) { - ASSERT(i <= timeout_us); - i += 10; - udelay(10); } - return DMUB_STATUS_OK; + return DMUB_STATUS_TIMEOUT; } enum dmub_status dmub_srv_wait_for_idle(struct dmub_srv *dmub, |