Normally all waiting get timeout if there's one.
Release the lock and return immediately when timeout happens.
v2:
 - set the se_sh to broadcase before return
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: pding <Pixel.Ding@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
                                        break;
                                udelay(1);
                        }
+                       if (k == adev->usec_timeout) {
+                               gfx_v8_0_select_se_sh(adev, 0xffffffff,
+                                                     0xffffffff, 0xffffffff);
+                               mutex_unlock(&adev->grbm_idx_mutex);
+                               DRM_INFO("Timeout wait for RLC serdes %u,%u\n",
+                                        i, j);
+                               return;
+                       }
                }
        }
        gfx_v8_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);
 
                                        break;
                                udelay(1);
                        }
+                       if (k == adev->usec_timeout) {
+                               gfx_v9_0_select_se_sh(adev, 0xffffffff,
+                                                     0xffffffff, 0xffffffff);
+                               mutex_unlock(&adev->grbm_idx_mutex);
+                               DRM_INFO("Timeout wait for RLC serdes %u,%u\n",
+                                        i, j);
+                               return;
+                       }
                }
        }
        gfx_v9_0_select_se_sh(adev, 0xffffffff, 0xffffffff, 0xffffffff);