From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas De Marchi Subject: [PATCH v3 21/23] drm/i915/tgl: Gen-12 render decompression Date: Fri, 23 Aug 2019 01:20:53 -0700 Message-ID: <20190823082055.5992-22-lucas.demarchi@intel.com> References: <20190823082055.5992-1-lucas.demarchi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id C92CF6EC38 for ; Fri, 23 Aug 2019 08:54:11 +0000 (UTC) In-Reply-To: <20190823082055.5992-1-lucas.demarchi@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: Daniel Vetter , Dhinakaran Pandiyan List-Id: intel-gfx@lists.freedesktop.org RnJvbTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ CgpHZW4tMTIgZGVjb21wcmVzc2lvbiBpcyBzdXBwb3J0ZWQgd2l0aCBZLXRpbGVkIG1haW4gc3Vy ZmFjZS4gVGhlIENDUyBpcwpsaW5lYXIgYW5kIGhhcyA0IGJpdHMgb2YgZGF0YSBmb3IgZWFjaCBt YWluIHN1cmZhY2UgY2FjaGUgbGluZSBwYWlyLCBhCnJhdGlvIG9mIDE6MjU2LiBHZW4tMTIgZGlz cGxheSBkZWNvbXByZXNzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIGJ1ZmZlcnMKY29tcHJlc3Nl ZCBieSBlYXJsaWVyIEdQVXMsIHNvIG1ha2UgdXNlIG9mIGEgbmV3IG1vZGlmaWVyIHRvIGlkZW50 aWZ5Cmdlbi0xMiBjb21wcmVzc2lvbi4gQW5vdGhlciBub3RhYmxlIGNoYW5nZSBpcyB0aGF0IGRl Y29tcHJlc3Npb24gaXMKc3VwcG9ydGVkIG9uIGFsbCBwbGFuZXMgZXhjZXB0IGN1cnNvciBhbmQg b24gYWxsIHBpcGVzLiBUaGlzIHBhdGNoIGFkZHMKZGVjb21wcmVzc2lvbiBzdXBwb3J0IGZvciBb QSxYXUJHUjg4OCBwaXhlbCBmb3JtYXRzLgoKQnNwZWM6IDE4NDM3Cgp2MjogRml4IGNoZWNrcGF0 Y2ggd2FybmluZ3MgKEx1Y2FzKQoKQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+CkNjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+ CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IEx1Y2FzIERlIE1hcmNoaSA8bHVjYXMuZGVtYXJjaGlAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIHwgNjMgKysr KysrKysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3By aXRlLmMgIHwgMjMgKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3MSBpbnNlcnRpb25zKCspLCAx NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheS5jCmluZGV4IDEwOWQ0ZmQ5NjFjNi4uMTkwYWRiZmZlMDU1IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTkxMiw2ICsxOTEyLDEwIEBA IGludGVsX3RpbGVfd2lkdGhfYnl0ZXMoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs IGludCBjb2xvcl9wbGFuZSkKIAkJaWYgKGNvbG9yX3BsYW5lID09IDEpCiAJCQlyZXR1cm4gMTI4 OwogCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dF TjEyX1JDX0NDUzoKKwkJaWYgKGNvbG9yX3BsYW5lID09IDEpCisJCQlyZXR1cm4gY3BwOworCQkv KiBmYWxsIHRocm91Z2ggKi8KIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgogCQlpZiAo SVNfR0VOKGRldl9wcml2LCAyKSB8fCBIQVNfMTI4X0JZVEVfWV9USUxJTkcoZGV2X3ByaXYpKQog CQkJcmV0dXJuIDEyODsKQEAgLTIwNDUsNiArMjA0OSw4IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQg aW50ZWxfc3VyZl9hbGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJ CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCQlyZXR1cm4gMjU2ICogMTAyNDsKIAkJ cmV0dXJuIDA7CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJ CXJldHVybiA0ICogNCAqIDEwMjQ7CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6 CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOgogCWNhc2UgSTkxNV9GT1JNQVRf TU9EX1lfVElMRUQ6CkBAIC0yMjQyLDcgKzIyNDgsOCBAQCBzdGF0aWMgdTMyIGludGVsX2FkanVz dF90aWxlX29mZnNldChpbnQgKngsIGludCAqeSwKIAogc3RhdGljIGJvb2wgaXNfc3VyZmFjZV9s aW5lYXIodTY0IG1vZGlmaWVyLCBpbnQgY29sb3JfcGxhbmUpCiB7Ci0JcmV0dXJuIG1vZGlmaWVy ID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUjsKKwlyZXR1cm4gbW9kaWZpZXIgPT0gRFJNX0ZPUk1B VF9NT0RfTElORUFSIHx8CisJICAgICAgIChtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRF9HRU4xMl9SQ19DQ1MgJiYgY29sb3JfcGxhbmUgPT0gMSk7CiB9CiAKIHN0YXRpYyB1MzIg aW50ZWxfYWRqdXN0X2FsaWduZWRfb2Zmc2V0KGludCAqeCwgaW50ICp5LApAQCAtMjQyOSw2ICsy NDM2LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9mYl9tb2RpZmllcl90b190aWxpbmco dTY0IGZiX21vZGlmaWVyKQogCQlyZXR1cm4gSTkxNV9USUxJTkdfWDsKIAljYXNlIEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEOgogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOgorCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTOgogCQlyZXR1cm4gSTkxNV9U SUxJTkdfWTsKIAlkZWZhdWx0OgogCQlyZXR1cm4gSTkxNV9USUxJTkdfTk9ORTsKQEAgLTI0NDks NyArMjQ1Nyw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGls aW5nKHU2NCBmYl9tb2RpZmllcikKICAqIHVzIGEgcmF0aW8gb2Ygb25lIGJ5dGUgaW4gdGhlIEND UyBmb3IgZWFjaCA4eDE2IHBpeGVscyBpbiB0aGUKICAqIG1haW4gc3VyZmFjZS4KICAqLwotc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gY2NzX2Zvcm1hdHNbXSA9IHsKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIHNrbF9jY3NfZm9ybWF0c1tdID0gewogCXsg LmZvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODgsIC5kZXB0aCA9IDI0LCAubnVtX3BsYW5lcyA9 IDIsCiAJICAuY3BwID0geyA0LCAxLCB9LCAuaHN1YiA9IDgsIC52c3ViID0gMTYsIH0sCiAJeyAu Zm9ybWF0ID0gRFJNX0ZPUk1BVF9YQkdSODg4OCwgLmRlcHRoID0gMjQsIC5udW1fcGxhbmVzID0g MiwKQEAgLTI0NjAsNiArMjQ2OCwyNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mb3JtYXRf aW5mbyBjY3NfZm9ybWF0c1tdID0gewogCSAgLmNwcCA9IHsgNCwgMSwgfSwgLmhzdWIgPSA4LCAu dnN1YiA9IDE2LCAuaGFzX2FscGhhID0gdHJ1ZSwgfSwKIH07CiAKKy8qCisgKiBHZW4tMTIgY29t cHJlc3Npb24gdXNlcyA0IGJpdHMgb2YgQ0NTIGRhdGEgZm9yIGVhY2ggY2FjaGUgbGluZSBwYWly IGluIHRoZQorICogbWFpbiBzdXJmYWNlLiBBbmQgZWFjaCA2NEIgQ0NTIGNhY2hlIGxpbmUgcmVw cmVzZW50cyBhbiBhcmVhIG9mIDR4MSBZLXRpbGVzCisgKiBpbiB0aGUgbWFpbiBzdXJmYWNlLiBX aXRoIDQgYnl0ZSBwaXhlbHMgYW5kIGVhY2ggWS10aWxlIGhhdmluZyBkaW1lbnNpb25zIG9mCisg KiAzMngzMiBwaXhlbHMsIHRoZSByYXRpbyB0dXJucyBvdXQgdG8gMUIgaW4gdGhlIENDUyBmb3Ig ZXZlcnkgMiB4IDMyIHBpeGVscyBpbgorICogdGhlIG1haW4gc3VyZmFjZS4KKyAqLworc3RhdGlj IGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gZ2VuMTJfY2NzX2Zvcm1hdHNbXSA9IHsKKwl7 IC5mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4LCAuZGVwdGggPSAyNCwgLm51bV9wbGFuZXMg PSAyLAorCSAgLmNwcCA9IHsgNCwgMSwgfSwgLmhzdWIgPSAyLCAudnN1YiA9IDMyLCB9LAorCXsg LmZvcm1hdCA9IERSTV9GT1JNQVRfWEJHUjg4ODgsIC5kZXB0aCA9IDI0LCAubnVtX3BsYW5lcyA9 IDIsCisJICAuY3BwID0geyA0LCAxLCB9LCAuaHN1YiA9IDIsIC52c3ViID0gMzIsIH0sCisJeyAu Zm9ybWF0ID0gRFJNX0ZPUk1BVF9BUkdCODg4OCwgLmRlcHRoID0gMzIsIC5udW1fcGxhbmVzID0g MiwKKwkgIC5jcHAgPSB7IDQsIDEsIH0sIC5oc3ViID0gMiwgLnZzdWIgPSAzMiwgLmhhc19hbHBo YSA9IHRydWUgfSwKKwl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX0FCR1I4ODg4LCAuZGVwdGggPSAz MiwgLm51bV9wbGFuZXMgPSAyLAorCSAgLmNwcCA9IHsgNCwgMSwgfSwgLmhzdWIgPSAyLCAudnN1 YiA9IDMyLCAuaGFzX2FscGhhID0gdHJ1ZSB9LAorfTsKKwogc3RhdGljIGNvbnN0IHN0cnVjdCBk cm1fZm9ybWF0X2luZm8gKgogbG9va3VwX2Zvcm1hdF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1fZm9y bWF0X2luZm8gZm9ybWF0c1tdLAogCQkgICBpbnQgbnVtX2Zvcm1hdHMsIHUzMiBmb3JtYXQpCkBA IC0yNDgwLDggKzI1MDYsMTIgQEAgaW50ZWxfZ2V0X2Zvcm1hdF9pbmZvKGNvbnN0IHN0cnVjdCBk cm1fbW9kZV9mYl9jbWQyICpjbWQpCiAJc3dpdGNoIChjbWQtPm1vZGlmaWVyWzBdKSB7CiAJY2Fz ZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZf VElMRURfQ0NTOgotCQlyZXR1cm4gbG9va3VwX2Zvcm1hdF9pbmZvKGNjc19mb3JtYXRzLAotCQkJ CQkgIEFSUkFZX1NJWkUoY2NzX2Zvcm1hdHMpLAorCQlyZXR1cm4gbG9va3VwX2Zvcm1hdF9pbmZv KHNrbF9jY3NfZm9ybWF0cywKKwkJCQkJICBBUlJBWV9TSVpFKHNrbF9jY3NfZm9ybWF0cyksCisJ CQkJCSAgY21kLT5waXhlbF9mb3JtYXQpOworCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURf R0VOMTJfUkNfQ0NTOgorCQlyZXR1cm4gbG9va3VwX2Zvcm1hdF9pbmZvKGdlbjEyX2Njc19mb3Jt YXRzLAorCQkJCQkgIEFSUkFZX1NJWkUoZ2VuMTJfY2NzX2Zvcm1hdHMpLAogCQkJCQkgIGNtZC0+ cGl4ZWxfZm9ybWF0KTsKIAlkZWZhdWx0OgogCQlyZXR1cm4gTlVMTDsKQEAgLTI0OTAsNyArMjUy MCw4IEBAIGludGVsX2dldF9mb3JtYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21k MiAqY21kKQogCiBib29sIGlzX2Njc19tb2RpZmllcih1NjQgbW9kaWZpZXIpCiB7Ci0JcmV0dXJu IG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAorCXJldHVybiBtb2Rp ZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1MgfHwKKwkgICAgICAg bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTIHx8CiAJICAgICAgIG1vZGlm aWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1M7CiB9CiAKQEAgLTI2NTksNyArMjY5 MCwxMyBAQCBpbnRlbF9maWxsX2ZiX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQkJaW50IG1haW5feCwgbWFpbl95OwogCQkJaW50IGNjc194LCBjY3NfeTsKIAotCQkJ aW50ZWxfdGlsZV9kaW1zKGZiLCBpLCAmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0KTsKKwkJCWlm ICghaXNfc3VyZmFjZV9saW5lYXIoZmItPm1vZGlmaWVyLCBpKSkgeworCQkJCWludGVsX3RpbGVf ZGltcyhmYiwgaSwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdodCk7CisJCQl9IGVsc2UgeworCQkJ CXRpbGVfd2lkdGggPSA2NCAvIGNwcDsKKwkJCQl0aWxlX2hlaWdodCA9IDE7CisJCQl9CisKIAkJ CXRpbGVfd2lkdGggKj0gaHN1YjsKIAkJCXRpbGVfaGVpZ2h0ICo9IHZzdWI7CiAKQEAgLTQwNTMs NiArNDA5MCw4IEBAIHN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF90aWxpbmcodTY0IGZiX21vZGlm aWVyKQogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6CiAJCXJldHVybiBQTEFORV9DVExf VElMRURfWTsKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUzoKKwkJLyogZmFsbCB0 aHJvdWdoICovCisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CiAJ CXJldHVybiBQTEFORV9DVExfVElMRURfWSB8IFBMQU5FX0NUTF9SRU5ERVJfREVDT01QUkVTU0lP Tl9FTkFCTEU7CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6CiAJCXJldHVybiBQTEFO RV9DVExfVElMRURfWUY7CkBAIC05ODI4LDcgKzk4NjcsOSBAQCBza3lsYWtlX2dldF9pbml0aWFs X3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAljYXNlIFBMQU5FX0NUTF9U SUxFRF9ZOgogCQlwbGFuZV9jb25maWctPnRpbGluZyA9IEk5MTVfVElMSU5HX1k7CiAJCWlmICh2 YWwgJiBQTEFORV9DVExfUkVOREVSX0RFQ09NUFJFU1NJT05fRU5BQkxFKQotCQkJZmItPm1vZGlm aWVyID0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOworCQkJZmItPm1vZGlmaWVyID0gSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMiA/CisJCQkJSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VO MTJfUkNfQ0NTIDoKKwkJCQlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1M7CiAJCWVsc2UKIAkJ CWZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOwogCQlicmVhazsKQEAgLTE1 Njk1LDYgKzE1NzM2LDE0IEBAIHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1 Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmludGVsX2ZiLAogCQkgICAgaXNfY2NzX21vZGlmaWVyKGZi LT5tb2RpZmllcikpCiAJCQlzdHJpZGVfYWxpZ25tZW50ICo9IDQ7CiAKKwkJLyoKKwkJICogVGhl IG1haW4gc3VyZmFjZSBwaXRjaCBtdXN0IGJlIHBhZGVkIHRvIGEgbXVsdGlwbGUgb2YgZm91cgor CQkgKiB0aWxlIHdpZHRocy4KKwkJICovCisJCWlmIChmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JN QVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTICYmCisJCSAgICBpID09IDApCisJCQlzdHJpZGVf YWxpZ25tZW50ICo9IDQ7CisKIAkJaWYgKGZiLT5waXRjaGVzW2ldICYgKHN0cmlkZV9hbGlnbm1l bnQgLSAxKSkgewogCQkJRFJNX0RFQlVHX0tNUygicGxhbmUgJWQgcGl0Y2ggKCVkKSBtdXN0IGJl IGF0IGxlYXN0ICV1IGJ5dGUgYWxpZ25lZFxuIiwKIAkJCQkgICAgICBpLCBmYi0+cGl0Y2hlc1tp XSwgc3RyaWRlX2FsaWdubWVudCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9zcHJpdGUuYwppbmRleCA3MWRhZTNjMmY5ZGIuLjczZDMyMDE3YmU4OSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCkBAIC01NDcsNiArNTQ3LDcgQEAg c2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAljb25zdCBzdHJ1 Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0YXRlLT5ja2V5Owog CXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY29sb3JfcGxhbmVdLm9m ZnNldDsKIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShwbGFuZV9zdGF0ZSwgY29sb3Jf cGxhbmUpOworCXUzMiBhdXhfZGlzdCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS5vZmZz ZXQgLSBzdXJmX2FkZHI7CiAJdTMyIGF1eF9zdHJpZGUgPSBza2xfcGxhbmVfc3RyaWRlKHBsYW5l X3N0YXRlLCAxKTsKIAlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2UuZHN0LngxOwogCWlu dCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7CkBAIC01ODgsOCArNTg5LDEwIEBA IHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJSTkxNV9XUklU RV9GVyhQTEFORV9TVFJJREUocGlwZSwgcGxhbmVfaWQpLCBzdHJpZGUpOwogCUk5MTVfV1JJVEVf RlcoUExBTkVfUE9TKHBpcGUsIHBsYW5lX2lkKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOwog CUk5MTVfV1JJVEVfRlcoUExBTkVfU0laRShwaXBlLCBwbGFuZV9pZCksIChzcmNfaCA8PCAxNikg fCBzcmNfdyk7Ci0JSTkxNV9XUklURV9GVyhQTEFORV9BVVhfRElTVChwaXBlLCBwbGFuZV9pZCks Ci0JCSAgICAgIChwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ub2Zmc2V0IC0gc3VyZl9hZGRy KSB8IGF1eF9zdHJpZGUpOworCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMikKKwkJYXV4 X2Rpc3QgfD0gYXV4X3N0cmlkZTsKKwlJOTE1X1dSSVRFX0ZXKFBMQU5FX0FVWF9ESVNUKHBpcGUs IHBsYW5lX2lkKSwgYXV4X2Rpc3QpOwogCiAJaWYgKGljbF9pc19oZHJfcGxhbmUoZGV2X3ByaXYs IHBsYW5lX2lkKSkgewogCQl1MzIgY3VzX2N0bCA9IDA7CkBAIC0xNzQ1LDcgKzE3NDgsOCBAQCBz dGF0aWMgaW50IHNrbF9wbGFuZV9jaGVja19mYihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKIAkgICAgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRCB8fAogCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCB8 fAogCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAot CSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRF9DQ1MpKSB7CisJ ICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEX0NDUyB8fAorCSAg ICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUykp IHsKIAkJRFJNX0RFQlVHX0tNUygiWS9ZZiB0aWxpbmcgbm90IHN1cHBvcnRlZCBpbiBJRi1JRCBt b2RlXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMjE1Nyw3ICsyMTYxLDggQEAgc3Rh dGljIGNvbnN0IHU2NCBza2xfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3NbXSA9IHsKIAlEUk1f Rk9STUFUX01PRF9JTlZBTElECiB9OwogCi1zdGF0aWMgY29uc3QgdTY0IGdlbjEyX3BsYW5lX2Zv cm1hdF9tb2RpZmllcnNfbm9jY3NbXSA9IHsKK3N0YXRpYyBjb25zdCB1NjQgZ2VuMTJfcGxhbmVf Zm9ybWF0X21vZGlmaWVyc19jY3NbXSA9IHsKKwlJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4x Ml9SQ19DQ1MsCiAJSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCiAJSTkxNV9GT1JNQVRfTU9EX1hf VElMRUQsCiAJRFJNX0ZPUk1BVF9NT0RfTElORUFSLApAQCAtMjMxOSw2ICsyMzI0LDcgQEAgc3Rh dGljIGJvb2wgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFu ZSAqX3BsYW5lLAogCWNhc2UgRFJNX0ZPUk1BVF9NT0RfTElORUFSOgogCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1hfVElMRUQ6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRDoKKwljYXNlIEk5 MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUzoKIAkJYnJlYWs7CiAJZGVmYXVsdDoK IAkJcmV0dXJuIGZhbHNlOwpAQCAtMjMyOSw2ICsyMzM1LDkgQEAgc3RhdGljIGJvb2wgZ2VuMTJf cGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAqX3BsYW5lLAogCWNh c2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKIAljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6CiAJY2Fz ZSBEUk1fRk9STUFUX0FCR1I4ODg4OgorCQlpZiAoaXNfY2NzX21vZGlmaWVyKG1vZGlmaWVyKSkK KwkJCXJldHVybiB0cnVlOworCQkvKiBmYWxsIHRocm91Z2ggKi8KIAljYXNlIERSTV9GT1JNQVRf UkdCNTY1OgogCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKIAljYXNlIERSTV9GT1JNQVRf WEJHUjIxMDEwMTA6CkBAIC0yNTI0LDEzICsyNTMzLDExIEBAIHNrbF91bml2ZXJzYWxfcGxhbmVf Y3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZm9ybWF0cyA9IHNr bF9nZXRfcGxhbmVfZm9ybWF0cyhkZXZfcHJpdiwgcGlwZSwKIAkJCQkJCXBsYW5lX2lkLCAmbnVt X2Zvcm1hdHMpOwogCisJcGxhbmUtPmhhc19jY3MgPSBza2xfcGxhbmVfaGFzX2NjcyhkZXZfcHJp diwgcGlwZSwgcGxhbmVfaWQpOwogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7Ci0J CS8qIFRPRE86IEltcGxlbWVudCBzdXBwb3J0IGZvciBnZW4tMTIgQ0NTIG1vZGlmaWVycyAqLwot CQlwbGFuZS0+aGFzX2NjcyA9IGZhbHNlOwotCQltb2RpZmllcnMgPSBnZW4xMl9wbGFuZV9mb3Jt YXRfbW9kaWZpZXJzX25vY2NzOworCQltb2RpZmllcnMgPSBnZW4xMl9wbGFuZV9mb3JtYXRfbW9k aWZpZXJzX2NjczsKIAkJcGxhbmVfZnVuY3MgPSAmZ2VuMTJfcGxhbmVfZnVuY3M7CiAJfSBlbHNl IHsKLQkJcGxhbmUtPmhhc19jY3MgPSBza2xfcGxhbmVfaGFzX2NjcyhkZXZfcHJpdiwgcGlwZSwg cGxhbmVfaWQpOwogCQlpZiAocGxhbmUtPmhhc19jY3MpCiAJCQltb2RpZmllcnMgPSBza2xfcGxh bmVfZm9ybWF0X21vZGlmaWVyc19jY3M7CiAJCWVsc2UKLS0gCjIuMjMuMAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4