From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 223546E8F4 for ; Fri, 31 Aug 2018 13:41:15 +0000 (UTC) Date: Fri, 31 Aug 2018 16:41:10 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Message-ID: <20180831134110.GY5565@intel.com> References: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: Subject: Re: [igt-dev] [PATCH v6 03/13] fb: Create common function to convert frame formats 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: Maxime Ripard Cc: Paul Kocialkowski , eben@raspberrypi.org, igt-dev@lists.freedesktop.org, Thomas Petazzoni List-ID: T24gRnJpLCBBdWcgMzEsIDIwMTggYXQgMDM6MTI6MTJQTSArMDIwMCwgTWF4aW1lIFJpcGFyZCB3 cm90ZToKPiBUaGUgY3VycmVudCBjb2RlIHRvIGNvbnZlcnQgYmV0d2VlbiB0d28gYnVmZmVyIGZv cm1hdHMgaXMgcXVpdGUgdGllZCB0byB0aGUKPiBjYWlybyBzdXJmYWNlIGluZnJhc3RydWN0dXJl LiBTaW5jZSB3ZSdsbCB3YW50IHRvIHJldXNlIGl0LCBtYWtlIHRoYXQKPiBmdW5jdGlvbiBtb3Jl IGdlbmVyaWMgYnkgaW50cm9kdWNpbmcgYSBjb21tb24gc3RydWN0dXJlIHRoYXQgcGFzc2VzIGFs bCB0aGUKPiBhcmd1bWVudHMgYW5kIGEgY29tbW9uIGZ1bmN0aW9uIHRoYXQgd2lsbCBjYWxsIHRo ZSByaWdodCBmdW5jdGlvbnMgd2UKPiBuZWVkZWQuCj4gCj4gUmV2aWV3ZWQtYnk6IEVyaWMgQW5o b2x0IDxlcmljQGFuaG9sdC5uZXQ+Cj4gU2lnbmVkLW9mZi1ieTogTWF4aW1lIFJpcGFyZCA8bWF4 aW1lLnJpcGFyZEBib290bGluLmNvbT4KPiAtLS0KPiAgbGliL2lndF9mYi5jIHwgMjQzICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxl IGNoYW5nZWQsIDE1MyBpbnNlcnRpb25zKCspLCA5MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5jCj4gaW5kZXggNDA2MWZlZGVjMGMxLi4x OTE0MjMzNzg2YTUgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9mYi5jCj4gKysrIGIvbGliL2lndF9m Yi5jCj4gQEAgLTEzODQsNiArMTM4NCwyNCBAQCBzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3VwbG9h ZCB7Cj4gIAlzdHJ1Y3QgZmJfYmxpdF9saW5lYXIgbGluZWFyOwo+ICB9Owo+ICAKPiArc3RydWN0 IGZiX2NvbnZlcnRfYnVmIHsKPiArCXZvaWQJCQkqcHRyOwo+ICsJdW5zaWduZWQgaW50CQlzdHJp ZGU7Cj4gKwl1bnNpZ25lZCBpbnQJCXNpemU7Cj4gKwl1aW50MzJfdAkJZm10Owo+ICsJZW51bSBp Z3RfY29sb3JfZW5jb2RpbmcJY29sb3JfZW5jb2Rpbmc7Cj4gKwllbnVtIGlndF9jb2xvcl9yYW5n ZQljb2xvcl9yYW5nZTsKPiArCXVpbnQzMl90CQlvZmZzZXRzWzRdOwo+ICt9OwoKSSB3b25kZXIg aWYgd2UgY2FuIGp1c3QgdXNlIGlndF9mYiBmb3IgdGhhdCBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5n IG1vc3QKb2YgaXQ/CgpJIGhhdmUgYSBwYXRjaCB0aGF0IGRpZCBzb21ldGhpbmcgbGlrZSB0aGF0 IGZvciB0aGUgZmJfYmxpdF91cGxvYWQKc3R1ZmY6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNr dG9wLm9yZy9wYXRjaC8yMzk4MzIvCgo+ICsKPiArc3RydWN0IGZiX2NvbnZlcnQgewo+ICsJdW5z aWduZWQgaW50CQl3aWR0aDsKPiArCXVuc2lnbmVkIGludAkJaGVpZ2h0Owo+ICsKPiArCXN0cnVj dCBmYl9jb252ZXJ0X2J1Zglkc3Q7Cj4gKwlzdHJ1Y3QgZmJfY29udmVydF9idWYJc3JjOwo+ICt9 Owo+ICsKPiAgc3RhdGljIHVpbnQ4X3QgY2xhbXByZ2IoZmxvYXQgdmFsKQo+ICB7Cj4gIAlyZXR1 cm4gY2xhbXAoKGludCkodmFsICsgMC41ZiksIDAsIDI1NSk7Cj4gQEAgLTE0MDQsMjcgKzE0MjIs MjggQEAgc3RhdGljIHZvaWQgd3JpdGVfcmdiKHVpbnQ4X3QgKnJnYjI0LCBjb25zdCBzdHJ1Y3Qg aWd0X3ZlYzQgKnJnYikKPiAgCXJnYjI0WzBdID0gY2xhbXByZ2IocmdiLT5kWzJdKTsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgY29udmVydF9udjEyX3RvX3JnYjI0KHN0cnVjdCBpZ3RfZmIgKmZi LCBzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3VwbG9hZCAqYmxpdCkKPiArc3RhdGljIHZvaWQgY29u dmVydF9udjEyX3RvX3JnYjI0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gIHsKPiAgCWludCBp LCBqOwo+ICAJY29uc3QgdWludDhfdCAqeSwgKnV2Owo+IC0JdWludDhfdCAqcmdiMjQgPSBibGl0 LT5yZ2IyNC5tYXA7Cj4gLQl1bnNpZ25lZCByZ2IyNF9zdHJpZGUgPSBibGl0LT5yZ2IyNC5zdHJp ZGUsIHBsYW5hcl9zdHJpZGUgPSBibGl0LT5saW5lYXIuc3RyaWRlOwo+IC0JdWludDhfdCAqYnVm ID0gbWFsbG9jKGJsaXQtPmxpbmVhci5zaXplKTsKPiAtCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0 X3ljYmNyX3RvX3JnYl9tYXRyaXgoZmItPmNvbG9yX2VuY29kaW5nLAo+IC0JCQkJCQkgICAgZmIt PmNvbG9yX3JhbmdlKTsKPiArCXVpbnQ4X3QgKnJnYjI0ID0gY3Z0LT5kc3QucHRyOwo+ICsJdW5z aWduZWQgaW50IHJnYjI0X3N0cmlkZSA9IGN2dC0+ZHN0LnN0cmlkZTsKPiArCXVuc2lnbmVkIGlu dCBwbGFuYXJfc3RyaWRlID0gY3Z0LT5zcmMuc3RyaWRlOwo+ICsJdWludDhfdCAqYnVmID0gbWFs bG9jKGN2dC0+c3JjLnNpemUpOwo+ICsJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9f cmdiX21hdHJpeChjdnQtPnNyYy5jb2xvcl9lbmNvZGluZywKPiArCQkJCQkJICAgIGN2dC0+c3Jj LmNvbG9yX3JhbmdlKTsKPiAgCj4gIAkvKgo+ICAJICogUmVhZGluZyBmcm9tIHRoZSBCTyBpcyBh d2Z1bGx5IHNsb3cgYmVjYXVzZSBvZiBsYWNrIG9mIHJlYWQgY2FjaGluZywKPiAgCSAqIGl0J3Mg ZmFzdGVyIHRvIGNvcHkgdGhlIHdob2xlIEJPIHRvIGEgdGVtcG9yYXJ5IGJ1ZmZlciBhbmQgY29u dmVydAo+ICAJICogZnJvbSB0aGVyZS4KPiAgCSAqLwo+IC0JaWd0X21lbWNweV9mcm9tX3djKGJ1 ZiwgYmxpdC0+bGluZWFyLm1hcCwgYmxpdC0+bGluZWFyLnNpemUpOwo+IC0JeSA9ICZidWZbYmxp dC0+bGluZWFyLm9mZnNldHNbMF1dOwo+IC0JdXYgPSAmYnVmW2JsaXQtPmxpbmVhci5vZmZzZXRz WzFdXTsKPiArCWlndF9tZW1jcHlfZnJvbV93YyhidWYsIGN2dC0+c3JjLnB0ciwgY3Z0LT5zcmMu c2l6ZSk7Cj4gKwl5ID0gY3Z0LT5zcmMucHRyICsgY3Z0LT5zcmMub2Zmc2V0c1swXTsKPiArCXV2 ID0gY3Z0LT5zcmMucHRyICsgY3Z0LT5zcmMub2Zmc2V0c1sxXTsKPiAgCj4gLQlmb3IgKGkgPSAw OyBpIDwgZmItPmhlaWdodCAvIDI7IGkrKykgewo+IC0JCWZvciAoaiA9IDA7IGogPCBmYi0+d2lk dGggLyAyOyBqKyspIHsKPiArCWZvciAoaSA9IDA7IGkgPCBjdnQtPmhlaWdodCAvIDI7IGkrKykg ewo+ICsJCWZvciAoaiA9IDA7IGogPCBjdnQtPndpZHRoIC8gMjsgaisrKSB7Cj4gIAkJCS8qIENv bnZlcnQgMngyIHBpeGVsIGJsb2NrcyAqLwo+ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2WzRdOwo+ ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiWzRdOwo+IEBAIC0xNDQ5LDcgKzE0NjgsNyBAQCBzdGF0 aWMgdm9pZCBjb252ZXJ0X252MTJfdG9fcmdiMjQoc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCBm Yl9jb252ZXJ0X2JsaXRfdXBsbwo+ICAJCQl3cml0ZV9yZ2IoJnJnYjI0W2ogKiA4ICsgNCArIHJn YjI0X3N0cmlkZV0sICZyZ2JbM10pOwo+ICAJCX0KPiAgCj4gLQkJaWYgKGZiLT53aWR0aCAmIDEp IHsKPiArCQlpZiAoY3Z0LT53aWR0aCAmIDEpIHsKPiAgCQkJLyogQ29udmVydCAxeDIgcGl4ZWwg YmxvY2sgKi8KPiAgCQkJc3RydWN0IGlndF92ZWM0IHl1dlsyXTsKPiAgCQkJc3RydWN0IGlndF92 ZWM0IHJnYlsyXTsKPiBAQCAtMTQ3Myw5ICsxNDkyLDkgQEAgc3RhdGljIHZvaWQgY29udmVydF9u djEyX3RvX3JnYjI0KHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3Vw bG8KPiAgCQl1diArPSBwbGFuYXJfc3RyaWRlOwo+ICAJfQo+ICAKPiAtCWlmIChmYi0+aGVpZ2h0 ICYgMSkgewo+ICsJaWYgKGN2dC0+aGVpZ2h0ICYgMSkgewo+ICAJCS8qIENvbnZlcnQgbGFzdCBy b3cgKi8KPiAtCQlmb3IgKGogPSAwOyBqIDwgZmItPndpZHRoIC8gMjsgaisrKSB7Cj4gKwkJZm9y IChqID0gMDsgaiA8IGN2dC0+d2lkdGggLyAyOyBqKyspIHsKPiAgCQkJLyogQ29udmVydCAyeDEg cGl4ZWwgYmxvY2tzICovCj4gIAkJCXN0cnVjdCBpZ3RfdmVjNCB5dXZbMl07Cj4gIAkJCXN0cnVj dCBpZ3RfdmVjNCByZ2JbMl07Cj4gQEAgLTE0OTMsNyArMTUxMiw3IEBAIHN0YXRpYyB2b2lkIGNv bnZlcnRfbnYxMl90b19yZ2IyNChzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZlcnRf YmxpdF91cGxvCj4gIAkJCXdyaXRlX3JnYigmcmdiMjRbaiAqIDggKyA0XSwgJnJnYlswXSk7Cj4g IAkJfQo+ICAKPiAtCQlpZiAoZmItPndpZHRoICYgMSkgewo+ICsJCWlmIChjdnQtPndpZHRoICYg MSkgewo+ICAJCQkvKiBDb252ZXJ0IHNpbmdsZSBwaXhlbCAqLwo+ICAJCQlzdHJ1Y3QgaWd0X3Zl YzQgeXV2Owo+ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiOwo+IEBAIC0xNTEyLDIyICsxNTMxLDIy IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfbnYxMl90b19yZ2IyNChzdHJ1Y3QgaWd0X2ZiICpmYiwg c3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvCj4gIAlmcmVlKGJ1Zik7Cj4gIH0KPiAgCj4gLXN0 YXRpYyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9fbnYxMihzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0 IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQpCj4gK3N0YXRpYyB2b2lkIGNvbnZlcnRfcmdi MjRfdG9fbnYxMihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+ICB7Cj4gIAlpbnQgaSwgajsKPiAt CXVpbnQ4X3QgKnkgPSAmYmxpdC0+bGluZWFyLm1hcFtibGl0LT5saW5lYXIub2Zmc2V0c1swXV07 Cj4gLQl1aW50OF90ICp1diA9ICZibGl0LT5saW5lYXIubWFwW2JsaXQtPmxpbmVhci5vZmZzZXRz WzFdXTsKPiAtCWNvbnN0IHVpbnQ4X3QgKnJnYjI0ID0gYmxpdC0+cmdiMjQubWFwOwo+IC0JdW5z aWduZWQgcmdiMjRfc3RyaWRlID0gYmxpdC0+cmdiMjQuc3RyaWRlOwo+IC0JdW5zaWduZWQgcGxh bmFyX3N0cmlkZSA9IGJsaXQtPmxpbmVhci5zdHJpZGU7Cj4gLQlzdHJ1Y3QgaWd0X21hdDQgbSA9 IGlndF9yZ2JfdG9feWNiY3JfbWF0cml4KGZiLT5jb2xvcl9lbmNvZGluZywKPiAtCQkJCQkJICAg IGZiLT5jb2xvcl9yYW5nZSk7Cj4gLQo+IC0JaWd0X2Fzc2VydF9mKGZiLT5kcm1fZm9ybWF0ID09 IERSTV9GT1JNQVRfTlYxMiwKPiArCXVpbnQ4X3QgKnkgPSBjdnQtPmRzdC5wdHIgKyBjdnQtPmRz dC5vZmZzZXRzWzBdOwo+ICsJdWludDhfdCAqdXYgPSBjdnQtPmRzdC5wdHIgKyBjdnQtPmRzdC5v ZmZzZXRzWzFdOwo+ICsJY29uc3QgdWludDhfdCAqcmdiMjQgPSBjdnQtPnNyYy5wdHI7Cj4gKwl1 bnNpZ25lZCByZ2IyNF9zdHJpZGUgPSBjdnQtPnNyYy5zdHJpZGU7Cj4gKwl1bnNpZ25lZCBwbGFu YXJfc3RyaWRlID0gY3Z0LT5kc3Quc3RyaWRlOwo+ICsJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3Rf cmdiX3RvX3ljYmNyX21hdHJpeChjdnQtPmRzdC5jb2xvcl9lbmNvZGluZywKPiArCQkJCQkJICAg IGN2dC0+ZHN0LmNvbG9yX3JhbmdlKTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2YoY3Z0LT5kc3QuZm10 ID09IERSTV9GT1JNQVRfTlYxMiwKPiAgCQkgICAgICJDb252ZXJzaW9uIG5vdCBpbXBsZW1lbnRl ZCBmb3IgIU5WMTIgcGxhbmFyIGZvcm1hdHNcbiIpOwo+ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBm Yi0+aGVpZ2h0IC8gMjsgaSsrKSB7Cj4gLQkJZm9yIChqID0gMDsgaiA8IGZiLT53aWR0aCAvIDI7 IGorKykgewo+ICsJZm9yIChpID0gMDsgaSA8IGN2dC0+aGVpZ2h0IC8gMjsgaSsrKSB7Cj4gKwkJ Zm9yIChqID0gMDsgaiA8IGN2dC0+d2lkdGggLyAyOyBqKyspIHsKPiAgCQkJLyogQ29udmVydCAy eDIgcGl4ZWwgYmxvY2tzICovCj4gIAkJCXN0cnVjdCBpZ3RfdmVjNCByZ2JbNF07Cj4gIAkJCXN0 cnVjdCBpZ3RfdmVjNCB5dXZbNF07Cj4gQEAgLTE1NTYsNyArMTU3NSw3IEBAIHN0YXRpYyB2b2lk IGNvbnZlcnRfcmdiMjRfdG9fbnYxMihzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZl cnRfYmxpdF91cGxvCj4gIAkJCXV2W2ogKiAyICsgMV0gPSAoeXV2WzBdLmRbMl0gKyB5dXZbMl0u ZFsyXSkgLyAyLjBmOwo+ICAJCX0KPiAgCj4gLQkJaWYgKGZiLT53aWR0aCAmIDEpIHsKPiArCQlp ZiAoY3Z0LT53aWR0aCAmIDEpIHsKPiAgCQkJLyogQ29udmVydCAxeDIgcGl4ZWwgYmxvY2sgKi8K PiAgCQkJc3RydWN0IGlndF92ZWM0IHJnYlsyXTsKPiAgCQkJc3RydWN0IGlndF92ZWM0IHl1dlsy XTsKPiBAQCAtMTU4NSw4ICsxNjA0LDggQEAgc3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90b19u djEyKHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3VwbG8KPiAgCX0K PiAgCj4gIAkvKiBMYXN0IHJvdyBjYW5ub3QgYmUgaW50ZXJwb2xhdGVkIGJldHdlZW4gMiBwaXhl bHMsIHRha2UgdGhlIHNpbmdsZSB2YWx1ZSAqLwo+IC0JaWYgKGZiLT5oZWlnaHQgJiAxKSB7Cj4g LQkJZm9yIChqID0gMDsgaiA8IGZiLT53aWR0aCAvIDI7IGorKykgewo+ICsJaWYgKGN2dC0+aGVp Z2h0ICYgMSkgewo+ICsJCWZvciAoaiA9IDA7IGogPCBjdnQtPndpZHRoIC8gMjsgaisrKSB7Cj4g IAkJCS8qIENvbnZlcnQgMngxIHBpeGVsIGJsb2NrcyAqLwo+ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQg cmdiWzJdOwo+ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2WzJdOwo+IEBAIC0xNjAzLDcgKzE2MjIs NyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjI0X3RvX252MTIoc3RydWN0IGlndF9mYiAqZmIs IHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsbwo+ICAJCQl1dltqICogMiArIDFdID0geXV2WzBd LmRbMl07Cj4gIAkJfQo+ICAKPiAtCQlpZiAoZmItPndpZHRoICYgMSkgewo+ICsJCWlmIChjdnQt PndpZHRoICYgMSkgewo+ICAJCQkvKiBDb252ZXJ0IHNpbmdsZSBwaXhlbCAqLwo+ICAJCQlzdHJ1 Y3QgaWd0X3ZlYzQgcmdiOwo+ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2Owo+IEBAIC0xNjQwLDI3 ICsxNjU5LDI4IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICp5dXl2X3N3aXp6bGUodWlu dDMyX3QgZm9ybWF0KQo+ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBjb252ZXJ0X3l1eXZf dG9fcmdiMjQoc3RydWN0IGlndF9mYiAqZmIsIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2Fk ICpibGl0KQo+ICtzdGF0aWMgdm9pZCBjb252ZXJ0X3l1eXZfdG9fcmdiMjQoc3RydWN0IGZiX2Nv bnZlcnQgKmN2dCkKPiAgewo+ICAJaW50IGksIGo7Cj4gIAljb25zdCB1aW50OF90ICp5dXl2Owo+ IC0JdWludDhfdCAqcmdiMjQgPSBibGl0LT5yZ2IyNC5tYXA7Cj4gLQl1bnNpZ25lZCByZ2IyNF9z dHJpZGUgPSBibGl0LT5yZ2IyNC5zdHJpZGUsIHl1eXZfc3RyaWRlID0gYmxpdC0+bGluZWFyLnN0 cmlkZTsKPiAtCXVpbnQ4X3QgKmJ1ZiA9IG1hbGxvYyhibGl0LT5saW5lYXIuc2l6ZSk7Cj4gLQlz dHJ1Y3QgaWd0X21hdDQgbSA9IGlndF95Y2Jjcl90b19yZ2JfbWF0cml4KGZiLT5jb2xvcl9lbmNv ZGluZywKPiAtCQkJCQkJICAgIGZiLT5jb2xvcl9yYW5nZSk7Cj4gLQljb25zdCB1bnNpZ25lZCBj aGFyICpzd3ogPSB5dXl2X3N3aXp6bGUoZmItPmRybV9mb3JtYXQpOwo+ICsJdWludDhfdCAqcmdi MjQgPSBjdnQtPmRzdC5wdHI7Cj4gKwl1bnNpZ25lZCBpbnQgcmdiMjRfc3RyaWRlID0gY3Z0LT5k c3Quc3RyaWRlOwo+ICsJdW5zaWduZWQgaW50IHl1eXZfc3RyaWRlID0gY3Z0LT5zcmMuc3RyaWRl Owo+ICsJdWludDhfdCAqYnVmID0gbWFsbG9jKGN2dC0+c3JjLnNpemUpOwo+ICsJc3RydWN0IGln dF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJpeChjdnQtPnNyYy5jb2xvcl9lbmNvZGlu ZywKPiArCQkJCQkJICAgIGN2dC0+c3JjLmNvbG9yX3JhbmdlKTsKPiArCWNvbnN0IHVuc2lnbmVk IGNoYXIgKnN3eiA9IHl1eXZfc3dpenpsZShjdnQtPnNyYy5mbXQpOwo+ICAKPiAgCS8qCj4gIAkg KiBSZWFkaW5nIGZyb20gdGhlIEJPIGlzIGF3ZnVsbHkgc2xvdyBiZWNhdXNlIG9mIGxhY2sgb2Yg cmVhZCBjYWNoaW5nLAo+ICAJICogaXQncyBmYXN0ZXIgdG8gY29weSB0aGUgd2hvbGUgQk8gdG8g YSB0ZW1wb3JhcnkgYnVmZmVyIGFuZCBjb252ZXJ0Cj4gIAkgKiBmcm9tIHRoZXJlLgo+ICAJICov Cj4gLQlpZ3RfbWVtY3B5X2Zyb21fd2MoYnVmLCBibGl0LT5saW5lYXIubWFwLCBibGl0LT5saW5l YXIuc2l6ZSk7Cj4gKwlpZ3RfbWVtY3B5X2Zyb21fd2MoYnVmLCBjdnQtPnNyYy5wdHIsIGN2dC0+ c3JjLnNpemUpOwo+ICAJeXV5diA9IGJ1ZjsKPiAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgZmItPmhl aWdodDsgaSsrKSB7Cj4gLQkJZm9yIChqID0gMDsgaiA8IGZiLT53aWR0aCAvIDI7IGorKykgewo+ ICsJZm9yIChpID0gMDsgaSA8IGN2dC0+aGVpZ2h0OyBpKyspIHsKPiArCQlmb3IgKGogPSAwOyBq IDwgY3Z0LT53aWR0aCAvIDI7IGorKykgewo+ICAJCQkvKiBDb252ZXJ0IDJ4MSBwaXhlbCBibG9j a3MgKi8KPiAgCQkJc3RydWN0IGlndF92ZWM0IHl1dlsyXTsKPiAgCQkJc3RydWN0IGlndF92ZWM0 IHJnYlsyXTsKPiBAQCAtMTY3OCw3ICsxNjk4LDcgQEAgc3RhdGljIHZvaWQgY29udmVydF95dXl2 X3RvX3JnYjI0KHN0cnVjdCBpZ3RfZmIgKmZiLCBzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3VwbG8K PiAgCQkJd3JpdGVfcmdiKCZyZ2IyNFtqICogOCArIDRdLCAmcmdiWzFdKTsKPiAgCQl9Cj4gIAo+ IC0JCWlmIChmYi0+d2lkdGggJiAxKSB7Cj4gKwkJaWYgKGN2dC0+d2lkdGggJiAxKSB7Cj4gIAkJ CXN0cnVjdCBpZ3RfdmVjNCB5dXY7Cj4gIAkJCXN0cnVjdCBpZ3RfdmVjNCByZ2I7Cj4gIAo+IEBA IC0xNjk5LDI1ICsxNzE5LDI1IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfeXV5dl90b19yZ2IyNChz dHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvCj4gIAlmcmVlKGJ1 Zik7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9feXV5dihzdHJ1Y3Qg aWd0X2ZiICpmYiwgc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQpCj4gK3N0YXRp YyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9feXV5dihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQo+ICB7 Cj4gIAlpbnQgaSwgajsKPiAtCXVpbnQ4X3QgKnl1eXYgPSBibGl0LT5saW5lYXIubWFwOwo+IC0J Y29uc3QgdWludDhfdCAqcmdiMjQgPSBibGl0LT5yZ2IyNC5tYXA7Cj4gLQl1bnNpZ25lZCByZ2Iy NF9zdHJpZGUgPSBibGl0LT5yZ2IyNC5zdHJpZGU7Cj4gLQl1bnNpZ25lZCB5dXl2X3N0cmlkZSA9 IGJsaXQtPmxpbmVhci5zdHJpZGU7Cj4gLQlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF9yZ2JfdG9f eWNiY3JfbWF0cml4KGZiLT5jb2xvcl9lbmNvZGluZywKPiAtCQkJCQkJICAgIGZiLT5jb2xvcl9y YW5nZSk7Cj4gLQljb25zdCB1bnNpZ25lZCBjaGFyICpzd3ogPSB5dXl2X3N3aXp6bGUoZmItPmRy bV9mb3JtYXQpOwo+IC0KPiAtCWlndF9hc3NlcnRfZihmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9S TUFUX1lVWVYgfHwKPiAtCQkgICAgIGZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfWVZZVSB8 fAo+IC0JCSAgICAgZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9VWVZZIHx8Cj4gLQkJICAg ICBmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX1ZZVVksCj4gKwl1aW50OF90ICp5dXl2ID0g Y3Z0LT5kc3QucHRyOwo+ICsJY29uc3QgdWludDhfdCAqcmdiMjQgPSBjdnQtPnNyYy5wdHI7Cj4g Kwl1bnNpZ25lZCByZ2IyNF9zdHJpZGUgPSBjdnQtPnNyYy5zdHJpZGU7Cj4gKwl1bnNpZ25lZCB5 dXl2X3N0cmlkZSA9IGN2dC0+ZHN0LnN0cmlkZTsKPiArCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0 X3JnYl90b195Y2Jjcl9tYXRyaXgoY3Z0LT5kc3QuY29sb3JfZW5jb2RpbmcsCj4gKwkJCQkJCSAg ICBjdnQtPmRzdC5jb2xvcl9yYW5nZSk7Cj4gKwljb25zdCB1bnNpZ25lZCBjaGFyICpzd3ogPSB5 dXl2X3N3aXp6bGUoY3Z0LT5kc3QuZm10KTsKPiArCj4gKwlpZ3RfYXNzZXJ0X2YoY3Z0LT5kc3Qu Zm10ID09IERSTV9GT1JNQVRfWVVZViB8fAo+ICsJCSAgICAgY3Z0LT5kc3QuZm10ID09IERSTV9G T1JNQVRfWVZZVSB8fAo+ICsJCSAgICAgY3Z0LT5kc3QuZm10ID09IERSTV9GT1JNQVRfVVlWWSB8 fAo+ICsJCSAgICAgY3Z0LT5kc3QuZm10ID09IERSTV9GT1JNQVRfVllVWSwKPiAgCQkgICAgICJD b252ZXJzaW9uIG5vdCBpbXBsZW1lbnRlZCBmb3IgIVlVWVYgcGxhbmFyIGZvcm1hdHNcbiIpOwo+ ICAKPiAtCWZvciAoaSA9IDA7IGkgPCBmYi0+aGVpZ2h0OyBpKyspIHsKPiAtCQlmb3IgKGogPSAw OyBqIDwgZmItPndpZHRoIC8gMjsgaisrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5oZWln aHQ7IGkrKykgewo+ICsJCWZvciAoaiA9IDA7IGogPCBjdnQtPndpZHRoIC8gMjsgaisrKSB7Cj4g IAkJCS8qIENvbnZlcnQgMngxIHBpeGVsIGJsb2NrcyAqLwo+ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQg cmdiWzJdOwo+ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2WzJdOwo+IEBAIC0xNzM0LDcgKzE3NTQs NyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjI0X3RvX3l1eXYoc3RydWN0IGlndF9mYiAqZmIs IHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsbwo+ICAJCQl5dXl2W2ogKiA0ICsgc3d6WzNdXSA9 ICh5dXZbMF0uZFsyXSArIHl1dlsxXS5kWzJdKSAvIDIuMGY7Cj4gIAkJfQo+ICAKPiAtCQlpZiAo ZmItPndpZHRoICYgMSkgewo+ICsJCWlmIChjdnQtPndpZHRoICYgMSkgewo+ICAJCQlzdHJ1Y3Qg aWd0X3ZlYzQgcmdiOwo+ICAJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2Owo+ICAKPiBAQCAtMTc1Miwy NyArMTc3Miw2NSBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjI0X3RvX3l1eXYoc3RydWN0IGln dF9mYiAqZmIsIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsbwo+ICAJfQo+ICB9Cj4gIAo+ICtz dGF0aWMgdm9pZCBmYl9jb252ZXJ0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4gK3sKPiArCWlm IChjdnQtPmRzdC5mbXQgPT0gRFJNX0ZPUk1BVF9SR0I4ODgpIHsKPiArCQlzd2l0Y2ggKGN2dC0+ c3JjLmZtdCkgewo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+ICsJCQljb252ZXJ0X252MTJf dG9fcmdiMjQoY3Z0KTsKPiArCQkJcmV0dXJuOwo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgo+ ICsJCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+ICsJ CWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgo+ICsJCQljb252ZXJ0X3l1eXZfdG9fcmdiMjQoY3Z0KTsK PiArCQkJcmV0dXJuOwo+ICsJCX0KPiArCX0gZWxzZSBpZiAoY3Z0LT5zcmMuZm10ID09IERSTV9G T1JNQVRfUkdCODg4KSB7Cj4gKwkJc3dpdGNoIChjdnQtPmRzdC5mbXQpIHsKPiArCQljYXNlIERS TV9GT1JNQVRfTlYxMjoKPiArCQkJY29udmVydF9yZ2IyNF90b19udjEyKGN2dCk7Cj4gKwkJCXJl dHVybjsKPiArCQljYXNlIERSTV9GT1JNQVRfWVVZVjoKPiArCQljYXNlIERSTV9GT1JNQVRfWVZZ VToKPiArCQljYXNlIERSTV9GT1JNQVRfVVlWWToKPiArCQljYXNlIERSTV9GT1JNQVRfVllVWToK PiArCQkJY29udmVydF9yZ2IyNF90b195dXl2KGN2dCk7Cj4gKwkJCXJldHVybjsKPiArCQl9Cj4g Kwl9Cj4gKwo+ICsJaWd0X2Fzc2VydF9mKGZhbHNlLAo+ICsJCSAgICAgIkNvbnZlcnNpb24gbm90 IGltcGxlbWVudGVkIChmcm9tIGZvcm1hdCAweCV4IHRvIDB4JXgpXG4iLAo+ICsJCSAgICAgY3Z0 LT5zcmMuZm10LCBjdnQtPmRzdC5mbXQpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZCBkZXN0cm95 X2NhaXJvX3N1cmZhY2VfX2NvbnZlcnQodm9pZCAqYXJnKQo+ICB7Cj4gIAlzdHJ1Y3QgZmJfY29u dmVydF9ibGl0X3VwbG9hZCAqYmxpdCA9IGFyZzsKPiAgCXN0cnVjdCBpZ3RfZmIgKmZiID0gYmxp dC0+ZmI7Cj4gLQo+IC0JLyogQ29udmVydCBsaW5lYXIgcmdiIGJhY2shICovCj4gLQlzd2l0Y2go ZmItPmRybV9mb3JtYXQpIHsKPiAtCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgo+IC0JCWNvbnZlcnRf cmdiMjRfdG9fbnYxMihmYiwgYmxpdCk7Cj4gLQkJYnJlYWs7Cj4gLQljYXNlIERSTV9GT1JNQVRf WVVZVjoKPiAtCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgo+IC0JY2FzZSBEUk1fRk9STUFUX1VZVlk6 Cj4gLQljYXNlIERSTV9GT1JNQVRfVllVWToKPiAtCQljb252ZXJ0X3JnYjI0X3RvX3l1eXYoZmIs IGJsaXQpOwo+IC0JCWJyZWFrOwo+IC0JZGVmYXVsdDoKPiAtCQlpZ3RfYXNzZXJ0X2YoZmFsc2Us ICJDb252ZXJzaW9uIG5vdCBpbXBsZW1lbnRlZCBmb3IgZm9ybWF0cyAweCV4XG4iLAo+IC0JCQkg ICAgIGZiLT5kcm1fZm9ybWF0KTsKPiAtCX0KPiAtCj4gKwlzdHJ1Y3QgZmJfY29udmVydCBjdnQg PSB7Cj4gKwkJLndpZHRoCT0gZmItPndpZHRoLAo+ICsJCS5oZWlnaHQJPSBmYi0+aGVpZ2h0LAo+ ICsKPiArCQkuZHN0CT0gewo+ICsJCQkucHRyCQk9IGJsaXQtPmxpbmVhci5tYXAsCj4gKwkJCS5m bXQJCT0gZmItPmRybV9mb3JtYXQsCj4gKwkJCS5zdHJpZGUJCT0gYmxpdC0+bGluZWFyLnN0cmlk ZSwKPiArCQkJLnNpemUJCT0gYmxpdC0+bGluZWFyLnNpemUsCj4gKwkJCS5jb2xvcl9lbmNvZGlu Zwk9IGZiLT5jb2xvcl9lbmNvZGluZywKPiArCQkJLmNvbG9yX3JhbmdlCT0gZmItPmNvbG9yX3Jh bmdlLAo+ICsJCX0sCj4gKwo+ICsJCS5zcmMJPSB7Cj4gKwkJCS5wdHIJCT0gYmxpdC0+cmdiMjQu bWFwLAo+ICsJCQkuZm10CQk9IERSTV9GT1JNQVRfUkdCODg4LAo+ICsJCQkuc3RyaWRlCQk9IGJs aXQtPnJnYjI0LnN0cmlkZSwKPiArCQkJLnNpemUJCT0gYmxpdC0+cmdiMjQuc2l6ZSwKPiArCQl9 LAo+ICsJfTsKPiArCj4gKwlmYl9jb252ZXJ0KCZjdnQpOwo+ICAJbXVubWFwKGJsaXQtPnJnYjI0 Lm1hcCwgYmxpdC0+cmdiMjQuc2l6ZSk7Cj4gIAo+ICAJaWYgKGJsaXQtPmxpbmVhci5oYW5kbGUp Cj4gQEAgLTE3ODgsNiArMTg0Niw4IEBAIHN0YXRpYyB2b2lkIGRlc3Ryb3lfY2Fpcm9fc3VyZmFj ZV9fY29udmVydCh2b2lkICphcmcpCj4gIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNl X19jb252ZXJ0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCj4gIHsKPiAgCXN0cnVjdCBmYl9j b252ZXJ0X2JsaXRfdXBsb2FkICpibGl0ID0gbWFsbG9jKHNpemVvZigqYmxpdCkpOwo+ICsJc3Ry dWN0IGZiX2NvbnZlcnQgY3Z0ID0geyAwIH07Cj4gKwo+ICAJaWd0X2Fzc2VydChibGl0KTsKPiAg Cj4gIAlibGl0LT5mZCA9IGZkOwo+IEBAIC0xODA5LDIxICsxODY5LDI0IEBAIHN0YXRpYyB2b2lk IGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIp Cj4gIAkJbWVtY3B5KGJsaXQtPmxpbmVhci5vZmZzZXRzLCBmYi0+b2Zmc2V0cywgc2l6ZW9mKGZi LT5vZmZzZXRzKSk7Cj4gIAl9Cj4gIAo+IC0JLyogQ29udmVydCB0byBsaW5lYXIgcmdiISAqLwo+ IC0Jc3dpdGNoKGZiLT5kcm1fZm9ybWF0KSB7Cj4gLQljYXNlIERSTV9GT1JNQVRfTlYxMjoKPiAt CQljb252ZXJ0X252MTJfdG9fcmdiMjQoZmIsIGJsaXQpOwo+IC0JCWJyZWFrOwo+IC0JY2FzZSBE Uk1fRk9STUFUX1lVWVY6Cj4gLQljYXNlIERSTV9GT1JNQVRfWVZZVToKPiAtCWNhc2UgRFJNX0ZP Uk1BVF9VWVZZOgo+IC0JY2FzZSBEUk1fRk9STUFUX1ZZVVk6Cj4gLQkJY29udmVydF95dXl2X3Rv X3JnYjI0KGZiLCBibGl0KTsKPiAtCQlicmVhazsKPiAtCWRlZmF1bHQ6Cj4gLQkJaWd0X2Fzc2Vy dF9mKGZhbHNlLCAiQ29udmVyc2lvbiBub3QgaW1wbGVtZW50ZWQgZm9yIGZvcm1hdHMgMHgleFxu IiwKPiAtCQkJICAgICBmYi0+ZHJtX2Zvcm1hdCk7Cj4gLQl9Cj4gKwljdnQud2lkdGggPSBmYi0+ d2lkdGg7Cj4gKwljdnQuaGVpZ2h0ID0gZmItPmhlaWdodDsKPiArCj4gKwljdnQuZHN0LnB0ciA9 IGJsaXQtPnJnYjI0Lm1hcDsKPiArCWN2dC5kc3QuZm10ID0gRFJNX0ZPUk1BVF9SR0I4ODg7Cj4g KwljdnQuZHN0LnN0cmlkZSA9IGJsaXQtPnJnYjI0LnN0cmlkZTsKPiArCWN2dC5kc3Quc2l6ZSA9 IGJsaXQtPnJnYjI0LnNpemU7Cj4gKwo+ICsJY3Z0LnNyYy5wdHIgPSBibGl0LT5saW5lYXIubWFw Owo+ICsJY3Z0LnNyYy5mbXQgPSBmYi0+ZHJtX2Zvcm1hdDsKPiArCWN2dC5zcmMuc3RyaWRlCT0g YmxpdC0+bGluZWFyLnN0cmlkZTsKPiArCWN2dC5zcmMuc2l6ZSA9IGJsaXQtPmxpbmVhci5zaXpl Owo+ICsJY3Z0LnNyYy5jb2xvcl9lbmNvZGluZyA9IGZiLT5jb2xvcl9lbmNvZGluZzsKPiArCWN2 dC5zcmMuY29sb3JfcmFuZ2UgPSBmYi0+Y29sb3JfcmFuZ2U7Cj4gKwltZW1jcHkoY3Z0LmRzdC5v ZmZzZXRzLCBibGl0LT5saW5lYXIub2Zmc2V0cywKPiArCSAgICAgICBzaXplb2YoYmxpdC0+bGlu ZWFyLm9mZnNldHMpKTsKPiArCj4gKwlmYl9jb252ZXJ0KCZjdnQpOwo+ICAKPiAgCWZiLT5jYWly b19zdXJmYWNlID0KPiAgCQljYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShibGl0 LT5yZ2IyNC5tYXAsCj4gLS0gCj4gZ2l0LXNlcmllcyAwLjkuMQoKLS0gClZpbGxlIFN5cmrDpGzD pApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpp Z3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK