From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 05A186EC37 for ; Thu, 7 Feb 2019 09:21:39 +0000 (UTC) From: Maarten Lankhorst Date: Thu, 7 Feb 2019 10:21:34 +0100 Message-Id: <20190207092136.10659-2-maarten.lankhorst@linux.intel.com> In-Reply-To: <20190207092136.10659-1-maarten.lankhorst@linux.intel.com> References: <20190207092136.10659-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v2 2/4] lib/igt_fb: Add support for P01x formats, v4. 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: igt-dev@lists.freedesktop.org List-ID: VGhlIFAwMXggZm9ybWF0cyBhcmUgcGxhbmFyIDE2IGJpdHMgcGVyIGNvbXBvbmVudCwgd2l0aCB0 aGUgdW51c2VkIGxvd2VyIGJpdHMgc2V0IHRvIDAuClRoaXMgbWVhbnMgdGhleSBjYW4gYWxsIGJl IGNvbnZlcnRlZCB0aGUgc2FtZSB3YXkuIE9ubHkgdGhlIHJhbmdlIGlzIHNsaWdodGx5IGRpZmZl cmVudCwKYW5kIHRoaXMgaXMgaGFuZGxlZCBpbiB0aGUgY29sb3JfZW5jb2RpbmcgaW1wbGVtZW50 YXRpb24uCgpUaGlzIHJlcXVpcmVzIGNhaXJvIDEuMTcuMiBhbmQgcGl4bWFuIDAuMzYuIFRoaXMg d29ya3MgYnV0IGRvZXNuJ3QgZ2l2ZSBleHRyYSBwcmVjaXNpb24uCkZvciBtb3JlIHRoYW4gOCBi aXRzIHByZWNpc2lvbiBhIGZldyBtb3JlIHBhdGNoZXMgYXJlIHJlcXVpcmVkIHRvIHBpeG1hbiwg cGVuZGluZyByZXZpZXc6Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL3Bp eG1hbi8yMDE5LUphbnVhcnkvMDA0ODE1Lmh0bWwKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvYXJjaGl2ZXMvcGl4bWFuLzIwMTktSmFudWFyeS8wMDQ4MDkuaHRtbAoKT25jZSB0aG9zZSBh cmUgbWVyZ2VkLCB3ZSB3aWxsIHJlcXVpcmUgdGhlIG5leHQgcGl4bWFuIHJlbGVhc2UgZm9yIGJl dHRlciBwcmVjaXNpb24uCgpDaGFuZ2VzIHNpbmNlIHYxOgotIEFkZCBmYWxsYmFjayBjb2xvciBk ZWZpbml0aW9ucyB3aGVuIGNvbXBpbGluZyBvbiBjYWlybyB2ZXJzaW9uIDwgMS4xNy4yLgotIFNr aXAgd2hlbiBGQiBjcmVhdGlvbiBmYWlscyBvbiBIRFIgZm9ybWF0cywgaW5zdGVhZCBvZiBmYWls aW5nLgpDaGFuZ2VzIHNpbmNlIHYyOgotIENvbXBsYWluIHNsaWdodGx5IGhhcmRlciB3aGVuIHBp eG1hbi9jYWlybyBhcmUgb3V0IG9mIGRhdGUuCi0gQ3JlYXRlIGEgZmIgd2l0aCBhbHBoYSB3aGVu IGNvbnZlcnRpbmcgdG8gcGl4bWFuIGZvcm1hdHMgd2l0aCBhbHBoYS4KLSBPb3BzLCBzL3BpeG1h bl9mb3JtYXRfY29kZV90L2NhaXJvX2Zvcm1hdF90LwpDaGFuZ2VzIHNpbmNlIHYzOgotIFJlYmFz ZSBvbiB0b3Agb2YgdXBzdHJlYW0gWVVWIGNoYW5nZXMuCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVu IExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0KIGNvbmZp Z3VyZS5hYyAgICAgICAgICAgICAgICAgIHwgIDExICstCiBpbmNsdWRlL2RybS11YXBpL2RybV9m b3VyY2MuaCB8ICAxMCArKwogbGliL2lndF9jb2xvcl9lbmNvZGluZy5jICAgICAgfCAgIDQgKwog bGliL2lndF9mYi5jICAgICAgICAgICAgICAgICAgfCAyOTMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLQogbGliL2lndF9mYi5oICAgICAgICAgICAgICAgICAgfCAgIDYgKwogbWVz b24uYnVpbGQgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKIDYgZmlsZXMgY2hhbmdlZCwgMzI5 IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFj IGIvY29uZmlndXJlLmFjCmluZGV4IGI0NmYwMjRmODc1YS4uYTMzM2NmOGQ2ZGJiIDEwMDY0NAot LS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC0xMzYsMTAgKzEzNiwxNyBA QCBmaQogUEtHX0NIRUNLX01PRFVMRVMoWFJBTkRSLCB4cmFuZHIgPj0gMS4zLCBBQ19ERUZJTkUo SEFWRV9YUkFORFIsIDEsIFtIYXZlIGxpYlhyYW5kcl0pLCBbaGF2ZV94cmFuZHI9bm9dKQogCiAj IGZvciB0ZXN0ZGlzcGxheQotUEtHX0NIRUNLX01PRFVMRVMoQ0FJUk8sIFtjYWlybyA+PSAxLjEy LjBdKQorUEtHX0NIRUNLX01PRFVMRVMoQ0FJUk8sIFtjYWlybyA+PSAxLjE3LjJdLCBbXSwKKwlb QUNfTVNHX1dBUk4oW0NhaXJvIHRvbyBvbGQsIEhEUiBmb3JtYXRzIG5vdCBhdmFpbGFibGUuIFVw Z3JhZGUgdG8gY2Fpcm8gMS4xNy4yXSkKKwlQS0dfQ0hFQ0tfTU9EVUxFUyhDQUlSTywgW2NhaXJv ID49IDEuMTIuMF0pXQorKQogUEtHX0NIRUNLX01PRFVMRVMoTElCVURFViwgW2xpYnVkZXZdKQog UEtHX0NIRUNLX01PRFVMRVMoR0xJQiwgW2dsaWItMi4wXSkKLVBLR19DSEVDS19NT0RVTEVTKFBJ WE1BTiwgW3BpeG1hbi0xXSkKK1BLR19DSEVDS19NT0RVTEVTKFBJWE1BTiwgW3BpeG1hbi0xID49 IDAuMzYuMF0sIFtdLCBbCisJQUNfTVNHX1dBUk4oW1BpeG1hbiB0b28gb2xkLCBIRFIgZm9ybWF0 cyBub3QgYXZhaWxhYmxlLiBVcGdyYWRlIHRvIHBpeG1hbiAwLjM2LjBdKQorCVBLR19DSEVDS19N T0RVTEVTKFBJWE1BTiwgW3BpeG1hbi0xXSkKK10pCisKIFBLR19DSEVDS19NT0RVTEVTKEdTTCwg W2dzbF0sIFtnc2w9eWVzXSwgW2dzbD1ub10pCiBBTV9DT05ESVRJT05BTChIQVZFX0dTTCwgW3Rl c3QgIngkZ3NsIiA9IHh5ZXNdKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL2RybV9m b3VyY2MuaCBiL2luY2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5oCmluZGV4IDQxMTA2YzgzNTc0 Ny4uZmU2YjY2ZWYxNzU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2Mu aAorKysgYi9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaApAQCAtMTk1LDYgKzE5NSwxNiBA QCBleHRlcm4gIkMiIHsKICNkZWZpbmUgRFJNX0ZPUk1BVF9OVjI0CQlmb3VyY2NfY29kZSgnTics ICdWJywgJzInLCAnNCcpIC8qIG5vbi1zdWJzYW1wbGVkIENyOkNiIHBsYW5lICovCiAjZGVmaW5l IERSTV9GT1JNQVRfTlY0MgkJZm91cmNjX2NvZGUoJ04nLCAnVicsICc0JywgJzInKSAvKiBub24t c3Vic2FtcGxlZCBDYjpDciBwbGFuZSAqLwogCisvKgorICogMiBwbGFuZSBZQ2JDcgorICogaW5k ZXggMCA9IFkgcGxhbmUsIFsxNTowXSBZIGxpdHRsZSBlbmRpYW4gd2hlcmUgUHh4eCBpbmRpY2F0 ZQorICogY29tcG9uZW50IHh4eCBtc2IgWSBbeHh4OjE2LXh4eF0KKyAqIGluZGV4IDEgPSBDcjpD YiBwbGFuZSwgWzMxOjBdIENyOkNiIGxpdHRsZSBlbmRpYW4gW3h4eDoxNi14eHg6eHh4OjE2LXh4 eF0KKyAqLworI2RlZmluZSBEUk1fRk9STUFUX1AwMTAJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAn MScsICcwJykgLyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDEwIGJpdCBwZXIgY2hhbm5l bCAqLworI2RlZmluZSBEUk1fRk9STUFUX1AwMTIJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScs ICcyJykgLyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDEyIGJpdCBwZXIgY2hhbm5lbCAq LworI2RlZmluZSBEUk1fRk9STUFUX1AwMTYJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICc2 JykgLyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDE2IGJpdCBwZXIgY2hhbm5lbCAqLwor CiAvKgogICogMyBwbGFuZSBZQ2JDcgogICogaW5kZXggMDogWSBwbGFuZSwgWzc6MF0gWQpkaWZm IC0tZ2l0IGEvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jIGIvbGliL2lndF9jb2xvcl9lbmNvZGlu Zy5jCmluZGV4IDRjYmUxOGUyMTdlMy4uYjdhMTJhMWUwN2Y3IDEwMDY0NAotLS0gYS9saWIvaWd0 X2NvbG9yX2VuY29kaW5nLmMKKysrIGIvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCkBAIC0xMzUs MTEgKzEzNSwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbG9yX2VuY29kaW5nX2Zvcm1hdCB7 CiAJZmxvYXQgb2ZzX3ksIG1heF95LCBvZnNfY2JjciwgbWlkX2NiY3IsIG1heF9jYmNyOwogfSBm b3JtYXRzW10gPSB7CiAJeyBEUk1fRk9STUFUX1hSR0I4ODg4LCAyNTUuZiwgfSwKKwl7IElHVF9G T1JNQVRfRkxPQVQsIDEuZiwgfSwKIAl7IERSTV9GT1JNQVRfTlYxMiwgMjU1LmYsIDE2LmYsIDIz NS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfWVVZViwgMjU1LmYsIDE2 LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfWVZZVSwgMjU1 LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfVVlW WSwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JN QVRfVllVWSwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKKwl7IERS TV9GT1JNQVRfUDAxMCwgNjU0NzIuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYs IDYxNDQwLmYgfSwKKwl7IERSTV9GT1JNQVRfUDAxMiwgNjU1MjAuZiwgNDA5Ni5mLCA2MDE2MC5m LCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKKwl7IERSTV9GT1JNQVRfUDAxNiwgNjU1MzUu ZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKIH07CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0ICpsb29rdXBfZm91cmNjKHVp bnQzMl90IGZvdXJjYykKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwpp bmRleCBkYjNhZTA2NzQ4ZDEuLjEyNzYzY2M4NWM4NiAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5j CisrKyBiL2xpYi9pZ3RfZmIuYwpAQCAtNjIsNiArNjIsMjAgQEAKIAogI2RlZmluZSBQSVhNQU5f aW52YWxpZAkwCiAKKyNpZiBDQUlST19WRVJTSU9OIDwgQ0FJUk9fVkVSU0lPTl9FTkNPREUoMSwg MTcsIDIpCisvKgorICogV2UgbmVlZCBjYWlybyAxLjE3LjIgdG8gdXNlIEhEUiBmb3JtYXRzLCBi dXQgdGhlIG9ubHkgdGhpbmcgYWRkZWQgaXMgYSB2YWx1ZQorICogdG8gY2Fpcm9fZm9ybWF0X3Qu CisgKgorICogVG8gcHJldmVudCBnb2luZyBvdXRzaWRlIHRoZSBlbnVtLCBtYWtlIGNhaXJvX2Zv cm1hdF90IGFuIGludCBhbmQgZGVmaW5lCisgKiBvdXJzZWx2ZXMuCisgKi8KKworI2RlZmluZSBD QUlST19GT1JNQVRfUkdCOTZGICg2KQorI2RlZmluZSBDQUlST19GT1JNQVRfUkdCQTEyOEYgKDcp CisjZGVmaW5lIGNhaXJvX2Zvcm1hdF90IGludAorI2VuZGlmCisKIC8qIGRybSBmb3VyY2MvY2Fp cm8gZm9ybWF0IG1hcHMgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0 IHsKIAljb25zdCBjaGFyICpuYW1lOwpAQCAtMTcwLDYgKzE4NCwyNSBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7CiAJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9i cHAgPSB7IDE2LCB9LAogCSAgLmhzdWIgPSAyLCAudnN1YiA9IDEsCiAJfSwKKwl7IC5uYW1lID0g IlAwMTAiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxMCwKKwkgIC5jYWly b19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCisJICAubnVtX3BsYW5lcyA9IDIsIC5wbGFuZV9i cHAgPSB7IDE2LCAzMiB9LAorCSAgLnZzdWIgPSAyLCAuaHN1YiA9IDIsCisJfSwKKwl7IC5uYW1l ID0gIlAwMTIiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxMiwKKwkgIC5j YWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCisJICAubnVtX3BsYW5lcyA9IDIsIC5wbGFu ZV9icHAgPSB7IDE2LCAzMiB9LAorCSAgLnZzdWIgPSAyLCAuaHN1YiA9IDIsCisJfSwKKwl7IC5u YW1lID0gIlAwMTYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxNiwKKwkg IC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCisJICAubnVtX3BsYW5lcyA9IDIsIC5w bGFuZV9icHAgPSB7IDE2LCAzMiB9LAorCSAgLnZzdWIgPSAyLCAuaHN1YiA9IDIsCisJfSwKKwl7 IC5uYW1lID0gIklHVC1GTE9BVCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gSUdUX0ZPUk1BVF9G TE9BVCwKKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9JTlZBTElELAorCSAgLm51bV9wbGFu ZXMgPSAxLCAucGxhbmVfYnBwID0geyAxMjggfSwKKwl9LAogfTsKICNkZWZpbmUgZm9yX2VhY2hf Zm9ybWF0KGYpCVwKIAlmb3IgKGYgPSBmb3JtYXRfZGVzYzsgZiAtIGZvcm1hdF9kZXNjIDwgQVJS QVlfU0laRShmb3JtYXRfZGVzYyk7IGYrKykKQEAgLTUyMCw2ICs1NTMsMTQgQEAgc3RhdGljIHZv aWQgY2xlYXJfeXV2X2J1ZmZlcihzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJCWZ1bGxfcmFuZ2UgPyAw eDAwODAwMDgwIDogMHgxMDgwMTA4MCwKIAkJCWZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5lX2hl aWdodFswXSAvIHNpemVvZih3Y2hhcl90KSk7CiAJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9Q MDEwOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDE2OgorCQl3 bWVtc2V0KHB0ciwgZnVsbF9yYW5nZSA/IDAgOiAweDEwMDAxMDAwLAorCQkJZmItPm9mZnNldHNb MV0gLyBzaXplb2Yod2NoYXJfdCkpOworCQl3bWVtc2V0KHB0ciArIGZiLT5vZmZzZXRzWzFdLCAw eDgwMDA4MDAwLAorCQkJZmItPnN0cmlkZXNbMV0gKiBmYi0+cGxhbmVfaGVpZ2h0WzFdIC8gc2l6 ZW9mKHdjaGFyX3QpKTsKKwkJYnJlYWs7CiAJfQogCiAJaWd0X2ZiX3VubWFwX2J1ZmZlcihmYiwg cHRyKTsKQEAgLTE0OTYsNiArMTUzNyw3IEBAIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2Fk IHsKIH07CiAKIHN0YXRpYyB2b2lkICppZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIo aW50IGZkLAorCQkJCQkgICAgICAgdW5zaWduZWQgZHJtX2Zvcm1hdCwKIAkJCQkJICAgICAgIHVu c2lnbmVkIGludCB3aWR0aCwKIAkJCQkJICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCiAJCQkJ CSAgICAgICBzdHJ1Y3QgaWd0X2ZiICpzaGFkb3cpCkBAIC0xNTA1LDcgKzE1NDcsNyBAQCBzdGF0 aWMgdm9pZCAqaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFkb3dfYnVmZmVyKGludCBmZCwKIAlpZ3Rf YXNzZXJ0KHNoYWRvdyk7CiAKIAlmYl9pbml0KHNoYWRvdywgZmQsIHdpZHRoLCBoZWlnaHQsCi0J CURSTV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCWRybV9m b3JtYXQsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCiAJCUlHVF9DT0xPUl9ZQ0JDUl9CVDcw OSwgSUdUX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0UpOwogCiAJc2hhZG93LT5zdHJpZGVzWzBd ID0gQUxJR04od2lkdGggKiBzaGFkb3ctPnBsYW5lX2JwcFswXSwgMTYpOwpAQCAtMTU5OSw2ICsx NjQxLDkgQEAgc3RhdGljIHZvaWQgZ2V0X3l1dl9wYXJhbWV0ZXJzKHN0cnVjdCBpZ3RfZmIgKmZi LCBzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMgKnBhcmFtcykKIAogCXN3aXRjaCAoZmItPmRybV9mb3Jt YXQpIHsKIAljYXNlIERSTV9GT1JNQVRfTlYxMjoKKwljYXNlIERSTV9GT1JNQVRfUDAxMDoKKwlj YXNlIERSTV9GT1JNQVRfUDAxMjoKKwljYXNlIERSTV9GT1JNQVRfUDAxNjoKIAkJcGFyYW1zLT55 X2luYyA9IDE7CiAJCXBhcmFtcy0+dXZfaW5jID0gMjsKIAkJYnJlYWs7CkBAIC0xNjE5LDYgKzE2 NjQsOSBAQCBzdGF0aWMgdm9pZCBnZXRfeXV2X3BhcmFtZXRlcnMoc3RydWN0IGlndF9mYiAqZmIs IHN0cnVjdCB5dXZfcGFyYW1ldGVycyAqcGFyYW1zKQogCiAJc3dpdGNoIChmYi0+ZHJtX2Zvcm1h dCkgewogCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgorCWNh c2UgRFJNX0ZPUk1BVF9QMDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDE2OgogCQlwYXJhbXMtPnlf c3RyaWRlID0gZmItPnN0cmlkZXNbMF07CiAJCXBhcmFtcy0+dXZfc3RyaWRlID0gZmItPnN0cmlk ZXNbMV07CiAJCWJyZWFrOwpAQCAtMTY0MCw2ICsxNjg4LDE0IEBAIHN0YXRpYyB2b2lkIGdldF95 dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpw YXJhbXMpCiAJCXBhcmFtcy0+dl9vZmZzZXQgPSBmYi0+b2Zmc2V0c1sxXSArIDE7CiAJCWJyZWFr OwogCisJY2FzZSBEUk1fRk9STUFUX1AwMTA6CisJY2FzZSBEUk1fRk9STUFUX1AwMTI6CisJY2Fz ZSBEUk1fRk9STUFUX1AwMTY6CisJCXBhcmFtcy0+eV9vZmZzZXQgPSBmYi0+b2Zmc2V0c1swXTsK KwkJcGFyYW1zLT51X29mZnNldCA9IGZiLT5vZmZzZXRzWzFdOworCQlwYXJhbXMtPnZfb2Zmc2V0 ID0gZmItPm9mZnNldHNbMV0gKyAyOworCQlicmVhazsKKwogCWNhc2UgRFJNX0ZPUk1BVF9ZVVlW OgogCQlwYXJhbXMtPnlfb2Zmc2V0ID0gZmItPm9mZnNldHNbMF07CiAJCXBhcmFtcy0+dV9vZmZz ZXQgPSBmYi0+b2Zmc2V0c1swXSArIDE7CkBAIC0xODIxLDYgKzE4NzcsMTc4IEBAIHN0YXRpYyB2 b2lkIGNvbnZlcnRfcmdiMjRfdG9feXV2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJfQogfQog CitzdGF0aWMgdm9pZCByZWFkX3JnYmYoc3RydWN0IGlndF92ZWM0ICpyZ2IsIGNvbnN0IGZsb2F0 ICpyZ2IyNCkKK3sKKwlyZ2ItPmRbMF0gPSByZ2IyNFswXTsKKwlyZ2ItPmRbMV0gPSByZ2IyNFsx XTsKKwlyZ2ItPmRbMl0gPSByZ2IyNFsyXTsKKwlyZ2ItPmRbM10gPSAxLjBmOworfQorCitzdGF0 aWMgdm9pZCB3cml0ZV9yZ2JmKGZsb2F0ICpyZ2IyNCwgY29uc3Qgc3RydWN0IGlndF92ZWM0ICpy Z2IpCit7CisJcmdiMjRbMF0gPSByZ2ItPmRbMF07CisJcmdiMjRbMV0gPSByZ2ItPmRbMV07CisJ cmdiMjRbMl0gPSByZ2ItPmRbMl07Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnRfeXV2MTZfdG9f ZmxvYXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKK3sKKwljb25zdCBzdHJ1Y3QgZm9ybWF0X2Rl c2Nfc3RydWN0ICpzcmNfZm10ID0KKwkJbG9va3VwX2RybV9mb3JtYXQoY3Z0LT5zcmMuZmItPmRy bV9mb3JtYXQpOworCWludCBpLCBqOworCXVpbnQ4X3QgZnBwID0gMzsKKwl1aW50MTZfdCAqeSwg KnUsICp2OworCWZsb2F0ICpwdHIgPSBjdnQtPmRzdC5wdHI7CisJdW5zaWduZWQgaW50IGZsb2F0 X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOworCXN0cnVj dCBpZ3RfbWF0NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9m b3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0 LT5zcmMuZmItPmNvbG9yX2VuY29kaW5nLAorCQkJCQkJICAgIGN2dC0+c3JjLmZiLT5jb2xvcl9y YW5nZSk7CisJdWludDE2X3QgKmJ1ZjsKKwlzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMgcGFyYW1zID0g eyB9OworCisJaWd0X2Fzc2VydChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFU X0ZMT0FUICYmCisJCSAgIGlndF9mb3JtYXRfaXNfeXV2KGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0 KSk7CisKKwlidWYgPSBjb252ZXJ0X3NyY19nZXQoY3Z0KTsKKwlnZXRfeXV2X3BhcmFtZXRlcnMo Y3Z0LT5zcmMuZmIsICZwYXJhbXMpOworCWlndF9hc3NlcnQoIShwYXJhbXMueV9vZmZzZXQgJSBz aXplb2YoKmJ1ZikpICYmCisJCSAgICEocGFyYW1zLnVfb2Zmc2V0ICUgc2l6ZW9mKCpidWYpKSAm JgorCQkgICAhKHBhcmFtcy52X29mZnNldCAlIHNpemVvZigqYnVmKSkpOworCisJeSA9IGJ1ZiAr IHBhcmFtcy55X29mZnNldCAvIHNpemVvZigqYnVmKTsKKwl1ID0gYnVmICsgcGFyYW1zLnVfb2Zm c2V0IC8gc2l6ZW9mKCpidWYpOworCXYgPSBidWYgKyBwYXJhbXMudl9vZmZzZXQgLyBzaXplb2Yo KmJ1Zik7CisKKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhlaWdodDsgaSsrKSB7CisJ CWNvbnN0IHVpbnQxNl90ICp5X3RtcCA9IHk7CisJCWNvbnN0IHVpbnQxNl90ICp1X3RtcCA9IHU7 CisJCWNvbnN0IHVpbnQxNl90ICp2X3RtcCA9IHY7CisJCWZsb2F0ICpyZ2JfdG1wID0gcHRyOwor CisJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykgeworCQkJc3RydWN0 IGlndF92ZWM0IHJnYiwgeXV2OworCisJCQl5dXYuZFswXSA9ICp5X3RtcDsKKwkJCXl1di5kWzFd ID0gKnVfdG1wOworCQkJeXV2LmRbMl0gPSAqdl90bXA7CisJCQl5dXYuZFszXSA9IDEuMGY7CisK KwkJCXJnYiA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2KTsKKwkJCXdyaXRlX3JnYmYo cmdiX3RtcCwgJnJnYik7CisKKwkJCXJnYl90bXAgKz0gZnBwOworCQkJeV90bXAgKz0gcGFyYW1z LnlfaW5jOworCisJCQlpZiAoKHNyY19mbXQtPmhzdWIgPT0gMSkgfHwgKGogJSBzcmNfZm10LT5o c3ViKSkgeworCQkJCXVfdG1wICs9IHBhcmFtcy51dl9pbmM7CisJCQkJdl90bXAgKz0gcGFyYW1z LnV2X2luYzsKKwkJCX0KKwkJfQorCisJCXB0ciArPSBmbG9hdF9zdHJpZGU7CisJCXkgKz0gcGFy YW1zLnlfc3RyaWRlIC8gc2l6ZW9mKCp5KTsKKworCQlpZiAoKHNyY19mbXQtPnZzdWIgPT0gMSkg fHwgKGkgJSBzcmNfZm10LT52c3ViKSkgeworCQkJdSArPSBwYXJhbXMudXZfc3RyaWRlIC8gc2l6 ZW9mKCp1KTsKKwkJCXYgKz0gcGFyYW1zLnV2X3N0cmlkZSAvIHNpemVvZigqdik7CisJCX0KKwl9 CisKKwljb252ZXJ0X3NyY19wdXQoY3Z0LCBidWYpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0 X2Zsb2F0X3RvX3l1djE2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCit7CisJY29uc3Qgc3RydWN0 IGZvcm1hdF9kZXNjX3N0cnVjdCAqZHN0X2ZtdCA9CisJCWxvb2t1cF9kcm1fZm9ybWF0KGN2dC0+ ZHN0LmZiLT5kcm1fZm9ybWF0KTsKKwlpbnQgaSwgajsKKwl1aW50MTZfdCAqeSwgKnUsICp2Owor CWNvbnN0IGZsb2F0ICpwdHIgPSBjdnQtPnNyYy5wdHI7CisJdWludDhfdCBmcHAgPSAzOworCXVu c2lnbmVkIGZsb2F0X3N0cmlkZSA9IGN2dC0+c3JjLmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpw dHIpOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoY3Z0LT5z cmMuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQsCisJ CQkJCQkgICAgY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAorCQkJCQkJICAgIGN2dC0+ZHN0 LmZiLT5jb2xvcl9yYW5nZSk7CisJc3RydWN0IHl1dl9wYXJhbWV0ZXJzIHBhcmFtcyA9IHsgfTsK KworCWlndF9hc3NlcnQoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gSUdUX0ZPUk1BVF9GTE9B VCAmJgorCQkgICBpZ3RfZm9ybWF0X2lzX3l1dihjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCkpOwor CisJZ2V0X3l1dl9wYXJhbWV0ZXJzKGN2dC0+ZHN0LmZiLCAmcGFyYW1zKTsKKwlpZ3RfYXNzZXJ0 KCEocGFyYW1zLnlfb2Zmc2V0ICUgc2l6ZW9mKCp5KSkgJiYKKwkJICAgIShwYXJhbXMudV9vZmZz ZXQgJSBzaXplb2YoKnUpKSAmJgorCQkgICAhKHBhcmFtcy52X29mZnNldCAlIHNpemVvZigqdikp KTsKKworCXkgPSBjdnQtPmRzdC5wdHIgKyBwYXJhbXMueV9vZmZzZXQ7CisJdSA9IGN2dC0+ZHN0 LnB0ciArIHBhcmFtcy51X29mZnNldDsKKwl2ID0gY3Z0LT5kc3QucHRyICsgcGFyYW1zLnZfb2Zm c2V0OworCisJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgeworCQlj b25zdCBmbG9hdCAqcmdiX3RtcCA9IHB0cjsKKwkJdWludDE2X3QgKnlfdG1wID0geTsKKwkJdWlu dDE2X3QgKnVfdG1wID0gdTsKKwkJdWludDE2X3QgKnZfdG1wID0gdjsKKworCQlmb3IgKGogPSAw OyBqIDwgY3Z0LT5kc3QuZmItPndpZHRoOyBqKyspIHsKKwkJCWNvbnN0IGZsb2F0ICpwYWlyX2Zs b2F0ID0gcmdiX3RtcDsKKwkJCXN0cnVjdCBpZ3RfdmVjNCBwYWlyX3JnYiwgcmdiOworCQkJc3Ry dWN0IGlndF92ZWM0IHBhaXJfeXV2LCB5dXY7CisKKwkJCXJlYWRfcmdiZigmcmdiLCByZ2JfdG1w KTsKKwkJCXl1diA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdiKTsKKworCQkJcmdiX3Rt cCArPSBmcHA7CisKKwkJCSp5X3RtcCA9IHl1di5kWzBdOworCQkJeV90bXAgKz0gcGFyYW1zLnlf aW5jOworCisJCQlpZiAoKGkgJSBkc3RfZm10LT52c3ViKSB8fCAoaiAlIGRzdF9mbXQtPmhzdWIp KQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICogV2UgYXNzdW1lIHRoZSBNUEVHMiBjaHJv bWEgc2l0aW5nIGNvbnZlbnRpb24sIHdoZXJlCisJCQkgKiBwaXhlbCBjZW50ZXIgZm9yIENiJ0Ny JyBpcyBiZXR3ZWVuIHRoZSBsZWZ0IHRvcCBhbmQKKwkJCSAqIGJvdHRvbSBwaXhlbCBpbiBhIDJ4 MiBibG9jaywgc28gdGFrZSB0aGUgYXZlcmFnZS4KKwkJCSAqCisJCQkgKiBUaGVyZWZvcmUsIGlm IHdlIHVzZSBzdWJzYW1wbGluZywgd2Ugb25seSByZWFsbHkgY2FyZQorCQkJICogYWJvdXQgdHdv IHBpeGVscyBhbGwgdGhlIHRpbWUsIGVpdGhlciB0aGUgdHdvCisJCQkgKiBzdWJzZXF1ZW50IHBp eGVscyBob3Jpem9udGFsbHksIHZlcnRpY2FsbHksIG9yIHRoZQorCQkJICogdHdvIGNvcm5lcnMg aW4gYSAyeDIgYmxvY2suCisJCQkgKgorCQkJICogVGhlIG9ubHkgY29ybmVyIGNhc2UgaXMgd2hl biB3ZSBoYXZlIGFuIG9kZCBudW1iZXIgb2YKKwkJCSAqIHBpeGVscywgYnV0IHRoaXMgY2FuIGJl IGhhbmRsZWQgcHJldHR5IGVhc2lseSBieSBub3QKKwkJCSAqIGluY3JlbWVudGluZyB0aGUgcGFp cmVkIHBpeGVsIHBvaW50ZXIgaW4gdGhlCisJCQkgKiBkaXJlY3Rpb24gaXQncyBvZGQgaW4uCisJ CQkgKi8KKwkJCWlmIChqICE9IChjdnQtPmRzdC5mYi0+d2lkdGggLSAxKSkKKwkJCQlwYWlyX2Zs b2F0ICs9IChkc3RfZm10LT5oc3ViIC0gMSkgKiBmcHA7CisKKwkJCWlmIChpICE9IChjdnQtPmRz dC5mYi0+aGVpZ2h0IC0gMSkpCisJCQkJcGFpcl9mbG9hdCArPSBmbG9hdF9zdHJpZGUgKiAoZHN0 X2ZtdC0+dnN1YiAtIDEpOworCisJCQlyZWFkX3JnYmYoJnBhaXJfcmdiLCBwYWlyX2Zsb2F0KTsK KwkJCXBhaXJfeXV2ID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZwYWlyX3JnYik7CisKKwkJ CSp1X3RtcCA9ICh5dXYuZFsxXSArIHBhaXJfeXV2LmRbMV0pIC8gMi4wZjsKKwkJCSp2X3RtcCA9 ICh5dXYuZFsyXSArIHBhaXJfeXV2LmRbMl0pIC8gMi4wZjsKKworCQkJdV90bXAgKz0gcGFyYW1z LnV2X2luYzsKKwkJCXZfdG1wICs9IHBhcmFtcy51dl9pbmM7CisJCX0KKworCQlwdHIgKz0gZmxv YXRfc3RyaWRlOworCQl5ICs9IHBhcmFtcy55X3N0cmlkZSAvIHNpemVvZigqeSk7CisKKwkJaWYg KChpICUgZHN0X2ZtdC0+dnN1YikgPT0gKGRzdF9mbXQtPnZzdWIgLSAxKSkgeworCQkJdSArPSBw YXJhbXMudXZfc3RyaWRlIC8gc2l6ZW9mKCp1KTsKKwkJCXYgKz0gcGFyYW1zLnV2X3N0cmlkZSAv IHNpemVvZigqdik7CisJCX0KKwl9Cit9CisKIHN0YXRpYyB2b2lkIGNvbnZlcnRfcGl4bWFuKHN0 cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiB7CiAJcGl4bWFuX2Zvcm1hdF9jb2RlX3Qgc3JjX3BpeG1h biA9IGRybV9mb3JtYXRfdG9fcGl4bWFuKGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0KTsKQEAgLTE4 ODgsNiArMjExNiwyMiBAQCBzdGF0aWMgdm9pZCBmYl9jb252ZXJ0KHN0cnVjdCBmYl9jb252ZXJ0 ICpjdnQpCiAJCQljb252ZXJ0X3JnYjI0X3RvX3l1dihjdnQpOwogCQkJcmV0dXJuOwogCQl9CisJ fSBlbHNlIGlmIChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FUKSB7 CisJCXN3aXRjaCAoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpIHsKKwkJY2FzZSBEUk1fRk9STUFU X1AwMTA6CisJCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCQljYXNlIERSTV9GT1JNQVRfUDAxNjoK KwkJCWNvbnZlcnRfeXV2MTZfdG9fZmxvYXQoY3Z0KTsKKwkJCXJldHVybjsKKwkJfQorCX0gZWxz ZSBpZiAoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gSUdUX0ZPUk1BVF9GTE9BVCkgeworCQlz d2l0Y2ggKGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0KSB7CisJCWNhc2UgRFJNX0ZPUk1BVF9QMDEw OgorCQljYXNlIERSTV9GT1JNQVRfUDAxMjoKKwkJY2FzZSBEUk1fRk9STUFUX1AwMTY6CisJCQlj b252ZXJ0X2Zsb2F0X3RvX3l1djE2KGN2dCk7CisJCQlyZXR1cm47CisJCX0KIAl9CiAKIAlpZ3Rf YXNzZXJ0X2YoZmFsc2UsCkBAIC0xOTI4LDEyICsyMTcyLDM3IEBAIHN0YXRpYyB2b2lkIGNyZWF0 ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCiB7CiAJ c3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBtYWxsb2Moc2l6ZW9mKCpibGl0 KSk7CiAJc3RydWN0IGZiX2NvbnZlcnQgY3Z0ID0geyB9OworCWNvbnN0IHN0cnVjdCBmb3JtYXRf ZGVzY19zdHJ1Y3QgKmYgPSBsb29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJtX2Zvcm1hdCk7CisJdW5z aWduZWQgZHJtX2Zvcm1hdDsKKwljYWlyb19mb3JtYXRfdCBjYWlyb19pZDsKKworCWlmIChmLT5j YWlyb19pZCAhPSBDQUlST19GT1JNQVRfSU5WQUxJRCkgeworCQljYWlyb19pZCA9IGYtPmNhaXJv X2lkOworCisJCXN3aXRjaCAoZi0+Y2Fpcm9faWQpIHsKKwkJY2FzZSBDQUlST19GT1JNQVRfUkdC OTZGOgorCQljYXNlIENBSVJPX0ZPUk1BVF9SR0JBMTI4RjoKKwkJCWRybV9mb3JtYXQgPSBJR1Rf Rk9STUFUX0ZMT0FUOworCQkJYnJlYWs7CisJCWNhc2UgQ0FJUk9fRk9STUFUX1JHQjI0OgorCQkJ ZHJtX2Zvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODg7CisJCQlicmVhazsKKwkJZGVmYXVsdDoK KwkJCWlndF9hc3NlcnRfZigwLCAiVW5zdXBwb3J0ZWQgZm9ybWF0ICV1IiwgZi0+Y2Fpcm9faWQp OworCQl9CisJfSBlbHNlIGlmIChQSVhNQU5fRk9STUFUX0EoZi0+cGl4bWFuX2lkKSkgeworCQlj YWlyb19pZCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7CisJCWRybV9mb3JtYXQgPSBEUk1fRk9STUFU X0FSR0I4ODg4OworCX0gZWxzZSB7CisJCWNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjI0Owor CQlkcm1fZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4ODsKKwl9CiAKIAlpZ3RfYXNzZXJ0KGJs aXQpOwogCiAJYmxpdC0+YmFzZS5mZCA9IGZkOwogCWJsaXQtPmJhc2UuZmIgPSBmYjsKLQlibGl0 LT5zaGFkb3dfcHRyID0gaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFkb3dfYnVmZmVyKGZkLAorCWJs aXQtPnNoYWRvd19wdHIgPSBpZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoZmQsIGRy bV9mb3JtYXQsCiAJCQkJCQkJICAgICBmYi0+d2lkdGgsCiAJCQkJCQkJICAgICBmYi0+aGVpZ2h0 LAogCQkJCQkJCSAgICAgJmJsaXQtPnNoYWRvd19mYik7CkBAIC0xOTYwLDcgKzIyMjksNyBAQCBz dGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBp Z3RfZmIgKmZiKQogCiAJZmItPmNhaXJvX3N1cmZhY2UgPQogCQljYWlyb19pbWFnZV9zdXJmYWNl X2NyZWF0ZV9mb3JfZGF0YShibGl0LT5zaGFkb3dfcHRyLAotCQkJCQkJICAgIENBSVJPX0ZPUk1B VF9SR0IyNCwKKwkJCQkJCSAgICBjYWlyb19pZCwKIAkJCQkJCSAgICBmYi0+d2lkdGgsIGZiLT5o ZWlnaHQsCiAJCQkJCQkgICAgYmxpdC0+c2hhZG93X2ZiLnN0cmlkZXNbMF0pOwogCkBAIC0yMDI1 LDYgKzIyOTQsMjEgQEAgY2Fpcm9fc3VyZmFjZV90ICppZ3RfZ2V0X2NhaXJvX3N1cmZhY2UoaW50 IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJCWNyZWF0ZV9jYWlyb19zdXJmYWNlX19ibGl0KGZk LCBmYik7CiAJCWVsc2UKIAkJCWNyZWF0ZV9jYWlyb19zdXJmYWNlX19ndHQoZmQsIGZiKTsKKwor CQlpZiAoZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9STUFUX1JHQjk2RiB8fAorCQkgICAgZi0+Y2Fp cm9faWQgPT0gQ0FJUk9fRk9STUFUX1JHQkExMjhGKSB7CisJCQljYWlyb19zdGF0dXNfdCBzdGF0 dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhmYi0+Y2Fpcm9fc3VyZmFjZSk7CisKKwkJCWlndF9z a2lwX29uX2Yoc3RhdHVzID09IENBSVJPX1NUQVRVU19JTlZBTElEX0ZPUk1BVCAmJgorCQkJCSAg ICAgIGNhaXJvX3ZlcnNpb24oKSA8IENBSVJPX1ZFUlNJT05fRU5DT0RFKDEsIDE3LCAyKSwKKwkJ CQkgICAgICAiQ2Fpcm8gdmVyc2lvbiB0b28gb2xkLCBuZWVkIDEuMTcuMiwgaGF2ZSAlc1xuIiwK KwkJCQkgICAgICBjYWlyb192ZXJzaW9uX3N0cmluZygpKTsKKworCQkJaWd0X3NraXBfb25fZihz dGF0dXMgPT0gQ0FJUk9fU1RBVFVTX05PX01FTU9SWSAmJgorCQkJCSAgICAgIHBpeG1hbl92ZXJz aW9uKCkgPCBQSVhNQU5fVkVSU0lPTl9FTkNPREUoMCwgMzYsIDApLAorCQkJCSAgICAgICJQaXht YW4gdmVyc2lvbiB0b28gb2xkLCBuZWVkIDAuMzYuMCwgaGF2ZSAlc1xuIiwKKwkJCQkgICAgICBw aXhtYW5fdmVyc2lvbl9zdHJpbmcoKSk7CisJCX0KIAl9CiAKIAlpZ3RfYXNzZXJ0KGNhaXJvX3N1 cmZhY2Vfc3RhdHVzKGZiLT5jYWlyb19zdXJmYWNlKSA9PSBDQUlST19TVEFUVVNfU1VDQ0VTUyk7 CkBAIC0yMjMxLDYgKzI1MTUsOSBAQCBib29sIGlndF9mb3JtYXRfaXNfeXV2KHVpbnQzMl90IGRy bV9mb3JtYXQpCiB7CiAJc3dpdGNoIChkcm1fZm9ybWF0KSB7CiAJY2FzZSBEUk1fRk9STUFUX05W MTI6CisJY2FzZSBEUk1fRk9STUFUX1AwMTA6CisJY2FzZSBEUk1fRk9STUFUX1AwMTI6CisJY2Fz ZSBEUk1fRk9STUFUX1AwMTY6CiAJY2FzZSBEUk1fRk9STUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9S TUFUX1lWWVU6CiAJY2FzZSBEUk1fRk9STUFUX1VZVlk6CmRpZmYgLS1naXQgYS9saWIvaWd0X2Zi LmggYi9saWIvaWd0X2ZiLmgKaW5kZXggOWYwMjdkZWJhODQyLi44YzY4M2RiNWU5ZWMgMTAwNjQ0 Ci0tLSBhL2xpYi9pZ3RfZmIuaAorKysgYi9saWIvaWd0X2ZiLmgKQEAgLTM4LDYgKzM4LDEyIEBA CiAKICNpbmNsdWRlICJpZ3RfY29sb3JfZW5jb2RpbmcuaCIKIAorLyoKKyAqIEludGVybmFsIGZv cm1hdCB0byBkZW5vdGUgYSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHBpeG1hbidzCisgKiBmbG9h dGluZyBwb2ludCBmb3JtYXQuIFJhbmdlIFswLTFdLgorICovCisjZGVmaW5lIElHVF9GT1JNQVRf RkxPQVQgZm91cmNjX2NvZGUoJ0knLCAnRycsICdGJywgJ3gnKQorCiAvKioKICAqIGlndF9mYl90 OgogICogQGZiX2lkOiBLTVMgSUQgb2YgdGhlIGZyYW1lYnVmZmVyCmRpZmYgLS1naXQgYS9tZXNv bi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGIxN2U2N2VmN2YwNS4uMzU2YTU0MTQyMjZiIDEw MDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMzM2LDMgKzMzNiwx MyBAQCBtZXNzYWdlKCc9PT09PT09PT09PT09JykKIGZvcmVhY2ggc3RyIDogYnVpbGRfaW5mbwog CW1lc3NhZ2Uoc3RyKQogZW5kZm9yZWFjaAorCitpZiBjYWlyby52ZXJzaW9uKCkudmVyc2lvbl9j b21wYXJlKCc8MS4xNy4yJykKKwlpZiBwaXhtYW4udmVyc2lvbigpLnZlcnNpb25fY29tcGFyZSgn PDAuMzYuMCcpCisJCXdhcm5pbmcoJ1BpeG1hbiA8IDAuMzYuMCBmb3VuZCwgY2Fubm90IHRlc3Qg SERSIGZvcm1hdHMnKQorCWVuZGlmCisJd2FybmluZygnQ2Fpcm8gPCAxLjE3LjIgZm91bmQsIGNh bm5vdCB0ZXN0IEhEUiBmb3JtYXRzJykKK2VsaWYgcGl4bWFuLnZlcnNpb24oKS52ZXJzaW9uX2Nv bXBhcmUoJzwwLjM2LjAnKQorCSMgQ2Fpcm8gMS4xNy4yIHJlcXVpcmVzIDAuMzYuMCB0byBjb21w aWxlLCBidXQgc29tZWhvdyBpdCB3ZW50IG1pc3Npbmc/CisJZXJyb3IoJ0NhaXJvIHdpdGggZmxv YXRpbmcgcG9pbnQgc3VwcG9ydCBmb3VuZCwgYnV0IHBpeG1hbiB2ZXJzaW9uIHRvbyBvbGQnKQor ZW5kaWYKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2 Cg==