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 680636EE2E for ; Fri, 1 Feb 2019 11:15:56 +0000 (UTC) From: Maarten Lankhorst Date: Fri, 1 Feb 2019 12:15:44 +0100 Message-Id: <20190201111544.7920-4-maarten.lankhorst@linux.intel.com> In-Reply-To: <20190201111544.7920-1-maarten.lankhorst@linux.intel.com> References: <20190201111544.7920-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 4/4] lib/igt_fb: Add support for Y410/Y416 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: igt-dev@lists.freedesktop.org List-ID: WTQxMCBpcyBwYWNrZWQgd2l0aCBjb21wcmVzc2VkIGEgY2hhbm5lbCBhbmQgb25seSAzMiBicHAs IGxpa2UKMTAgYml0cyBSR0IgZm9ybWF0cy4gWTQxNiBpcyBhIHBhY2tlZCAxNiBiaXRzIHBlciBj b21wb25lbnQgZm9ybWF0LgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBpbmNsdWRlL2RybS11YXBpL2RybV9m b3VyY2MuaCB8ICAgMyArCiBsaWIvaWd0X2NvbG9yX2VuY29kaW5nLmMgICAgICB8ICAgMiArCiBs aWIvaWd0X2ZiLmMgICAgICAgICAgICAgICAgICB8IDIwMyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDIwOCBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL2RybS11YXBpL2Ry bV9mb3VyY2MuaAppbmRleCA4ZjFiNWY4MzJhMDkuLjFkMDQzMDRhMDUyOCAxMDA2NDQKLS0tIGEv aW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9kcm1f Zm91cmNjLmgKQEAgLTE1Nyw2ICsxNTcsOSBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgRFJNX0ZP Uk1BVF9ZMjEyCQlmb3VyY2NfY29kZSgnWScsICcyJywgJzEnLCAnMicpCiAjZGVmaW5lIERSTV9G T1JNQVRfWTIxNgkJZm91cmNjX2NvZGUoJ1knLCAnMicsICcxJywgJzYnKQogCisjZGVmaW5lIERS TV9GT1JNQVRfWTQxMAkJZm91cmNjX2NvZGUoJ1knLCAnNCcsICcxJywgJzAnKSAvKiBbMzE6MF0g QTpWOlk6VSAyOjEwOjEwOjEwIGxpdHRsZSBlbmRpYW4gKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9Z NDE2CQlmb3VyY2NfY29kZSgnWScsICc0JywgJzEnLCAnNicpIC8qIFsxMjc6MF0gQTpWOlk6VSAx NjoxNjoxNjoxNiBsaXR0bGUgZW5kaWFuICovCisKIC8qCiAgKiBwYWNrZWQgWUNiQ3I0MjAgMngy IHRpbGVkIGZvcm1hdHMKICAqIGZpcnN0IDY0IGJpdHMgd2lsbCBjb250YWluIFksQ2IsQ3IgY29t cG9uZW50cyBmb3IgYSAyeDIgdGlsZQpkaWZmIC0tZ2l0IGEvbGliL2lndF9jb2xvcl9lbmNvZGlu Zy5jIGIvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCmluZGV4IDZmODJmY2VjNjJlNC4uYmM5NTc1 ZmNhMWI0IDEwMDY0NAotLS0gYS9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKKysrIGIvbGliL2ln dF9jb2xvcl9lbmNvZGluZy5jCkBAIC0xNDcsNiArMTQ3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgewogCXsgRFJNX0ZPUk1BVF9ZMjEwLCA2NTQ3Mi5mLCA0 MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAogCXsgRFJNX0ZPUk1B VF9ZMjEyLCA2NTUyMC5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAu ZiB9LAogCXsgRFJNX0ZPUk1BVF9ZMjE2LCA2NTUzNS5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYu ZiwgMzI3NjguZiwgNjE0NDAuZiB9LAorCXsgRFJNX0ZPUk1BVF9ZNDEwLCAxMDIzLmYsIDY0LmYs IDk0MC5mLCA2NC5mLCA1MTIuZiwgOTYwLmYgfSwKKwl7IERSTV9GT1JNQVRfWTQxNiwgNjU1MzUu ZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKIH07CiAKIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0ICpsb29rdXBfZm91cmNjKHVp bnQzMl90IGZvdXJjYykKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwpp bmRleCBjMTRjYzEwZDFiNzMuLjE1YzU0MWQxZmM0ZSAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5j CisrKyBiL2xpYi9pZ3RfZmIuYwpAQCAtMTYzLDYgKzE2MywxNCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7CiAJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdC OTZGLAogCSAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyAzMiwgfSwKIAl9LAorCXsg Lm5hbWUgPSAiWTQxMCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9ZNDEwLAor CSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQkExMjhGLAorCSAgLm51bV9wbGFuZXMgPSAx LCAucGxhbmVfYnBwID0geyAzMiwgfSwKKwl9LAorCXsgLm5hbWUgPSAiWTQxNiIsIC5kZXB0aCA9 IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9ZNDE2LAorCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9S TUFUX1JHQkExMjhGLAorCSAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyA2NCwgfSwK Kwl9LAogCXsgLm5hbWUgPSAiUDAxMCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1B VF9QMDEwLAogCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKIAkgIC5udW1fcGxh bmVzID0gMiwgLnBsYW5lX2JwcCA9IHsgMTYsIDMyIH0sCkBAIC01NzIsNiArNTgwLDI4IEBAIHN0 YXRpYyBpbnQgY3JlYXRlX2JvX2Zvcl9mYihzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJCQkJZnVsbF9y YW5nZSA/IDB4ODAwMDAwMDAgOiAweDgwMDAxMDAwLAogCQkJCQlmYi0+c3RyaWRlc1swXSAqIGZi LT5wbGFuZV9oZWlnaHRbMF0gLyBzaXplb2Yod2NoYXJfdCkpOwogCQkJCWJyZWFrOworCQkJY2Fz ZSBEUk1fRk9STUFUX1k0MTA6CisJCQkJd21lbXNldChwdHIgKyBmYi0+b2Zmc2V0c1swXSwKKwkJ CQkJZnVsbF9yYW5nZSA/IDB4YzAwODAwMDAgOiAweGM0MDgwMDQwLAorCQkJCQlmYi0+c3RyaWRl c1swXSAqIGZiLT5wbGFuZV9oZWlnaHRbMF0gLyBzaXplb2Yod2NoYXJfdCkpOworCQkJCWJyZWFr OworCQkJY2FzZSBEUk1fRk9STUFUX1k0MTY6IHsKKwkJCQlzdHJ1Y3QgYXl1djE2IHsgdWludDE2 X3QgdSwgeSwgdiwgYTsgfTsKKwkJCQljb25zdCBzdHJ1Y3QgYXl1djE2IHBpeGVsID0geworCQkJ CQkuYSA9IDB4ZmZmZiwKKwkJCQkJLnYgPSBmdWxsX3JhbmdlID8gMCA6IDB4MTAwMCwKKwkJCQkJ LnkgPSAweDgwMDAsCisJCQkJCS51ID0gZnVsbF9yYW5nZSA/IDAgOiAweDEwMDAKKwkJCQl9Owor CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBmYi0+cGxhbmVfaGVpZ2h0WzBdOyBpKyspIHsKKwkJ CQkJc3RydWN0IGF5dXYxNiAqY3VyID0gcHRyICsgZmItPm9mZnNldHNbMF0gKyBmYi0+c3RyaWRl c1swXSAqIGk7CisKKwkJCQkJZm9yIChpbnQgaiA9IDA7IGkgPCBmYi0+cGxhbmVfd2lkdGhbMF07 IGorKykKKwkJCQkJCSpjdXIrKyA9IHBpeGVsOworCQkJCX0KKwkJCQlicmVhazsKKwkJCQl9CiAJ CQl9CiAJCQlnZW1fbXVubWFwKHB0ciwgZmItPnNpemUpOwogCkBAIC0yMjcyLDYgKzIzMDIsMTY1 IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfZmxvYXRfdG9fWTIxWChzdHJ1Y3QgZmJfY29udmVydCAq Y3Z0KQogCX0KIH0KIAorc3RhdGljIHZvaWQgY29udmVydF9ZNDEwX3RvX2Zsb2F0KHN0cnVjdCBm Yl9jb252ZXJ0ICpjdnQpCit7CisJaW50IGksIGo7CisJY29uc3QgdWludDMyX3QgKnl1eXY7CisJ dWludDMyX3QgKmJ1ZjsKKwlmbG9hdCAqcHRyID0gY3Z0LT5kc3QucHRyOworCXVuc2lnbmVkIGlu dCBmbG9hdF9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsK Kwl1bnNpZ25lZCBpbnQgeXV5dl9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRlc1swXSAvIHNp emVvZigqeXV5dik7CisJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJp eChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zv cm1hdCwKKwkJCQkJCSAgICBjdnQtPnNyYy5mYi0+Y29sb3JfZW5jb2RpbmcsCisJCQkJCQkgICAg Y3Z0LT5zcmMuZmItPmNvbG9yX3JhbmdlKTsKKworCWlndF9hc3NlcnQoY3Z0LT5zcmMuZmItPmRy bV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZNDEwICYmCisJCSAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9y bWF0ID09IElHVF9GT1JNQVRfRkxPQVQpOworCisJeXV5diA9IGJ1ZiA9IGNvbnZlcnRfc3JjX2dl dChjdnQpOworCisJZm9yIChpID0gMDsgaSA8IGN2dC0+ZHN0LmZiLT5oZWlnaHQ7IGkrKykgewor CQlmb3IgKGogPSAwOyBqIDwgY3Z0LT5kc3QuZmItPndpZHRoOyBqKyspIHsKKwkJCS8qIENvbnZl cnQgMngxIHBpeGVsIGJsb2NrcyAqLworCQkJc3RydWN0IGlndF92ZWM0IHl1djsKKwkJCXN0cnVj dCBpZ3RfdmVjNCByZ2I7CisKKwkJCXl1di5kWzBdID0geXV5dltqXSAmIDB4M2ZmOworCQkJeXV2 LmRbMV0gPSAoeXV5dltqXSA+PiAxMCkgJiAweDNmZjsKKwkJCXl1di5kWzJdID0gKHl1eXZbal0g Pj4gMjApICYgMHgzZmY7CisJCQl5dXYuZFszXSA9IDEuZjsKKworCQkJcmdiID0gaWd0X21hdHJp eF90cmFuc2Zvcm0oJm0sICZ5dXYpOworCisJCQl3cml0ZV9yZ2JmKCZwdHJbaiAqIDQgKyAwXSwg JnJnYik7CisJCQlwdHJbaiAqIDQgKyAzXSA9IChmbG9hdCkoeXV5dltqXSA+PiAzMCkgLyAzOwor CQl9CisKKwkJcHRyICs9IGZsb2F0X3N0cmlkZTsKKwkJeXV5diArPSB5dXl2X3N0cmlkZTsKKwl9 CisKKwljb252ZXJ0X3NyY19wdXQoY3Z0LCBidWYpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0 X2Zsb2F0X3RvX1k0MTAoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKK3sKKwlpbnQgaSwgajsKKwl1 aW50MzJfdCAqeXV5diA9IGN2dC0+ZHN0LnB0cjsKKwljb25zdCBmbG9hdCAqcHRyID0gY3Z0LT5z cmMucHRyOworCXVuc2lnbmVkIGZsb2F0X3N0cmlkZSA9IGN2dC0+c3JjLmZiLT5zdHJpZGVzWzBd IC8gc2l6ZW9mKCpwdHIpOworCXVuc2lnbmVkIHl1eXZfc3RyaWRlID0gY3Z0LT5kc3QuZmItPnN0 cmlkZXNbMF0gLyBzaXplb2YoKnl1eXYpOworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90 b195Y2Jjcl9tYXRyaXgoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5k c3QuZmItPmRybV9mb3JtYXQsCisJCQkJCQkgICAgY3Z0LT5kc3QuZmItPmNvbG9yX2VuY29kaW5n LAorCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5jb2xvcl9yYW5nZSk7CisKKwlpZ3RfYXNzZXJ0KGN2 dC0+c3JjLmZiLT5kcm1fZm9ybWF0ID09IElHVF9GT1JNQVRfRkxPQVQgJiYKKwkJICAgY3Z0LT5k c3QuZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZNDEwKTsKKworCWZvciAoaSA9IDA7IGkg PCBjdnQtPmRzdC5mYi0+aGVpZ2h0OyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IGN2dC0+ZHN0 LmZiLT53aWR0aDsgaisrKSB7CisJCQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiOworCQkJc3RydWN0IGln dF92ZWM0IHl1djsKKwkJCXVpbnQ4X3QgYWxwaGEgPSBwdHJbaiAqIDQgKyAzXSAqIDMuZiArIC41 ZjsKKwkJCXVpbnQxNl90IHksIGNiLCBjcjsKKworCQkJcmVhZF9yZ2JmKCZyZ2IsICZwdHJbaiAq IDQgKyAwXSk7CisKKwkJCXl1diA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdiKTsKKwkJ CWNyID0geXV2LmRbMF07CisJCQl5ID0geXV2LmRbMV07CisJCQljYiA9IHl1di5kWzJdOworCisJ CQl5dXl2W2pdID0gKChjciAmIDB4M2ZmKSA8PCAwKSB8CisJCQkJICAoKHkgJiAweDNmZikgPDwg MTApIHwKKwkJCQkgICgoY2IgJiAweDNmZikgPDwgMjApIHwKKwkJCQkgICgoYWxwaGEgJiAzKSA8 PCAzMCk7CisJCX0KKworCQlwdHIgKz0gZmxvYXRfc3RyaWRlOworCQl5dXl2ICs9IHl1eXZfc3Ry aWRlOworCX0KK30KKworc3RhdGljIHZvaWQgY29udmVydF9ZNDE2X3RvX2Zsb2F0KHN0cnVjdCBm Yl9jb252ZXJ0ICpjdnQpCit7CisJaW50IGksIGo7CisJY29uc3QgdWludDE2X3QgKnl1eXY7CisJ dWludDE2X3QgKmJ1ZjsKKwlmbG9hdCAqcHRyID0gY3Z0LT5kc3QucHRyOworCXVuc2lnbmVkIGlu dCBmbG9hdF9zdHJpZGUgPSBjdnQtPmRzdC5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsK Kwl1bnNpZ25lZCBpbnQgeXV5dl9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRlc1swXSAvIHNp emVvZigqeXV5dik7CisJc3RydWN0IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJp eChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAgICBjdnQtPmRzdC5mYi0+ZHJtX2Zv cm1hdCwKKwkJCQkJCSAgICBjdnQtPnNyYy5mYi0+Y29sb3JfZW5jb2RpbmcsCisJCQkJCQkgICAg Y3Z0LT5zcmMuZmItPmNvbG9yX3JhbmdlKTsKKworCWlndF9hc3NlcnQoY3Z0LT5zcmMuZmItPmRy bV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9ZNDE2ICYmCisJCSAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9y bWF0ID09IElHVF9GT1JNQVRfRkxPQVQpOworCisJYnVmID0gY29udmVydF9zcmNfZ2V0KGN2dCk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhlaWdodDsgaSsrKSB7CisJCWZvciAo aiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykgeworCQkJLyogQ29udmVydCAyeDEg cGl4ZWwgYmxvY2tzICovCisJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2OworCQkJc3RydWN0IGlndF92 ZWM0IHJnYjsKKworCQkJeXV2LmRbMF0gPSB5dXl2W2ogKiA0ICsgMF07CisJCQl5dXYuZFsxXSA9 IHl1eXZbaiAqIDQgKyAxXTsKKwkJCXl1di5kWzJdID0geXV5dltqICogNCArIDJdOworCQkJeXV2 LmRbM10gPSAxLmY7CisKKwkJCXJnYiA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2KTsK KworCQkJd3JpdGVfcmdiZigmcHRyW2ogKiA0ICsgMF0sICZyZ2IpOworCQkJcHRyW2ogKiA0ICsg M10gPSAoZmxvYXQpeXV5dltqICogNCArIDNdIC8gNjU1MzUuZjsKKwkJfQorCisJCXB0ciArPSBm bG9hdF9zdHJpZGU7CisJCXl1eXYgKz0geXV5dl9zdHJpZGU7CisJfQorCisJY29udmVydF9zcmNf cHV0KGN2dCwgYnVmKTsKK30KKworc3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b19ZNDE2KHN0 cnVjdCBmYl9jb252ZXJ0ICpjdnQpCit7CisJaW50IGksIGo7CisJdWludDE2X3QgKnl1eXYgPSBj dnQtPmRzdC5wdHI7CisJY29uc3QgZmxvYXQgKnB0ciA9IGN2dC0+c3JjLnB0cjsKKwl1bnNpZ25l ZCBmbG9hdF9zdHJpZGUgPSBjdnQtPnNyYy5mYi0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsK Kwl1bnNpZ25lZCB5dXl2X3N0cmlkZSA9IGN2dC0+ZHN0LmZiLT5zdHJpZGVzWzBdIC8gc2l6ZW9m KCp5dXl2KTsKKwlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF9yZ2JfdG9feWNiY3JfbWF0cml4KGN2 dC0+c3JjLmZiLT5kcm1fZm9ybWF0LAorCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0 LAorCQkJCQkJICAgIGN2dC0+ZHN0LmZiLT5jb2xvcl9lbmNvZGluZywKKwkJCQkJCSAgICBjdnQt PmRzdC5mYi0+Y29sb3JfcmFuZ2UpOworCisJaWd0X2Fzc2VydChjdnQtPnNyYy5mYi0+ZHJtX2Zv cm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FUICYmCisJCSAgIGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0 ID09IERSTV9GT1JNQVRfWTQxNik7CisKKwlmb3IgKGkgPSAwOyBpIDwgY3Z0LT5kc3QuZmItPmhl aWdodDsgaSsrKSB7CisJCWZvciAoaiA9IDA7IGogPCBjdnQtPmRzdC5mYi0+d2lkdGg7IGorKykg eworCQkJc3RydWN0IGlndF92ZWM0IHJnYjsKKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXY7CisKKwkJ CXJlYWRfcmdiZigmcmdiLCAmcHRyW2ogKiA0ICsgMF0pOworCisJCQl5dXYgPSBpZ3RfbWF0cml4 X3RyYW5zZm9ybSgmbSwgJnJnYik7CisKKwkJCXl1eXZbaiAqIDQgKyAwXSA9IHl1di5kWzBdOwor CQkJeXV5dltqICogNCArIDFdID0geXV2LmRbMV07CisJCQl5dXl2W2ogKiA0ICsgMl0gPSB5dXYu ZFsyXTsKKwkJCXl1eXZbaiAqIDQgKyAzXSA9IHB0cltqICogNCArIDNdICogNjU1MzUuZiArIC41 ZjsKKwkJfQorCisJCXB0ciArPSBmbG9hdF9zdHJpZGU7CisJCXl1eXYgKz0geXV5dl9zdHJpZGU7 CisJfQorfQorCiBzdGF0aWMgdm9pZCBjb252ZXJ0X3BpeG1hbihzdHJ1Y3QgZmJfY29udmVydCAq Y3Z0KQogewogCXBpeG1hbl9mb3JtYXRfY29kZV90IHNyY19waXhtYW4gPSBkcm1fZm9ybWF0X3Rv X3BpeG1hbihjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCk7CkBAIC0yMzU5LDYgKzI1NDgsMTIgQEAg c3RhdGljIHZvaWQgZmJfY29udmVydChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQljYXNlIERS TV9GT1JNQVRfWTIxNjoKIAkJCWNvbnZlcnRfWTIxWF90b19mbG9hdChjdnQpOwogCQkJcmV0dXJu OworCQljYXNlIERSTV9GT1JNQVRfWTQxMDoKKwkJCWNvbnZlcnRfWTQxMF90b19mbG9hdChjdnQp OworCQkJcmV0dXJuOworCQljYXNlIERSTV9GT1JNQVRfWTQxNjoKKwkJCWNvbnZlcnRfWTQxNl90 b19mbG9hdChjdnQpOworCQkJcmV0dXJuOwogCQl9CiAJfSBlbHNlIGlmIChjdnQtPnNyYy5mYi0+ ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FUKSB7CiAJCXN3aXRjaCAoY3Z0LT5kc3QuZmIt PmRybV9mb3JtYXQpIHsKQEAgLTIzNzIsNiArMjU2NywxMiBAQCBzdGF0aWMgdm9pZCBmYl9jb252 ZXJ0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJCWNhc2UgRFJNX0ZPUk1BVF9ZMjE2OgogCQkJ Y29udmVydF9mbG9hdF90b19ZMjFYKGN2dCk7CiAJCQlyZXR1cm47CisJCWNhc2UgRFJNX0ZPUk1B VF9ZNDEwOgorCQkJY29udmVydF9mbG9hdF90b19ZNDEwKGN2dCk7CisJCQlyZXR1cm47CisJCWNh c2UgRFJNX0ZPUk1BVF9ZNDE2OgorCQkJY29udmVydF9mbG9hdF90b19ZNDE2KGN2dCk7CisJCQly ZXR1cm47CiAJCX0KIAl9CiAKQEAgLTI3MjksNiArMjkzMCw4IEBAIGJvb2wgaWd0X2Zvcm1hdF9p c195dXYodWludDMyX3QgZHJtX2Zvcm1hdCkKIAljYXNlIERSTV9GT1JNQVRfWTIxMDoKIAljYXNl IERSTV9GT1JNQVRfWTIxMjoKIAljYXNlIERSTV9GT1JNQVRfWTIxNjoKKwljYXNlIERSTV9GT1JN QVRfWTQxMDoKKwljYXNlIERSTV9GT1JNQVRfWTQxNjoKIAljYXNlIERSTV9GT1JNQVRfWVVZVjoK IAljYXNlIERSTV9GT1JNQVRfWVZZVToKIAljYXNlIERSTV9GT1JNQVRfVVlWWToKLS0gCjIuMjAu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRl diBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==