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 62CE56EE2B for ; Fri, 1 Feb 2019 11:15:56 +0000 (UTC) From: Maarten Lankhorst Date: Fri, 1 Feb 2019 12:15:42 +0100 Message-Id: <20190201111544.7920-2-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 2/4] lib/igt_fb: Add support for P01x 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: VGhlIFAwMXggZm9ybWF0cyBhcmUgcGxhbmFyIDE2IGJpdHMgcGVyIGNvbXBvbmVudCwgd2l0aCB0 aGUgdW51c2VkIGxvd2VyIGJpdHMgc2V0IHRvIDAuClRoaXMgbWVhbnMgdGhleSBjYW4gYWxsIGJl IGNvbnZlcnRlZCB0aGUgc2FtZSB3YXkuIE9ubHkgdGhlIHJhbmdlIGlzIHNsaWdodGx5IGRpZmZl cmVudCwKYW5kIHRoaXMgaXMgaGFuZGxlZCBpbiB0aGUgY29sb3JfZW5jb2RpbmcgaW1wbGVtZW50 YXRpb24uCgpUaGlzIHJlcXVpcmVzIGNhaXJvIDEuMTcuMiBhbmQgcGl4bWFuIDAuMzYuIFRoaXMg d29ya3MgYnV0IGRvZXNuJ3QgZ2l2ZSBleHRyYSBwcmVjaXNpb24uCkZvciBtb3JlIHRoYW4gOCBi aXRzIHByZWNpc2lvbiBhIGZldyBtb3JlIHBhdGNoZXMgYXJlIHJlcXVpcmVkIHRvIHBpeG1hbiwg cGVuZGluZyByZXZpZXc6Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL3Bp eG1hbi8yMDE5LUphbnVhcnkvMDA0ODE1Lmh0bWwKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvYXJjaGl2ZXMvcGl4bWFuLzIwMTktSmFudWFyeS8wMDQ4MDkuaHRtbAoKT25jZSB0aG9zZSBh cmUgbWVyZ2VkLCB3ZSB3aWxsIHJlcXVpcmUgdGhlIG5leHQgcGl4bWFuIHJlbGVhc2UgZm9yIGJl dHRlciBwcmVjaXNpb24uCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0KIGNvbmZpZ3VyZS5hYyAgICAgICAgICAg ICAgICAgIHwgICA0ICstCiBpbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaCB8ICAxMCArKwog bGliL2lndF9jb2xvcl9lbmNvZGluZy5jICAgICAgfCAgIDQgKwogbGliL2lndF9mYi5jICAgICAg ICAgICAgICAgICAgfCAyMDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogbGli L2lndF9mYi5oICAgICAgICAgICAgICAgICAgfCAgIDYgKwogbWVzb24uYnVpbGQgICAgICAgICAg ICAgICAgICAgfCAgIDQgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjE4IGluc2VydGlvbnMoKyksIDE1 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwpp bmRleCBiNDZmMDI0Zjg3NWEuLjMzNmEwNWJiM2YwZCAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFj CisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTM2LDEwICsxMzYsMTAgQEAgZmkKIFBLR19DSEVDS19N T0RVTEVTKFhSQU5EUiwgeHJhbmRyID49IDEuMywgQUNfREVGSU5FKEhBVkVfWFJBTkRSLCAxLCBb SGF2ZSBsaWJYcmFuZHJdKSwgW2hhdmVfeHJhbmRyPW5vXSkKIAogIyBmb3IgdGVzdGRpc3BsYXkK LVBLR19DSEVDS19NT0RVTEVTKENBSVJPLCBbY2Fpcm8gPj0gMS4xMi4wXSkKK1BLR19DSEVDS19N T0RVTEVTKENBSVJPLCBbY2Fpcm8gPj0gMS4xNy4yXSkKIFBLR19DSEVDS19NT0RVTEVTKExJQlVE RVYsIFtsaWJ1ZGV2XSkKIFBLR19DSEVDS19NT0RVTEVTKEdMSUIsIFtnbGliLTIuMF0pCi1QS0df Q0hFQ0tfTU9EVUxFUyhQSVhNQU4sIFtwaXhtYW4tMV0pCitQS0dfQ0hFQ0tfTU9EVUxFUyhQSVhN QU4sIFtwaXhtYW4tMSA+PSAwLjM2XSkKIFBLR19DSEVDS19NT0RVTEVTKEdTTCwgW2dzbF0sIFtn c2w9eWVzXSwgW2dzbD1ub10pCiBBTV9DT05ESVRJT05BTChIQVZFX0dTTCwgW3Rlc3QgIngkZ3Ns IiA9IHh5ZXNdKQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaCBi L2luY2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5oCmluZGV4IDRkZGY3NTRiYWIwOS4uYzlhNWU1 Nzg3MDMxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaAorKysgYi9p bmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaApAQCAtMTk1LDYgKzE5NSwxNiBAQCBleHRlcm4g IkMiIHsKICNkZWZpbmUgRFJNX0ZPUk1BVF9OVjI0CQlmb3VyY2NfY29kZSgnTicsICdWJywgJzIn LCAnNCcpIC8qIG5vbi1zdWJzYW1wbGVkIENyOkNiIHBsYW5lICovCiAjZGVmaW5lIERSTV9GT1JN QVRfTlY0MgkJZm91cmNjX2NvZGUoJ04nLCAnVicsICc0JywgJzInKSAvKiBub24tc3Vic2FtcGxl ZCBDYjpDciBwbGFuZSAqLwogCisvKgorICogMiBwbGFuZSBZQ2JDcgorICogaW5kZXggMCA9IFkg cGxhbmUsIFsxNTowXSBZIGxpdHRsZSBlbmRpYW4gd2hlcmUgUHh4eCBpbmRpY2F0ZQorICogY29t cG9uZW50IHh4eCBtc2IgWSBbeHh4OjE2LXh4eF0KKyAqIGluZGV4IDEgPSBDcjpDYiBwbGFuZSwg WzMxOjBdIENyOkNiIGxpdHRsZSBlbmRpYW4gW3h4eDoxNi14eHg6eHh4OjE2LXh4eF0KKyAqLwor I2RlZmluZSBEUk1fRk9STUFUX1AwMTAJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICcwJykg LyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDEwIGJpdCBwZXIgY2hhbm5lbCAqLworI2Rl ZmluZSBEUk1fRk9STUFUX1AwMTIJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICcyJykgLyog MngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDEyIGJpdCBwZXIgY2hhbm5lbCAqLworI2RlZmlu ZSBEUk1fRk9STUFUX1AwMTYJCWZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICc2JykgLyogMngy IHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDE2IGJpdCBwZXIgY2hhbm5lbCAqLworCiAvKgogICog MyBwbGFuZSBZQ2JDcgogICogaW5kZXggMDogWSBwbGFuZSwgWzc6MF0gWQpkaWZmIC0tZ2l0IGEv bGliL2lndF9jb2xvcl9lbmNvZGluZy5jIGIvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCmluZGV4 IDRjYmUxOGUyMTdlMy4uYjdhMTJhMWUwN2Y3IDEwMDY0NAotLS0gYS9saWIvaWd0X2NvbG9yX2Vu Y29kaW5nLmMKKysrIGIvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCkBAIC0xMzUsMTEgKzEzNSwx NSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbG9yX2VuY29kaW5nX2Zvcm1hdCB7CiAJZmxvYXQg b2ZzX3ksIG1heF95LCBvZnNfY2JjciwgbWlkX2NiY3IsIG1heF9jYmNyOwogfSBmb3JtYXRzW10g PSB7CiAJeyBEUk1fRk9STUFUX1hSR0I4ODg4LCAyNTUuZiwgfSwKKwl7IElHVF9GT1JNQVRfRkxP QVQsIDEuZiwgfSwKIAl7IERSTV9GT1JNQVRfTlYxMiwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5m LCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfWVVZViwgMjU1LmYsIDE2LmYsIDIzNS5m LCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfWVZZVSwgMjU1LmYsIDE2LmYs IDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfVVlWWSwgMjU1LmYs IDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKIAl7IERSTV9GT1JNQVRfVllVWSwg MjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKKwl7IERSTV9GT1JNQVRf UDAxMCwgNjU0NzIuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYg fSwKKwl7IERSTV9GT1JNQVRfUDAxMiwgNjU1MjAuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYs IDMyNzY4LmYsIDYxNDQwLmYgfSwKKwl7IERSTV9GT1JNQVRfUDAxNiwgNjU1MzUuZiwgNDA5Ni5m LCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKIH07CiAKIHN0YXRpYyBjb25z dCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0ICpsb29rdXBfZm91cmNjKHVpbnQzMl90IGZv dXJjYykKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9pZ3RfZmIuYwppbmRleCBhOTcx YWViYjM2YjMuLjhiZDA0MjBmYzJlNCAxMDA2NDQKLS0tIGEvbGliL2lndF9mYi5jCisrKyBiL2xp Yi9pZ3RfZmIuYwpAQCAtMTUxLDYgKzE1MSwyMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZvcm1h dF9kZXNjX3N0cnVjdCB7CiAJICAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCMjQsCiAJICAu bnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDE2LCB9LAogCX0sCisJeyAubmFtZSA9ICJQ MDEwIiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTAsCisJICAuY2Fpcm9f aWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAorCSAgLm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBw ID0geyAxNiwgMzIgfSwKKwl9LAorCXsgLm5hbWUgPSAiUDAxMiIsIC5kZXB0aCA9IC0xLCAuZHJt X2lkID0gRFJNX0ZPUk1BVF9QMDEyLAorCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2 RiwKKwkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5lX2JwcCA9IHsgMTYsIDMyIH0sCisJfSwKKwl7 IC5uYW1lID0gIlAwMTYiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxNiwK KwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCisJICAubnVtX3BsYW5lcyA9IDIs IC5wbGFuZV9icHAgPSB7IDE2LCAzMiB9LAorCX0sCisJeyAubmFtZSA9ICJJR1QtRkxPQVQiLCAu ZGVwdGggPSAtMSwgLmRybV9pZCA9IElHVF9GT1JNQVRfRkxPQVQsCisJICAuY2Fpcm9faWQgPSBD QUlST19GT1JNQVRfSU5WQUxJRCwKKwkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsg MTI4IH0sCisJfSwKIH07CiAjZGVmaW5lIGZvcl9lYWNoX2Zvcm1hdChmKQlcCiAJZm9yIChmID0g Zm9ybWF0X2Rlc2M7IGYgLSBmb3JtYXRfZGVzYyA8IEFSUkFZX1NJWkUoZm9ybWF0X2Rlc2MpOyBm KyspCkBAIC0yMzksMTAgKzI1NSwxNyBAQCB2b2lkIGlndF9nZXRfZmJfdGlsZV9zaXplKGludCBm ZCwgdWludDY0X3QgdGlsaW5nLCBpbnQgZmJfYnBwLAogCiBzdGF0aWMgdW5zaWduZWQgZmJfcGxh bmVfd2lkdGgoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGludCBwbGFuZSkKIHsKLQlpZiAoZmIt PmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyICYmIHBsYW5lID09IDEpCi0JCXJldHVybiBE SVZfUk9VTkRfVVAoZmItPndpZHRoLCAyKTsKLQotCXJldHVybiBmYi0+d2lkdGg7CisJc3dpdGNo IChmYi0+ZHJtX2Zvcm1hdCkgeworCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgorCWNhc2UgRFJNX0ZP Uk1BVF9QMDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDE2OgorCWNhc2UgRFJNX0ZPUk1BVF9OVjEy OgorCQlpZiAocGxhbmUgPT0gMSkKKwkJCXJldHVybiBESVZfUk9VTkRfVVAoZmItPndpZHRoLCAy KTsKKwkJLyogZmFsbC10aHJ1ICovCisJZGVmYXVsdDoKKwkJcmV0dXJuIGZiLT53aWR0aDsKKwl9 CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBmYl9wbGFuZV9icHAoY29uc3Qgc3RydWN0IGlndF9mYiAq ZmIsIGludCBwbGFuZSkKQEAgLTI1NCwxMCArMjc3LDE3IEBAIHN0YXRpYyB1bnNpZ25lZCBmYl9w bGFuZV9icHAoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGludCBwbGFuZSkKIAogc3RhdGljIHVu c2lnbmVkIGZiX3BsYW5lX2hlaWdodChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5l KQogewotCWlmIChmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIgJiYgcGxhbmUgPT0g MSkKLQkJcmV0dXJuIERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCAyKTsKLQotCXJldHVybiBmYi0+ aGVpZ2h0OworCXN3aXRjaCAoZmItPmRybV9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfUDAx MDoKKwljYXNlIERSTV9GT1JNQVRfUDAxMjoKKwljYXNlIERSTV9GT1JNQVRfUDAxNjoKKwljYXNl IERSTV9GT1JNQVRfTlYxMjoKKwkJaWYgKHBsYW5lID09IDEpCisJCQlyZXR1cm4gRElWX1JPVU5E X1VQKGZiLT5oZWlnaHQsIDIpOworCQkvKiBmYWxsLXRocnUgKi8KKwlkZWZhdWx0OgorCQlyZXR1 cm4gZmItPmhlaWdodDsKKwl9CiB9CiAKIHN0YXRpYyBpbnQgZmJfbnVtX3BsYW5lcyhjb25zdCBz dHJ1Y3QgaWd0X2ZiICpmYikKQEAgLTUxNiw2ICs1NDYsMTMgQEAgc3RhdGljIGludCBjcmVhdGVf Ym9fZm9yX2ZiKHN0cnVjdCBpZ3RfZmIgKmZiKQogCQkJCQlmdWxsX3JhbmdlID8gMHgwMDgwMDA4 MCA6IDB4MTA4MDEwODAsCiAJCQkJCWZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5lX2hlaWdodFsw XSAvIHNpemVvZih3Y2hhcl90KSk7CiAJCQkJYnJlYWs7CisJCQljYXNlIERSTV9GT1JNQVRfUDAx MDoKKwkJCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCQkJY2FzZSBEUk1fRk9STUFUX1AwMTY6CisJ CQkJd21lbXNldChwdHIsIGZ1bGxfcmFuZ2UgPyAwIDogMHgxMDAwMTAwMCwKKwkJCQkJZmItPm9m ZnNldHNbMV0gLyBzaXplb2Yod2NoYXJfdCkpOworCQkJCXdtZW1zZXQocHRyICsgZmItPm9mZnNl dHNbMV0sIDB4ODAwMDgwMDAsCisJCQkJCURJVl9ST1VORF9VUChmYi0+aGVpZ2h0LDIpICogZmIt PnN0cmlkZXNbMV0gLyBzaXplb2Yod2NoYXJfdCkpOwogCQkJfQogCQkJZ2VtX211bm1hcChwdHIs IGZiLT5zaXplKTsKIApAQCAtMTQ2Myw2ICsxNTAwLDcgQEAgc3RydWN0IGZiX2NvbnZlcnRfYmxp dF91cGxvYWQgewogfTsKIAogc3RhdGljIHZvaWQgKmlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93 X2J1ZmZlcihpbnQgZmQsCisJCQkJCSAgICAgICB1bnNpZ25lZCBkcm1fZm9ybWF0LAogCQkJCQkg ICAgICAgdW5zaWduZWQgaW50IHdpZHRoLAogCQkJCQkgICAgICAgdW5zaWduZWQgaW50IGhlaWdo dCwKIAkJCQkJICAgICAgIHN0cnVjdCBpZ3RfZmIgKnNoYWRvdykKQEAgLTE0NzIsNyArMTUxMCw3 IEBAIHN0YXRpYyB2b2lkICppZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoaW50IGZk LAogCWlndF9hc3NlcnQoc2hhZG93KTsKIAogCWZiX2luaXQoc2hhZG93LCBmZCwgd2lkdGgsIGhl aWdodCwKLQkJRFJNX0ZPUk1BVF9YUkdCODg4OCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwK KwkJZHJtX2Zvcm1hdCwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSwKIAkJSUdUX0NPTE9SX1lD QkNSX0JUNzA5LCBJR1RfQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRSk7CiAKIAlzaGFkb3ctPnN0 cmlkZXNbMF0gPSBBTElHTih3aWR0aCAqIHNoYWRvdy0+cGxhbmVfYnBwWzBdLCAxNik7CkBAIC0x OTgzLDYgKzIwMjEsMTI0IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRfcmdiMjRfdG9feXV5dihzdHJ1 Y3QgZmJfY29udmVydCAqY3Z0KQogCX0KIH0KIAorc3RhdGljIHZvaWQgcmVhZF9yZ2JmKHN0cnVj dCBpZ3RfdmVjNCAqcmdiLCBjb25zdCBmbG9hdCAqcmdiMjQpCit7CisJcmdiLT5kWzBdID0gcmdi MjRbMF07CisJcmdiLT5kWzFdID0gcmdiMjRbMV07CisJcmdiLT5kWzJdID0gcmdiMjRbMl07CisJ cmdiLT5kWzNdID0gMS4wZjsKK30KKworc3RhdGljIHZvaWQgd3JpdGVfcmdiZihmbG9hdCAqcmdi MjQsIGNvbnN0IHN0cnVjdCBpZ3RfdmVjNCAqcmdiKQoreworCXJnYjI0WzBdID0gcmdiLT5kWzBd OworCXJnYjI0WzFdID0gcmdiLT5kWzFdOworCXJnYjI0WzJdID0gcmdiLT5kWzJdOworfQorCitz dGF0aWMgdm9pZCBjb252ZXJ0X3AwMVhfdG9fZmxvYXQoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkK K3sKKwlpbnQgaSwgajsKKwlzdHJ1Y3QgaWd0X2ZiICpmYl9wMDF4ID0gY3Z0LT5zcmMuZmI7CisJ c3RydWN0IGlndF9mYiAqZmJfZmxvYXQgPSBjdnQtPmRzdC5mYjsKKwljb25zdCB1aW50MTZfdCAq eSwgKnV2OworCXZvaWQgKmJ1ZiA9IGNvbnZlcnRfc3JjX2dldChjdnQpOworCWZsb2F0ICpwdHIg PSBjdnQtPmRzdC5wdHIgKyBmYl9mbG9hdC0+b2Zmc2V0c1swXTsKKwl1bnNpZ25lZCBmbG9hdF9z dHJpZGUgPSBmYl9mbG9hdC0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsKKwl1bnNpZ25lZCBw bGFuYXJfc3RyaWRlID0gZmJfcDAxeC0+c3RyaWRlc1swXSAvIHNpemVvZigqeSk7CisJc3RydWN0 IGlndF9tYXQ0IG0gPSBpZ3RfeWNiY3JfdG9fcmdiX21hdHJpeChmYl9wMDF4LT5kcm1fZm9ybWF0 LAorCQkJCQkJICAgIGZiX2Zsb2F0LT5kcm1fZm9ybWF0LAorCQkJCQkJICAgIGZiX3AwMXgtPmNv bG9yX2VuY29kaW5nLAorCQkJCQkJICAgIGZiX3AwMXgtPmNvbG9yX3JhbmdlKTsKKworCXkgPSBi dWYgKyBmYl9wMDF4LT5vZmZzZXRzWzBdOworCXV2ID0gYnVmICsgZmJfcDAxeC0+b2Zmc2V0c1sx XTsKKworCWZvciAoaSA9IDA7IGkgPCBmYl9wMDF4LT5oZWlnaHQgLyAyOyBpKyspIHsKKwkJZm9y IChqID0gMDsgaiA8IGZiX3AwMXgtPndpZHRoIC8gMjsgaisrKSB7CisJCQkvKiBDb252ZXJ0IDJ4 MiBwaXhlbCBibG9ja3MgKi8KKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXZbNF07CisJCQlzdHJ1Y3Qg aWd0X3ZlYzQgcmdiWzRdOworCisJCQl5dXZbMF0uZFswXSA9IHlbaiAqIDIgKyAwXTsKKwkJCXl1 dlsxXS5kWzBdID0geVtqICogMiArIDFdOworCQkJeXV2WzJdLmRbMF0gPSB5W2ogKiAyICsgMCAr IHBsYW5hcl9zdHJpZGVdOworCQkJeXV2WzNdLmRbMF0gPSB5W2ogKiAyICsgMSArIHBsYW5hcl9z dHJpZGVdOworCisJCQl5dXZbMF0uZFsxXSA9IHl1dlsxXS5kWzFdID0geXV2WzJdLmRbMV0gPSB5 dXZbM10uZFsxXSA9IHV2W2ogKiAyICsgMF07CisJCQl5dXZbMF0uZFsyXSA9IHl1dlsxXS5kWzJd ID0geXV2WzJdLmRbMl0gPSB5dXZbM10uZFsyXSA9IHV2W2ogKiAyICsgMV07CisJCQl5dXZbMF0u ZFszXSA9IHl1dlsxXS5kWzNdID0geXV2WzJdLmRbM10gPSB5dXZbM10uZFszXSA9IDEuMGY7CisK KwkJCXJnYlswXSA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2WzBdKTsKKwkJCXJnYlsx XSA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2WzFdKTsKKwkJCXJnYlsyXSA9IGlndF9t YXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2WzJdKTsKKwkJCXJnYlszXSA9IGlndF9tYXRyaXhfdHJh bnNmb3JtKCZtLCAmeXV2WzNdKTsKKworCQkJd3JpdGVfcmdiZigmcHRyW2ogKiA2ICsgMF0sICZy Z2JbMF0pOworCQkJd3JpdGVfcmdiZigmcHRyW2ogKiA2ICsgM10sICZyZ2JbMV0pOworCQkJd3Jp dGVfcmdiZigmcHRyW2ogKiA2ICsgMCArIGZsb2F0X3N0cmlkZV0sICZyZ2JbMl0pOworCQkJd3Jp dGVfcmdiZigmcHRyW2ogKiA2ICsgMyArIGZsb2F0X3N0cmlkZV0sICZyZ2JbM10pOworCQl9CisK KwkJcHRyICs9IDIgKiBmbG9hdF9zdHJpZGU7CisJCXkgKz0gMiAqIHBsYW5hcl9zdHJpZGU7CisJ CXV2ICs9IHBsYW5hcl9zdHJpZGU7CisJfQorCisJY29udmVydF9zcmNfcHV0KGN2dCwgYnVmKTsK K30KKworc3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b19wMDFYKHN0cnVjdCBmYl9jb252ZXJ0 ICpjdnQpCit7CisJaW50IGksIGo7CisJc3RydWN0IGlndF9mYiAqZmJfZmxvYXQgPSBjdnQtPnNy Yy5mYjsKKwlzdHJ1Y3QgaWd0X2ZiICpmYl9wMDF4ID0gY3Z0LT5kc3QuZmI7CisJdWludDE2X3Qg KnkgPSBjdnQtPmRzdC5wdHIgKyBmYl9wMDF4LT5vZmZzZXRzWzBdOworCXVpbnQxNl90ICp1diA9 IGN2dC0+ZHN0LnB0ciArIGZiX3AwMXgtPm9mZnNldHNbMV07CisJY29uc3QgZmxvYXQgKnB0ciA9 IGN2dC0+c3JjLnB0ciArIGZiX2Zsb2F0LT5vZmZzZXRzWzBdOworCXVuc2lnbmVkIGZsb2F0X3N0 cmlkZSA9IGZiX2Zsb2F0LT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOworCXVuc2lnbmVkIHBs YW5hcl9zdHJpZGUgPSBmYl9wMDF4LT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCp5KTsKKwlzdHJ1Y3Qg aWd0X21hdDQgbSA9IGlndF9yZ2JfdG9feWNiY3JfbWF0cml4KGZiX2Zsb2F0LT5kcm1fZm9ybWF0 LAorCQkJCQkJICAgIGZiX3AwMXgtPmRybV9mb3JtYXQsCisJCQkJCQkgICAgZmJfcDAxeC0+Y29s b3JfZW5jb2RpbmcsCisJCQkJCQkgICAgZmJfcDAxeC0+Y29sb3JfcmFuZ2UpOworCisJZm9yIChp ID0gMDsgaSA8IGZiX3AwMXgtPmhlaWdodCAvIDI7IGkrKykgeworCQlmb3IgKGogPSAwOyBqIDwg ZmJfcDAxeC0+d2lkdGggLyAyOyBqKyspIHsKKwkJCS8qIENvbnZlcnQgMngyIHBpeGVsIGJsb2Nr cyAqLworCQkJc3RydWN0IGlndF92ZWM0IHJnYls0XTsKKwkJCXN0cnVjdCBpZ3RfdmVjNCB5dXZb NF07CisKKwkJCXJlYWRfcmdiZigmcmdiWzBdLCAmcHRyW2ogKiA2ICsgMF0pOworCQkJcmVhZF9y Z2JmKCZyZ2JbMV0sICZwdHJbaiAqIDYgKyAzXSk7CisJCQlyZWFkX3JnYmYoJnJnYlsyXSwgJnB0 cltqICogNiArIDAgKyBmbG9hdF9zdHJpZGVdKTsKKwkJCXJlYWRfcmdiZigmcmdiWzNdLCAmcHRy W2ogKiA2ICsgMyArIGZsb2F0X3N0cmlkZV0pOworCisJCQl5dXZbMF0gPSBpZ3RfbWF0cml4X3Ry YW5zZm9ybSgmbSwgJnJnYlswXSk7CisJCQl5dXZbMV0gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgm bSwgJnJnYlsxXSk7CisJCQl5dXZbMl0gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnJnYlsy XSk7CisJCQl5dXZbM10gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnJnYlszXSk7CisKKwkJ CXlbaiAqIDIgKyAwXSA9IHl1dlswXS5kWzBdOworCQkJeVtqICogMiArIDFdID0geXV2WzFdLmRb MF07CisJCQl5W2ogKiAyICsgMCArIHBsYW5hcl9zdHJpZGVdID0geXV2WzJdLmRbMF07CisJCQl5 W2ogKiAyICsgMSArIHBsYW5hcl9zdHJpZGVdID0geXV2WzNdLmRbMF07CisKKwkJCS8qCisJCQkg KiBXZSBhc3N1bWUgdGhlIE1QRUcyIGNocm9tYSBzaXRpbmcgY29udmVudGlvbiwgd2hlcmUKKwkJ CSAqIHBpeGVsIGNlbnRlciBmb3IgQ2InQ3InIGlzIGJldHdlZW4gdGhlIGxlZnQgdG9wIGFuZAor CQkJICogYm90dG9tIHBpeGVsIGluIGEgMngyIGJsb2NrLCBzbyB0YWtlIHRoZSBhdmVyYWdlLgor CQkJICovCisJCQl1dltqICogMiArIDBdID0gKHl1dlswXS5kWzFdICsgeXV2WzJdLmRbMV0pIC8g Mi4wZjsKKwkJCXV2W2ogKiAyICsgMV0gPSAoeXV2WzBdLmRbMl0gKyB5dXZbMl0uZFsyXSkgLyAy LjBmOworCQl9CisKKwkJcHRyICs9IDIgKiBmbG9hdF9zdHJpZGU7CisJCXkgKz0gMiAqIHBsYW5h cl9zdHJpZGU7CisJCXV2ICs9IHBsYW5hcl9zdHJpZGU7CisJfQorfQorCiBzdGF0aWMgdm9pZCBj b252ZXJ0X3BpeG1hbihzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogewogCXBpeG1hbl9mb3JtYXRf Y29kZV90IHNyY19waXhtYW4gPSBkcm1fZm9ybWF0X3RvX3BpeG1hbihjdnQtPnNyYy5mYi0+ZHJt X2Zvcm1hdCk7CkBAIC0yMDU4LDYgKzIyMTQsMjIgQEAgc3RhdGljIHZvaWQgZmJfY29udmVydChz dHJ1Y3QgZmJfY29udmVydCAqY3Z0KQogCQkJY29udmVydF9yZ2IyNF90b195dXl2KGN2dCk7CiAJ CQlyZXR1cm47CiAJCX0KKwl9IGVsc2UgaWYgKGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0ID09IElH VF9GT1JNQVRfRkxPQVQpIHsKKwkJc3dpdGNoIChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCkgewor CQljYXNlIERSTV9GT1JNQVRfUDAxMDoKKwkJY2FzZSBEUk1fRk9STUFUX1AwMTI6CisJCWNhc2Ug RFJNX0ZPUk1BVF9QMDE2OgorCQkJY29udmVydF9wMDFYX3RvX2Zsb2F0KGN2dCk7CisJCQlyZXR1 cm47CisJCX0KKwl9IGVsc2UgaWYgKGN2dC0+c3JjLmZiLT5kcm1fZm9ybWF0ID09IElHVF9GT1JN QVRfRkxPQVQpIHsKKwkJc3dpdGNoIChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCkgeworCQljYXNl IERSTV9GT1JNQVRfUDAxMDoKKwkJY2FzZSBEUk1fRk9STUFUX1AwMTI6CisJCWNhc2UgRFJNX0ZP Uk1BVF9QMDE2OgorCQkJY29udmVydF9mbG9hdF90b19wMDFYKGN2dCk7CisJCQlyZXR1cm47CisJ CX0KIAl9CiAKIAlpZ3RfYXNzZXJ0X2YoZmFsc2UsCkBAIC0yMDk4LDExICsyMjcwLDE5IEBAIHN0 YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0KGludCBmZCwgc3RydWN0IGln dF9mYiAqZmIpCiB7CiAJc3RydWN0IGZiX2NvbnZlcnRfYmxpdF91cGxvYWQgKmJsaXQgPSBtYWxs b2Moc2l6ZW9mKCpibGl0KSk7CiAJc3RydWN0IGZiX2NvbnZlcnQgY3Z0ID0geyB9OworCWNvbnN0 IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3QgKmYgPSBsb29rdXBfZHJtX2Zvcm1hdChmYi0+ZHJt X2Zvcm1hdCk7CisJdW5zaWduZWQgZHJtX2Zvcm1hdDsKKworCWlmIChmLT5jYWlyb19pZCA9PSBD QUlST19GT1JNQVRfUkdCOTZGIHx8CisJICAgIGYtPmNhaXJvX2lkID09IENBSVJPX0ZPUk1BVF9S R0JBMTI4RikKKwkJZHJtX2Zvcm1hdCA9IElHVF9GT1JNQVRfRkxPQVQ7CisJZWxzZQorCQlkcm1f Zm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4ODsKIAogCWlndF9hc3NlcnQoYmxpdCk7CiAJYmxp dC0+YmFzZS5mZCA9IGZkOwogCWJsaXQtPmJhc2UuZmIgPSBmYjsKLQlibGl0LT5zaGFkb3dfcHRy ID0gaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFkb3dfYnVmZmVyKGZkLAorCWJsaXQtPnNoYWRvd19w dHIgPSBpZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoZmQsIGRybV9mb3JtYXQsCiAJ CQkJCQkJICAgICBmYi0+d2lkdGgsCiAJCQkJCQkJICAgICBmYi0+aGVpZ2h0LAogCQkJCQkJCSAg ICAgJmJsaXQtPnNoYWRvd19mYik7CkBAIC0yMTI5LDcgKzIzMDksNyBAQCBzdGF0aWMgdm9pZCBj cmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQog CiAJZmItPmNhaXJvX3N1cmZhY2UgPQogCQljYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3Jf ZGF0YShibGl0LT5zaGFkb3dfcHRyLAotCQkJCQkJICAgIENBSVJPX0ZPUk1BVF9SR0IyNCwKKwkJ CQkJCSAgICBmLT5jYWlyb19pZCwKIAkJCQkJCSAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCiAJ CQkJCQkgICAgYmxpdC0+c2hhZG93X2ZiLnN0cmlkZXNbMF0pOwogCkBAIC0yNDAwLDYgKzI1ODAs OSBAQCBib29sIGlndF9mb3JtYXRfaXNfeXV2KHVpbnQzMl90IGRybV9mb3JtYXQpCiB7CiAJc3dp dGNoIChkcm1fZm9ybWF0KSB7CiAJY2FzZSBEUk1fRk9STUFUX05WMTI6CisJY2FzZSBEUk1fRk9S TUFUX1AwMTA6CisJY2FzZSBEUk1fRk9STUFUX1AwMTI6CisJY2FzZSBEUk1fRk9STUFUX1AwMTY6 CiAJY2FzZSBEUk1fRk9STUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9STUFUX1lWWVU6CiAJY2FzZSBE Uk1fRk9STUFUX1VZVlk6CmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmggYi9saWIvaWd0X2ZiLmgK aW5kZXggOWYwMjdkZWJhODQyLi44YzY4M2RiNWU5ZWMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZmIu aAorKysgYi9saWIvaWd0X2ZiLmgKQEAgLTM4LDYgKzM4LDEyIEBACiAKICNpbmNsdWRlICJpZ3Rf Y29sb3JfZW5jb2RpbmcuaCIKIAorLyoKKyAqIEludGVybmFsIGZvcm1hdCB0byBkZW5vdGUgYSBi dWZmZXIgY29tcGF0aWJsZSB3aXRoIHBpeG1hbidzCisgKiBmbG9hdGluZyBwb2ludCBmb3JtYXQu IFJhbmdlIFswLTFdLgorICovCisjZGVmaW5lIElHVF9GT1JNQVRfRkxPQVQgZm91cmNjX2NvZGUo J0knLCAnRycsICdGJywgJ3gnKQorCiAvKioKICAqIGlndF9mYl90OgogICogQGZiX2lkOiBLTVMg SUQgb2YgdGhlIGZyYW1lYnVmZmVyCmRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1 aWxkCmluZGV4IGIxN2U2N2VmN2YwNS4uNDI2OWYzNjE4MjNkIDEwMDY0NAotLS0gYS9tZXNvbi5i dWlsZAorKysgYi9tZXNvbi5idWlsZApAQCAtMTQ5LDcgKzE0OSw3IEBAIGVuZGlmCiBidWlsZF9p bmZvICs9ICdXaXRoIGxpYnVud2luZDogJyArIGxpYnVud2luZGluZm8KIAogbGliZHcgPSBkZXBl bmRlbmN5KCdsaWJkdycsIHJlcXVpcmVkIDogdHJ1ZSkKLXBpeG1hbiA9IGRlcGVuZGVuY3koJ3Bp eG1hbi0xJywgcmVxdWlyZWQgOiB0cnVlKQorcGl4bWFuID0gZGVwZW5kZW5jeSgncGl4bWFuLTEn LCB2ZXJzaW9uIDogJz49IDAuMzYnLCByZXF1aXJlZCA6IHRydWUpCiAKIHZhbGdyaW5kID0gbnVs bF9kZXAKIHZhbGdyaW5kaW5mbyA9ICdObycKQEAgLTE2Miw3ICsxNjIsNyBAQCBpZiB3aXRoX3Zh bGdyaW5kICE9ICdmYWxzZScKIGVuZGlmCiBidWlsZF9pbmZvICs9ICdWYWxncmluZCBhbm5vdGF0 aW9uczogJyArIHZhbGdyaW5kaW5mbwogCi1jYWlybyA9IGRlcGVuZGVuY3koJ2NhaXJvJywgdmVy c2lvbiA6ICc+MS4xMi4wJywgcmVxdWlyZWQgOiB0cnVlKQorY2Fpcm8gPSBkZXBlbmRlbmN5KCdj YWlybycsIHZlcnNpb24gOiAnPj0xLjE3LjInLCByZXF1aXJlZCA6IHRydWUpCiBsaWJ1ZGV2ID0g ZGVwZW5kZW5jeSgnbGlidWRldicsIHJlcXVpcmVkIDogdHJ1ZSkKIGdsaWIgPSBkZXBlbmRlbmN5 KCdnbGliLTIuMCcsIHJlcXVpcmVkIDogdHJ1ZSkKIAotLSAKMi4yMC4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK