From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcin Slusarz Subject: Re: drm/nouveau: crash regression in 3.5 Date: Sun, 29 Jul 2012 22:15:32 +0200 Message-ID: <20120729201532.GA3566@joi.lan> References: <500D916A.60703@odi.ch> <20120724170002.GA3129@joi.lan> <500ED9EC.5040309@odi.ch> <20120724205746.GA8707@joi.lan> <500FB279.1020904@odi.ch> <20120725184205.GA3119@joi.lan> <50113E76.9090706@odi.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) by gabe.freedesktop.org (Postfix) with ESMTP id 5683B9E78B for ; Sun, 29 Jul 2012 13:15:24 -0700 (PDT) Received: by wgbdr1 with SMTP id dr1so3497422wgb.12 for ; Sun, 29 Jul 2012 13:15:23 -0700 (PDT) Content-Disposition: inline In-Reply-To: <50113E76.9090706@odi.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Ortwin =?utf-8?B?R2zDvGNr?= Cc: airlied@redhat.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, bskeggs@redhat.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdWwgMjYsIDIwMTIgYXQgMDI6NTY6MjJQTSArMDIwMCwgT3J0d2luIEdsw7xjayB3 cm90ZToKPiBPbiAyNS4wNy4yMDEyIDIwOjQyLCBNYXJjaW4gU2x1c2FyeiB3cm90ZToKPiA+IEdv b2QsIGJlbG93IHBhdGNoIHNob3VsZCBmaXggdGhpcyBwYW5pYy4KPiA+Cj4gPiBOb3RlIHRoYXQg eW91IGNhbiBoaXQgYW4gb29wcyBpbiBkcm1faGFuZGxlX3ZibGFuayBiZWNhdXNlIHBhdGNoIGZy b20KPiA+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvZHJpLWRldmVsLzIw MTItTWF5LzAyMzQ5OC5odG1sCj4gPiBoYXMgbm90IGJlZW4gYXBwbGllZCAoeWV0PykuCj4gCj4g QWZ0ZXIgYXBwbHlpbmcgeW91ciBwYXRjaCwgaXQgc3RpbGwgY3Jhc2hlcywgYWx0aG91Z2ggd2l0 aCBhIHNsaWdodGx5IAo+IGRpZmZlcmVudCBzdGFjayB0cmFjZS4gSSB0aGVuIGFsc28gYXBwbGll ZCB0aGUgc2Vjb25kIHBhdGNoLCBidXQgdGhhdCAKPiBkb2Vzbid0IG1ha2UgYW55IGRpZmZlcmVu Y2UuIE5ldyBsb2cgYXR0YWNoZWQuCj4gCj4gTG9va3MgbGlrZSBpbnRlcnJ1cHQgb2NjdXJzIGJl Zm9yZSBub3V2ZWF1X3NvZnR3YXJlX2NvbnRleHRfbmV3KCkgaXMgCj4gY2FsbGVkPyBTaG91bGRu J3QgdGhlIGluaXRpYWxpemF0aW9uIGJlIGRvbmUgZnJvbSAKPiBub3V2ZWF1X2lycV9wcmVpbnN0 YWxsKCkgc28gaXQgaXMgYXZhaWxhYmxlIHdoZW4gdGhlIGlycSBvY2N1cnM/IEFnYWluLCAKPiBJ IGFtIG5vdCBhbiBleHBlcnQgaGVyZS4gSnVzdCBndWVzc2luZy4uLgoKTm8sIHRoZSByZWFsIHBy b2JsZW0gaXM6IHdpdGggIm5vYWNjZWwiIHdlIGRvbid0IHJlZ2lzdGVyICJzb2Z0d2FyZSBlbmdp bmUiLApidXQgdmJsYW5rIElTUiByZWxpZXMgb24gaXRzIGV4aXN0YW5jZSBhbmQgaGFwcGlseSBk ZXJlZmVuY2VzIE5VTEwgcG9pbnRlci4KCk5vdywgdGhpcyBwYXRjaCBzaG91bGQgZml4IGl0IGZv ciByZWFsLi4uCgotLS0KRnJvbTogTWFyY2luIFNsdXNhcnogPG1hcmNpbi5zbHVzYXJ6QGdtYWls LmNvbT4KU3ViamVjdDogW1BBVENIXSBkcm0vbm91dmVhdTogZGlzYWJsZSB2YmxhbmsgaW50ZXJy dXB0cyBiZWZvcmUgcmVnaXN0ZXJpbmcgUERJU1BMQVkgSVNSCgpDdXJyZW50bHksIHdlIHJlZ2lz dGVyIHZibGFuayBJUlEgaGFuZGxlciBhbmQgbGF0ZXIgd2UgZGlzYWJsZSB2YmxhbmsKaW50ZXJy dXB0cy4gU28sIGZvciB0aGUgc2hvcnQgYW1vdW50IG9mIHRpbWUsIHdlIHJlbHkgb24gdmJsYW5r IElTUgp0byBvcGVyYXRlIGNvcnJlY3RseSwgZXZlbiBpZiB2YmxhbmsgaW50ZXJydXB0cyBhcmUg bmV2ZXIgZ29pbmcgdG8gYmUKdXNlZCBsYXRlci4KCkluICJub2FjY2VsIiBjYXNlLCBzb2Z0d2Fy ZSBlbmdpbmUgLSB3aGljaCBpcyB1c2VkIGJ5IHZibGFuayBJU1IgLSBpcyBub3QKcmVnaXN0ZXJl ZCwgc28gaWYgdmJsYW5rIGludGVycnVwdCB0cmlnZ2VycyBpbiBhIHdyb25nIG1vbWVudCwgd2Ug Y2FuIGhpdApOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gbm91dmVhdV9zb2Z0d2FyZV92Ymxh bmsuCgpUbyBmaXggaXQsIGRpc2FibGUgdmJsYW5rIGludGVycnVwdHMgYmVmb3JlIHJlZ2lzdGVy aW5nIFBESVNQTEFZIElTUi4KClJlcG9ydGVkLWJ5OiBPcnR3aW4gR2zDvGNrIDxvZGlAb2RpLmNo PgpTaWduZWQtb2ZmLWJ5OiBNYXJjaW4gU2x1c2FyeiA8bWFyY2luLnNsdXNhcnpAZ21haWwuY29t PgpDYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZyBbMy41XQotLS0KIGRyaXZlcnMvZ3B1L2RybS9u b3V2ZWF1L252MDRfY3J0Yy5jICAgIHwgICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9u djUwX2NydGMuYyAgICB8ICAgIDEgKwogZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZkMF9kaXNw bGF5LmMgfCAgICAyICsrCiAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udjA0X2NydGMu YyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252MDRfY3J0Yy5jCmluZGV4IDRjMzFjNjMuLjM4 YmZlOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252MDRfY3J0Yy5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9ub3V2ZWF1L252MDRfY3J0Yy5jCkBAIC0xMDU3LDYgKzEwNTcs NyBAQCBudjA0X2NydGNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjX251 bSkKIAl9CiAKIAludjA0X2N1cnNvcl9pbml0KG52X2NydGMpOworCW5vdXZlYXVfdmJsYW5rX2Rp c2FibGUoZGV2LCBjcnRjX251bSk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9ub3V2ZWF1L252NTBfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bnY1MF9jcnRjLmMKaW5kZXggOTdhNDc3Yi4uNzY0OGY1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL25vdXZlYXUvbnY1MF9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUv bnY1MF9jcnRjLmMKQEAgLTc5Miw2ICs3OTIsNyBAQCBudjUwX2NydGNfY3JlYXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBpbmRleCkKIAkJZ290byBvdXQ7CiAKIAludjUwX2N1cnNvcl9p bml0KG52X2NydGMpOworCW5vdXZlYXVfdmJsYW5rX2Rpc2FibGUoZGV2LCBpbmRleCk7CiBvdXQ6 CiAJaWYgKHJldCkKIAkJbnY1MF9jcnRjX2Rlc3Ryb3koJm52X2NydGMtPmJhc2UpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvbnZkMF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vbm91dmVhdS9udmQwX2Rpc3BsYXkuYwppbmRleCBjNDg2ZDNjLi4zMmY4YTg2IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbm91dmVhdS9udmQwX2Rpc3BsYXkuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbm91dmVhdS9udmQwX2Rpc3BsYXkuYwpAQCAtOTA4LDYgKzkwOCw4IEBAIG52 ZDBfY3J0Y19jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGluZGV4KQogCQlnb3Rv IG91dDsKIAogCW52ZDBfY3J0Y19sdXRfbG9hZChjcnRjKTsKKwkvKiB1bmNvbW1lbnQgb25jZSBu dmQwIHZibGFuayBsYW5kcyAqLworCS8qIG5vdXZlYXVfdmJsYW5rX2Rpc2FibGUoZGV2LCBpbmRl eCk7ICovCiAKIG91dDoKIAlpZiAocmV0KQotLSAKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753483Ab2G2UP0 (ORCPT ); Sun, 29 Jul 2012 16:15:26 -0400 Received: from mail-wg0-f44.google.com ([74.125.82.44]:40165 "EHLO mail-wg0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753363Ab2G2UPY (ORCPT ); Sun, 29 Jul 2012 16:15:24 -0400 Date: Sun, 29 Jul 2012 22:15:32 +0200 From: Marcin Slusarz To: Ortwin =?utf-8?B?R2zDvGNr?= Cc: linux-kernel@vger.kernel.org, bskeggs@redhat.com, dri-devel@lists.freedesktop.org, airlied@redhat.com Subject: Re: drm/nouveau: crash regression in 3.5 Message-ID: <20120729201532.GA3566@joi.lan> References: <500D916A.60703@odi.ch> <20120724170002.GA3129@joi.lan> <500ED9EC.5040309@odi.ch> <20120724205746.GA8707@joi.lan> <500FB279.1020904@odi.ch> <20120725184205.GA3119@joi.lan> <50113E76.9090706@odi.ch> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <50113E76.9090706@odi.ch> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 26, 2012 at 02:56:22PM +0200, Ortwin Glück wrote: > On 25.07.2012 20:42, Marcin Slusarz wrote: > > Good, below patch should fix this panic. > > > > Note that you can hit an oops in drm_handle_vblank because patch from > > http://lists.freedesktop.org/archives/dri-devel/2012-May/023498.html > > has not been applied (yet?). > > After applying your patch, it still crashes, although with a slightly > different stack trace. I then also applied the second patch, but that > doesn't make any difference. New log attached. > > Looks like interrupt occurs before nouveau_software_context_new() is > called? Shouldn't the initialization be done from > nouveau_irq_preinstall() so it is available when the irq occurs? Again, > I am not an expert here. Just guessing... No, the real problem is: with "noaccel" we don't register "software engine", but vblank ISR relies on its existance and happily derefences NULL pointer. Now, this patch should fix it for real... --- From: Marcin Slusarz Subject: [PATCH] drm/nouveau: disable vblank interrupts before registering PDISPLAY ISR Currently, we register vblank IRQ handler and later we disable vblank interrupts. So, for the short amount of time, we rely on vblank ISR to operate correctly, even if vblank interrupts are never going to be used later. In "noaccel" case, software engine - which is used by vblank ISR - is not registered, so if vblank interrupt triggers in a wrong moment, we can hit NULL pointer dereference in nouveau_software_vblank. To fix it, disable vblank interrupts before registering PDISPLAY ISR. Reported-by: Ortwin Glück Signed-off-by: Marcin Slusarz Cc: stable@vger.kernel.org [3.5] --- drivers/gpu/drm/nouveau/nv04_crtc.c | 1 + drivers/gpu/drm/nouveau/nv50_crtc.c | 1 + drivers/gpu/drm/nouveau/nvd0_display.c | 2 ++ 3 files changed, 4 insertions(+), 0 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nv04_crtc.c b/drivers/gpu/drm/nouveau/nv04_crtc.c index 4c31c63..38bfe8d 100644 --- a/drivers/gpu/drm/nouveau/nv04_crtc.c +++ b/drivers/gpu/drm/nouveau/nv04_crtc.c @@ -1057,6 +1057,7 @@ nv04_crtc_create(struct drm_device *dev, int crtc_num) } nv04_cursor_init(nv_crtc); + nouveau_vblank_disable(dev, crtc_num); return 0; } diff --git a/drivers/gpu/drm/nouveau/nv50_crtc.c b/drivers/gpu/drm/nouveau/nv50_crtc.c index 97a477b..7648f52 100644 --- a/drivers/gpu/drm/nouveau/nv50_crtc.c +++ b/drivers/gpu/drm/nouveau/nv50_crtc.c @@ -792,6 +792,7 @@ nv50_crtc_create(struct drm_device *dev, int index) goto out; nv50_cursor_init(nv_crtc); + nouveau_vblank_disable(dev, index); out: if (ret) nv50_crtc_destroy(&nv_crtc->base); diff --git a/drivers/gpu/drm/nouveau/nvd0_display.c b/drivers/gpu/drm/nouveau/nvd0_display.c index c486d3c..32f8a86 100644 --- a/drivers/gpu/drm/nouveau/nvd0_display.c +++ b/drivers/gpu/drm/nouveau/nvd0_display.c @@ -908,6 +908,8 @@ nvd0_crtc_create(struct drm_device *dev, int index) goto out; nvd0_crtc_lut_load(crtc); + /* uncomment once nvd0 vblank lands */ + /* nouveau_vblank_disable(dev, index); */ out: if (ret) --