From mboxrd@z Thu Jan 1 00:00:00 1970 From: Radhakrishna Sripada Subject: [PATCH v6 08/10] Gen-12 display can decompress surfaces compressed by the media engine. Date: Mon, 28 Oct 2019 13:40:39 -0700 Message-ID: <20191028204041.13507-9-radhakrishna.sripada@intel.com> References: <20191028204041.13507-1-radhakrishna.sripada@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id A4B636EA1C for ; Mon, 28 Oct 2019 20:38:48 +0000 (UTC) In-Reply-To: <20191028204041.13507-1-radhakrishna.sripada@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: nanley.g.chery@intel.com, Lucas De Marchi , dhinakaran.pandiyan@intel.com, ville.syrjala@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ CgpEZXRlY3QgdGhlIG1vZGlmaWVyIGNvcnJlc3BvbmRpbmcgdG8gbWVkaWEgY29tcHJlc3Npb24g dG8gZW5hYmxlCmRpc3BsYXkgZGVjb21wcmVzc2lvbiBmb3IgWVVWIGFuZCB4UkdCIHBhY2tlZCBm b3JtYXRzLiBBIG5ldyBtb2RpZmllciBpcwphZGRlZCBzbyB0aGF0IHRoZSBkcml2ZXIgY2FuIGRp c3Rpbmd1aXNoIGJldHdlZW4gbWVkaWEgYW5kIHJlbmRlcgpjb21wcmVzc2VkIGJ1ZmZlcnMuIFVu bGlrZSByZW5kZXIgZGVjb21wcmVzc2lvbiwgcGxhbmUgNiBhbmQgIHBsYW5lIDcgZG8gbm90CnN1 cHBvcnQgbWVkaWEgZGVjb21wcmVzc2lvbi4KCnYyOiBGaXggY2hlY2twYXRjaCB3YXJuaW5ncyBv biBjb2RlIHN0eWxlIChMdWNhcykKCkZyb20gREs6ClNlcGFyYXRlIG1vZGlmaWVyIGFycmF5IGZv ciBwbGFuZXMgdGhhdCBjYW5ub3QgZGVjb21wcmVzcyBtZWRpYSAoVmlsbGUpCgp2MzogU3VwcG9y dCBwbGFuYXIgZm9ybWF0cwoKQ2M6IE5hbmxleSBHIENoZXJ5IDxuYW5sZXkuZy5jaGVyeUBpbnRl bC5jb20+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t PgpDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IEx1Y2FzIERlIE1hcmNoaSA8bHVjYXMuZGVtYXJjaGlAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8IDIzNyAr KysrKysrKysrKysrLS0tLS0KIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlw ZXMuaCAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJp dGUuYyAgIHwgIDQ0ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAg ICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDIyMCBpbnNlcnRpb25zKCspLCA2NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5jCmluZGV4IDBmMjJjY2M2NjYwZC4uMjBhZDA4OWRhNmVlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTkzNiw2ICsxOTM2LDEwIEBAIGlu dGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGlu dCBjb2xvcl9wbGFuZSkKIAkJaWYgKGNvbG9yX3BsYW5lID09IDEpCiAJCQlyZXR1cm4gMTI4Owog CQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEy X01DX0NDUzoKKwkJaWYgKGNvbG9yX3BsYW5lID09IDMpCisJCQlyZXR1cm4gNjQ7CisJCS8qIGZh bGwgdGhyb3VnaCAqLwogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NT OgogCQlpZiAoY29sb3JfcGxhbmUgPT0gMSkKIAkJCXJldHVybiA2NDsKQEAgLTIyNzgsOCArMjI4 MiwxNiBAQCBzdGF0aWMgdTMyIGludGVsX2FkanVzdF90aWxlX29mZnNldChpbnQgKngsIGludCAq eSwKIAogc3RhdGljIGJvb2wgaXNfc3VyZmFjZV9saW5lYXIodTY0IG1vZGlmaWVyLCBpbnQgY29s b3JfcGxhbmUpCiB7Ci0JcmV0dXJuIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8 fAotCSAgICAgICAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNf Q0NTICYmIGNvbG9yX3BsYW5lID09IDEpOworCXN3aXRjaCAobW9kaWZpZXIpIHsKKwljYXNlIERS TV9GT1JNQVRfTU9EX0xJTkVBUjoKKwkJcmV0dXJuIHRydWU7CisJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJCXJldHVybiBjb2xvcl9wbGFuZSA9PSAxOworCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOgorCQlyZXR1cm4gY29sb3Jf cGxhbmUgPT0gMSB8fCBjb2xvcl9wbGFuZSA9PSAzOworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxz ZTsKKwl9CiB9CiAKIHN0YXRpYyB1MzIgaW50ZWxfYWRqdXN0X2FsaWduZWRfb2Zmc2V0KGludCAq eCwgaW50ICp5LApAQCAtMjQ2Nyw2ICsyNDc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRl bF9mYl9tb2RpZmllcl90b190aWxpbmcodTY0IGZiX21vZGlmaWVyKQogCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQ6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6CiAJY2Fz ZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJY2FzZSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6CiAJCXJldHVybiBJOTE1X1RJTElOR19ZOwogCWRl ZmF1bHQ6CiAJCXJldHVybiBJOTE1X1RJTElOR19OT05FOwpAQCAtMjUxNCw2ICsyNTI3LDEwIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIGdlbjEyX2Njc19mb3JtYXRzW10g PSB7CiAJICAuY3BwID0geyA0LCAxLCB9LCAuaHN1YiA9IDIsIC52c3ViID0gMzIsIC5oYXNfYWxw aGEgPSB0cnVlIH0sCiAJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9BQkdSODg4OCwgLmRlcHRoID0g MzIsIC5udW1fcGxhbmVzID0gMiwKIAkgIC5jcHAgPSB7IDQsIDEsIH0sIC5oc3ViID0gMiwgLnZz dWIgPSAzMiwgLmhhc19hbHBoYSA9IHRydWUgfSwKKwl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1lV WVYsIC5udW1fcGxhbmVzID0gMiwKKwkgIC5jcHAgPSB7IDIsIDEsIH0sIC5oc3ViID0gNCwgLnZz dWIgPSAzMiwgLmlzX3l1diA9IHRydWUgfSwKKwl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX05WMTIs IC5udW1fcGxhbmVzID0gNCwKKwkgIC5jcHAgPSB7IDEsIDEsIDIsIDF9LCAuaHN1YiA9IDIsIC52 c3ViID0gMiwgLmlzX3l1diA9IHRydWUgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2Zvcm1hdF9pbmZvICoKQEAgLTI1NTEsNiArMjU2OCw3IEBAIGludGVsX2dldF9mb3JtYXRfaW5m byhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21kKQogYm9vbCBpc19jY3NfbW9kaWZp ZXIodTY0IG1vZGlmaWVyKQogewogCXJldHVybiBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9HRU4xMl9SQ19DQ1MgfHwKKwkgICAgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRf TU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTIHx8CiAJICAgICAgIG1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0NDUyB8fAogCSAgICAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9N T0RfWWZfVElMRURfQ0NTOwogfQpAQCAtMjYxNCw3ICsyNjMyLDcgQEAgaW50ZWxfZmJfc3RyaWRl X2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNvbG9yX3Bs YW5lKQogCX0KIAogCXRpbGVfd2lkdGggPSBpbnRlbF90aWxlX3dpZHRoX2J5dGVzKGZiLCBjb2xv cl9wbGFuZSk7Ci0JaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpICYmIGNvbG9yX3Bs YW5lID09IDApIHsKKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsKIAkJLyoK IAkJICogRGlzcGxheSBXQSAjMDUzMTogc2tsLGJ4dCxrYmwsZ2xrCiAJCSAqCkBAIC0yNjI0LDcg KzI2NDIsNyBAQCBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCiAJCSAqIHJlcXVpcmUgdGhlIGVudGlyZSBm YiB0byBhY2NvbW1vZGF0ZSB0aGF0IHRvIGF2b2lkCiAJCSAqIHBvdGVudGlhbCBydW50aW1lIGVy cm9ycyBhdCBwbGFuZSBjb25maWd1cmF0aW9uIHRpbWUuCiAJCSAqLwotCQlpZiAoSVNfR0VOKGRl dl9wcml2LCA5KSAmJiBmYi0+d2lkdGggPiAzODQwKQorCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5 KSAmJiBjb2xvcl9wbGFuZSA9PSAwICYmIGZiLT53aWR0aCA+IDM4NDApCiAJCQl0aWxlX3dpZHRo ICo9IDQ7CiAJCS8qCiAJCSAqIFRoZSBtYWluIHN1cmZhY2UgcGl0Y2ggbXVzdCBiZSBwYWRkZWQg dG8gYSBtdWx0aXBsZSBvZiBmb3VyCkBAIC0yNzA0LDI1ICsyNzIyLDcxIEBAIHN0YXRpYyBib29s IGludGVsX3BsYW5lX25lZWRzX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiAJcmV0dXJuIHN0cmlkZSA+IG1heF9zdHJpZGU7CiB9CiAKK3N0YXRpYyB2 b2lkCitpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmcoaW50ICpoc3ViLCBpbnQgKnZzdWIs IGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCit7CisJ aWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1Mp IHsKKwkJc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJCQlpbnQgY3BwWzRdOworCQkJaW50IHZzdWJb NF07CisJCQlpbnQgaHN1Yls0XTsKKwkJfSBtY19jY3Nfc3Vic2FtcGxpbmcgPSB7LmNwcCA9IHsx LCAxLCAyLCAxfSwgLmhzdWIgPSB7MSwgOCwgMiwgMTZ9LCAudnN1YiA9IHsxLCAzMiwgMiwgMzJ9 IH07CisKKwkJKmhzdWIgPSBtY19jY3Nfc3Vic2FtcGxpbmcuaHN1Yltjb2xvcl9wbGFuZV07CisJ CSp2c3ViID0gbWNfY2NzX3N1YnNhbXBsaW5nLnZzdWJbY29sb3JfcGxhbmVdOworCX0gZWxzZSB7 CisJCSpoc3ViID0gZmItPmZvcm1hdC0+aHN1YjsKKwkJKnZzdWIgPSBmYi0+Zm9ybWF0LT52c3Vi OworCX0KK30KKworc3RhdGljIHZvaWQKK2ludGVsX2ZiX3BsYW5lX2RpbXMoaW50ICp3LCBpbnQg KmgsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCit7CisJaW50 IGhzdWIsIHZzdWI7CisKKwlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmcoJmhzdWIsICZ2 c3ViLCBmYiwgY29sb3JfcGxhbmUpOworCSp3ID0gZmItPndpZHRoIC8gaHN1YjsKKwkqaCA9IGZi LT5oZWlnaHQgLyB2c3ViOworfQorCitzdGF0aWMgYm9vbCBpc19jY3NfcGxhbmUodTY0IG1vZGlm aWVyLCBpbnQgY29sb3JfcGxhbmUpCit7CisJaWYgKCFpc19jY3NfbW9kaWZpZXIobW9kaWZpZXIp KQorCQlyZXR1cm4gZmFsc2U7CisJZWxzZSBpZiAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9E X1lfVElMRURfR0VOMTJfTUNfQ0NTKQorCQlyZXR1cm4gY29sb3JfcGxhbmUgPT0gMyB8fCBjb2xv cl9wbGFuZSA9PSAxOworCWVsc2UKKwkJcmV0dXJuIGNvbG9yX3BsYW5lID09IDE7Cit9CisKIHN0 YXRpYyBpbnQKLWludGVsX2ZiX2NoZWNrX2Njc194eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwgaW50IHgsIGludCB5KQoraW50ZWxfZmJfY2hlY2tfY2NzX3h5KHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUsIGludCB4LCBpbnQgeSkKIHsKIAlzdHJ1Y3QgaW50 ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpOwotCWlu dCBoc3ViID0gZmItPmZvcm1hdC0+aHN1YjsKLQlpbnQgdnN1YiA9IGZiLT5mb3JtYXQtPnZzdWI7 CisJaW50IGhzdWIsIHZzdWI7CisJaW50IGhzdWJfbWFpbiwgdnN1Yl9tYWluOwogCWludCB0aWxl X3dpZHRoLCB0aWxlX2hlaWdodDsKIAlpbnQgY2NzX3gsIGNjc195OwogCWludCBtYWluX3gsIG1h aW5feTsKIAotCWludGVsX3RpbGVfZGltcyhmYiwgMSwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdo dCk7CisJaWYgKCFpc19jY3NfcGxhbmUoZmItPm1vZGlmaWVyLCBjb2xvcl9wbGFuZSkpCisJCXJl dHVybiAwOworCisJaW50ZWxfdGlsZV9kaW1zKGZiLCBjb2xvcl9wbGFuZSwgJnRpbGVfd2lkdGgs ICZ0aWxlX2hlaWdodCk7CisJaW50ZWxfZmJfcGxhbmVfZ2V0X3N1YnNhbXBsaW5nKCZoc3ViLCAm dnN1YiwgZmIsIGNvbG9yX3BsYW5lKTsKKwlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmco JmhzdWJfbWFpbiwgJnZzdWJfbWFpbiwgZmIsIGNvbG9yX3BsYW5lIC0gMSk7CisKKwloc3ViIC89 IGhzdWJfbWFpbjsKKwl2c3ViIC89IHZzdWJfbWFpbjsKIAogCXRpbGVfd2lkdGggKj0gaHN1YjsK IAl0aWxlX2hlaWdodCAqPSB2c3ViOwogCiAJY2NzX3ggPSAoeCAqIGhzdWIpICUgdGlsZV93aWR0 aDsKIAljY3NfeSA9ICh5ICogdnN1YikgJSB0aWxlX2hlaWdodDsKLQltYWluX3ggPSBpbnRlbF9m Yi0+bm9ybWFsWzBdLnggJSB0aWxlX3dpZHRoOwotCW1haW5feSA9IGludGVsX2ZiLT5ub3JtYWxb MF0ueSAlIHRpbGVfaGVpZ2h0OworCW1haW5feCA9IGludGVsX2ZiLT5ub3JtYWxbY29sb3JfcGxh bmUgLSAxXS54ICUgdGlsZV93aWR0aDsKKwltYWluX3kgPSBpbnRlbF9mYi0+bm9ybWFsW2NvbG9y X3BsYW5lIC0gMV0ueSAlIHRpbGVfaGVpZ2h0OwogCiAJLyoKIAkgKiBDQ1MgZG9lc24ndCBoYXZl IGl0cyBvd24geC95IG9mZnNldCByZWdpc3Rlciwgc28gdGhlIGludHJhIENDUyB0aWxlCkBAIC0y NzMyLDggKzI3OTYsOCBAQCBpbnRlbF9mYl9jaGVja19jY3NfeHkoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIGludCB4LCBpbnQgeSkKIAkJRFJNX0RFQlVHX0tNUygiQmFkIENDUyB4L3kgKG1h aW4gJWQsJWQgY2NzICVkLCVkKSBmdWxsIChtYWluICVkLCVkIGNjcyAlZCwlZClcbiIsCiAJCQkg ICAgICBtYWluX3gsIG1haW5feSwKIAkJCSAgICAgIGNjc194LCBjY3NfeSwKLQkJCSAgICAgIGlu dGVsX2ZiLT5ub3JtYWxbMF0ueCwKLQkJCSAgICAgIGludGVsX2ZiLT5ub3JtYWxbMF0ueSwKKwkJ CSAgICAgIGludGVsX2ZiLT5ub3JtYWxbY29sb3JfcGxhbmUgLSAxXS54LAorCQkJICAgICAgaW50 ZWxfZmItPm5vcm1hbFtjb2xvcl9wbGFuZSAtIDFdLnksCiAJCQkgICAgICB4LCB5KTsKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJfQpAQCAtMjc2MSw4ICsyODI1LDcgQEAgaW50ZWxfZmlsbF9mYl9pbmZv KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaW50IHJldDsKIAogCQljcHAg PSBmYi0+Zm9ybWF0LT5jcHBbaV07Ci0JCXdpZHRoID0gZHJtX2ZyYW1lYnVmZmVyX3BsYW5lX3dp ZHRoKGZiLT53aWR0aCwgZmIsIGkpOwotCQloZWlnaHQgPSBkcm1fZnJhbWVidWZmZXJfcGxhbmVf aGVpZ2h0KGZiLT5oZWlnaHQsIGZiLCBpKTsKKwkJaW50ZWxfZmJfcGxhbmVfZGltcygmd2lkdGgs ICZoZWlnaHQsIGZiLCBpKTsKIAogCQlyZXQgPSBpbnRlbF9mYl9vZmZzZXRfdG9feHkoJngsICZ5 LCBmYiwgaSk7CiAJCWlmIChyZXQpIHsKQEAgLTI3NzEsMTEgKzI4MzQsOSBAQCBpbnRlbF9maWxs X2ZiX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJcmV0dXJuIHJl dDsKIAkJfQogCi0JCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSAmJiBpID09IDEp IHsKLQkJCXJldCA9IGludGVsX2ZiX2NoZWNrX2Njc194eShmYiwgeCwgeSk7Ci0JCQlpZiAocmV0 KQotCQkJCXJldHVybiByZXQ7Ci0JCX0KKwkJcmV0ID0gaW50ZWxfZmJfY2hlY2tfY2NzX3h5KGZi LCBpLCB4LCB5KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CiAKIAkJLyoKIAkJICogVGhl IGZlbmNlIChpZiB1c2VkKSBpcyBhbGlnbmVkIHRvIHRoZSBzdGFydCBvZiB0aGUgb2JqZWN0CkBA IC0zMzg0LDYgKzM0NDUsNyBAQCBzdGF0aWMgaW50IHNrbF9tYXhfcGxhbmVfd2lkdGgoY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCQlyZXR1cm4gNTEyMDsKIAljYXNlIEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9D Q1M6CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6CiAJCS8qIEZJ WE1FIEFVWCBwbGFuZT8gKi8KIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgogCWNhc2Ug STkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgpAQCAtMzQ0MywxNiArMzUwNSwxOCBAQCBzdGF0aWMg aW50IGljbF9tYXhfcGxhbmVfaGVpZ2h0KHZvaWQpCiB9CiAKIHN0YXRpYyBib29sIHNrbF9jaGVj a19tYWluX2Njc19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlLAotCQkJCQkgICBpbnQgbWFpbl94LCBpbnQgbWFpbl95LCB1MzIgbWFpbl9vZmZzZXQpCisJ CQkJCSAgIGludCBtYWluX3gsIGludCBtYWluX3ksIHUzMiBtYWluX29mZnNldCwKKwkJCQkJICAg aW50IGF1eF9wbGFuZSkKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5iYXNlLmZiOwotCWludCBoc3ViID0gZmItPmZvcm1hdC0+aHN1YjsKLQlpbnQg dnN1YiA9IGZiLT5mb3JtYXQtPnZzdWI7Ci0JaW50IGF1eF94ID0gcGxhbmVfc3RhdGUtPmNvbG9y X3BsYW5lWzFdLng7Ci0JaW50IGF1eF95ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnk7 Ci0JdTMyIGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ub2Zmc2V0Owot CXUzMiBhbGlnbm1lbnQgPSBpbnRlbF9zdXJmX2FsaWdubWVudChmYiwgMSk7Ci0KKwlpbnQgaHN1 YjsKKwlpbnQgdnN1YjsKKwlpbnQgYXV4X3ggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbYXV4 X3BsYW5lXS54OworCWludCBhdXhfeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxh bmVdLnk7CisJdTMyIGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbYXV4X3Bs YW5lXS5vZmZzZXQ7CisJdTMyIGFsaWdubWVudCA9IGludGVsX3N1cmZfYWxpZ25tZW50KGZiLCBh dXhfcGxhbmUpOworCisJaW50ZWxfZmJfcGxhbmVfZ2V0X3N1YnNhbXBsaW5nKCZoc3ViLCAmdnN1 YiwgZmIsIGF1eF9wbGFuZSk7CiAJd2hpbGUgKGF1eF9vZmZzZXQgPj0gbWFpbl9vZmZzZXQgJiYg YXV4X3kgPD0gbWFpbl95KSB7CiAJCWludCB4LCB5OwogCkBAIC0zNDY0LDcgKzM1MjgsNyBAQCBz dGF0aWMgYm9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZQogCiAJCXggPSBhdXhfeCAvIGhzdWI7CiAJCXkgPSBhdXhf eSAvIHZzdWI7Ci0JCWF1eF9vZmZzZXQgPSBpbnRlbF9wbGFuZV9hZGp1c3RfYWxpZ25lZF9vZmZz ZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMSwKKwkJYXV4X29mZnNldCA9IGludGVsX3BsYW5lX2Fk anVzdF9hbGlnbmVkX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRlLCBhdXhfcGxhbmUsCiAJCQkJ CQkJICAgICAgIGF1eF9vZmZzZXQsIGF1eF9vZmZzZXQgLSBhbGlnbm1lbnQpOwogCQlhdXhfeCA9 IHggKiBoc3ViICsgYXV4X3ggJSBoc3ViOwogCQlhdXhfeSA9IHkgKiB2c3ViICsgYXV4X3kgJSB2 c3ViOwpAQCAtMzQ3Myw5ICszNTM3LDkgQEAgc3RhdGljIGJvb2wgc2tsX2NoZWNrX21haW5fY2Nz X2Nvb3JkaW5hdGVzKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUKIAlpZiAo YXV4X3ggIT0gbWFpbl94IHx8IGF1eF95ICE9IG1haW5feSkKIAkJcmV0dXJuIGZhbHNlOwogCi0J cGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldCA9IGF1eF9vZmZzZXQ7Ci0JcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lWzFdLnggPSBhdXhfeDsKLQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxh bmVbMV0ueSA9IGF1eF95OworCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxhbmVdLm9m ZnNldCA9IGF1eF9vZmZzZXQ7CisJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2F1eF9wbGFuZV0u eCA9IGF1eF94OworCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxhbmVdLnkgPSBhdXhf eTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtMzU0OSw3ICszNjEzLDcgQEAgc3RhdGljIGludCBz a2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiAJICogdGhleSBtYXRjaCB3aXRoIHRoZSBtYWluIHN1cmZhY2UgeC95IG9mZnNldHMuCiAJ ICovCiAJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKSB7Ci0JCXdoaWxlICghc2ts X2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4LCB5LCBvZmZzZXQpKSB7 CisJCXdoaWxlICghc2tsX2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4 LCB5LCBvZmZzZXQsIDEpKSB7CiAJCQlpZiAob2Zmc2V0ID09IDApCiAJCQkJYnJlYWs7CiAKQEAg LTM1ODEsNyArMzY0NSw4IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJfYXV4X3N1cmZhY2Uo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCXVuc2lnbmVkIGlu dCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwotCWludCBtYXhfd2lkdGgg PSBza2xfbWF4X3BsYW5lX3dpZHRoKGZiLCAxLCByb3RhdGlvbik7CisJaW50IHV2ID0gaXNfY2Nz X21vZGlmaWVyKGZiLT5tb2RpZmllcikgPyAyIDogMTsKKwlpbnQgbWF4X3dpZHRoID0gc2tsX21h eF9wbGFuZV93aWR0aChmYiwgdXYsIHJvdGF0aW9uKTsKIAlpbnQgbWF4X2hlaWdodCA9IDQwOTY7 CiAJaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7CiAJaW50IHkgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTc7CkBAIC0zNTg5LDggKzM2NTQsOCBAQCBzdGF0aWMg aW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiAJaW50IGggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNl LnNyYykgPj4gMTc7CiAJdTMyIG9mZnNldDsKIAotCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAm eSwgcGxhbmVfc3RhdGUsIDEpOwotCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25l ZF9vZmZzZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMSk7CisJaW50ZWxfYWRkX2ZiX29mZnNldHMo JngsICZ5LCBwbGFuZV9zdGF0ZSwgdXYpOworCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVf YWxpZ25lZF9vZmZzZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgdXYpOwogCiAJLyogRklYTUUgbm90 IHF1aXRlIHN1cmUgaG93L2lmIHRoZXNlIGFwcGx5IHRvIHRoZSBjaHJvbWEgcGxhbmUgKi8KIAlp ZiAodyA+IG1heF93aWR0aCB8fCBoID4gbWF4X2hlaWdodCkgewpAQCAtMzU5OSw5ICszNjY0LDQx IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldCA9IG9mZnNldDsKLQlwbGFuZV9zdGF0ZS0+Y29s b3JfcGxhbmVbMV0ueCA9IHg7Ci0JcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnkgPSB5Owor CWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSkgeworCQlpbnQgYXV4X29mZnNldCA9 IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVszXS5vZmZzZXQ7CisJCWludCBhbGlnbm1lbnQgPSBp bnRlbF9zdXJmX2FsaWdubWVudChmYiwgdXYpOworCisJCWlmIChvZmZzZXQgPiBhdXhfb2Zmc2V0 KSB7CisJCQlpbnQgaHN1YiwgdnN1YjsKKwkJCWludCBtYWluX3ggPSB4LCBtYWluX3kgPSB5Owor CisJCQlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmcoJmhzdWIsICZ2c3ViLCBmYiwgdXYp OworCQkJeCA9IG1haW5feCAvIGhzdWI7CisJCQl5ID0gbWFpbl95IC8gdnN1YjsKKwkJCW9mZnNl dCA9IGludGVsX3BsYW5lX2FkanVzdF9hbGlnbmVkX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRl LCB1diwKKwkJCQkJCQkJICAgb2Zmc2V0LAorCQkJCQkJCQkgICBhdXhfb2Zmc2V0ICYgfihhbGln bm1lbnQgLSAxKSk7CisJCQl4ID0geCAqIGhzdWIgKyBtYWluX3ggJSBoc3ViOworCQkJeSA9IHkg KiB2c3ViICsgbWFpbl95ICUgdnN1YjsKKwkJfQorCisJCXdoaWxlICghc2tsX2NoZWNrX21haW5f Y2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4LCB5LCBvZmZzZXQsIDMpKSB7CisJCQlpZiAo b2Zmc2V0ID09IDApCisJCQkJYnJlYWs7CisKKwkJCW9mZnNldCA9IGludGVsX3BsYW5lX2FkanVz dF9hbGlnbmVkX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRlLCB1diwKKwkJCQkJCQkJICAgb2Zm c2V0LCBvZmZzZXQgLSBhbGlnbm1lbnQpOworCQl9CisKKwkJaWYgKHggIT0gcGxhbmVfc3RhdGUt PmNvbG9yX3BsYW5lWzNdLnggfHwgeSAhPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbM10ueSkg eworCQkJRFJNX0RFQlVHX0tNUygiVW5hYmxlIHRvIGZpbmQgc3VpdGFibGUgZGlzcGxheSBzdXJm YWNlIG9mZnNldCBkdWUgdG8gQ0NTXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQor CisJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW3V2XS5vZmZzZXQgPSBvZmZzZXQ7CisJcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lW3V2XS54ID0geDsKKwlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb dXZdLnkgPSB5OwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zNjExLDE5ICszNzA4LDMwIEBAIHN0YXRp YyBpbnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmJhc2UuZmI7CiAJaW50IHNyY194ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+ IDE2OwogCWludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKLQlpbnQg aHN1YiA9IGZiLT5mb3JtYXQtPmhzdWI7Ci0JaW50IHZzdWIgPSBmYi0+Zm9ybWF0LT52c3ViOwot CWludCB4ID0gc3JjX3ggLyBoc3ViOwotCWludCB5ID0gc3JjX3kgLyB2c3ViOwogCXUzMiBvZmZz ZXQ7CisJaW50IGNjczsKIAotCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVfc3Rh dGUsIDEpOwotCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25lZF9vZmZzZXQoJngs ICZ5LCBwbGFuZV9zdGF0ZSwgMSk7CiAKLQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ub2Zm c2V0ID0gb2Zmc2V0OwotCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS54ID0geCAqIGhzdWIg KyBzcmNfeCAlIGhzdWI7Ci0JcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnkgPSB5ICogdnN1 YiArIHNyY195ICUgdnN1YjsKKwlmb3IgKGNjcyA9IDE7IGNjcyA8IGZiLT5mb3JtYXQtPm51bV9w bGFuZXM7IGNjcyArPSAyKSB7CisJCWludCBoc3ViLCB2c3ViOworCQlpbnQgbWFpbl9oc3ViLCBt YWluX3ZzdWI7CisJCWludCB4LCB5OworCisJCWludGVsX2ZiX3BsYW5lX2dldF9zdWJzYW1wbGlu ZygmaHN1YiwgJnZzdWIsIGZiLCBjY3MpOworCQlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxp bmcoJm1haW5faHN1YiwgJm1haW5fdnN1YiwgZmIsIGNjcyAtIDEpOwogCisJCWhzdWIgLz0gbWFp bl9oc3ViOworCQl2c3ViIC89IG1haW5fdnN1YjsKKwkJeCA9IHNyY194IC8gaHN1YjsKKwkJeSA9 IHNyY195IC8gdnN1YjsKKworCQlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmeCwgJnksIHBsYW5lX3N0 YXRlLCBjY3MpOworCQlvZmZzZXQgPSBpbnRlbF9wbGFuZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0 KCZ4LCAmeSwKKwkJCQkJCQkgICAgcGxhbmVfc3RhdGUsIGNjcyk7CisJCXBsYW5lX3N0YXRlLT5j b2xvcl9wbGFuZVtjY3NdLm9mZnNldCA9IG9mZnNldDsKKwkJcGxhbmVfc3RhdGUtPmNvbG9yX3Bs YW5lW2Njc10ueCA9IHggKiBoc3ViICsgc3JjX3ggJSBoc3ViOworCQlwbGFuZV9zdGF0ZS0+Y29s b3JfcGxhbmVbY2NzXS55ID0geSAqIHZzdWIgKyBzcmNfeSAlIHZzdWI7CisJfQogCXJldHVybiAw OwogfQogCkBAIC0zNjMxLDYgKzM3MzksNyBAQCBpbnQgc2tsX2NoZWNrX3BsYW5lX3N1cmZhY2Uo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCWludCByZXQ7CisJ Ym9vbCBuZWVkc19hdXggPSBmYWxzZTsKIAogCXJldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfZ3R0 KHBsYW5lX3N0YXRlKTsKIAlpZiAocmV0KQpAQCAtMzY0MCwyMSArMzc0OSwzMSBAQCBpbnQgc2ts X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKIAkJcmV0dXJuIDA7CiAKIAkvKgotCSAqIEhhbmRsZSB0aGUgQVVYIHN1cmZhY2UgZmlyc3Qg c2luY2UKLQkgKiB0aGUgbWFpbiBzdXJmYWNlIHNldHVwIGRlcGVuZHMgb24gaXQuCisJICogSGFu ZGxlIHRoZSBBVVggc3VyZmFjZSBmaXJzdCBzaW5jZSB0aGUgbWFpbiBzdXJmYWNlIHNldHVwIGRl cGVuZHMgb24KKwkgKiBpdC4KIAkgKi8KLQlpZiAoZHJtX2Zvcm1hdF9pbmZvX2lzX3l1dl9zZW1p cGxhbmFyKGZiLT5mb3JtYXQpKSB7Ci0JCXJldCA9IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNl KHBsYW5lX3N0YXRlKTsKKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsKKwkJ bmVlZHNfYXV4ID0gdHJ1ZTsKKwkJcmV0ID0gc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShwbGFu ZV9zdGF0ZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwotCX0gZWxzZSBpZiAoaXNfY2Nz X21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsKLQkJcmV0ID0gc2tsX2NoZWNrX2Njc19hdXhfc3Vy ZmFjZShwbGFuZV9zdGF0ZSk7CisJfQorCisJaWYgKGRybV9mb3JtYXRfaW5mb19pc195dXZfc2Vt aXBsYW5hcihmYi0+Zm9ybWF0KSkgeworCQluZWVkc19hdXggPSB0cnVlOworCQlyZXQgPSBza2xf Y2hlY2tfbnYxMl9hdXhfc3VyZmFjZShwbGFuZV9zdGF0ZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1 cm4gcmV0OwotCX0gZWxzZSB7Ci0JCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS5vZmZzZXQg PSB+MHhmZmY7Ci0JCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS54ID0gMDsKLQkJcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lWzFdLnkgPSAwOworCX0KKworCWlmICghbmVlZHNfYXV4KSB7CisJ CWludCBpOworCisJCWZvciAoaSA9IDE7IGkgPCBmYi0+Zm9ybWF0LT5udW1fcGxhbmVzOyBpKysp IHsKKwkJCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtpXS5vZmZzZXQgPSB+MHhmZmY7CisJCQlw bGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbaV0ueCA9IDA7CisJCQlwbGFuZV9zdGF0ZS0+Y29sb3Jf cGxhbmVbaV0ueSA9IDA7CisJCX0KIAl9CiAKIAlyZXQgPSBza2xfY2hlY2tfbWFpbl9zdXJmYWNl KHBsYW5lX3N0YXRlKTsKQEAgLTQyMjcsNiArNDM0Niw4IEBAIHN0YXRpYyB1MzIgc2tsX3BsYW5l X2N0bF90aWxpbmcodTY0IGZiX21vZGlmaWVyKQogCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1kg fAogCQkgICAgICAgUExBTkVfQ1RMX1JFTkRFUl9ERUNPTVBSRVNTSU9OX0VOQUJMRSB8CiAJCSAg ICAgICBQTEFORV9DVExfQ0xFQVJfQ09MT1JfRElTQUJMRTsKKwljYXNlIEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEX0dFTjEyX01DX0NDUzoKKwkJcmV0dXJuIFBMQU5FX0NUTF9USUxFRF9ZIHwgUExB TkVfQ1RMX01FRElBX0RFQ09NUFJFU1NJT05fRU5BQkxFOwogCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEOgogCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1lGOwogCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lmX1RJTEVEX0NDUzoKQEAgLTEwMDU2LDYgKzEwMTc3LDggQEAgc2t5bGFrZV9nZXRf aW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQlmYi0+bW9k aWZpZXIgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8KIAkJCQlJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9HRU4xMl9SQ19DQ1MgOgogCQkJCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzsK KwkJZWxzZSBpZiAodmFsICYgUExBTkVfQ1RMX01FRElBX0RFQ09NUFJFU1NJT05fRU5BQkxFKQor CQkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOwog CQllbHNlCiAJCQlmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDsKIAkJYnJl YWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90 eXBlcy5oCmluZGV4IDQwMTg0ZTgyM2M4NC4uZTk4ZjIxMjY4MmY2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaApAQCAtNTM4LDcg KzUzOCw3IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7CiAJCSAqLwogCQl1MzIgc3RyaWRl OwogCQlpbnQgeCwgeTsKLQl9IGNvbG9yX3BsYW5lWzJdOworCX0gY29sb3JfcGxhbmVbNF07CiAK IAkvKiBwbGFuZSBjb250cm9sIHJlZ2lzdGVyICovCiAJdTMyIGN0bDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCmluZGV4IGI2NDk0NjQzMTgzZC4uYTUwMThm ZmZhOGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nw cml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMK QEAgLTIxMTQsNyArMjExNCw4IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2ZiKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCSAgICAgZmItPm1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCB8fAogCSAgICAgZmItPm1vZGlmaWVyID09IEk5 MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAogCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVf Rk9STUFUX01PRF9ZZl9USUxFRF9DQ1MgfHwKLQkgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1MpKSB7CisJICAgICBmYi0+bW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTIHx8CisJICAgICBmYi0+bW9kaWZp ZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTKSkgewogCQlEUk1fREVC VUdfS01TKCJZL1lmIHRpbGluZyBub3Qgc3VwcG9ydGVkIGluIElGLUlEIG1vZGVcbiIpOwogCQly ZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC0yNTUwLDcgKzI1NTEsMTYgQEAgc3RhdGljIGNvbnN0IHU2 NCBza2xfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3NbXSA9IHsKIAlEUk1fRk9STUFUX01PRF9J TlZBTElECiB9OwogCi1zdGF0aWMgY29uc3QgdTY0IGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2RpZmll cnNfY2NzW10gPSB7CitzdGF0aWMgY29uc3QgdTY0IGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2RpZmll cnNfbWNfY2NzW10gPSB7CisJSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTLAor CUk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUywKKwlJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRCwKKwlJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwKKwlEUk1fRk9STUFUX01PRF9MSU5F QVIsCisJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBnZW4x Ml9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX3JjX2Njc1tdID0gewogCUk5MTVfRk9STUFUX01PRF9Z X1RJTEVEX0dFTjEyX1JDX0NDUywKIAlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCwKIAlJOTE1X0ZP Uk1BVF9NT0RfWF9USUxFRCwKQEAgLTI3MDgsMTAgKzI3MTgsMjEgQEAgc3RhdGljIGJvb2wgc2ts X3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKIAl9 CiB9CiAKK3N0YXRpYyBib29sIGdlbjEyX3BsYW5lX3N1cHBvcnRzX21jX2NjcyhlbnVtIHBsYW5l X2lkIHBsYW5lX2lkKQoreworCXJldHVybiBwbGFuZV9pZCA8IFBMQU5FX1NQUklURTQ7Cit9CisK IHN0YXRpYyBib29sIGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1f cGxhbmUgKl9wbGFuZSwKIAkJCQkJICAgICB1MzIgZm9ybWF0LCB1NjQgbW9kaWZpZXIpCiB7CisJ c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKF9wbGFuZSk7CisKIAlz d2l0Y2ggKG1vZGlmaWVyKSB7CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9N Q19DQ1M6CisJCWlmICghZ2VuMTJfcGxhbmVfc3VwcG9ydHNfbWNfY2NzKHBsYW5lLT5pZCkpCisJ CQlyZXR1cm4gZmFsc2U7CisJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2UgRFJNX0ZPUk1BVF9N T0RfTElORUFSOgogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJY2FzZSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRDoKQEAgLTI3MjksMTQgKzI3NTAsMTcgQEAgc3RhdGljIGJvb2wgZ2Vu MTJfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAog CQlpZiAoaXNfY2NzX21vZGlmaWVyKG1vZGlmaWVyKSkKIAkJCXJldHVybiB0cnVlOwogCQkvKiBm YWxsIHRocm91Z2ggKi8KLQljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgotCWNhc2UgRFJNX0ZPUk1B VF9YUkdCMjEwMTAxMDoKLQljYXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6CiAJY2FzZSBEUk1f Rk9STUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9STUFUX1lWWVU6CiAJY2FzZSBEUk1fRk9STUFUX1VZ Vlk6CiAJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CisJCWlmIChtb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1MpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJLyogZmFsbCB0 aHJvdWdoICovCiAJY2FzZSBEUk1fRk9STUFUX05WMTI6CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2 NToKKwljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX1hCR1Iy MTAxMDEwOgogCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgogCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgog CWNhc2UgRFJNX0ZPUk1BVF9QMDE2OgpAQCAtMjg3Myw2ICsyODk3LDE0IEBAIHN0YXRpYyBjb25z dCB1MzIgKmljbF9nZXRfcGxhbmVfZm9ybWF0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJfQogfQogCitzdGF0aWMgY29uc3QgdTY0ICpnZW4xMl9nZXRfcGxhbmVfbW9kaWZp ZXJzKGVudW0gcGxhbmVfaWQgcGxhbmVfaWQpCit7CisJaWYgKGdlbjEyX3BsYW5lX3N1cHBvcnRz X21jX2NjcyhwbGFuZV9pZCkpCisJCXJldHVybiBnZW4xMl9wbGFuZV9mb3JtYXRfbW9kaWZpZXJz X21jX2NjczsKKwllbHNlCisJCXJldHVybiBnZW4xMl9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX3Jj X2NjczsKK30KKwogc3RhdGljIGJvb2wgc2tsX3BsYW5lX2hhc19jY3Moc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgZW51bSBwaXBlIHBpcGUsIGVudW0gcGxhbmVf aWQgcGxhbmVfaWQpCiB7CkBAIC0yOTQwLDcgKzI5NzIsNyBAQCBza2xfdW5pdmVyc2FsX3BsYW5l X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlwbGFuZS0+aGFz X2NjcyA9IHNrbF9wbGFuZV9oYXNfY2NzKGRldl9wcml2LCBwaXBlLCBwbGFuZV9pZCk7CiAJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsKLQkJbW9kaWZpZXJzID0gZ2VuMTJfcGxhbmVf Zm9ybWF0X21vZGlmaWVyc19jY3M7CisJCW1vZGlmaWVycyA9IGdlbjEyX2dldF9wbGFuZV9tb2Rp ZmllcnMocGxhbmVfaWQpOwogCQlwbGFuZV9mdW5jcyA9ICZnZW4xMl9wbGFuZV9mdW5jczsKIAl9 IGVsc2UgewogCQlpZiAocGxhbmUtPmhhc19jY3MpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRl eCA0OWZlNGYwZGYyNGYuLjc1Y2NjZDQ5OGI0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBA IC02NzIwLDYgKzY3MjAsNyBAQCBlbnVtIHsKICNkZWZpbmUgICBQTEFORV9DVExfVElMRURfWQkJ CSg0IDw8IDEwKQogI2RlZmluZSAgIFBMQU5FX0NUTF9USUxFRF9ZRgkJCSg1IDw8IDEwKQogI2Rl ZmluZSAgIFBMQU5FX0NUTF9GTElQX0hPUklaT05UQUwJCSgxIDw8IDgpCisjZGVmaW5lICAgUExB TkVfQ1RMX01FRElBX0RFQ09NUFJFU1NJT05fRU5BQkxFCSgxIDw8IDQpIC8qIFRHTCsgKi8KICNk ZWZpbmUgICBQTEFORV9DVExfQUxQSEFfTUFTSwkJCSgweDMgPDwgNCkgLyogUHJlLUdMSyAqLwog I2RlZmluZSAgIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFCQkoMCA8PCA0KQogI2RlZmluZSAgIFBM QU5FX0NUTF9BTFBIQV9TV19QUkVNVUxUSVBMWQkoMiA8PCA0KQotLSAKMi4yMC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3266ECA9EC0 for ; Mon, 28 Oct 2019 20:38:53 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 102FE21721 for ; Mon, 28 Oct 2019 20:38:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 102FE21721 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 69C706EA1B; Mon, 28 Oct 2019 20:38:52 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id A4B636EA1C for ; Mon, 28 Oct 2019 20:38:48 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Oct 2019 13:38:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,241,1569308400"; d="scan'208";a="202622131" Received: from invictus.jf.intel.com ([10.54.75.159]) by orsmga003.jf.intel.com with ESMTP; 28 Oct 2019 13:38:46 -0700 From: Radhakrishna Sripada To: intel-gfx@lists.freedesktop.org Date: Mon, 28 Oct 2019 13:40:39 -0700 Message-Id: <20191028204041.13507-9-radhakrishna.sripada@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191028204041.13507-1-radhakrishna.sripada@intel.com> References: <20191028204041.13507-1-radhakrishna.sripada@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v6 08/10] Gen-12 display can decompress surfaces compressed by the media engine. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: nanley.g.chery@intel.com, Lucas De Marchi , dhinakaran.pandiyan@intel.com, ville.syrjala@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191028204039.ToWZiL3hndcls4YTXdwBpPKg1WpQhYjz4YpvtP-KNbY@z> RnJvbTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ CgpEZXRlY3QgdGhlIG1vZGlmaWVyIGNvcnJlc3BvbmRpbmcgdG8gbWVkaWEgY29tcHJlc3Npb24g dG8gZW5hYmxlCmRpc3BsYXkgZGVjb21wcmVzc2lvbiBmb3IgWVVWIGFuZCB4UkdCIHBhY2tlZCBm b3JtYXRzLiBBIG5ldyBtb2RpZmllciBpcwphZGRlZCBzbyB0aGF0IHRoZSBkcml2ZXIgY2FuIGRp c3Rpbmd1aXNoIGJldHdlZW4gbWVkaWEgYW5kIHJlbmRlcgpjb21wcmVzc2VkIGJ1ZmZlcnMuIFVu bGlrZSByZW5kZXIgZGVjb21wcmVzc2lvbiwgcGxhbmUgNiBhbmQgIHBsYW5lIDcgZG8gbm90CnN1 cHBvcnQgbWVkaWEgZGVjb21wcmVzc2lvbi4KCnYyOiBGaXggY2hlY2twYXRjaCB3YXJuaW5ncyBv biBjb2RlIHN0eWxlIChMdWNhcykKCkZyb20gREs6ClNlcGFyYXRlIG1vZGlmaWVyIGFycmF5IGZv ciBwbGFuZXMgdGhhdCBjYW5ub3QgZGVjb21wcmVzcyBtZWRpYSAoVmlsbGUpCgp2MzogU3VwcG9y dCBwbGFuYXIgZm9ybWF0cwoKQ2M6IE5hbmxleSBHIENoZXJ5IDxuYW5sZXkuZy5jaGVyeUBpbnRl bC5jb20+CkNjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t PgpDYzogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IEx1Y2FzIERlIE1hcmNoaSA8bHVjYXMuZGVtYXJjaGlAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8IDIzNyAr KysrKysrKysrKysrLS0tLS0KIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlw ZXMuaCAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJp dGUuYyAgIHwgIDQ0ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAg ICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDIyMCBpbnNlcnRpb25zKCspLCA2NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eS5jCmluZGV4IDBmMjJjY2M2NjYwZC4uMjBhZDA4OWRhNmVlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTkzNiw2ICsxOTM2LDEwIEBAIGlu dGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGlu dCBjb2xvcl9wbGFuZSkKIAkJaWYgKGNvbG9yX3BsYW5lID09IDEpCiAJCQlyZXR1cm4gMTI4Owog CQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEy X01DX0NDUzoKKwkJaWYgKGNvbG9yX3BsYW5lID09IDMpCisJCQlyZXR1cm4gNjQ7CisJCS8qIGZh bGwgdGhyb3VnaCAqLwogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NT OgogCQlpZiAoY29sb3JfcGxhbmUgPT0gMSkKIAkJCXJldHVybiA2NDsKQEAgLTIyNzgsOCArMjI4 MiwxNiBAQCBzdGF0aWMgdTMyIGludGVsX2FkanVzdF90aWxlX29mZnNldChpbnQgKngsIGludCAq eSwKIAogc3RhdGljIGJvb2wgaXNfc3VyZmFjZV9saW5lYXIodTY0IG1vZGlmaWVyLCBpbnQgY29s b3JfcGxhbmUpCiB7Ci0JcmV0dXJuIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8 fAotCSAgICAgICAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNf Q0NTICYmIGNvbG9yX3BsYW5lID09IDEpOworCXN3aXRjaCAobW9kaWZpZXIpIHsKKwljYXNlIERS TV9GT1JNQVRfTU9EX0xJTkVBUjoKKwkJcmV0dXJuIHRydWU7CisJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJCXJldHVybiBjb2xvcl9wbGFuZSA9PSAxOworCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOgorCQlyZXR1cm4gY29sb3Jf cGxhbmUgPT0gMSB8fCBjb2xvcl9wbGFuZSA9PSAzOworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxz ZTsKKwl9CiB9CiAKIHN0YXRpYyB1MzIgaW50ZWxfYWRqdXN0X2FsaWduZWRfb2Zmc2V0KGludCAq eCwgaW50ICp5LApAQCAtMjQ2Nyw2ICsyNDc5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRl bF9mYl9tb2RpZmllcl90b190aWxpbmcodTY0IGZiX21vZGlmaWVyKQogCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQ6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6CiAJY2Fz ZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJY2FzZSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6CiAJCXJldHVybiBJOTE1X1RJTElOR19ZOwogCWRl ZmF1bHQ6CiAJCXJldHVybiBJOTE1X1RJTElOR19OT05FOwpAQCAtMjUxNCw2ICsyNTI3LDEwIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIGdlbjEyX2Njc19mb3JtYXRzW10g PSB7CiAJICAuY3BwID0geyA0LCAxLCB9LCAuaHN1YiA9IDIsIC52c3ViID0gMzIsIC5oYXNfYWxw aGEgPSB0cnVlIH0sCiAJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9BQkdSODg4OCwgLmRlcHRoID0g MzIsIC5udW1fcGxhbmVzID0gMiwKIAkgIC5jcHAgPSB7IDQsIDEsIH0sIC5oc3ViID0gMiwgLnZz dWIgPSAzMiwgLmhhc19hbHBoYSA9IHRydWUgfSwKKwl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1lV WVYsIC5udW1fcGxhbmVzID0gMiwKKwkgIC5jcHAgPSB7IDIsIDEsIH0sIC5oc3ViID0gNCwgLnZz dWIgPSAzMiwgLmlzX3l1diA9IHRydWUgfSwKKwl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX05WMTIs IC5udW1fcGxhbmVzID0gNCwKKwkgIC5jcHAgPSB7IDEsIDEsIDIsIDF9LCAuaHN1YiA9IDIsIC52 c3ViID0gMiwgLmlzX3l1diA9IHRydWUgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2Zvcm1hdF9pbmZvICoKQEAgLTI1NTEsNiArMjU2OCw3IEBAIGludGVsX2dldF9mb3JtYXRfaW5m byhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21kKQogYm9vbCBpc19jY3NfbW9kaWZp ZXIodTY0IG1vZGlmaWVyKQogewogCXJldHVybiBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9HRU4xMl9SQ19DQ1MgfHwKKwkgICAgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRf TU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTIHx8CiAJICAgICAgIG1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0NDUyB8fAogCSAgICAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9N T0RfWWZfVElMRURfQ0NTOwogfQpAQCAtMjYxNCw3ICsyNjMyLDcgQEAgaW50ZWxfZmJfc3RyaWRl X2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNvbG9yX3Bs YW5lKQogCX0KIAogCXRpbGVfd2lkdGggPSBpbnRlbF90aWxlX3dpZHRoX2J5dGVzKGZiLCBjb2xv cl9wbGFuZSk7Ci0JaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpICYmIGNvbG9yX3Bs YW5lID09IDApIHsKKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsKIAkJLyoK IAkJICogRGlzcGxheSBXQSAjMDUzMTogc2tsLGJ4dCxrYmwsZ2xrCiAJCSAqCkBAIC0yNjI0LDcg KzI2NDIsNyBAQCBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCiAJCSAqIHJlcXVpcmUgdGhlIGVudGlyZSBm YiB0byBhY2NvbW1vZGF0ZSB0aGF0IHRvIGF2b2lkCiAJCSAqIHBvdGVudGlhbCBydW50aW1lIGVy cm9ycyBhdCBwbGFuZSBjb25maWd1cmF0aW9uIHRpbWUuCiAJCSAqLwotCQlpZiAoSVNfR0VOKGRl dl9wcml2LCA5KSAmJiBmYi0+d2lkdGggPiAzODQwKQorCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5 KSAmJiBjb2xvcl9wbGFuZSA9PSAwICYmIGZiLT53aWR0aCA+IDM4NDApCiAJCQl0aWxlX3dpZHRo ICo9IDQ7CiAJCS8qCiAJCSAqIFRoZSBtYWluIHN1cmZhY2UgcGl0Y2ggbXVzdCBiZSBwYWRkZWQg dG8gYSBtdWx0aXBsZSBvZiBmb3VyCkBAIC0yNzA0LDI1ICsyNzIyLDcxIEBAIHN0YXRpYyBib29s IGludGVsX3BsYW5lX25lZWRzX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiAJcmV0dXJuIHN0cmlkZSA+IG1heF9zdHJpZGU7CiB9CiAKK3N0YXRpYyB2 b2lkCitpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmcoaW50ICpoc3ViLCBpbnQgKnZzdWIs IGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCit7CisJ aWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1Mp IHsKKwkJc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJCQlpbnQgY3BwWzRdOworCQkJaW50IHZzdWJb NF07CisJCQlpbnQgaHN1Yls0XTsKKwkJfSBtY19jY3Nfc3Vic2FtcGxpbmcgPSB7LmNwcCA9IHsx LCAxLCAyLCAxfSwgLmhzdWIgPSB7MSwgOCwgMiwgMTZ9LCAudnN1YiA9IHsxLCAzMiwgMiwgMzJ9 IH07CisKKwkJKmhzdWIgPSBtY19jY3Nfc3Vic2FtcGxpbmcuaHN1Yltjb2xvcl9wbGFuZV07CisJ CSp2c3ViID0gbWNfY2NzX3N1YnNhbXBsaW5nLnZzdWJbY29sb3JfcGxhbmVdOworCX0gZWxzZSB7 CisJCSpoc3ViID0gZmItPmZvcm1hdC0+aHN1YjsKKwkJKnZzdWIgPSBmYi0+Zm9ybWF0LT52c3Vi OworCX0KK30KKworc3RhdGljIHZvaWQKK2ludGVsX2ZiX3BsYW5lX2RpbXMoaW50ICp3LCBpbnQg KmgsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCit7CisJaW50 IGhzdWIsIHZzdWI7CisKKwlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmcoJmhzdWIsICZ2 c3ViLCBmYiwgY29sb3JfcGxhbmUpOworCSp3ID0gZmItPndpZHRoIC8gaHN1YjsKKwkqaCA9IGZi LT5oZWlnaHQgLyB2c3ViOworfQorCitzdGF0aWMgYm9vbCBpc19jY3NfcGxhbmUodTY0IG1vZGlm aWVyLCBpbnQgY29sb3JfcGxhbmUpCit7CisJaWYgKCFpc19jY3NfbW9kaWZpZXIobW9kaWZpZXIp KQorCQlyZXR1cm4gZmFsc2U7CisJZWxzZSBpZiAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9E X1lfVElMRURfR0VOMTJfTUNfQ0NTKQorCQlyZXR1cm4gY29sb3JfcGxhbmUgPT0gMyB8fCBjb2xv cl9wbGFuZSA9PSAxOworCWVsc2UKKwkJcmV0dXJuIGNvbG9yX3BsYW5lID09IDE7Cit9CisKIHN0 YXRpYyBpbnQKLWludGVsX2ZiX2NoZWNrX2Njc194eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwgaW50IHgsIGludCB5KQoraW50ZWxfZmJfY2hlY2tfY2NzX3h5KHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUsIGludCB4LCBpbnQgeSkKIHsKIAlzdHJ1Y3QgaW50 ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpOwotCWlu dCBoc3ViID0gZmItPmZvcm1hdC0+aHN1YjsKLQlpbnQgdnN1YiA9IGZiLT5mb3JtYXQtPnZzdWI7 CisJaW50IGhzdWIsIHZzdWI7CisJaW50IGhzdWJfbWFpbiwgdnN1Yl9tYWluOwogCWludCB0aWxl X3dpZHRoLCB0aWxlX2hlaWdodDsKIAlpbnQgY2NzX3gsIGNjc195OwogCWludCBtYWluX3gsIG1h aW5feTsKIAotCWludGVsX3RpbGVfZGltcyhmYiwgMSwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdo dCk7CisJaWYgKCFpc19jY3NfcGxhbmUoZmItPm1vZGlmaWVyLCBjb2xvcl9wbGFuZSkpCisJCXJl dHVybiAwOworCisJaW50ZWxfdGlsZV9kaW1zKGZiLCBjb2xvcl9wbGFuZSwgJnRpbGVfd2lkdGgs ICZ0aWxlX2hlaWdodCk7CisJaW50ZWxfZmJfcGxhbmVfZ2V0X3N1YnNhbXBsaW5nKCZoc3ViLCAm dnN1YiwgZmIsIGNvbG9yX3BsYW5lKTsKKwlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmco JmhzdWJfbWFpbiwgJnZzdWJfbWFpbiwgZmIsIGNvbG9yX3BsYW5lIC0gMSk7CisKKwloc3ViIC89 IGhzdWJfbWFpbjsKKwl2c3ViIC89IHZzdWJfbWFpbjsKIAogCXRpbGVfd2lkdGggKj0gaHN1YjsK IAl0aWxlX2hlaWdodCAqPSB2c3ViOwogCiAJY2NzX3ggPSAoeCAqIGhzdWIpICUgdGlsZV93aWR0 aDsKIAljY3NfeSA9ICh5ICogdnN1YikgJSB0aWxlX2hlaWdodDsKLQltYWluX3ggPSBpbnRlbF9m Yi0+bm9ybWFsWzBdLnggJSB0aWxlX3dpZHRoOwotCW1haW5feSA9IGludGVsX2ZiLT5ub3JtYWxb MF0ueSAlIHRpbGVfaGVpZ2h0OworCW1haW5feCA9IGludGVsX2ZiLT5ub3JtYWxbY29sb3JfcGxh bmUgLSAxXS54ICUgdGlsZV93aWR0aDsKKwltYWluX3kgPSBpbnRlbF9mYi0+bm9ybWFsW2NvbG9y X3BsYW5lIC0gMV0ueSAlIHRpbGVfaGVpZ2h0OwogCiAJLyoKIAkgKiBDQ1MgZG9lc24ndCBoYXZl IGl0cyBvd24geC95IG9mZnNldCByZWdpc3Rlciwgc28gdGhlIGludHJhIENDUyB0aWxlCkBAIC0y NzMyLDggKzI3OTYsOCBAQCBpbnRlbF9mYl9jaGVja19jY3NfeHkoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIGludCB4LCBpbnQgeSkKIAkJRFJNX0RFQlVHX0tNUygiQmFkIENDUyB4L3kgKG1h aW4gJWQsJWQgY2NzICVkLCVkKSBmdWxsIChtYWluICVkLCVkIGNjcyAlZCwlZClcbiIsCiAJCQkg ICAgICBtYWluX3gsIG1haW5feSwKIAkJCSAgICAgIGNjc194LCBjY3NfeSwKLQkJCSAgICAgIGlu dGVsX2ZiLT5ub3JtYWxbMF0ueCwKLQkJCSAgICAgIGludGVsX2ZiLT5ub3JtYWxbMF0ueSwKKwkJ CSAgICAgIGludGVsX2ZiLT5ub3JtYWxbY29sb3JfcGxhbmUgLSAxXS54LAorCQkJICAgICAgaW50 ZWxfZmItPm5vcm1hbFtjb2xvcl9wbGFuZSAtIDFdLnksCiAJCQkgICAgICB4LCB5KTsKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJfQpAQCAtMjc2MSw4ICsyODI1LDcgQEAgaW50ZWxfZmlsbF9mYl9pbmZv KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaW50IHJldDsKIAogCQljcHAg PSBmYi0+Zm9ybWF0LT5jcHBbaV07Ci0JCXdpZHRoID0gZHJtX2ZyYW1lYnVmZmVyX3BsYW5lX3dp ZHRoKGZiLT53aWR0aCwgZmIsIGkpOwotCQloZWlnaHQgPSBkcm1fZnJhbWVidWZmZXJfcGxhbmVf aGVpZ2h0KGZiLT5oZWlnaHQsIGZiLCBpKTsKKwkJaW50ZWxfZmJfcGxhbmVfZGltcygmd2lkdGgs ICZoZWlnaHQsIGZiLCBpKTsKIAogCQlyZXQgPSBpbnRlbF9mYl9vZmZzZXRfdG9feHkoJngsICZ5 LCBmYiwgaSk7CiAJCWlmIChyZXQpIHsKQEAgLTI3NzEsMTEgKzI4MzQsOSBAQCBpbnRlbF9maWxs X2ZiX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJcmV0dXJuIHJl dDsKIAkJfQogCi0JCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSAmJiBpID09IDEp IHsKLQkJCXJldCA9IGludGVsX2ZiX2NoZWNrX2Njc194eShmYiwgeCwgeSk7Ci0JCQlpZiAocmV0 KQotCQkJCXJldHVybiByZXQ7Ci0JCX0KKwkJcmV0ID0gaW50ZWxfZmJfY2hlY2tfY2NzX3h5KGZi LCBpLCB4LCB5KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CiAKIAkJLyoKIAkJICogVGhl IGZlbmNlIChpZiB1c2VkKSBpcyBhbGlnbmVkIHRvIHRoZSBzdGFydCBvZiB0aGUgb2JqZWN0CkBA IC0zMzg0LDYgKzM0NDUsNyBAQCBzdGF0aWMgaW50IHNrbF9tYXhfcGxhbmVfd2lkdGgoY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCQlyZXR1cm4gNTEyMDsKIAljYXNlIEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9D Q1M6CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6CiAJCS8qIEZJ WE1FIEFVWCBwbGFuZT8gKi8KIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgogCWNhc2Ug STkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgpAQCAtMzQ0MywxNiArMzUwNSwxOCBAQCBzdGF0aWMg aW50IGljbF9tYXhfcGxhbmVfaGVpZ2h0KHZvaWQpCiB9CiAKIHN0YXRpYyBib29sIHNrbF9jaGVj a19tYWluX2Njc19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlLAotCQkJCQkgICBpbnQgbWFpbl94LCBpbnQgbWFpbl95LCB1MzIgbWFpbl9vZmZzZXQpCisJ CQkJCSAgIGludCBtYWluX3gsIGludCBtYWluX3ksIHUzMiBtYWluX29mZnNldCwKKwkJCQkJICAg aW50IGF1eF9wbGFuZSkKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5iYXNlLmZiOwotCWludCBoc3ViID0gZmItPmZvcm1hdC0+aHN1YjsKLQlpbnQg dnN1YiA9IGZiLT5mb3JtYXQtPnZzdWI7Ci0JaW50IGF1eF94ID0gcGxhbmVfc3RhdGUtPmNvbG9y X3BsYW5lWzFdLng7Ci0JaW50IGF1eF95ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnk7 Ci0JdTMyIGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ub2Zmc2V0Owot CXUzMiBhbGlnbm1lbnQgPSBpbnRlbF9zdXJmX2FsaWdubWVudChmYiwgMSk7Ci0KKwlpbnQgaHN1 YjsKKwlpbnQgdnN1YjsKKwlpbnQgYXV4X3ggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbYXV4 X3BsYW5lXS54OworCWludCBhdXhfeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxh bmVdLnk7CisJdTMyIGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbYXV4X3Bs YW5lXS5vZmZzZXQ7CisJdTMyIGFsaWdubWVudCA9IGludGVsX3N1cmZfYWxpZ25tZW50KGZiLCBh dXhfcGxhbmUpOworCisJaW50ZWxfZmJfcGxhbmVfZ2V0X3N1YnNhbXBsaW5nKCZoc3ViLCAmdnN1 YiwgZmIsIGF1eF9wbGFuZSk7CiAJd2hpbGUgKGF1eF9vZmZzZXQgPj0gbWFpbl9vZmZzZXQgJiYg YXV4X3kgPD0gbWFpbl95KSB7CiAJCWludCB4LCB5OwogCkBAIC0zNDY0LDcgKzM1MjgsNyBAQCBz dGF0aWMgYm9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZQogCiAJCXggPSBhdXhfeCAvIGhzdWI7CiAJCXkgPSBhdXhf eSAvIHZzdWI7Ci0JCWF1eF9vZmZzZXQgPSBpbnRlbF9wbGFuZV9hZGp1c3RfYWxpZ25lZF9vZmZz ZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMSwKKwkJYXV4X29mZnNldCA9IGludGVsX3BsYW5lX2Fk anVzdF9hbGlnbmVkX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRlLCBhdXhfcGxhbmUsCiAJCQkJ CQkJICAgICAgIGF1eF9vZmZzZXQsIGF1eF9vZmZzZXQgLSBhbGlnbm1lbnQpOwogCQlhdXhfeCA9 IHggKiBoc3ViICsgYXV4X3ggJSBoc3ViOwogCQlhdXhfeSA9IHkgKiB2c3ViICsgYXV4X3kgJSB2 c3ViOwpAQCAtMzQ3Myw5ICszNTM3LDkgQEAgc3RhdGljIGJvb2wgc2tsX2NoZWNrX21haW5fY2Nz X2Nvb3JkaW5hdGVzKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUKIAlpZiAo YXV4X3ggIT0gbWFpbl94IHx8IGF1eF95ICE9IG1haW5feSkKIAkJcmV0dXJuIGZhbHNlOwogCi0J cGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldCA9IGF1eF9vZmZzZXQ7Ci0JcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lWzFdLnggPSBhdXhfeDsKLQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxh bmVbMV0ueSA9IGF1eF95OworCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxhbmVdLm9m ZnNldCA9IGF1eF9vZmZzZXQ7CisJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2F1eF9wbGFuZV0u eCA9IGF1eF94OworCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxhbmVdLnkgPSBhdXhf eTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtMzU0OSw3ICszNjEzLDcgQEAgc3RhdGljIGludCBz a2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiAJICogdGhleSBtYXRjaCB3aXRoIHRoZSBtYWluIHN1cmZhY2UgeC95IG9mZnNldHMuCiAJ ICovCiAJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKSB7Ci0JCXdoaWxlICghc2ts X2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4LCB5LCBvZmZzZXQpKSB7 CisJCXdoaWxlICghc2tsX2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4 LCB5LCBvZmZzZXQsIDEpKSB7CiAJCQlpZiAob2Zmc2V0ID09IDApCiAJCQkJYnJlYWs7CiAKQEAg LTM1ODEsNyArMzY0NSw4IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJfYXV4X3N1cmZhY2Uo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCXVuc2lnbmVkIGlu dCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwotCWludCBtYXhfd2lkdGgg PSBza2xfbWF4X3BsYW5lX3dpZHRoKGZiLCAxLCByb3RhdGlvbik7CisJaW50IHV2ID0gaXNfY2Nz X21vZGlmaWVyKGZiLT5tb2RpZmllcikgPyAyIDogMTsKKwlpbnQgbWF4X3dpZHRoID0gc2tsX21h eF9wbGFuZV93aWR0aChmYiwgdXYsIHJvdGF0aW9uKTsKIAlpbnQgbWF4X2hlaWdodCA9IDQwOTY7 CiAJaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7CiAJaW50IHkgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTc7CkBAIC0zNTg5LDggKzM2NTQsOCBAQCBzdGF0aWMg aW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiAJaW50IGggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNl LnNyYykgPj4gMTc7CiAJdTMyIG9mZnNldDsKIAotCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAm eSwgcGxhbmVfc3RhdGUsIDEpOwotCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25l ZF9vZmZzZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMSk7CisJaW50ZWxfYWRkX2ZiX29mZnNldHMo JngsICZ5LCBwbGFuZV9zdGF0ZSwgdXYpOworCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVf YWxpZ25lZF9vZmZzZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgdXYpOwogCiAJLyogRklYTUUgbm90 IHF1aXRlIHN1cmUgaG93L2lmIHRoZXNlIGFwcGx5IHRvIHRoZSBjaHJvbWEgcGxhbmUgKi8KIAlp ZiAodyA+IG1heF93aWR0aCB8fCBoID4gbWF4X2hlaWdodCkgewpAQCAtMzU5OSw5ICszNjY0LDQx IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJfYXV4X3N1cmZhY2Uoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldCA9IG9mZnNldDsKLQlwbGFuZV9zdGF0ZS0+Y29s b3JfcGxhbmVbMV0ueCA9IHg7Ci0JcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnkgPSB5Owor CWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSkgeworCQlpbnQgYXV4X29mZnNldCA9 IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVszXS5vZmZzZXQ7CisJCWludCBhbGlnbm1lbnQgPSBp bnRlbF9zdXJmX2FsaWdubWVudChmYiwgdXYpOworCisJCWlmIChvZmZzZXQgPiBhdXhfb2Zmc2V0 KSB7CisJCQlpbnQgaHN1YiwgdnN1YjsKKwkJCWludCBtYWluX3ggPSB4LCBtYWluX3kgPSB5Owor CisJCQlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxpbmcoJmhzdWIsICZ2c3ViLCBmYiwgdXYp OworCQkJeCA9IG1haW5feCAvIGhzdWI7CisJCQl5ID0gbWFpbl95IC8gdnN1YjsKKwkJCW9mZnNl dCA9IGludGVsX3BsYW5lX2FkanVzdF9hbGlnbmVkX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRl LCB1diwKKwkJCQkJCQkJICAgb2Zmc2V0LAorCQkJCQkJCQkgICBhdXhfb2Zmc2V0ICYgfihhbGln bm1lbnQgLSAxKSk7CisJCQl4ID0geCAqIGhzdWIgKyBtYWluX3ggJSBoc3ViOworCQkJeSA9IHkg KiB2c3ViICsgbWFpbl95ICUgdnN1YjsKKwkJfQorCisJCXdoaWxlICghc2tsX2NoZWNrX21haW5f Y2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4LCB5LCBvZmZzZXQsIDMpKSB7CisJCQlpZiAo b2Zmc2V0ID09IDApCisJCQkJYnJlYWs7CisKKwkJCW9mZnNldCA9IGludGVsX3BsYW5lX2FkanVz dF9hbGlnbmVkX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRlLCB1diwKKwkJCQkJCQkJICAgb2Zm c2V0LCBvZmZzZXQgLSBhbGlnbm1lbnQpOworCQl9CisKKwkJaWYgKHggIT0gcGxhbmVfc3RhdGUt PmNvbG9yX3BsYW5lWzNdLnggfHwgeSAhPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbM10ueSkg eworCQkJRFJNX0RFQlVHX0tNUygiVW5hYmxlIHRvIGZpbmQgc3VpdGFibGUgZGlzcGxheSBzdXJm YWNlIG9mZnNldCBkdWUgdG8gQ0NTXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQor CisJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW3V2XS5vZmZzZXQgPSBvZmZzZXQ7CisJcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lW3V2XS54ID0geDsKKwlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb dXZdLnkgPSB5OwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zNjExLDE5ICszNzA4LDMwIEBAIHN0YXRp YyBpbnQgc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVf c3RhdGUtPmJhc2UuZmI7CiAJaW50IHNyY194ID0gcGxhbmVfc3RhdGUtPmJhc2Uuc3JjLngxID4+ IDE2OwogCWludCBzcmNfeSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+PiAxNjsKLQlpbnQg aHN1YiA9IGZiLT5mb3JtYXQtPmhzdWI7Ci0JaW50IHZzdWIgPSBmYi0+Zm9ybWF0LT52c3ViOwot CWludCB4ID0gc3JjX3ggLyBoc3ViOwotCWludCB5ID0gc3JjX3kgLyB2c3ViOwogCXUzMiBvZmZz ZXQ7CisJaW50IGNjczsKIAotCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAmeSwgcGxhbmVfc3Rh dGUsIDEpOwotCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25lZF9vZmZzZXQoJngs ICZ5LCBwbGFuZV9zdGF0ZSwgMSk7CiAKLQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ub2Zm c2V0ID0gb2Zmc2V0OwotCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS54ID0geCAqIGhzdWIg KyBzcmNfeCAlIGhzdWI7Ci0JcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnkgPSB5ICogdnN1 YiArIHNyY195ICUgdnN1YjsKKwlmb3IgKGNjcyA9IDE7IGNjcyA8IGZiLT5mb3JtYXQtPm51bV9w bGFuZXM7IGNjcyArPSAyKSB7CisJCWludCBoc3ViLCB2c3ViOworCQlpbnQgbWFpbl9oc3ViLCBt YWluX3ZzdWI7CisJCWludCB4LCB5OworCisJCWludGVsX2ZiX3BsYW5lX2dldF9zdWJzYW1wbGlu ZygmaHN1YiwgJnZzdWIsIGZiLCBjY3MpOworCQlpbnRlbF9mYl9wbGFuZV9nZXRfc3Vic2FtcGxp bmcoJm1haW5faHN1YiwgJm1haW5fdnN1YiwgZmIsIGNjcyAtIDEpOwogCisJCWhzdWIgLz0gbWFp bl9oc3ViOworCQl2c3ViIC89IG1haW5fdnN1YjsKKwkJeCA9IHNyY194IC8gaHN1YjsKKwkJeSA9 IHNyY195IC8gdnN1YjsKKworCQlpbnRlbF9hZGRfZmJfb2Zmc2V0cygmeCwgJnksIHBsYW5lX3N0 YXRlLCBjY3MpOworCQlvZmZzZXQgPSBpbnRlbF9wbGFuZV9jb21wdXRlX2FsaWduZWRfb2Zmc2V0 KCZ4LCAmeSwKKwkJCQkJCQkgICAgcGxhbmVfc3RhdGUsIGNjcyk7CisJCXBsYW5lX3N0YXRlLT5j b2xvcl9wbGFuZVtjY3NdLm9mZnNldCA9IG9mZnNldDsKKwkJcGxhbmVfc3RhdGUtPmNvbG9yX3Bs YW5lW2Njc10ueCA9IHggKiBoc3ViICsgc3JjX3ggJSBoc3ViOworCQlwbGFuZV9zdGF0ZS0+Y29s b3JfcGxhbmVbY2NzXS55ID0geSAqIHZzdWIgKyBzcmNfeSAlIHZzdWI7CisJfQogCXJldHVybiAw OwogfQogCkBAIC0zNjMxLDYgKzM3MzksNyBAQCBpbnQgc2tsX2NoZWNrX3BsYW5lX3N1cmZhY2Uo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCWludCByZXQ7CisJ Ym9vbCBuZWVkc19hdXggPSBmYWxzZTsKIAogCXJldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfZ3R0 KHBsYW5lX3N0YXRlKTsKIAlpZiAocmV0KQpAQCAtMzY0MCwyMSArMzc0OSwzMSBAQCBpbnQgc2ts X2NoZWNrX3BsYW5lX3N1cmZhY2Uoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0 ZSkKIAkJcmV0dXJuIDA7CiAKIAkvKgotCSAqIEhhbmRsZSB0aGUgQVVYIHN1cmZhY2UgZmlyc3Qg c2luY2UKLQkgKiB0aGUgbWFpbiBzdXJmYWNlIHNldHVwIGRlcGVuZHMgb24gaXQuCisJICogSGFu ZGxlIHRoZSBBVVggc3VyZmFjZSBmaXJzdCBzaW5jZSB0aGUgbWFpbiBzdXJmYWNlIHNldHVwIGRl cGVuZHMgb24KKwkgKiBpdC4KIAkgKi8KLQlpZiAoZHJtX2Zvcm1hdF9pbmZvX2lzX3l1dl9zZW1p cGxhbmFyKGZiLT5mb3JtYXQpKSB7Ci0JCXJldCA9IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNl KHBsYW5lX3N0YXRlKTsKKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsKKwkJ bmVlZHNfYXV4ID0gdHJ1ZTsKKwkJcmV0ID0gc2tsX2NoZWNrX2Njc19hdXhfc3VyZmFjZShwbGFu ZV9zdGF0ZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwotCX0gZWxzZSBpZiAoaXNfY2Nz X21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsKLQkJcmV0ID0gc2tsX2NoZWNrX2Njc19hdXhfc3Vy ZmFjZShwbGFuZV9zdGF0ZSk7CisJfQorCisJaWYgKGRybV9mb3JtYXRfaW5mb19pc195dXZfc2Vt aXBsYW5hcihmYi0+Zm9ybWF0KSkgeworCQluZWVkc19hdXggPSB0cnVlOworCQlyZXQgPSBza2xf Y2hlY2tfbnYxMl9hdXhfc3VyZmFjZShwbGFuZV9zdGF0ZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1 cm4gcmV0OwotCX0gZWxzZSB7Ci0JCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS5vZmZzZXQg PSB+MHhmZmY7Ci0JCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS54ID0gMDsKLQkJcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lWzFdLnkgPSAwOworCX0KKworCWlmICghbmVlZHNfYXV4KSB7CisJ CWludCBpOworCisJCWZvciAoaSA9IDE7IGkgPCBmYi0+Zm9ybWF0LT5udW1fcGxhbmVzOyBpKysp IHsKKwkJCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVtpXS5vZmZzZXQgPSB+MHhmZmY7CisJCQlw bGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbaV0ueCA9IDA7CisJCQlwbGFuZV9zdGF0ZS0+Y29sb3Jf cGxhbmVbaV0ueSA9IDA7CisJCX0KIAl9CiAKIAlyZXQgPSBza2xfY2hlY2tfbWFpbl9zdXJmYWNl KHBsYW5lX3N0YXRlKTsKQEAgLTQyMjcsNiArNDM0Niw4IEBAIHN0YXRpYyB1MzIgc2tsX3BsYW5l X2N0bF90aWxpbmcodTY0IGZiX21vZGlmaWVyKQogCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1kg fAogCQkgICAgICAgUExBTkVfQ1RMX1JFTkRFUl9ERUNPTVBSRVNTSU9OX0VOQUJMRSB8CiAJCSAg ICAgICBQTEFORV9DVExfQ0xFQVJfQ09MT1JfRElTQUJMRTsKKwljYXNlIEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEX0dFTjEyX01DX0NDUzoKKwkJcmV0dXJuIFBMQU5FX0NUTF9USUxFRF9ZIHwgUExB TkVfQ1RMX01FRElBX0RFQ09NUFJFU1NJT05fRU5BQkxFOwogCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEOgogCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1lGOwogCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lmX1RJTEVEX0NDUzoKQEAgLTEwMDU2LDYgKzEwMTc3LDggQEAgc2t5bGFrZV9nZXRf aW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQlmYi0+bW9k aWZpZXIgPSBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8KIAkJCQlJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9HRU4xMl9SQ19DQ1MgOgogCQkJCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzsK KwkJZWxzZSBpZiAodmFsICYgUExBTkVfQ1RMX01FRElBX0RFQ09NUFJFU1NJT05fRU5BQkxFKQor CQkJZmItPm1vZGlmaWVyID0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOwog CQllbHNlCiAJCQlmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDsKIAkJYnJl YWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90 eXBlcy5oCmluZGV4IDQwMTg0ZTgyM2M4NC4uZTk4ZjIxMjY4MmY2IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaApAQCAtNTM4LDcg KzUzOCw3IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSB7CiAJCSAqLwogCQl1MzIgc3RyaWRl OwogCQlpbnQgeCwgeTsKLQl9IGNvbG9yX3BsYW5lWzJdOworCX0gY29sb3JfcGxhbmVbNF07CiAK IAkvKiBwbGFuZSBjb250cm9sIHJlZ2lzdGVyICovCiAJdTMyIGN0bDsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCmluZGV4IGI2NDk0NjQzMTgzZC4uYTUwMThm ZmZhOGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nw cml0ZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMK QEAgLTIxMTQsNyArMjExNCw4IEBAIHN0YXRpYyBpbnQgc2tsX3BsYW5lX2NoZWNrX2ZiKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCSAgICAgZmItPm1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCB8fAogCSAgICAgZmItPm1vZGlmaWVyID09IEk5 MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAogCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVf Rk9STUFUX01PRF9ZZl9USUxFRF9DQ1MgfHwKLQkgICAgIGZiLT5tb2RpZmllciA9PSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1MpKSB7CisJICAgICBmYi0+bW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTIHx8CisJICAgICBmYi0+bW9kaWZp ZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTKSkgewogCQlEUk1fREVC VUdfS01TKCJZL1lmIHRpbGluZyBub3Qgc3VwcG9ydGVkIGluIElGLUlEIG1vZGVcbiIpOwogCQly ZXR1cm4gLUVJTlZBTDsKIAl9CkBAIC0yNTUwLDcgKzI1NTEsMTYgQEAgc3RhdGljIGNvbnN0IHU2 NCBza2xfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3NbXSA9IHsKIAlEUk1fRk9STUFUX01PRF9J TlZBTElECiB9OwogCi1zdGF0aWMgY29uc3QgdTY0IGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2RpZmll cnNfY2NzW10gPSB7CitzdGF0aWMgY29uc3QgdTY0IGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2RpZmll cnNfbWNfY2NzW10gPSB7CisJSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTLAor CUk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUywKKwlJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRCwKKwlJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCwKKwlEUk1fRk9STUFUX01PRF9MSU5F QVIsCisJRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRAorfTsKKworc3RhdGljIGNvbnN0IHU2NCBnZW4x Ml9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX3JjX2Njc1tdID0gewogCUk5MTVfRk9STUFUX01PRF9Z X1RJTEVEX0dFTjEyX1JDX0NDUywKIAlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCwKIAlJOTE1X0ZP Uk1BVF9NT0RfWF9USUxFRCwKQEAgLTI3MDgsMTAgKzI3MTgsMjEgQEAgc3RhdGljIGJvb2wgc2ts X3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1fcGxhbmUgKl9wbGFuZSwKIAl9 CiB9CiAKK3N0YXRpYyBib29sIGdlbjEyX3BsYW5lX3N1cHBvcnRzX21jX2NjcyhlbnVtIHBsYW5l X2lkIHBsYW5lX2lkKQoreworCXJldHVybiBwbGFuZV9pZCA8IFBMQU5FX1NQUklURTQ7Cit9CisK IHN0YXRpYyBib29sIGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2Rfc3VwcG9ydGVkKHN0cnVjdCBkcm1f cGxhbmUgKl9wbGFuZSwKIAkJCQkJICAgICB1MzIgZm9ybWF0LCB1NjQgbW9kaWZpZXIpCiB7CisJ c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2ludGVsX3BsYW5lKF9wbGFuZSk7CisKIAlz d2l0Y2ggKG1vZGlmaWVyKSB7CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9N Q19DQ1M6CisJCWlmICghZ2VuMTJfcGxhbmVfc3VwcG9ydHNfbWNfY2NzKHBsYW5lLT5pZCkpCisJ CQlyZXR1cm4gZmFsc2U7CisJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2UgRFJNX0ZPUk1BVF9N T0RfTElORUFSOgogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJY2FzZSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRDoKQEAgLTI3MjksMTQgKzI3NTAsMTcgQEAgc3RhdGljIGJvb2wgZ2Vu MTJfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAog CQlpZiAoaXNfY2NzX21vZGlmaWVyKG1vZGlmaWVyKSkKIAkJCXJldHVybiB0cnVlOwogCQkvKiBm YWxsIHRocm91Z2ggKi8KLQljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgotCWNhc2UgRFJNX0ZPUk1B VF9YUkdCMjEwMTAxMDoKLQljYXNlIERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6CiAJY2FzZSBEUk1f Rk9STUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9STUFUX1lWWVU6CiAJY2FzZSBEUk1fRk9STUFUX1VZ Vlk6CiAJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CisJCWlmIChtb2RpZmllciA9PSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1MpCisJCQlyZXR1cm4gdHJ1ZTsKKwkJLyogZmFsbCB0 aHJvdWdoICovCiAJY2FzZSBEUk1fRk9STUFUX05WMTI6CisJY2FzZSBEUk1fRk9STUFUX1JHQjU2 NToKKwljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX1hCR1Iy MTAxMDEwOgogCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgogCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgog CWNhc2UgRFJNX0ZPUk1BVF9QMDE2OgpAQCAtMjg3Myw2ICsyODk3LDE0IEBAIHN0YXRpYyBjb25z dCB1MzIgKmljbF9nZXRfcGxhbmVfZm9ybWF0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJfQogfQogCitzdGF0aWMgY29uc3QgdTY0ICpnZW4xMl9nZXRfcGxhbmVfbW9kaWZp ZXJzKGVudW0gcGxhbmVfaWQgcGxhbmVfaWQpCit7CisJaWYgKGdlbjEyX3BsYW5lX3N1cHBvcnRz X21jX2NjcyhwbGFuZV9pZCkpCisJCXJldHVybiBnZW4xMl9wbGFuZV9mb3JtYXRfbW9kaWZpZXJz X21jX2NjczsKKwllbHNlCisJCXJldHVybiBnZW4xMl9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX3Jj X2NjczsKK30KKwogc3RhdGljIGJvb2wgc2tsX3BsYW5lX2hhc19jY3Moc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAgICAgZW51bSBwaXBlIHBpcGUsIGVudW0gcGxhbmVf aWQgcGxhbmVfaWQpCiB7CkBAIC0yOTQwLDcgKzI5NzIsNyBAQCBza2xfdW5pdmVyc2FsX3BsYW5l X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlwbGFuZS0+aGFz X2NjcyA9IHNrbF9wbGFuZV9oYXNfY2NzKGRldl9wcml2LCBwaXBlLCBwbGFuZV9pZCk7CiAJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpIHsKLQkJbW9kaWZpZXJzID0gZ2VuMTJfcGxhbmVf Zm9ybWF0X21vZGlmaWVyc19jY3M7CisJCW1vZGlmaWVycyA9IGdlbjEyX2dldF9wbGFuZV9tb2Rp ZmllcnMocGxhbmVfaWQpOwogCQlwbGFuZV9mdW5jcyA9ICZnZW4xMl9wbGFuZV9mdW5jczsKIAl9 IGVsc2UgewogCQlpZiAocGxhbmUtPmhhc19jY3MpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRl eCA0OWZlNGYwZGYyNGYuLjc1Y2NjZDQ5OGI0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBA IC02NzIwLDYgKzY3MjAsNyBAQCBlbnVtIHsKICNkZWZpbmUgICBQTEFORV9DVExfVElMRURfWQkJ CSg0IDw8IDEwKQogI2RlZmluZSAgIFBMQU5FX0NUTF9USUxFRF9ZRgkJCSg1IDw8IDEwKQogI2Rl ZmluZSAgIFBMQU5FX0NUTF9GTElQX0hPUklaT05UQUwJCSgxIDw8IDgpCisjZGVmaW5lICAgUExB TkVfQ1RMX01FRElBX0RFQ09NUFJFU1NJT05fRU5BQkxFCSgxIDw8IDQpIC8qIFRHTCsgKi8KICNk ZWZpbmUgICBQTEFORV9DVExfQUxQSEFfTUFTSwkJCSgweDMgPDwgNCkgLyogUHJlLUdMSyAqLwog I2RlZmluZSAgIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFCQkoMCA8PCA0KQogI2RlZmluZSAgIFBM QU5FX0NUTF9BTFBIQV9TV19QUkVNVUxUSVBMWQkoMiA8PCA0KQotLSAKMi4yMC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=