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 0B1AA6E4CA for ; Mon, 4 Feb 2019 12:46:28 +0000 (UTC) From: Maarten Lankhorst Date: Mon, 4 Feb 2019 13:46:25 +0100 Message-Id: <20190204124625.5364-1-maarten.lankhorst@linux.intel.com> In-Reply-To: <20190201111544.7920-2-maarten.lankhorst@linux.intel.com> References: <20190201111544.7920-2-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] lib/igt_fb: Add support for P01x formats, v2. 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 aW5nLgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4KLS0tCiBpbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaCB8ICAx MCArKwogbGliL2lndF9jb2xvcl9lbmNvZGluZy5jICAgICAgfCAgIDQgKwogbGliL2lndF9mYi5j ICAgICAgICAgICAgICAgICAgfCAyMzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LQogbGliL2lndF9mYi5oICAgICAgICAgICAgICAgICAgfCAgIDYgKwogNCBmaWxlcyBjaGFuZ2Vk LCAyNDMgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0tdWFwaS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL2RybS11YXBpL2RybV9mb3VyY2MuaApp bmRleCA0ZGRmNzU0YmFiMDkuLmM5YTVlNTc4NzAzMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0t dWFwaS9kcm1fZm91cmNjLmgKKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKQEAg LTE5NSw2ICsxOTUsMTYgQEAgZXh0ZXJuICJDIiB7CiAjZGVmaW5lIERSTV9GT1JNQVRfTlYyNAkJ Zm91cmNjX2NvZGUoJ04nLCAnVicsICcyJywgJzQnKSAvKiBub24tc3Vic2FtcGxlZCBDcjpDYiBw bGFuZSAqLwogI2RlZmluZSBEUk1fRk9STUFUX05WNDIJCWZvdXJjY19jb2RlKCdOJywgJ1YnLCAn NCcsICcyJykgLyogbm9uLXN1YnNhbXBsZWQgQ2I6Q3IgcGxhbmUgKi8KIAorLyoKKyAqIDIgcGxh bmUgWUNiQ3IKKyAqIGluZGV4IDAgPSBZIHBsYW5lLCBbMTU6MF0gWSBsaXR0bGUgZW5kaWFuIHdo ZXJlIFB4eHggaW5kaWNhdGUKKyAqIGNvbXBvbmVudCB4eHggbXNiIFkgW3h4eDoxNi14eHhdCisg KiBpbmRleCAxID0gQ3I6Q2IgcGxhbmUsIFszMTowXSBDcjpDYiBsaXR0bGUgZW5kaWFuIFt4eHg6 MTYteHh4Onh4eDoxNi14eHhdCisgKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9QMDEwCQlmb3VyY2Nf Y29kZSgnUCcsICcwJywgJzEnLCAnMCcpIC8qIDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAx MCBiaXQgcGVyIGNoYW5uZWwgKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9QMDEyCQlmb3VyY2NfY29k ZSgnUCcsICcwJywgJzEnLCAnMicpIC8qIDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxMiBi aXQgcGVyIGNoYW5uZWwgKi8KKyNkZWZpbmUgRFJNX0ZPUk1BVF9QMDE2CQlmb3VyY2NfY29kZSgn UCcsICcwJywgJzEnLCAnNicpIC8qIDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxNiBiaXQg cGVyIGNoYW5uZWwgKi8KKwogLyoKICAqIDMgcGxhbmUgWUNiQ3IKICAqIGluZGV4IDA6IFkgcGxh bmUsIFs3OjBdIFkKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYyBiL2xpYi9p Z3RfY29sb3JfZW5jb2RpbmcuYwppbmRleCA0Y2JlMThlMjE3ZTMuLmI3YTEyYTFlMDdmNyAxMDA2 NDQKLS0tIGEvbGliL2lndF9jb2xvcl9lbmNvZGluZy5jCisrKyBiL2xpYi9pZ3RfY29sb3JfZW5j b2RpbmcuYwpAQCAtMTM1LDExICsxMzUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9l bmNvZGluZ19mb3JtYXQgewogCWZsb2F0IG9mc195LCBtYXhfeSwgb2ZzX2NiY3IsIG1pZF9jYmNy LCBtYXhfY2JjcjsKIH0gZm9ybWF0c1tdID0gewogCXsgRFJNX0ZPUk1BVF9YUkdCODg4OCwgMjU1 LmYsIH0sCisJeyBJR1RfRk9STUFUX0ZMT0FULCAxLmYsIH0sCiAJeyBEUk1fRk9STUFUX05WMTIs IDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5mIH0sCiAJeyBEUk1fRk9STUFU X1lVWVYsIDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5mIH0sCiAJeyBEUk1f Rk9STUFUX1lWWVUsIDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5mIH0sCiAJ eyBEUk1fRk9STUFUX1VZVlksIDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5m IH0sCiAJeyBEUk1fRk9STUFUX1ZZVVksIDI1NS5mLCAxNi5mLCAyMzUuZiwgMTYuZiwgMTI4LmYs IDI0MC5mIH0sCisJeyBEUk1fRk9STUFUX1AwMTAsIDY1NDcyLmYsIDQwOTYuZiwgNjAxNjAuZiwg NDA5Ni5mLCAzMjc2OC5mLCA2MTQ0MC5mIH0sCisJeyBEUk1fRk9STUFUX1AwMTIsIDY1NTIwLmYs IDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5mLCAzMjc2OC5mLCA2MTQ0MC5mIH0sCisJeyBEUk1fRk9S TUFUX1AwMTYsIDY1NTM1LmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5mLCAzMjc2OC5mLCA2MTQ0 MC5mIH0sCiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGNvbG9yX2VuY29kaW5nX2Zvcm1hdCAq bG9va3VwX2ZvdXJjYyh1aW50MzJfdCBmb3VyY2MpCmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMg Yi9saWIvaWd0X2ZiLmMKaW5kZXggYTk3MWFlYmIzNmIzLi4zMGU1NWVhYmRmYTggMTAwNjQ0Ci0t LSBhL2xpYi9pZ3RfZmIuYworKysgYi9saWIvaWd0X2ZiLmMKQEAgLTYyLDYgKzYyLDIwIEBACiAK ICNkZWZpbmUgUElYTUFOX2ludmFsaWQJMAogCisjaWYgQ0FJUk9fVkVSU0lPTiA8IENBSVJPX1ZF UlNJT05fRU5DT0RFKDEsIDE3LCAyKQorLyoKKyAqIFdlIG5lZWQgY2Fpcm8gMS4xNy4yIHRvIHVz ZSBIRFIgZm9ybWF0cywgYnV0IHRoZSBvbmx5IHRoaW5nIGFkZGVkIGlzIGEgdmFsdWUKKyAqIHRv IHBpeG1hbl9mb3JtYXRfY29kZV90LgorICoKKyAqIFRvIHByZXZlbnQgZ29pbmcgb3V0c2lkZSB0 aGUgZW51bSwgbWFrZSBwaXhtYW5fZm9ybWF0X2NvZGVfdCBhbiBpbnQgYW5kIGRlZmluZQorICog b3Vyc2VsdmVzLgorICovCisKKyNkZWZpbmUgQ0FJUk9fRk9STUFUX1JHQjk2RiAoNikKKyNkZWZp bmUgQ0FJUk9fRk9STUFUX1JHQkExMjhGICg3KQorI2RlZmluZSBwaXhtYW5fZm9ybWF0X2NvZGVf dCBpbnQKKyNlbmRpZgorCiAvKiBkcm0gZm91cmNjL2NhaXJvIGZvcm1hdCBtYXBzICovCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7CiAJY29uc3QgY2hhciAqbmFtZTsK QEAgLTE1MSw2ICsxNjUsMjIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1 Y3QgewogCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjI0LAogCSAgLm51bV9wbGFuZXMg PSAxLCAucGxhbmVfYnBwID0geyAxNiwgfSwKIAl9LAorCXsgLm5hbWUgPSAiUDAxMCIsIC5kZXB0 aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9QMDEwLAorCSAgLmNhaXJvX2lkID0gQ0FJUk9f Rk9STUFUX1JHQjk2RiwKKwkgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5lX2JwcCA9IHsgMTYsIDMy IH0sCisJfSwKKwl7IC5uYW1lID0gIlAwMTIiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9G T1JNQVRfUDAxMiwKKwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCisJICAubnVt X3BsYW5lcyA9IDIsIC5wbGFuZV9icHAgPSB7IDE2LCAzMiB9LAorCX0sCisJeyAubmFtZSA9ICJQ MDE2IiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTYsCisJICAuY2Fpcm9f aWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAorCSAgLm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBw ID0geyAxNiwgMzIgfSwKKwl9LAorCXsgLm5hbWUgPSAiSUdULUZMT0FUIiwgLmRlcHRoID0gLTEs IC5kcm1faWQgPSBJR1RfRk9STUFUX0ZMT0FULAorCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFU X0lOVkFMSUQsCisJICAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDEyOCB9LAorCX0s CiB9OwogI2RlZmluZSBmb3JfZWFjaF9mb3JtYXQoZikJXAogCWZvciAoZiA9IGZvcm1hdF9kZXNj OyBmIC0gZm9ybWF0X2Rlc2MgPCBBUlJBWV9TSVpFKGZvcm1hdF9kZXNjKTsgZisrKQpAQCAtMjM5 LDEwICsyNjksMTcgQEAgdm9pZCBpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90 IHRpbGluZywgaW50IGZiX2JwcCwKIAogc3RhdGljIHVuc2lnbmVkIGZiX3BsYW5lX3dpZHRoKGNv bnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpCiB7Ci0JaWYgKGZiLT5kcm1fZm9ybWF0 ID09IERSTV9GT1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAxKQotCQlyZXR1cm4gRElWX1JPVU5EX1VQ KGZiLT53aWR0aCwgMik7Ci0KLQlyZXR1cm4gZmItPndpZHRoOworCXN3aXRjaCAoZmItPmRybV9m b3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfUDAxMDoKKwljYXNlIERSTV9GT1JNQVRfUDAxMjoK KwljYXNlIERSTV9GT1JNQVRfUDAxNjoKKwljYXNlIERSTV9GT1JNQVRfTlYxMjoKKwkJaWYgKHBs YW5lID09IDEpCisJCQlyZXR1cm4gRElWX1JPVU5EX1VQKGZiLT53aWR0aCwgMik7CisJCS8qIGZh bGwtdGhydSAqLworCWRlZmF1bHQ6CisJCXJldHVybiBmYi0+d2lkdGg7CisJfQogfQogCiBzdGF0 aWMgdW5zaWduZWQgZmJfcGxhbmVfYnBwKGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxh bmUpCkBAIC0yNTQsMTAgKzI5MSwxNyBAQCBzdGF0aWMgdW5zaWduZWQgZmJfcGxhbmVfYnBwKGNv bnN0IHN0cnVjdCBpZ3RfZmIgKmZiLCBpbnQgcGxhbmUpCiAKIHN0YXRpYyB1bnNpZ25lZCBmYl9w bGFuZV9oZWlnaHQoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGludCBwbGFuZSkKIHsKLQlpZiAo ZmItPmRybV9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyICYmIHBsYW5lID09IDEpCi0JCXJldHVy biBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgMik7Ci0KLQlyZXR1cm4gZmItPmhlaWdodDsKKwlz d2l0Y2ggKGZiLT5kcm1fZm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1AwMTA6CisJY2FzZSBE Uk1fRk9STUFUX1AwMTI6CisJY2FzZSBEUk1fRk9STUFUX1AwMTY6CisJY2FzZSBEUk1fRk9STUFU X05WMTI6CisJCWlmIChwbGFuZSA9PSAxKQorCQkJcmV0dXJuIERJVl9ST1VORF9VUChmYi0+aGVp Z2h0LCAyKTsKKwkJLyogZmFsbC10aHJ1ICovCisJZGVmYXVsdDoKKwkJcmV0dXJuIGZiLT5oZWln aHQ7CisJfQogfQogCiBzdGF0aWMgaW50IGZiX251bV9wbGFuZXMoY29uc3Qgc3RydWN0IGlndF9m YiAqZmIpCkBAIC01MTYsNiArNTYwLDEzIEBAIHN0YXRpYyBpbnQgY3JlYXRlX2JvX2Zvcl9mYihz dHJ1Y3QgaWd0X2ZiICpmYikKIAkJCQkJZnVsbF9yYW5nZSA/IDB4MDA4MDAwODAgOiAweDEwODAx MDgwLAogCQkJCQlmYi0+c3RyaWRlc1swXSAqIGZiLT5wbGFuZV9oZWlnaHRbMF0gLyBzaXplb2Yo d2NoYXJfdCkpOwogCQkJCWJyZWFrOworCQkJY2FzZSBEUk1fRk9STUFUX1AwMTA6CisJCQljYXNl IERSTV9GT1JNQVRfUDAxMjoKKwkJCWNhc2UgRFJNX0ZPUk1BVF9QMDE2OgorCQkJCXdtZW1zZXQo cHRyLCBmdWxsX3JhbmdlID8gMCA6IDB4MTAwMDEwMDAsCisJCQkJCWZiLT5vZmZzZXRzWzFdIC8g c2l6ZW9mKHdjaGFyX3QpKTsKKwkJCQl3bWVtc2V0KHB0ciArIGZiLT5vZmZzZXRzWzFdLCAweDgw MDA4MDAwLAorCQkJCQlESVZfUk9VTkRfVVAoZmItPmhlaWdodCwyKSAqIGZiLT5zdHJpZGVzWzFd IC8gc2l6ZW9mKHdjaGFyX3QpKTsKIAkJCX0KIAkJCWdlbV9tdW5tYXAocHRyLCBmYi0+c2l6ZSk7 CiAKQEAgLTE0NjMsNiArMTUxNCw3IEBAIHN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkIHsK IH07CiAKIHN0YXRpYyB2b2lkICppZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoaW50 IGZkLAorCQkJCQkgICAgICAgdW5zaWduZWQgZHJtX2Zvcm1hdCwKIAkJCQkJICAgICAgIHVuc2ln bmVkIGludCB3aWR0aCwKIAkJCQkJICAgICAgIHVuc2lnbmVkIGludCBoZWlnaHQsCiAJCQkJCSAg ICAgICBzdHJ1Y3QgaWd0X2ZiICpzaGFkb3cpCkBAIC0xNDcyLDcgKzE1MjQsNyBAQCBzdGF0aWMg dm9pZCAqaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFkb3dfYnVmZmVyKGludCBmZCwKIAlpZ3RfYXNz ZXJ0KHNoYWRvdyk7CiAKIAlmYl9pbml0KHNoYWRvdywgZmQsIHdpZHRoLCBoZWlnaHQsCi0JCURS TV9GT1JNQVRfWFJHQjg4ODgsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCisJCWRybV9mb3Jt YXQsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCiAJCUlHVF9DT0xPUl9ZQ0JDUl9CVDcwOSwg SUdUX0NPTE9SX1lDQkNSX0xJTUlURURfUkFOR0UpOwogCiAJc2hhZG93LT5zdHJpZGVzWzBdID0g QUxJR04od2lkdGggKiBzaGFkb3ctPnBsYW5lX2JwcFswXSwgMTYpOwpAQCAtMTk4Myw2ICsyMDM1 LDEyNCBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjI0X3RvX3l1eXYoc3RydWN0IGZiX2NvbnZl cnQgKmN2dCkKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIHJlYWRfcmdiZihzdHJ1Y3QgaWd0X3ZlYzQg KnJnYiwgY29uc3QgZmxvYXQgKnJnYjI0KQoreworCXJnYi0+ZFswXSA9IHJnYjI0WzBdOworCXJn Yi0+ZFsxXSA9IHJnYjI0WzFdOworCXJnYi0+ZFsyXSA9IHJnYjI0WzJdOworCXJnYi0+ZFszXSA9 IDEuMGY7Cit9CisKK3N0YXRpYyB2b2lkIHdyaXRlX3JnYmYoZmxvYXQgKnJnYjI0LCBjb25zdCBz dHJ1Y3QgaWd0X3ZlYzQgKnJnYikKK3sKKwlyZ2IyNFswXSA9IHJnYi0+ZFswXTsKKwlyZ2IyNFsx XSA9IHJnYi0+ZFsxXTsKKwlyZ2IyNFsyXSA9IHJnYi0+ZFsyXTsKK30KKworc3RhdGljIHZvaWQg Y29udmVydF9wMDFYX3RvX2Zsb2F0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCit7CisJaW50IGks IGo7CisJc3RydWN0IGlndF9mYiAqZmJfcDAxeCA9IGN2dC0+c3JjLmZiOworCXN0cnVjdCBpZ3Rf ZmIgKmZiX2Zsb2F0ID0gY3Z0LT5kc3QuZmI7CisJY29uc3QgdWludDE2X3QgKnksICp1djsKKwl2 b2lkICpidWYgPSBjb252ZXJ0X3NyY19nZXQoY3Z0KTsKKwlmbG9hdCAqcHRyID0gY3Z0LT5kc3Qu cHRyICsgZmJfZmxvYXQtPm9mZnNldHNbMF07CisJdW5zaWduZWQgZmxvYXRfc3RyaWRlID0gZmJf ZmxvYXQtPnN0cmlkZXNbMF0gLyBzaXplb2YoKnB0cik7CisJdW5zaWduZWQgcGxhbmFyX3N0cmlk ZSA9IGZiX3AwMXgtPnN0cmlkZXNbMF0gLyBzaXplb2YoKnkpOworCXN0cnVjdCBpZ3RfbWF0NCBt ID0gaWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoZmJfcDAxeC0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAg ICBmYl9mbG9hdC0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAgICBmYl9wMDF4LT5jb2xvcl9lbmNvZGlu ZywKKwkJCQkJCSAgICBmYl9wMDF4LT5jb2xvcl9yYW5nZSk7CisKKwl5ID0gYnVmICsgZmJfcDAx eC0+b2Zmc2V0c1swXTsKKwl1diA9IGJ1ZiArIGZiX3AwMXgtPm9mZnNldHNbMV07CisKKwlmb3Ig KGkgPSAwOyBpIDwgZmJfcDAxeC0+aGVpZ2h0IC8gMjsgaSsrKSB7CisJCWZvciAoaiA9IDA7IGog PCBmYl9wMDF4LT53aWR0aCAvIDI7IGorKykgeworCQkJLyogQ29udmVydCAyeDIgcGl4ZWwgYmxv Y2tzICovCisJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2WzRdOworCQkJc3RydWN0IGlndF92ZWM0IHJn Yls0XTsKKworCQkJeXV2WzBdLmRbMF0gPSB5W2ogKiAyICsgMF07CisJCQl5dXZbMV0uZFswXSA9 IHlbaiAqIDIgKyAxXTsKKwkJCXl1dlsyXS5kWzBdID0geVtqICogMiArIDAgKyBwbGFuYXJfc3Ry aWRlXTsKKwkJCXl1dlszXS5kWzBdID0geVtqICogMiArIDEgKyBwbGFuYXJfc3RyaWRlXTsKKwor CQkJeXV2WzBdLmRbMV0gPSB5dXZbMV0uZFsxXSA9IHl1dlsyXS5kWzFdID0geXV2WzNdLmRbMV0g PSB1dltqICogMiArIDBdOworCQkJeXV2WzBdLmRbMl0gPSB5dXZbMV0uZFsyXSA9IHl1dlsyXS5k WzJdID0geXV2WzNdLmRbMl0gPSB1dltqICogMiArIDFdOworCQkJeXV2WzBdLmRbM10gPSB5dXZb MV0uZFszXSA9IHl1dlsyXS5kWzNdID0geXV2WzNdLmRbM10gPSAxLjBmOworCisJCQlyZ2JbMF0g PSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnl1dlswXSk7CisJCQlyZ2JbMV0gPSBpZ3RfbWF0 cml4X3RyYW5zZm9ybSgmbSwgJnl1dlsxXSk7CisJCQlyZ2JbMl0gPSBpZ3RfbWF0cml4X3RyYW5z Zm9ybSgmbSwgJnl1dlsyXSk7CisJCQlyZ2JbM10gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwg Jnl1dlszXSk7CisKKwkJCXdyaXRlX3JnYmYoJnB0cltqICogNiArIDBdLCAmcmdiWzBdKTsKKwkJ CXdyaXRlX3JnYmYoJnB0cltqICogNiArIDNdLCAmcmdiWzFdKTsKKwkJCXdyaXRlX3JnYmYoJnB0 cltqICogNiArIDAgKyBmbG9hdF9zdHJpZGVdLCAmcmdiWzJdKTsKKwkJCXdyaXRlX3JnYmYoJnB0 cltqICogNiArIDMgKyBmbG9hdF9zdHJpZGVdLCAmcmdiWzNdKTsKKwkJfQorCisJCXB0ciArPSAy ICogZmxvYXRfc3RyaWRlOworCQl5ICs9IDIgKiBwbGFuYXJfc3RyaWRlOworCQl1diArPSBwbGFu YXJfc3RyaWRlOworCX0KKworCWNvbnZlcnRfc3JjX3B1dChjdnQsIGJ1Zik7Cit9CisKK3N0YXRp YyB2b2lkIGNvbnZlcnRfZmxvYXRfdG9fcDAxWChzdHJ1Y3QgZmJfY29udmVydCAqY3Z0KQorewor CWludCBpLCBqOworCXN0cnVjdCBpZ3RfZmIgKmZiX2Zsb2F0ID0gY3Z0LT5zcmMuZmI7CisJc3Ry dWN0IGlndF9mYiAqZmJfcDAxeCA9IGN2dC0+ZHN0LmZiOworCXVpbnQxNl90ICp5ID0gY3Z0LT5k c3QucHRyICsgZmJfcDAxeC0+b2Zmc2V0c1swXTsKKwl1aW50MTZfdCAqdXYgPSBjdnQtPmRzdC5w dHIgKyBmYl9wMDF4LT5vZmZzZXRzWzFdOworCWNvbnN0IGZsb2F0ICpwdHIgPSBjdnQtPnNyYy5w dHIgKyBmYl9mbG9hdC0+b2Zmc2V0c1swXTsKKwl1bnNpZ25lZCBmbG9hdF9zdHJpZGUgPSBmYl9m bG9hdC0+c3RyaWRlc1swXSAvIHNpemVvZigqcHRyKTsKKwl1bnNpZ25lZCBwbGFuYXJfc3RyaWRl ID0gZmJfcDAxeC0+c3RyaWRlc1swXSAvIHNpemVvZigqeSk7CisJc3RydWN0IGlndF9tYXQ0IG0g PSBpZ3RfcmdiX3RvX3ljYmNyX21hdHJpeChmYl9mbG9hdC0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAg ICBmYl9wMDF4LT5kcm1fZm9ybWF0LAorCQkJCQkJICAgIGZiX3AwMXgtPmNvbG9yX2VuY29kaW5n LAorCQkJCQkJICAgIGZiX3AwMXgtPmNvbG9yX3JhbmdlKTsKKworCWZvciAoaSA9IDA7IGkgPCBm Yl9wMDF4LT5oZWlnaHQgLyAyOyBpKyspIHsKKwkJZm9yIChqID0gMDsgaiA8IGZiX3AwMXgtPndp ZHRoIC8gMjsgaisrKSB7CisJCQkvKiBDb252ZXJ0IDJ4MiBwaXhlbCBibG9ja3MgKi8KKwkJCXN0 cnVjdCBpZ3RfdmVjNCByZ2JbNF07CisJCQlzdHJ1Y3QgaWd0X3ZlYzQgeXV2WzRdOworCisJCQly ZWFkX3JnYmYoJnJnYlswXSwgJnB0cltqICogNiArIDBdKTsKKwkJCXJlYWRfcmdiZigmcmdiWzFd LCAmcHRyW2ogKiA2ICsgM10pOworCQkJcmVhZF9yZ2JmKCZyZ2JbMl0sICZwdHJbaiAqIDYgKyAw ICsgZmxvYXRfc3RyaWRlXSk7CisJCQlyZWFkX3JnYmYoJnJnYlszXSwgJnB0cltqICogNiArIDMg KyBmbG9hdF9zdHJpZGVdKTsKKworCQkJeXV2WzBdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0s ICZyZ2JbMF0pOworCQkJeXV2WzFdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbMV0p OworCQkJeXV2WzJdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbMl0pOworCQkJeXV2 WzNdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbM10pOworCisJCQl5W2ogKiAyICsg MF0gPSB5dXZbMF0uZFswXTsKKwkJCXlbaiAqIDIgKyAxXSA9IHl1dlsxXS5kWzBdOworCQkJeVtq ICogMiArIDAgKyBwbGFuYXJfc3RyaWRlXSA9IHl1dlsyXS5kWzBdOworCQkJeVtqICogMiArIDEg KyBwbGFuYXJfc3RyaWRlXSA9IHl1dlszXS5kWzBdOworCisJCQkvKgorCQkJICogV2UgYXNzdW1l IHRoZSBNUEVHMiBjaHJvbWEgc2l0aW5nIGNvbnZlbnRpb24sIHdoZXJlCisJCQkgKiBwaXhlbCBj ZW50ZXIgZm9yIENiJ0NyJyBpcyBiZXR3ZWVuIHRoZSBsZWZ0IHRvcCBhbmQKKwkJCSAqIGJvdHRv bSBwaXhlbCBpbiBhIDJ4MiBibG9jaywgc28gdGFrZSB0aGUgYXZlcmFnZS4KKwkJCSAqLworCQkJ dXZbaiAqIDIgKyAwXSA9ICh5dXZbMF0uZFsxXSArIHl1dlsyXS5kWzFdKSAvIDIuMGY7CisJCQl1 dltqICogMiArIDFdID0gKHl1dlswXS5kWzJdICsgeXV2WzJdLmRbMl0pIC8gMi4wZjsKKwkJfQor CisJCXB0ciArPSAyICogZmxvYXRfc3RyaWRlOworCQl5ICs9IDIgKiBwbGFuYXJfc3RyaWRlOwor CQl1diArPSBwbGFuYXJfc3RyaWRlOworCX0KK30KKwogc3RhdGljIHZvaWQgY29udmVydF9waXht YW4oc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKIHsKIAlwaXhtYW5fZm9ybWF0X2NvZGVfdCBzcmNf cGl4bWFuID0gZHJtX2Zvcm1hdF90b19waXhtYW4oY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpOwpA QCAtMjA1OCw2ICsyMjI4LDIyIEBAIHN0YXRpYyB2b2lkIGZiX2NvbnZlcnQoc3RydWN0IGZiX2Nv bnZlcnQgKmN2dCkKIAkJCWNvbnZlcnRfcmdiMjRfdG9feXV5dihjdnQpOwogCQkJcmV0dXJuOwog CQl9CisJfSBlbHNlIGlmIChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZM T0FUKSB7CisJCXN3aXRjaCAoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQpIHsKKwkJY2FzZSBEUk1f Rk9STUFUX1AwMTA6CisJCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCQljYXNlIERSTV9GT1JNQVRf UDAxNjoKKwkJCWNvbnZlcnRfcDAxWF90b19mbG9hdChjdnQpOworCQkJcmV0dXJuOworCQl9CisJ fSBlbHNlIGlmIChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCA9PSBJR1RfRk9STUFUX0ZMT0FUKSB7 CisJCXN3aXRjaCAoY3Z0LT5kc3QuZmItPmRybV9mb3JtYXQpIHsKKwkJY2FzZSBEUk1fRk9STUFU X1AwMTA6CisJCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCQljYXNlIERSTV9GT1JNQVRfUDAxNjoK KwkJCWNvbnZlcnRfZmxvYXRfdG9fcDAxWChjdnQpOworCQkJcmV0dXJuOworCQl9CiAJfQogCiAJ aWd0X2Fzc2VydF9mKGZhbHNlLApAQCAtMjA5OCwxMSArMjI4NCwxOSBAQCBzdGF0aWMgdm9pZCBj cmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQog ewogCXN0cnVjdCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkICpibGl0ID0gbWFsbG9jKHNpemVvZigq YmxpdCkpOwogCXN0cnVjdCBmYl9jb252ZXJ0IGN2dCA9IHsgfTsKKwljb25zdCBzdHJ1Y3QgZm9y bWF0X2Rlc2Nfc3RydWN0ICpmID0gbG9va3VwX2RybV9mb3JtYXQoZmItPmRybV9mb3JtYXQpOwor CXVuc2lnbmVkIGRybV9mb3JtYXQ7CisKKwlpZiAoZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9STUFU X1JHQjk2RiB8fAorCSAgICBmLT5jYWlyb19pZCA9PSBDQUlST19GT1JNQVRfUkdCQTEyOEYpCisJ CWRybV9mb3JtYXQgPSBJR1RfRk9STUFUX0ZMT0FUOworCWVsc2UKKwkJZHJtX2Zvcm1hdCA9IERS TV9GT1JNQVRfWFJHQjg4ODg7CiAKIAlpZ3RfYXNzZXJ0KGJsaXQpOwogCWJsaXQtPmJhc2UuZmQg PSBmZDsKIAlibGl0LT5iYXNlLmZiID0gZmI7Ci0JYmxpdC0+c2hhZG93X3B0ciA9IGlndF9mYl9j cmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihmZCwKKwlibGl0LT5zaGFkb3dfcHRyID0gaWd0X2Zi X2NyZWF0ZV9jYWlyb19zaGFkb3dfYnVmZmVyKGZkLCBkcm1fZm9ybWF0LAogCQkJCQkJCSAgICAg ZmItPndpZHRoLAogCQkJCQkJCSAgICAgZmItPmhlaWdodCwKIAkJCQkJCQkgICAgICZibGl0LT5z aGFkb3dfZmIpOwpAQCAtMjEyOSw3ICsyMzIzLDcgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJv X3N1cmZhY2VfX2NvbnZlcnQoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAogCWZiLT5jYWly b19zdXJmYWNlID0KIAkJY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYmxpdC0+ c2hhZG93X3B0ciwKLQkJCQkJCSAgICBDQUlST19GT1JNQVRfUkdCMjQsCisJCQkJCQkgICAgZi0+ Y2Fpcm9faWQsCiAJCQkJCQkgICAgZmItPndpZHRoLCBmYi0+aGVpZ2h0LAogCQkJCQkJICAgIGJs aXQtPnNoYWRvd19mYi5zdHJpZGVzWzBdKTsKIApAQCAtMjE5NCw2ICsyMzg4LDIxIEBAIGNhaXJv X3N1cmZhY2VfdCAqaWd0X2dldF9jYWlyb19zdXJmYWNlKGludCBmZCwgc3RydWN0IGlndF9mYiAq ZmIpCiAJCQljcmVhdGVfY2Fpcm9fc3VyZmFjZV9fYmxpdChmZCwgZmIpOwogCQllbHNlCiAJCQlj cmVhdGVfY2Fpcm9fc3VyZmFjZV9fZ3R0KGZkLCBmYik7CisKKwkJaWYgKGYtPmNhaXJvX2lkID09 IENBSVJPX0ZPUk1BVF9SR0I5NkYgfHwKKwkJICAgIGYtPmNhaXJvX2lkID09IENBSVJPX0ZPUk1B VF9SR0JBMTI4RikgeworCQkJY2Fpcm9fc3RhdHVzX3Qgc3RhdHVzID0gY2Fpcm9fc3VyZmFjZV9z dGF0dXMoZmItPmNhaXJvX3N1cmZhY2UpOworCisJCQlpZ3Rfc2tpcF9vbl9mKHN0YXR1cyA9PSBD QUlST19TVEFUVVNfSU5WQUxJRF9GT1JNQVQgJiYKKwkJCQkgICAgICBjYWlyb192ZXJzaW9uKCkg PCBDQUlST19WRVJTSU9OX0VOQ09ERSgxLCAxNywgMiksCisJCQkJICAgICAgIkNhaXJvIHZlcnNp b24gdG9vIG9sZCwgbmVlZCAxLjE3LjIsIGhhdmUgJXNcbiIsCisJCQkJICAgICAgY2Fpcm9fdmVy c2lvbl9zdHJpbmcoKSk7CisKKwkJCWlndF9za2lwX29uX2Yoc3RhdHVzID09IENBSVJPX1NUQVRV U19OT19NRU1PUlkgJiYKKwkJCQkgICAgICBwaXhtYW5fdmVyc2lvbigpIDwgUElYTUFOX1ZFUlNJ T05fRU5DT0RFKDAsIDM2LCAwKSwKKwkJCQkgICAgICAiUGl4bWFuIHZlcnNpb24gdG9vIG9sZCwg bmVlZCAwLjM2LjAsIGhhdmUgJXNcbiIsCisJCQkJICAgICAgcGl4bWFuX3ZlcnNpb25fc3RyaW5n KCkpOworCQl9CiAJfQogCiAJaWd0X2Fzc2VydChjYWlyb19zdXJmYWNlX3N0YXR1cyhmYi0+Y2Fp cm9fc3VyZmFjZSkgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOwpAQCAtMjQwMCw2ICsyNjA5LDkg QEAgYm9vbCBpZ3RfZm9ybWF0X2lzX3l1dih1aW50MzJfdCBkcm1fZm9ybWF0KQogewogCXN3aXRj aCAoZHJtX2Zvcm1hdCkgewogCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgorCWNhc2UgRFJNX0ZPUk1B VF9QMDEwOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogog CWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgogCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgogCWNhc2UgRFJN X0ZPUk1BVF9VWVZZOgpkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5oIGIvbGliL2lndF9mYi5oCmlu ZGV4IDlmMDI3ZGViYTg0Mi4uOGM2ODNkYjVlOWVjIDEwMDY0NAotLS0gYS9saWIvaWd0X2ZiLmgK KysrIGIvbGliL2lndF9mYi5oCkBAIC0zOCw2ICszOCwxMiBAQAogCiAjaW5jbHVkZSAiaWd0X2Nv bG9yX2VuY29kaW5nLmgiCiAKKy8qCisgKiBJbnRlcm5hbCBmb3JtYXQgdG8gZGVub3RlIGEgYnVm ZmVyIGNvbXBhdGlibGUgd2l0aCBwaXhtYW4ncworICogZmxvYXRpbmcgcG9pbnQgZm9ybWF0LiBS YW5nZSBbMC0xXS4KKyAqLworI2RlZmluZSBJR1RfRk9STUFUX0ZMT0FUIGZvdXJjY19jb2RlKCdJ JywgJ0cnLCAnRicsICd4JykKKwogLyoqCiAgKiBpZ3RfZmJfdDoKICAqIEBmYl9pZDogS01TIElE IG9mIHRoZSBmcmFtZWJ1ZmZlcgotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2lndC1kZXYK