From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v5] drm/i915: Pin the ifbdev for the info->system_base GGTT mmapping Date: Thu, 17 Dec 2015 13:34:22 +0200 Message-ID: <20151217113422.GM4437@intel.com> References: <20151124212049.GA26526@wunner.de> <1449245126-26158-1-git-send-email-chris@chris-wilson.co.uk> <20151206203320.GA29029@wunner.de> <20151216105217.GE30437@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 87BA46E138 for ; Thu, 17 Dec 2015 03:35:17 -0800 (PST) Content-Disposition: inline In-Reply-To: <20151216105217.GE30437@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, "Goel, Akash" , stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBEZWMgMTYsIDIwMTUgYXQgMTE6NTI6MTdBTSArMDEwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBTdW4sIERlYyAwNiwgMjAxNSBhdCAwOTozMzoyMFBNICswMTAwLCBMdWthcyBX dW5uZXIgd3JvdGU6Cj4gPiBIaSBDaHJpcywKPiA+IAo+ID4gT24gRnJpLCBEZWMgMDQsIDIwMTUg YXQgMDQ6MDU6MjZQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdyb3RlOgo+ID4gPiBBIGxvbmcgdGlt ZSBhZ28gKGJlZm9yZSAzLjE0KSB3ZSByZWxpZWQgb24gYSBwZXJtYW5lbnQgcGlubmluZyBvZiB0 aGUKPiA+ID4gaWZiZGV2IHRvIGxvY2sgdGhlIGZiIGluIHBsYWNlIGluc2lkZSB0aGUgR0dUVC4g SG93ZXZlciwgdGhlCj4gPiA+IGludHJvZHVjdGlvbiBvZiBzdGVhbGluZyB0aGUgQklPUyBmcmFt ZWJ1ZmZlciBhbmQgcmV1c2luZyBpdHMgYWRkcmVzcyBpbgo+ID4gPiB0aGUgR0dUVCBmb3IgdGhl IGZiZGV2IGhhcyBtdWRkaWVkIHdhdGVycyBhbmQgd2UgdXNlIGFuIGluaGVyaXRlZCBmYi4KPiA+ ID4gSG93ZXZlciwgdGhlIGluaGVyaXRlZCBmYiBpcyBvbmx5IHBpbm5lZCB3aGlsc3QgaXQgaXMg YWN0aXZlIGFuZCB3ZSBubwo+ID4gPiBsb25nZXIgaGF2ZSBhbiBleHBsaWNpdCBwaW4gZm9yIHRo ZSBpbmZvLT5zeXN0ZW1fYmFzZSBtbWFwcGluZyB1c2VkIGJ5Cj4gPiA+IHRoZSBmYmRldi4gVGhl IHJlc3VsdCBpcyB0aGF0IGFmdGVyIHNvbWUgYXBlcnR1cmUgcHJlc3N1cmUgdGhlIGZiZGV2IG1h eQo+ID4gPiBiZSBldmljdGVkLCBidXQgd2UgY29udGludWUgdG8gd3JpdGUgdGhlIGZiY29uIGlu dG8gdGhlIHNhbWUgR0dUVAo+ID4gPiBhZGRyZXNzIC0gb3ZlcndyaXRpbmcgYW55dGhpbmcgZWxz ZSB0aGF0IG1heSBiZSBwdXQgaW50byB0aGF0IG9mZnNldC4KPiA+ID4gVGhlIGVmZmVjdCBpcyBt b3N0IHByb25vdW5jZWQgYWNyb3NzIHN1c3BlbmQvcmVzdW1lIGFzCj4gPiA+IGludGVsX2ZiZGV2 X3NldF9zdXNwZW5kKCkgZG9lcyBhIGZ1bGwgY2xlYXIgb3ZlciB0aGUgd2hvbGUgc2Nhbm91dC4K PiA+ID4gCj4gPiA+IHYyOiBPbmx5IHVucGluIHRoZSBpbnRlbF9mYiBpcyB3ZSBhbGxvY2F0ZSBp dC4gSWYgd2UgaW5oZXJpdCB0aGUgZmIgZnJvbQo+ID4gPiB0aGUgQklPUywgd2UgZG8gbm90IG93 biB0aGUgcGlubmVkIHZtYSAoZXhjZXB0IGZvciB0aGUgcmVmZXJlbmNlIHdlIGFkZAo+ID4gPiBp biB0aGlzIHBhdGNoIGZvciBvdXIgYWNjZXNzIHZpYSBpbmZvLT5zY3JlZW5fYmFzZSkuCj4gPiA+ IAo+ID4gPiB2MzogRmluaXNoIGJhbGFuY2luZyB0aGUgdm1hIHBpbm5pbmcgZm9yIHRoZSBub3Jt YWwgIXByZWFsbG9jYXRlZCBjYXNlLgo+ID4gPiAKPiA+ID4gdjQ6IFRyeSB0byBzaW1wbGlmeSB0 aGUgcGlubmluZyBldmVuIGZ1cnRoZXIuCj4gPiA+IHY1OiBMZWFrIHRoZSBWTUEgKGNsZWFuZWQg dXAgYnkgb2JqZWN0LWZyZWUpIHRvIGF2b2lkIGNvbXBsaWNhdGVkIGVycm9yIHBhdGhzLgo+ID4g Cj4gPiBJdCdzIGJlYXV0aWZ1bCBob3cgbGl0dGxlIGNvZGUgaXMgbmVlZGVkIHRvIGZpeCB0aGlz LiBUaGUgb25seSByZW1haW5pbmcKPiA+IHRoaW5nIEkgbm90aWNlZCBub3cgd2hpbGUgbG9va2lu ZyBvdmVyIHRoZSBlcnJvciBwYXRocyBpcyB0aGF0IHRoZXNlCj4gPiBsaW5lcyBpbiBpbnRlbGZi X2FsbG9jKCkgYmVjb21lIG9ic29sZXRlIHdpdGggeW91ciBwYXRjaDoKPiA+IAo+ID4gIG91dDoK PiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiAtCWlmICghSVNfRVJS X09SX05VTEwoZmIpKQo+ID4gLQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKGZiKTsKPiA+ ICAJcmV0dXJuIHJldDsKPiA+ICB9Cj4gPiAKPiA+IEJlY2F1c2UgYXQgZWFjaCBvZiB0aGUgcmVt YWluaW5nICJnb3RvIG91dCIgaW4gdGhlIGZ1bmN0aW9uLAo+ID4gZmIgY2FuIGJlIG9ubHkgZWl0 aGVyIGFuIEVSUl9QVFIgb3IgTlVMTC4KPiA+IAo+ID4gQWxzbywgZnVydGhlciB1cCBpbiB0aGUg ZnVuY3Rpb24sIHRoZSBkZWNsYXJhdGlvbiBvZiBmYiBjYW4gdGhlbiBiZQo+ID4gY2hhbmdlZCB0 aHVzOgo+ID4gCj4gPiAtCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gTlVMTDsKPiA+ICsJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gPiAKPiA+IEtpbmQgcmVnYXJkcywKPiAKPiBZ ZWFoIHRoZXJlJ3Mgcm9vbSBmb3IgZm9sbG93LXVwIHBvbGlzaCwgYnV0IHRoaXMgc2VlbXMgZ29v ZCBlbm91Z2ggYXQKPiBsZWFzdCBmb3IgLWZpeGVzLgoKSSBqdXN0IHRlc3RlZCB3aGVuIHdlIHN0 YXJ0ZWQgdG8gZmFpbCB0aGluZ3MsIGFuZCBmb3IgbWUgaXQgb25seSBoYXBwZW5zCndpdGggNC40 LXJjIHJlbGVhc2VzICh0ZXN0ZWQgd2l0aCBbMV0pLiA0LjMuMyBPVE9IIHN0aWxsIGhhZCB0aGUg ZmJjb24gZmIKcGlubmVkIHdoaWxlIFggd2FzIHJ1bm5pbmcuCgpbMV0gYWlybGllZC9kcm0tZml4 ZXMgNDY1NWExMmI4MWVkICgiZHJtOiBEb24ndCBvdmVyd3JpdGUgVU5WRVJGSUVEIG1vZGUgc3Rh dHVzIHRvIE9LIikKCj4gCj4gUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0 ZXJAZmZ3bGwuY2g+Cj4gCj4gTHVrYXMsIGZlZWwgbGlrZSBzdXBwbHlpbmcgYSBwYXRjaCB0byBh cHBseSB0aGUgcG9saXNoIHlvdSd2ZSBzcG90dGVkIG9uCj4gdG9wPwo+IAo+IFRoYW5rcywgRGFu aWVsCj4gCj4gPiAKPiA+IEx1a2FzCj4gPiAKPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+ID4gPiBDYzogIkdvZWwsIEFr YXNoIiA8YWthc2guZ29lbEBpbnRlbC5jb20+Cj4gPiA+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5p ZWwudmV0dGVyQGZmd2xsLmNoPgo+ID4gPiBDYzogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1 b3VzZ2Vlay5vcmc+Cj4gPiA+IENjOiBMdWthcyBXdW5uZXIgPGx1a2FzQHd1bm5lci5kZT4KPiA+ ID4gQ2M6IHN0YWJsZUB2Z2VyLmtlcm5lbC5vcmcKPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jIHwgMjAgKysrKysrKysrKysrKy0tLS0tLS0KPiA+ID4g IDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQo+ID4gPiAK PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmRldi5jCj4gPiA+IGluZGV4IDdjY2RlNThmOGM5 OC4uYmVhNzVjYWZjNjIzIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmRldi5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiZGV2 LmMKPiA+ID4gQEAgLTE2MywxMyArMTYzLDYgQEAgc3RhdGljIGludCBpbnRlbGZiX2FsbG9jKHN0 cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIsCj4gPiA+ICAJCWdvdG8gb3V0Owo+ID4gPiAgCX0K PiA+ID4gIAo+ID4gPiAtCS8qIEZsdXNoIGV2ZXJ5dGhpbmcgb3V0LCB3ZSdsbCBiZSBkb2luZyBH VFQgb25seSBmcm9tIG5vdyBvbiAqLwo+ID4gPiAtCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2Vf ZmJfb2JqKE5VTEwsIGZiLCBOVUxMKTsKPiA+ID4gLQlpZiAocmV0KSB7Cj4gPiA+IC0JCURSTV9F UlJPUigiZmFpbGVkIHRvIHBpbiBvYmo6ICVkXG4iLCByZXQpOwo+ID4gPiAtCQlnb3RvIG91dDsK PiA+ID4gLQl9Cj4gPiA+IC0KPiA+ID4gIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKPiA+ID4gIAo+ID4gPiAgCWlmYmRldi0+ZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYik7 Cj4gPiA+IEBAIC0yMjUsNiArMjE4LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxmYl9jcmVhdGUoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiA+ID4gIAo+ID4gPiAgCW11dGV4X2xvY2soJmRl di0+c3RydWN0X211dGV4KTsKPiA+ID4gIAo+ID4gPiArCS8qIFBpbiB0aGUgR0dUVCB2bWEgZm9y IG91ciBhY2Nlc3MgdmlhIGluZm8tPnNjcmVlbl9iYXNlLgo+ID4gPiArCSAqIFRoaXMgYWxzbyB2 YWxpZGF0ZXMgdGhhdCBhbnkgZXhpc3RpbmcgZmIgaW5oZXJpdGVkIGZyb20gdGhlCj4gPiA+ICsJ ICogQklPUyBpcyBzdWl0YWJsZSBmb3Igb3duIGFjY2Vzcy4KPiA+ID4gKwkgKi8KPiA+ID4gKwly ZXQgPSBpbnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihOVUxMLCAmaWZiZGV2LT5mYi0+YmFzZSwg TlVMTCk7Cj4gPiA+ICsJaWYgKHJldCkKPiA+ID4gKwkJZ290byBvdXRfdW5sb2NrOwo+ID4gPiAr Cj4gPiA+ICAJaW5mbyA9IGRybV9mYl9oZWxwZXJfYWxsb2NfZmJpKGhlbHBlcik7Cj4gPiA+ICAJ aWYgKElTX0VSUihpbmZvKSkgewo+ID4gPiAgCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhbGxvY2F0 ZSBmYl9pbmZvXG4iKTsKPiA+ID4gQEAgLTI4Nyw2ICsyODgsNyBAQCBvdXRfZGVzdHJveV9mYmk6 Cj4gPiA+ICAJZHJtX2ZiX2hlbHBlcl9yZWxlYXNlX2ZiaShoZWxwZXIpOwo+ID4gPiAgb3V0X3Vu cGluOgo+ID4gPiAgCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7Cj4gPiA+ICtvdXRf dW5sb2NrOgo+ID4gPiAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gPiAg CXJldHVybiByZXQ7Cj4gPiA+ICB9Cj4gPiA+IEBAIC01MjQsNiArNTI2LDEwIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyBpbnRlbF9mYl9oZWxwZXJfZnVuY3MgPSB7 Cj4gPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9mYmRldl9kZXN0cm95KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gPiA+ICAJCQkJc3RydWN0IGludGVsX2ZiZGV2ICppZmJkZXYpCj4gPiA+ICB7Cj4g PiA+ICsJLyogV2UgcmVseSBvbiB0aGUgb2JqZWN0LWZyZWUgdG8gcmVsZWFzZSB0aGUgVk1BIHBp bm5pbmcgZm9yCj4gPiA+ICsJICogdGhlIGluZm8tPnNjcmVlbl9iYXNlIG1tYXBpbmcuIExlYWtp bmcgdGhlIFZNQSBpcyBzaW1wbGVyIHRoYW4KPiA+ID4gKwkgKiB0cnlpbmcgdG8gcmVjdGlmeSBh bGwgdGhlIHBvc3NpYmxlIGVycm9yIHBhdGhzIGxlYWRpbmcgaGVyZS4KPiA+ID4gKwkgKi8KPiA+ ID4gIAo+ID4gPiAgCWRybV9mYl9oZWxwZXJfdW5yZWdpc3Rlcl9mYmkoJmlmYmRldi0+aGVscGVy KTsKPiA+ID4gIAlkcm1fZmJfaGVscGVyX3JlbGVhc2VfZmJpKCZpZmJkZXYtPmhlbHBlcik7Cj4g PiA+IC0tIAo+ID4gPiAyLjYuMgo+ID4gPiAKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29m dHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0g ClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com ([192.55.52.88]:30454 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750799AbbLQLfR (ORCPT ); Thu, 17 Dec 2015 06:35:17 -0500 Date: Thu, 17 Dec 2015 13:34:22 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Daniel Vetter Cc: Lukas Wunner , Daniel Vetter , intel-gfx@lists.freedesktop.org, stable@vger.kernel.org, "Goel, Akash" Subject: Re: [Intel-gfx] [PATCH v5] drm/i915: Pin the ifbdev for the info->system_base GGTT mmapping Message-ID: <20151217113422.GM4437@intel.com> References: <20151124212049.GA26526@wunner.de> <1449245126-26158-1-git-send-email-chris@chris-wilson.co.uk> <20151206203320.GA29029@wunner.de> <20151216105217.GE30437@phenom.ffwll.local> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20151216105217.GE30437@phenom.ffwll.local> Sender: stable-owner@vger.kernel.org List-ID: On Wed, Dec 16, 2015 at 11:52:17AM +0100, Daniel Vetter wrote: > On Sun, Dec 06, 2015 at 09:33:20PM +0100, Lukas Wunner wrote: > > Hi Chris, > > > > On Fri, Dec 04, 2015 at 04:05:26PM +0000, Chris Wilson wrote: > > > A long time ago (before 3.14) we relied on a permanent pinning of the > > > ifbdev to lock the fb in place inside the GGTT. However, the > > > introduction of stealing the BIOS framebuffer and reusing its address in > > > the GGTT for the fbdev has muddied waters and we use an inherited fb. > > > However, the inherited fb is only pinned whilst it is active and we no > > > longer have an explicit pin for the info->system_base mmapping used by > > > the fbdev. The result is that after some aperture pressure the fbdev may > > > be evicted, but we continue to write the fbcon into the same GGTT > > > address - overwriting anything else that may be put into that offset. > > > The effect is most pronounced across suspend/resume as > > > intel_fbdev_set_suspend() does a full clear over the whole scanout. > > > > > > v2: Only unpin the intel_fb is we allocate it. If we inherit the fb from > > > the BIOS, we do not own the pinned vma (except for the reference we add > > > in this patch for our access via info->screen_base). > > > > > > v3: Finish balancing the vma pinning for the normal !preallocated case. > > > > > > v4: Try to simplify the pinning even further. > > > v5: Leak the VMA (cleaned up by object-free) to avoid complicated error paths. > > > > It's beautiful how little code is needed to fix this. The only remaining > > thing I noticed now while looking over the error paths is that these > > lines in intelfb_alloc() become obsolete with your patch: > > > > out: > > mutex_unlock(&dev->struct_mutex); > > - if (!IS_ERR_OR_NULL(fb)) > > - drm_framebuffer_unreference(fb); > > return ret; > > } > > > > Because at each of the remaining "goto out" in the function, > > fb can be only either an ERR_PTR or NULL. > > > > Also, further up in the function, the declaration of fb can then be > > changed thus: > > > > - struct drm_framebuffer *fb = NULL; > > + struct drm_framebuffer *fb; > > > > Kind regards, > > Yeah there's room for follow-up polish, but this seems good enough at > least for -fixes. I just tested when we started to fail things, and for me it only happens with 4.4-rc releases (tested with [1]). 4.3.3 OTOH still had the fbcon fb pinned while X was running. [1] airlied/drm-fixes 4655a12b81ed ("drm: Don't overwrite UNVERFIED mode status to OK") > > Reviewed-by: Daniel Vetter > > Lukas, feel like supplying a patch to apply the polish you've spotted on > top? > > Thanks, Daniel > > > > > Lukas > > > > > > > > Signed-off-by: Chris Wilson > > > Cc: "Goel, Akash" > > > Cc: Daniel Vetter > > > Cc: Jesse Barnes > > > Cc: Lukas Wunner > > > Cc: stable@vger.kernel.org > > > --- > > > drivers/gpu/drm/i915/intel_fbdev.c | 20 +++++++++++++------- > > > 1 file changed, 13 insertions(+), 7 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_fbdev.c b/drivers/gpu/drm/i915/intel_fbdev.c > > > index 7ccde58f8c98..bea75cafc623 100644 > > > --- a/drivers/gpu/drm/i915/intel_fbdev.c > > > +++ b/drivers/gpu/drm/i915/intel_fbdev.c > > > @@ -163,13 +163,6 @@ static int intelfb_alloc(struct drm_fb_helper *helper, > > > goto out; > > > } > > > > > > - /* Flush everything out, we'll be doing GTT only from now on */ > > > - ret = intel_pin_and_fence_fb_obj(NULL, fb, NULL); > > > - if (ret) { > > > - DRM_ERROR("failed to pin obj: %d\n", ret); > > > - goto out; > > > - } > > > - > > > mutex_unlock(&dev->struct_mutex); > > > > > > ifbdev->fb = to_intel_framebuffer(fb); > > > @@ -225,6 +218,14 @@ static int intelfb_create(struct drm_fb_helper *helper, > > > > > > mutex_lock(&dev->struct_mutex); > > > > > > + /* Pin the GGTT vma for our access via info->screen_base. > > > + * This also validates that any existing fb inherited from the > > > + * BIOS is suitable for own access. > > > + */ > > > + ret = intel_pin_and_fence_fb_obj(NULL, &ifbdev->fb->base, NULL); > > > + if (ret) > > > + goto out_unlock; > > > + > > > info = drm_fb_helper_alloc_fbi(helper); > > > if (IS_ERR(info)) { > > > DRM_ERROR("Failed to allocate fb_info\n"); > > > @@ -287,6 +288,7 @@ out_destroy_fbi: > > > drm_fb_helper_release_fbi(helper); > > > out_unpin: > > > i915_gem_object_ggtt_unpin(obj); > > > +out_unlock: > > > mutex_unlock(&dev->struct_mutex); > > > return ret; > > > } > > > @@ -524,6 +526,10 @@ static const struct drm_fb_helper_funcs intel_fb_helper_funcs = { > > > static void intel_fbdev_destroy(struct drm_device *dev, > > > struct intel_fbdev *ifbdev) > > > { > > > + /* We rely on the object-free to release the VMA pinning for > > > + * the info->screen_base mmaping. Leaking the VMA is simpler than > > > + * trying to rectify all the possible error paths leading here. > > > + */ > > > > > > drm_fb_helper_unregister_fbi(&ifbdev->helper); > > > drm_fb_helper_release_fbi(&ifbdev->helper); > > > -- > > > 2.6.2 > > > > > -- > Daniel Vetter > Software Engineer, Intel Corporation > http://blog.ffwll.ch > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrj�l� Intel OTC