Re: [Intel-gfx] i915 timeouts delaying boot under GVT

2021-08-16 Thread Christoph Hellwig
On Mon, Aug 16, 2021 at 10:45:34AM +0800, Zhenyu Wang wrote:
> Hi, Christoph, what platform is this?

Kaby Lake ( i7-8550U)

>
> And what's your guest i915 config?

guest config as in i915-related .config options?

 snip 
CONFIG_DRM_I915=y
CONFIG_DRM_I915_FORCE_PROBE=""
CONFIG_DRM_I915_CAPTURE_ERROR=y
CONFIG_DRM_I915_COMPRESS_ERROR=y
CONFIG_DRM_I915_USERPTR=y
# CONFIG_DRM_I915_GVT is not set

#
# drm/i915 Debugging
#
# CONFIG_DRM_I915_WERROR is not set
# CONFIG_DRM_I915_DEBUG is not set
# CONFIG_DRM_I915_DEBUG_MMIO is not set
# CONFIG_DRM_I915_SW_FENCE_DEBUG_OBJECTS is not set
# CONFIG_DRM_I915_SW_FENCE_CHECK_DAG is not set
# CONFIG_DRM_I915_DEBUG_GUC is not set
# CONFIG_DRM_I915_SELFTEST is not set
# CONFIG_DRM_I915_LOW_LEVEL_TRACEPOINTS is not set
# CONFIG_DRM_I915_DEBUG_VBLANK_EVADE is not set
# CONFIG_DRM_I915_DEBUG_RUNTIME_PM is not set
# end of drm/i915 Debugging
#

#
# drm/i915 Profile Guided Optimisation
#
CONFIG_DRM_I915_REQUEST_TIMEOUT=2
CONFIG_DRM_I915_FENCE_TIMEOUT=1
CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250
CONFIG_DRM_I915_HEARTBEAT_INTERVAL=2500
CONFIG_DRM_I915_PREEMPT_TIMEOUT=100
CONFIG_DRM_I915_MAX_REQUEST_BUSYWAIT=8000
CONFIG_DRM_I915_STOP_TIMEOUT=100
CONFIG_DRM_I915_TIMESLICE_DURATION=1
# end of drm/i915 Profile Guided Optimisation
 snip 


Re: [Intel-gfx] i915 timeouts delaying boot under GVT

2021-08-15 Thread Zhenyu Wang
On 2021.08.13 08:31:28 +0200, Christoph Hellwig wrote:
> Hi all,
> 
> when botting a current 4.14-rc tree in a VM using GVT-g (with the host
> also running a current 4.14-rc tree), I see bunch of long timeouts
> followed by i915 errors:
> 
> [4.252066] i915 :00:03.0: [drm] VGT balloon successfully
> [5.095190] i915 :00:03.0: [drm] *ERROR* Failed to disable SAGV (-110)
> [   15.334559] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* 
> [CRTC:51:pipe
> A] flip_done timed out
> [   15.346934] [drm] Initialized i915 1.6.0 20201103 for :00:03.0 on minor
> 0
> 
> I did a hackjob to track them down and just if out the offending code,
> which speeds up the boot by ~11 seconds but is probably dangerous as hell:

Hi, Christoph, what platform is this? And what's your guest i915 config?

I'll try to reproduce on our side. Thanks for reporting this.

> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 2d5d21740c25..ee82fd67f386 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -10696,7 +10696,7 @@ static void intel_atomic_commit_tail(struct 
> intel_atomic_state *state)
>* - switch over to the vblank wait helper in the core after that since
>*   we don't need out special handling any more.
>*/
> - drm_atomic_helper_wait_for_flip_done(dev, >base);
> +//   drm_atomic_helper_wait_for_flip_done(dev, >base);
>  
>   for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
>   if (new_crtc_state->uapi.async_flip)
> diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
> index 45fefa0ed160..f03ce729cc4b 100644
> --- a/drivers/gpu/drm/i915/intel_pm.c
> +++ b/drivers/gpu/drm/i915/intel_pm.c
> @@ -3753,7 +3753,7 @@ intel_disable_sagv(struct drm_i915_private *dev_priv)
>   if (!intel_has_sagv(dev_priv))
>   return 0;
>  
> - if (dev_priv->sagv_status == I915_SAGV_DISABLED)
> + if (1 || dev_priv->sagv_status == I915_SAGV_DISABLED)
>   return 0;
>  
>   drm_dbg_kms(_priv->drm, "Disabling SAGV\n");


signature.asc
Description: PGP signature


[Intel-gfx] i915 timeouts delaying boot under GVT

2021-08-13 Thread Christoph Hellwig
Hi all,

when botting a current 4.14-rc tree in a VM using GVT-g (with the host
also running a current 4.14-rc tree), I see bunch of long timeouts
followed by i915 errors:

[4.252066] i915 :00:03.0: [drm] VGT balloon successfully
[5.095190] i915 :00:03.0: [drm] *ERROR* Failed to disable SAGV (-110)
[   15.334559] [drm:drm_atomic_helper_wait_for_flip_done] *ERROR* [CRTC:51:pipe
A] flip_done timed out
[   15.346934] [drm] Initialized i915 1.6.0 20201103 for :00:03.0 on minor
0

I did a hackjob to track them down and just if out the offending code,
which speeds up the boot by ~11 seconds but is probably dangerous as hell:

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 2d5d21740c25..ee82fd67f386 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -10696,7 +10696,7 @@ static void intel_atomic_commit_tail(struct 
intel_atomic_state *state)
 * - switch over to the vblank wait helper in the core after that since
 *   we don't need out special handling any more.
 */
-   drm_atomic_helper_wait_for_flip_done(dev, >base);
+// drm_atomic_helper_wait_for_flip_done(dev, >base);
 
for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state, i) {
if (new_crtc_state->uapi.async_flip)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 45fefa0ed160..f03ce729cc4b 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -3753,7 +3753,7 @@ intel_disable_sagv(struct drm_i915_private *dev_priv)
if (!intel_has_sagv(dev_priv))
return 0;
 
-   if (dev_priv->sagv_status == I915_SAGV_DISABLED)
+   if (1 || dev_priv->sagv_status == I915_SAGV_DISABLED)
return 0;
 
drm_dbg_kms(_priv->drm, "Disabling SAGV\n");