From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id D5F436E1D7 for ; Wed, 6 Mar 2019 23:42:01 +0000 (UTC) References: <20190305014742.3598-1-dhinakaran.pandiyan@intel.com> <20190305014742.3598-4-dhinakaran.pandiyan@intel.com> From: Clinton Taylor Message-ID: <01ae5b3f-cd6a-7e02-c4d0-c04b55a66c40@intel.com> Date: Wed, 6 Mar 2019 14:42:54 -0800 MIME-Version: 1.0 In-Reply-To: <20190305014742.3598-4-dhinakaran.pandiyan@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 4/7] lib/igt_fb: Use rendercopy for rendering into compressed buffers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Dhinakaran Pandiyan , igt-dev@lists.freedesktop.org List-ID: UmV2aWV3ZWQtYnk6IENsaW50IFRheWxvciA8Q2xpbnRvbi5BLlRheWxvckBpbnRlbC5jb20+CgoK LUNsaW50CgoKT24gMy80LzE5IDU6NDcgUE0sIERoaW5ha2FyYW4gUGFuZGl5YW4gd3JvdGU6Cj4g RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPgo+ IFBsdWcgaW4gcmVuZGVyY29weSB0byB0aGUgY2Fpcm8gc3VyZmFjZSBzdHVmZiBzbyB0aGF0IHdl IGNhbgo+IGdlbmVyYXRlIGNvbXByZXNzZWQgYnVmZmVycyB3aXRoIGNhaXJvLgo+Cj4gdjI6IHMv bW9kaWZpZXJfaGFzX2Njcy9pc19jY3NfbW9kaWZpZXIvCj4KPiB2MzogRnJvbSBESwo+ICAgU2V0 IGJ1Zi5icHAgd2hlbiBpbml0aWFsaXppbmcgYW5kIHJlYmFzZS4KPiB2NDogRnJvbSBESwo+IEZp eCBZZi10aWxlZCBCR1IgZm9ybWF0cwo+Cj4gQ2M6IENsaW50b24gVGF5bG9yIDxjbGludG9uLmEu dGF5bG9yQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFu ZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgbGliL2lndF9m Yi5jIHwgMTU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLQo+ICAgMSBmaWxlIGNoYW5nZWQsIDE0NCBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMo LSkKPgo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2ZiLmMKPiBpbmRleCA5 ZGNhMmE0Ni4uYjQ4MGEwYTEgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9mYi5jCj4gKysrIGIvbGli L2lndF9mYi5jCj4gQEAgLTI5OSw2ICsyOTksNyBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXpl KGludCBmZCwgdWludDY0X3QgdGlsaW5nLCBpbnQgZmJfYnBwLAo+ICAgCQl9Cj4gICAJCWJyZWFr Owo+ICAgCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6Cj4gKwljYXNlIExPQ0FM X0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKPiAgIAkJaWd0X3JlcXVpcmVfaW50ZWwoZmQp Owo+ICAgCQlpZiAoaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoZmQpKSA9PSAyKSB7Cj4g ICAJCQkqd2lkdGhfcmV0ID0gMTI4Owo+IEBAIC0zMTIsNiArMzEzLDcgQEAgdm9pZCBpZ3RfZ2V0 X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90IHRpbGluZywgaW50IGZiX2JwcCwKPiAgIAkJ fQo+ICAgCQlicmVhazsKPiAgIAljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoK PiArCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKPiAgIAkJaWd0X3Jl cXVpcmVfaW50ZWwoZmQpOwo+ICAgCQlzd2l0Y2ggKGZiX2JwcCkgewo+ICAgCQljYXNlIDg6Cj4g QEAgLTM2MiwxMCArMzY0LDE5IEBAIHZvaWQgaWd0X2dldF9mYl90aWxlX3NpemUoaW50IGZkLCB1 aW50NjRfdCB0aWxpbmcsIGludCBmYl9icHAsCj4gICAJfQo+ICAgfQo+ICAgCj4gK3N0YXRpYyBi b29sIGlzX2Njc19tb2RpZmllcih1aW50NjRfdCBtb2RpZmllcikKPiArewo+ICsJcmV0dXJuIG1v ZGlmaWVyID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAo+ICsJCW1vZGlm aWVyID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M7Cj4gK30KPiArCj4gICBz dGF0aWMgdW5zaWduZWQgZmJfcGxhbmVfd2lkdGgoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGlu dCBwbGFuZSkKPiAgIHsKPiAgIAljb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3Jt YXQgPSBsb29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJtX2Zvcm1hdCk7Cj4gICAKPiArCWlmIChpc19j Y3NfbW9kaWZpZXIoZmItPnRpbGluZykgJiYgcGxhbmUgPT0gMSkKPiArCQlyZXR1cm4gRElWX1JP VU5EX1VQKGZiLT53aWR0aCwgMTAyNCkgKiAxMjg7Cj4gKwo+ICAgCWlmIChwbGFuZSA9PSAwKQo+ ICAgCQlyZXR1cm4gZmItPndpZHRoOwo+ICAgCj4gQEAgLTM3NiwxMyArMzg3LDE5IEBAIHN0YXRp YyB1bnNpZ25lZCBmYl9wbGFuZV9icHAoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGludCBwbGFu ZSkKPiAgIHsKPiAgIAljb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQgPSBs b29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJtX2Zvcm1hdCk7Cj4gICAKPiAtCXJldHVybiBmb3JtYXQt PnBsYW5lX2JwcFtwbGFuZV07Cj4gKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxpbmcpICYm IHBsYW5lID09IDEpCj4gKwkJcmV0dXJuIDg7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIGZvcm1hdC0+ cGxhbmVfYnBwW3BsYW5lXTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHVuc2lnbmVkIGZiX3BsYW5l X2hlaWdodChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQo+ICAgewo+ICAgCWNv bnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCA9IGxvb2t1cF9kcm1fZm9ybWF0 KGZiLT5kcm1fZm9ybWF0KTsKPiAgIAo+ICsJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+dGlsaW5n KSAmJiBwbGFuZSA9PSAxKQo+ICsJCXJldHVybiBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgNTEy KSAqIDMyOwo+ICsKPiAgIAlpZiAocGxhbmUgPT0gMCkKPiAgIAkJcmV0dXJuIGZiLT5oZWlnaHQ7 Cj4gICAKPiBAQCAtMzkzLDcgKzQxMCwxMCBAQCBzdGF0aWMgaW50IGZiX251bV9wbGFuZXMoY29u c3Qgc3RydWN0IGlndF9mYiAqZmIpCj4gICB7Cj4gICAJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNj X3N0cnVjdCAqZm9ybWF0ID0gbG9va3VwX2RybV9mb3JtYXQoZmItPmRybV9mb3JtYXQpOwo+ICAg Cj4gLQlyZXR1cm4gZm9ybWF0LT5udW1fcGxhbmVzOwo+ICsJaWYgKGlzX2Njc19tb2RpZmllcihm Yi0+dGlsaW5nKSkKPiArCQlyZXR1cm4gMjsKPiArCWVsc2UKPiArCQlyZXR1cm4gZm9ybWF0LT5u dW1fcGxhbmVzOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBmYl9pbml0KHN0cnVjdCBpZ3Rf ZmIgKmZiLAo+IEBAIC01NjEsOCArNTgxLDEwIEBAIHVpbnQ2NF90IGlndF9mYl9tb2RfdG9fdGls aW5nKHVpbnQ2NF90IG1vZGlmaWVyKQo+ICAgCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hf VElMRUQ6Cj4gICAJCXJldHVybiBJOTE1X1RJTElOR19YOwo+ICAgCWNhc2UgTE9DQUxfSTkxNV9G T1JNQVRfTU9EX1lfVElMRUQ6Cj4gKwljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVE X0NDUzoKPiAgIAkJcmV0dXJuIEk5MTVfVElMSU5HX1k7Cj4gICAJY2FzZSBMT0NBTF9JOTE1X0ZP Uk1BVF9NT0RfWWZfVElMRUQ6Cj4gKwljYXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxF RF9DQ1M6Cj4gICAJCXJldHVybiBJOTE1X1RJTElOR19ZZjsKPiAgIAlkZWZhdWx0Ogo+ICAgCQlp Z3RfYXNzZXJ0KDApOwo+IEBAIC0xNDU5LDggKzE0ODEsNTQgQEAgc3RydWN0IGZiX2JsaXRfdXBs b2FkIHsKPiAgIAlpbnQgZmQ7Cj4gICAJc3RydWN0IGlndF9mYiAqZmI7Cj4gICAJc3RydWN0IGZi X2JsaXRfbGluZWFyIGxpbmVhcjsKPiArCWRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1ncjsKPiArCXN0 cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2g7Cj4gICB9Owo+ICAgCj4gK3N0YXRpYyB2b2lk IGluaXRfYnVmKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCwKPiArCQkgICAgIHN0cnVjdCBp Z3RfYnVmICpidWYsCj4gKwkJICAgICBjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwKPiArCQkgICAg IGNvbnN0IGNoYXIgKm5hbWUpCj4gK3sKPiArCWlndF9hc3NlcnRfZXEoZmItPm9mZnNldHNbMF0s IDApOwo+ICsKPiArCWJ1Zi0+Ym8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhibGl0LT5idWZt Z3IsIGJsaXQtPmZkLAo+ICsJCQkJCSAgbmFtZSwgZmItPmdlbV9oYW5kbGUpOwo+ICsJYnVmLT50 aWxpbmcgPSBpZ3RfZmJfbW9kX3RvX3RpbGluZyhmYi0+dGlsaW5nKTsKPiArCWJ1Zi0+c3RyaWRl ID0gZmItPnN0cmlkZXNbMF07Cj4gKwlidWYtPmJwcCA9IGZiLT5wbGFuZV9icHBbMF07Cj4gKwli dWYtPnNpemUgPSBmYi0+c2l6ZTsKPiArCj4gKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxp bmcpKSB7Cj4gKwkJaWd0X2Fzc2VydF9lcShmYi0+c3RyaWRlc1swXSAmIDEyNywgMCk7Cj4gKwkJ aWd0X2Fzc2VydF9lcShmYi0+c3RyaWRlc1sxXSAmIDEyNywgMCk7Cj4gKwo+ICsJCWJ1Zi0+YXV4 Lm9mZnNldCA9IGZiLT5vZmZzZXRzWzFdOwo+ICsJCWJ1Zi0+YXV4LnN0cmlkZSA9IGZiLT5zdHJp ZGVzWzFdOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByZW5kZXJjb3B5KHN0cnVjdCBm Yl9ibGl0X3VwbG9hZCAqYmxpdCwKPiArCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9mYiAqZHN0 X2ZiLAo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2ZiICpzcmNfZmIpCj4gK3sKPiArCXN0 cnVjdCBpZ3RfYnVmIHNyYyA9IHt9LCBkc3QgPSB7fTsKPiArCWlndF9yZW5kZXJfY29weWZ1bmNf dCByZW5kZXJfY29weSA9Cj4gKwkJaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoaW50ZWxfZ2V0X2Ry bV9kZXZpZChibGl0LT5mZCkpOwo+ICsKPiArCWlndF9yZXF1aXJlKHJlbmRlcl9jb3B5KTsKPiAr Cj4gKwlpZ3RfYXNzZXJ0X2VxKGRzdF9mYi0+b2Zmc2V0c1swXSwgMCk7Cj4gKwlpZ3RfYXNzZXJ0 X2VxKHNyY19mYi0+b2Zmc2V0c1swXSwgMCk7Cj4gKwo+ICsJaW5pdF9idWYoYmxpdCwgJnNyYywg c3JjX2ZiLCAiY2Fpcm8gcmVuZGVyY29weSBzcmMiKTsKPiArCWluaXRfYnVmKGJsaXQsICZkc3Qs IGRzdF9mYiwgImNhaXJvIHJlbmRlcmNvcHkgZHN0Iik7Cj4gKwo+ICsJcmVuZGVyX2NvcHkoYmxp dC0+YmF0Y2gsIE5VTEwsCj4gKwkJICAgICZzcmMsIDAsIDAsIGRzdF9mYi0+cGxhbmVfd2lkdGhb MF0sIGRzdF9mYi0+cGxhbmVfaGVpZ2h0WzBdLAo+ICsJCSAgICAmZHN0LCAwLCAwKTsKPiArfQo+ ICsKPiAgIHN0YXRpYyB2b2lkIGJsaXRjb3B5KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmRzdF9mYiwK PiAgIAkJICAgICBjb25zdCBzdHJ1Y3QgaWd0X2ZiICpzcmNfZmIpCj4gICB7Cj4gQEAgLTE0OTgs NyArMTU2NiwxMCBAQCBzdGF0aWMgdm9pZCBmcmVlX2xpbmVhcl9tYXBwaW5nKHN0cnVjdCBmYl9i bGl0X3VwbG9hZCAqYmxpdCkKPiAgIAlnZW1fc2V0X2RvbWFpbihmZCwgbGluZWFyLT5mYi5nZW1f aGFuZGxlLAo+ICAgCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwgMCk7Cj4gICAKPiAtCWJs aXRjb3B5KGZiLCAmbGluZWFyLT5mYik7Cj4gKwlpZiAoYmxpdC0+YmF0Y2gpCj4gKwkJcmVuZGVy Y29weShibGl0LCBmYiwgJmxpbmVhci0+ZmIpOwo+ICsJZWxzZQo+ICsJCWJsaXRjb3B5KGZiLCAm bGluZWFyLT5mYik7Cj4gICAKPiAgIAlnZW1fc3luYyhmZCwgbGluZWFyLT5mYi5nZW1faGFuZGxl KTsKPiAgIAlnZW1fY2xvc2UoZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSk7Cj4gQEAgLTE1MTUs OCArMTU4NiwyNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2NhaXJvX3N1cmZhY2VfX2JsaXQodm9p ZCAqYXJnKQo+ICAgCWZyZWUoYmxpdCk7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZvaWQgc2V0dXBf bGluZWFyX21hcHBpbmcoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2JsaXRf bGluZWFyICpsaW5lYXIpCj4gK3N0YXRpYyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9fcmVu ZGVyY29weSh2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCA9 IGFyZzsKPiArCj4gKwlibGl0LT5mYi0+Y2Fpcm9fc3VyZmFjZSA9IE5VTEw7Cj4gKwo+ICsJZnJl ZV9saW5lYXJfbWFwcGluZyhibGl0KTsKPiArCj4gKwlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJs aXQtPmJhdGNoKTsKPiArCWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShibGl0LT5idWZtZ3IpOwo+ ICsKPiArCWZyZWUoYmxpdCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNldHVwX2xpbmVhcl9t YXBwaW5nKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCkKPiAgIHsKPiArCWludCBmZCA9IGJs aXQtPmZkOwo+ICsJc3RydWN0IGlndF9mYiAqZmIgPSBibGl0LT5mYjsKPiArCXN0cnVjdCBmYl9i bGl0X2xpbmVhciAqbGluZWFyID0gJmJsaXQtPmxpbmVhcjsKPiArCj4gICAJLyoKPiAgIAkgKiBX ZSBjcmVhdGUgYSBsaW5lYXIgQk8gdGhhdCB3ZSdsbCBtYXAgZm9yIHRoZSBDUFUgdG8gd3JpdGUg dG8gKHVzaW5nCj4gICAJICogY2Fpcm8pLiBUaGlzIGxpbmVhciBibyB3aWxsIGJlIHRoZW4gYmxp dHRlZCB0byBpdHMgZmluYWwKPiBAQCAtMTUzNSw3ICsxNjI0LDEwIEBAIHN0YXRpYyB2b2lkIHNl dHVwX2xpbmVhcl9tYXBwaW5nKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9i bGl0X2xpbmVhCj4gICAJZ2VtX3NldF9kb21haW4oZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSwK PiAgIAkJCUk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwo+ICAgCj4gLQlibGl0Y29weSgmbGluZWFy LT5mYiwgZmIpOwo+ICsJaWYgKGJsaXQtPmJhdGNoKQo+ICsJCXJlbmRlcmNvcHkoYmxpdCwgJmxp bmVhci0+ZmIsIGZiKTsKPiArCWVsc2UKPiArCQlibGl0Y29weSgmbGluZWFyLT5mYiwgZmIpOwo+ ICAgCj4gICAJZ2VtX3N5bmMoZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSk7Cj4gICAKPiBAQCAt MTU1MiwxMiArMTY0NCwxMiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fYmxp dChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAgCXN0cnVjdCBmYl9ibGl0X3VwbG9hZCAq YmxpdDsKPiAgIAljYWlyb19mb3JtYXRfdCBjYWlyb19mb3JtYXQ7Cj4gICAKPiAtCWJsaXQgPSBt YWxsb2Moc2l6ZW9mKCpibGl0KSk7Cj4gKwlibGl0ID0gY2FsbG9jKDEsIHNpemVvZigqYmxpdCkp Owo+ICAgCWlndF9hc3NlcnQoYmxpdCk7Cj4gICAKPiAgIAlibGl0LT5mZCA9IGZkOwo+ICAgCWJs aXQtPmZiID0gZmI7Cj4gLQlzZXR1cF9saW5lYXJfbWFwcGluZyhmZCwgZmIsICZibGl0LT5saW5l YXIpOwo+ICsJc2V0dXBfbGluZWFyX21hcHBpbmcoYmxpdCk7Cj4gICAKPiAgIAljYWlyb19mb3Jt YXQgPSBkcm1fZm9ybWF0X3RvX2NhaXJvKGZiLT5kcm1fZm9ybWF0KTsKPiAgIAlmYi0+Y2Fpcm9f c3VyZmFjZSA9Cj4gQEAgLTE1NzIsNiArMTY2NCwzNiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fp cm9fc3VyZmFjZV9fYmxpdChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAgCQkJCSAgICBi bGl0LCBkZXN0cm95X2NhaXJvX3N1cmZhY2VfX2JsaXQpOwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB2 b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19yZW5kZXJjb3B5KGludCBmZCwgc3RydWN0IGlndF9m YiAqZmIpCj4gK3sKPiArCXN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdDsKPiArCWNhaXJvX2Zv cm1hdF90IGNhaXJvX2Zvcm1hdDsKPiArCj4gKwlibGl0ID0gY2FsbG9jKDEsIHNpemVvZigqYmxp dCkpOwo+ICsJaWd0X2Fzc2VydChibGl0KTsKPiArCj4gKwlibGl0LT5mZCA9IGZkOwo+ICsJYmxp dC0+ZmIgPSBmYjsKPiArCj4gKwlibGl0LT5idWZtZ3IgPSBkcm1faW50ZWxfYnVmbWdyX2dlbV9p bml0KGZkLCA0MDk2KTsKPiArCWJsaXQtPmJhdGNoID0gaW50ZWxfYmF0Y2hidWZmZXJfYWxsb2Mo YmxpdC0+YnVmbWdyLAo+ICsJCQkJCSAgICAgIGludGVsX2dldF9kcm1fZGV2aWQoZmQpKTsKPiAr Cj4gKwlzZXR1cF9saW5lYXJfbWFwcGluZyhibGl0KTsKPiArCj4gKwljYWlyb19mb3JtYXQgPSBk cm1fZm9ybWF0X3RvX2NhaXJvKGZiLT5kcm1fZm9ybWF0KTsKPiArCWZiLT5jYWlyb19zdXJmYWNl ID0KPiArCQljYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShibGl0LT5saW5lYXIu bWFwLAo+ICsJCQkJCQkgICAgY2Fpcm9fZm9ybWF0LAo+ICsJCQkJCQkgICAgZmItPndpZHRoLCBm Yi0+aGVpZ2h0LAo+ICsJCQkJCQkgICAgYmxpdC0+bGluZWFyLmZiLnN0cmlkZXNbMF0pOwo+ICsJ ZmItPmRvbWFpbiA9IEk5MTVfR0VNX0RPTUFJTl9HVFQ7Cj4gKwo+ICsJY2Fpcm9fc3VyZmFjZV9z ZXRfdXNlcl9kYXRhKGZiLT5jYWlyb19zdXJmYWNlLAo+ICsJCQkJICAgIChjYWlyb191c2VyX2Rh dGFfa2V5X3QgKiljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fcmVuZGVyY29weSwKPiArCQkJCSAgICBi bGl0LCBkZXN0cm95X2NhaXJvX3N1cmZhY2VfX3JlbmRlcmNvcHkpOwo+ICt9Cj4gKwo+ICAgLyoq Cj4gICAgKiBpZ3RfZGlydHlfZmI6Cj4gICAgKiBAZmQ6IG9wZW4gZHJtIGZpbGUgZGVzY3JpcHRv cgo+IEBAIC0yMzM3LDcgKzI0NTksNyBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2NhaXJvX3N1cmZh Y2VfX2NvbnZlcnQodm9pZCAqYXJnKQo+ICAgCj4gICBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9f c3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAgewo+IC0Jc3Ry dWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBtYWxsb2Moc2l6ZW9mKCpibGl0KSk7 Cj4gKwlzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3VwbG9hZCAqYmxpdCA9IGNhbGxvYygxLCBzaXpl b2YoKmJsaXQpKTsKPiAgIAlzdHJ1Y3QgZmJfY29udmVydCBjdnQgPSB7IH07Cj4gICAJY29uc3Qg c3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZiA9IGxvb2t1cF9kcm1fZm9ybWF0KGZiLT5kcm1f Zm9ybWF0KTsKPiAgIAl1bnNpZ25lZCBkcm1fZm9ybWF0Owo+IEBAIC0yMzY5LDYgKzI0OTEsMTMg QEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2NvbnZlcnQoaW50IGZkLCBzdHJ1 Y3QgaWd0X2ZiICpmYikKPiAgIAo+ICAgCWJsaXQtPmJhc2UuZmQgPSBmZDsKPiAgIAlibGl0LT5i YXNlLmZiID0gZmI7Cj4gKwo+ICsJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+dGlsaW5nKSkgewo+ ICsJCWJsaXQtPmJhc2UuYnVmbWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5 Nik7Cj4gKwkJYmxpdC0+YmFzZS5iYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJsaXQt PmJhc2UuYnVmbWdyLAo+ICsJCQkJCQkgICBpbnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7Cj4gKwl9 Cj4gKwo+ICAgCWJsaXQtPnNoYWRvd19wdHIgPSBpZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19i dWZmZXIoZmQsIGRybV9mb3JtYXQsCj4gICAJCQkJCQkJICAgICBmYi0+d2lkdGgsCj4gICAJCQkJ CQkJICAgICBmYi0+aGVpZ2h0LAo+IEBAIC0yMzc2LDggKzI1MDUsMTAgQEAgc3RhdGljIHZvaWQg Y3JlYXRlX2NhaXJvX3N1cmZhY2VfX2NvbnZlcnQoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikK PiAgIAlpZ3RfYXNzZXJ0KGJsaXQtPnNoYWRvd19wdHIpOwo+ICAgCj4gICAJaWYgKGZiLT50aWxp bmcgPT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPiAtCSAgICBmYi0+dGlsaW5n ID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkgewo+IC0JCXNldHVwX2xpbmVhcl9t YXBwaW5nKGZkLCBmYiwgJmJsaXQtPmJhc2UubGluZWFyKTsKPiArCSAgICBmYi0+dGlsaW5nID09 IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCB8fAo+ICsJICAgIGZiLT50aWxpbmcgPT0g TE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8Cj4gKwkgICAgZmItPnRpbGluZyA9 PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTKSB7Cj4gKwkJc2V0dXBfbGluZWFy X21hcHBpbmcoJmJsaXQtPmJhc2UpOwo+ICAgCX0gZWxzZSB7Cj4gICAJCWJsaXQtPmJhc2UubGlu ZWFyLmZiID0gKmZiOwo+ICAgCQlibGl0LT5iYXNlLmxpbmVhci5mYi5nZW1faGFuZGxlID0gMDsK PiBAQCAtMjQ1Niw4ICsyNTg3LDEwIEBAIGNhaXJvX3N1cmZhY2VfdCAqaWd0X2dldF9jYWlyb19z dXJmYWNlKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCj4gICAJCSAgICAoKGYtPmNhaXJvX2lk ID09IENBSVJPX0ZPUk1BVF9JTlZBTElEKSAmJgo+ICAgCQkgICAgIChmLT5waXhtYW5faWQgIT0g UElYTUFOX2ludmFsaWQpKSkKPiAgIAkJCWNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGZk LCBmYik7Cj4gKwkJZWxzZSBpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxpbmcpKQo+ICsJCQlj cmVhdGVfY2Fpcm9fc3VyZmFjZV9fcmVuZGVyY29weShmZCwgZmIpOwo+ICAgCQllbHNlIGlmIChm Yi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gLQkJICAgIGZi LT50aWxpbmcgPT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKQo+ICsJCQkgZmItPnRp bGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpCj4gICAJCQljcmVhdGVfY2Fp cm9fc3VyZmFjZV9fYmxpdChmZCwgZmIpOwo+ICAgCQllbHNlCj4gICAJCQljcmVhdGVfY2Fpcm9f c3VyZmFjZV9fZ3R0KGZkLCBmYik7Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0 LWRldg==