From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH 1/2] drm/i915/gen9: unconditionally apply the memory bandwidth WA Date: Mon, 10 Oct 2016 16:55:26 -0400 Message-ID: <1476132926.21767.11.camel@redhat.com> References: <1476131459-23763-1-git-send-email-paulo.r.zanoni@intel.com> <1476131649.21767.7.camel@redhat.com> <1476132382.2508.13.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7B2366E380 for ; Mon, 10 Oct 2016 20:55:28 +0000 (UTC) In-Reply-To: <1476132382.2508.13.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Zanoni, Paulo R" , "intel-gfx@lists.freedesktop.org" Cc: "Pandiyan, Dhinakaran" , "stable@vger.kernel.org" List-Id: intel-gfx@lists.freedesktop.org SSBmZWVsIGxpa2UgdGhlIFBSTXMgc2hvdWxkIGJlIGEgbGl0dGxlIGxlc3MgY29uZnVzaW5nIHNv IGl0IGRvZXNuJ3QKdGFrZSBmb3VyIG9mIHVzIHJlYWRpbmcgaXQgdG8gYWN0dWFsbHkgZ2V0IHRo ZSBmdWxsIHNwZWMgaW50byBjb2Rl4oCmCgpBbnl3YXksIHdoaWxlIHRoaXMgaXMgZ29pbmcgdG8g YmUgcnVubmluZyBvbiBtb3JlIHRoZW4ganVzdCBza3lsYWtlIEkKZmVlbCBsaWtlIGludGVsX25l ZWRzX21lbW9yeV9id193YSgpIGlzIGEgbGl0dGxlIGNvbmZ1c2luZyBzaW5jZSBJCndvdWxkIGV4 cGVjdCBldmVudHVhbGx5IHdlJ3JlIGdvaW5nIHRvIGhhdmUgdG8gYXBwbHkgb3RoZXIgdW5yZWxh dGVkCm1lbW9yeSBiYW5kd2lkdGggd29ya2Fyb3VuZHMgb24gb3RoZXIgcGxhdGZvcm1zLiBIb3cg YWJvdXQKc2tsX25lZWRzX21lbW9yeV9id193YSgpIG9yIGdlbjlfbmVlZHNfbWVtb3J5X2J3X3dh KCk/CgpPbiBNb24sIDIwMTYtMTAtMTAgYXQgMjA6NDYgKzAwMDAsIFphbm9uaSwgUGF1bG8gUiB3 cm90ZToKPiBFbSBTZWcsIDIwMTYtMTAtMTAgw6BzIDE2OjM0IC0wNDAwLCBMeXVkZSBQYXVsIGVz Y3JldmV1Ogo+ID4gCj4gPiBXYXMgdGhlcmUgYSBuZXcgd29ya2Fyb3VuZCBhZGRlZCByZWNlbnRs eT8gT3Igd2FzIHRoaXMgc29tZXRoaW5nIEkKPiA+IGp1c3QKPiA+IG1pc3NlZCB3aGVuIHdyaXRp bmcgdGhlIG9yaWdpbmFsIGNvZGUgZm9yIHRoaXMKPiAKPiBJdCdzIGxpc3RlZCBvbiB0aGUgcHVi bGljIHNwZWM6Cj4gaHR0cHM6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb2N1bQo+IGVu dGF0aW9uL2ludGVsLWdmeC1wcm0tb3NyYy1za2wtdm9sMTItZGlzcGxheS5wZGYKPiAKPiBQYWdl cyAyMTAgLSAyMTEuCj4gCj4gPiAKPiA+IAo+ID4gT24gTW9uLCAyMDE2LTEwLTEwIGF0IDE3OjMw IC0wMzAwLCBQYXVsbyBaYW5vbmkgd3JvdGU6Cj4gPiA+IAo+ID4gPiAKPiA+ID4gTWFoZXNoIEt1 bWFyIGlzIGFscmVhZHkgd29ya2luZyBvbiBhIHByb3BlciBpbXBsZW1lbnRhdGlvbiBmb3IKPiA+ ID4gdGhlCj4gPiA+IHdvcmthcm91bmQsIGJ1dCB3aGlsZSB3ZSBzdGlsbCBkb24ndCBoYXZlIGl0 LCBsZXQncyBqdXN0Cj4gPiA+IHVuY29uZGl0aW9uYWxseSBhcHBseSB0aGUgd29ya2Fyb3VuZCBm b3IgZXZlcnlib2R5IGFuZCB3ZSBob3BlIHdlCj4gPiA+IGNhbgo+ID4gPiBjbG9zZSBhbGwgdGhv c2UgbnVtZXJvdXMgYnVnemlsbGEgdGlja2V0cy4gQWxzbywgSSdtIG5vdCBzdXJlIGhvdwo+ID4g PiBlYXN5Cj4gPiA+IGl0IHdpbGwgYmUgdG8gYmFja3BvcnQgdGhlIGZpbmFsIGltcGxlbWVudGF0 aW9uIHRvIHRoZSBzdGFibGUKPiA+ID4gS2VybmVscywKPiA+ID4gYW5kIHRoaXMgcGF0Y2ggaGVy ZSBpcyBwcm9iYWJseSBlYXNpZXIgdG8gYmFja3BvcnQuCj4gPiA+IAo+ID4gPiBBdCB0aGUgcHJl c2VudCBtb21lbnQgSSBzdGlsbCBkb24ndCBoYXZlIGNvbmZpcm1hdGlvbiB0aGF0IHRoaXMKPiA+ ID4gcGF0Y2gKPiA+ID4gZml4ZXMgYW55IG9mIHRoZSBidWdzIGxpc3RlZCBiZWxvdywgYnV0IHdl IHNob3VsZCBkZWZpbml0ZWx5IHRyeQo+ID4gPiB0ZXN0aW5nIGFsbCBvZiB0aGVtIGFnYWluLgo+ ID4gPiAKPiA+ID4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19i dWcuY2dpP2lkPTk0MzM3Cj4gPiA+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Au b3JnL3Nob3dfYnVnLmNnaT9pZD05NDYwNQo+ID4gPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZy ZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTQ4ODQKPiA+ID4gQnVnemlsbGE6IGh0dHBz Oi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTk1MDEwCj4gPiA+IEJ1Z3pp bGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05NjIyNgo+ ID4gPiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9OTY4MjgKPiA+ID4gQnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hv d19idWcuY2dpP2lkPTk3NDUwCj4gPiA+IEJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0 b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05NzgzMAo+ID4gPiBDYzogc3RhYmxlQHZnZXIua2VybmVs Lm9yZwo+ID4gPiBDYzogTWFoZXNoIEt1bWFyIDxtYWhlc2gxLmt1bWFyQGludGVsLmNvbT4KPiA+ ID4gQ2M6IEx5dWRlIDxjcGF1bEByZWRoYXQuY29tPgo+ID4gPiBDYzogRGhpbmFrYXJhbiBQYW5k aXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gPiA+IFNpZ25lZC1vZmYtYnk6 IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ID4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIHwgNDkKPiA+ID4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPiA+ID4gwqAxIGZpbGUgY2hhbmdlZCwgNDEg aW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYwo+ID4gPiBpbmRleCA2MmQ3MzBkLi4xNTk4MzFkIDEwMDY0NAo+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ID4gQEAgLTI4NzksNiArMjg3OSwyMSBAQCBza2xf d21fcGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lCj4gPiA+ICpwbGFuZSkKPiA+ID4g wqAJfQo+ID4gPiDCoH0KPiA+ID4gwqAKPiA+ID4gKy8qCj4gPiA+ICsgKiBGSVhNRTogV2Ugc3Rp bGwgZG9uJ3QgaGF2ZSB0aGUgcHJvcGVyIGNvZGUgZGV0ZWN0IGlmIHdlIG5lZWQKPiA+ID4gdG8K PiA+ID4gYXBwbHkgdGhlIFdBLAo+ID4gPiArICogc28gYXNzdW1lIHdlJ2xsIGFsd2F5cyBuZWVk IGl0IGluIG9yZGVyIHRvIGF2b2lkIHVuZGVycnVucy4KPiA+ID4gKyAqLwo+ID4gPiArc3RhdGlj IGJvb2wgaW50ZWxfbmVlZHNfbWVtb3J5X2J3X3dhKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUK PiA+ID4gKnN0YXRlKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtCj4gPiA+ID4gCj4gPiA+ID4gCj4gPiA+ID4gYmFzZS5k ZXYpOwo+ID4gPiArCj4gPiA+ICsJaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hU T04oZGV2X3ByaXYpIHx8Cj4gPiA+ICsJwqDCoMKgwqBJU19LQUJZTEFLRShkZXZfcHJpdikpCj4g PiA+ICsJCXJldHVybiB0cnVlOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIGZhbHNlOwo+ID4gPiAr fQo+ID4gPiArCj4gPiA+IMKgc3RhdGljIGJvb2wKPiA+ID4gwqBpbnRlbF9oYXNfc2FndihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+IMKgewo+ID4gPiBAQCAtMjk5OSw5 ICszMDE0LDEwIEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdAo+ID4gPiBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKPiA+ID4gwqAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0 YXRlLT5kZXY7Cj4gPiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiA+ID4gwqAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3Rh dGUgPQo+ID4gPiB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ID4gPiAtCXN0cnVjdCBk cm1fY3J0YyAqY3J0YzsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiA+ID4gKwlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwo+ID4gPiDCoAllbnVtIHBpcGUgcGlwZTsKPiA+ID4g LQlpbnQgbGV2ZWwsIHBsYW5lOwo+ID4gPiArCWludCBsZXZlbCwgaWQsIGxhdGVuY3k7Cj4gPiA+ IMKgCj4gPiA+IMKgCWlmICghaW50ZWxfaGFzX3NhZ3YoZGV2X3ByaXYpKQo+ID4gPiDCoAkJcmV0 dXJuIGZhbHNlOwo+ID4gPiBAQCAtMzAxOSwyNyArMzAzNSwzNiBAQCBib29sIGludGVsX2Nhbl9l bmFibGVfc2FndihzdHJ1Y3QKPiA+ID4gZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiA+IMKg Cj4gPiA+IMKgCS8qIFNpbmNlIHdlJ3JlIG5vdyBndWFyYW50ZWVkIHRvIG9ubHkgaGF2ZSBvbmUg YWN0aXZlCj4gPiA+IENSVEMuLi4gKi8KPiA+ID4gwqAJcGlwZSA9IGZmcyhpbnRlbF9zdGF0ZS0+ YWN0aXZlX2NydGNzKSAtIDE7Cj4gPiA+IC0JY3J0YyA9IGRldl9wcml2LT5waXBlX3RvX2NydGNf bWFwcGluZ1twaXBlXTsKPiA+ID4gKwljcnRjID0gdG9faW50ZWxfY3J0YyhkZXZfcHJpdi0KPiA+ ID4gPiAKPiA+ID4gPiBwaXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXSk7Cj4gPiA+IMKgCj4gPiA+ IC0JaWYgKGNydGMtPnN0YXRlLT5tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0Up Cj4gPiA+ICsJaWYgKGNydGMtPmJhc2Uuc3RhdGUtPm1vZGUuZmxhZ3MgJgo+ID4gPiBEUk1fTU9E RV9GTEFHX0lOVEVSTEFDRSkKPiA+ID4gwqAJCXJldHVybiBmYWxzZTsKPiA+ID4gwqAKPiA+ID4g LQlmb3JfZWFjaF9wbGFuZShkZXZfcHJpdiwgcGlwZSwgcGxhbmUpIHsKPiA+ID4gKwlmb3JfZWFj aF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgY3J0YywgcGxhbmUpIHsKPiA+ID4gKwkJaWQgPSBz a2xfd21fcGxhbmVfaWQocGxhbmUpOwo+ID4gPiArCj4gPiA+IMKgCQkvKiBTa2lwIHRoaXMgcGxh bmUgaWYgaXQncyBub3QgZW5hYmxlZCAqLwo+ID4gPiAtCQlpZiAoaW50ZWxfc3RhdGUtCj4gPiA+ ID53bV9yZXN1bHRzLnBsYW5lW3BpcGVdW3BsYW5lXVswXQo+ID4gPiA9PQo+ID4gPiAwKQo+ID4g PiArCQlpZiAoaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMucGxhbmVbcGlwZV1baWRdWzBdCj4gPiA+ ID09Cj4gPiA+IDApCj4gPiA+IMKgCQkJY29udGludWU7Cj4gPiA+IMKgCj4gPiA+IMKgCQkvKiBG aW5kIHRoZSBoaWdoZXN0IGVuYWJsZWQgd20gbGV2ZWwgZm9yIHRoaXMKPiA+ID4gcGxhbmUKPiA+ ID4gKi8KPiA+ID4gwqAJCWZvciAobGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldik7Cj4gPiA+ IC0JCcKgwqDCoMKgwqBpbnRlbF9zdGF0ZS0KPiA+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiB3bV9y ZXN1bHRzLnBsYW5lW3BpcGVdW3BsYW5lXVtsZXZlbF0gPT0gMDsgLS1sZXZlbCkKPiA+ID4gKwkJ wqDCoMKgwqDCoGludGVsX3N0YXRlLQo+ID4gPiA+IAo+ID4gPiA+IHdtX3Jlc3VsdHMucGxhbmVb cGlwZV1baWRdW2xldmVsXQo+ID4gPiA9PSAwOyAtLWxldmVsKQo+ID4gPiDCoAkJwqDCoMKgwqDC oHsgfQo+ID4gPiDCoAo+ID4gPiArCQlsYXRlbmN5ID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5 W2xldmVsXTsKPiA+ID4gKwo+ID4gPiArCQlpZiAoaW50ZWxfbmVlZHNfbWVtb3J5X2J3X3dhKGlu dGVsX3N0YXRlKSAmJgo+ID4gPiArCQnCoMKgwqDCoHBsYW5lLT5iYXNlLnN0YXRlLT5mYi0+bW9k aWZpZXJbMF0gPT0KPiA+ID4gKwkJwqDCoMKgwqBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiA+ ID4gKwkJCWxhdGVuY3kgKz0gMTU7Cj4gPiA+ICsKPiA+ID4gwqAJCS8qCj4gPiA+IMKgCQnCoCog SWYgYW55IG9mIHRoZSBwbGFuZXMgb24gdGhpcyBwaXBlIGRvbid0Cj4gPiA+IGVuYWJsZQo+ID4g PiB3bQo+ID4gPiBsZXZlbHMKPiA+ID4gwqAJCcKgKiB0aGF0IGluY3VyIG1lbW9yeSBsYXRlbmNp ZXMgaGlnaGVyIHRoZW4gMzDCtXMKPiA+ID4gd2UKPiA+ID4gY2FuJ3QgZW5hYmxlCj4gPiA+IMKg CQnCoCogdGhlIFNBR1YKPiA+ID4gwqAJCcKgKi8KPiA+ID4gLQkJaWYgKGRldl9wcml2LT53bS5z a2xfbGF0ZW5jeVtsZXZlbF0gPAo+ID4gPiBTS0xfU0FHVl9CTE9DS19USU1FKQo+ID4gPiArCQlp ZiAobGF0ZW5jeSA8IFNLTF9TQUdWX0JMT0NLX1RJTUUpCj4gPiA+IMKgCQkJcmV0dXJuIGZhbHNl Owo+ID4gPiDCoAl9Cj4gPiA+IMKgCj4gPiA+IEBAIC0zNTQ5LDEyICszNTc0LDE4IEBAIHN0YXRp YyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3QKPiA+ID4gc3RydWN0Cj4gPiA+IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiDCoAl1aW50MzJfdCB3aWR0aCA9IDAsIGhlaWdo dCA9IDA7Cj4gPiA+IMKgCXVpbnQzMl90IHBsYW5lX3BpeGVsX3JhdGU7Cj4gPiA+IMKgCXVpbnQz Ml90IHlfdGlsZV9taW5pbXVtLCB5X21pbl9zY2FubGluZXM7Cj4gPiA+ICsJc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUgPQo+ID4gPiArCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3N0 YXRlLT5iYXNlLnN0YXRlKTsKPiA+ID4gKwlib29sIGFwcGx5X21lbW9yeV9id193YSA9Cj4gPiA+ IGludGVsX25lZWRzX21lbW9yeV9id193YShzdGF0ZSk7Cj4gPiA+IMKgCj4gPiA+IMKgCWlmIChs YXRlbmN5ID09IDAgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUgfHwKPiA+ID4gIWludGVsX3BzdGF0 ZS0KPiA+ID4gPiAKPiA+ID4gPiAKPiA+ID4gPiBiYXNlLnZpc2libGUpIHsKPiA+ID4gwqAJCSpl bmFibGVkID0gZmFsc2U7Cj4gPiA+IMKgCQlyZXR1cm4gMDsKPiA+ID4gwqAJfQo+ID4gPiDCoAo+ ID4gPiArCWlmIChhcHBseV9tZW1vcnlfYndfd2EgJiYgZmItPm1vZGlmaWVyWzBdID09Cj4gPiA+ IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+ID4gPiArCQlsYXRlbmN5ICs9IDE1Owo+ID4gPiAr Cj4gPiA+IMKgCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJmludGVsX3BzdGF0ZS0+YmFzZS5zcmMp ID4+IDE2Owo+ID4gPiDCoAloZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQoJmludGVsX3BzdGF0ZS0+ YmFzZS5zcmMpID4+IDE2Owo+ID4gPiDCoAo+ID4gPiBAQCAtMzYwNyw2ICszNjM4LDggQEAgc3Rh dGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdAo+ID4gPiBzdHJ1Y3QKPiA+ID4gZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IMKgCQkJCcKgcGxhbmVfYmxvY2tzX3Blcl9s aW5lKTsKPiA+ID4gwqAKPiA+ID4gwqAJeV90aWxlX21pbmltdW0gPSBwbGFuZV9ibG9ja3NfcGVy X2xpbmUgKgo+ID4gPiB5X21pbl9zY2FubGluZXM7Cj4gPiA+ICsJaWYgKGFwcGx5X21lbW9yeV9i d193YSkKPiA+ID4gKwkJeV90aWxlX21pbmltdW0gKj0gMjsKPiA+ID4gwqAKPiA+ID4gwqAJaWYg KGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+ID4gPiDCoAnC oMKgwqDCoGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpIHsKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com ([209.132.183.28]:52218 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751790AbcJJUz2 (ORCPT ); Mon, 10 Oct 2016 16:55:28 -0400 Message-ID: <1476132926.21767.11.camel@redhat.com> Subject: Re: [PATCH 1/2] drm/i915/gen9: unconditionally apply the memory bandwidth WA From: Lyude Paul To: "Zanoni, Paulo R" , "intel-gfx@lists.freedesktop.org" Cc: "Kumar, Mahesh1" , "stable@vger.kernel.org" , "Pandiyan, Dhinakaran" Date: Mon, 10 Oct 2016 16:55:26 -0400 In-Reply-To: <1476132382.2508.13.camel@intel.com> References: <1476131459-23763-1-git-send-email-paulo.r.zanoni@intel.com> <1476131649.21767.7.camel@redhat.com> <1476132382.2508.13.camel@intel.com> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: I feel like the PRMs should be a little less confusing so it doesn't take four of us reading it to actually get the full spec into code… Anyway, while this is going to be running on more then just skylake I feel like intel_needs_memory_bw_wa() is a little confusing since I would expect eventually we're going to have to apply other unrelated memory bandwidth workarounds on other platforms. How about skl_needs_memory_bw_wa() or gen9_needs_memory_bw_wa()? On Mon, 2016-10-10 at 20:46 +0000, Zanoni, Paulo R wrote: > Em Seg, 2016-10-10 às 16:34 -0400, Lyude Paul escreveu: > > > > Was there a new workaround added recently? Or was this something I > > just > > missed when writing the original code for this > > It's listed on the public spec: > https://01.org/sites/default/files/docum > entation/intel-gfx-prm-osrc-skl-vol12-display.pdf > > Pages 210 - 211. > > > > > > > On Mon, 2016-10-10 at 17:30 -0300, Paulo Zanoni wrote: > > > > > > > > > Mahesh Kumar is already working on a proper implementation for > > > the > > > workaround, but while we still don't have it, let's just > > > unconditionally apply the workaround for everybody and we hope we > > > can > > > close all those numerous bugzilla tickets. Also, I'm not sure how > > > easy > > > it will be to backport the final implementation to the stable > > > Kernels, > > > and this patch here is probably easier to backport. > > > > > > At the present moment I still don't have confirmation that this > > > patch > > > fixes any of the bugs listed below, but we should definitely try > > > testing all of them again. > > > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94337 > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94605 > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94884 > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=95010 > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96226 > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96828 > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97450 > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97830 > > > Cc: stable@vger.kernel.org > > > Cc: Mahesh Kumar > > > Cc: Lyude > > > Cc: Dhinakaran Pandiyan > > > Signed-off-by: Paulo Zanoni > > > --- > > >  drivers/gpu/drm/i915/intel_pm.c | 49 > > > ++++++++++++++++++++++++++++++++++------- > > >  1 file changed, 41 insertions(+), 8 deletions(-) > > > > > > diff --git a/drivers/gpu/drm/i915/intel_pm.c > > > b/drivers/gpu/drm/i915/intel_pm.c > > > index 62d730d..159831d 100644 > > > --- a/drivers/gpu/drm/i915/intel_pm.c > > > +++ b/drivers/gpu/drm/i915/intel_pm.c > > > @@ -2879,6 +2879,21 @@ skl_wm_plane_id(const struct intel_plane > > > *plane) > > >   } > > >  } > > >   > > > +/* > > > + * FIXME: We still don't have the proper code detect if we need > > > to > > > apply the WA, > > > + * so assume we'll always need it in order to avoid underruns. > > > + */ > > > +static bool intel_needs_memory_bw_wa(struct intel_atomic_state > > > *state) > > > +{ > > > + struct drm_i915_private *dev_priv = to_i915(state- > > > > > > > > > > > > base.dev); > > > + > > > + if (IS_SKYLAKE(dev_priv) || IS_BROXTON(dev_priv) || > > > +     IS_KABYLAKE(dev_priv)) > > > + return true; > > > + > > > + return false; > > > +} > > > + > > >  static bool > > >  intel_has_sagv(struct drm_i915_private *dev_priv) > > >  { > > > @@ -2999,9 +3014,10 @@ bool intel_can_enable_sagv(struct > > > drm_atomic_state *state) > > >   struct drm_device *dev = state->dev; > > >   struct drm_i915_private *dev_priv = to_i915(dev); > > >   struct intel_atomic_state *intel_state = > > > to_intel_atomic_state(state); > > > - struct drm_crtc *crtc; > > > + struct intel_crtc *crtc; > > > + struct intel_plane *plane; > > >   enum pipe pipe; > > > - int level, plane; > > > + int level, id, latency; > > >   > > >   if (!intel_has_sagv(dev_priv)) > > >   return false; > > > @@ -3019,27 +3035,36 @@ bool intel_can_enable_sagv(struct > > > drm_atomic_state *state) > > >   > > >   /* Since we're now guaranteed to only have one active > > > CRTC... */ > > >   pipe = ffs(intel_state->active_crtcs) - 1; > > > - crtc = dev_priv->pipe_to_crtc_mapping[pipe]; > > > + crtc = to_intel_crtc(dev_priv- > > > > > > > > pipe_to_crtc_mapping[pipe]); > > >   > > > - if (crtc->state->mode.flags & DRM_MODE_FLAG_INTERLACE) > > > + if (crtc->base.state->mode.flags & > > > DRM_MODE_FLAG_INTERLACE) > > >   return false; > > >   > > > - for_each_plane(dev_priv, pipe, plane) { > > > + for_each_intel_plane_on_crtc(dev, crtc, plane) { > > > + id = skl_wm_plane_id(plane); > > > + > > >   /* Skip this plane if it's not enabled */ > > > - if (intel_state- > > > >wm_results.plane[pipe][plane][0] > > > == > > > 0) > > > + if (intel_state->wm_results.plane[pipe][id][0] > > > == > > > 0) > > >   continue; > > >   > > >   /* Find the highest enabled wm level for this > > > plane > > > */ > > >   for (level = ilk_wm_max_level(dev); > > > -      intel_state- > > > > > > > > > > > > wm_results.plane[pipe][plane][level] == 0; --level) > > > +      intel_state- > > > > > > > > wm_results.plane[pipe][id][level] > > > == 0; --level) > > >        { } > > >   > > > + latency = dev_priv->wm.skl_latency[level]; > > > + > > > + if (intel_needs_memory_bw_wa(intel_state) && > > > +     plane->base.state->fb->modifier[0] == > > > +     I915_FORMAT_MOD_X_TILED) > > > + latency += 15; > > > + > > >   /* > > >    * If any of the planes on this pipe don't > > > enable > > > wm > > > levels > > >    * that incur memory latencies higher then 30µs > > > we > > > can't enable > > >    * the SAGV > > >    */ > > > - if (dev_priv->wm.skl_latency[level] < > > > SKL_SAGV_BLOCK_TIME) > > > + if (latency < SKL_SAGV_BLOCK_TIME) > > >   return false; > > >   } > > >   > > > @@ -3549,12 +3574,18 @@ static int skl_compute_plane_wm(const > > > struct > > > drm_i915_private *dev_priv, > > >   uint32_t width = 0, height = 0; > > >   uint32_t plane_pixel_rate; > > >   uint32_t y_tile_minimum, y_min_scanlines; > > > + struct intel_atomic_state *state = > > > + to_intel_atomic_state(cstate->base.state); > > > + bool apply_memory_bw_wa = > > > intel_needs_memory_bw_wa(state); > > >   > > >   if (latency == 0 || !cstate->base.active || > > > !intel_pstate- > > > > > > > > > > > > base.visible) { > > >   *enabled = false; > > >   return 0; > > >   } > > >   > > > + if (apply_memory_bw_wa && fb->modifier[0] == > > > I915_FORMAT_MOD_X_TILED) > > > + latency += 15; > > > + > > >   width = drm_rect_width(&intel_pstate->base.src) >> 16; > > >   height = drm_rect_height(&intel_pstate->base.src) >> 16; > > >   > > > @@ -3607,6 +3638,8 @@ static int skl_compute_plane_wm(const > > > struct > > > drm_i915_private *dev_priv, > > >    plane_blocks_per_line); > > >   > > >   y_tile_minimum = plane_blocks_per_line * > > > y_min_scanlines; > > > + if (apply_memory_bw_wa) > > > + y_tile_minimum *= 2; > > >   > > >   if (fb->modifier[0] == I915_FORMAT_MOD_Y_TILED || > > >       fb->modifier[0] == I915_FORMAT_MOD_Yf_TILED) {