Message ID | YRYRwG5jscfl54pj@infradead.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | i915 timeouts delaying boot under GVT | expand |
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 0000:00:03.0: [drm] VGT balloon successfully > [ 5.095190] i915 0000: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 0000: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, &state->base); > +// drm_atomic_helper_wait_for_flip_done(dev, &state->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(&dev_priv->drm, "Disabling SAGV\n");
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=20000 CONFIG_DRM_I915_FENCE_TIMEOUT=10000 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 ----------------
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, &state->base); +// drm_atomic_helper_wait_for_flip_done(dev, &state->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(&dev_priv->drm, "Disabling SAGV\n");