From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v5] drm/i915: Avoid GPU Hang when comming out of s3 or s4 Date: Tue, 12 May 2015 11:34:39 +0300 Message-ID: <87ioby42jk.fsf@intel.com> References: <20150511103303.GZ15256@phenom.ffwll.local> <1431347701-8997-1-git-send-email-peter.antoine@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 9ADBF6E2D0 for ; Tue, 12 May 2015 01:32:36 -0700 (PDT) In-Reply-To: <1431347701-8997-1-git-send-email-peter.antoine@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Peter Antoine , intel-gfx@lists.freedesktop.org Cc: deepak.s@intel.com, daniel.vetter@ffwll.ch, yex.tian@intel.com, stable@vger.kernel.org, david.weinehall@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAxMSBNYXkgMjAxNSwgUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5j b20+IHdyb3RlOgo+IFRoaXMgcGF0Y2ggZml4ZWQgYSB0aW1pbmcgaXNzdWUgdGhhdCBjYXVzZXMg YSBHUFUgaGFuZyB3aGVuIGEgdGhlIHN5c3RlbQo+IGNvbWVzIG91dCBvZiBwb3dlciBzYXZpbmcu Cj4KPiBEdXJpbmcgcG1fcmVzdW1lLCBXZSBhcmUgc3VibWl0dGluZyBiYXRjaGJ1ZmZlcnMgYmVm b3JlIGVuYWJsaW5nCj4gSW50ZXJydXB0cyB0aGlzIGlzIGNhdXNpbmcgdXMgdG8gbWlzcyB0aGUg Y29udGV4dCBzd2l0Y2ggaW50ZXJydXB0LAo+IGFuZCBpbiBjb25zZXF1ZW5jZSBpbnRlbF9leGVj bGlzdHNfaGFuZGxlX2N0eF9ldmVudHMgaXMgbm90IHRyaWdnZXJlZC4KPgo+IFRoaXMgcGF0Y2gg aXMgYmFzZWQgb24gYSBwYXRjaCBmcm9tIERlZXBhayBTIDxkZWVwYWsuc0BpbnRlbC5jb20+Cj4g ZnJvbSBhbm90aGVyIHBsYXRmb3JtLgo+Cj4gVGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGludHJv ZHVjZWQgYnk6Cj4gICBjb21taXQgZTc3NzhiZTFlYWI5MTgyNzRmNzk2MDNkN2MxN2IzZWM4YmU3 NzM4Ngo+ICAgZHJtL2k5MTU6IEZpeCBzdGFydHVwIGZhaWx1cmUgaW4gTFJDIG1vZGUgYWZ0ZXIg cmVjZW50IGluaXQgY2hhbmdlcwo+Cj4gVGhlIGFib3ZlIHBhdGNoIGFkZGVkIGEgY2FsbCB0byBp bml0X2NvbnRleHQoKSB0byBmaXggYW4gaXNzdWUgaW50cm9kdWNlZAo+IGJ5IGEgcHJldmlvdXMg cGF0Y2guIEJ1dCwgaXQgdGhlbiBvcGVuZWQgdXAgYSBzbWFsbCB0aW1pbmcgd2luZG93IGZvciB0 aGUKPiBiYXRjaGVzIGJlaW5nIGFkZGVkIGJ5IHRoZSBpbml0X2NvbnRleHQgKGJhc2ljYWxseSBz ZXR0aW5nIHVwIHRoZSBjb250ZXh0KQo+IHRvIGNvbXBsZXRlIGJlZm9yZSB0aGUgaW50ZXJydXB0 cyBoYXZlIGJlZW4gdHVybmVkIG9uLCB0aHVzIGhhbmdpbmcgdGhlCj4gR1BVLgo+Cj4gQnVnemls bGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NjAwCj4g Q2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKPiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5l IDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4KCkkgcHVzaGVkIHNvbWUgdmVyc2lvbiBvZiB0aGlz IHBhdGNoIHRvIGRybS1pbnRlbC1maXhlcyB5ZXN0ZXJkYXksIHdpdGgKc29tZSBjb21tZW50IG1v ZGlmaWNhdGlvbnMuIFRoYW5rcyBmb3IgdGhlIHBhdGNoIGFuZCByZXZpZXcuCgpGb3IgZnV0dXJl IHJlZmVyZW5jZSwgcGxlYXNlIGFkZCBzb21lIGNoYW5nZWxvZyB0byB5b3VyIHBhdGNoZXMgc28g aXQncwplYXNpZXIgdG8ga25vdyB3aGF0J3MgY2hhbmdlZCBiZXR3ZWVuIHZlcnNpb25zLgoKQlIs CkphbmkuCgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIHwgMTEgKysr KysrKystLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDZiYjZjNDcuLjc0OGFiMTMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtNzM0LDYgKzczNCwxMyBAQCBzdGF0aWMg aW50IGk5MTVfZHJtX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaW50ZWxfaW5p dF9wY2hfcmVmY2xrKGRldik7Cj4gIAlkcm1fbW9kZV9jb25maWdfcmVzZXQoZGV2KTsKPiAgCj4g KwkvKiAKPiArCSAqIEludGVycnVwdHMgaGF2ZSB0byBiZSBlbmFibGVkIGJlZm9yZSBhbnkgYmF0 Y2hlcyBhcmUgcnVuLiBJZiBub3QgdGhlCj4gKwkgKiBHUFUgd2lsbCBoYW5nLiBUaGUgaW5pdF9o dyB3aWxsIGluaXRpYXRlIGJhdGNoZXMgdG8gdXBkYXRlL3Jlc3RvcmUKPiArCSAqIHRoZSBjb250 ZXh0Lgo+ICsJICovCj4gKwlpbnRlbF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9w cml2KTsKPiArCj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gIAlpZiAoaTkx NV9nZW1faW5pdF9odyhkZXYpKSB7Cj4gIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmUtaW5pdGlh bGl6ZSBHUFUsIGRlY2xhcmluZyB3ZWRnZWQhXG4iKTsKPiBAQCAtNzQxLDkgKzc0OCw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9kcm1fcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAl9Cj4g IAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAgCj4gLQkvKiBXZSBuZWVkIHdv cmtpbmcgaW50ZXJydXB0cyBmb3IgbW9kZXNldCBlbmFibGluZyAuLi4gKi8KPiAtCWludGVsX3J1 bnRpbWVfcG1fZW5hYmxlX2ludGVycnVwdHMoZGV2X3ByaXYpOwo+IC0KPiArCS8qIFRoaXMgbXVz dCBmb2xsb3cgdGhlIHBtIGVuYWJsZSBpbnRlcnJ1cHRzICovCj4gIAlpbnRlbF9tb2Rlc2V0X2lu aXRfaHcoZGV2KTsKPiAgCj4gIAlzcGluX2xvY2tfaXJxKCZkZXZfcHJpdi0+aXJxX2xvY2spOwo+ IC0tIAo+IDEuOS4xCj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5 IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com ([192.55.52.93]:49756 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932159AbbELIcl (ORCPT ); Tue, 12 May 2015 04:32:41 -0400 From: Jani Nikula To: Peter Antoine , intel-gfx@lists.freedesktop.org Cc: daniel.vetter@ffwll.ch, david.weinehall@intel.com, stable@vger.kernel.org, yex.tian@intel.com, deepak.s@intel.com Subject: Re: [Intel-gfx] [PATCH v5] drm/i915: Avoid GPU Hang when comming out of s3 or s4 In-Reply-To: <1431347701-8997-1-git-send-email-peter.antoine@intel.com> References: <20150511103303.GZ15256@phenom.ffwll.local> <1431347701-8997-1-git-send-email-peter.antoine@intel.com> Date: Tue, 12 May 2015 11:34:39 +0300 Message-ID: <87ioby42jk.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: stable-owner@vger.kernel.org List-ID: On Mon, 11 May 2015, Peter Antoine wrote: > This patch fixed a timing issue that causes a GPU hang when a the system > comes out of power saving. > > During pm_resume, We are submitting batchbuffers before enabling > Interrupts this is causing us to miss the context switch interrupt, > and in consequence intel_execlists_handle_ctx_events is not triggered. > > This patch is based on a patch from Deepak S > from another platform. > > The patch fixes an issue introduced by: > commit e7778be1eab918274f79603d7c17b3ec8be77386 > drm/i915: Fix startup failure in LRC mode after recent init changes > > The above patch added a call to init_context() to fix an issue introduced > by a previous patch. But, it then opened up a small timing window for the > batches being added by the init_context (basically setting up the context) > to complete before the interrupts have been turned on, thus hanging the > GPU. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89600 > Cc: stable@vger.kernel.org > Signed-off-by: Peter Antoine I pushed some version of this patch to drm-intel-fixes yesterday, with some comment modifications. Thanks for the patch and review. For future reference, please add some changelog to your patches so it's easier to know what's changed between versions. BR, Jani. > --- > drivers/gpu/drm/i915/i915_drv.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index 6bb6c47..748ab13 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -734,6 +734,13 @@ static int i915_drm_resume(struct drm_device *dev) > intel_init_pch_refclk(dev); > drm_mode_config_reset(dev); > > + /* > + * Interrupts have to be enabled before any batches are run. If not the > + * GPU will hang. The init_hw will initiate batches to update/restore > + * the context. > + */ > + intel_runtime_pm_enable_interrupts(dev_priv); > + > mutex_lock(&dev->struct_mutex); > if (i915_gem_init_hw(dev)) { > DRM_ERROR("failed to re-initialize GPU, declaring wedged!\n"); > @@ -741,9 +748,7 @@ static int i915_drm_resume(struct drm_device *dev) > } > mutex_unlock(&dev->struct_mutex); > > - /* We need working interrupts for modeset enabling ... */ > - intel_runtime_pm_enable_interrupts(dev_priv); > - > + /* This must follow the pm enable interrupts */ > intel_modeset_init_hw(dev); > > spin_lock_irq(&dev_priv->irq_lock); > -- > 1.9.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Jani Nikula, Intel Open Source Technology Center