From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: i915 regression in kernel 4.10 Date: Tue, 20 Dec 2016 11:50:28 -0500 Message-ID: <20161220165028.GE22440@char.us.oracle.com> References: <7abf8559-3aa7-af3a-8dc1-1dee42019fcd@suse.com> <20161219122934.GM29871@nuc-i3427.alporthouse.com> <3de0be86-c0bc-6bfd-defa-745b589d7bd9@suse.com> <20161220144246.GA23668@char.us.oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20161220144246.GA23668@char.us.oracle.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Juergen Gross Cc: intel-gfx , Linux Kernel Mailing List , dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, Boris Ostrovsky List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBEZWMgMjAsIDIwMTYgYXQgMDk6NDI6NDZBTSAtMDUwMCwgS29ucmFkIFJ6ZXN6dXRl ayBXaWxrIHdyb3RlOgo+IE9uIE1vbiwgRGVjIDE5LCAyMDE2IGF0IDAzOjE2OjQ0UE0gKzAxMDAs IEp1ZXJnZW4gR3Jvc3Mgd3JvdGU6Cj4gPiBPbiAxOS8xMi8xNiAxMzoyOSwgQ2hyaXMgV2lsc29u IHdyb3RlOgo+ID4gPiBPbiBNb24sIERlYyAxOSwgMjAxNiBhdCAxMjozOToxNlBNICswMTAwLCBK dWVyZ2VuIEdyb3NzIHdyb3RlOgo+ID4gPj4gV2l0aCByZWNlbnQgNC4xMCBrZXJuZWwgdGhlIGdy YXBoaWNzIGlzbid0IGNvbWluZyB1cCB1bmRlciBYZW4uIEZpcnN0Cj4gPiA+PiBmYWlsdXJlIG1l c3NhZ2UgaXM6Cj4gPiA+Pgo+ID4gPj4gWyAgIDQ2LjY1NjY0OV0gaTkxNSAwMDAwOjAwOjAyLjA6 IHN3aW90bGIgYnVmZmVyIGlzIGZ1bGwgKHN6OiAxNjMwMjA4IGJ5dGVzKQo+ID4gPiAKPiA+ID4g RG8gd2UgZ2V0IGEgc2lsZW50IGZhaWx1cmU/IGk5MTVfZ2VtX2d0dF9wcmVwYXJlX3BhZ2VzKCkg aXMgd2hlcmUgd2UKPiA+ID4gY2FsbCBkbWFfbWFwX3NnKCkgYW5kIHBhc3MgdGhlIHNnIHRvIHN3 aW90bGIgKGluIHRoaXMgY2FzZSkgZm9yCj4gPiA+IHJlbWFwcGluZywgYW5kIHdlIGRvIGNoZWNr IGZvciBhbiBlcnJvciB2YWx1ZSBvZiAwLiBBZnRlciB0aGF0IGVycm9yLAo+ID4gPiBTV0lPVExC X01BUF9FUlJPUiBpcyBwcm9wYWdhdGVkIGJhY2sgYW5kIGNvbnZlcnRlZCB0byAwIGZvcgo+ID4g PiBkbWFfbWFwX3NnKCkuIFRoYXQgbG9va3MgdmFsaWQsIGFuZCB3ZSBzaG91bGQgcmVwb3J0IEVO T01FTSBiYWNrIHRvIHRoZQo+ID4gPiBjYWxsZXIuCj4gPiA+IAo+ID4gPj4gTGF0ZXIgSSBzZWUg c3BsYXRzIGxpa2U6Cj4gPiA+Pgo+ID4gPj4gWyAgIDQ5LjM5MzU4M10gZ2VuZXJhbCBwcm90ZWN0 aW9uIGZhdWx0OiAwMDAwIFsjMV0gU01QCj4gPiA+IAo+ID4gPiBXaGF0IHdhcyB0aGUgZmF1bHRp bmcgYWRkcmVzcz8gUkFYIGlzIHBhcnRpY3VsYXJseSBub24tcG9pbnRlci1saWtlIHNvIEkKPiA+ ID4gd29uZGVyIGlmIHdlIHdhbGtlZCBvbnRvIGFuIHVuaW5pdGlhbGlzZWQgcG9ydGlvbiBvZiB0 aGUgc2d0YWJsZS4gV2UgbWF5Cj4gPiA+IGhhdmUgdHJpcHBlZCBvdmVyIGEgYnVnIGluIG91ciBz Z19wYWdlIGl0ZXJhdG9yLgo+ID4gCj4gPiBEdXJpbmcgdGhlIGJpc2VjdCBwcm9jZXNzIHRoZXJl IGhhdmUgYmVlbiBlaXRoZXIgR1Agb3IgTlVMTCBwb2ludGVyCj4gPiBkZXJlZmVyZW5jZXMgb3Ig b3RoZXIgcGFnZSBmYXVsdHMuIFR5cGljYWwgYWRkcmVzc2VzIHdoZXJlOgo+ID4gCj4gPiB4ZW5f c3dpb3RsYl91bm1hcF9zZ19hdHRycysweDFmLzB4NTA6IGFjY2VzcyB0byAwMDAwMDAwMDAwMDAw MDE4Cj4gPiB4ZW5fc3dpb3RsYl91bm1hcF9zZ19hdHRycysweDFmLzB4NTA6IGFjY2VzcyB0byAw MDAwMDAwMDAzMDIwMTE4Cj4gPiAKPiA+ID4gCj4gPiA+IFRoZSBhdHRhY2hlZCBwYXRjaCBzaG91 bGQgcHJldmVudCBhbiBlYXJseSBFTk9NRU0gZm9sbG93aW5nIHRoZSBzd2lvdGxiCj4gPiA+IGFs bG9jYXRpb24gZmFpbHVyZS4gQnV0IEkgc3VzcGVjdCB0aGF0IHdlIHdpbGwgc3RpbGwgYmUgdHJp cHBpbmcgdXAgdGhlCj4gPiA+IGZhaWx1cmUgaW4gdGhlIHNnIHdhbGtlciB3aGVuIGJpbmRpbmcg dG8gdGhlIEdQVS4KPiA+ID4gLUNocmlzCj4gPiA+IAo+ID4gCj4gPiBUaGUgcGF0Y2ggaXMgd29y a2luZyBub3QgdG9vIGJhZC4gOi0pCj4gPiAKPiA+IFN0aWxsIHNldmVyYWwgInN3aW90bGIgYnVm ZmVyIGlzIGZ1bGwiIG1lc3NhZ2VzIChzb21lIHdpdGggc3o6LCBtb3N0Cj4gPiB3aXRob3V0KSwg YnV0IG5vIGZhdWx0cyBhbnkgbW9yZSAobmVpdGhlciBHUCBub3IgTlVMTCBwb2ludGVyCj4gPiBk ZXJlZmVyZW5jZSkuIEdyYXBoaWNhbCBsb2dpbiBpcyB3b3JraW5nIG5vdy4KPiAKPiAKPiBJIHRo aW5rIEkga25vdyB3aHkuIFRoZSBvcHRpbWl6YXRpb24gdGhhdCB3YXMgYWRkZWQgYXNzdW1lcyB0 aGF0Cj4gYnVzIGFkZHJlc3NlcyBpcyB0aGUgc2FtZSBhcyBwaHlzaWNhbCBhZGRyZXNzLiBIZW5j ZSBpdCBwYWNrcyBhbGwKPiBvZiB0aGUgdmlydHVhbCBhZGRyZXNzZXMgaW4gdGhlIHNnLCBhbmQg aGFuZHMgaXQgb2ZmIHRvIFNXSU9UTEIKPiB3aGljaCB3YWxrcyBlYWNoIG9uZSBhbmQgcmVhbGl6 ZXMgdGhhdCBpdCBoYXMgdG8gdXNlIHRoZSBib3VuY2UKPiBidWZmZXIuCj4gCj4gSSBhbSB3b25k ZXJpbmcgaWYgd291bGQgbWFrZSBzZW5zZSB0byBwdWxsICdzd2lvdGxiX21heF9zaXplJyBpbnNp ZGUKPiBvZiBTV0lPVExCIGFuZCBtYWtlIGl0IGFuIGxpYnJhcnktaXNoIC0gc28gWGVuLVNXSU9U TEIgY2FuIHJlZ2lzdGVyCj4gYXMgd2VsbCBhbmQgcmVwb3J0IHNheSB0aGF0IGl0IGNhbiBvbmx5 IHByb3ZpZGUgb25lIHBhZ2UKPiAodW5sZXNzIGl0IGlzIHJ1bm5pbmcgdW5kZXIgYmFyZW10YWwp Lgo+IAo+IE9yIG1ha2UgdGhlIHVzYWdlIG9mICdtYXhfc2VnZW1lbnQnIGFuZCAncGFnZV90b19w Zm4ocGFnZSkgIT0gbGFzdF9wZm4gKyAxJwo+IGluIGk5MTVfZ2VtX29iamVjdF9HZXRfcGFnZXNf Z3R0IHVzZSBzb21ldGhpbmcgc2ltaWxhciB0byB4ZW5fYmlvdmVjX3BoeXNfbWVyZ2VhYmxlPwoK Q2hyaXMsCgpJIHdhcyB0aGlua2luZyBvZiBzb21ldGhpbmcgbGlrZSB0aGlzICh3aGljaCBKdWVy Z2VuIGhhcyBhbHJlYWR5IHRlc3RlZCkuCgoKRnJvbSBmMTk2ZjEyOTRmZDI1ZjE0MDJjM2RkMTIz MWJhYmI4ZDdmNWRiMmU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLb25yYWQgUnpl c3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkRhdGU6IFR1ZSwgMjAgRGVjIDIw MTYgMTA6MDI6MDIgLTA1MDAKU3ViamVjdDogW1BBVENIXSBzd2lvdGxiOiBFeHBvcnQgc3dpb3Rs Yl9tYXhfc2VnbWVudCB0byB1c2VycwoKU28gdGhleSBjYW4gZmlndXJlIG91dCB3aGF0IGlzIHRo ZSBvcHRpbWFsIG51bWJlciBvZiBwYWdlcwp0aGF0IGNhbiBiZSBjb250aW5nb3VzbHkgc3RpdGNo ZWQgdG9nZXRoZXIgd2l0aG91dCBmZWFyIG9mCmJvdW5jZSBidWZmZXIuCgpXZSBhbHNvIGV4cG9z ZSBhbiBtZWNoYW5pc20gZm9yIHN1Yi11c2VycyBvZiBTV0lPVExCIEFQSSwgc3VjaAphcyBYZW4t U1dJT1RMQiB0byBzZXQgdGhlIG1heCBzZWdtZW50IHZhbHVlLiBBbmQgbGFzdGx5CmlmIHN3aW90 bGI9Zm9yY2UgaXMgc2V0ICh3aGljaCBtYW5kYXRlcyB3ZSBib3VuY2UgYnVmZmVyIGV2ZXJ5dGhp bmcpCndlIHNldCBtYXhfc2VnbWVudCBzbyBhdCBsZWFzdCB3ZSBjYW4gYm91bmNlIGJ1ZmZlciBv bmUgNEsgcGFnZQppbnN0ZWFkIG9mIGEgZ2lhbnQgNTEyS0Igb25lIGZvciB3aGljaCB3ZSBtYXkg bm90IGhhdmUgc3BhY2UuCgpSZXBvcnRlZC1hbmQtVGVzdGVkLWJ5OiBKdWVyZ2VuIEdyb3NzIDxq Z3Jvc3NAc3VzZS5jb20+ClNpZ25lZC1vZmYtYnk6IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29u cmFkLndpbGtAb3JhY2xlLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j IHwgMTEgKy0tLS0tLS0tLS0KIGRyaXZlcnMveGVuL3N3aW90bGIteGVuLmMgICAgICAgfCAgNCAr KysrCiBpbmNsdWRlL2xpbnV4L3N3aW90bGIuaCAgICAgICAgIHwgIDMgKysrCiBsaWIvc3dpb3Rs Yi5jICAgICAgICAgICAgICAgICAgIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKaW5kZXggZDBkY2FmMy4uMTE1ZmEzOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCkBAIC0yMjkwLDE1ICsyMjkwLDYgQEAgdm9pZCBfX2k5MTVfZ2VtX29iamVjdF9wdXRf cGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAltdXRleF91bmxvY2soJm9i ai0+bW0ubG9jayk7CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgc3dpb3RsYl9tYXhfc2l6ZSh2 b2lkKQotewotI2lmIElTX0VOQUJMRUQoQ09ORklHX1NXSU9UTEIpCi0JcmV0dXJuIHJvdW5kZG93 bihzd2lvdGxiX25yX3RibCgpIDw8IElPX1RMQl9TSElGVCwgUEFHRV9TSVpFKTsKLSNlbHNlCi0J cmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQogc3RhdGljIHZvaWQgaTkxNV9zZ190cmltKHN0cnVjdCBz Z190YWJsZSAqb3JpZ19zdCkKIHsKIAlzdHJ1Y3Qgc2dfdGFibGUgbmV3X3N0OwpAQCAtMjM0NSw3 ICsyMzM2LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlc19ndHQoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKIAlHRU1fQlVHX09OKG9iai0+YmFzZS5yZWFkX2RvbWFpbnMgJiBJ OTE1X0dFTV9HUFVfRE9NQUlOUyk7CiAJR0VNX0JVR19PTihvYmotPmJhc2Uud3JpdGVfZG9tYWlu ICYgSTkxNV9HRU1fR1BVX0RPTUFJTlMpOwogCi0JbWF4X3NlZ21lbnQgPSBzd2lvdGxiX21heF9z aXplKCk7CisJbWF4X3NlZ21lbnQgPSBzd2lvdGxiX21heF9zZWdtZW50KCk7CiAJaWYgKCFtYXhf c2VnbWVudCkKIAkJbWF4X3NlZ21lbnQgPSByb3VuZGRvd24oVUlOVF9NQVgsIFBBR0VfU0laRSk7 CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMveGVuL3N3aW90bGIteGVuLmMgYi9kcml2ZXJzL3hlbi9z d2lvdGxiLXhlbi5jCmluZGV4IGFiYTEyMDAuLmY5MDVkNmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv eGVuL3N3aW90bGIteGVuLmMKKysrIGIvZHJpdmVycy94ZW4vc3dpb3RsYi14ZW4uYwpAQCAtMjc1 LDYgKzI3NSwxMCBAQCBpbnQgX19yZWYgeGVuX3N3aW90bGJfaW5pdChpbnQgdmVyYm9zZSwgYm9v bCBlYXJseSkKIAkJcmMgPSAwOwogCX0gZWxzZQogCQlyYyA9IHN3aW90bGJfbGF0ZV9pbml0X3dp dGhfdGJsKHhlbl9pb190bGJfc3RhcnQsIHhlbl9pb190bGJfbnNsYWJzKTsKKworCWlmICghcmMp CisJCXN3aW90bGJfc2V0X21heF9zZWdtZW50KFBBR0VfU0laRSk7CisKIAlyZXR1cm4gcmM7CiBl cnJvcjoKIAlpZiAocmVwZWF0LS0pIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3dpb3Rs Yi5oIGIvaW5jbHVkZS9saW51eC9zd2lvdGxiLmgKaW5kZXggZDljODRhOS4uZDdlYWNkOCAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zd2lvdGxiLmgKKysrIGIvaW5jbHVkZS9saW51eC9zd2lv dGxiLmgKQEAgLTExNCwxMSArMTE0LDE0IEBAIHN3aW90bGJfZG1hX3N1cHBvcnRlZChzdHJ1Y3Qg ZGV2aWNlICpod2RldiwgdTY0IG1hc2spOwogCiAjaWZkZWYgQ09ORklHX1NXSU9UTEIKIGV4dGVy biB2b2lkIF9faW5pdCBzd2lvdGxiX2ZyZWUodm9pZCk7Cit1bnNpZ25lZCBpbnQgc3dpb3RsYl9t YXhfc2VnbWVudCh2b2lkKTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIHZvaWQgc3dpb3RsYl9mcmVl KHZvaWQpIHsgfQordW5zaWduZWQgaW50IHN3aW90bGJfbWF4X3NlZ21lbnQodm9pZCkgeyByZXR1 cm4gMDsgfQogI2VuZGlmCiAKIGV4dGVybiB2b2lkIHN3aW90bGJfcHJpbnRfaW5mbyh2b2lkKTsK IGV4dGVybiBpbnQgaXNfc3dpb3RsYl9idWZmZXIocGh5c19hZGRyX3QgcGFkZHIpOworZXh0ZXJu IHZvaWQgc3dpb3RsYl9zZXRfbWF4X3NlZ21lbnQodW5zaWduZWQgaW50KTsKIAogI2VuZGlmIC8q IF9fTElOVVhfU1dJT1RMQl9IICovCmRpZmYgLS1naXQgYS9saWIvc3dpb3RsYi5jIGIvbGliL3N3 aW90bGIuYwppbmRleCA5ZGVmNzM4Li45NzViOGZjIDEwMDY0NAotLS0gYS9saWIvc3dpb3RsYi5j CisrKyBiL2xpYi9zd2lvdGxiLmMKQEAgLTgzLDYgKzgzLDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBp bnQgKmlvX3RsYl9saXN0Owogc3RhdGljIHVuc2lnbmVkIGludCBpb190bGJfaW5kZXg7CiAKIC8q CisgKiBNYXggc2VnbWVudCB0aGF0IHdlIGNhbiBwcm92aWRlIHdoaWNoIChpZiBwYWdlcyBhcmUg Y29udGluZ291cykgd2lsbAorICogbm90IGJlIGJvdW5jZWQgKHVubGVzcyBTV0lPVExCX0ZPUkNF IGlzIHNldCkuCisgKi8KK3Vuc2lnbmVkIGludCBtYXhfc2VnbWVudDsKKworLyoKICAqIFdlIG5l ZWQgdG8gc2F2ZSBhd2F5IHRoZSBvcmlnaW5hbCBhZGRyZXNzIGNvcnJlc3BvbmRpbmcgdG8gYSBt YXBwZWQgZW50cnkKICAqIGZvciB0aGUgc3luYyBvcGVyYXRpb25zLgogICovCkBAIC0xMjQsNiAr MTMwLDIwIEBAIHVuc2lnbmVkIGxvbmcgc3dpb3RsYl9ucl90Ymwodm9pZCkKIH0KIEVYUE9SVF9T WU1CT0xfR1BMKHN3aW90bGJfbnJfdGJsKTsKIAordW5zaWduZWQgaW50IHN3aW90bGJfbWF4X3Nl Z21lbnQodm9pZCkKK3sKKwlyZXR1cm4gbWF4X3NlZ21lbnQ7Cit9CitFWFBPUlRfU1lNQk9MX0dQ TChzd2lvdGxiX21heF9zZWdtZW50KTsKKwordm9pZCBzd2lvdGxiX3NldF9tYXhfc2VnbWVudCh1 bnNpZ25lZCBpbnQgdmFsKQoreworCWlmIChzd2lvdGxiX2ZvcmNlID09IFNXSU9UTEJfRk9SQ0Up CisJCW1heF9zZWdtZW50ID0gMTsKKwllbHNlCisJCW1heF9zZWdtZW50ID0gcm91bmRkb3duKHZh bCwgUEFHRV9TSVpFKTsKK30KKwogLyogZGVmYXVsdCB0byA2NE1CICovCiAjZGVmaW5lIElPX1RM Ql9ERUZBVUxUX1NJWkUgKDY0VUw8PDIwKQogdW5zaWduZWQgbG9uZyBzd2lvdGxiX3NpemVfb3Jf ZGVmYXVsdCh2b2lkKQpAQCAtMjA1LDYgKzIyNSw3IEBAIGludCBfX2luaXQgc3dpb3RsYl9pbml0 X3dpdGhfdGJsKGNoYXIgKnRsYiwgdW5zaWduZWQgbG9uZyBuc2xhYnMsIGludCB2ZXJib3NlKQog CWlmICh2ZXJib3NlKQogCQlzd2lvdGxiX3ByaW50X2luZm8oKTsKIAorCXN3aW90bGJfc2V0X21h eF9zZWdtZW50KGlvX3RsYl9uc2xhYnMgPDwgSU9fVExCX1NISUZUKTsKIAlyZXR1cm4gMDsKIH0K IApAQCAtMjgzLDYgKzMwNCw3IEBAIHN3aW90bGJfbGF0ZV9pbml0X3dpdGhfZGVmYXVsdF9zaXpl KHNpemVfdCBkZWZhdWx0X3NpemUpCiAJcmMgPSBzd2lvdGxiX2xhdGVfaW5pdF93aXRoX3RibCh2 c3RhcnQsIGlvX3RsYl9uc2xhYnMpOwogCWlmIChyYykKIAkJZnJlZV9wYWdlcygodW5zaWduZWQg bG9uZyl2c3RhcnQsIG9yZGVyKTsKKwogCXJldHVybiByYzsKIH0KIApAQCAtMzM3LDYgKzM1OSw4 IEBAIHN3aW90bGJfbGF0ZV9pbml0X3dpdGhfdGJsKGNoYXIgKnRsYiwgdW5zaWduZWQgbG9uZyBu c2xhYnMpCiAKIAlsYXRlX2FsbG9jID0gMTsKIAorCXN3aW90bGJfc2V0X21heF9zZWdtZW50KGlv X3RsYl9uc2xhYnMgPDwgSU9fVExCX1NISUZUKTsKKwogCXJldHVybiAwOwogCiBjbGVhbnVwNDoK QEAgLTM1MSw2ICszNzUsNyBAQCBzd2lvdGxiX2xhdGVfaW5pdF93aXRoX3RibChjaGFyICp0bGIs IHVuc2lnbmVkIGxvbmcgbnNsYWJzKQogCWlvX3RsYl9lbmQgPSAwOwogCWlvX3RsYl9zdGFydCA9 IDA7CiAJaW9fdGxiX25zbGFicyA9IDA7CisJbWF4X3NlZ21lbnQgPSAwOwogCXJldHVybiAtRU5P TUVNOwogfQogCkBAIC0zNzksNiArNDA0LDcgQEAgdm9pZCBfX2luaXQgc3dpb3RsYl9mcmVlKHZv aWQpCiAJCQkJICAgUEFHRV9BTElHTihpb190bGJfbnNsYWJzIDw8IElPX1RMQl9TSElGVCkpOwog CX0KIAlpb190bGJfbnNsYWJzID0gMDsKKwltYXhfc2VnbWVudCA9IDA7CiB9CiAKIGludCBpc19z d2lvdGxiX2J1ZmZlcihwaHlzX2FkZHJfdCBwYWRkcikKLS0gCjIuNy40CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S964808AbcLTQvk (ORCPT ); Tue, 20 Dec 2016 11:51:40 -0500 Received: from aserp1040.oracle.com ([141.146.126.69]:41821 "EHLO aserp1040.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753976AbcLTQvi (ORCPT ); Tue, 20 Dec 2016 11:51:38 -0500 Date: Tue, 20 Dec 2016 11:50:28 -0500 From: Konrad Rzeszutek Wilk To: Juergen Gross Cc: Chris Wilson , Linux Kernel Mailing List , dri-devel@lists.freedesktop.org, intel-gfx , airlied@linux.ie, jani.nikula@linux.intel.com, daniel.vetter@intel.com, Boris Ostrovsky Subject: Re: i915 regression in kernel 4.10 Message-ID: <20161220165028.GE22440@char.us.oracle.com> References: <7abf8559-3aa7-af3a-8dc1-1dee42019fcd@suse.com> <20161219122934.GM29871@nuc-i3427.alporthouse.com> <3de0be86-c0bc-6bfd-defa-745b589d7bd9@suse.com> <20161220144246.GA23668@char.us.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20161220144246.GA23668@char.us.oracle.com> User-Agent: Mutt/1.7.1 (2016-10-04) X-Source-IP: userv0021.oracle.com [156.151.31.71] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Dec 20, 2016 at 09:42:46AM -0500, Konrad Rzeszutek Wilk wrote: > On Mon, Dec 19, 2016 at 03:16:44PM +0100, Juergen Gross wrote: > > On 19/12/16 13:29, Chris Wilson wrote: > > > On Mon, Dec 19, 2016 at 12:39:16PM +0100, Juergen Gross wrote: > > >> With recent 4.10 kernel the graphics isn't coming up under Xen. First > > >> failure message is: > > >> > > >> [ 46.656649] i915 0000:00:02.0: swiotlb buffer is full (sz: 1630208 bytes) > > > > > > Do we get a silent failure? i915_gem_gtt_prepare_pages() is where we > > > call dma_map_sg() and pass the sg to swiotlb (in this case) for > > > remapping, and we do check for an error value of 0. After that error, > > > SWIOTLB_MAP_ERROR is propagated back and converted to 0 for > > > dma_map_sg(). That looks valid, and we should report ENOMEM back to the > > > caller. > > > > > >> Later I see splats like: > > >> > > >> [ 49.393583] general protection fault: 0000 [#1] SMP > > > > > > What was the faulting address? RAX is particularly non-pointer-like so I > > > wonder if we walked onto an uninitialised portion of the sgtable. We may > > > have tripped over a bug in our sg_page iterator. > > > > During the bisect process there have been either GP or NULL pointer > > dereferences or other page faults. Typical addresses where: > > > > xen_swiotlb_unmap_sg_attrs+0x1f/0x50: access to 0000000000000018 > > xen_swiotlb_unmap_sg_attrs+0x1f/0x50: access to 0000000003020118 > > > > > > > > The attached patch should prevent an early ENOMEM following the swiotlb > > > allocation failure. But I suspect that we will still be tripping up the > > > failure in the sg walker when binding to the GPU. > > > -Chris > > > > > > > The patch is working not too bad. :-) > > > > Still several "swiotlb buffer is full" messages (some with sz:, most > > without), but no faults any more (neither GP nor NULL pointer > > dereference). Graphical login is working now. > > > I think I know why. The optimization that was added assumes that > bus addresses is the same as physical address. Hence it packs all > of the virtual addresses in the sg, and hands it off to SWIOTLB > which walks each one and realizes that it has to use the bounce > buffer. > > I am wondering if would make sense to pull 'swiotlb_max_size' inside > of SWIOTLB and make it an library-ish - so Xen-SWIOTLB can register > as well and report say that it can only provide one page > (unless it is running under baremtal). > > Or make the usage of 'max_segement' and 'page_to_pfn(page) != last_pfn + 1' > in i915_gem_object_Get_pages_gtt use something similar to xen_biovec_phys_mergeable? Chris, I was thinking of something like this (which Juergen has already tested). >>From f196f1294fd25f1402c3dd1231babb8d7f5db2e7 Mon Sep 17 00:00:00 2001 From: Konrad Rzeszutek Wilk Date: Tue, 20 Dec 2016 10:02:02 -0500 Subject: [PATCH] swiotlb: Export swiotlb_max_segment to users So they can figure out what is the optimal number of pages that can be contingously stitched together without fear of bounce buffer. We also expose an mechanism for sub-users of SWIOTLB API, such as Xen-SWIOTLB to set the max segment value. And lastly if swiotlb=force is set (which mandates we bounce buffer everything) we set max_segment so at least we can bounce buffer one 4K page instead of a giant 512KB one for which we may not have space. Reported-and-Tested-by: Juergen Gross Signed-off-by: Konrad Rzeszutek Wilk --- drivers/gpu/drm/i915/i915_gem.c | 11 +---------- drivers/xen/swiotlb-xen.c | 4 ++++ include/linux/swiotlb.h | 3 +++ lib/swiotlb.c | 26 ++++++++++++++++++++++++++ 4 files changed, 34 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index d0dcaf3..115fa39 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2290,15 +2290,6 @@ void __i915_gem_object_put_pages(struct drm_i915_gem_object *obj, mutex_unlock(&obj->mm.lock); } -static unsigned int swiotlb_max_size(void) -{ -#if IS_ENABLED(CONFIG_SWIOTLB) - return rounddown(swiotlb_nr_tbl() << IO_TLB_SHIFT, PAGE_SIZE); -#else - return 0; -#endif -} - static void i915_sg_trim(struct sg_table *orig_st) { struct sg_table new_st; @@ -2345,7 +2336,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj) GEM_BUG_ON(obj->base.read_domains & I915_GEM_GPU_DOMAINS); GEM_BUG_ON(obj->base.write_domain & I915_GEM_GPU_DOMAINS); - max_segment = swiotlb_max_size(); + max_segment = swiotlb_max_segment(); if (!max_segment) max_segment = rounddown(UINT_MAX, PAGE_SIZE); diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c index aba1200..f905d6e 100644 --- a/drivers/xen/swiotlb-xen.c +++ b/drivers/xen/swiotlb-xen.c @@ -275,6 +275,10 @@ int __ref xen_swiotlb_init(int verbose, bool early) rc = 0; } else rc = swiotlb_late_init_with_tbl(xen_io_tlb_start, xen_io_tlb_nslabs); + + if (!rc) + swiotlb_set_max_segment(PAGE_SIZE); + return rc; error: if (repeat--) { diff --git a/include/linux/swiotlb.h b/include/linux/swiotlb.h index d9c84a9..d7eacd8 100644 --- a/include/linux/swiotlb.h +++ b/include/linux/swiotlb.h @@ -114,11 +114,14 @@ swiotlb_dma_supported(struct device *hwdev, u64 mask); #ifdef CONFIG_SWIOTLB extern void __init swiotlb_free(void); +unsigned int swiotlb_max_segment(void); #else static inline void swiotlb_free(void) { } +unsigned int swiotlb_max_segment(void) { return 0; } #endif extern void swiotlb_print_info(void); extern int is_swiotlb_buffer(phys_addr_t paddr); +extern void swiotlb_set_max_segment(unsigned int); #endif /* __LINUX_SWIOTLB_H */ diff --git a/lib/swiotlb.c b/lib/swiotlb.c index 9def738..975b8fc 100644 --- a/lib/swiotlb.c +++ b/lib/swiotlb.c @@ -83,6 +83,12 @@ static unsigned int *io_tlb_list; static unsigned int io_tlb_index; /* + * Max segment that we can provide which (if pages are contingous) will + * not be bounced (unless SWIOTLB_FORCE is set). + */ +unsigned int max_segment; + +/* * We need to save away the original address corresponding to a mapped entry * for the sync operations. */ @@ -124,6 +130,20 @@ unsigned long swiotlb_nr_tbl(void) } EXPORT_SYMBOL_GPL(swiotlb_nr_tbl); +unsigned int swiotlb_max_segment(void) +{ + return max_segment; +} +EXPORT_SYMBOL_GPL(swiotlb_max_segment); + +void swiotlb_set_max_segment(unsigned int val) +{ + if (swiotlb_force == SWIOTLB_FORCE) + max_segment = 1; + else + max_segment = rounddown(val, PAGE_SIZE); +} + /* default to 64MB */ #define IO_TLB_DEFAULT_SIZE (64UL<<20) unsigned long swiotlb_size_or_default(void) @@ -205,6 +225,7 @@ int __init swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose) if (verbose) swiotlb_print_info(); + swiotlb_set_max_segment(io_tlb_nslabs << IO_TLB_SHIFT); return 0; } @@ -283,6 +304,7 @@ swiotlb_late_init_with_default_size(size_t default_size) rc = swiotlb_late_init_with_tbl(vstart, io_tlb_nslabs); if (rc) free_pages((unsigned long)vstart, order); + return rc; } @@ -337,6 +359,8 @@ swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs) late_alloc = 1; + swiotlb_set_max_segment(io_tlb_nslabs << IO_TLB_SHIFT); + return 0; cleanup4: @@ -351,6 +375,7 @@ swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs) io_tlb_end = 0; io_tlb_start = 0; io_tlb_nslabs = 0; + max_segment = 0; return -ENOMEM; } @@ -379,6 +404,7 @@ void __init swiotlb_free(void) PAGE_ALIGN(io_tlb_nslabs << IO_TLB_SHIFT)); } io_tlb_nslabs = 0; + max_segment = 0; } int is_swiotlb_buffer(phys_addr_t paddr) -- 2.7.4