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:48:46 +0300 Message-ID: <8737l1r1jl.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: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" 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 CkJ1Z3ppbGxhOiBodHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05 NzgxNAoKT24gVGh1LCAxNSBTZXAgMjAxNiwgQ2hlbmcgQ2FvIDxib2JjYW9jaGVuZ0AxNjMuY29t PiB3cm90ZToKPiBTaWduZWQtb2ZmLWJ5OiBDaGVuZyBDYW8gPGJvYmNhb2NoZW5nQDE2My5jb20+ Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICB8ICA2ICsr KysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMgIHwgNjEgKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmggICAgICAgICB8ICA2ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jIHwgMjAgKysrKysrKysrKy0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRp b25zKCspLCAzMyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5j Cj4gaW5kZXggN2EzMGFmNy4uMGIwNWRkOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jCj4gQEAgLTI5MDcsNiArMjkwNywxMiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdlbjhf Z2V0X3RvdGFsX2d0dF9zaXplKHUxNiBiZHdfZ21jaF9jdGwpCj4gIAlpZiAoYmR3X2dtY2hfY3Rs ID4gNCkKPiAgCQliZHdfZ21jaF9jdGwgPSA0Owo+ICAjZW5kaWYKPiArI2lmZGVmIENPTkZJR19Y ODZfNjQKPiArCS8qIExpbWl0IDY0YiBwbGF0Zm9ybXMgdG8gYSA0R0IgR0dUVCAqLwo+ICsJLyog RE1BIDRHQiBwcm90ZWN0aW9uICovCj4gKwlpZiAoYmR3X2dtY2hfY3RsID4gOCkKPiArCQliZHdf Z21jaF9jdGwgPSA4Owo+ICsjZW5kaWYKPiAgCj4gIAlyZXR1cm4gYmR3X2dtY2hfY3RsIDw8IDIw Owo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xl bi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMKPiBpbmRleCA2NmJl Mjk5YTEuLmRhMjcyYWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fc3RvbGVuLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4u Ywo+IEBAIC0zNTIsNDcgKzM1Miw0NCBAQCBzdGF0aWMgdm9pZCBnZW44X2dldF9zdG9sZW5fcmVz ZXJ2ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgICB1bnNp Z25lZCBsb25nICpiYXNlLCB1bnNpZ25lZCBsb25nICpzaXplKQo+ICB7Cj4gIAl1aW50MzJfdCBy ZWdfdmFsID0gSTkxNV9SRUFEKEdFTjZfU1RPTEVOX1JFU0VSVkVEKTsKPiArCXVuc2lnbmVkIGxv bmcgc3RvbGVuX3RvcDsKPiArCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdn dHQ7Cj4gIAo+ICAJKmJhc2UgPSByZWdfdmFsICYgR0VONl9TVE9MRU5fUkVTRVJWRURfQUREUl9N QVNLOwo+ICAKPiAgCXN3aXRjaCAocmVnX3ZhbCAmIEdFTjhfU1RPTEVOX1JFU0VSVkVEX1NJWkVf TUFTSykgewo+ICAJY2FzZSBHRU44X1NUT0xFTl9SRVNFUlZFRF8xTToKPiAtCQkqc2l6ZSA9IDEw MjQgKiAxMDI0Owo+ICsJCSpzaXplID0gMSA8PCAxMCA8PCAxMDsKPiAgCQlicmVhazsKPiAgCWNh c2UgR0VOOF9TVE9MRU5fUkVTRVJWRURfMk06Cj4gLQkJKnNpemUgPSAyICogMTAyNCAqIDEwMjQ7 Cj4gKwkJKnNpemUgPSAyIDw8IDEwIDw8IDEwOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSBHRU44X1NU T0xFTl9SRVNFUlZFRF80TToKPiAtCQkqc2l6ZSA9IDQgKiAxMDI0ICogMTAyNDsKPiArCQkqc2l6 ZSA9IDQgPDwgMTAgPDwgMTA7Cj4gIAkJYnJlYWs7Cj4gIAljYXNlIEdFTjhfU1RPTEVOX1JFU0VS VkVEXzhNOgo+IC0JCSpzaXplID0gOCAqIDEwMjQgKiAxMDI0Owo+ICsJCSpzaXplID0gOCA8PCAx MCA8PCAxMDsKPiAgCQlicmVhazsKPiAgCWRlZmF1bHQ6Cj4gLQkJKnNpemUgPSA4ICogMTAyNCAq IDEwMjQ7Cj4gLQkJTUlTU0lOR19DQVNFKHJlZ192YWwgJiBHRU44X1NUT0xFTl9SRVNFUlZFRF9T SVpFX01BU0spOwo+IC0JfQo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBiZHdfZ2V0X3N0b2xlbl9y ZXNlcnZlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCQkgICAgdW5z aWduZWQgbG9uZyAqYmFzZSwgdW5zaWduZWQgbG9uZyAqc2l6ZSkKPiAtewo+IC0Jc3RydWN0IGk5 MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAtCXVpbnQzMl90IHJlZ192YWwgPSBJ OTE1X1JFQUQoR0VONl9TVE9MRU5fUkVTRVJWRUQpOwo+IC0JdW5zaWduZWQgbG9uZyBzdG9sZW5f dG9wOwo+ICsJCS8qIFdoYXRldmVyIGlmIGl0IGlzIGEgQkRXIGRldmljZSBvciBTS0wgZGV2aWNl Cj4gKwkJICogT3Igb3RoZXJzIGRldmljZXMuLgo+ICsJCSAqIFRoaXMgd2F5IGlzIGFsd2F5cyBn b2luZyB0byB3b3JrIG9uIDV0aAo+ICsJCSAqIGdlbmVyYXRpb24gSW50ZWwgUHJvY2Vzc2VyCj4g KwkJICovCj4gKwkJc3RvbGVuX3RvcCA9IGRldl9wcml2LT5tbS5zdG9sZW5fYmFzZSArIGdndHQt PnN0b2xlbl9zaXplOwo+ICAKPiAtCXN0b2xlbl90b3AgPSBkZXZfcHJpdi0+bW0uc3RvbGVuX2Jh c2UgKyBnZ3R0LT5zdG9sZW5fc2l6ZTsKPiArCQkqYmFzZSA9IHJlZ192YWwgJiBHRU42X1NUT0xF Tl9SRVNFUlZFRF9BRERSX01BU0s7Cj4gIAo+IC0JKmJhc2UgPSByZWdfdmFsICYgR0VONl9TVE9M RU5fUkVTRVJWRURfQUREUl9NQVNLOwo+ICsJCS8qIE1MSU1JVCAtIE1CQVNFID0+IFBFRyAqLwo+ ICsJCS8qICAgLS0gbW9iaWxlLTV0aC1nZW4tY29yZS1mYW1pbHktZGF0YXNoZWV0LXZvbC0yLnBk ZiAqLwo+ICsJCWlmICgqYmFzZSA9PSAwKSB7Cj4gKwkJCSpzaXplID0gMDsKPiArCQkJTUlTU0lO R19DQVNFKHJlZ192YWwgJiBHRU44X1NUT0xFTl9SRVNFUlZFRF9TSVpFX01BU0spOwo+ICsJCX0g ZWxzZQo+ICsJCQkqc2l6ZSA9IHN0b2xlbl90b3AgLSAqYmFzZTsKPiAgCj4gLQkvKiBPbiB0aGVz ZSBwbGF0Zm9ybXMsIHRoZSByZWdpc3RlciBkb2Vzbid0IGhhdmUgYSBzaXplIGZpZWxkLCBzbyB0 aGUKPiAtCSAqIHNpemUgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIGJhc2UgYW5kIHRoZSB0 b3Agb2YgdGhlIHN0b2xlbgo+IC0JICogbWVtb3J5LiBXZSBhbHNvIGhhdmUgdGhlIGdlbnVpbmUg Y2FzZSB3aGVyZSBiYXNlIGlzIHplcm8gYW5kIHRoZXJlJ3MKPiAtCSAqIG5vdGhpbmcgcmVzZXJ2 ZWQuICovCj4gLQlpZiAoKmJhc2UgPT0gMCkKPiAtCQkqc2l6ZSA9IDA7Cj4gLQllbHNlCj4gLQkJ KnNpemUgPSBzdG9sZW5fdG9wIC0gKmJhc2U7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gIH0KPiAgCj4g IGludCBpOTE1X2dlbV9pbml0X3N0b2xlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+IEBAIC00 NDIsMTQgKzQzOSwxNCBAQCBpbnQgaTkxNV9nZW1faW5pdF9zdG9sZW4oc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgCQlnZW43X2dldF9zdG9sZW5fcmVzZXJ2ZWQoZGV2X3ByaXYsICZyZXNlcnZl ZF9iYXNlLAo+ICAJCQkJCSAmcmVzZXJ2ZWRfc2l6ZSk7Cj4gIAkJYnJlYWs7Cj4gKwljYXNlIDg6 Cj4gKwkJZ2VuOF9nZXRfc3RvbGVuX3Jlc2VydmVkKGRldl9wcml2LCAmcmVzZXJ2ZWRfYmFzZSwK PiArCQkJCQkgJnJlc2VydmVkX3NpemUpOwo+ICsJCWJyZWFrOwo+ICAJZGVmYXVsdDoKPiAtCQlp ZiAoSVNfQlJPQURXRUxMKGRldl9wcml2KSB8fAo+IC0JCSAgICBJU19TS1lMQUtFKGRldl9wcml2 KSB8fCBJU19LQUJZTEFLRShkZXYpKQo+IC0JCQliZHdfZ2V0X3N0b2xlbl9yZXNlcnZlZChkZXZf cHJpdiwgJnJlc2VydmVkX2Jhc2UsCj4gLQkJCQkJCSZyZXNlcnZlZF9zaXplKTsKPiAtCQllbHNl Cj4gLQkJCWdlbjhfZ2V0X3N0b2xlbl9yZXNlcnZlZChkZXZfcHJpdiwgJnJlc2VydmVkX2Jhc2Us Cj4gLQkJCQkJCSAmcmVzZXJ2ZWRfc2l6ZSk7Cj4gKwkJLy8gRklYTUU6IFRoaXMgc2VlbWVkIGxp a2UgZ29pbmcgdG8gd29yawo+ICsJCWdlbjhfZ2V0X3N0b2xlbl9yZXNlcnZlZChkZXZfcHJpdiwg JnJlc2VydmVkX2Jhc2UsCj4gKwkJCQkgJnJlc2VydmVkX3NpemUpOwo+ICAJCWJyZWFrOwo+ICAJ fQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCBiZjJjYWQzLi4zZGNlMzdiIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTE3NDgsNiArMTc0OCwxMiBAQCBlbnVt IHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgI2RlZmluZSBSSU5HX0lORElSRUNUX0NUWF9PRkZT RVQoYmFzZSkJX01NSU8oKGJhc2UpKzB4MWM4KSAvKiBnZW44KyAqLwo+ICAjZGVmaW5lIFJJTkdf Q1RYX1RJTUVTVEFNUChiYXNlKQlfTU1JTygoYmFzZSkrMHgzYTgpIC8qIGdlbjgrICovCj4gIAo+ ICsvLyA2NCBiaXQsIGxvdyAzMiBwcmVzZXJ2ZWQKPiArI2RlZmluZSBJT1RMQl9JTlZBTElEKGJh c2UpIF9NTUlPKChiYXNlKSsweDUwOCArIDQpIC8qIGdlbjgrICovCj4gKyNkZWZpbmUgICBJT1RM Ql9JTlZBTElEX0lWVCAoMTw8MzEpCj4gKyNkZWZpbmUgICBJT1RMQl9HTE9CQUxfSU5WX1JFUSAo MTw8MjgpCj4gKyNkZWZpbmUgICBJT1RMQl9JTlZBTElEX0lBSUcgKDE8PDI1KQo+ICsKPiAgI2Rl ZmluZSBFUlJPUl9HRU42CV9NTUlPKDB4NDBhMCkKPiAgI2RlZmluZSBHRU43X0VSUl9JTlQJX01N SU8oMHg0NDA0MCkKPiAgI2RlZmluZSAgIEVSUl9JTlRfUE9JU09OCQkoMTw8MzEpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IDFkMzE2MWIuLjg0ZGFmY2Ig MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTQ5OCw3 ICs0OTgsMjUgQEAgc3RhdGljIHZvaWQgaW50ZWxfcmluZ19zZXR1cF9zdGF0dXNfcGFnZShzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAkgKiBhcmlzZXM6IGRvIHdlIHN0aWxsIG5l ZWQgdGhpcyBhbmQgaWYgc28gaG93IHNob3VsZCB3ZSBnbyBhYm91dAo+ICAJICogaW52YWxpZGF0 aW5nIHRoZSBUTEI/Cj4gIAkgKi8KPiAtCWlmIChJU19HRU4oZGV2X3ByaXYsIDYsIDcpKSB7Cj4g KwkvKiBSZXNwb25kIHRvIHRoaXMgcXVlc3Rpb246Cj4gKwkgKiAgQWNjb3JkaW5nIHRvIG1vYmls ZS01dGgtZ2VuLWNvcmUtZmFtaWx5LWRhdGFzaGVldC12b2wtMiBmcm9tIEludGVsCj4gKwkgKiAg VGhlcmUgYXJlIHJlZ2lzdGVycyBmb3IgaW52YWxpZGF0aW9uLCBzZXQgdGhvc2UgcmVnaXN0ZXJz IHdpbGwKPiArCSAqICBjYXVzZSB0aGUgaGFyZHdhcmUgdG8gcGVyZm9ybSBJT1RMQiBpbnZhbGlk YXRpb24uCj4gKwkgKi8KPiArCWlmIChJU19HRU44KGRldl9wcml2KSkgewo+ICsJCWk5MTVfcmVn X3QgcmVnID0gSU9UTEJfSU5WQUxJRChlbmdpbmUtPm1taW9fYmFzZSk7Cj4gKwo+ICsJCS8qIHJp bmcgc2hvdWxkIGJlIGlkbGUgYmVmb3JlIGlzc3VpbmcgYSBzeW5jIGZsdXNoKi8KPiArCQlXQVJO X09OKChJOTE1X1JFQURfTU9ERShlbmdpbmUpICYgTU9ERV9JRExFKSA9PSAwKTsKPiArCj4gKwkJ STkxNV9XUklURShyZWcsIDB4MCB8IElPVExCX0lOVkFMSURfSVZUIHwgSU9UTEJfR0xPQkFMX0lO Vl9SRVEpOwo+ICsKPiArCQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4g KwkJCQkJICAgIHJlZywgSU9UTEJfSU5WQUxJRF9JQUlHLCAwLAo+ICsJCQkJCSAgICAxMDAwKSkK PiArCQkJRFJNX0VSUk9SKCIlczogd2FpdCBmb3IgVExCIGludmFsaWRhdGlvbiB0aW1lZCBvdXRc biIsCj4gKwkJCQkgIGVuZ2luZS0+bmFtZSk7Cj4gKwl9IGVsc2UJaWYgKElTX0dFTihkZXZfcHJp diwgNiwgNykpIHsKPiAgCQlpOTE1X3JlZ190IHJlZyA9IFJJTkdfSU5TVFBNKGVuZ2luZS0+bW1p b19iYXNlKTsKPiAgCj4gIAkJLyogcmluZyBzaG91bGQgYmUgaWRsZSBiZWZvcmUgaXNzdWluZyBh IHN5bmMgZmx1c2gqLwoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9s b2d5IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934159AbcIOIs5 (ORCPT ); Thu, 15 Sep 2016 04:48:57 -0400 Received: from mga02.intel.com ([134.134.136.20]:52821 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933335AbcIOIsu (ORCPT ); Thu, 15 Sep 2016 04:48:50 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.30,338,1470726000"; d="scan'208";a="1056310804" 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:48:46 +0300 Message-ID: <8737l1r1jl.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 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97814 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