From mboxrd@z Thu Jan 1 00:00:00 1970 From: Radhakrishna Sripada Subject: [PATCH v4 08/10] Gen-12 display can decompress surfaces compressed by the media engine. Date: Mon, 14 Oct 2019 17:05:31 -0700 Message-ID: <20191015000533.11425-9-radhakrishna.sripada@intel.com> References: <20191015000533.11425-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 BA0EC6E348 for ; Tue, 15 Oct 2019 00:03:46 +0000 (UTC) In-Reply-To: <20191015000533.11425-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 eS5jCmluZGV4IGJlNjFkZmRlYmIzNC4uNDQ4MTY4YTRkNzgwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTkwOSw2ICsxOTA5LDEwIEBAIGlu dGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGlu dCBjb2xvcl9wbGFuZSkKIAkJaWYgKGNvbG9yX3BsYW5lID09IDEpCiAJCQlyZXR1cm4gMTI4Owog CQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEy X01DX0NDUzoKKwkJaWYgKGNvbG9yX3BsYW5lID09IDMpCisJCQlyZXR1cm4gNjQ7CisJCS8qIGZh bGwgdGhyb3VnaCAqLwogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NT OgogCQlpZiAoY29sb3JfcGxhbmUgPT0gMSkKIAkJCXJldHVybiA2NDsKQEAgLTIyNTEsOCArMjI1 NSwxNiBAQCBzdGF0aWMgdTMyIGludGVsX2FkanVzdF90aWxlX29mZnNldChpbnQgKngsIGludCAq eSwKIAogc3RhdGljIGJvb2wgaXNfc3VyZmFjZV9saW5lYXIodTY0IG1vZGlmaWVyLCBpbnQgY29s b3JfcGxhbmUpCiB7Ci0JcmV0dXJuIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUiB8 fAotCSAgICAgICAobW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNf Q0NTICYmIGNvbG9yX3BsYW5lID09IDEpOworCXN3aXRjaCAobW9kaWZpZXIpIHsKKwljYXNlIERS TV9GT1JNQVRfTU9EX0xJTkVBUjoKKwkJcmV0dXJuIHRydWU7CisJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJCXJldHVybiBjb2xvcl9wbGFuZSA9PSAxOworCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOgorCQlyZXR1cm4gY29sb3Jf cGxhbmUgPT0gMSB8fCBjb2xvcl9wbGFuZSA9PSAzOworCWRlZmF1bHQ6CisJCXJldHVybiBmYWxz ZTsKKwl9CiB9CiAKIHN0YXRpYyB1MzIgaW50ZWxfYWRqdXN0X2FsaWduZWRfb2Zmc2V0KGludCAq eCwgaW50ICp5LApAQCAtMjQ0MCw2ICsyNDUyLDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRl bF9mYl9tb2RpZmllcl90b190aWxpbmcodTY0IGZiX21vZGlmaWVyKQogCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lfVElMRUQ6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6CiAJY2Fz ZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJY2FzZSBJOTE1X0ZPUk1B VF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6CiAJCXJldHVybiBJOTE1X1RJTElOR19ZOwogCWRl ZmF1bHQ6CiAJCXJldHVybiBJOTE1X1RJTElOR19OT05FOwpAQCAtMjQ4Nyw2ICsyNTAwLDEwIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIGdlbjEyX2Njc19mb3JtYXRzW10g PSB7CiAJICAuY3BwID0geyA0LCAxLCB9LCAuaHN1YiA9IDIsIC52c3ViID0gMzIsIC5oYXNfYWxw aGEgPSB0cnVlIH0sCiAJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9BQkdSODg4OCwgLmRlcHRoID0g MzIsIC5udW1fcGxhbmVzID0gMiwKIAkgIC5jcHAgPSB7IDQsIDEsIH0sIC5oc3ViID0gMiwgLnZz dWIgPSAzMiwgLmhhc19hbHBoYSA9IHRydWUgfSwKKwl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1lV WVYsIC5udW1fcGxhbmVzID0gMiwKKwkgIC5jcHAgPSB7IDIsIDEsIH0sIC5oc3ViID0gNCwgLnZz dWIgPSAzMiwgLmlzX3l1diA9IHRydWUgfSwKKwl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX05WMTIs IC5udW1fcGxhbmVzID0gNCwKKwkgIC5jcHAgPSB7IDEsIDEsIDIsIDF9LCAuaHN1YiA9IDIsIC52 c3ViID0gMiwgLmlzX3l1diA9IHRydWUgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2Zvcm1hdF9pbmZvICoKQEAgLTI1MjQsNiArMjU0MSw3IEBAIGludGVsX2dldF9mb3JtYXRfaW5m byhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21kKQogYm9vbCBpc19jY3NfbW9kaWZp ZXIodTY0IG1vZGlmaWVyKQogewogCXJldHVybiBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9HRU4xMl9SQ19DQ1MgfHwKKwkgICAgICAgbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRf TU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTIHx8CiAJICAgICAgIG1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0NDUyB8fAogCSAgICAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9N T0RfWWZfVElMRURfQ0NTOwogfQpAQCAtMjU4Nyw3ICsyNjA1LDcgQEAgaW50ZWxfZmJfc3RyaWRl X2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNvbG9yX3Bs YW5lKQogCX0KIAogCXRpbGVfd2lkdGggPSBpbnRlbF90aWxlX3dpZHRoX2J5dGVzKGZiLCBjb2xv cl9wbGFuZSk7Ci0JaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpICYmIGNvbG9yX3Bs YW5lID09IDApIHsKKwlpZiAoaXNfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsKIAkJLyoK IAkJICogRGlzcGxheSBXQSAjMDUzMTogc2tsLGJ4dCxrYmwsZ2xrCiAJCSAqCkBAIC0yNTk3LDcg KzI2MTUsNyBAQCBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGNvbnN0IHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCiAJCSAqIHJlcXVpcmUgdGhlIGVudGlyZSBm YiB0byBhY2NvbW1vZGF0ZSB0aGF0IHRvIGF2b2lkCiAJCSAqIHBvdGVudGlhbCBydW50aW1lIGVy cm9ycyBhdCBwbGFuZSBjb25maWd1cmF0aW9uIHRpbWUuCiAJCSAqLwotCQlpZiAoSVNfR0VOKGRl dl9wcml2LCA5KSAmJiBmYi0+d2lkdGggPiAzODQwKQorCQlpZiAoSVNfR0VOKGRldl9wcml2LCA5 KSAmJiBjb2xvcl9wbGFuZSA9PSAwICYmIGZiLT53aWR0aCA+IDM4NDApCiAJCQl0aWxlX3dpZHRo ICo9IDQ7CiAJCS8qCiAJCSAqIFRoZSBtYWluIHN1cmZhY2UgcGl0Y2ggbXVzdCBiZSBwYWRkZWQg dG8gYSBtdWx0aXBsZSBvZiBmb3VyCkBAIC0yNjc3LDI1ICsyNjk1LDcxIEBAIHN0YXRpYyBib29s 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 NzA1LDggKzI3NjksOCBAQCBpbnRlbF9mYl9jaGVja19jY3NfeHkoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsIGludCB4LCBpbnQgeSkKIAkJRFJNX0RFQlVHX0tNUygiQmFkIENDUyB4L3kgKG1h aW4gJWQsJWQgY2NzICVkLCVkKSBmdWxsIChtYWluICVkLCVkIGNjcyAlZCwlZClcbiIsCiAJCQkg ICAgICBtYWluX3gsIG1haW5feSwKIAkJCSAgICAgIGNjc194LCBjY3NfeSwKLQkJCSAgICAgIGlu dGVsX2ZiLT5ub3JtYWxbMF0ueCwKLQkJCSAgICAgIGludGVsX2ZiLT5ub3JtYWxbMF0ueSwKKwkJ CSAgICAgIGludGVsX2ZiLT5ub3JtYWxbY29sb3JfcGxhbmUgLSAxXS54LAorCQkJICAgICAgaW50 ZWxfZmItPm5vcm1hbFtjb2xvcl9wbGFuZSAtIDFdLnksCiAJCQkgICAgICB4LCB5KTsKIAkJcmV0 dXJuIC1FSU5WQUw7CiAJfQpAQCAtMjczNCw4ICsyNzk4LDcgQEAgaW50ZWxfZmlsbF9mYl9pbmZv KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaW50IHJldDsKIAogCQljcHAg PSBmYi0+Zm9ybWF0LT5jcHBbaV07Ci0JCXdpZHRoID0gZHJtX2ZyYW1lYnVmZmVyX3BsYW5lX3dp ZHRoKGZiLT53aWR0aCwgZmIsIGkpOwotCQloZWlnaHQgPSBkcm1fZnJhbWVidWZmZXJfcGxhbmVf aGVpZ2h0KGZiLT5oZWlnaHQsIGZiLCBpKTsKKwkJaW50ZWxfZmJfcGxhbmVfZGltcygmd2lkdGgs ICZoZWlnaHQsIGZiLCBpKTsKIAogCQlyZXQgPSBpbnRlbF9mYl9vZmZzZXRfdG9feHkoJngsICZ5 LCBmYiwgaSk7CiAJCWlmIChyZXQpIHsKQEAgLTI3NDQsMTEgKzI4MDcsOSBAQCBpbnRlbF9maWxs X2ZiX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJcmV0dXJuIHJl dDsKIAkJfQogCi0JCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSAmJiBpID09IDEp IHsKLQkJCXJldCA9IGludGVsX2ZiX2NoZWNrX2Njc194eShmYiwgeCwgeSk7Ci0JCQlpZiAocmV0 KQotCQkJCXJldHVybiByZXQ7Ci0JCX0KKwkJcmV0ID0gaW50ZWxfZmJfY2hlY2tfY2NzX3h5KGZi LCBpLCB4LCB5KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CiAKIAkJLyoKIAkJICogVGhl IGZlbmNlIChpZiB1c2VkKSBpcyBhbGlnbmVkIHRvIHRoZSBzdGFydCBvZiB0aGUgb2JqZWN0CkBA IC0zMzYwLDYgKzM0MjEsNyBAQCBzdGF0aWMgaW50IHNrbF9tYXhfcGxhbmVfd2lkdGgoY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJCQlyZXR1cm4gNTEyMDsKIAljYXNlIEk5MTVf Rk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9D Q1M6CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M6CiAJCS8qIEZJ WE1FIEFVWCBwbGFuZT8gKi8KIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgogCWNhc2Ug STkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOgpAQCAtMzQxOSwxNiArMzQ4MSwxOCBAQCBzdGF0aWMg aW50IGljbF9tYXhfcGxhbmVfaGVpZ2h0KHZvaWQpCiB9CiAKIHN0YXRpYyBib29sIHNrbF9jaGVj a19tYWluX2Njc19jb29yZGluYXRlcyhzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlLAotCQkJCQkgICBpbnQgbWFpbl94LCBpbnQgbWFpbl95LCB1MzIgbWFpbl9vZmZzZXQpCisJ CQkJCSAgIGludCBtYWluX3gsIGludCBtYWluX3ksIHUzMiBtYWluX29mZnNldCwKKwkJCQkJICAg aW50IGF1eF9wbGFuZSkKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBs YW5lX3N0YXRlLT5iYXNlLmZiOwotCWludCBoc3ViID0gZmItPmZvcm1hdC0+aHN1YjsKLQlpbnQg dnN1YiA9IGZiLT5mb3JtYXQtPnZzdWI7Ci0JaW50IGF1eF94ID0gcGxhbmVfc3RhdGUtPmNvbG9y X3BsYW5lWzFdLng7Ci0JaW50IGF1eF95ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLnk7 Ci0JdTMyIGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ub2Zmc2V0Owot CXUzMiBhbGlnbm1lbnQgPSBpbnRlbF9zdXJmX2FsaWdubWVudChmYiwgMSk7Ci0KKwlpbnQgaHN1 YjsKKwlpbnQgdnN1YjsKKwlpbnQgYXV4X3ggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbYXV4 X3BsYW5lXS54OworCWludCBhdXhfeSA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxh bmVdLnk7CisJdTMyIGF1eF9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbYXV4X3Bs YW5lXS5vZmZzZXQ7CisJdTMyIGFsaWdubWVudCA9IGludGVsX3N1cmZfYWxpZ25tZW50KGZiLCBh dXhfcGxhbmUpOworCisJaW50ZWxfZmJfcGxhbmVfZ2V0X3N1YnNhbXBsaW5nKCZoc3ViLCAmdnN1 YiwgZmIsIGF1eF9wbGFuZSk7CiAJd2hpbGUgKGF1eF9vZmZzZXQgPj0gbWFpbl9vZmZzZXQgJiYg YXV4X3kgPD0gbWFpbl95KSB7CiAJCWludCB4LCB5OwogCkBAIC0zNDQwLDcgKzM1MDQsNyBAQCBz dGF0aWMgYm9vbCBza2xfY2hlY2tfbWFpbl9jY3NfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3Bs YW5lX3N0YXRlICpwbGFuZV9zdGF0ZQogCiAJCXggPSBhdXhfeCAvIGhzdWI7CiAJCXkgPSBhdXhf eSAvIHZzdWI7Ci0JCWF1eF9vZmZzZXQgPSBpbnRlbF9wbGFuZV9hZGp1c3RfYWxpZ25lZF9vZmZz ZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMSwKKwkJYXV4X29mZnNldCA9IGludGVsX3BsYW5lX2Fk anVzdF9hbGlnbmVkX29mZnNldCgmeCwgJnksIHBsYW5lX3N0YXRlLCBhdXhfcGxhbmUsCiAJCQkJ CQkJICAgICAgIGF1eF9vZmZzZXQsIGF1eF9vZmZzZXQgLSBhbGlnbm1lbnQpOwogCQlhdXhfeCA9 IHggKiBoc3ViICsgYXV4X3ggJSBoc3ViOwogCQlhdXhfeSA9IHkgKiB2c3ViICsgYXV4X3kgJSB2 c3ViOwpAQCAtMzQ0OSw5ICszNTEzLDkgQEAgc3RhdGljIGJvb2wgc2tsX2NoZWNrX21haW5fY2Nz X2Nvb3JkaW5hdGVzKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUKIAlpZiAo YXV4X3ggIT0gbWFpbl94IHx8IGF1eF95ICE9IG1haW5feSkKIAkJcmV0dXJuIGZhbHNlOwogCi0J cGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldCA9IGF1eF9vZmZzZXQ7Ci0JcGxhbmVf c3RhdGUtPmNvbG9yX3BsYW5lWzFdLnggPSBhdXhfeDsKLQlwbGFuZV9zdGF0ZS0+Y29sb3JfcGxh bmVbMV0ueSA9IGF1eF95OworCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxhbmVdLm9m ZnNldCA9IGF1eF9vZmZzZXQ7CisJcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lW2F1eF9wbGFuZV0u eCA9IGF1eF94OworCXBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVthdXhfcGxhbmVdLnkgPSBhdXhf eTsKIAogCXJldHVybiB0cnVlOwogfQpAQCAtMzUyNSw3ICszNTg5LDcgQEAgc3RhdGljIGludCBz a2xfY2hlY2tfbWFpbl9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3Rh dGUpCiAJICogdGhleSBtYXRjaCB3aXRoIHRoZSBtYWluIHN1cmZhY2UgeC95IG9mZnNldHMuCiAJ ICovCiAJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKSB7Ci0JCXdoaWxlICghc2ts X2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4LCB5LCBvZmZzZXQpKSB7 CisJCXdoaWxlICghc2tsX2NoZWNrX21haW5fY2NzX2Nvb3JkaW5hdGVzKHBsYW5lX3N0YXRlLCB4 LCB5LCBvZmZzZXQsIDEpKSB7CiAJCQlpZiAob2Zmc2V0ID09IDApCiAJCQkJYnJlYWs7CiAKQEAg LTM1NTgsNyArMzYyMiw4IEBAIHN0YXRpYyBpbnQgc2tsX2NoZWNrX252MTJfYXV4X3N1cmZhY2Uo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCXVuc2lnbmVkIGlu dCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwotCWludCBtYXhfd2lkdGgg PSBza2xfbWF4X3BsYW5lX3dpZHRoKGZiLCAxLCByb3RhdGlvbik7CisJaW50IHV2ID0gaXNfY2Nz X21vZGlmaWVyKGZiLT5tb2RpZmllcikgPyAyIDogMTsKKwlpbnQgbWF4X3dpZHRoID0gc2tsX21h eF9wbGFuZV93aWR0aChmYiwgdXYsIHJvdGF0aW9uKTsKIAlpbnQgbWF4X2hlaWdodCA9IDQwOTY7 CiAJaW50IHggPSBwbGFuZV9zdGF0ZS0+YmFzZS5zcmMueDEgPj4gMTc7CiAJaW50IHkgPSBwbGFu ZV9zdGF0ZS0+YmFzZS5zcmMueTEgPj4gMTc7CkBAIC0zNTY2LDggKzM2MzEsOCBAQCBzdGF0aWMg aW50IHNrbF9jaGVja19udjEyX2F1eF9zdXJmYWNlKHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCiAJaW50IGggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5iYXNl LnNyYykgPj4gMTc7CiAJdTMyIG9mZnNldDsKIAotCWludGVsX2FkZF9mYl9vZmZzZXRzKCZ4LCAm eSwgcGxhbmVfc3RhdGUsIDEpOwotCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfYWxpZ25l ZF9vZmZzZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMSk7CisJaW50ZWxfYWRkX2ZiX29mZnNldHMo JngsICZ5LCBwbGFuZV9zdGF0ZSwgdXYpOworCW9mZnNldCA9IGludGVsX3BsYW5lX2NvbXB1dGVf YWxpZ25lZF9vZmZzZXQoJngsICZ5LCBwbGFuZV9zdGF0ZSwgdXYpOwogCiAJLyogRklYTUUgbm90 IHF1aXRlIHN1cmUgaG93L2lmIHRoZXNlIGFwcGx5IHRvIHRoZSBjaHJvbWEgcGxhbmUgKi8KIAlp ZiAodyA+IG1heF93aWR0aCB8fCBoID4gbWF4X2hlaWdodCkgewpAQCAtMzU3Niw5ICszNjQxLDQx 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 dXZdLnkgPSB5OwogCiAJcmV0dXJuIDA7CiB9CkBAIC0zNTg4LDE5ICszNjg1LDMwIEBAIHN0YXRp 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 OwogfQogCkBAIC0zNjA4LDYgKzM3MTYsNyBAQCBpbnQgc2tsX2NoZWNrX3BsYW5lX3N1cmZhY2Uo c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKIHsKIAljb25zdCBzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwogCWludCByZXQ7CisJ Ym9vbCBuZWVkc19hdXggPSBmYWxzZTsKIAogCXJldCA9IGludGVsX3BsYW5lX2NvbXB1dGVfZ3R0 KHBsYW5lX3N0YXRlKTsKIAlpZiAocmV0KQpAQCAtMzYxNywyMSArMzcyNiwzMSBAQCBpbnQgc2ts 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 KHBsYW5lX3N0YXRlKTsKQEAgLTQxNDksNiArNDI2OCw4IEBAIHN0YXRpYyB1MzIgc2tsX3BsYW5l X2N0bF90aWxpbmcodTY0IGZiX21vZGlmaWVyKQogCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1kg fAogCQkgICAgICAgUExBTkVfQ1RMX1JFTkRFUl9ERUNPTVBSRVNTSU9OX0VOQUJMRSB8CiAJCSAg ICAgICBQTEFORV9DVExfQ0xFQVJfQ09MT1JfRElTQUJMRTsKKwljYXNlIEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEX0dFTjEyX01DX0NDUzoKKwkJcmV0dXJuIFBMQU5FX0NUTF9USUxFRF9ZIHwgUExB TkVfQ1RMX01FRElBX0RFQ09NUFJFU1NJT05fRU5BQkxFOwogCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1lmX1RJTEVEOgogCQlyZXR1cm4gUExBTkVfQ1RMX1RJTEVEX1lGOwogCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lmX1RJTEVEX0NDUzoKQEAgLTk5MTMsNiArMTAwMzQsOCBAQCBza3lsYWtlX2dldF9p bml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCWZiLT5tb2Rp ZmllciA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPwogCQkJCUk5MTVfRk9STUFUX01PRF9Z X1RJTEVEX0dFTjEyX1JDX0NDUyA6CiAJCQkJSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOwor CQllbHNlIGlmICh2YWwgJiBQTEFORV9DVExfTUVESUFfREVDT01QUkVTU0lPTl9FTkFCTEUpCisJ CQlmYi0+bW9kaWZpZXIgPSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1M7CiAJ CWVsc2UKIAkJCWZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOwogCQlicmVh azsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5 cGVzLmgKaW5kZXggNDAzOTBkODU1ODE1Li45MTI0MWYyYmM1NzUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCkBAIC01MzAsNyAr NTMwLDcgQEAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKIAkJICovCiAJCXUzMiBzdHJpZGU7 CiAJCWludCB4LCB5OwotCX0gY29sb3JfcGxhbmVbMl07CisJfSBjb2xvcl9wbGFuZVs0XTsKIAog CS8qIHBsYW5lIGNvbnRyb2wgcmVnaXN0ZXIgKi8KIAl1MzIgY3RsOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMKaW5kZXggMjBkZjY0MzM2NjY5Li5mZGI5ZGNj NDA2MGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3By aXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwpA QCAtMTczOCw3ICsxNzM4LDggQEAgc3RhdGljIGludCBza2xfcGxhbmVfY2hlY2tfZmIoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJICAgICBmYi0+bW9kaWZpZXIg PT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEIHx8CiAJICAgICBmYi0+bW9kaWZpZXIgPT0gSTkx NV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8CiAJICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9G T1JNQVRfTU9EX1lmX1RJTEVEX0NDUyB8fAotCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUykpIHsKKwkgICAgIGZiLT5tb2RpZmllciA9PSBJ OTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1MgfHwKKwkgICAgIGZiLT5tb2RpZmll ciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1MpKSB7CiAJCURSTV9ERUJV R19LTVMoIlkvWWYgdGlsaW5nIG5vdCBzdXBwb3J0ZWQgaW4gSUYtSUQgbW9kZVxuIik7CiAJCXJl dHVybiAtRUlOVkFMOwogCX0KQEAgLTIxNTAsNyArMjE1MSwxNiBAQCBzdGF0aWMgY29uc3QgdTY0 IHNrbF9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX2Njc1tdID0gewogCURSTV9GT1JNQVRfTU9EX0lO VkFMSUQKIH07CiAKLXN0YXRpYyBjb25zdCB1NjQgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZGlmaWVy c19jY3NbXSA9IHsKK3N0YXRpYyBjb25zdCB1NjQgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZGlmaWVy c19tY19jY3NbXSA9IHsKKwlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1MsCisJ STkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTLAorCUk5MTVfRk9STUFUX01PRF9Z X1RJTEVELAorCUk5MTVfRk9STUFUX01PRF9YX1RJTEVELAorCURSTV9GT1JNQVRfTU9EX0xJTkVB UiwKKwlEUk1fRk9STUFUX01PRF9JTlZBTElECit9OworCitzdGF0aWMgY29uc3QgdTY0IGdlbjEy X3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNfcmNfY2NzW10gPSB7CiAJSTkxNV9GT1JNQVRfTU9EX1lf VElMRURfR0VOMTJfUkNfQ0NTLAogCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVELAogCUk5MTVfRk9S TUFUX01PRF9YX1RJTEVELApAQCAtMjMwNiwxMCArMjMxNiwyMSBAQCBzdGF0aWMgYm9vbCBza2xf cGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAogCX0K IH0KIAorc3RhdGljIGJvb2wgZ2VuMTJfcGxhbmVfc3VwcG9ydHNfbWNfY2NzKGVudW0gcGxhbmVf aWQgcGxhbmVfaWQpCit7CisJcmV0dXJuIHBsYW5lX2lkIDwgUExBTkVfU1BSSVRFNDsKK30KKwog c3RhdGljIGJvb2wgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9w bGFuZSAqX3BsYW5lLAogCQkJCQkgICAgIHUzMiBmb3JtYXQsIHU2NCBtb2RpZmllcikKIHsKKwlz dHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUoX3BsYW5lKTsKKwogCXN3 aXRjaCAobW9kaWZpZXIpIHsKKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01D X0NDUzoKKwkJaWYgKCFnZW4xMl9wbGFuZV9zdXBwb3J0c19tY19jY3MocGxhbmUtPmlkKSkKKwkJ CXJldHVybiBmYWxzZTsKKwkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSBEUk1fRk9STUFUX01P RF9MSU5FQVI6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDoKIAljYXNlIEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEOgpAQCAtMjMyNywxNCArMjM0OCwxNyBAQCBzdGF0aWMgYm9vbCBnZW4x Ml9wbGFuZV9mb3JtYXRfbW9kX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX3BsYW5lICpfcGxhbmUsCiAJ CWlmIChpc19jY3NfbW9kaWZpZXIobW9kaWZpZXIpKQogCQkJcmV0dXJuIHRydWU7CiAJCS8qIGZh bGwgdGhyb3VnaCAqLwotCWNhc2UgRFJNX0ZPUk1BVF9SR0I1NjU6Ci0JY2FzZSBEUk1fRk9STUFU X1hSR0IyMTAxMDEwOgotCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKIAljYXNlIERSTV9G T1JNQVRfWVVZVjoKIAljYXNlIERSTV9GT1JNQVRfWVZZVToKIAljYXNlIERSTV9GT1JNQVRfVVlW WToKIAljYXNlIERSTV9GT1JNQVRfVllVWToKKwkJaWYgKG1vZGlmaWVyID09IEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEX0dFTjEyX01DX0NDUykKKwkJCXJldHVybiB0cnVlOworCQkvKiBmYWxsIHRo cm91Z2ggKi8KIAljYXNlIERSTV9GT1JNQVRfTlYxMjoKKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1 OgorCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKKwljYXNlIERSTV9GT1JNQVRfWEJHUjIx MDEwMTA6CiAJY2FzZSBEUk1fRk9STUFUX1AwMTA6CiAJY2FzZSBEUk1fRk9STUFUX1AwMTI6CiAJ Y2FzZSBEUk1fRk9STUFUX1AwMTY6CkBAIC0yNDcxLDYgKzI0OTUsMTQgQEAgc3RhdGljIGNvbnN0 IHUzMiAqaWNsX2dldF9wbGFuZV9mb3JtYXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAl9CiB9CiAKK3N0YXRpYyBjb25zdCB1NjQgKmdlbjEyX2dldF9wbGFuZV9tb2RpZmll cnMoZW51bSBwbGFuZV9pZCBwbGFuZV9pZCkKK3sKKwlpZiAoZ2VuMTJfcGxhbmVfc3VwcG9ydHNf bWNfY2NzKHBsYW5lX2lkKSkKKwkJcmV0dXJuIGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNf bWNfY2NzOworCWVsc2UKKwkJcmV0dXJuIGdlbjEyX3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNfcmNf Y2NzOworfQorCiBzdGF0aWMgYm9vbCBza2xfcGxhbmVfaGFzX2NjcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICBlbnVtIHBpcGUgcGlwZSwgZW51bSBwbGFuZV9p ZCBwbGFuZV9pZCkKIHsKQEAgLTI1MzcsNyArMjU2OSw3IEBAIHNrbF91bml2ZXJzYWxfcGxhbmVf Y3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCXBsYW5lLT5oYXNf Y2NzID0gc2tsX3BsYW5lX2hhc19jY3MoZGV2X3ByaXYsIHBpcGUsIHBsYW5lX2lkKTsKIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewotCQltb2RpZmllcnMgPSBnZW4xMl9wbGFuZV9m b3JtYXRfbW9kaWZpZXJzX2NjczsKKwkJbW9kaWZpZXJzID0gZ2VuMTJfZ2V0X3BsYW5lX21vZGlm aWVycyhwbGFuZV9pZCk7CiAJCXBsYW5lX2Z1bmNzID0gJmdlbjEyX3BsYW5lX2Z1bmNzOwogCX0g ZWxzZSB7CiAJCWlmIChwbGFuZS0+aGFzX2NjcykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4 IGMxNTgzZjVjNDEzYi4uNWZhZDljYjM1OTc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAg LTY3MTAsNiArNjcxMCw3IEBAIGVudW0gewogI2RlZmluZSAgIFBMQU5FX0NUTF9USUxFRF9ZCQkJ KDQgPDwgMTApCiAjZGVmaW5lICAgUExBTkVfQ1RMX1RJTEVEX1lGCQkJKDUgPDwgMTApCiAjZGVm aW5lICAgUExBTkVfQ1RMX0ZMSVBfSE9SSVpPTlRBTAkJKDEgPDwgOCkKKyNkZWZpbmUgICBQTEFO RV9DVExfTUVESUFfREVDT01QUkVTU0lPTl9FTkFCTEUJKDEgPDwgNCkgLyogVEdMKyAqLwogI2Rl ZmluZSAgIFBMQU5FX0NUTF9BTFBIQV9NQVNLCQkJKDB4MyA8PCA0KSAvKiBQcmUtR0xLICovCiAj ZGVmaW5lICAgUExBTkVfQ1RMX0FMUEhBX0RJU0FCTEUJCSgwIDw8IDQpCiAjZGVmaW5lICAgUExB TkVfQ1RMX0FMUEhBX1NXX1BSRU1VTFRJUExZCSgyIDw8IDQpCi0tIAoyLjIwLjEKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==