From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] DRM: i915: Fix random GPU hang, Bug 156851 Date: Thu, 15 Sep 2016 11:15:35 +0300 Message-ID: <87d1k5r32w.fsf@intel.com> References: <20160915072732.11950-1-bobcaocheng@163.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160915072732.11950-1-bobcaocheng@163.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter , David Airlie Cc: Cheng Cao , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Icenowy Zheng List-Id: dri-devel@lists.freedesktop.org CllvdSdsbCBzdGlsbCBuZWVkIHRoYXQgY29tbWl0IG1lc3NhZ2UuIFNlZSAnZ2l0IGxvZycgb24g b3VyIGRyaXZlciBmb3IKZXhhbXBsZXMgb2YgdGhlIGxldmVsIG9mIGNvbW1pdCBtZXNzYWdlcyB3 ZSBleHBlY3QuIFlvdSdsbCBhbHNvIHNlZSBob3cKdG8gcmVmZXJlbmNlIGJ1Z3MgdXNpbmcgdGhl IEJ1Z3ppbGxhOiB0YWcuIEFuZCBwbGVhc2UgZG8gZmlsZSB0aGUgYnVnCndoZXJlIEkgYXNrZWQs IG5vdCBzb21ld2hlcmUgZWxzZS4KCkJSLApKYW5pLgoKCk9uIFRodSwgMTUgU2VwIDIwMTYsIENo ZW5nIENhbyA8Ym9iY2FvY2hlbmdAMTYzLmNvbT4gd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogQ2hl bmcgQ2FvIDxib2JjYW9jaGVuZ0AxNjMuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYyAgICAgfCAgNiArKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3N0b2xlbi5jICB8IDYxICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgfCAgNiArKysrCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDIwICsrKysrKysrKystCj4g IDQgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCj4KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDdhMzBhZjcuLjBiMDVkZDkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0yOTA3LDYgKzI5MDcsMTIg QEAgc3RhdGljIHVuc2lnbmVkIGludCBnZW44X2dldF90b3RhbF9ndHRfc2l6ZSh1MTYgYmR3X2dt Y2hfY3RsKQo+ICAJaWYgKGJkd19nbWNoX2N0bCA+IDQpCj4gIAkJYmR3X2dtY2hfY3RsID0gNDsK PiAgI2VuZGlmCj4gKyNpZmRlZiBDT05GSUdfWDg2XzY0Cj4gKwkvKiBMaW1pdCA2NGIgcGxhdGZv cm1zIHRvIGEgNEdCIEdHVFQgKi8KPiArCS8qIERNQSA0R0IgcHJvdGVjdGlvbiAqLwo+ICsJaWYg KGJkd19nbWNoX2N0bCA+IDgpCj4gKwkJYmR3X2dtY2hfY3RsID0gODsKPiArI2VuZGlmCj4gIAo+ ICAJcmV0dXJuIGJkd19nbWNoX2N0bCA8PCAyMDsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3N0b2xlbi5jCj4gaW5kZXggNjZiZTI5OWExLi5kYTI3MmFlIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBAQCAtMzUyLDQ3ICszNTIsNDQgQEAgc3Rh dGljIHZvaWQgZ2VuOF9nZXRfc3RvbGVuX3Jlc2VydmVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCQkJCSAgICAgdW5zaWduZWQgbG9uZyAqYmFzZSwgdW5zaWduZWQgbG9u ZyAqc2l6ZSkKPiAgewo+ICAJdWludDMyX3QgcmVnX3ZhbCA9IEk5MTVfUkVBRChHRU42X1NUT0xF Tl9SRVNFUlZFRCk7Cj4gKwl1bnNpZ25lZCBsb25nIHN0b2xlbl90b3A7Cj4gKwlzdHJ1Y3QgaTkx NV9nZ3R0ICpnZ3R0ID0gJmRldl9wcml2LT5nZ3R0Owo+ICAKPiAgCSpiYXNlID0gcmVnX3ZhbCAm IEdFTjZfU1RPTEVOX1JFU0VSVkVEX0FERFJfTUFTSzsKPiAgCj4gIAlzd2l0Y2ggKHJlZ192YWwg JiBHRU44X1NUT0xFTl9SRVNFUlZFRF9TSVpFX01BU0spIHsKPiAgCWNhc2UgR0VOOF9TVE9MRU5f UkVTRVJWRURfMU06Cj4gLQkJKnNpemUgPSAxMDI0ICogMTAyNDsKPiArCQkqc2l6ZSA9IDEgPDwg MTAgPDwgMTA7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIEdFTjhfU1RPTEVOX1JFU0VSVkVEXzJNOgo+ IC0JCSpzaXplID0gMiAqIDEwMjQgKiAxMDI0Owo+ICsJCSpzaXplID0gMiA8PCAxMCA8PCAxMDsK PiAgCQlicmVhazsKPiAgCWNhc2UgR0VOOF9TVE9MRU5fUkVTRVJWRURfNE06Cj4gLQkJKnNpemUg PSA0ICogMTAyNCAqIDEwMjQ7Cj4gKwkJKnNpemUgPSA0IDw8IDEwIDw8IDEwOwo+ICAJCWJyZWFr Owo+ICAJY2FzZSBHRU44X1NUT0xFTl9SRVNFUlZFRF84TToKPiAtCQkqc2l6ZSA9IDggKiAxMDI0 ICogMTAyNDsKPiArCQkqc2l6ZSA9IDggPDwgMTAgPDwgMTA7Cj4gIAkJYnJlYWs7Cj4gIAlkZWZh dWx0Ogo+IC0JCSpzaXplID0gOCAqIDEwMjQgKiAxMDI0Owo+IC0JCU1JU1NJTkdfQ0FTRShyZWdf dmFsICYgR0VOOF9TVE9MRU5fUkVTRVJWRURfU0laRV9NQVNLKTsKPiAtCX0KPiAtfQo+IC0KPiAt c3RhdGljIHZvaWQgYmR3X2dldF9zdG9sZW5fcmVzZXJ2ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+IC0JCQkJICAgIHVuc2lnbmVkIGxvbmcgKmJhc2UsIHVuc2lnbmVkIGxv bmcgKnNpemUpCj4gLXsKPiAtCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdn dHQ7Cj4gLQl1aW50MzJfdCByZWdfdmFsID0gSTkxNV9SRUFEKEdFTjZfU1RPTEVOX1JFU0VSVkVE KTsKPiAtCXVuc2lnbmVkIGxvbmcgc3RvbGVuX3RvcDsKPiArCQkvKiBXaGF0ZXZlciBpZiBpdCBp cyBhIEJEVyBkZXZpY2Ugb3IgU0tMIGRldmljZQo+ICsJCSAqIE9yIG90aGVycyBkZXZpY2VzLi4K PiArCQkgKiBUaGlzIHdheSBpcyBhbHdheXMgZ29pbmcgdG8gd29yayBvbiA1dGgKPiArCQkgKiBn ZW5lcmF0aW9uIEludGVsIFByb2Nlc3Nlcgo+ICsJCSAqLwo+ICsJCXN0b2xlbl90b3AgPSBkZXZf cHJpdi0+bW0uc3RvbGVuX2Jhc2UgKyBnZ3R0LT5zdG9sZW5fc2l6ZTsKPiAgCj4gLQlzdG9sZW5f dG9wID0gZGV2X3ByaXYtPm1tLnN0b2xlbl9iYXNlICsgZ2d0dC0+c3RvbGVuX3NpemU7Cj4gKwkJ KmJhc2UgPSByZWdfdmFsICYgR0VONl9TVE9MRU5fUkVTRVJWRURfQUREUl9NQVNLOwo+ICAKPiAt CSpiYXNlID0gcmVnX3ZhbCAmIEdFTjZfU1RPTEVOX1JFU0VSVkVEX0FERFJfTUFTSzsKPiArCQkv KiBNTElNSVQgLSBNQkFTRSA9PiBQRUcgKi8KPiArCQkvKiAgIC0tIG1vYmlsZS01dGgtZ2VuLWNv cmUtZmFtaWx5LWRhdGFzaGVldC12b2wtMi5wZGYgKi8KPiArCQlpZiAoKmJhc2UgPT0gMCkgewo+ ICsJCQkqc2l6ZSA9IDA7Cj4gKwkJCU1JU1NJTkdfQ0FTRShyZWdfdmFsICYgR0VOOF9TVE9MRU5f UkVTRVJWRURfU0laRV9NQVNLKTsKPiArCQl9IGVsc2UKPiArCQkJKnNpemUgPSBzdG9sZW5fdG9w IC0gKmJhc2U7Cj4gIAo+IC0JLyogT24gdGhlc2UgcGxhdGZvcm1zLCB0aGUgcmVnaXN0ZXIgZG9l c24ndCBoYXZlIGEgc2l6ZSBmaWVsZCwgc28gdGhlCj4gLQkgKiBzaXplIGlzIHRoZSBkaXN0YW5j ZSBiZXR3ZWVuIHRoZSBiYXNlIGFuZCB0aGUgdG9wIG9mIHRoZSBzdG9sZW4KPiAtCSAqIG1lbW9y eS4gV2UgYWxzbyBoYXZlIHRoZSBnZW51aW5lIGNhc2Ugd2hlcmUgYmFzZSBpcyB6ZXJvIGFuZCB0 aGVyZSdzCj4gLQkgKiBub3RoaW5nIHJlc2VydmVkLiAqLwo+IC0JaWYgKCpiYXNlID09IDApCj4g LQkJKnNpemUgPSAwOwo+IC0JZWxzZQo+IC0JCSpzaXplID0gc3RvbGVuX3RvcCAtICpiYXNlOwo+ ICsJCWJyZWFrOwo+ICsJfQo+ICB9Cj4gIAo+ICBpbnQgaTkxNV9nZW1faW5pdF9zdG9sZW4oc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiBAQCAtNDQyLDE0ICs0MzksMTQgQEAgaW50IGk5MTVfZ2Vt X2luaXRfc3RvbGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZ2VuN19nZXRfc3RvbGVu X3Jlc2VydmVkKGRldl9wcml2LCAmcmVzZXJ2ZWRfYmFzZSwKPiAgCQkJCQkgJnJlc2VydmVkX3Np emUpOwo+ICAJCWJyZWFrOwo+ICsJY2FzZSA4Ogo+ICsJCWdlbjhfZ2V0X3N0b2xlbl9yZXNlcnZl ZChkZXZfcHJpdiwgJnJlc2VydmVkX2Jhc2UsCj4gKwkJCQkJICZyZXNlcnZlZF9zaXplKTsKPiAr CQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikgfHwK PiAtCQkgICAgSVNfU0tZTEFLRShkZXZfcHJpdikgfHwgSVNfS0FCWUxBS0UoZGV2KSkKPiAtCQkJ YmR3X2dldF9zdG9sZW5fcmVzZXJ2ZWQoZGV2X3ByaXYsICZyZXNlcnZlZF9iYXNlLAo+IC0JCQkJ CQkmcmVzZXJ2ZWRfc2l6ZSk7Cj4gLQkJZWxzZQo+IC0JCQlnZW44X2dldF9zdG9sZW5fcmVzZXJ2 ZWQoZGV2X3ByaXYsICZyZXNlcnZlZF9iYXNlLAo+IC0JCQkJCQkgJnJlc2VydmVkX3NpemUpOwo+ ICsJCS8vIEZJWE1FOiBUaGlzIHNlZW1lZCBsaWtlIGdvaW5nIHRvIHdvcmsKPiArCQlnZW44X2dl dF9zdG9sZW5fcmVzZXJ2ZWQoZGV2X3ByaXYsICZyZXNlcnZlZF9iYXNlLAo+ICsJCQkJICZyZXNl cnZlZF9zaXplKTsKPiAgCQlicmVhazsKPiAgCX0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gaW5kZXggYmYyY2FkMy4uM2RjZTM3YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ IEBAIC0xNzQ4LDYgKzE3NDgsMTIgQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gICNk ZWZpbmUgUklOR19JTkRJUkVDVF9DVFhfT0ZGU0VUKGJhc2UpCV9NTUlPKChiYXNlKSsweDFjOCkg LyogZ2VuOCsgKi8KPiAgI2RlZmluZSBSSU5HX0NUWF9USU1FU1RBTVAoYmFzZSkJX01NSU8oKGJh c2UpKzB4M2E4KSAvKiBnZW44KyAqLwo+ICAKPiArLy8gNjQgYml0LCBsb3cgMzIgcHJlc2VydmVk Cj4gKyNkZWZpbmUgSU9UTEJfSU5WQUxJRChiYXNlKSBfTU1JTygoYmFzZSkrMHg1MDggKyA0KSAv KiBnZW44KyAqLwo+ICsjZGVmaW5lICAgSU9UTEJfSU5WQUxJRF9JVlQgKDE8PDMxKQo+ICsjZGVm aW5lICAgSU9UTEJfR0xPQkFMX0lOVl9SRVEgKDE8PDI4KQo+ICsjZGVmaW5lICAgSU9UTEJfSU5W QUxJRF9JQUlHICgxPDwyNSkKPiArCj4gICNkZWZpbmUgRVJST1JfR0VONglfTU1JTygweDQwYTAp Cj4gICNkZWZpbmUgR0VON19FUlJfSU5UCV9NTUlPKDB4NDQwNDApCj4gICNkZWZpbmUgICBFUlJf SU5UX1BPSVNPTgkJKDE8PDMxKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKPiBpbmRleCAxZDMxNjFiLi44NGRhZmNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYwo+IEBAIC00OTgsNyArNDk4LDI1IEBAIHN0YXRpYyB2b2lkIGludGVs X3Jpbmdfc2V0dXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAJICogYXJpc2VzOiBkbyB3ZSBzdGlsbCBuZWVkIHRoaXMgYW5kIGlmIHNvIGhvdyBzaG91bGQg d2UgZ28gYWJvdXQKPiAgCSAqIGludmFsaWRhdGluZyB0aGUgVExCPwo+ICAJICovCj4gLQlpZiAo SVNfR0VOKGRldl9wcml2LCA2LCA3KSkgewo+ICsJLyogUmVzcG9uZCB0byB0aGlzIHF1ZXN0aW9u Ogo+ICsJICogIEFjY29yZGluZyB0byBtb2JpbGUtNXRoLWdlbi1jb3JlLWZhbWlseS1kYXRhc2hl ZXQtdm9sLTIgZnJvbSBJbnRlbAo+ICsJICogIFRoZXJlIGFyZSByZWdpc3RlcnMgZm9yIGludmFs aWRhdGlvbiwgc2V0IHRob3NlIHJlZ2lzdGVycyB3aWxsCj4gKwkgKiAgY2F1c2UgdGhlIGhhcmR3 YXJlIHRvIHBlcmZvcm0gSU9UTEIgaW52YWxpZGF0aW9uLgo+ICsJICovCj4gKwlpZiAoSVNfR0VO OChkZXZfcHJpdikpIHsKPiArCQlpOTE1X3JlZ190IHJlZyA9IElPVExCX0lOVkFMSUQoZW5naW5l LT5tbWlvX2Jhc2UpOwo+ICsKPiArCQkvKiByaW5nIHNob3VsZCBiZSBpZGxlIGJlZm9yZSBpc3N1 aW5nIGEgc3luYyBmbHVzaCovCj4gKwkJV0FSTl9PTigoSTkxNV9SRUFEX01PREUoZW5naW5lKSAm IE1PREVfSURMRSkgPT0gMCk7Cj4gKwo+ICsJCUk5MTVfV1JJVEUocmVnLCAweDAgfCBJT1RMQl9J TlZBTElEX0lWVCB8IElPVExCX0dMT0JBTF9JTlZfUkVRKTsKPiArCj4gKwkJaWYgKGludGVsX3dh aXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LAo+ICsJCQkJCSAgICByZWcsIElPVExCX0lOVkFMSURf SUFJRywgMCwKPiArCQkJCQkgICAgMTAwMCkpCj4gKwkJCURSTV9FUlJPUigiJXM6IHdhaXQgZm9y IFRMQiBpbnZhbGlkYXRpb24gdGltZWQgb3V0XG4iLAo+ICsJCQkJICBlbmdpbmUtPm5hbWUpOwo+ ICsJfSBlbHNlCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIDcpKSB7Cj4gIAkJaTkxNV9yZWdfdCBy ZWcgPSBSSU5HX0lOU1RQTShlbmdpbmUtPm1taW9fYmFzZSk7Cj4gIAo+ICAJCS8qIHJpbmcgc2hv dWxkIGJlIGlkbGUgYmVmb3JlIGlzc3VpbmcgYSBzeW5jIGZsdXNoKi8KCi0tIApKYW5pIE5pa3Vs YSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934056AbcIOIPn (ORCPT ); Thu, 15 Sep 2016 04:15:43 -0400 Received: from mga11.intel.com ([192.55.52.93]:28023 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1764479AbcIOIPj (ORCPT ); Thu, 15 Sep 2016 04:15:39 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.30,338,1470726000"; d="scan'208";a="1056293384" From: Jani Nikula To: Cheng Cao , Daniel Vetter , David Airlie Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Icenowy Zheng , Cheng Cao Subject: Re: [PATCH] DRM: i915: Fix random GPU hang, Bug 156851 In-Reply-To: <20160915072732.11950-1-bobcaocheng@163.com> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20160915072732.11950-1-bobcaocheng@163.com> User-Agent: Notmuch/0.22.1+63~g648dcc7 (https://notmuchmail.org) Emacs/24.4.1 (x86_64-pc-linux-gnu) Date: Thu, 15 Sep 2016 11:15:35 +0300 Message-ID: <87d1k5r32w.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org You'll still need that commit message. See 'git log' on our driver for examples of the level of commit messages we expect. You'll also see how to reference bugs using the Bugzilla: tag. And please do file the bug where I asked, not somewhere else. BR, Jani. On Thu, 15 Sep 2016, Cheng Cao wrote: > Signed-off-by: Cheng Cao > --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 6 ++++ > drivers/gpu/drm/i915/i915_gem_stolen.c | 61 ++++++++++++++++----------------- > drivers/gpu/drm/i915/i915_reg.h | 6 ++++ > drivers/gpu/drm/i915/intel_ringbuffer.c | 20 ++++++++++- > 4 files changed, 60 insertions(+), 33 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 7a30af7..0b05dd9 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -2907,6 +2907,12 @@ static unsigned int gen8_get_total_gtt_size(u16 bdw_gmch_ctl) > if (bdw_gmch_ctl > 4) > bdw_gmch_ctl = 4; > #endif > +#ifdef CONFIG_X86_64 > + /* Limit 64b platforms to a 4GB GGTT */ > + /* DMA 4GB protection */ > + if (bdw_gmch_ctl > 8) > + bdw_gmch_ctl = 8; > +#endif > > return bdw_gmch_ctl << 20; > } > diff --git a/drivers/gpu/drm/i915/i915_gem_stolen.c b/drivers/gpu/drm/i915/i915_gem_stolen.c > index 66be299a1..da272ae 100644 > --- a/drivers/gpu/drm/i915/i915_gem_stolen.c > +++ b/drivers/gpu/drm/i915/i915_gem_stolen.c > @@ -352,47 +352,44 @@ static void gen8_get_stolen_reserved(struct drm_i915_private *dev_priv, > unsigned long *base, unsigned long *size) > { > uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED); > + unsigned long stolen_top; > + struct i915_ggtt *ggtt = &dev_priv->ggtt; > > *base = reg_val & GEN6_STOLEN_RESERVED_ADDR_MASK; > > switch (reg_val & GEN8_STOLEN_RESERVED_SIZE_MASK) { > case GEN8_STOLEN_RESERVED_1M: > - *size = 1024 * 1024; > + *size = 1 << 10 << 10; > break; > case GEN8_STOLEN_RESERVED_2M: > - *size = 2 * 1024 * 1024; > + *size = 2 << 10 << 10; > break; > case GEN8_STOLEN_RESERVED_4M: > - *size = 4 * 1024 * 1024; > + *size = 4 << 10 << 10; > break; > case GEN8_STOLEN_RESERVED_8M: > - *size = 8 * 1024 * 1024; > + *size = 8 << 10 << 10; > break; > default: > - *size = 8 * 1024 * 1024; > - MISSING_CASE(reg_val & GEN8_STOLEN_RESERVED_SIZE_MASK); > - } > -} > - > -static void bdw_get_stolen_reserved(struct drm_i915_private *dev_priv, > - unsigned long *base, unsigned long *size) > -{ > - struct i915_ggtt *ggtt = &dev_priv->ggtt; > - uint32_t reg_val = I915_READ(GEN6_STOLEN_RESERVED); > - unsigned long stolen_top; > + /* Whatever if it is a BDW device or SKL device > + * Or others devices.. > + * This way is always going to work on 5th > + * generation Intel Processer > + */ > + stolen_top = dev_priv->mm.stolen_base + ggtt->stolen_size; > > - stolen_top = dev_priv->mm.stolen_base + ggtt->stolen_size; > + *base = reg_val & GEN6_STOLEN_RESERVED_ADDR_MASK; > > - *base = reg_val & GEN6_STOLEN_RESERVED_ADDR_MASK; > + /* MLIMIT - MBASE => PEG */ > + /* -- mobile-5th-gen-core-family-datasheet-vol-2.pdf */ > + if (*base == 0) { > + *size = 0; > + MISSING_CASE(reg_val & GEN8_STOLEN_RESERVED_SIZE_MASK); > + } else > + *size = stolen_top - *base; > > - /* On these platforms, the register doesn't have a size field, so the > - * size is the distance between the base and the top of the stolen > - * memory. We also have the genuine case where base is zero and there's > - * nothing reserved. */ > - if (*base == 0) > - *size = 0; > - else > - *size = stolen_top - *base; > + break; > + } > } > > int i915_gem_init_stolen(struct drm_device *dev) > @@ -442,14 +439,14 @@ int i915_gem_init_stolen(struct drm_device *dev) > gen7_get_stolen_reserved(dev_priv, &reserved_base, > &reserved_size); > break; > + case 8: > + gen8_get_stolen_reserved(dev_priv, &reserved_base, > + &reserved_size); > + break; > default: > - if (IS_BROADWELL(dev_priv) || > - IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev)) > - bdw_get_stolen_reserved(dev_priv, &reserved_base, > - &reserved_size); > - else > - gen8_get_stolen_reserved(dev_priv, &reserved_base, > - &reserved_size); > + // FIXME: This seemed like going to work > + gen8_get_stolen_reserved(dev_priv, &reserved_base, > + &reserved_size); > break; > } > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h > index bf2cad3..3dce37b 100644 > --- a/drivers/gpu/drm/i915/i915_reg.h > +++ b/drivers/gpu/drm/i915/i915_reg.h > @@ -1748,6 +1748,12 @@ enum skl_disp_power_wells { > #define RING_INDIRECT_CTX_OFFSET(base) _MMIO((base)+0x1c8) /* gen8+ */ > #define RING_CTX_TIMESTAMP(base) _MMIO((base)+0x3a8) /* gen8+ */ > > +// 64 bit, low 32 preserved > +#define IOTLB_INVALID(base) _MMIO((base)+0x508 + 4) /* gen8+ */ > +#define IOTLB_INVALID_IVT (1<<31) > +#define IOTLB_GLOBAL_INV_REQ (1<<28) > +#define IOTLB_INVALID_IAIG (1<<25) > + > #define ERROR_GEN6 _MMIO(0x40a0) > #define GEN7_ERR_INT _MMIO(0x44040) > #define ERR_INT_POISON (1<<31) > diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c > index 1d3161b..84dafcb 100644 > --- a/drivers/gpu/drm/i915/intel_ringbuffer.c > +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c > @@ -498,7 +498,25 @@ static void intel_ring_setup_status_page(struct intel_engine_cs *engine) > * arises: do we still need this and if so how should we go about > * invalidating the TLB? > */ > - if (IS_GEN(dev_priv, 6, 7)) { > + /* Respond to this question: > + * According to mobile-5th-gen-core-family-datasheet-vol-2 from Intel > + * There are registers for invalidation, set those registers will > + * cause the hardware to perform IOTLB invalidation. > + */ > + if (IS_GEN8(dev_priv)) { > + i915_reg_t reg = IOTLB_INVALID(engine->mmio_base); > + > + /* ring should be idle before issuing a sync flush*/ > + WARN_ON((I915_READ_MODE(engine) & MODE_IDLE) == 0); > + > + I915_WRITE(reg, 0x0 | IOTLB_INVALID_IVT | IOTLB_GLOBAL_INV_REQ); > + > + if (intel_wait_for_register(dev_priv, > + reg, IOTLB_INVALID_IAIG, 0, > + 1000)) > + DRM_ERROR("%s: wait for TLB invalidation timed out\n", > + engine->name); > + } else if (IS_GEN(dev_priv, 6, 7)) { > i915_reg_t reg = RING_INSTPM(engine->mmio_base); > > /* ring should be idle before issuing a sync flush*/ -- Jani Nikula, Intel Open Source Technology Center