From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id C9AD9895C1 for ; Thu, 21 Feb 2019 13:58:44 +0000 (UTC) Date: Thu, 21 Feb 2019 15:58:40 +0200 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Message-ID: <20190221135840.GK20097@intel.com> References: <20190221024123.17516-1-dhinakaran.pandiyan@intel.com> <20190221024123.17516-3-dhinakaran.pandiyan@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190221024123.17516-3-dhinakaran.pandiyan@intel.com> Subject: Re: [igt-dev] [HAX 3/5] lib/igt_fb: Use rendercopy for rendering into compressed buffers List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Dhinakaran Pandiyan Cc: igt-dev@lists.freedesktop.org List-ID: T24gV2VkLCBGZWIgMjAsIDIwMTkgYXQgMDY6NDE6MjFQTSAtMDgwMCwgRGhpbmFrYXJhbiBQYW5k aXlhbiB3cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPgo+IAo+IFBsdWcgaW4gcmVuZGVyY29weSB0byB0aGUgY2Fpcm8gc3VyZmFjZSBz dHVmZiBzbyB0aGF0IHdlIGNhbgo+IGdlbmVyYXRlIGNvbXByZXNzZWQgYnVmZmVycyB3aXRoIGNh aXJvLgo+IAo+IHYyOiBzL21vZGlmaWVyX2hhc19jY3MvaXNfY2NzX21vZGlmaWVyLwo+IAo+IHYz OiBGcm9tIERLCj4gU2V0IGJ1Zi5icHAgd2hlbiBpbml0aWFsaXppbmcgYW5kIHJlYmFzZS4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4u cGFuZGl5YW5AaW50ZWwuY29tPgo+IC0tLQo+ICBsaWIvaWd0X2ZiLmMgfCAxNTAgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCj4gIDEgZmlsZSBjaGFu Z2VkLCAxMzkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwo+IGluZGV4IDQ2MmFmZWMyLi5lMDI4ODI4MiAx MDA2NDQKPiAtLS0gYS9saWIvaWd0X2ZiLmMKPiArKysgYi9saWIvaWd0X2ZiLmMKPiBAQCAtMjkw LDYgKzI5MCw3IEBAIHZvaWQgaWd0X2dldF9mYl90aWxlX3NpemUoaW50IGZkLCB1aW50NjRfdCB0 aWxpbmcsIGludCBmYl9icHAsCj4gIAkJfQo+ICAJCWJyZWFrOwo+ICAJY2FzZSBMT0NBTF9JOTE1 X0ZPUk1BVF9NT0RfWV9USUxFRDoKPiArCWNhc2UgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElM RURfQ0NTOgo+ICAJCWlndF9yZXF1aXJlX2ludGVsKGZkKTsKPiAgCQlpZiAoaW50ZWxfZ2VuKGlu dGVsX2dldF9kcm1fZGV2aWQoZmQpKSA9PSAyKSB7Cj4gIAkJCSp3aWR0aF9yZXQgPSAxMjg7Cj4g QEAgLTMwMyw2ICszMDQsNyBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXplKGludCBmZCwgdWlu dDY0X3QgdGlsaW5nLCBpbnQgZmJfYnBwLAo+ICAJCX0KPiAgCQlicmVhazsKPiAgCWNhc2UgTE9D QUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgo+ICsJY2FzZSBMT0NBTF9JOTE1X0ZPUk1BVF9N T0RfWWZfVElMRURfQ0NTOgo+ICAJCWlndF9yZXF1aXJlX2ludGVsKGZkKTsKPiAgCQlzd2l0Y2gg KGZiX2JwcCkgewo+ICAJCWNhc2UgODoKPiBAQCAtMzI4LDEwICszMzAsMjEgQEAgdm9pZCBpZ3Rf Z2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90IHRpbGluZywgaW50IGZiX2JwcCwKPiAg CX0KPiAgfQo+ICAKPiArc3RhdGljIGJvb2wgaXNfY2NzX21vZGlmaWVyKHVpbnQ2NF90IG1vZGlm aWVyKQo+ICt7Cj4gKwlyZXR1cm4gbW9kaWZpZXIgPT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lf VElMRURfQ0NTIHx8Cj4gKwkJbW9kaWZpZXIgPT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lmX1RJ TEVEX0NDUzsKPiArfQo+ICsKPiAgc3RhdGljIHVuc2lnbmVkIGZiX3BsYW5lX3dpZHRoKGNvbnN0 IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBmb3Jt YXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCA9IGxvb2t1cF9kcm1fZm9ybWF0KGZiLT5kcm1fZm9ybWF0 KTsKPiAgCj4gKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxpbmcpICYmIHBsYW5lID09IDEp Cj4gKwkJcmV0dXJuIERJVl9ST1VORF9VUChmYi0+d2lkdGgsIDEwMjQpICogMTI4Owo+ICsJaWYg KGZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAxKQo+ICsJCXJl dHVybiBESVZfUk9VTkRfVVAoZmItPndpZHRoLCAyKTsKClRoaXMgbnYxMiB0aGluZyBkb2Vzbid0 IHNlZW0gcmVsZXZhbnQgdG8gdGhlIHBhdGNoLgoKPiArCj4gIAlpZiAocGxhbmUgPT0gMCkKPiAg CQlyZXR1cm4gZmItPndpZHRoOwo+ICAKPiBAQCAtMzQyLDEzICszNTUsMjEgQEAgc3RhdGljIHVu c2lnbmVkIGZiX3BsYW5lX2JwcChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQo+ ICB7Cj4gIAljb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQgPSBsb29rdXBf ZHJtX2Zvcm1hdChmYi0+ZHJtX2Zvcm1hdCk7Cj4gIAo+IC0JcmV0dXJuIGZvcm1hdC0+cGxhbmVf YnBwW3BsYW5lXTsKPiArCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPnRpbGluZykgJiYgcGxhbmUg PT0gMSkKPiArCQlyZXR1cm4gODsKPiArCWVsc2UKPiArCQlyZXR1cm4gZm9ybWF0LT5wbGFuZV9i cHBbcGxhbmVdOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdW5zaWduZWQgZmJfcGxhbmVfaGVpZ2h0KGNv bnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpCj4gIHsKPiAgCWNvbnN0IHN0cnVjdCBm b3JtYXRfZGVzY19zdHJ1Y3QgKmZvcm1hdCA9IGxvb2t1cF9kcm1fZm9ybWF0KGZiLT5kcm1fZm9y bWF0KTsKPiAgCj4gKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxpbmcpICYmIHBsYW5lID09 IDEpCj4gKwkJcmV0dXJuIERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCA1MTIpICogMzI7Cj4gKwlp ZiAoZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyICYmIHBsYW5lID09IDEpCj4gKwkJ cmV0dXJuIERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCAyKTsKPiArCj4gIAlpZiAocGxhbmUgPT0g MCkKPiAgCQlyZXR1cm4gZmItPmhlaWdodDsKPiAgCj4gQEAgLTM1OSw3ICszODAsMTAgQEAgc3Rh dGljIGludCBmYl9udW1fcGxhbmVzKGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICB7Cj4gIAlj b25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmb3JtYXQgPSBsb29rdXBfZHJtX2Zvcm1h dChmYi0+ZHJtX2Zvcm1hdCk7Cj4gIAo+IC0JcmV0dXJuIGZvcm1hdC0+bnVtX3BsYW5lczsKPiAr CWlmIChpc19jY3NfbW9kaWZpZXIoZmItPnRpbGluZykpCj4gKwkJcmV0dXJuIDI7Cj4gKwllbHNl Cj4gKwkJcmV0dXJuIGZvcm1hdC0+bnVtX3BsYW5lczsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQg ZmJfaW5pdChzdHJ1Y3QgaWd0X2ZiICpmYiwKPiBAQCAtNTE4LDggKzU0MiwxMCBAQCB1aW50NjRf dCBpZ3RfZmJfbW9kX3RvX3RpbGluZyh1aW50NjRfdCBtb2RpZmllcikKPiAgCWNhc2UgTE9DQUxf STkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6Cj4gIAkJcmV0dXJuIEk5MTVfVElMSU5HX1g7Cj4gIAlj YXNlIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgo+ICsJY2FzZSBMT0NBTF9JOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRF9DQ1M6Cj4gIAkJcmV0dXJuIEk5MTVfVElMSU5HX1k7Cj4gIAljYXNl IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRDoKPiArCWNhc2UgTE9DQUxfSTkxNV9GT1JN QVRfTU9EX1lmX1RJTEVEX0NDUzoKPiAgCQlyZXR1cm4gSTkxNV9USUxJTkdfWWY7Cj4gIAlkZWZh dWx0Ogo+ICAJCWlndF9hc3NlcnQoMCk7Cj4gQEAgLTE0MDUsOCArMTQzMSw1NCBAQCBzdHJ1Y3Qg ZmJfYmxpdF91cGxvYWQgewo+ICAJaW50IGZkOwo+ICAJc3RydWN0IGlndF9mYiAqZmI7Cj4gIAlz dHJ1Y3QgZmJfYmxpdF9saW5lYXIgbGluZWFyOwo+ICsJZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdy Owo+ICsJc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaDsKPiAgfTsKPiAgCj4gK3N0YXRp YyB2b2lkIGluaXRfYnVmKHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCwKPiArCQkgICAgIHN0 cnVjdCBpZ3RfYnVmICpidWYsCj4gKwkJICAgICBjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwKPiAr CQkgICAgIGNvbnN0IGNoYXIgKm5hbWUpCj4gK3sKPiArCWlndF9hc3NlcnRfZXEoZmItPm9mZnNl dHNbMF0sIDApOwo+ICsKPiArCWJ1Zi0+Ym8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhibGl0 LT5idWZtZ3IsIGJsaXQtPmZkLAo+ICsJCQkJCSAgbmFtZSwgZmItPmdlbV9oYW5kbGUpOwo+ICsJ YnVmLT50aWxpbmcgPSBpZ3RfZmJfbW9kX3RvX3RpbGluZyhmYi0+dGlsaW5nKTsKPiArCWJ1Zi0+ c3RyaWRlID0gZmItPnN0cmlkZXNbMF07Cj4gKwlidWYtPmJwcCA9IGZiLT5wbGFuZV9icHBbMF07 Cj4gKwlidWYtPnNpemUgPSBmYi0+c2l6ZTsKPiArCj4gKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZi LT50aWxpbmcpKSB7Cj4gKwkJaWd0X2Fzc2VydF9lcShmYi0+c3RyaWRlc1swXSAmIDEyNywgMCk7 Cj4gKwkJaWd0X2Fzc2VydF9lcShmYi0+c3RyaWRlc1sxXSAmIDEyNywgMCk7Cj4gKwo+ICsJCWJ1 Zi0+YXV4Lm9mZnNldCA9IGZiLT5vZmZzZXRzWzFdOwo+ICsJCWJ1Zi0+YXV4LnN0cmlkZSA9IGZi LT5zdHJpZGVzWzFdOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByZW5kZXJjb3B5KHN0 cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCwKPiArCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9m YiAqZHN0X2ZiLAo+ICsJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2ZiICpzcmNfZmIpCj4gK3sK PiArCXN0cnVjdCBpZ3RfYnVmIHNyYyA9IHt9LCBkc3QgPSB7fTsKPiArCWlndF9yZW5kZXJfY29w eWZ1bmNfdCByZW5kZXJfY29weSA9Cj4gKwkJaWd0X2dldF9yZW5kZXJfY29weWZ1bmMoaW50ZWxf Z2V0X2RybV9kZXZpZChibGl0LT5mZCkpOwo+ICsKPiArCWlndF9yZXF1aXJlKHJlbmRlcl9jb3B5 KTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2VxKGRzdF9mYi0+b2Zmc2V0c1swXSwgMCk7Cj4gKwlpZ3Rf YXNzZXJ0X2VxKHNyY19mYi0+b2Zmc2V0c1swXSwgMCk7Cj4gKwo+ICsJaW5pdF9idWYoYmxpdCwg JnNyYywgc3JjX2ZiLCAiY2Fpcm8gcmVuZGVyY29weSBzcmMiKTsKPiArCWluaXRfYnVmKGJsaXQs ICZkc3QsIGRzdF9mYiwgImNhaXJvIHJlbmRlcmNvcHkgZHN0Iik7Cj4gKwo+ICsJcmVuZGVyX2Nv cHkoYmxpdC0+YmF0Y2gsIE5VTEwsCj4gKwkJICAgICZzcmMsIDAsIDAsIGRzdF9mYi0+cGxhbmVf d2lkdGhbMF0sIGRzdF9mYi0+cGxhbmVfaGVpZ2h0WzBdLAo+ICsJCSAgICAmZHN0LCAwLCAwKTsK PiArfQo+ICsKPiAgc3RhdGljIHZvaWQgYmxpdGNvcHkoY29uc3Qgc3RydWN0IGlndF9mYiAqZHN0 X2ZiLAo+ICAJCSAgICAgY29uc3Qgc3RydWN0IGlndF9mYiAqc3JjX2ZiKQo+ICB7Cj4gQEAgLTE0 NDQsNyArMTUxNiwxMCBAQCBzdGF0aWMgdm9pZCBmcmVlX2xpbmVhcl9tYXBwaW5nKHN0cnVjdCBm Yl9ibGl0X3VwbG9hZCAqYmxpdCkKPiAgCWdlbV9zZXRfZG9tYWluKGZkLCBsaW5lYXItPmZiLmdl bV9oYW5kbGUsCj4gIAkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQsIDApOwo+ICAKPiAtCWJs aXRjb3B5KGZiLCAmbGluZWFyLT5mYik7Cj4gKwlpZiAoYmxpdC0+YmF0Y2gpCj4gKwkJcmVuZGVy Y29weShibGl0LCBmYiwgJmxpbmVhci0+ZmIpOwo+ICsJZWxzZQo+ICsJCWJsaXRjb3B5KGZiLCAm bGluZWFyLT5mYik7Cj4gIAo+ICAJZ2VtX3N5bmMoZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSk7 Cj4gIAlnZW1fY2xvc2UoZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSk7Cj4gQEAgLTE0NjEsOCAr MTUzNiwyNiBAQCBzdGF0aWMgdm9pZCBkZXN0cm95X2NhaXJvX3N1cmZhY2VfX2JsaXQodm9pZCAq YXJnKQo+ICAJZnJlZShibGl0KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgc2V0dXBfbGluZWFy X21hcHBpbmcoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2JsaXRfbGluZWFy ICpsaW5lYXIpCj4gK3N0YXRpYyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFjZV9fcmVuZGVyY29w eSh2b2lkICphcmcpCj4gIHsKPiArCXN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCA9IGFyZzsK PiArCj4gKwlibGl0LT5mYi0+Y2Fpcm9fc3VyZmFjZSA9IE5VTEw7Cj4gKwo+ICsJZnJlZV9saW5l YXJfbWFwcGluZyhibGl0KTsKPiArCj4gKwlpbnRlbF9iYXRjaGJ1ZmZlcl9mcmVlKGJsaXQtPmJh dGNoKTsKPiArCWRybV9pbnRlbF9idWZtZ3JfZGVzdHJveShibGl0LT5idWZtZ3IpOwo+ICsKPiAr CWZyZWUoYmxpdCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNldHVwX2xpbmVhcl9tYXBwaW5n KHN0cnVjdCBmYl9ibGl0X3VwbG9hZCAqYmxpdCkKPiArewo+ICsJaW50IGZkID0gYmxpdC0+ZmQ7 Cj4gKwlzdHJ1Y3QgaWd0X2ZiICpmYiA9IGJsaXQtPmZiOwo+ICsJc3RydWN0IGZiX2JsaXRfbGlu ZWFyICpsaW5lYXIgPSAmYmxpdC0+bGluZWFyOwo+ICsKPiAgCS8qCj4gIAkgKiBXZSBjcmVhdGUg YSBsaW5lYXIgQk8gdGhhdCB3ZSdsbCBtYXAgZm9yIHRoZSBDUFUgdG8gd3JpdGUgdG8gKHVzaW5n Cj4gIAkgKiBjYWlybykuIFRoaXMgbGluZWFyIGJvIHdpbGwgYmUgdGhlbiBibGl0dGVkIHRvIGl0 cyBmaW5hbAo+IEBAIC0xNDgxLDcgKzE1NzQsMTAgQEAgc3RhdGljIHZvaWQgc2V0dXBfbGluZWFy X21hcHBpbmcoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2JsaXRfbGluZWEK PiAgCWdlbV9zZXRfZG9tYWluKGZkLCBsaW5lYXItPmZiLmdlbV9oYW5kbGUsCj4gIAkJCUk5MTVf R0VNX0RPTUFJTl9HVFQsIDApOwo+ICAKPiAtCWJsaXRjb3B5KCZsaW5lYXItPmZiLCBmYik7Cj4g KwlpZiAoYmxpdC0+YmF0Y2gpCj4gKwkJcmVuZGVyY29weShibGl0LCAmbGluZWFyLT5mYiwgZmIp Owo+ICsJZWxzZQo+ICsJCWJsaXRjb3B5KCZsaW5lYXItPmZiLCBmYik7Cj4gIAo+ICAJZ2VtX3N5 bmMoZmQsIGxpbmVhci0+ZmIuZ2VtX2hhbmRsZSk7Cj4gIAo+IEBAIC0xNDk4LDEyICsxNTk0LDEy IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19ibGl0KGludCBmZCwgc3RydWN0 IGlndF9mYiAqZmIpCj4gIAlzdHJ1Y3QgZmJfYmxpdF91cGxvYWQgKmJsaXQ7Cj4gIAljYWlyb19m b3JtYXRfdCBjYWlyb19mb3JtYXQ7Cj4gIAo+IC0JYmxpdCA9IG1hbGxvYyhzaXplb2YoKmJsaXQp KTsKPiArCWJsaXQgPSBjYWxsb2MoMSwgc2l6ZW9mKCpibGl0KSk7Cj4gIAlpZ3RfYXNzZXJ0KGJs aXQpOwo+ICAKPiAgCWJsaXQtPmZkID0gZmQ7Cj4gIAlibGl0LT5mYiA9IGZiOwo+IC0Jc2V0dXBf bGluZWFyX21hcHBpbmcoZmQsIGZiLCAmYmxpdC0+bGluZWFyKTsKPiArCXNldHVwX2xpbmVhcl9t YXBwaW5nKGJsaXQpOwo+ICAKPiAgCWNhaXJvX2Zvcm1hdCA9IGRybV9mb3JtYXRfdG9fY2Fpcm8o ZmItPmRybV9mb3JtYXQpOwo+ICAJZmItPmNhaXJvX3N1cmZhY2UgPQo+IEBAIC0xNTE4LDYgKzE2 MTQsMzYgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2JsaXQoaW50IGZkLCBz dHJ1Y3QgaWd0X2ZiICpmYikKPiAgCQkJCSAgICBibGl0LCBkZXN0cm95X2NhaXJvX3N1cmZhY2Vf X2JsaXQpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fcmVu ZGVyY29weShpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICt7Cj4gKwlzdHJ1Y3QgZmJfYmxp dF91cGxvYWQgKmJsaXQ7Cj4gKwljYWlyb19mb3JtYXRfdCBjYWlyb19mb3JtYXQ7Cj4gKwo+ICsJ YmxpdCA9IGNhbGxvYygxLCBzaXplb2YoKmJsaXQpKTsKPiArCWlndF9hc3NlcnQoYmxpdCk7Cj4g Kwo+ICsJYmxpdC0+ZmQgPSBmZDsKPiArCWJsaXQtPmZiID0gZmI7Cj4gKwo+ICsJYmxpdC0+YnVm bWdyID0gZHJtX2ludGVsX2J1Zm1ncl9nZW1faW5pdChmZCwgNDA5Nik7Cj4gKwlibGl0LT5iYXRj aCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGJsaXQtPmJ1Zm1nciwKPiArCQkJCQkgICAgICBp bnRlbF9nZXRfZHJtX2RldmlkKGZkKSk7Cj4gKwo+ICsJc2V0dXBfbGluZWFyX21hcHBpbmcoYmxp dCk7Cj4gKwo+ICsJY2Fpcm9fZm9ybWF0ID0gZHJtX2Zvcm1hdF90b19jYWlybyhmYi0+ZHJtX2Zv cm1hdCk7Cj4gKwlmYi0+Y2Fpcm9fc3VyZmFjZSA9Cj4gKwkJY2Fpcm9faW1hZ2Vfc3VyZmFjZV9j cmVhdGVfZm9yX2RhdGEoYmxpdC0+bGluZWFyLm1hcCwKPiArCQkJCQkJICAgIGNhaXJvX2Zvcm1h dCwKPiArCQkJCQkJICAgIGZiLT53aWR0aCwgZmItPmhlaWdodCwKPiArCQkJCQkJICAgIGJsaXQt PmxpbmVhci5mYi5zdHJpZGVzWzBdKTsKPiArCWZiLT5kb21haW4gPSBJOTE1X0dFTV9ET01BSU5f R1RUOwo+ICsKPiArCWNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShmYi0+Y2Fpcm9fc3VyZmFj ZSwKPiArCQkJCSAgICAoY2Fpcm9fdXNlcl9kYXRhX2tleV90ICopY3JlYXRlX2NhaXJvX3N1cmZh Y2VfX3JlbmRlcmNvcHksCj4gKwkJCQkgICAgYmxpdCwgZGVzdHJveV9jYWlyb19zdXJmYWNlX19y ZW5kZXJjb3B5KTsKPiArfQo+ICsKPiAgLyoqCj4gICAqIGlndF9kaXJ0eV9mYjoKPiAgICogQGZk OiBvcGVuIGRybSBmaWxlIGRlc2NyaXB0b3IKPiBAQCAtMjI3OCw4ICsyNDA0LDggQEAgc3RhdGlj IHZvaWQgZGVzdHJveV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KHZvaWQgKmFyZykKPiAgCj4gIHN0 YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGln dF9mYiAqZmIpCj4gIHsKPiAtCXN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkICpibGl0ID0g bWFsbG9jKHNpemVvZigqYmxpdCkpOwo+IC0Jc3RydWN0IGZiX2NvbnZlcnQgY3Z0ID0geyB9Owo+ ICsJc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBjYWxsb2MoMSwgc2l6ZW9m KCpibGl0KSk7Cj4gKwlzdHJ1Y3QgZmJfY29udmVydCBjdnQgPSB7IDAgfTsKClVnbHkgMC4KCj4g IAljb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpmID0gbG9va3VwX2RybV9mb3JtYXQo ZmItPmRybV9mb3JtYXQpOwo+ICAJdW5zaWduZWQgZHJtX2Zvcm1hdDsKPiAgCWNhaXJvX2Zvcm1h dF90IGNhaXJvX2lkOwo+IEBAIC0yMzE4LDcgKzI0NDQsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVf Y2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+ICAKPiAg CWlmIChmYi0+dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gIAkg ICAgZmItPnRpbGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpIHsKPiAtCQlz ZXR1cF9saW5lYXJfbWFwcGluZyhmZCwgZmIsICZibGl0LT5iYXNlLmxpbmVhcik7Cj4gKwkJc2V0 dXBfbGluZWFyX21hcHBpbmcoJmJsaXQtPmJhc2UpOwo+ICAJfSBlbHNlIHsKPiAgCQlibGl0LT5i YXNlLmxpbmVhci5mYiA9ICpmYjsKPiAgCQlibGl0LT5iYXNlLmxpbmVhci5mYi5nZW1faGFuZGxl ID0gMDsKPiBAQCAtMjM5Nyw4ICsyNTIzLDEwIEBAIGNhaXJvX3N1cmZhY2VfdCAqaWd0X2dldF9j YWlyb19zdXJmYWNlKGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCj4gIAkJICAgICgoZi0+Y2Fp cm9faWQgPT0gQ0FJUk9fRk9STUFUX0lOVkFMSUQpICYmCj4gIAkJICAgICAoZi0+cGl4bWFuX2lk ICE9IFBJWE1BTl9pbnZhbGlkKSkpCj4gIAkJCWNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0 KGZkLCBmYik7Cj4gKwkJZWxzZSBpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT50aWxpbmcpKQo+ICsJ CQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fcmVuZGVyY29weShmZCwgZmIpOwo+ICAJCWVsc2UgaWYg KGZiLT50aWxpbmcgPT0gTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPiAtCQkgICAg ZmItPnRpbGluZyA9PSBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpCj4gKwkJCSBmYi0+ dGlsaW5nID09IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkKPiAgCQkJY3JlYXRlX2Nh aXJvX3N1cmZhY2VfX2JsaXQoZmQsIGZiKTsKPiAgCQllbHNlCj4gIAkJCWNyZWF0ZV9jYWlyb19z dXJmYWNlX19ndHQoZmQsIGZiKTsKPiAtLSAKPiAyLjE3LjEKPiAKPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGlndC1kZXYgbWFpbGluZyBsaXN0Cj4g aWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBt YWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2