From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stanislav Lisovskiy Subject: [PATCH xf86-video-intel v2] sna: Added AYUV format support for textured and sprite video adapters. Date: Thu, 4 Oct 2018 15:49:41 +0300 Message-ID: <20181004124941.7431-1-stanislav.lisovskiy@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 62F976E1F7 for ; Thu, 4 Oct 2018 12:49:45 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: ville.syrjala@intel.com, martin.peres@intel.com, juha-pekka.heikkila@intel.com List-Id: intel-gfx@lists.freedesktop.org c25hL2dlbjkrOiBIYWQgdG8gc3BsaXQgb3V0IHdtX2tlcm5lbCBmcm9tIHRoZSBzbmFfY29tcG9z aXRlX29wIGZsYWdzLApvdGhlcndpc2UgbmV3IHNoYWRlciBrZXJuZWxzIGdvIGJleW9uZCBleGlz dGluZyBmbGFncyBmaWVsZC4KCnYyOiBSZW5hbWVkIERSTV9GT1JNQVRfWFlVViB0byBEUk1fRk9S TUFUX1hZVVY4ODg4LgogICAgQWRkZWQgY29tbWVudCBhYm91dCBBWVVWIGJ5dGUgb3JkZXJpbmcg aW4gR3N0cmVhbWVyLgoKU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2IExpc292c2tpeSA8c3Rhbmlz bGF2Lmxpc292c2tpeUBpbnRlbC5jb20+Ci0tLQogc3JjL3JlbmRlcl9wcm9ncmFtL01ha2VmaWxl LmFtICAgICAgICAgICAgICAgIHwgICAyICsKIC4uLi9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5 dXYuZzhhICAgICAgICAgICB8ICA2MCArKysrKysrCiAuLi4vZXhhX3dtX3NyY19zYW1wbGVfYXJn Yl9heXV2Lmc4YiAgICAgICAgICAgfCAgIDYgKwogc3JjL3NuYS9nZW45X3JlbmRlci5jICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDYyICsrKysrKy0tCiBzcmMvc25hL3NuYV9yZW5kZXIuaCAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL3NuYS9zbmFfdmlkZW8uYyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMTQ3ICsrKysrKysrKysrKysrKysrKwogc3JjL3NuYS9z bmFfdmlkZW8uaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsrKwogc3JjL3NuYS9z bmFfdmlkZW9fc3ByaXRlLmMgICAgICAgICAgICAgICAgICAgIHwgIDE5ICsrLQogc3JjL3NuYS9z bmFfdmlkZW9fdGV4dHVyZWQuYyAgICAgICAgICAgICAgICAgIHwgICA4ICsKIDkgZmlsZXMgY2hh bmdlZCwgMzE0IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9yZW5kZXJfcHJvZ3JhbS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhhCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV9zcmNfc2FtcGxlX2Fy Z2JfYXl1di5nOGIKCmRpZmYgLS1naXQgYS9zcmMvcmVuZGVyX3Byb2dyYW0vTWFrZWZpbGUuYW0g Yi9zcmMvcmVuZGVyX3Byb2dyYW0vTWFrZWZpbGUuYW0KaW5kZXggZGM1ODEzOGYuLmUzNWZmYTUy IDEwMDY0NAotLS0gYS9zcmMvcmVuZGVyX3Byb2dyYW0vTWFrZWZpbGUuYW0KKysrIGIvc3JjL3Jl bmRlcl9wcm9ncmFtL01ha2VmaWxlLmFtCkBAIC0xOTYsNiArMTk2LDcgQEAgSU5URUxfRzdCID0J CQkJXAogSU5URUxfRzhBID0JCQkJXAogCWV4YV93bV9zcmNfYWZmaW5lLmc4YSAJCVwKIAlleGFf d21fc3JjX3NhbXBsZV9hcmdiLmc4YSAJXAorCWV4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5n OGEgXAogCWV4YV93bV9zcmNfc2FtcGxlX252MTIuZzhhIAlcCiAJZXhhX3dtX3NyY19zYW1wbGVf cGxhbmFyLmc4YSAJXAogCWV4YV93bV93cml0ZS5nOGEgCQlcCkBAIC0yMDUsNiArMjA2LDcgQEAg SU5URUxfRzhBID0JCQkJXAogCiBJTlRFTF9HOEIgPQkJCQlcCiAJZXhhX3dtX3NyY19hZmZpbmUu ZzhiIAkJXAorCWV4YV93bV9zcmNfc2FtcGxlX2FyZ2JfYXl1di5nOGIgXAogCWV4YV93bV9zcmNf c2FtcGxlX2FyZ2IuZzhiIAlcCiAJZXhhX3dtX3NyY19zYW1wbGVfbnYxMi5nOGIgCVwKIAlleGFf d21fc3JjX3NhbXBsZV9wbGFuYXIuZzhiIAlcCmRpZmYgLS1naXQgYS9zcmMvcmVuZGVyX3Byb2dy YW0vZXhhX3dtX3NyY19zYW1wbGVfYXJnYl9heXV2Lmc4YSBiL3NyYy9yZW5kZXJfcHJvZ3JhbS9l eGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi5kNzk4NDBhYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9yZW5kZXJfcHJvZ3Jh bS9leGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhhCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg KiBDb3B5cmlnaHQgwqkgMjAwNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0 aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJp Z2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1 YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8g cGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBk byBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhF IFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ TkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8g VEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICogICAgV2FuZyBa aGVueXUgPHpoZW55dS56LndhbmdAaW50ZWwuY29tPgorICogICAgS2VpdGggUGFja2FyZCA8a2Vp dGhwQGtlaXRocC5jb20+CisgKi8KKworLyogU2FtcGxlIHRoZSBzcmMgc3VyZmFjZSAqLworCitp bmNsdWRlKGBleGFfd20uZzRpJykKKwordW5kZWZpbmUoYHNyY19tc2cnKQordW5kZWZpbmUoYHNy Y19tc2dfaW5kJykKKworZGVmaW5lKGBzcmNfbXNnJywgICAgICAgYGc2NScpCitkZWZpbmUoYHNy Y19tc2dfaW5kJywgICBgNjUnKQorCisvKiBwcmVwYXJlIHNhbXBsZXIgcmVhZCBiYWNrIGdYIHJl Z2lzdGVyLCB3aGljaCB3b3VsZCBiZSB3cml0dGVuIGJhY2sgdG8gb3V0cHV0ICovCisKKy8qIHVz ZSBzaW1kMTYgc2FtcGxlciwgcGFyYW0gMCBpcyB1LCBwYXJhbSAxIGlzIHYuICovCisvKiAncGF5 bG9hZCcgbG9hZGluZywgYXNzdW1pbmcgdGV4IGNvb3JkIHN0YXJ0IGZyb20gZzQgKi8KKworLyog bG9hZCBhcmdiICovCittb3YgKDEpIGcwLjg8MT5VRAkweDAwMDAwMDAwVUQgeyBhbGlnbjEgbWFz a19kaXNhYmxlIH07Cittb3YgKDgpIHNyY19tc2c8MT5VRCBnMDw4LDgsMT5VRCB7IGFsaWduMSB9 OyAvKiBjb3B5IHRvIG1zZyBzdGFydCByZWcqLworCisvKiBzcmNfbXNnIHdpbGwgYmUgY29waWVk IHdpdGggZzAsIGFzIGl0IGNvbnRhaW5zIHNlbmQgZGVzYyAqLworLyogZW1pdCBzYW1wbGVyICdz ZW5kJyBjbWQgKi8KK3NlbmQgKDE2KSBzcmNfbXNnX2luZAkvKiBtc2cgcmVnIGluZGV4ICovCisJ c3JjX3NhbXBsZV9iYXNlPDE+VVcgLyogcmVhZGJhY2sgKi8KKwludWxsCisJc2FtcGxlciAoMSww LEYpCS8qIHNhbXBsZXIgbWVzc2FnZSBkZXNjcmlwdGlvbiwgKGJpbmRpbmdfdGFibGUsc2FtcGxl cl9pbmRleCxkYXRhdHlwZSkKKwkJCQkvKiBoZXJlKHNyYy0+ZHN0KSB3ZSBzaG91bGQgdXNlIHNy Y19zYW1wbGVyIGFuZCBzcmNfc3VyZmFjZSAqLworCW1sZW4gNSBybGVuIDggeyBhbGlnbjEgfTsg ICAvKiByZXF1aXJlZCBtZXNzYWdlIGxlbiA1LCByZWFkYmFjayBsZW4gOCAqLworCisvKiBQdXQg Q2JDciBpbnRvIHJpZ2h0IHBsYWNlcyAqLworbW92ICgxNikgc3JjX3NhbXBsZV9iPDE+VUQgc3Jj X3NhbXBsZV9yPDE+VUQgIHsgYWxpZ24xIH07Cittb3YgKDE2KSBzcmNfc2FtcGxlX3I8MT5VRCBz cmNfc2FtcGxlX2E8MT5VRCAgeyBhbGlnbjEgfTsKK21vdiAoMTYpIHNyY19zYW1wbGVfYTwxPkYg MS4wRjsKKwpkaWZmIC0tZ2l0IGEvc3JjL3JlbmRlcl9wcm9ncmFtL2V4YV93bV9zcmNfc2FtcGxl X2FyZ2JfYXl1di5nOGIgYi9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dtX3NyY19zYW1wbGVfYXJn Yl9heXV2Lmc4YgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNGY0MzkxNDEK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvcmVuZGVyX3Byb2dyYW0vZXhhX3dtX3NyY19zYW1wbGVf YXJnYl9heXV2Lmc4YgpAQCAtMCwwICsxLDYgQEAKKyAgIHsgMHgwMDAwMDAwMSwgMHgyMDA4MDYw YywgMHgwMDAwMDAwMCwgMHgwMDAwMDAwMCB9LAorICAgeyAweDAwNjAwMDAxLCAweDI4MjAwMjA4 LCAweDAwOGQwMDAwLCAweDAwMDAwMDAwIH0sCisgICB7IDB4MDI4MDAwMzEsIDB4MjFjMDBhNDgs IDB4MDYwMDA4MjAsIDB4MGE4YzAwMDEgfSwKKyAgIHsgMHgwMDgwMDAwMSwgMHgyMjQwMDIwOCwg MHgwMDIwMDFjMCwgMHgwMDAwMDAwMCB9LAorICAgeyAweDAwODAwMDAxLCAweDIxYzAwMjA4LCAw eDAwMjAwMjgwLCAweDAwMDAwMDAwIH0sCisgICB7IDB4MDA4MDAwMDEsIDB4MjI4MDNlZTgsIDB4 MzgwMDAwMDAsIDB4M2Y4MDAwMDAgfSwKZGlmZiAtLWdpdCBhL3NyYy9zbmEvZ2VuOV9yZW5kZXIu YyBiL3NyYy9zbmEvZ2VuOV9yZW5kZXIuYwppbmRleCA1MDViOThhZi4uMjk0NDdkMjUgMTAwNjQ0 Ci0tLSBhL3NyYy9zbmEvZ2VuOV9yZW5kZXIuYworKysgYi9zcmMvc25hL2dlbjlfcmVuZGVyLmMK QEAgLTEyOSw2ICsxMjksMjAgQEAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX2tlcm5lbF9wbGFu YXJfYnQ3MDlbXVs0XSA9IHsKICNpbmNsdWRlICJleGFfd21fd3JpdGUuZzhiIgogfTsKIAorc3Rh dGljIGNvbnN0IHVpbnQzMl90IHBzX2tlcm5lbF9wYWNrZWRfYXl1dl9idDYwMVtdWzRdID0gewor I2luY2x1ZGUgImV4YV93bV9zcmNfYWZmaW5lLmc4YiIKKyNpbmNsdWRlICJleGFfd21fc3JjX3Nh bXBsZV9hcmdiX2F5dXYuZzhiIgorI2luY2x1ZGUgImV4YV93bV95dXZfcmdiX2J0NjAxLmc4YiIK KyNpbmNsdWRlICJleGFfd21fd3JpdGUuZzhiIgorfTsKKworc3RhdGljIGNvbnN0IHVpbnQzMl90 IHBzX2tlcm5lbF9wYWNrZWRfYXl1dl9idDcwOVtdWzRdID0geworI2luY2x1ZGUgImV4YV93bV9z cmNfYWZmaW5lLmc4YiIKKyNpbmNsdWRlICJleGFfd21fc3JjX3NhbXBsZV9hcmdiX2F5dXYuZzhi IgorI2luY2x1ZGUgImV4YV93bV95dXZfcmdiX2J0NzA5Lmc4YiIKKyNpbmNsdWRlICJleGFfd21f d3JpdGUuZzhiIgorfTsKKwogc3RhdGljIGNvbnN0IHVpbnQzMl90IHBzX2tlcm5lbF9udjEyX2J0 NzA5W11bNF0gPSB7CiAjaW5jbHVkZSAiZXhhX3dtX3NyY19hZmZpbmUuZzhiIgogI2luY2x1ZGUg ImV4YV93bV9zcmNfc2FtcGxlX252MTIuZzhiIgpAQCAtMTc3LDYgKzE5MSw4IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3Qgd21fa2VybmVsX2luZm8gewogCUtFUk5FTChWSURFT19QTEFOQVJfQlQ3MDks IHBzX2tlcm5lbF9wbGFuYXJfYnQ3MDksIDcpLAogCUtFUk5FTChWSURFT19OVjEyX0JUNzA5LCBw c19rZXJuZWxfbnYxMl9idDcwOSwgNyksCiAJS0VSTkVMKFZJREVPX1BBQ0tFRF9CVDcwOSwgcHNf a2VybmVsX3BhY2tlZF9idDcwOSwgMiksCisJS0VSTkVMKFZJREVPX1BBQ0tFRF9BWVVWX0JUNjAx LCBwc19rZXJuZWxfcGFja2VkX2F5dXZfYnQ2MDEsIDIpLAorCUtFUk5FTChWSURFT19QQUNLRURf QVlVVl9CVDcwOSwgcHNfa2VybmVsX3BhY2tlZF9heXV2X2J0NzA5LCAyKSwKIAlLRVJORUwoVklE RU9fUkdCLCBwc19rZXJuZWxfcmdiLCAyKSwKICNlbmRpZgogfTsKQEAgLTIyNiwxOSArMjQyLDE4 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYmxlbmRpbmZvIHsKIAogI2RlZmluZSBDT1BZX1NBTVBM RVIgMAogI2RlZmluZSBDT1BZX1ZFUlRFWCBWRVJURVhfMnMycwotI2RlZmluZSBDT1BZX0ZMQUdT KGEpIEdFTjlfU0VUX0ZMQUdTKENPUFlfU0FNUExFUiwgKGEpID09IEdYY29weSA/IE5PX0JMRU5E IDogQ0xFQVIsIEdFTjlfV01fS0VSTkVMX05PTUFTSywgQ09QWV9WRVJURVgpCisjZGVmaW5lIENP UFlfRkxBR1MoYSkgR0VOOV9TRVRfRkxBR1MoQ09QWV9TQU1QTEVSLCAoYSkgPT0gR1hjb3B5ID8g Tk9fQkxFTkQgOiBDTEVBUiwgQ09QWV9WRVJURVgpCiAKICNkZWZpbmUgRklMTF9TQU1QTEVSIDEK ICNkZWZpbmUgRklMTF9WRVJURVggVkVSVEVYXzJzMnMKLSNkZWZpbmUgRklMTF9GTEFHUyhvcCwg Zm9ybWF0KSBHRU45X1NFVF9GTEFHUyhGSUxMX1NBTVBMRVIsIGdlbjlfZ2V0X2JsZW5kKChvcCks IGZhbHNlLCAoZm9ybWF0KSksIEdFTjlfV01fS0VSTkVMX05PTUFTSywgRklMTF9WRVJURVgpCi0j ZGVmaW5lIEZJTExfRkxBR1NfTk9CTEVORCBHRU45X1NFVF9GTEFHUyhGSUxMX1NBTVBMRVIsIE5P X0JMRU5ELCBHRU45X1dNX0tFUk5FTF9OT01BU0ssIEZJTExfVkVSVEVYKQorI2RlZmluZSBGSUxM X0ZMQUdTKG9wLCBmb3JtYXQpIEdFTjlfU0VUX0ZMQUdTKEZJTExfU0FNUExFUiwgZ2VuOV9nZXRf YmxlbmQoKG9wKSwgZmFsc2UsIChmb3JtYXQpKSwgRklMTF9WRVJURVgpCisjZGVmaW5lIEZJTExf RkxBR1NfTk9CTEVORCBHRU45X1NFVF9GTEFHUyhGSUxMX1NBTVBMRVIsIE5PX0JMRU5ELCBGSUxM X1ZFUlRFWCkKIAogI2RlZmluZSBHRU45X1NBTVBMRVIoZikgKCgoZikgPj4gMjApICYgMHhmZmYp CiAjZGVmaW5lIEdFTjlfQkxFTkQoZikgKCgoZikgPj4gNCkgJiAweDdmZikKICNkZWZpbmUgR0VO OV9SRUFEU19EU1QoZikgKCgoZikgPj4gMTUpICYgMSkKLSNkZWZpbmUgR0VOOV9LRVJORUwoZikg KCgoZikgPj4gMTYpICYgMHhmKQogI2RlZmluZSBHRU45X1ZFUlRFWChmKSAoKChmKSA+PiAwKSAm IDB4ZikKLSNkZWZpbmUgR0VOOV9TRVRfRkxBR1MoUywgQiwgSywgVikgICgoUykgPDwgMjAgfCAo SykgPDwgMTYgfCAoQikgfCAoVikpCisjZGVmaW5lIEdFTjlfU0VUX0ZMQUdTKFMsIEIsIFYpICAo KFMpIDw8IDIwIHwgKEIpIHwgKFYpKQogCiAjZGVmaW5lIE9VVF9CQVRDSCh2KSBiYXRjaF9lbWl0 KHNuYSwgdikKICNkZWZpbmUgT1VUX0JBVENINjQodikgYmF0Y2hfZW1pdDY0KHNuYSwgdikKQEAg LTEzNDksNyArMTM2NCw3IEBAIGdlbjlfZW1pdF9zdGF0ZShzdHJ1Y3Qgc25hICpzbmEsCiAJZ2Vu OV9lbWl0X2NjKHNuYSwgR0VOOV9CTEVORChvcC0+dS5nZW45LmZsYWdzKSk7CiAJZ2VuOV9lbWl0 X3NhbXBsZXIoc25hLCBHRU45X1NBTVBMRVIob3AtPnUuZ2VuOS5mbGFncykpOwogCWdlbjlfZW1p dF9zZihzbmEsIEdFTjlfVkVSVEVYKG9wLT51LmdlbjkuZmxhZ3MpID4+IDIpOwotCWdlbjlfZW1p dF93bShzbmEsIEdFTjlfS0VSTkVMKG9wLT51LmdlbjkuZmxhZ3MpKTsKKwlnZW45X2VtaXRfd20o c25hLCBvcC0+dS5nZW45LndtX2tlcm5lbCk7CiAJZ2VuOV9lbWl0X3ZlcnRleF9lbGVtZW50cyhz bmEsIG9wKTsKIAlnZW45X2VtaXRfYmluZGluZ190YWJsZShzbmEsIHdtX2JpbmRpbmdfdGFibGUp OwogCkBAIC0xNjE4LDcgKzE2MzMsNyBAQCBzdGF0aWMgaW50IGdlbjlfZ2V0X3JlY3RhbmdsZXNf X2ZsdXNoKHN0cnVjdCBzbmEgKnNuYSwKIAkJaWYgKGdlbjlfbWFnaWNfY2FfcGFzcyhzbmEsIG9w KSkgewogCQkJZ2VuOV9lbWl0X3BpcGVfaW52YWxpZGF0ZShzbmEpOwogCQkJZ2VuOV9lbWl0X2Nj KHNuYSwgR0VOOV9CTEVORChvcC0+dS5nZW45LmZsYWdzKSk7Ci0JCQlnZW45X2VtaXRfd20oc25h LCBHRU45X0tFUk5FTChvcC0+dS5nZW45LmZsYWdzKSk7CisJCQlnZW45X2VtaXRfd20oc25hLCBv cC0+dS5nZW45LndtX2tlcm5lbCk7CiAJCX0KIAl9CiAKQEAgLTI1NDgsMTIgKzI1NjMsMTYgQEAg Z2VuOV9yZW5kZXJfY29tcG9zaXRlKHN0cnVjdCBzbmEgKnNuYSwKIAkJCSAgICAgICBnZW45X2dl dF9ibGVuZCh0bXAtPm9wLAogCQkJCQkgICAgICB0bXAtPmhhc19jb21wb25lbnRfYWxwaGEsCiAJ CQkJCSAgICAgIHRtcC0+ZHN0LmZvcm1hdCksCi0JCQkgICAgICAgZ2VuOV9jaG9vc2VfY29tcG9z aXRlX2tlcm5lbCh0bXAtPm9wLAotCQkJCQkJCSAgICB0bXAtPm1hc2suYm8gIT0gTlVMTCwKLQkJ CQkJCQkgICAgdG1wLT5oYXNfY29tcG9uZW50X2FscGhhLAotCQkJCQkJCSAgICB0bXAtPmlzX2Fm ZmluZSksCiAJCQkgICAgICAgZ2VuNF9jaG9vc2VfY29tcG9zaXRlX2VtaXR0ZXIoc25hLCB0bXAp KTsKKwl0bXAtPnUuZ2VuOS53bV9rZXJuZWwgPSBnZW45X2Nob29zZV9jb21wb3NpdGVfa2VybmVs KHRtcC0+b3AsCisJCQkJCQkJICAgICB0bXAtPm1hc2suYm8gIT0gTlVMTCwKKwkJCQkJCQkgICAg IHRtcC0+aGFzX2NvbXBvbmVudF9hbHBoYSwKKwkJCQkJCQkgICAgIHRtcC0+aXNfYWZmaW5lKTsK IAorICAgICAgICB0bXAtPmdlbjlfa2VybmVsID0gZ2VuOV9jaG9vc2VfY29tcG9zaXRlX2tlcm5l bCh0bXAtPm9wLAorCQkJCQkJCSAgICB0bXAtPm1hc2suYm8gIT0gTlVMTCwKKwkJCQkJCQkgICAg dG1wLT5oYXNfY29tcG9uZW50X2FscGhhLAorCQkJCQkJCSAgICB0bXAtPmlzX2FmZmluZSk7CiAJ dG1wLT5ibHQgICA9IGdlbjlfcmVuZGVyX2NvbXBvc2l0ZV9ibHQ7CiAJdG1wLT5ib3ggICA9IGdl bjlfcmVuZGVyX2NvbXBvc2l0ZV9ib3g7CiAJdG1wLT5ib3hlcyA9IGdlbjlfcmVuZGVyX2NvbXBv c2l0ZV9ib3hlc19fYmx0OwpAQCAtMjc4MSw5ICsyODAwLDExIEBAIGdlbjlfcmVuZGVyX2NvbXBv c2l0ZV9zcGFucyhzdHJ1Y3Qgc25hICpzbmEsCiAJCQkJCSAgICAgIFNBTVBMRVJfRklMVEVSX05F QVJFU1QsCiAJCQkJCSAgICAgIFNBTVBMRVJfRVhURU5EX1BBRCksCiAJCQkgICAgICAgZ2VuOV9n ZXRfYmxlbmQodG1wLT5iYXNlLm9wLCBmYWxzZSwgdG1wLT5iYXNlLmRzdC5mb3JtYXQpLAotCQkJ ICAgICAgIEdFTjlfV01fS0VSTkVMX09QQUNJVFkgfCAhdG1wLT5iYXNlLmlzX2FmZmluZSwKIAkJ CSAgICAgICBnZW40X2Nob29zZV9zcGFuc19lbWl0dGVyKHNuYSwgdG1wKSk7CisJdG1wLT5iYXNl LnUuZ2VuOS53bV9rZXJuZWwgPQorCQlHRU45X1dNX0tFUk5FTF9PUEFDSVRZIHwgIXRtcC0+YmFz ZS5pc19hZmZpbmU7CiAKKwl0bXAtPmJhc2UuZ2VuOV9rZXJuZWwgPSBHRU45X1dNX0tFUk5FTF9P UEFDSVRZIHwgIXRtcC0+YmFzZS5pc19hZmZpbmU7CiAJdG1wLT5ib3ggICA9IGdlbjlfcmVuZGVy X2NvbXBvc2l0ZV9zcGFuc19ib3g7CiAJdG1wLT5ib3hlcyA9IGdlbjlfcmVuZGVyX2NvbXBvc2l0 ZV9zcGFuc19ib3hlczsKIAlpZiAodG1wLT5lbWl0X2JveGVzKQpAQCAtMzA0NSw2ICszMDY2LDcg QEAgZmFsbGJhY2tfYmx0OgogCXRtcC5uZWVkX21hZ2ljX2NhX3Bhc3MgPSAwOwogCiAJdG1wLnUu Z2VuOS5mbGFncyA9IENPUFlfRkxBR1MoYWx1KTsKKwl0bXAudS5nZW45LndtX2tlcm5lbCA9IEdF TjlfV01fS0VSTkVMX05PTUFTSzsKIAogCWtnZW1fc2V0X21vZGUoJnNuYS0+a2dlbSwgS0dFTV9S RU5ERVIsIHRtcC5kc3QuYm8pOwogCWlmICgha2dlbV9jaGVja19ibygmc25hLT5rZ2VtLCB0bXAu ZHN0LmJvLCB0bXAuc3JjLmJvLCBOVUxMKSkgewpAQCAtMzIxNCw2ICszMjM2LDcgQEAgZmFsbGJh Y2s6CiAJb3AtPmJhc2UuZmxvYXRzX3Blcl9yZWN0ID0gNjsKIAogCW9wLT5iYXNlLnUuZ2VuOS5m bGFncyA9IENPUFlfRkxBR1MoYWx1KTsKKwlvcC0+YmFzZS51Lmdlbjkud21fa2VybmVsID0gR0VO OV9XTV9LRVJORUxfTk9NQVNLOwogCiAJa2dlbV9zZXRfbW9kZSgmc25hLT5rZ2VtLCBLR0VNX1JF TkRFUiwgZHN0X2JvKTsKIAlpZiAoIWtnZW1fY2hlY2tfYm8oJnNuYS0+a2dlbSwgZHN0X2JvLCBz cmNfYm8sIE5VTEwpKSB7CkBAIC0zMzY2LDYgKzMzODksNyBAQCBnZW45X3JlbmRlcl9maWxsX2Jv eGVzKHN0cnVjdCBzbmEgKnNuYSwKIAl0bXAubmVlZF9tYWdpY19jYV9wYXNzID0gZmFsc2U7CiAK IAl0bXAudS5nZW45LmZsYWdzID0gRklMTF9GTEFHUyhvcCwgZm9ybWF0KTsKKwl0bXAudS5nZW45 LndtX2tlcm5lbCA9IEdFTjlfV01fS0VSTkVMX05PTUFTSzsKIAogCWtnZW1fc2V0X21vZGUoJnNu YS0+a2dlbSwgS0dFTV9SRU5ERVIsIGRzdF9ibyk7CiAJaWYgKCFrZ2VtX2NoZWNrX2JvKCZzbmEt PmtnZW0sIGRzdF9ibywgTlVMTCkpIHsKQEAgLTM1NTIsNiArMzU3Niw3IEBAIGdlbjlfcmVuZGVy X2ZpbGwoc3RydWN0IHNuYSAqc25hLCB1aW50OF90IGFsdSwKIAlvcC0+YmFzZS5mbG9hdHNfcGVy X3JlY3QgPSA2OwogCiAJb3AtPmJhc2UudS5nZW45LmZsYWdzID0gRklMTF9GTEFHU19OT0JMRU5E OworCW9wLT5iYXNlLnUuZ2VuOS53bV9rZXJuZWwgPSBHRU45X1dNX0tFUk5FTF9OT01BU0s7CiAK IAlrZ2VtX3NldF9tb2RlKCZzbmEtPmtnZW0sIEtHRU1fUkVOREVSLCBkc3RfYm8pOwogCWlmICgh a2dlbV9jaGVja19ibygmc25hLT5rZ2VtLCBkc3RfYm8sIE5VTEwpKSB7CkBAIC0zNjM3LDYgKzM2 NjIsNyBAQCBnZW45X3JlbmRlcl9maWxsX29uZShzdHJ1Y3Qgc25hICpzbmEsIFBpeG1hcFB0ciBk c3QsIHN0cnVjdCBrZ2VtX2JvICpibywKIAl0bXAubmVlZF9tYWdpY19jYV9wYXNzID0gZmFsc2U7 CiAKIAl0bXAudS5nZW45LmZsYWdzID0gRklMTF9GTEFHU19OT0JMRU5EOworCXRtcC51Lmdlbjku d21fa2VybmVsID0gR0VOOV9XTV9LRVJORUxfTk9NQVNLOwogCiAJa2dlbV9zZXRfbW9kZSgmc25h LT5rZ2VtLCBLR0VNX1JFTkRFUiwgYm8pOwogCWlmICgha2dlbV9jaGVja19ibygmc25hLT5rZ2Vt LCBibywgTlVMTCkpIHsKQEAgLTM3MjMsNiArMzc0OSw3IEBAIGdlbjlfcmVuZGVyX2NsZWFyKHN0 cnVjdCBzbmEgKnNuYSwgUGl4bWFwUHRyIGRzdCwgc3RydWN0IGtnZW1fYm8gKmJvKQogCXRtcC5u ZWVkX21hZ2ljX2NhX3Bhc3MgPSBmYWxzZTsKIAogCXRtcC51LmdlbjkuZmxhZ3MgPSBGSUxMX0ZM QUdTX05PQkxFTkQ7CisJdG1wLnUuZ2VuOS53bV9rZXJuZWwgPSBHRU45X1dNX0tFUk5FTF9OT01B U0s7CiAKIAlrZ2VtX3NldF9tb2RlKCZzbmEtPmtnZW0sIEtHRU1fUkVOREVSLCBibyk7CiAJaWYg KCFrZ2VtX2NoZWNrX2JvKCZzbmEtPmtnZW0sIGJvLCBOVUxMKSkgewpAQCAtMzg0Nyw2ICszODc0 LDggQEAgc3RhdGljIHZvaWQgZ2VuOV9lbWl0X3ZpZGVvX3N0YXRlKHN0cnVjdCBzbmEgKnNuYSwK IAkJCXNyY19zdXJmX2Zvcm1hdFswXSA9IFNVUkZBQ0VGT1JNQVRfQjhHOFI4WDhfVU5PUk07CiAJ CWVsc2UgaWYgKGZyYW1lLT5pZCA9PSBGT1VSQ0NfVVlWWSkKIAkJCXNyY19zdXJmX2Zvcm1hdFsw XSA9IFNVUkZBQ0VGT1JNQVRfWUNSQ0JfU1dBUFk7CisJCWVsc2UgaWYgKGlzX2F5dXZfZm91cmNj KGZyYW1lLT5pZCkpCisJCQlzcmNfc3VyZl9mb3JtYXRbMF0gPSBTVVJGQUNFRk9STUFUX0I4RzhS OEE4X1VOT1JNOwogCQllbHNlCiAJCQlzcmNfc3VyZl9mb3JtYXRbMF0gPSBTVVJGQUNFRk9STUFU X1lDUkNCX05PUk1BTDsKIApAQCAtMzg5Nyw2ICszOTI2LDkgQEAgc3RhdGljIHVuc2lnbmVkIHNl bGVjdF92aWRlb19rZXJuZWwoY29uc3Qgc3RydWN0IHNuYV92aWRlbyAqdmlkZW8sCiAJY2FzZSBG T1VSQ0NfUkdCNTY1OgogCQlyZXR1cm4gR0VOOV9XTV9LRVJORUxfVklERU9fUkdCOwogCisJY2Fz ZSBGT1VSQ0NfQVlVVjoKKwkJcmV0dXJuIEdFTjlfV01fS0VSTkVMX1ZJREVPX1BBQ0tFRF9BWVVW X0JUNjAxOworCiAJZGVmYXVsdDoKIAkJcmV0dXJuIHZpZGVvLT5jb2xvcnNwYWNlID8KIAkJCUdF TjlfV01fS0VSTkVMX1ZJREVPX1BBQ0tFRF9CVDcwOSA6CkBAIC0zOTY0LDggKzM5OTYsOCBAQCBn ZW45X3JlbmRlcl92aWRlbyhzdHJ1Y3Qgc25hICpzbmEsCiAJCUdFTjlfU0VUX0ZMQUdTKFNBTVBM RVJfT0ZGU0VUKGZpbHRlciwgU0FNUExFUl9FWFRFTkRfUEFELAogCQkJCQkgICAgICBTQU1QTEVS X0ZJTFRFUl9ORUFSRVNULCBTQU1QTEVSX0VYVEVORF9OT05FKSwKIAkJCSAgICAgICBOT19CTEVO RCwKLQkJCSAgICAgICBzZWxlY3RfdmlkZW9fa2VybmVsKHZpZGVvLCBmcmFtZSksCiAJCQkgICAg ICAgMik7CisJdG1wLnUuZ2VuOS53bV9rZXJuZWwgPSBzZWxlY3RfdmlkZW9fa2VybmVsKHZpZGVv LCBmcmFtZSk7CiAJdG1wLnByaXYgPSBmcmFtZTsKIAogCWtnZW1fc2V0X21vZGUoJnNuYS0+a2dl bSwgS0dFTV9SRU5ERVIsIHRtcC5kc3QuYm8pOwpAQCAtNDA3NCw2ICs0MTA2LDcgQEAgc3RhdGlj IHZvaWQgZ2VuOV9yZW5kZXJfZmluaShzdHJ1Y3Qgc25hICpzbmEpCiAJa2dlbV9ib19kZXN0cm95 KCZzbmEtPmtnZW0sIHNuYS0+cmVuZGVyX3N0YXRlLmdlbjkuZ2VuZXJhbF9ibyk7CiB9CiAKKwog c3RhdGljIGJvb2wgZ2VuOV9yZW5kZXJfc2V0dXAoc3RydWN0IHNuYSAqc25hKQogewogCXN0cnVj dCBnZW45X3JlbmRlcl9zdGF0ZSAqc3RhdGUgPSAmc25hLT5yZW5kZXJfc3RhdGUuZ2VuOTsKQEAg LTQxMzUsNiArNDE2OCw5IEBAIHN0YXRpYyBib29sIGdlbjlfcmVuZGVyX3NldHVwKHN0cnVjdCBz bmEgKnNuYSkKIAkJYXNzZXJ0KHN0YXRlLT53bV9rZXJuZWxbbV1bMF18c3RhdGUtPndtX2tlcm5l bFttXVsxXXxzdGF0ZS0+d21fa2VybmVsW21dWzJdKTsKIAl9CiAKKwlDT01QSUxFX1RJTUVfQVNT RVJUKEdFTjlfV01fS0VSTkVMX0NPVU5UIDw9CisJCQkgICAgMSA8PCAoc2l6ZW9mKCgoc3RydWN0 IHNuYV9jb21wb3NpdGVfb3AgKilOVUxMKS0+dS5nZW45LndtX2tlcm5lbCkgKiA4KSk7CisKIAlD T01QSUxFX1RJTUVfQVNTRVJUKFNBTVBMRVJfT0ZGU0VUKEZJTFRFUl9DT1VOVCwgRVhURU5EX0NP VU5ULCBGSUxURVJfQ09VTlQsIEVYVEVORF9DT1VOVCkgPD0gMHg3ZmYpOwogCXNzID0gc25hX3N0 YXRpY19zdHJlYW1fbWFwKCZnZW5lcmFsLAogCQkJCSAgIDIgKiBzaXplb2YoKnNzKSAqCmRpZmYg LS1naXQgYS9zcmMvc25hL3NuYV9yZW5kZXIuaCBiL3NyYy9zbmEvc25hX3JlbmRlci5oCmluZGV4 IDY2NjlhZjlkLi5lZjg4ZDFmOSAxMDA2NDQKLS0tIGEvc3JjL3NuYS9zbmFfcmVuZGVyLmgKKysr IGIvc3JjL3NuYS9zbmFfcmVuZGVyLmgKQEAgLTEzOSwyMCArMTM5LDI1IEBAIHN0cnVjdCBzbmFf Y29tcG9zaXRlX29wIHsKIAogCQlzdHJ1Y3QgewogCQkJdWludDMyX3QgZmxhZ3M7CisJCQl1aW50 OF90IHdtX2tlcm5lbDsKIAkJfSBnZW42OwogCiAJCXN0cnVjdCB7CiAJCQl1aW50MzJfdCBmbGFn czsKKwkJCXVpbnQ4X3Qgd21fa2VybmVsOwogCQl9IGdlbjc7CiAKIAkJc3RydWN0IHsKIAkJCXVp bnQzMl90IGZsYWdzOworCQkJdWludDhfdCB3bV9rZXJuZWw7CiAJCX0gZ2VuODsKIAogCQlzdHJ1 Y3QgewogCQkJdWludDMyX3QgZmxhZ3M7CisJCQl1aW50OF90IHdtX2tlcm5lbDsKIAkJfSBnZW45 OwogCX0gdTsKKwl1bnNpZ25lZCBsb25nIGdlbjlfa2VybmVsOwogCiAJdm9pZCAqcHJpdjsKIH07 CkBAIC02MTYsNiArNjIxLDkgQEAgZW51bSB7CiAJR0VOOV9XTV9LRVJORUxfVklERU9fTlYxMl9C VDcwOSwKIAlHRU45X1dNX0tFUk5FTF9WSURFT19QQUNLRURfQlQ3MDksCiAKKwlHRU45X1dNX0tF Uk5FTF9WSURFT19QQUNLRURfQVlVVl9CVDYwMSwKKwlHRU45X1dNX0tFUk5FTF9WSURFT19QQUNL RURfQVlVVl9CVDcwOSwKKwogCUdFTjlfV01fS0VSTkVMX1ZJREVPX1JHQiwKIAlHRU45X1dNX0tF Uk5FTF9DT1VOVAogfTsKZGlmZiAtLWdpdCBhL3NyYy9zbmEvc25hX3ZpZGVvLmMgYi9zcmMvc25h L3NuYV92aWRlby5jCmluZGV4IDU1NDA1ZjgxLi5iM2MyYmRjNiAxMDA2NDQKLS0tIGEvc3JjL3Nu YS9zbmFfdmlkZW8uYworKysgYi9zcmMvc25hL3NuYV92aWRlby5jCkBAIC0yODEsNiArMjgxLDcg QEAgc25hX3ZpZGVvX2ZyYW1lX3NldF9yb3RhdGlvbihzdHJ1Y3Qgc25hX3ZpZGVvICp2aWRlbywK IAl9IGVsc2UgewogCQlzd2l0Y2ggKGZyYW1lLT5pZCkgewogCQljYXNlIEZPVVJDQ19SR0I4ODg6 CisJCWNhc2UgRk9VUkNDX0FZVVY6CiAJCQlpZiAocm90YXRpb24gJiAoUlJfUm90YXRlXzkwIHwg UlJfUm90YXRlXzI3MCkpIHsKIAkJCQlmcmFtZS0+cGl0Y2hbMF0gPSBBTElHTigoaGVpZ2h0IDw8 IDIpLCBhbGlnbik7CiAJCQkJZnJhbWUtPnNpemUgPSAoaW50KWZyYW1lLT5waXRjaFswXSAqIHdp ZHRoOwpAQCAtNTg0LDYgKzU4NSwxNDkgQEAgc25hX2NvcHlfcGFja2VkX2RhdGEoc3RydWN0IHNu YV92aWRlbyAqdmlkZW8sCiAJfQogfQogCitzdGF0aWMgdm9pZAorc25hX2NvcHlfcGFja2VkX2Rh dGFfYXl1dihzdHJ1Y3Qgc25hX3ZpZGVvICp2aWRlbywKKwkJICAgICBjb25zdCBzdHJ1Y3Qgc25h X3ZpZGVvX2ZyYW1lICpmcmFtZSwKKwkJICAgICBjb25zdCB1aW50OF90ICpidWYsCisJCSAgICAg dWludDhfdCAqZHN0KQoreworCWludCBwaXRjaCA9IGZyYW1lLT53aWR0aCA8PCAyOworCWNvbnN0 IHVpbnQ4X3QgKnNyYywgKnM7CisJaW50IHgsIHksIHcsIGg7CisJaW50IGksIGo7CisKKwlpZiAo dmlkZW8tPnRleHR1cmVkKSB7CisJCS8qIFhYWCBzdXBwb3J0IGNvcHlpbmcgY3JvcHBlZCBleHRl bnRzICovCisJCXggPSB5ID0gMDsKKwkJdyA9IGZyYW1lLT53aWR0aDsKKwkJaCA9IGZyYW1lLT5o ZWlnaHQ7CisJfSBlbHNlIHsKKwkJeCA9IGZyYW1lLT5pbWFnZS54MTsKKwkJeSA9IGZyYW1lLT5p bWFnZS55MTsKKwkJdyA9IGZyYW1lLT5pbWFnZS54MiAtIGZyYW1lLT5pbWFnZS54MTsKKwkJaCA9 IGZyYW1lLT5pbWFnZS55MiAtIGZyYW1lLT5pbWFnZS55MTsKKwl9CisKKwlzcmMgPSBidWYgKyAo eSAqIHBpdGNoKSArICh4IDw8IDIpOworCXN3aXRjaCAoZnJhbWUtPnJvdGF0aW9uKSB7CisJY2Fz ZSBSUl9Sb3RhdGVfMDoKKwkJdyA8PD0gMjsKKwkJZm9yIChpID0gMDsgaSA8IGg7IGkrKykgewor CQkJZm9yIChqID0gMDsgaiA8IHc7IGogKz0gNCkgeworCQkJCXVpbnQzMl90IHJldmVyc2VfZHcs IGR3ID0gKigodWludDMyX3QqKSgmc3JjW2kgKiBmcmFtZS0+cGl0Y2hbMF0gKyBqXSkpOworCQkJ CWlmICghdmlkZW8tPnRleHR1cmVkKSB7CisJCQkJCS8qCisJCQkJCSAqIEZvciB0ZXh0dXJlZCB3 ZSBkbyBieXRlIHJldmVyc2luZyBpbiBzaGFkZXIuCisJCQkJCSAqIEhhdmUgdG8gcmV2ZXJzZSBi eXRlcyBvcmRlciwgYmVjYXVzZSB0aGUgb25seQorCQkJCQkgKiBwbGF5ZXIgd2hpY2ggc3VwcG9y dHMgQVlVViBmb3JtYXQgY3VycmVudGx5IGlzCisJCQkJCSAqIEdzdHJlYW1lciBhbmQgaXQgc3Vw cG9ydHMgaW4gYmFkIHdheSwgZXZlbiB0aG91Z2gKKwkJCQkJICogc3BlYyBzYXlzIE1TQjpBWVVW LCB3ZSBnZXQgdGhlIGJ5dGVzIG9wcG9zaXRlIHdheS4KKwkJCQkJICovCisJCQkJCXJldmVyc2Vf ZHcgPSAwOworCQkJCQlyZXZlcnNlX2R3IHw9ICgoZHcgJiAweDAwMDAwMGZmKSA8PCAyNCk7CisJ CQkJCXJldmVyc2VfZHcgfD0gKChkdyAmIDB4MDAwMGZmMDApIDw8IDgpOworCQkJCQlyZXZlcnNl X2R3IHw9ICgoZHcgJiAweDAwZmYwMDAwKSA+PiA4KTsKKwkJCQkJcmV2ZXJzZV9kdyB8PSAoZHcg Pj4gMjQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCXJldmVyc2VfZHcgPSBkdzsKKwkJCQkqKCh1 aW50MzJfdCopJmRzdFtpICogZnJhbWUtPnBpdGNoWzBdICsgal0pID0gcmV2ZXJzZV9kdzsKKwkJ CX0KKwkJfQorCQlicmVhazsKKwljYXNlIFJSX1JvdGF0ZV85MDoKKwkJaCA8PD0gMjsKKwkJZm9y IChpID0gMDsgaSA8IGg7IGkgKz0gNCkgeworCQkJZm9yIChqID0gMDtqIDwgdzsgaisrKSB7CisJ CQkJdWludDMyX3QgcmV2ZXJzZV9kdywgZHc7CisJCQkJZHcgPSAwOworCQkJCWR3IHw9IChzcmNb aSAqIGZyYW1lLT5waXRjaFswXSArIGpdKTsKKwkJCQlkdyB8PSAoKHVpbnQzMl90KXNyY1soaSAr IDEpICogZnJhbWUtPnBpdGNoWzBdICsgal0gPDwgOCk7CisJCQkJZHcgfD0gKCh1aW50MzJfdClz cmNbKGkgKyAyKSAqIGZyYW1lLT5waXRjaFswXSArIGpdIDw8IDE2KTsKKwkJCQlkdyB8PSAoKHVp bnQzMl90KXNyY1soaSArIDMpICogZnJhbWUtPnBpdGNoWzBdICsgal0gPDwgMjQpOworCQkJCWlm ICghdmlkZW8tPnRleHR1cmVkKSB7CisJCQkJCS8qCisJCQkJCSAqIEZvciB0ZXh0dXJlZCB3ZSBk byBieXRlIHJldmVyc2luZyBpbiBzaGFkZXIuCisJCQkJCSAqIEhhdmUgdG8gcmV2ZXJzZSBieXRl cyBvcmRlciwgYmVjYXVzZSB0aGUgb25seQorCQkJCQkgKiBwbGF5ZXIgd2hpY2ggc3VwcG9ydHMg QVlVViBmb3JtYXQgY3VycmVudGx5IGlzCisJCQkJCSAqIEdzdHJlYW1lciBhbmQgaXQgc3VwcG9y dHMgaW4gYmFkIHdheSwgZXZlbiB0aG91Z2gKKwkJCQkJICogc3BlYyBzYXlzIE1TQjpBWVVWLCB3 ZSBnZXQgdGhlIGJ5dGVzIG9wcG9zaXRlIHdheS4KKwkJCQkJICovCisJCQkJCXJldmVyc2VfZHcg PSAwOworCQkJCQlyZXZlcnNlX2R3IHw9ICgoZHcgJiAweDAwMDAwMGZmKSA8PCAyNCk7CisJCQkJ CXJldmVyc2VfZHcgfD0gKChkdyAmIDB4MDAwMGZmMDApIDw8IDgpOworCQkJCQlyZXZlcnNlX2R3 IHw9ICgoZHcgJiAweDAwZmYwMDAwKSA+PiA4KTsKKwkJCQkJcmV2ZXJzZV9kdyB8PSAoZHcgPj4g MjQpOworCQkJCX0KKwkJCQllbHNlCisJCQkJCXJldmVyc2VfZHcgPSBkdzsKKwkJCQkqKCh1aW50 MzJfdCopJmRzdFsodyAtIGogLSAxKSAqIGggKyBpXSkgPSByZXZlcnNlX2R3OworCQkJfQorCQl9 CisJCWJyZWFrOworCWNhc2UgUlJfUm90YXRlXzE4MDoKKwkJdyA8PD0gMjsKKwkJZm9yIChpID0g MDsgaSA8IGg7IGkrKykgeworCQkJZm9yIChqID0gMDtqIDwgdzsgaiArPSA0KSB7CisJCQkJdWlu dDMyX3QgcmV2ZXJzZV9kdywgZHc7CisJCQkJZHcgPSAwOworCQkJCWR3IHw9IChzcmNbaSAqIGZy YW1lLT5waXRjaFswXSArIGogKyAzXSk7CisJCQkJZHcgfD0gKCh1aW50MzJfdClzcmNbaSAqIGZy YW1lLT5waXRjaFswXSArIGogKyAyXSA8PCA4KTsKKwkJCQlkdyB8PSAoKHVpbnQzMl90KXNyY1tp ICogZnJhbWUtPnBpdGNoWzBdICsgaiArIDFdIDw8IDE2KTsKKwkJCQlkdyB8PSAoKHVpbnQzMl90 KXNyY1tpICogZnJhbWUtPnBpdGNoWzBdXSA8PCAyNCk7CisJCQkJaWYgKCF2aWRlby0+dGV4dHVy ZWQpIHsKKwkJCQkJLyoKKwkJCQkJICogRm9yIHRleHR1cmVkIHdlIGRvIGJ5dGUgcmV2ZXJzaW5n IGluIHNoYWRlci4KKwkJCQkJICogSGF2ZSB0byByZXZlcnNlIGJ5dGVzIG9yZGVyLCBiZWNhdXNl IHRoZSBvbmx5CisJCQkJCSAqIHBsYXllciB3aGljaCBzdXBwb3J0cyBBWVVWIGZvcm1hdCBjdXJy ZW50bHkgaXMKKwkJCQkJICogR3N0cmVhbWVyIGFuZCBpdCBzdXBwb3J0cyBpbiBiYWQgd2F5LCBl dmVuIHRob3VnaAorCQkJCQkgKiBzcGVjIHNheXMgTVNCOkFZVVYsIHdlIGdldCB0aGUgYnl0ZXMg b3Bwb3NpdGUgd2F5LgorCQkJCQkgKi8KKwkJCQkJcmV2ZXJzZV9kdyA9IDA7CisJCQkJCXJldmVy c2VfZHcgfD0gKChkdyAmIDB4MDAwMDAwZmYpIDw8IDI0KTsKKwkJCQkJcmV2ZXJzZV9kdyB8PSAo KGR3ICYgMHgwMDAwZmYwMCkgPDwgOCk7CisJCQkJCXJldmVyc2VfZHcgfD0gKChkdyAmIDB4MDBm ZjAwMDApID4+IDgpOworCQkJCQlyZXZlcnNlX2R3IHw9IChkdyA+PiAyNCk7CisJCQkJfQorCQkJ CWVsc2UKKwkJCQkJcmV2ZXJzZV9kdyA9IGR3OworCQkJCSooKHVpbnQzMl90KikmZHN0WyhoIC0g aSAtIDEpICogdyArICh3IC0gaiAtIDQpXSkgPSByZXZlcnNlX2R3OworCQkJfQorCQl9CisJCWJy ZWFrOworCWNhc2UgUlJfUm90YXRlXzI3MDoKKwkJaCA8PD0gMjsKKwkJZm9yIChpID0gMDsgaSA8 IGg7IGkgKz0gNCkgeworCQkJZm9yIChqID0gMDsgaiA8IHc7IGorKykgeworCQkJCXVpbnQzMl90 IHJldmVyc2VfZHcsIGR3OworCQkJCWR3ID0gMDsKKwkJCQlkdyB8PSAoc3JjWyhpICsgMykgKiBm cmFtZS0+cGl0Y2hbMF0gKyBqXSk7CisJCQkJZHcgfD0gKCh1aW50MzJfdClzcmNbKGkgKyAyKSAq IGZyYW1lLT5waXRjaFswXSArIGpdIDw8IDgpOworCQkJCWR3IHw9ICgodWludDMyX3Qpc3JjWyhp ICsgMSkgKiBmcmFtZS0+cGl0Y2hbMF0gKyBqXSA8PCAxNik7CisJCQkJZHcgfD0gKCh1aW50MzJf dClzcmNbaSAqIGZyYW1lLT5waXRjaFswXSArIGpdIDw8IDI0KTsKKwkJCQlpZiAoIXZpZGVvLT50 ZXh0dXJlZCkgeworCQkJCQkvKgorCQkJCQkgKiBGb3IgdGV4dHVyZWQgd2UgZG8gYnl0ZSByZXZl cnNpbmcgaW4gc2hhZGVyLgorCQkJCQkgKiBIYXZlIHRvIHJldmVyc2UgYnl0ZXMgb3JkZXIsIGJl Y2F1c2UgdGhlIG9ubHkKKwkJCQkJICogcGxheWVyIHdoaWNoIHN1cHBvcnRzIEFZVVYgZm9ybWF0 IGN1cnJlbnRseSBpcworCQkJCQkgKiBHc3RyZWFtZXIgYW5kIGl0IHN1cHBvcnRzIGluIGJhZCB3 YXksIGV2ZW4gdGhvdWdoCisJCQkJCSAqIHNwZWMgc2F5cyBNU0I6QVlVViwgd2UgZ2V0IHRoZSBi eXRlcyBvcHBvc2l0ZSB3YXkuCisJCQkJCSAqLworCQkJCQlyZXZlcnNlX2R3ID0gMDsKKwkJCQkJ cmV2ZXJzZV9kdyB8PSAoKGR3ICYgMHgwMDAwMDBmZikgPDwgMjQpOworCQkJCQlyZXZlcnNlX2R3 IHw9ICgoZHcgJiAweDAwMDBmZjAwKSA8PCA4KTsKKwkJCQkJcmV2ZXJzZV9kdyB8PSAoKGR3ICYg MHgwMGZmMDAwMCkgPj4gOCk7CisJCQkJCXJldmVyc2VfZHcgfD0gKGR3ID4+IDI0KTsKKwkJCQl9 CisJCQkJZWxzZQorCQkJCQlyZXZlcnNlX2R3ID0gZHc7CisJCQkJKigodWludDMyX3QqKSZkc3Rb aiAqIGggKyAoaCAtIGkgLSA0KV0pID0gcmV2ZXJzZV9kdzsKKwkJCX0KKwkJfQorCQlicmVhazsK Kwl9Cit9CisKIGJvb2wKIHNuYV92aWRlb19jb3B5X2RhdGEoc3RydWN0IHNuYV92aWRlbyAqdmlk ZW8sCiAJCSAgICBzdHJ1Y3Qgc25hX3ZpZGVvX2ZyYW1lICpmcmFtZSwKQEAgLTcwOSw2ICs4NTMs OSBAQCB1c2VfZ3R0OiAvKiBjb3B5IGRhdGEsIG11c3QgdXNlIEdUVCBzbyB0aGF0IHdlIGtlZXAg dGhlIG92ZXJsYXkgdW5jYWNoZWQgKi8KIAkJc25hX2NvcHlfbnYxMl9kYXRhKHZpZGVvLCBmcmFt ZSwgYnVmLCBkc3QpOwogCWVsc2UgaWYgKGlzX3BsYW5hcl9mb3VyY2MoZnJhbWUtPmlkKSkKIAkJ c25hX2NvcHlfcGxhbmFyX2RhdGEodmlkZW8sIGZyYW1lLCBidWYsIGRzdCk7CisJZWxzZSBpZiAo aXNfYXl1dl9mb3VyY2MoZnJhbWUtPmlkKSkKKwkJLyogU29tZSBoYXJkY29kaW5nIGlzIGRvbmUg aW4gZGVmYXVsdCBzbmFfY29weV9wYWNrZWRfZGF0YSwgc28gYWRkZWQgYSBzcGVjaWZpYyBmdW5j dGlvbiAqLworCQlzbmFfY29weV9wYWNrZWRfZGF0YV9heXV2KHZpZGVvLCBmcmFtZSwgYnVmLCBk c3QpOwogCWVsc2UKIAkJc25hX2NvcHlfcGFja2VkX2RhdGEodmlkZW8sIGZyYW1lLCBidWYsIGRz dCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9zbmEvc25hX3ZpZGVvLmggYi9zcmMvc25hL3NuYV92aWRl by5oCmluZGV4IGJiZDNmMGZkLi5kMThjNzllNSAxMDA2NDQKLS0tIGEvc3JjL3NuYS9zbmFfdmlk ZW8uaAorKysgYi9zcmMvc25hL3NuYV92aWRlby5oCkBAIC0zOSw2ICszOSw3IEBAIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogI2RlZmluZSBGT1VSQ0NfUkdCNTY1 ICgoMTYgPDwgMjQpICsgKCdCJyA8PCAxNikgKyAoJ0cnIDw8IDgpICsgJ1InKQogI2RlZmluZSBG T1VSQ0NfUkdCODg4ICgoMjQgPDwgMjQpICsgKCdCJyA8PCAxNikgKyAoJ0cnIDw8IDgpICsgJ1In KQogI2RlZmluZSBGT1VSQ0NfTlYxMiAoKCcyJyA8PCAyNCkgKyAoJzEnIDw8IDE2KSArICgnVicg PDwgOCkgKyAnTicpCisjZGVmaW5lIEZPVVJDQ19BWVVWICgoJ1YnIDw8IDI0KSArICgnVScgPDwg MTYpICsgKCdZJyA8PCA4KSArICdBJykKIAogLyoKICAqIEJlbG93LCBhIGR1bW15IHBpY3R1cmUg dHlwZSB0aGF0IGlzIHVzZWQgaW4gWHZQdXRJbWFnZQpAQCAtNzksNiArODAsMTUgQEAgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAJWHZUb3BUb0JvdHRvbSBcCiB9 CiAKKyNkZWZpbmUgWFZJTUFHRV9BWVVWIHsgXAorCUZPVVJDQ19BWVVWLCBYdllVViwgTFNCRmly c3QsIFwKKwl7J1AnLCAnQScsICdTJywgJ1MnLCAnVCcsICdIJywgJ1InLCAnTycsICdVJywgJ0cn LCAnSCcsICcgJywgJ0EnLCAnWScsICdVJywgJ1YnfSwgXAorCTMyLCBYdlBhY2tlZCwgMSwgMjQs IDB4ZmY8PDE2LCAweGZmPDw4LCAweGZmPDwwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBc CisJeydWJywgJ1UnLCAnWScsICdYJywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMH0sIFwKKwlY dlRvcFRvQm90dG9tIFwKK30KKworCiBzdHJ1Y3Qgc25hX3ZpZGVvIHsKIAlzdHJ1Y3Qgc25hICpz bmE7CiAKQEAgLTE4OSw2ICsxOTksMTYgQEAgc3RhdGljIGlubGluZSBpbnQgaXNfbnYxMl9mb3Vy Y2MoaW50IGlkKQogCX0KIH0KIAorc3RhdGljIGlubGluZSBpbnQgaXNfYXl1dl9mb3VyY2MoaW50 IGlkKQoreworCXN3aXRjaCAoaWQpIHsKKwljYXNlIEZPVVJDQ19BWVVWOgorCQlyZXR1cm4gMTsK KwlkZWZhdWx0OgorCQlyZXR1cm4gMDsKKwl9Cit9CisKIGJvb2wKIHNuYV92aWRlb19jbGlwX2hl bHBlcihzdHJ1Y3Qgc25hX3ZpZGVvICp2aWRlbywKIAkJICAgICAgc3RydWN0IHNuYV92aWRlb19m cmFtZSAqZnJhbWUsCmRpZmYgLS1naXQgYS9zcmMvc25hL3NuYV92aWRlb19zcHJpdGUuYyBiL3Ny Yy9zbmEvc25hX3ZpZGVvX3Nwcml0ZS5jCmluZGV4IDhiN2FlOGFlLi4yODhmMWQ2MiAxMDA2NDQK LS0tIGEvc3JjL3NuYS9zbmFfdmlkZW9fc3ByaXRlLmMKKysrIGIvc3JjL3NuYS9zbmFfdmlkZW9f c3ByaXRlLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKICNkZWZpbmUgRFJNX0ZPUk1BVF9ZVVlWICAgICAg ICAgZm91cmNjX2NvZGUoJ1knLCAnVScsICdZJywgJ1YnKSAvKiBbMzE6MF0gQ3IwOlkxOkNiMDpZ MCA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KICNkZWZpbmUgRFJNX0ZPUk1BVF9VWVZZICAgICAg ICAgZm91cmNjX2NvZGUoJ1UnLCAnWScsICdWJywgJ1knKSAvKiBbMzE6MF0gWTE6Q3IwOlkwOkNi MCA4Ojg6ODo4IGxpdHRsZSBlbmRpYW4gKi8KICNkZWZpbmUgRFJNX0ZPUk1BVF9OVjEyICAgICAg ICAgZm91cmNjX2NvZGUoJ04nLCAnVicsICcxJywgJzInKSAvKiAyeDIgc3Vic2FtcGxlZCBDcjpD YiBwbGFuZSAqLwotCisjZGVmaW5lIERSTV9GT1JNQVRfWFlVVjg4ODggICAgIGZvdXJjY19jb2Rl KCdYJywgJ1knLCAnVScsICdWJykgLyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUgKi8KICNk ZWZpbmUgaGFzX2h3X3NjYWxpbmcoc25hLCB2aWRlbykgKChzbmEpLT5rZ2VtLmdlbiA8IDA3MSB8 fCBcCiAJCQkJICAgIChzbmEpLT5rZ2VtLmdlbiA+PSAwMTEwKQogCkBAIC03NCwxMSArNzQsMTEg QEAgc3RhdGljIEF0b20geHZDb2xvcktleSwgeHZBbHdheXNPblRvcCwgeHZTeW5jVG9WYmxhbmss IHh2Q29sb3JzcGFjZTsKIAogc3RhdGljIFh2Rm9ybWF0UmVjIGZvcm1hdHNbXSA9IHsgezE1fSwg ezE2fSwgezI0fSB9Owogc3RhdGljIGNvbnN0IFh2SW1hZ2VSZWMgaW1hZ2VzW10gPSB7IFhWSU1B R0VfWVVZMiwgWFZJTUFHRV9VWVZZLAotCQkJCSAgICAgWFZNQ19SR0I4ODggfTsKKwkJCQkgICAg IFhWTUNfUkdCODg4LCBYVklNQUdFX0FZVVYgfTsKIHN0YXRpYyBjb25zdCBYdkltYWdlUmVjIGlt YWdlc19yZ2I1NjVbXSA9IHsgWFZJTUFHRV9ZVVkyLCBYVklNQUdFX1VZVlksCi0JCQkJCSAgICBY Vk1DX1JHQjg4OCwgWFZNQ19SR0I1NjUgfTsKKwkJCQkJICAgIFhWTUNfUkdCODg4LCBYVk1DX1JH QjU2NSwgWFZJTUFHRV9BWVVWIH07CiBzdGF0aWMgY29uc3QgWHZJbWFnZVJlYyBpbWFnZXNfbnYx MltdID0geyBYVklNQUdFX1lVWTIsIFhWSU1BR0VfVVlWWSwKLQkJCQkJICBYVklNQUdFX05WMTIs IFhWTUNfUkdCODg4LCBYVk1DX1JHQjU2NSB9OworCQkJCQkgIFhWSU1BR0VfTlYxMiwgWFZNQ19S R0I4ODgsIFhWTUNfUkdCNTY1LCBYVklNQUdFX0FZVVYgfTsKIHN0YXRpYyBjb25zdCBYdkF0dHJp YnV0ZVJlYyBhdHRyaWJzW10gPSB7CiAJeyBYdlNldHRhYmxlIHwgWHZHZXR0YWJsZSwgMCwgMSwg KGNoYXIgKikiWFZfQ09MT1JTUEFDRSIgfSwgLyogQlQuNjAxLCBCVC43MDkgKi8KIAl7IFh2U2V0 dGFibGUgfCBYdkdldHRhYmxlLCAwLCAweGZmZmZmZiwgKGNoYXIgKikiWFZfQ09MT1JLRVkiIH0s CkBAIC0zNjQsNiArMzY0LDEwIEBAIHNuYV92aWRlb19zcHJpdGVfc2hvdyhzdHJ1Y3Qgc25hICpz bmEsCiAJCWNhc2UgRk9VUkNDX1VZVlk6CiAJCQlmLnBpeGVsX2Zvcm1hdCA9IERSTV9GT1JNQVRf VVlWWTsKIAkJCWJyZWFrOworCQljYXNlIEZPVVJDQ19BWVVWOgorCQkJLyogaTkxNSBkb2Vzbid0 IHN1cHBvcnQgYWxwaGEsIHNvIHdlIHVzZSBYWVVWICovCisJCQlmLnBpeGVsX2Zvcm1hdCA9IERS TV9GT1JNQVRfWFlVVjg4ODg7CisJCQlicmVhazsKIAkJY2FzZSBGT1VSQ0NfWVVZMjoKIAkJZGVm YXVsdDoKIAkJCWYucGl4ZWxfZm9ybWF0ID0gRFJNX0ZPUk1BVF9ZVVlWOwpAQCAtNzA1LDcgKzcw OSwxMiBAQCBzdGF0aWMgaW50IHNuYV92aWRlb19zcHJpdGVfcXVlcnkoZGRRdWVyeUltYWdlQXR0 cmlidXRlc19BUkdTKQogCQl0bXAgKj0gKCpoID4+IDEpOwogCQlzaXplICs9IHRtcDsKIAkJYnJl YWs7Ci0KKwljYXNlIEZPVVJDQ19BWVVWOgorCQl0bXAgPSAqdyA8PCAyOworCQlpZiAocGl0Y2hl cykKKwkJCXBpdGNoZXNbMF0gPSB0bXA7CisJCXNpemUgPSAqaCAqIHRtcDsKKwkJYnJlYWs7CiAJ ZGVmYXVsdDoKIAkJKncgPSAoKncgKyAxKSAmIH4xOwogCQkqaCA9ICgqaCArIDEpICYgfjE7CmRp ZmYgLS1naXQgYS9zcmMvc25hL3NuYV92aWRlb190ZXh0dXJlZC5jIGIvc3JjL3NuYS9zbmFfdmlk ZW9fdGV4dHVyZWQuYwppbmRleCBhNzg0ZmUyZS4uMjFjNWYzNzkgMTAwNjQ0Ci0tLSBhL3NyYy9z bmEvc25hX3ZpZGVvX3RleHR1cmVkLmMKKysrIGIvc3JjL3NuYS9zbmFfdmlkZW9fdGV4dHVyZWQu YwpAQCAtNjgsNiArNjgsOCBAQCBzdGF0aWMgY29uc3QgWHZJbWFnZVJlYyBnZW40X0ltYWdlc1td ID0gewogCVhWSU1BR0VfSTQyMCwKIAlYVklNQUdFX05WMTIsCiAJWFZJTUFHRV9VWVZZLAorCVhW SU1BR0VfQVlVViwKKwlYVk1DX1JHQjg4OCwKIAlYVk1DX1lVViwKIH07CiAKQEAgLTMzNyw2ICsz MzksMTIgQEAgc25hX3ZpZGVvX3RleHR1cmVkX3F1ZXJ5KGRkUXVlcnlJbWFnZUF0dHJpYnV0ZXNf QVJHUykKIAkJCXBpdGNoZXNbMF0gPSBzaXplOwogCQlzaXplICo9ICpoOwogCQlicmVhazsKKwlj YXNlIEZPVVJDQ19BWVVWOgorCQlzaXplID0gKncgPDwgMjsKKwkJaWYgKHBpdGNoZXMpCisJCQlw aXRjaGVzWzBdID0gc2l6ZTsKKwkJc2l6ZSAqPSAqaDsKKwkJYnJlYWs7CiAJY2FzZSBGT1VSQ0Nf WFZNQzoKIAkJKmggPSAoKmggKyAxKSAmIH4xOwogCQlzaXplID0gc2l6ZW9mKHVpbnQzMl90KTsK LS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==