From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 52DCD6E5EC for ; Tue, 12 Feb 2019 17:11:37 +0000 (UTC) Date: Tue, 12 Feb 2019 18:11:34 +0100 Message-Id: <20190212171134.15452-2-maarten.lankhorst@linux.intel.com> In-Reply-To: <20190212171134.15452-1-maarten.lankhorst@linux.intel.com> References: <20190212171134.15452-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 2/2] lib/igt_fb: Add support for P01x formats, v5. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Maarten Lankhorst via igt-dev Reply-To: Maarten Lankhorst 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 ZSBvbiB0b3Agb2YgdXBzdHJlYW0gWVVWIGNoYW5nZXMuCkNoYW5nZXMgc2luY2UgdjQ6Ci0gUmVi YXNlIGFnYWluLgotIFVzZSBkcm1fZm91cmNjLmggZnJvbSBkcm0tbWlzYy1uZXh0LgoKU2lnbmVk LW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVs LmNvbT4KUmV2aWV3ZWQtYnk6IEp1aGEtUGVra2EgSGVpa2tpbGEgPGp1aGFwZWtrYS5oZWlra2ls YUBnbWFpbC5jb20+ICAjdjQKLS0tCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICB8ICAx MSArLQogaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmggfCAgNDAgKysrKysKIGxpYi9pZ3Rf Y29sb3JfZW5jb2RpbmcuYyAgICAgIHwgICA0ICsKIGxpYi9pZ3RfZmIuYyAgICAgICAgICAgICAg ICAgIHwgMjkxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGxpYi9pZ3RfZmIu aCAgICAgICAgICAgICAgICAgIHwgICA2ICsKIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAg IHwgIDEwICsrCiA2IGZpbGVzIGNoYW5nZWQsIDM1NyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAwNTg4 YjBmOWRhZDMuLjRmNTVlYTVkMGY4OSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2Nv bmZpZ3VyZS5hYwpAQCAtMTM2LDEwICsxMzYsMTcgQEAgZmkKIFBLR19DSEVDS19NT0RVTEVTKFhS QU5EUiwgeHJhbmRyID49IDEuMywgQUNfREVGSU5FKEhBVkVfWFJBTkRSLCAxLCBbSGF2ZSBsaWJY cmFuZHJdKSwgW2hhdmVfeHJhbmRyPW5vXSkKIAogIyBmb3IgdGVzdGRpc3BsYXkKLVBLR19DSEVD S19NT0RVTEVTKENBSVJPLCBbY2Fpcm8gPj0gMS4xMi4wXSkKK1BLR19DSEVDS19NT0RVTEVTKENB SVJPLCBbY2Fpcm8gPj0gMS4xNy4yXSwgW10sCisJW0FDX01TR19XQVJOKFtDYWlybyB0b28gb2xk LCBIRFIgZm9ybWF0cyBub3QgYXZhaWxhYmxlLiBVcGdyYWRlIHRvIGNhaXJvIDEuMTcuMl0pCisJ UEtHX0NIRUNLX01PRFVMRVMoQ0FJUk8sIFtjYWlybyA+PSAxLjEyLjBdKV0KKykKIFBLR19DSEVD S19NT0RVTEVTKExJQlVERVYsIFtsaWJ1ZGV2XSkKIFBLR19DSEVDS19NT0RVTEVTKEdMSUIsIFtn bGliLTIuMF0pCi1QS0dfQ0hFQ0tfTU9EVUxFUyhQSVhNQU4sIFtwaXhtYW4tMV0pCitQS0dfQ0hF Q0tfTU9EVUxFUyhQSVhNQU4sIFtwaXhtYW4tMSA+PSAwLjM2LjBdLCBbXSwgWworCUFDX01TR19X QVJOKFtQaXhtYW4gdG9vIG9sZCwgSERSIGZvcm1hdHMgbm90IGF2YWlsYWJsZS4gVXBncmFkZSB0 byBwaXhtYW4gMC4zNi4wXSkKKwlQS0dfQ0hFQ0tfTU9EVUxFUyhQSVhNQU4sIFtwaXhtYW4tMV0p CitdKQorCiBQS0dfQ0hFQ0tfTU9EVUxFUyhHU0wsIFtnc2xdLCBbZ3NsPXllc10sIFtnc2w9bm9d KQogQU1fQ09ORElUSU9OQUwoSEFWRV9HU0wsIFt0ZXN0ICJ4JGdzbCIgPSB4eWVzXSkKIApkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL2RybS11YXBp L2RybV9mb3VyY2MuaAppbmRleCA0MTEwNmM4MzU3NDcuLmJhYjIwMjk4ZjQyMiAxMDA2NDQKLS0t IGEvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9k cm1fZm91cmNjLmgKQEAgLTE5NSw2ICsxOTUsMjcgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERS TV9GT1JNQVRfTlYyNAkJZm91cmNjX2NvZGUoJ04nLCAnVicsICcyJywgJzQnKSAvKiBub24tc3Vi c2FtcGxlZCBDcjpDYiBwbGFuZSAqLwogI2RlZmluZSBEUk1fRk9STUFUX05WNDIJCWZvdXJjY19j b2RlKCdOJywgJ1YnLCAnNCcsICcyJykgLyogbm9uLXN1YnNhbXBsZWQgQ2I6Q3IgcGxhbmUgKi8K IAorLyoKKyAqIDIgcGxhbmUgWUNiQ3IgTVNCIGFsaWduZWQKKyAqIGluZGV4IDAgPSBZIHBsYW5l LCBbMTU6MF0gWTp4IFsxMDo2XSBsaXR0bGUgZW5kaWFuCisgKiBpbmRleCAxID0gQ3I6Q2IgcGxh bmUsIFszMTowXSBDcjp4OkNiOnggWzEwOjY6MTA6Nl0gbGl0dGxlIGVuZGlhbgorICovCisjZGVm aW5lIERSTV9GT1JNQVRfUDAxMAkJZm91cmNjX2NvZGUoJ1AnLCAnMCcsICcxJywgJzAnKSAvKiAy eDIgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSAxMCBiaXRzIHBlciBjaGFubmVsICovCisKKy8qCisg KiAyIHBsYW5lIFlDYkNyIE1TQiBhbGlnbmVkCisgKiBpbmRleCAwID0gWSBwbGFuZSwgWzE1OjBd IFk6eCBbMTI6NF0gbGl0dGxlIGVuZGlhbgorICogaW5kZXggMSA9IENyOkNiIHBsYW5lLCBbMzE6 MF0gQ3I6eDpDYjp4IFsxMjo0OjEyOjRdIGxpdHRsZSBlbmRpYW4KKyAqLworI2RlZmluZSBEUk1f Rk9STUFUX1AwMTIJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICcyJykgLyogMngyIHN1YnNh bXBsZWQgQ3I6Q2IgcGxhbmUgMTIgYml0cyBwZXIgY2hhbm5lbCAqLworCisvKgorICogMiBwbGFu ZSBZQ2JDciBNU0IgYWxpZ25lZAorICogaW5kZXggMCA9IFkgcGxhbmUsIFsxNTowXSBZIGxpdHRs ZSBlbmRpYW4KKyAqIGluZGV4IDEgPSBDcjpDYiBwbGFuZSwgWzMxOjBdIENyOkNiIFsxNjoxNl0g bGl0dGxlIGVuZGlhbgorICovCisjZGVmaW5lIERSTV9GT1JNQVRfUDAxNgkJZm91cmNjX2NvZGUo J1AnLCAnMCcsICcxJywgJzYnKSAvKiAyeDIgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSAxNiBiaXRz IHBlciBjaGFubmVsICovCisKIC8qCiAgKiAzIHBsYW5lIFlDYkNyCiAgKiBpbmRleCAwOiBZIHBs YW5lLCBbNzowXSBZCkBAIC0yMzgsNiArMjU5LDggQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERS TV9GT1JNQVRfTU9EX1ZFTkRPUl9WSVZBTlRFIDB4MDYKICNkZWZpbmUgRFJNX0ZPUk1BVF9NT0Rf VkVORE9SX0JST0FEQ09NIDB4MDcKICNkZWZpbmUgRFJNX0ZPUk1BVF9NT0RfVkVORE9SX0FSTSAg ICAgMHgwOAorI2RlZmluZSBEUk1fRk9STUFUX01PRF9WRU5ET1JfQUxMV0lOTkVSIDB4MDkKKwog LyogYWRkIG1vcmUgdG8gdGhlIGVuZCBhcyBuZWVkZWQgKi8KIAogI2RlZmluZSBEUk1fRk9STUFU X1JFU0VSVkVECSAgICAgICgoMVVMTCA8PCA1NikgLSAxKQpAQCAtNTcyLDYgKzU5NSw5IEBAIGV4 dGVybiAiQyIgewogICogQUZCQyBoYXMgc2V2ZXJhbCBmZWF0dXJlcyB3aGljaCBtYXkgYmUgc3Vw cG9ydGVkIGFuZC9vciB1c2VkLCB3aGljaCBhcmUKICAqIHJlcHJlc2VudGVkIHVzaW5nIGJpdHMg aW4gdGhlIG1vZGlmaWVyLiBOb3QgYWxsIGNvbWJpbmF0aW9ucyBhcmUgdmFsaWQsCiAgKiBhbmQg ZGlmZmVyZW50IGRldmljZXMgb3IgdXNlLWNhc2VzIG1heSBzdXBwb3J0IGRpZmZlcmVudCBjb21i aW5hdGlvbnMuCisgKgorICogRnVydGhlciBpbmZvcm1hdGlvbiBvbiB0aGUgdXNlIG9mIEFGQkMg bW9kaWZpZXJzIGNhbiBiZSBmb3VuZCBpbgorICogRG9jdW1lbnRhdGlvbi9ncHUvYWZiYy5yc3QK ICAqLwogI2RlZmluZSBEUk1fRk9STUFUX01PRF9BUk1fQUZCQyhfX2FmYmNfbW9kZSkJZm91cmNj X21vZF9jb2RlKEFSTSwgX19hZmJjX21vZGUpCiAKQEAgLTY2Nyw2ICs2OTMsMjAgQEAgZXh0ZXJu ICJDIiB7CiAgKi8KICNkZWZpbmUgQUZCQ19GT1JNQVRfTU9EX0JDSCAgICAgKDFVTEwgPDwgMTEp CiAKKy8qCisgKiBBbGx3aW5uZXIgdGlsZWQgbW9kaWZpZXIKKyAqCisgKiBUaGlzIHRpbGluZyBt b2RlIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBWUFUgZm91bmQgb24gYWxsIEFsbHdpbm5lciBwbGF0 Zm9ybXMsCisgKiBjb2RlbmFtZWQgc3VueGkuIEl0IGlzIGFzc29jaWF0ZWQgd2l0aCBhIFlVViBm b3JtYXQgdGhhdCB1c2VzIGVpdGhlciAyIG9yIDMKKyAqIHBsYW5lcy4KKyAqCisgKiBXaXRoIHRo aXMgdGlsaW5nLCB0aGUgbHVtaW5hbmNlIHNhbXBsZXMgYXJlIGRpc3Bvc2VkIGluIHRpbGVzIHJl cHJlc2VudGluZworICogMzJ4MzIgcGl4ZWxzIGFuZCB0aGUgY2hyb21pbmFuY2Ugc2FtcGxlcyBp biB0aWxlcyByZXByZXNlbnRpbmcgMzJ4NjQgcGl4ZWxzLgorICogVGhlIHBpeGVsIG9yZGVyIGlu IGVhY2ggdGlsZSBpcyBsaW5lYXIgYW5kIHRoZSB0aWxlcyBhcmUgZGlzcG9zZWQgbGluZWFybHks CisgKiBib3RoIGluIHJvdy1tYWpvciBvcmRlci4KKyAqLworI2RlZmluZSBEUk1fRk9STUFUX01P RF9BTExXSU5ORVJfVElMRUQgZm91cmNjX21vZF9jb2RlKEFMTFdJTk5FUiwgMSkKKwogI2lmIGRl ZmluZWQoX19jcGx1c3BsdXMpCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29sb3Jf ZW5jb2RpbmcuYyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwppbmRleCA4NGRjNTkzOGE3MTcu LmNjNzZhOTkxOTI0MiAxMDA2NDQKLS0tIGEvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCisrKyBi L2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwpAQCAtMTM1LDYgKzEzNSw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0IHsKIAlmbG9hdCBvZnNfeSwgbWF4X3ksIG9m c19jYmNyLCBtaWRfY2JjciwgbWF4X2NiY3I7CiB9IGZvcm1hdHNbXSA9IHsKIAl7IERSTV9GT1JN QVRfWFJHQjg4ODgsIDI1NS5mLCB9LAorCXsgSUdUX0ZPUk1BVF9GTE9BVCwgMS5mLCB9LAogCXsg RFJNX0ZPUk1BVF9OVjEyLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAyNDAuZiB9 LAogCXsgRFJNX0ZPUk1BVF9OVjE2LCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAy NDAuZiB9LAogCXsgRFJNX0ZPUk1BVF9OVjIxLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEy OC5mLCAyNDAuZiB9LApAQCAtMTQ3LDYgKzE0OCw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29s b3JfZW5jb2RpbmdfZm9ybWF0IHsKIAl7IERSTV9GT1JNQVRfWVZZVSwgMjU1LmYsIDE2LmYsIDIz NS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfVVlWWSwgMjU1LmYsIDE2 LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfVllVWSwgMjU1 LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKKwl7IERSTV9GT1JNQVRfUDAx MCwgNjU0NzIuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwK Kwl7IERSTV9GT1JNQVRfUDAxMiwgNjU1MjAuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMy NzY4LmYsIDYxNDQwLmYgfSwKKwl7IERSTV9GT1JNQVRfUDAxNiwgNjU1MzUuZiwgNDA5Ni5mLCA2 MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0ICpsb29rdXBfZm91cmNjKHVpbnQzMl90IGZvdXJj YykKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwppbmRleCAzYTQ4Mjdj MzViMDQuLjQ2MmFmZWMyMjA4NSAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5jCisrKyBiL2xpYi9p Z3RfZmIuYwpAQCAtNjIsNiArNjIsMjAgQEAKIAogI2RlZmluZSBQSVhNQU5faW52YWxpZAkwCiAK KyNpZiBDQUlST19WRVJTSU9OIDwgQ0FJUk9fVkVSU0lPTl9FTkNPREUoMSwgMTcsIDIpCisvKgor ICogV2UgbmVlZCBjYWlybyAxLjE3LjIgdG8gdXNlIEhEUiBmb3JtYXRzLCBidXQgdGhlIG9ubHkg dGhpbmcgYWRkZWQgaXMgYSB2YWx1ZQorICogdG8gY2Fpcm9fZm9ybWF0X3QuCisgKgorICogVG8g cHJldmVudCBnb2luZyBvdXRzaWRlIHRoZSBlbnVtLCBtYWtlIGNhaXJvX2Zvcm1hdF90IGFuIGlu dCBhbmQgZGVmaW5lCisgKiBvdXJzZWx2ZXMuCisgKi8KKworI2RlZmluZSBDQUlST19GT1JNQVRf UkdCOTZGICg2KQorI2RlZmluZSBDQUlST19GT1JNQVRfUkdCQTEyOEYgKDcpCisjZGVmaW5lIGNh aXJvX2Zvcm1hdF90IGludAorI2VuZGlmCisKIC8qIGRybSBmb3VyY2MvY2Fpcm8gZm9ybWF0IG1h cHMgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0IHsKIAljb25zdCBj aGFyICpuYW1lOwpAQCAtMjA1LDYgKzIxOSwyNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZvcm1h dF9kZXNjX3N0cnVjdCB7CiAJICAubnVtX3BsYW5lcyA9IDMsIC5wbGFuZV9icHAgPSB7IDgsIDgs IDgsIH0sCiAJICAuaHN1YiA9IDIsIC52c3ViID0gMSwKIAl9LAorCXsgLm5hbWUgPSAiUDAxMCIs IC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9QMDEwLAorCSAgLmNhaXJvX2lkID0g Q0FJUk9fRk9STUFUX1JHQjk2RiwKKwkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5lX2JwcCA9IHsg MTYsIDMyIH0sCisJICAudnN1YiA9IDIsIC5oc3ViID0gMiwKKwl9LAorCXsgLm5hbWUgPSAiUDAx MiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9QMDEyLAorCSAgLmNhaXJvX2lk ID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKKwkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5lX2JwcCA9 IHsgMTYsIDMyIH0sCisJICAudnN1YiA9IDIsIC5oc3ViID0gMiwKKwl9LAorCXsgLm5hbWUgPSAi UDAxNiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9QMDE2LAorCSAgLmNhaXJv X2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKKwkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5lX2Jw cCA9IHsgMTYsIDMyIH0sCisJICAudnN1YiA9IDIsIC5oc3ViID0gMiwKKwl9LAorCXsgLm5hbWUg PSAiSUdULUZMT0FUIiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBJR1RfRk9STUFUX0ZMT0FULAor CSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX0lOVkFMSUQsCisJICAubnVtX3BsYW5lcyA9IDEs IC5wbGFuZV9icHAgPSB7IDEyOCB9LAorCX0sCiB9OwogI2RlZmluZSBmb3JfZWFjaF9mb3JtYXQo ZikJXAogCWZvciAoZiA9IGZvcm1hdF9kZXNjOyBmIC0gZm9ybWF0X2Rlc2MgPCBBUlJBWV9TSVpF KGZvcm1hdF9kZXNjKTsgZisrKQpAQCAtNTU1LDYgKzU4OCwxNCBAQCBzdGF0aWMgdm9pZCBjbGVh cl95dXZfYnVmZmVyKHN0cnVjdCBpZ3RfZmIgKmZiKQogCQkJZnVsbF9yYW5nZSA/IDB4MDA4MDAw ODAgOiAweDEwODAxMDgwLAogCQkJZmItPnN0cmlkZXNbMF0gKiBmYi0+cGxhbmVfaGVpZ2h0WzBd IC8gc2l6ZW9mKHdjaGFyX3QpKTsKIAkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX1AwMTA6CisJ Y2FzZSBEUk1fRk9STUFUX1AwMTI6CisJY2FzZSBEUk1fRk9STUFUX1AwMTY6CisJCXdtZW1zZXQo cHRyLCBmdWxsX3JhbmdlID8gMCA6IDB4MTAwMDEwMDAsCisJCQlmYi0+b2Zmc2V0c1sxXSAvIHNp emVvZih3Y2hhcl90KSk7CisJCXdtZW1zZXQocHRyICsgZmItPm9mZnNldHNbMV0sIDB4ODAwMDgw MDAsCisJCQlmYi0+c3RyaWRlc1sxXSAqIGZiLT5wbGFuZV9oZWlnaHRbMV0gLyBzaXplb2Yod2No YXJfdCkpOworCQlicmVhazsKIAl9CiAKIAlpZ3RfZmJfdW5tYXBfYnVmZmVyKGZiLCBwdHIpOwpA QCAtMTU1Miw2ICsxNTkzLDcgQEAgc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgewogfTsK IAogc3RhdGljIHZvaWQgKmlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihpbnQgZmQs CisJCQkJCSAgICAgICB1bnNpZ25lZCBkcm1fZm9ybWF0LAogCQkJCQkgICAgICAgdW5zaWduZWQg aW50IHdpZHRoLAogCQkJCQkgICAgICAgdW5zaWduZWQgaW50IGhlaWdodCwKIAkJCQkJICAgICAg IHN0cnVjdCBpZ3RfZmIgKnNoYWRvdykKQEAgLTE1NjEsNyArMTYwMyw3IEBAIHN0YXRpYyB2b2lk ICppZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoaW50IGZkLAogCWlndF9hc3NlcnQo c2hhZG93KTsKIAogCWZiX2luaXQoc2hhZG93LCBmZCwgd2lkdGgsIGhlaWdodCwKLQkJRFJNX0ZP Uk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKKwkJZHJtX2Zvcm1hdCwg TE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKIAkJSUdUX0NPTE9SX1lDQkNSX0JUNzA5LCBJR1Rf Q09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRSk7CiAKIAlzaGFkb3ctPnN0cmlkZXNbMF0gPSBBTElH Tih3aWR0aCAqIHNoYWRvdy0+cGxhbmVfYnBwWzBdLCAxNik7CkBAIC0xNjU4LDYgKzE3MDAsOSBA QCBzdGF0aWMgdm9pZCBnZXRfeXV2X3BhcmFtZXRlcnMoc3RydWN0IGlndF9mYiAqZmIsIHN0cnVj dCB5dXZfcGFyYW1ldGVycyAqcGFyYW1zKQogCWNhc2UgRFJNX0ZPUk1BVF9OVjE2OgogCWNhc2Ug RFJNX0ZPUk1BVF9OVjIxOgogCWNhc2UgRFJNX0ZPUk1BVF9OVjYxOgorCWNhc2UgRFJNX0ZPUk1B VF9QMDEwOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogog CQlwYXJhbXMtPnlfaW5jID0gMTsKIAkJcGFyYW1zLT51dl9pbmMgPSAyOwogCQlicmVhazsKQEAg LTE2OTMsNiArMTczOCw5IEBAIHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3Qg aWd0X2ZiICpmYiwgc3RydWN0IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCiAJY2FzZSBEUk1fRk9S TUFUX1lVVjQyMjoKIAljYXNlIERSTV9GT1JNQVRfWVZVNDIwOgogCWNhc2UgRFJNX0ZPUk1BVF9Z VlU0MjI6CisJY2FzZSBEUk1fRk9STUFUX1AwMTA6CisJY2FzZSBEUk1fRk9STUFUX1AwMTI6CisJ Y2FzZSBEUk1fRk9STUFUX1AwMTY6CiAJCXBhcmFtcy0+eV9zdHJpZGUgPSBmYi0+c3RyaWRlc1sw XTsKIAkJcGFyYW1zLT51dl9zdHJpZGUgPSBmYi0+c3RyaWRlc1sxXTsKIAkJYnJlYWs7CkBAIC0x NzM0LDYgKzE3ODIsMTIgQEAgc3RhdGljIHZvaWQgZ2V0X3l1dl9wYXJhbWV0ZXJzKHN0cnVjdCBp Z3RfZmIgKmZiLCBzdHJ1Y3QgeXV2X3BhcmFtZXRlcnMgKnBhcmFtcykKIAkJcGFyYW1zLT55X29m ZnNldCA9IGZiLT5vZmZzZXRzWzBdOwogCQlwYXJhbXMtPnVfb2Zmc2V0ID0gZmItPm9mZnNldHNb Ml07CiAJCXBhcmFtcy0+dl9vZmZzZXQgPSBmYi0+b2Zmc2V0c1sxXTsKKwljYXNlIERSTV9GT1JN QVRfUDAxMDoKKwljYXNlIERSTV9GT1JNQVRfUDAxMjoKKwljYXNlIERSTV9GT1JNQVRfUDAxNjoK KwkJcGFyYW1zLT55X29mZnNldCA9IGZiLT5vZmZzZXRzWzBdOworCQlwYXJhbXMtPnVfb2Zmc2V0 ID0gZmItPm9mZnNldHNbMV07CisJCXBhcmFtcy0+dl9vZmZzZXQgPSBmYi0+b2Zmc2V0c1sxXSAr IDI7CiAJCWJyZWFrOwogCiAJY2FzZSBEUk1fRk9STUFUX1lVWVY6CkBAIC0xOTE3LDYgKzE5NzEs MTc4IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9feXV2KHN0cnVjdCBmYl9jb252ZXJ0 ICpjdnQpCiAJfQogfQogCitzdGF0aWMgdm9pZCByZWFkX3JnYmYoc3RydWN0IGlndF92ZWM0ICpy Z2IsIGNvbnN0IGZsb2F0ICpyZ2IyNCkKK3sKKwlyZ2ItPmRbMF0gPSByZ2IyNFswXTsKKwlyZ2It PmRbMV0gPSByZ2IyNFsxXTsKKwlyZ2ItPmRbMl0gPSByZ2IyNFsyXTsKKwlyZ2ItPmRbM10gPSAx LjBmOworfQorCitzdGF0aWMgdm9pZCB3cml0ZV9yZ2JmKGZsb2F0ICpyZ2IyNCwgY29uc3Qgc3Ry dWN0IGlndF92ZWM0ICpyZ2IpCit7CisJcmdiMjRbMF0gPSByZ2ItPmRbMF07CisJcmdiMjRbMV0g PSByZ2ItPmRbMV07CisJcmdiMjRbMl0gPSByZ2ItPmRbMl07Cit9CisKK3N0YXRpYyB2b2lkIGNv bnZlcnRfeXV2MTZfdG9fZmxvYXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKK3sKKwljb25zdCBz dHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0ICpzcmNfZm10ID0KKwkJbG9va3VwX2RybV9mb3JtYXQo Y3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpOworCWludCBpLCBqOworCXVpbnQ4X3QgZnBwID0gMzsK Kwl1aW50MTZfdCAqeSwgKnUsICp2OworCWZsb2F0ICpwdHIgPSBjdnQtPmRzdC5wdHI7CisJdW5z aWduZWQgaW50IGZsb2F0X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9m KCpwdHIpOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoY3Z0 LT5zcmMuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQs CisJCQkJCQkgICAgY3Z0LT5zcmMuZmItPmNvbG9yX2VuY29kaW5nLAorCQkJCQkJICAgIGN2dC0+ c3JjLmZiLT5jb2xvcl9yYW5nZSk7CisJdWludDE2X3QgKmJ1ZjsKKwlzdHJ1Y3QgeXV2X3BhcmFt ZXRlcnMgcGFyYW1zID0geyB9OworCisJaWd0X2Fzc2VydChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1h dCA9PSBJR1RfRk9STUFUX0ZMT0FUICYmCisJCSAgIGlndF9mb3JtYXRfaXNfeXV2KGN2dC0+c3Jj LmZiLT5kcm1fZm9ybWF0KSk7CisKKwlidWYgPSBjb252ZXJ0X3NyY19nZXQoY3Z0KTsKKwlnZXRf eXV2X3BhcmFtZXRlcnMoY3Z0LT5zcmMuZmIsICZwYXJhbXMpOworCWlndF9hc3NlcnQoIShwYXJh bXMueV9vZmZzZXQgJSBzaXplb2YoKmJ1ZikpICYmCisJCSAgICEocGFyYW1zLnVfb2Zmc2V0ICUg c2l6ZW9mKCpidWYpKSAmJgorCQkgICAhKHBhcmFtcy52X29mZnNldCAlIHNpemVvZigqYnVmKSkp OworCisJeSA9IGJ1ZiArIHBhcmFtcy55X29mZnNldCAvIHNpemVvZigqYnVmKTsKKwl1ID0gYnVm ICsgcGFyYW1zLnVfb2Zmc2V0IC8gc2l6ZW9mKCpidWYpOworCXYgPSBidWYgKyBwYXJhbXMudl9v ZmZzZXQgLyBzaXplb2YoKmJ1Zik7CisKKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhl aWdodDsgaSsrKSB7CisJCWNvbnN0IHVpbnQxNl90ICp5X3RtcCA9IHk7CisJCWNvbnN0IHVpbnQx Nl90ICp1X3RtcCA9IHU7CisJCWNvbnN0IHVpbnQxNl90ICp2X3RtcCA9IHY7CisJCWZsb2F0ICpy Z2JfdG1wID0gcHRyOworCisJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGor KykgeworCQkJc3RydWN0IGlndF92ZWM0IHJnYiwgeXV2OworCisJCQl5dXYuZFswXSA9ICp5X3Rt cDsKKwkJCXl1di5kWzFdID0gKnVfdG1wOworCQkJeXV2LmRbMl0gPSAqdl90bXA7CisJCQl5dXYu ZFszXSA9IDEuMGY7CisKKwkJCXJnYiA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2KTsK KwkJCXdyaXRlX3JnYmYocmdiX3RtcCwgJnJnYik7CisKKwkJCXJnYl90bXAgKz0gZnBwOworCQkJ eV90bXAgKz0gcGFyYW1zLnlfaW5jOworCisJCQlpZiAoKHNyY19mbXQtPmhzdWIgPT0gMSkgfHwg KGogJSBzcmNfZm10LT5oc3ViKSkgeworCQkJCXVfdG1wICs9IHBhcmFtcy51dl9pbmM7CisJCQkJ dl90bXAgKz0gcGFyYW1zLnV2X2luYzsKKwkJCX0KKwkJfQorCisJCXB0ciArPSBmbG9hdF9zdHJp ZGU7CisJCXkgKz0gcGFyYW1zLnlfc3RyaWRlIC8gc2l6ZW9mKCp5KTsKKworCQlpZiAoKHNyY19m bXQtPnZzdWIgPT0gMSkgfHwgKGkgJSBzcmNfZm10LT52c3ViKSkgeworCQkJdSArPSBwYXJhbXMu dXZfc3RyaWRlIC8gc2l6ZW9mKCp1KTsKKwkJCXYgKz0gcGFyYW1zLnV2X3N0cmlkZSAvIHNpemVv Zigqdik7CisJCX0KKwl9CisKKwljb252ZXJ0X3NyY19wdXQoY3Z0LCBidWYpOworfQorCitzdGF0 aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3l1djE2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCit7 CisJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZHN0X2ZtdCA9CisJCWxvb2t1cF9k cm1fZm9ybWF0KGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0KTsKKwlpbnQgaSwgajsKKwl1aW50MTZf dCAqeSwgKnUsICp2OworCWNvbnN0IGZsb2F0ICpwdHIgPSBjdnQtPnNyYy5wdHI7CisJdWludDhf dCBmcHAgPSAzOworCXVuc2lnbmVkIGZsb2F0X3N0cmlkZSA9IGN2dC0+c3JjLmZiLT5zdHJpZGVz WzBdIC8gc2l6ZW9mKCpwdHIpOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jj cl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmIt PmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5nLAorCQkJ CQkJICAgIGN2dC0+ZHN0LmZiLT5jb2xvcl9yYW5nZSk7CisJc3RydWN0IHl1dl9wYXJhbWV0ZXJz IHBhcmFtcyA9IHsgfTsKKworCWlndF9hc3NlcnQoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0g SUdUX0ZPUk1BVF9GTE9BVCAmJgorCQkgICBpZ3RfZm9ybWF0X2lzX3l1dihjdnQtPmRzdC5mYi0+ ZHJtX2Zvcm1hdCkpOworCisJZ2V0X3l1dl9wYXJhbWV0ZXJzKGN2dC0+ZHN0LmZiLCAmcGFyYW1z KTsKKwlpZ3RfYXNzZXJ0KCEocGFyYW1zLnlfb2Zmc2V0ICUgc2l6ZW9mKCp5KSkgJiYKKwkJICAg IShwYXJhbXMudV9vZmZzZXQgJSBzaXplb2YoKnUpKSAmJgorCQkgICAhKHBhcmFtcy52X29mZnNl dCAlIHNpemVvZigqdikpKTsKKworCXkgPSBjdnQtPmRzdC5wdHIgKyBwYXJhbXMueV9vZmZzZXQ7 CisJdSA9IGN2dC0+ZHN0LnB0ciArIHBhcmFtcy51X29mZnNldDsKKwl2ID0gY3Z0LT5kc3QucHRy ICsgcGFyYW1zLnZfb2Zmc2V0OworCisJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWln aHQ7IGkrKykgeworCQljb25zdCBmbG9hdCAqcmdiX3RtcCA9IHB0cjsKKwkJdWludDE2X3QgKnlf dG1wID0geTsKKwkJdWludDE2X3QgKnVfdG1wID0gdTsKKwkJdWludDE2X3QgKnZfdG1wID0gdjsK KworCQlmb3IgKGogPSAwOyBqIDwgY3Z0LT5kc3QuZmItPndpZHRoOyBqKyspIHsKKwkJCWNvbnN0 IGZsb2F0ICpwYWlyX2Zsb2F0ID0gcmdiX3RtcDsKKwkJCXN0cnVjdCBpZ3RfdmVjNCBwYWlyX3Jn YiwgcmdiOworCQkJc3RydWN0IGlndF92ZWM0IHBhaXJfeXV2LCB5dXY7CisKKwkJCXJlYWRfcmdi ZigmcmdiLCByZ2JfdG1wKTsKKwkJCXl1diA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdi KTsKKworCQkJcmdiX3RtcCArPSBmcHA7CisKKwkJCSp5X3RtcCA9IHl1di5kWzBdOworCQkJeV90 bXAgKz0gcGFyYW1zLnlfaW5jOworCisJCQlpZiAoKGkgJSBkc3RfZm10LT52c3ViKSB8fCAoaiAl IGRzdF9mbXQtPmhzdWIpKQorCQkJCWNvbnRpbnVlOworCisJCQkvKgorCQkJICogV2UgYXNzdW1l IHRoZSBNUEVHMiBjaHJvbWEgc2l0aW5nIGNvbnZlbnRpb24sIHdoZXJlCisJCQkgKiBwaXhlbCBj ZW50ZXIgZm9yIENiJ0NyJyBpcyBiZXR3ZWVuIHRoZSBsZWZ0IHRvcCBhbmQKKwkJCSAqIGJvdHRv bSBwaXhlbCBpbiBhIDJ4MiBibG9jaywgc28gdGFrZSB0aGUgYXZlcmFnZS4KKwkJCSAqCisJCQkg KiBUaGVyZWZvcmUsIGlmIHdlIHVzZSBzdWJzYW1wbGluZywgd2Ugb25seSByZWFsbHkgY2FyZQor CQkJICogYWJvdXQgdHdvIHBpeGVscyBhbGwgdGhlIHRpbWUsIGVpdGhlciB0aGUgdHdvCisJCQkg KiBzdWJzZXF1ZW50IHBpeGVscyBob3Jpem9udGFsbHksIHZlcnRpY2FsbHksIG9yIHRoZQorCQkJ ICogdHdvIGNvcm5lcnMgaW4gYSAyeDIgYmxvY2suCisJCQkgKgorCQkJICogVGhlIG9ubHkgY29y bmVyIGNhc2UgaXMgd2hlbiB3ZSBoYXZlIGFuIG9kZCBudW1iZXIgb2YKKwkJCSAqIHBpeGVscywg YnV0IHRoaXMgY2FuIGJlIGhhbmRsZWQgcHJldHR5IGVhc2lseSBieSBub3QKKwkJCSAqIGluY3Jl bWVudGluZyB0aGUgcGFpcmVkIHBpeGVsIHBvaW50ZXIgaW4gdGhlCisJCQkgKiBkaXJlY3Rpb24g aXQncyBvZGQgaW4uCisJCQkgKi8KKwkJCWlmIChqICE9IChjdnQtPmRzdC5mYi0+d2lkdGggLSAx KSkKKwkJCQlwYWlyX2Zsb2F0ICs9IChkc3RfZm10LT5oc3ViIC0gMSkgKiBmcHA7CisKKwkJCWlm IChpICE9IChjdnQtPmRzdC5mYi0+aGVpZ2h0IC0gMSkpCisJCQkJcGFpcl9mbG9hdCArPSBmbG9h dF9zdHJpZGUgKiAoZHN0X2ZtdC0+dnN1YiAtIDEpOworCisJCQlyZWFkX3JnYmYoJnBhaXJfcmdi LCBwYWlyX2Zsb2F0KTsKKwkJCXBhaXJfeXV2ID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZw YWlyX3JnYik7CisKKwkJCSp1X3RtcCA9ICh5dXYuZFsxXSArIHBhaXJfeXV2LmRbMV0pIC8gMi4w ZjsKKwkJCSp2X3RtcCA9ICh5dXYuZFsyXSArIHBhaXJfeXV2LmRbMl0pIC8gMi4wZjsKKworCQkJ dV90bXAgKz0gcGFyYW1zLnV2X2luYzsKKwkJCXZfdG1wICs9IHBhcmFtcy51dl9pbmM7CisJCX0K KworCQlwdHIgKz0gZmxvYXRfc3RyaWRlOworCQl5ICs9IHBhcmFtcy55X3N0cmlkZSAvIHNpemVv ZigqeSk7CisKKwkJaWYgKChpICUgZHN0X2ZtdC0+dnN1YikgPT0gKGRzdF9mbXQtPnZzdWIgLSAx KSkgeworCQkJdSArPSBwYXJhbXMudXZfc3RyaWRlIC8gc2l6ZW9mKCp1KTsKKwkJCXYgKz0gcGFy YW1zLnV2X3N0cmlkZSAvIHNpemVvZigqdik7CisJCX0KKwl9Cit9CisKIHN0YXRpYyB2b2lkIGNv bnZlcnRfcGl4bWFuKHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiB7CiAJcGl4bWFuX2Zvcm1hdF9j b2RlX3Qgc3JjX3BpeG1hbiA9IGRybV9mb3JtYXRfdG9fcGl4bWFuKGN2dC0+c3JjLmZiLT5kcm1f Zm9ybWF0KTsKQEAgLTE5OTgsNiArMjIyNCwyMiBAQCBzdGF0aWMgdm9pZCBmYl9jb252ZXJ0KHN0 cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJCQljb252ZXJ0X3JnYjI0X3RvX3l1dihjdnQpOwogCQkJ cmV0dXJuOwogCQl9CisJfSBlbHNlIGlmIChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1Rf Rk9STUFUX0ZMT0FUKSB7CisJCXN3aXRjaCAoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpIHsKKwkJ Y2FzZSBEUk1fRk9STUFUX1AwMTA6CisJCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCQljYXNlIERS TV9GT1JNQVRfUDAxNjoKKwkJCWNvbnZlcnRfeXV2MTZfdG9fZmxvYXQoY3Z0KTsKKwkJCXJldHVy bjsKKwkJfQorCX0gZWxzZSBpZiAoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gSUdUX0ZPUk1B VF9GTE9BVCkgeworCQlzd2l0Y2ggKGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0KSB7CisJCWNhc2Ug RFJNX0ZPUk1BVF9QMDEwOgorCQljYXNlIERSTV9GT1JNQVRfUDAxMjoKKwkJY2FzZSBEUk1fRk9S TUFUX1AwMTY6CisJCQljb252ZXJ0X2Zsb2F0X3RvX3l1djE2KGN2dCk7CisJCQlyZXR1cm47CisJ CX0KIAl9CiAKIAlpZ3RfYXNzZXJ0X2YoZmFsc2UsCkBAIC0yMDM4LDEyICsyMjgwLDM3IEBAIHN0 YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGln dF9mYiAqZmIpCiB7CiAJc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBtYWxs b2Moc2l6ZW9mKCpibGl0KSk7CiAJc3RydWN0IGZiX2NvbnZlcnQgY3Z0ID0geyB9OworCWNvbnN0 IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmYgPSBsb29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJt X2Zvcm1hdCk7CisJdW5zaWduZWQgZHJtX2Zvcm1hdDsKKwljYWlyb19mb3JtYXRfdCBjYWlyb19p ZDsKKworCWlmIChmLT5jYWlyb19pZCAhPSBDQUlST19GT1JNQVRfSU5WQUxJRCkgeworCQljYWly b19pZCA9IGYtPmNhaXJvX2lkOworCisJCXN3aXRjaCAoZi0+Y2Fpcm9faWQpIHsKKwkJY2FzZSBD QUlST19GT1JNQVRfUkdCOTZGOgorCQljYXNlIENBSVJPX0ZPUk1BVF9SR0JBMTI4RjoKKwkJCWRy bV9mb3JtYXQgPSBJR1RfRk9STUFUX0ZMT0FUOworCQkJYnJlYWs7CisJCWNhc2UgQ0FJUk9fRk9S TUFUX1JHQjI0OgorCQkJZHJtX2Zvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODg7CisJCQlicmVh azsKKwkJZGVmYXVsdDoKKwkJCWlndF9hc3NlcnRfZigwLCAiVW5zdXBwb3J0ZWQgZm9ybWF0ICV1 IiwgZi0+Y2Fpcm9faWQpOworCQl9CisJfSBlbHNlIGlmIChQSVhNQU5fRk9STUFUX0EoZi0+cGl4 bWFuX2lkKSkgeworCQljYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9BUkdCMzI7CisJCWRybV9mb3Jt YXQgPSBEUk1fRk9STUFUX0FSR0I4ODg4OworCX0gZWxzZSB7CisJCWNhaXJvX2lkID0gQ0FJUk9f Rk9STUFUX1JHQjI0OworCQlkcm1fZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4ODsKKwl9CiAK IAlpZ3RfYXNzZXJ0KGJsaXQpOwogCiAJYmxpdC0+YmFzZS5mZCA9IGZkOwogCWJsaXQtPmJhc2Uu ZmIgPSBmYjsKLQlibGl0LT5zaGFkb3dfcHRyID0gaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFkb3df YnVmZmVyKGZkLAorCWJsaXQtPnNoYWRvd19wdHIgPSBpZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRv d19idWZmZXIoZmQsIGRybV9mb3JtYXQsCiAJCQkJCQkJICAgICBmYi0+d2lkdGgsCiAJCQkJCQkJ ICAgICBmYi0+aGVpZ2h0LAogCQkJCQkJCSAgICAgJmJsaXQtPnNoYWRvd19mYik7CkBAIC0yMDcw LDcgKzIzMzcsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChp bnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCiAJZmItPmNhaXJvX3N1cmZhY2UgPQogCQljYWly b19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShibGl0LT5zaGFkb3dfcHRyLAotCQkJCQkJ ICAgIENBSVJPX0ZPUk1BVF9SR0IyNCwKKwkJCQkJCSAgICBjYWlyb19pZCwKIAkJCQkJCSAgICBm Yi0+d2lkdGgsIGZiLT5oZWlnaHQsCiAJCQkJCQkgICAgYmxpdC0+c2hhZG93X2ZiLnN0cmlkZXNb MF0pOwogCkBAIC0yMTM1LDYgKzI0MDIsMjEgQEAgY2Fpcm9fc3VyZmFjZV90ICppZ3RfZ2V0X2Nh aXJvX3N1cmZhY2UoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJCWNyZWF0ZV9jYWlyb19z dXJmYWNlX19ibGl0KGZkLCBmYik7CiAJCWVsc2UKIAkJCWNyZWF0ZV9jYWlyb19zdXJmYWNlX19n dHQoZmQsIGZiKTsKKworCQlpZiAoZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9STUFUX1JHQjk2RiB8 fAorCQkgICAgZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9STUFUX1JHQkExMjhGKSB7CisJCQljYWly b19zdGF0dXNfdCBzdGF0dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhmYi0+Y2Fpcm9fc3VyZmFj ZSk7CisKKwkJCWlndF9za2lwX29uX2Yoc3RhdHVzID09IENBSVJPX1NUQVRVU19JTlZBTElEX0ZP Uk1BVCAmJgorCQkJCSAgICAgIGNhaXJvX3ZlcnNpb24oKSA8IENBSVJPX1ZFUlNJT05fRU5DT0RF KDEsIDE3LCAyKSwKKwkJCQkgICAgICAiQ2Fpcm8gdmVyc2lvbiB0b28gb2xkLCBuZWVkIDEuMTcu MiwgaGF2ZSAlc1xuIiwKKwkJCQkgICAgICBjYWlyb192ZXJzaW9uX3N0cmluZygpKTsKKworCQkJ aWd0X3NraXBfb25fZihzdGF0dXMgPT0gQ0FJUk9fU1RBVFVTX05PX01FTU9SWSAmJgorCQkJCSAg ICAgIHBpeG1hbl92ZXJzaW9uKCkgPCBQSVhNQU5fVkVSU0lPTl9FTkNPREUoMCwgMzYsIDApLAor CQkJCSAgICAgICJQaXhtYW4gdmVyc2lvbiB0b28gb2xkLCBuZWVkIDAuMzYuMCwgaGF2ZSAlc1xu IiwKKwkJCQkgICAgICBwaXhtYW5fdmVyc2lvbl9zdHJpbmcoKSk7CisJCX0KIAl9CiAKIAlpZ3Rf YXNzZXJ0KGNhaXJvX3N1cmZhY2Vfc3RhdHVzKGZiLT5jYWlyb19zdXJmYWNlKSA9PSBDQUlST19T VEFUVVNfU1VDQ0VTUyk7CkBAIC0yMzQ4LDYgKzI2MzAsOSBAQCBib29sIGlndF9mb3JtYXRfaXNf eXV2KHVpbnQzMl90IGRybV9mb3JtYXQpCiAJY2FzZSBEUk1fRk9STUFUX1lVVjQyMjoKIAljYXNl IERSTV9GT1JNQVRfWVZVNDIwOgogCWNhc2UgRFJNX0ZPUk1BVF9ZVlU0MjI6CisJY2FzZSBEUk1f Rk9STUFUX1AwMTA6CisJY2FzZSBEUk1fRk9STUFUX1AwMTI6CisJY2FzZSBEUk1fRk9STUFUX1Aw MTY6CiAJY2FzZSBEUk1fRk9STUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9STUFUX1lWWVU6CiAJY2Fz ZSBEUk1fRk9STUFUX1VZVlk6CmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmggYi9saWIvaWd0X2Zi LmgKaW5kZXggOWYwMjdkZWJhODQyLi44YzY4M2RiNWU5ZWMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rf ZmIuaAorKysgYi9saWIvaWd0X2ZiLmgKQEAgLTM4LDYgKzM4LDEyIEBACiAKICNpbmNsdWRlICJp Z3RfY29sb3JfZW5jb2RpbmcuaCIKIAorLyoKKyAqIEludGVybmFsIGZvcm1hdCB0byBkZW5vdGUg YSBidWZmZXIgY29tcGF0aWJsZSB3aXRoIHBpeG1hbidzCisgKiBmbG9hdGluZyBwb2ludCBmb3Jt YXQuIFJhbmdlIFswLTFdLgorICovCisjZGVmaW5lIElHVF9GT1JNQVRfRkxPQVQgZm91cmNjX2Nv ZGUoJ0knLCAnRycsICdGJywgJ3gnKQorCiAvKioKICAqIGlndF9mYl90OgogICogQGZiX2lkOiBL TVMgSUQgb2YgdGhlIGZyYW1lYnVmZmVyCmRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29u LmJ1aWxkCmluZGV4IGIxN2U2N2VmN2YwNS4uMzU2YTU0MTQyMjZiIDEwMDY0NAotLS0gYS9tZXNv bi5idWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMzM2LDMgKzMzNiwxMyBAQCBtZXNzYWdlKCc9 PT09PT09PT09PT09JykKIGZvcmVhY2ggc3RyIDogYnVpbGRfaW5mbwogCW1lc3NhZ2Uoc3RyKQog ZW5kZm9yZWFjaAorCitpZiBjYWlyby52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc8MS4xNy4y JykKKwlpZiBwaXhtYW4udmVyc2lvbigpLnZlcnNpb25fY29tcGFyZSgnPDAuMzYuMCcpCisJCXdh cm5pbmcoJ1BpeG1hbiA8IDAuMzYuMCBmb3VuZCwgY2Fubm90IHRlc3QgSERSIGZvcm1hdHMnKQor CWVuZGlmCisJd2FybmluZygnQ2Fpcm8gPCAxLjE3LjIgZm91bmQsIGNhbm5vdCB0ZXN0IEhEUiBm b3JtYXRzJykKK2VsaWYgcGl4bWFuLnZlcnNpb24oKS52ZXJzaW9uX2NvbXBhcmUoJzwwLjM2LjAn KQorCSMgQ2Fpcm8gMS4xNy4yIHJlcXVpcmVzIDAuMzYuMCB0byBjb21waWxlLCBidXQgc29tZWhv dyBpdCB3ZW50IG1pc3Npbmc/CisJZXJyb3IoJ0NhaXJvIHdpdGggZmxvYXRpbmcgcG9pbnQgc3Vw cG9ydCBmb3VuZCwgYnV0IHBpeG1hbiB2ZXJzaW9uIHRvbyBvbGQnKQorZW5kaWYKLS0gCjIuMjAu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRl diBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2