From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3] drm/i915: Remove partial attempt to swizzle on pread/pwrite Date: Fri, 12 Oct 2018 13:22:55 +0100 Message-ID: <4fecc14f-0cdc-08c0-ca5d-21d872f891b6@linux.intel.com> References: <20180723090208.27226-1-chris@chris-wilson.co.uk> <20181012115621.24435-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 41CD36E063 for ; Fri, 12 Oct 2018 12:22:58 +0000 (UTC) In-Reply-To: <20181012115621.24435-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 Ck9uIDEyLzEwLzIwMTggMTI6NTYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPdXIgYXR0ZW1wdCB0 byBhY2NvdW50IGZvciBiaXQxNyBzd2l6emxpbmcgb2YgcHJlYWQvcHdyaXRlIG9udG8gdGlsZWQK PiBvYmplY3RzIHdhcyBmbGF3ZWQgZHVlIHRvIHRoZSBzaW1wbGUgZmFjdCB0aGF0IHdlIGRvIG5v dCBhbHdheXMga25vdyB0aGUKPiBzd2l6emxpbmcgZm9yIGEgcGFydGljdWxhciBwYWdlIChkdWUg dG8gdGhlIHN3aXp6bGluZyB2YXJ5aW5nIGJhc2VkIG9uCj4gbG9jYXRpb24gaW4gY2VydGFpbiB1 bmJhbGFuY2VkIGNvbmZpZ3VyYXRpb25zKS4gRnVydGhlcm1vcmUsIHRoZQo+IHByZWFkL3B3cml0 ZSBwYXRocyBhcmUgbm93IHVuYmFsYW5jZWQgaW4gdGhhdCB3ZSBhcmUgcmVxdWlyZWQgdG8gdXNl IHRoZQo+IEdUVCBhcyBpbiBzb21lIGNhc2VzIHdlIGRvIG5vdCBoYXZlIGRpcmVjdCBDUFUgYWNj ZXNzIHRvIHRoZSBiYWNraW5nCj4gcGh5c2ljYWwgcGFnZXMgKHRodXMgc29tZSBwYXRocyB0cnlp bmcgdG8gYWNjb3VudCBmb3IgdGhlIHN3aXp6bGUsIGJ1dAo+IG90aGVycyBuZWdsZWN0aW5nLCBj aGFvcyBlbnN1ZXMpLgo+IAo+IFRoZXJlIGFyZSBubyBrbm93biB1c2VycyB3aG8gZG8gdXNlIHBy ZWFkL3B3cml0ZSBpbnRvIGEgdGlsZWQgb2JqZWN0Cj4gKHlvdSBuZWVkIHRvIG1hbnVhbGx5IGRl dGlsZSBhbnl3YXksIHNvIHdoeSBub3cganVzdCB1c2UgbW1hcCBhbmQgYXZvaWQKPiB0aGUgY29w eT8pIGFuZCBubyB1c2VyIGJ1ZyByZXBvcnRzIHRvIGluZGljYXRlIHRoYXQgaXQgaXMgYmVpbmcg dXNlZCBpbgo+IHRoZSB3aWxkLiBBcyBubyBvbmUgaXMgaGl0dGluZyB0aGUgYnVnZ3kgcGF0aCwg d2UgY2FuIGp1c3QgcmVtb3ZlIHRoZQo+IGJ1Z2d5IGNvZGUuCj4gCj4gdjI6IEp1c3QgdXNlIHRo ZSBmYXVsdCBhbGxvd2luZyBrbWFwKCkgKyBub3JtYWwgY29weV8odG98ZnJvbSlfdXNlcgo+IHYz OiBBdm9pZCBpbnQgb3ZlcmZsb3cgaW4gY29tcHV0aW5nICdsZW5ndGgnIGZyb20gJ3JlbWFpbicg KFR2cnRrbykKPiAKPiBSZWZlcmVuY2VzOiBmZTExNTYyOGQ1NjcgKCJkcm0vaTkxNTogSW1wbGVt ZW50IHB3cml0ZSB3aXRob3V0IHN0cnVjdC1tdXRleCIpCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8 am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2 cnRrby51cnN1bGluQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgfCAxOTUgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIDEgZmls ZSBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxNzAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggN2Q0NWU3MTEwMGJjLi44MDQ5NDU4YWI2YWMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtODU5LDU4ICs4NTksNiBAQCBmbHVzaF93cml0 ZV9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IGZs dXNoX2RvbWFpbnMpCj4gICAJb2JqLT53cml0ZV9kb21haW4gPSAwOwo+ICAgfQo+ICAgCj4gLXN0 YXRpYyBpbmxpbmUgaW50Cj4gLV9fY29weV90b191c2VyX3N3aXp6bGVkKGNoYXIgX191c2VyICpj cHVfdmFkZHIsCj4gLQkJCWNvbnN0IGNoYXIgKmdwdV92YWRkciwgaW50IGdwdV9vZmZzZXQsCj4g LQkJCWludCBsZW5ndGgpCj4gLXsKPiAtCWludCByZXQsIGNwdV9vZmZzZXQgPSAwOwo+IC0KPiAt CXdoaWxlIChsZW5ndGggPiAwKSB7Cj4gLQkJaW50IGNhY2hlbGluZV9lbmQgPSBBTElHTihncHVf b2Zmc2V0ICsgMSwgNjQpOwo+IC0JCWludCB0aGlzX2xlbmd0aCA9IG1pbihjYWNoZWxpbmVfZW5k IC0gZ3B1X29mZnNldCwgbGVuZ3RoKTsKPiAtCQlpbnQgc3dpenpsZWRfZ3B1X29mZnNldCA9IGdw dV9vZmZzZXQgXiA2NDsKPiAtCj4gLQkJcmV0ID0gX19jb3B5X3RvX3VzZXIoY3B1X3ZhZGRyICsg Y3B1X29mZnNldCwKPiAtCQkJCSAgICAgZ3B1X3ZhZGRyICsgc3dpenpsZWRfZ3B1X29mZnNldCwK PiAtCQkJCSAgICAgdGhpc19sZW5ndGgpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQg KyBsZW5ndGg7Cj4gLQo+IC0JCWNwdV9vZmZzZXQgKz0gdGhpc19sZW5ndGg7Cj4gLQkJZ3B1X29m ZnNldCArPSB0aGlzX2xlbmd0aDsKPiAtCQlsZW5ndGggLT0gdGhpc19sZW5ndGg7Cj4gLQl9Cj4g LQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgaW50Cj4gLV9fY29weV9m cm9tX3VzZXJfc3dpenpsZWQoY2hhciAqZ3B1X3ZhZGRyLCBpbnQgZ3B1X29mZnNldCwKPiAtCQkJ ICBjb25zdCBjaGFyIF9fdXNlciAqY3B1X3ZhZGRyLAo+IC0JCQkgIGludCBsZW5ndGgpCj4gLXsK PiAtCWludCByZXQsIGNwdV9vZmZzZXQgPSAwOwo+IC0KPiAtCXdoaWxlIChsZW5ndGggPiAwKSB7 Cj4gLQkJaW50IGNhY2hlbGluZV9lbmQgPSBBTElHTihncHVfb2Zmc2V0ICsgMSwgNjQpOwo+IC0J CWludCB0aGlzX2xlbmd0aCA9IG1pbihjYWNoZWxpbmVfZW5kIC0gZ3B1X29mZnNldCwgbGVuZ3Ro KTsKPiAtCQlpbnQgc3dpenpsZWRfZ3B1X29mZnNldCA9IGdwdV9vZmZzZXQgXiA2NDsKPiAtCj4g LQkJcmV0ID0gX19jb3B5X2Zyb21fdXNlcihncHVfdmFkZHIgKyBzd2l6emxlZF9ncHVfb2Zmc2V0 LAo+IC0JCQkJICAgICAgIGNwdV92YWRkciArIGNwdV9vZmZzZXQsCj4gLQkJCQkgICAgICAgdGhp c19sZW5ndGgpOwo+IC0JCWlmIChyZXQpCj4gLQkJCXJldHVybiByZXQgKyBsZW5ndGg7Cj4gLQo+ IC0JCWNwdV9vZmZzZXQgKz0gdGhpc19sZW5ndGg7Cj4gLQkJZ3B1X29mZnNldCArPSB0aGlzX2xl bmd0aDsKPiAtCQlsZW5ndGggLT0gdGhpc19sZW5ndGg7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIDA7 Cj4gLX0KPiAtCj4gICAvKgo+ICAgICogUGlucyB0aGUgc3BlY2lmaWVkIG9iamVjdCdzIHBhZ2Vz IGFuZCBzeW5jaHJvbml6ZXMgdGhlIG9iamVjdCB3aXRoCj4gICAgKiBHUFUgYWNjZXNzZXMuIFNl dHMgbmVlZHNfY2xmbHVzaCB0byBub24temVybyBpZiB0aGUgY2FsbGVyIHNob3VsZAo+IEBAIC0x MDMwLDcyICs5NzgsMjMgQEAgaW50IGk5MTVfZ2VtX29ial9wcmVwYXJlX3NobWVtX3dyaXRlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAg IAo+IC1zdGF0aWMgdm9pZAo+IC1zaG1lbV9jbGZsdXNoX3N3aXp6bGVkX3JhbmdlKGNoYXIgKmFk ZHIsIHVuc2lnbmVkIGxvbmcgbGVuZ3RoLAo+IC0JCQkgICAgIGJvb2wgc3dpenpsZWQpCj4gLXsK PiAtCWlmICh1bmxpa2VseShzd2l6emxlZCkpIHsKPiAtCQl1bnNpZ25lZCBsb25nIHN0YXJ0ID0g KHVuc2lnbmVkIGxvbmcpIGFkZHI7Cj4gLQkJdW5zaWduZWQgbG9uZyBlbmQgPSAodW5zaWduZWQg bG9uZykgYWRkciArIGxlbmd0aDsKPiAtCj4gLQkJLyogRm9yIHN3aXp6bGluZyBzaW1wbHkgZW5z dXJlIHRoYXQgd2UgYWx3YXlzIGZsdXNoIGJvdGgKPiAtCQkgKiBjaGFubmVscy4gTGFtZSwgYnV0 IHNpbXBsZSBhbmQgaXQgd29ya3MuIFN3aXp6bGVkCj4gLQkJICogcHdyaXRlL3ByZWFkIGlzIGZh ciBmcm9tIGEgaG90cGF0aCAtIGN1cnJlbnQgdXNlcnNwYWNlCj4gLQkJICogZG9lc24ndCB1c2Ug aXQgYXQgYWxsLiAqLwo+IC0JCXN0YXJ0ID0gcm91bmRfZG93bihzdGFydCwgMTI4KTsKPiAtCQll bmQgPSByb3VuZF91cChlbmQsIDEyOCk7Cj4gLQo+IC0JCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2Uo KHZvaWQgKilzdGFydCwgZW5kIC0gc3RhcnQpOwo+IC0JfSBlbHNlIHsKPiAtCQlkcm1fY2xmbHVz aF92aXJ0X3JhbmdlKGFkZHIsIGxlbmd0aCk7Cj4gLQl9Cj4gLQo+IC19Cj4gLQo+IC0vKiBPbmx5 IGRpZmZlcmVuY2UgdG8gdGhlIGZhc3QtcGF0aCBmdW5jdGlvbiBpcyB0aGF0IHRoaXMgY2FuIGhh bmRsZSBiaXQxNwo+IC0gKiBhbmQgdXNlcyBub24tYXRvbWljIGNvcHkgYW5kIGttYXAgZnVuY3Rp b25zLiAqLwo+ICAgc3RhdGljIGludAo+IC1zaG1lbV9wcmVhZF9zbG93KHN0cnVjdCBwYWdlICpw YWdlLCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLAo+IC0JCSBjaGFyIF9fdXNlciAqdXNlcl9kYXRh LAo+IC0JCSBib29sIHBhZ2VfZG9fYml0MTdfc3dpenpsaW5nLCBib29sIG5lZWRzX2NsZmx1c2gp Cj4gK3NobWVtX3ByZWFkKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBj aGFyIF9fdXNlciAqdXNlcl9kYXRhLAo+ICsJICAgIGJvb2wgbmVlZHNfY2xmbHVzaCkKPiAgIHsK PiAgIAljaGFyICp2YWRkcjsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJdmFkZHIgPSBrbWFwKHBh Z2UpOwo+IC0JaWYgKG5lZWRzX2NsZmx1c2gpCj4gLQkJc2htZW1fY2xmbHVzaF9zd2l6emxlZF9y YW5nZSh2YWRkciArIG9mZnNldCwgbGVuZ3RoLAo+IC0JCQkJCSAgICAgcGFnZV9kb19iaXQxN19z d2l6emxpbmcpOwo+ICAgCj4gLQlpZiAocGFnZV9kb19iaXQxN19zd2l6emxpbmcpCj4gLQkJcmV0 ID0gX19jb3B5X3RvX3VzZXJfc3dpenpsZWQodXNlcl9kYXRhLCB2YWRkciwgb2Zmc2V0LCBsZW5n dGgpOwo+IC0JZWxzZQo+IC0JCXJldCA9IF9fY29weV90b191c2VyKHVzZXJfZGF0YSwgdmFkZHIg KyBvZmZzZXQsIGxlbmd0aCk7Cj4gLQlrdW5tYXAocGFnZSk7Cj4gLQo+IC0JcmV0dXJuIHJldCA/ IC0gRUZBVUxUIDogMDsKPiAtfQo+IC0KPiAtc3RhdGljIGludAo+IC1zaG1lbV9wcmVhZChzdHJ1 Y3QgcGFnZSAqcGFnZSwgaW50IG9mZnNldCwgaW50IGxlbmd0aCwgY2hhciBfX3VzZXIgKnVzZXJf ZGF0YSwKPiAtCSAgICBib29sIHBhZ2VfZG9fYml0MTdfc3dpenpsaW5nLCBib29sIG5lZWRzX2Ns Zmx1c2gpCj4gLXsKPiAtCWludCByZXQ7Cj4gKwlpZiAobmVlZHNfY2xmbHVzaCkKPiArCQlkcm1f Y2xmbHVzaF92aXJ0X3JhbmdlKHZhZGRyICsgb2Zmc2V0LCBsZW4pOwo+ICAgCj4gLQlyZXQgPSAt RU5PREVWOwo+IC0JaWYgKCFwYWdlX2RvX2JpdDE3X3N3aXp6bGluZykgewo+IC0JCWNoYXIgKnZh ZGRyID0ga21hcF9hdG9taWMocGFnZSk7Cj4gKwlyZXQgPSBfX2NvcHlfdG9fdXNlcih1c2VyX2Rh dGEsIHZhZGRyICsgb2Zmc2V0LCBsZW4pOwo+ICAgCj4gLQkJaWYgKG5lZWRzX2NsZmx1c2gpCj4g LQkJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UodmFkZHIgKyBvZmZzZXQsIGxlbmd0aCk7Cj4gLQkJ cmV0ID0gX19jb3B5X3RvX3VzZXJfaW5hdG9taWModXNlcl9kYXRhLCB2YWRkciArIG9mZnNldCwg bGVuZ3RoKTsKPiAtCQlrdW5tYXBfYXRvbWljKHZhZGRyKTsKPiAtCX0KPiAtCWlmIChyZXQgPT0g MCkKPiAtCQlyZXR1cm4gMDsKPiArCWt1bm1hcChwYWdlKTsKPiAgIAo+IC0JcmV0dXJuIHNobWVt X3ByZWFkX3Nsb3cocGFnZSwgb2Zmc2V0LCBsZW5ndGgsIHVzZXJfZGF0YSwKPiAtCQkJCXBhZ2Vf ZG9fYml0MTdfc3dpenpsaW5nLCBuZWVkc19jbGZsdXNoKTsKPiArCXJldHVybiByZXQgPyAtRUZB VUxUIDogMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludAo+IEBAIC0xMTA0LDE1ICsxMDAzLDEw IEBAIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gICB7Cj4gICAJY2hhciBfX3VzZXIgKnVzZXJfZGF0YTsKPiAgIAl1NjQgcmVtYWluOwo+IC0J dW5zaWduZWQgaW50IG9ial9kb19iaXQxN19zd2l6emxpbmc7Cj4gICAJdW5zaWduZWQgaW50IG5l ZWRzX2NsZmx1c2g7Cj4gICAJdW5zaWduZWQgaW50IGlkeCwgb2Zmc2V0Owo+ICAgCWludCByZXQ7 Cj4gICAKPiAtCW9ial9kb19iaXQxN19zd2l6emxpbmcgPSAwOwo+IC0JaWYgKGk5MTVfZ2VtX29i amVjdF9uZWVkc19iaXQxN19zd2l6emxlKG9iaikpCj4gLQkJb2JqX2RvX2JpdDE3X3N3aXp6bGlu ZyA9IEJJVCgxNyk7Cj4gLQo+ICAgCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmb2Jq LT5iYXNlLmRldi0+c3RydWN0X211dGV4KTsKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0 Owo+IEBAIC0xMTI3LDE0ICsxMDIxLDE0IEBAIGk5MTVfZ2VtX3NobWVtX3ByZWFkKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJb2Zmc2V0ID0gb2Zmc2V0X2luX3BhZ2UoYXJn cy0+b2Zmc2V0KTsKPiAgIAlmb3IgKGlkeCA9IGFyZ3MtPm9mZnNldCA+PiBQQUdFX1NISUZUOyBy ZW1haW47IGlkeCsrKSB7Cj4gICAJCXN0cnVjdCBwYWdlICpwYWdlID0gaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlKG9iaiwgaWR4KTsKPiAtCQlpbnQgbGVuZ3RoOwo+ICsJCXVuc2lnbmVkIGludCBs ZW5ndGg7Cj4gICAKPiAtCQlsZW5ndGggPSByZW1haW47Cj4gLQkJaWYgKG9mZnNldCArIGxlbmd0 aCA+IFBBR0VfU0laRSkKPiArCQlpZiAocmVtYWluID4gUEFHRV9TSVpFIC0gb2Zmc2V0KQo+ICAg CQkJbGVuZ3RoID0gUEFHRV9TSVpFIC0gb2Zmc2V0Owo+ICsJCWVsc2UKPiArCQkJbGVuZ3RoID0g cmVtYWluOwo+ICAgCj4gICAJCXJldCA9IHNobWVtX3ByZWFkKHBhZ2UsIG9mZnNldCwgbGVuZ3Ro LCB1c2VyX2RhdGEsCj4gLQkJCQkgIHBhZ2VfdG9fcGh5cyhwYWdlKSAmIG9ial9kb19iaXQxN19z d2l6emxpbmcsCj4gICAJCQkJICBuZWVkc19jbGZsdXNoKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJ CWJyZWFrOwo+IEBAIC0xNDc1LDMzICsxMzY5LDYgQEAgaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0 KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJcmV0dXJuIHJldDsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgaW50Cj4gLXNobWVtX3B3cml0ZV9zbG93KHN0cnVjdCBwYWdlICpwYWdl LCBpbnQgb2Zmc2V0LCBpbnQgbGVuZ3RoLAo+IC0JCSAgY2hhciBfX3VzZXIgKnVzZXJfZGF0YSwK PiAtCQkgIGJvb2wgcGFnZV9kb19iaXQxN19zd2l6emxpbmcsCj4gLQkJICBib29sIG5lZWRzX2Ns Zmx1c2hfYmVmb3JlLAo+IC0JCSAgYm9vbCBuZWVkc19jbGZsdXNoX2FmdGVyKQo+IC17Cj4gLQlj aGFyICp2YWRkcjsKPiAtCWludCByZXQ7Cj4gLQo+IC0JdmFkZHIgPSBrbWFwKHBhZ2UpOwo+IC0J aWYgKHVubGlrZWx5KG5lZWRzX2NsZmx1c2hfYmVmb3JlIHx8IHBhZ2VfZG9fYml0MTdfc3dpenps aW5nKSkKPiAtCQlzaG1lbV9jbGZsdXNoX3N3aXp6bGVkX3JhbmdlKHZhZGRyICsgb2Zmc2V0LCBs ZW5ndGgsCj4gLQkJCQkJICAgICBwYWdlX2RvX2JpdDE3X3N3aXp6bGluZyk7Cj4gLQlpZiAocGFn ZV9kb19iaXQxN19zd2l6emxpbmcpCj4gLQkJcmV0ID0gX19jb3B5X2Zyb21fdXNlcl9zd2l6emxl ZCh2YWRkciwgb2Zmc2V0LCB1c2VyX2RhdGEsCj4gLQkJCQkJCWxlbmd0aCk7Cj4gLQllbHNlCj4g LQkJcmV0ID0gX19jb3B5X2Zyb21fdXNlcih2YWRkciArIG9mZnNldCwgdXNlcl9kYXRhLCBsZW5n dGgpOwo+IC0JaWYgKG5lZWRzX2NsZmx1c2hfYWZ0ZXIpCj4gLQkJc2htZW1fY2xmbHVzaF9zd2l6 emxlZF9yYW5nZSh2YWRkciArIG9mZnNldCwgbGVuZ3RoLAo+IC0JCQkJCSAgICAgcGFnZV9kb19i aXQxN19zd2l6emxpbmcpOwo+IC0Ja3VubWFwKHBhZ2UpOwo+IC0KPiAtCXJldHVybiByZXQgPyAt RUZBVUxUIDogMDsKPiAtfQo+IC0KPiAgIC8qIFBlci1wYWdlIGNvcHkgZnVuY3Rpb24gZm9yIHRo ZSBzaG1lbSBwd3JpdGUgZmFzdHBhdGguCj4gICAgKiBGbHVzaGVzIGludmFsaWQgY2FjaGVsaW5l cyBiZWZvcmUgd3JpdGluZyB0byB0aGUgdGFyZ2V0IGlmCj4gICAgKiBuZWVkc19jbGZsdXNoX2Jl Zm9yZSBpcyBzZXQgYW5kIGZsdXNoZXMgb3V0IGFueSB3cml0dGVuIGNhY2hlbGluZXMgYWZ0ZXIK PiBAQCAtMTUwOSwzMSArMTM3NiwyNCBAQCBzaG1lbV9wd3JpdGVfc2xvdyhzdHJ1Y3QgcGFnZSAq cGFnZSwgaW50IG9mZnNldCwgaW50IGxlbmd0aCwKPiAgICAqLwo+ICAgc3RhdGljIGludAo+ICAg c2htZW1fcHdyaXRlKHN0cnVjdCBwYWdlICpwYWdlLCBpbnQgb2Zmc2V0LCBpbnQgbGVuLCBjaGFy IF9fdXNlciAqdXNlcl9kYXRhLAo+IC0JICAgICBib29sIHBhZ2VfZG9fYml0MTdfc3dpenpsaW5n LAo+ICAgCSAgICAgYm9vbCBuZWVkc19jbGZsdXNoX2JlZm9yZSwKPiAgIAkgICAgIGJvb2wgbmVl ZHNfY2xmbHVzaF9hZnRlcikKPiAgIHsKPiArCWNoYXIgKnZhZGRyOwo+ICAgCWludCByZXQ7Cj4g ICAKPiAtCXJldCA9IC1FTk9ERVY7Cj4gLQlpZiAoIXBhZ2VfZG9fYml0MTdfc3dpenpsaW5nKSB7 Cj4gLQkJY2hhciAqdmFkZHIgPSBrbWFwX2F0b21pYyhwYWdlKTsKPiArCXZhZGRyID0ga21hcChw YWdlKTsKPiAgIAo+IC0JCWlmIChuZWVkc19jbGZsdXNoX2JlZm9yZSkKPiAtCQkJZHJtX2NsZmx1 c2hfdmlydF9yYW5nZSh2YWRkciArIG9mZnNldCwgbGVuKTsKPiAtCQlyZXQgPSBfX2NvcHlfZnJv bV91c2VyX2luYXRvbWljKHZhZGRyICsgb2Zmc2V0LCB1c2VyX2RhdGEsIGxlbik7Cj4gLQkJaWYg KG5lZWRzX2NsZmx1c2hfYWZ0ZXIpCj4gLQkJCWRybV9jbGZsdXNoX3ZpcnRfcmFuZ2UodmFkZHIg KyBvZmZzZXQsIGxlbik7Cj4gKwlpZiAobmVlZHNfY2xmbHVzaF9iZWZvcmUpCj4gKwkJZHJtX2Ns Zmx1c2hfdmlydF9yYW5nZSh2YWRkciArIG9mZnNldCwgbGVuKTsKPiAgIAo+IC0JCWt1bm1hcF9h dG9taWModmFkZHIpOwo+IC0JfQo+IC0JaWYgKHJldCA9PSAwKQo+IC0JCXJldHVybiByZXQ7Cj4g KwlyZXQgPSBfX2NvcHlfZnJvbV91c2VyKHZhZGRyICsgb2Zmc2V0LCB1c2VyX2RhdGEsIGxlbik7 Cj4gKwlpZiAoIXJldCAmJiBuZWVkc19jbGZsdXNoX2FmdGVyKQo+ICsJCWRybV9jbGZsdXNoX3Zp cnRfcmFuZ2UodmFkZHIgKyBvZmZzZXQsIGxlbik7Cj4gKwo+ICsJa3VubWFwKHBhZ2UpOwo+ICAg Cj4gLQlyZXR1cm4gc2htZW1fcHdyaXRlX3Nsb3cocGFnZSwgb2Zmc2V0LCBsZW4sIHVzZXJfZGF0 YSwKPiAtCQkJCSBwYWdlX2RvX2JpdDE3X3N3aXp6bGluZywKPiAtCQkJCSBuZWVkc19jbGZsdXNo X2JlZm9yZSwKPiAtCQkJCSBuZWVkc19jbGZsdXNoX2FmdGVyKTsKPiArCXJldHVybiByZXQgPyAt RUZBVUxUIDogMDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludAo+IEBAIC0xNTQzLDcgKzE0MDMs NiBAQCBpOTE1X2dlbV9zaG1lbV9wd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUob2JqLT5iYXNl LmRldik7Cj4gICAJdm9pZCBfX3VzZXIgKnVzZXJfZGF0YTsKPiAgIAl1NjQgcmVtYWluOwo+IC0J dW5zaWduZWQgaW50IG9ial9kb19iaXQxN19zd2l6emxpbmc7Cj4gICAJdW5zaWduZWQgaW50IHBh cnRpYWxfY2FjaGVsaW5lX3dyaXRlOwo+ICAgCXVuc2lnbmVkIGludCBuZWVkc19jbGZsdXNoOwo+ ICAgCXVuc2lnbmVkIGludCBvZmZzZXQsIGlkeDsKPiBAQCAtMTU1OCwxMCArMTQxNyw2IEBAIGk5 MTVfZ2VtX3NobWVtX3B3cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAg CWlmIChyZXQpCj4gICAJCXJldHVybiByZXQ7Cj4gICAKPiAtCW9ial9kb19iaXQxN19zd2l6emxp bmcgPSAwOwo+IC0JaWYgKGk5MTVfZ2VtX29iamVjdF9uZWVkc19iaXQxN19zd2l6emxlKG9iaikp Cj4gLQkJb2JqX2RvX2JpdDE3X3N3aXp6bGluZyA9IEJJVCgxNyk7Cj4gLQo+ICAgCS8qIElmIHdl IGRvbid0IG92ZXJ3cml0ZSBhIGNhY2hlbGluZSBjb21wbGV0ZWx5IHdlIG5lZWQgdG8gYmUKPiAg IAkgKiBjYXJlZnVsIHRvIGhhdmUgdXAtdG8tZGF0ZSBkYXRhIGJ5IGZpcnN0IGNsZmx1c2hpbmcu IERvbid0Cj4gICAJICogb3ZlcmNvbXBsaWNhdGUgdGhpbmdzIGFuZCBmbHVzaCB0aGUgZW50aXJl IHBhdGNoLgo+IEBAIC0xNTc1LDE0ICsxNDMwLDE0IEBAIGk5MTVfZ2VtX3NobWVtX3B3cml0ZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCW9mZnNldCA9IG9mZnNldF9pbl9w YWdlKGFyZ3MtPm9mZnNldCk7Cj4gICAJZm9yIChpZHggPSBhcmdzLT5vZmZzZXQgPj4gUEFHRV9T SElGVDsgcmVtYWluOyBpZHgrKykgewo+ICAgCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IGk5MTVfZ2Vt X29iamVjdF9nZXRfcGFnZShvYmosIGlkeCk7Cj4gLQkJaW50IGxlbmd0aDsKPiArCQl1bnNpZ25l ZCBpbnQgbGVuZ3RoOwo+ICAgCj4gLQkJbGVuZ3RoID0gcmVtYWluOwo+IC0JCWlmIChvZmZzZXQg KyBsZW5ndGggPiBQQUdFX1NJWkUpCj4gKwkJaWYgKHJlbWFpbiA+IFBBR0VfU0laRSAtIG9mZnNl dCkKPiAgIAkJCWxlbmd0aCA9IFBBR0VfU0laRSAtIG9mZnNldDsKPiArCQllbHNlCj4gKwkJCWxl bmd0aCA9IHJlbWFpbjsKPiAgIAo+ICAgCQlyZXQgPSBzaG1lbV9wd3JpdGUocGFnZSwgb2Zmc2V0 LCBsZW5ndGgsIHVzZXJfZGF0YSwKPiAtCQkJCSAgIHBhZ2VfdG9fcGh5cyhwYWdlKSAmIG9ial9k b19iaXQxN19zd2l6emxpbmcsCj4gICAJCQkJICAgKG9mZnNldCB8IGxlbmd0aCkgJiBwYXJ0aWFs X2NhY2hlbGluZV93cml0ZSwKPiAgIAkJCQkgICBuZWVkc19jbGZsdXNoICYgQ0xGTFVTSF9BRlRF Uik7Cj4gICAJCWlmIChyZXQpCj4gCgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRr by51cnN1bGluQGludGVsLmNvbT4KCkJ1dCBhcyBtZW50aW9uZWQgYmVmb3JlIHBsZWFzZSBnYXRo ZXIgc29tZSBtb3JlIGFja3MgY29uY2VybmluZyB0aGUgdUFQSSAKICByZW1vdmFsLiBXZWxsIG5v dCB1QVBJIHJlbW92YWwgYnV0IGJlaGF2aW91ci9mdW5jdGlvbmFsaXR5IGNoYW5nZS4KClJlZ2Fy ZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==