From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Remove partial attempt to swizzle on pread/pwrite Date: Thu, 11 Oct 2018 14:38:41 +0100 Message-ID: References: <20180723090208.27226-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 901996E3EE for ; Thu, 11 Oct 2018 13:40:43 +0000 (UTC) In-Reply-To: <20180723090208.27226-1-chris@chris-wilson.co.uk> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIzLzA3LzIwMTggMTA6MDIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPdXIgYXR0ZW1wdCB0 byBhY2NvdW50IGZvciBiaXQxNyBzd2l6emxpbmcgb2YgcHJlYWQvcHdyaXRlIG9udG8gdGlsZWQK PiBvYmplY3RzIHdhcyBmbGF3ZWQgZHVlIHRvIHRoZSBzaW1wbGUgZmFjdCB0aGF0IHdlIGRvIG5v dCBhbHdheXMga25vdyB0aGUKPiBzd2l6emxpbmcgZm9yIGEgcGFydGljdWxhciBwYWdlIChkdWUg dG8gdGhlIHN3aXp6bGluZyB2YXJ5aW5nIGJhc2VkIG9uCj4gbG9jYXRpb24gaW4gY2VydGFpbiB1 bmJhbGFuY2VkIGNvbmZpZ3VyYXRpb25zKS4gRnVydGhlcm1vcmUsIHRoZQo+IHByZWFkL3B3cml0 ZSBwYXRocyBhcmUgbm93IHVuYmFsYW5jZWQgaW4gdGhhdCB3ZSBhcmUgcmVxdWlyZWQgdG8gdXNl IHRoZQo+IEdUVCBhcyBpbiBzb21lIGNhc2VzIHdlIGRvIG5vdCBoYXZlIGRpcmVjdCBDUFUgYWNj ZXNzIHRvIHRoZSBiYWNraW5nCj4gcGh5c2ljYWwgcGFnZXMgKHRodXMgc29tZSBwYXRocyB0cnlp bmcgdG8gYWNjb3VudCBmb3IgdGhlIHN3aXp6bGUsIGJ1dAo+IG90aGVycyBuZWdsZWN0aW5nLCBj aGFvcyBlbnN1ZXMpLgo+IAo+IFRoZXJlIGFyZSBubyBrbm93biB1c2VycyB3aG8gZG8gdXNlIHBy ZWFkL3B3cml0ZSBpbnRvIGEgdGlsZWQgb2JqZWN0Cj4gKHlvdSBuZWVkIHRvIG1hbnVhbGx5IGRl dGlsZSBhbnl3YXksIHNvIHdoeSBub3cganVzdCB1c2UgbW1hcCBhbmQgYXZvaWQKPiB0aGUgY29w eT8pIGFuZCBubyB1c2VyIGJ1ZyByZXBvcnRzIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgYmVpbmcg dXNlZCBpbgo+IHRoZSB3aWxkLiBBcyBubyBvbmUgaXMgaGl0dGluZyB0aGUgYnVnZ3kgcGF0aCwg d2UgY2FuIGp1c3QgcmVtb3ZlIHRoZQo+IGJ1Z2d5IGNvZGUuCj4gCj4gUmVmZXJlbmNlczogZmUx MTU2MjhkNTY3ICgiZHJtL2k5MTU6IEltcGxlbWVudCBwd3JpdGUgd2l0aG91dCBzdHJ1Y3QtbXV0 ZXgiKQo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5j b20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIHwgMTkxICsrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0 aW9ucygrKSwgMTYxIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGlu ZGV4IDhiNTJjYjc2OGE2Ny4uNzNhNjkzNTJlMGQ0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCj4gQEAgLTg1OSw1OCArODU5LDYgQEAgZmx1c2hfd3JpdGVfZG9tYWluKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBmbHVzaF9kb21haW5zKQo+ICAgCW9i ai0+d3JpdGVfZG9tYWluID0gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgaW5saW5lIGludAo+IC1f X2NvcHlfdG9fdXNlcl9zd2l6emxlZChjaGFyIF9fdXNlciAqY3B1X3ZhZGRyLAo+IC0JCQljb25z dCBjaGFyICpncHVfdmFkZHIsIGludCBncHVfb2Zmc2V0LAo+IC0JCQlpbnQgbGVuZ3RoKQo+IC17 Cj4gLQlpbnQgcmV0LCBjcHVfb2Zmc2V0ID0gMDsKPiAtCj4gLQl3aGlsZSAobGVuZ3RoID4gMCkg ewo+IC0JCWludCBjYWNoZWxpbmVfZW5kID0gQUxJR04oZ3B1X29mZnNldCArIDEsIDY0KTsKPiAt CQlpbnQgdGhpc19sZW5ndGggPSBtaW4oY2FjaGVsaW5lX2VuZCAtIGdwdV9vZmZzZXQsIGxlbmd0 aCk7Cj4gLQkJaW50IHN3aXp6bGVkX2dwdV9vZmZzZXQgPSBncHVfb2Zmc2V0IF4gNjQ7Cj4gLQo+ IC0JCXJldCA9IF9fY29weV90b191c2VyKGNwdV92YWRkciArIGNwdV9vZmZzZXQsCj4gLQkJCQkg ICAgIGdwdV92YWRkciArIHN3aXp6bGVkX2dwdV9vZmZzZXQsCj4gLQkJCQkgICAgIHRoaXNfbGVu Z3RoKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0ICsgbGVuZ3RoOwo+IC0KPiAtCQlj cHVfb2Zmc2V0ICs9IHRoaXNfbGVuZ3RoOwo+IC0JCWdwdV9vZmZzZXQgKz0gdGhpc19sZW5ndGg7 Cj4gLQkJbGVuZ3RoIC09IHRoaXNfbGVuZ3RoOwo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC19 Cj4gLQo+IC1zdGF0aWMgaW5saW5lIGludAo+IC1fX2NvcHlfZnJvbV91c2VyX3N3aXp6bGVkKGNo YXIgKmdwdV92YWRkciwgaW50IGdwdV9vZmZzZXQsCj4gLQkJCSAgY29uc3QgY2hhciBfX3VzZXIg KmNwdV92YWRkciwKPiAtCQkJICBpbnQgbGVuZ3RoKQo+IC17Cj4gLQlpbnQgcmV0LCBjcHVfb2Zm c2V0ID0gMDsKPiAtCj4gLQl3aGlsZSAobGVuZ3RoID4gMCkgewo+IC0JCWludCBjYWNoZWxpbmVf ZW5kID0gQUxJR04oZ3B1X29mZnNldCArIDEsIDY0KTsKPiAtCQlpbnQgdGhpc19sZW5ndGggPSBt aW4oY2FjaGVsaW5lX2VuZCAtIGdwdV9vZmZzZXQsIGxlbmd0aCk7Cj4gLQkJaW50IHN3aXp6bGVk X2dwdV9vZmZzZXQgPSBncHVfb2Zmc2V0IF4gNjQ7Cj4gLQo+IC0JCXJldCA9IF9fY29weV9mcm9t X3VzZXIoZ3B1X3ZhZGRyICsgc3dpenpsZWRfZ3B1X29mZnNldCwKPiAtCQkJCSAgICAgICBjcHVf dmFkZHIgKyBjcHVfb2Zmc2V0LAo+IC0JCQkJICAgICAgIHRoaXNfbGVuZ3RoKTsKPiAtCQlpZiAo cmV0KQo+IC0JCQlyZXR1cm4gcmV0ICsgbGVuZ3RoOwo+IC0KPiAtCQljcHVfb2Zmc2V0ICs9IHRo aXNfbGVuZ3RoOwo+IC0JCWdwdV9vZmZzZXQgKz0gdGhpc19sZW5ndGg7Cj4gLQkJbGVuZ3RoIC09 IHRoaXNfbGVuZ3RoOwo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ICAgLyoKPiAg ICAqIFBpbnMgdGhlIHNwZWNpZmllZCBvYmplY3QncyBwYWdlcyBhbmQgc3luY2hyb25pemVzIHRo ZSBvYmplY3Qgd2l0aAo+ICAgICogR1BVIGFjY2Vzc2VzLiBTZXRzIG5lZWRzX2NsZmx1c2ggdG8g bm9uLXplcm8gaWYgdGhlIGNhbGxlciBzaG91bGQKPiBAQCAtMTAzMCw3MiArOTc4LDI5IEBAIGlu dCBpOTE1X2dlbV9vYmpfcHJlcGFyZV9zaG1lbV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQKPiAt c2htZW1fY2xmbHVzaF9zd2l6emxlZF9yYW5nZShjaGFyICphZGRyLCB1bnNpZ25lZCBsb25nIGxl bmd0aCwKPiAtCQkJICAgICBib29sIHN3aXp6bGVkKQo+IC17Cj4gLQlpZiAodW5saWtlbHkoc3dp enpsZWQpKSB7Cj4gLQkJdW5zaWduZWQgbG9uZyBzdGFydCA9ICh1bnNpZ25lZCBsb25nKSBhZGRy Owo+IC0JCXVuc2lnbmVkIGxvbmcgZW5kID0gKHVuc2lnbmVkIGxvbmcpIGFkZHIgKyBsZW5ndGg7 Cj4gLQo+IC0JCS8qIEZvciBzd2l6emxpbmcgc2ltcGx5IGVuc3VyZSB0aGF0IHdlIGFsd2F5cyBm bHVzaCBib3RoCj4gLQkJICogY2hhbm5lbHMuIExhbWUsIGJ1dCBzaW1wbGUgYW5kIGl0IHdvcmtz LiBTd2l6emxlZAo+IC0JCSAqIHB3cml0ZS9wcmVhZCBpcyBmYXIgZnJvbSBhIGhvdHBhdGggLSBj dXJyZW50IHVzZXJzcGFjZQo+IC0JCSAqIGRvZXNuJ3QgdXNlIGl0IGF0IGFsbC4gKi8KPiAtCQlz dGFydCA9IHJvdW5kX2Rvd24oc3RhcnQsIDEyOCk7Cj4gLQkJZW5kID0gcm91bmRfdXAoZW5kLCAx MjgpOwo+IC0KPiAtCQlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKCh2b2lkICopc3RhcnQsIGVuZCAt IHN0YXJ0KTsKPiAtCX0gZWxzZSB7Cj4gLQkJZHJtX2NsZmx1c2hfdmlydF9yYW5nZShhZGRyLCBs ZW5ndGgpOwo+IC0JfQo+IC0KPiAtfQo+IC0KPiAtLyogT25seSBkaWZmZXJlbmNlIHRvIHRoZSBm YXN0LXBhdGggZnVuY3Rpb24gaXMgdGhhdCB0aGlzIGNhbiBoYW5kbGUgYml0MTcKPiAtICogYW5k IHVzZXMgbm9uLWF0b21pYyBjb3B5IGFuZCBrbWFwIGZ1bmN0aW9ucy4gKi8KPiAgIHN0YXRpYyBp bnQKPiAtc2htZW1fcHJlYWRfc2xvdyhzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNldCwgaW50 IGxlbmd0aCwKPiAtCQkgY2hhciBfX3VzZXIgKnVzZXJfZGF0YSwKPiAtCQkgYm9vbCBwYWdlX2Rv X2JpdDE3X3N3aXp6bGluZywgYm9vbCBuZWVkc19jbGZsdXNoKQo+ICtzaG1lbV9wcmVhZChzdHJ1 Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNldCwgaW50IGxlbiwgY2hhciBfX3VzZXIgKnVzZXJfZGF0 YSwKPiArCSAgICBib29sIG5lZWRzX2NsZmx1c2gpCj4gICB7Cj4gICAJY2hhciAqdmFkZHI7Cj4g ICAJaW50IHJldDsKPiAgIAo+IC0JdmFkZHIgPSBrbWFwKHBhZ2UpOwo+IC0JaWYgKG5lZWRzX2Ns Zmx1c2gpCj4gLQkJc2htZW1fY2xmbHVzaF9zd2l6emxlZF9yYW5nZSh2YWRkciArIG9mZnNldCwg bGVuZ3RoLAo+IC0JCQkJCSAgICAgcGFnZV9kb19iaXQxN19zd2l6emxpbmcpOwo+IC0KPiAtCWlm IChwYWdlX2RvX2JpdDE3X3N3aXp6bGluZykKPiAtCQlyZXQgPSBfX2NvcHlfdG9fdXNlcl9zd2l6 emxlZCh1c2VyX2RhdGEsIHZhZGRyLCBvZmZzZXQsIGxlbmd0aCk7Cj4gLQllbHNlCj4gLQkJcmV0 ID0gX19jb3B5X3RvX3VzZXIodXNlcl9kYXRhLCB2YWRkciArIG9mZnNldCwgbGVuZ3RoKTsKPiAt CWt1bm1hcChwYWdlKTsKPiArCXZhZGRyID0ga21hcF9hdG9taWMocGFnZSk7Cj4gICAKPiAtCXJl dHVybiByZXQgPyAtIEVGQVVMVCA6IDA7Cj4gLX0KPiArCWlmIChuZWVkc19jbGZsdXNoKQo+ICsJ CWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UodmFkZHIgKyBvZmZzZXQsIGxlbik7Cj4gICAKPiAtc3Rh dGljIGludAo+IC1zaG1lbV9wcmVhZChzdHJ1Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNldCwgaW50 IGxlbmd0aCwgY2hhciBfX3VzZXIgKnVzZXJfZGF0YSwKPiAtCSAgICBib29sIHBhZ2VfZG9fYml0 MTdfc3dpenpsaW5nLCBib29sIG5lZWRzX2NsZmx1c2gpCj4gLXsKPiAtCWludCByZXQ7Cj4gKwly ZXQgPSBfX2NvcHlfdG9fdXNlcl9pbmF0b21pYyh1c2VyX2RhdGEsIHZhZGRyICsgb2Zmc2V0LCBs ZW4pOwoKS2VybmVsZG9jIHNheXMgdXNlcnNwYWNlIG1lbW9yeSBtdXN0IGJlIHBpbm5lZCBzbyBw b3RlbnRpYWwgcGFnZSBmYXVsdHMgCmFyZSBhdm9pZGVkLiBJIGRvbid0IHNlZSB0aGF0IG91ciBj b2RlIGRvZXMgdGhhdC4KCj4gICAKPiAtCXJldCA9IC1FTk9ERVY7Cj4gLQlpZiAoIXBhZ2VfZG9f Yml0MTdfc3dpenpsaW5nKSB7Cj4gLQkJY2hhciAqdmFkZHIgPSBrbWFwX2F0b21pYyhwYWdlKTsK PiArCWt1bm1hcF9hdG9taWModmFkZHIpOwo+ICAgCj4gLQkJaWYgKG5lZWRzX2NsZmx1c2gpCj4g LQkJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UodmFkZHIgKyBvZmZzZXQsIGxlbmd0aCk7Cj4gLQkJ cmV0ID0gX19jb3B5X3RvX3VzZXJfaW5hdG9taWModXNlcl9kYXRhLCB2YWRkciArIG9mZnNldCwg bGVuZ3RoKTsKPiAtCQlrdW5tYXBfYXRvbWljKHZhZGRyKTsKPiArCWlmIChyZXQpIHsKPiArCQl2 YWRkciA9IGttYXAocGFnZSk7Cj4gKwkJcmV0ID0gX19jb3B5X3RvX3VzZXIodXNlcl9kYXRhLCB2 YWRkciArIG9mZnNldCwgbGVuKTsKPiArCQlrdW5tYXAocGFnZSk7Cj4gICAJfQo+IC0JaWYgKHJl dCA9PSAwKQo+IC0JCXJldHVybiAwOwo+ICAgCj4gLQlyZXR1cm4gc2htZW1fcHJlYWRfc2xvdyhw YWdlLCBvZmZzZXQsIGxlbmd0aCwgdXNlcl9kYXRhLAo+IC0JCQkJcGFnZV9kb19iaXQxN19zd2l6 emxpbmcsIG5lZWRzX2NsZmx1c2gpOwo+ICsJcmV0dXJuIHJldCA/IC0gRUZBVUxUIDogMDsKCldo eSB0aGUgc3BhY2UgYmV0d2VlbiAtIGFuZCBFRkFVTFQ/IE9yIHdoeSBub3QganVzdCByZXR1cm4g cmV0PwoKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludAo+IEBAIC0xMTA0LDE1ICsxMDA5LDEwIEBA IGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g ICB7Cj4gICAJY2hhciBfX3VzZXIgKnVzZXJfZGF0YTsKPiAgIAl1NjQgcmVtYWluOwo+IC0JdW5z aWduZWQgaW50IG9ial9kb19iaXQxN19zd2l6emxpbmc7Cj4gICAJdW5zaWduZWQgaW50IG5lZWRz X2NsZmx1c2g7Cj4gICAJdW5zaWduZWQgaW50IGlkeCwgb2Zmc2V0Owo+ICAgCWludCByZXQ7Cj4g ICAKPiAtCW9ial9kb19iaXQxN19zd2l6emxpbmcgPSAwOwo+IC0JaWYgKGk5MTVfZ2VtX29iamVj dF9uZWVkc19iaXQxN19zd2l6emxlKG9iaikpCj4gLQkJb2JqX2RvX2JpdDE3X3N3aXp6bGluZyA9 IEJJVCgxNyk7Cj4gLQo+ICAgCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmb2JqLT5i YXNlLmRldi0+c3RydWN0X211dGV4KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ IEBAIC0xMTM0LDcgKzEwMzQsNiBAQCBpOTE1X2dlbV9zaG1lbV9wcmVhZChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQkJbGVuZ3RoID0gUEFHRV9TSVpFIC0gb2Zmc2V0OwoK SXQncyBwcmUtZXhpc3RpbmcsIGJ1dCB0aGVyZSBzZWVtcyB0byBiZSBhIHBvdGVudGlhbCBvdmVy ZmxvdyBvZiBpbnQgCmxlbmd0aCA9IHU2NCByZW1haW4gYSBmZXcgbGluZXMgYWJvdmUgdGhpcy4K Cj4gICAKPiAgIAkJcmV0ID0gc2htZW1fcHJlYWQocGFnZSwgb2Zmc2V0LCBsZW5ndGgsIHVzZXJf ZGF0YSwKPiAtCQkJCSAgcGFnZV90b19waHlzKHBhZ2UpICYgb2JqX2RvX2JpdDE3X3N3aXp6bGlu ZywKPiAgIAkJCQkgIG5lZWRzX2NsZmx1c2gpOwo+ICAgCQlpZiAocmV0KQo+ICAgCQkJYnJlYWs7 Cj4gQEAgLTE0NzUsMzMgKzEzNzQsNiBAQCBpOTE1X2dlbV9ndHRfcHdyaXRlX2Zhc3Qoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4g LXN0YXRpYyBpbnQKPiAtc2htZW1fcHdyaXRlX3Nsb3coc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBv ZmZzZXQsIGludCBsZW5ndGgsCj4gLQkJICBjaGFyIF9fdXNlciAqdXNlcl9kYXRhLAo+IC0JCSAg Ym9vbCBwYWdlX2RvX2JpdDE3X3N3aXp6bGluZywKPiAtCQkgIGJvb2wgbmVlZHNfY2xmbHVzaF9i ZWZvcmUsCj4gLQkJICBib29sIG5lZWRzX2NsZmx1c2hfYWZ0ZXIpCj4gLXsKPiAtCWNoYXIgKnZh ZGRyOwo+IC0JaW50IHJldDsKPiAtCj4gLQl2YWRkciA9IGttYXAocGFnZSk7Cj4gLQlpZiAodW5s aWtlbHkobmVlZHNfY2xmbHVzaF9iZWZvcmUgfHwgcGFnZV9kb19iaXQxN19zd2l6emxpbmcpKQo+ IC0JCXNobWVtX2NsZmx1c2hfc3dpenpsZWRfcmFuZ2UodmFkZHIgKyBvZmZzZXQsIGxlbmd0aCwK PiAtCQkJCQkgICAgIHBhZ2VfZG9fYml0MTdfc3dpenpsaW5nKTsKPiAtCWlmIChwYWdlX2RvX2Jp dDE3X3N3aXp6bGluZykKPiAtCQlyZXQgPSBfX2NvcHlfZnJvbV91c2VyX3N3aXp6bGVkKHZhZGRy LCBvZmZzZXQsIHVzZXJfZGF0YSwKPiAtCQkJCQkJbGVuZ3RoKTsKPiAtCWVsc2UKPiAtCQlyZXQg PSBfX2NvcHlfZnJvbV91c2VyKHZhZGRyICsgb2Zmc2V0LCB1c2VyX2RhdGEsIGxlbmd0aCk7Cj4g LQlpZiAobmVlZHNfY2xmbHVzaF9hZnRlcikKPiAtCQlzaG1lbV9jbGZsdXNoX3N3aXp6bGVkX3Jh bmdlKHZhZGRyICsgb2Zmc2V0LCBsZW5ndGgsCj4gLQkJCQkJICAgICBwYWdlX2RvX2JpdDE3X3N3 aXp6bGluZyk7Cj4gLQlrdW5tYXAocGFnZSk7Cj4gLQo+IC0JcmV0dXJuIHJldCA/IC1FRkFVTFQg OiAwOwo+IC19Cj4gLQo+ICAgLyogUGVyLXBhZ2UgY29weSBmdW5jdGlvbiBmb3IgdGhlIHNobWVt IHB3cml0ZSBmYXN0cGF0aC4KPiAgICAqIEZsdXNoZXMgaW52YWxpZCBjYWNoZWxpbmVzIGJlZm9y ZSB3cml0aW5nIHRvIHRoZSB0YXJnZXQgaWYKPiAgICAqIG5lZWRzX2NsZmx1c2hfYmVmb3JlIGlz IHNldCBhbmQgZmx1c2hlcyBvdXQgYW55IHdyaXR0ZW4gY2FjaGVsaW5lcyBhZnRlcgo+IEBAIC0x NTA5LDMxICsxMzgxLDM0IEBAIHNobWVtX3B3cml0ZV9zbG93KHN0cnVjdCBwYWdlICpwYWdlLCBp bnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLAo+ICAgICovCj4gICBzdGF0aWMgaW50Cj4gICBzaG1lbV9w d3JpdGUoc3RydWN0IHBhZ2UgKnBhZ2UsIGludCBvZmZzZXQsIGludCBsZW4sIGNoYXIgX191c2Vy ICp1c2VyX2RhdGEsCj4gLQkgICAgIGJvb2wgcGFnZV9kb19iaXQxN19zd2l6emxpbmcsCj4gICAJ ICAgICBib29sIG5lZWRzX2NsZmx1c2hfYmVmb3JlLAo+ICAgCSAgICAgYm9vbCBuZWVkc19jbGZs dXNoX2FmdGVyKQo+ICAgewo+ICsJY2hhciAqdmFkZHI7Cj4gICAJaW50IHJldDsKPiAgIAo+IC0J cmV0ID0gLUVOT0RFVjsKPiAtCWlmICghcGFnZV9kb19iaXQxN19zd2l6emxpbmcpIHsKPiAtCQlj aGFyICp2YWRkciA9IGttYXBfYXRvbWljKHBhZ2UpOwo+ICsJdmFkZHIgPSBrbWFwX2F0b21pYyhw YWdlKTsKPiAgIAo+IC0JCWlmIChuZWVkc19jbGZsdXNoX2JlZm9yZSkKPiAtCQkJZHJtX2NsZmx1 c2hfdmlydF9yYW5nZSh2YWRkciArIG9mZnNldCwgbGVuKTsKPiAtCQlyZXQgPSBfX2NvcHlfZnJv bV91c2VyX2luYXRvbWljKHZhZGRyICsgb2Zmc2V0LCB1c2VyX2RhdGEsIGxlbik7Cj4gLQkJaWYg KG5lZWRzX2NsZmx1c2hfYWZ0ZXIpCj4gKwlpZiAobmVlZHNfY2xmbHVzaF9iZWZvcmUpCj4gKwkJ ZHJtX2NsZmx1c2hfdmlydF9yYW5nZSh2YWRkciArIG9mZnNldCwgbGVuKTsKPiArCj4gKwlyZXQg PSBfX2NvcHlfZnJvbV91c2VyX2luYXRvbWljKHZhZGRyICsgb2Zmc2V0LCB1c2VyX2RhdGEsIGxl bik7Cj4gKwlpZiAoIXJldCAmJiBuZWVkc19jbGZsdXNoX2FmdGVyKQo+ICsJCWRybV9jbGZsdXNo X3ZpcnRfcmFuZ2UodmFkZHIgKyBvZmZzZXQsIGxlbik7Cj4gKwo+ICsJa3VubWFwX2F0b21pYyh2 YWRkcik7Cj4gKwo+ICsJaWYgKHJldCkgewo+ICsJCXZhZGRyID0ga21hcChwYWdlKTsKPiArCj4g KwkJcmV0ID0gX19jb3B5X2Zyb21fdXNlcih2YWRkciArIG9mZnNldCwgdXNlcl9kYXRhLCBsZW4p Owo+ICsJCWlmICghcmV0ICYmIG5lZWRzX2NsZmx1c2hfYWZ0ZXIpCj4gICAJCQlkcm1fY2xmbHVz aF92aXJ0X3JhbmdlKHZhZGRyICsgb2Zmc2V0LCBsZW4pOwo+ICAgCj4gLQkJa3VubWFwX2F0b21p Yyh2YWRkcik7Cj4gKwkJa3VubWFwKHBhZ2UpOwo+ICAgCX0KPiAtCWlmIChyZXQgPT0gMCkKPiAt CQlyZXR1cm4gcmV0Owo+ICAgCj4gLQlyZXR1cm4gc2htZW1fcHdyaXRlX3Nsb3cocGFnZSwgb2Zm c2V0LCBsZW4sIHVzZXJfZGF0YSwKPiAtCQkJCSBwYWdlX2RvX2JpdDE3X3N3aXp6bGluZywKPiAt CQkJCSBuZWVkc19jbGZsdXNoX2JlZm9yZSwKPiAtCQkJCSBuZWVkc19jbGZsdXNoX2FmdGVyKTsK PiArCXJldHVybiByZXQgPyAtRUZBVUxUIDogMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludAo+ IEBAIC0xNTQzLDcgKzE0MTgsNiBAQCBpOTE1X2dlbV9zaG1lbV9wd3JpdGUoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHRvX2k5MTUob2JqLT5iYXNlLmRldik7Cj4gICAJdm9pZCBfX3VzZXIgKnVzZXJfZGF0YTsKPiAg IAl1NjQgcmVtYWluOwo+IC0JdW5zaWduZWQgaW50IG9ial9kb19iaXQxN19zd2l6emxpbmc7Cj4g ICAJdW5zaWduZWQgaW50IHBhcnRpYWxfY2FjaGVsaW5lX3dyaXRlOwo+ICAgCXVuc2lnbmVkIGlu dCBuZWVkc19jbGZsdXNoOwo+ICAgCXVuc2lnbmVkIGludCBvZmZzZXQsIGlkeDsKPiBAQCAtMTU1 OCwxMCArMTQzMiw2IEBAIGk5MTVfZ2VtX3NobWVtX3B3cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAtCW9i al9kb19iaXQxN19zd2l6emxpbmcgPSAwOwo+IC0JaWYgKGk5MTVfZ2VtX29iamVjdF9uZWVkc19i aXQxN19zd2l6emxlKG9iaikpCj4gLQkJb2JqX2RvX2JpdDE3X3N3aXp6bGluZyA9IEJJVCgxNyk7 Cj4gLQo+ICAgCS8qIElmIHdlIGRvbid0IG92ZXJ3cml0ZSBhIGNhY2hlbGluZSBjb21wbGV0ZWx5 IHdlIG5lZWQgdG8gYmUKPiAgIAkgKiBjYXJlZnVsIHRvIGhhdmUgdXAtdG8tZGF0ZSBkYXRhIGJ5 IGZpcnN0IGNsZmx1c2hpbmcuIERvbid0Cj4gICAJICogb3ZlcmNvbXBsaWNhdGUgdGhpbmdzIGFu ZCBmbHVzaCB0aGUgZW50aXJlIHBhdGNoLgo+IEBAIC0xNTgyLDcgKzE0NTIsNiBAQCBpOTE1X2dl bV9zaG1lbV9wd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkJCWxl bmd0aCA9IFBBR0VfU0laRSAtIG9mZnNldDsKPiAgIAo+ICAgCQlyZXQgPSBzaG1lbV9wd3JpdGUo cGFnZSwgb2Zmc2V0LCBsZW5ndGgsIHVzZXJfZGF0YSwKPiAtCQkJCSAgIHBhZ2VfdG9fcGh5cyhw YWdlKSAmIG9ial9kb19iaXQxN19zd2l6emxpbmcsCj4gICAJCQkJICAgKG9mZnNldCB8IGxlbmd0 aCkgJiBwYXJ0aWFsX2NhY2hlbGluZV93cml0ZSwKPiAgIAkJCQkgICBuZWVkc19jbGZsdXNoICYg Q0xGTFVTSF9BRlRFUik7Cj4gICAJCWlmIChyZXQpCj4gCgpTYW1lIGNvbW1lbnRzIGJhc2ljYWxs eSBhcyB3aXRoIHRoZSBwcmVhZCBwYXRoLgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK