From mboxrd@z Thu Jan 1 00:00:00 1970 From: Radhakrishna Sripada Subject: [PATCH v4 04/10] drm/i915/tgl: Gen-12 render decompression Date: Mon, 14 Oct 2019 17:05:27 -0700 Message-ID: <20191015000533.11425-5-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 3DFEE6E1CF 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+ CgpHZW4tMTIgZGlzcGxheSBkZWNvbXByZXNzaW9uIG9wZXJhdGVzIG9uIFktdGlsZWQgY29tcHJl c3NlZCBtYWluIHN1cmZhY2UuClRoZSBDQ1MgaXMgbGluZWFyIGFuZCBoYXMgNCBiaXRzIG9mIG1l dGFkYXRhIGZvciBlYWNoIG1haW4gc3VyZmFjZSBjYWNoZQpsaW5lIHBhaXIsIGEgc2l6ZSByYXRp byBvZiAxOjI1Ni4gR2VuLTEyIGRpc3BsYXkgZGVjb21wcmVzc2lvbiBpcwppbmNvbXBhdGlibGUg d2l0aCBidWZmZXJzIGNvbXByZXNzZWQgYnkgZWFybGllciBHUFVzLCBzbyBtYWtlIHVzZSBvZiBh IG5ldwptb2RpZmllciB0byBpZGVudGlmeSBnZW4tMTIgY29tcHJlc3Npb24uIEFub3RoZXIgbm90 YWJsZSBjaGFuZ2UgaXMgdGhhdApyZW5kZXIgZGVjb21wcmVzc2lvbiBpcyBzdXBwb3J0ZWQgb24g YWxsIHBsYW5lcyBleGNlcHQgY3Vyc29yIGFuZCBvbiBhbGwKcGlwZXMuIFN0YXJ0IGJ5IGFkZGlu ZyByZW5kZXIgZGVjb21wcmVzc2lvbiBzdXBwb3J0IGZvciBbQSxYXUJHUjg4OCBwaXhlbApmb3Jt YXRzLgoKdjI6IEZpeCBjaGVja3BhdGNoIHdhcm5pbmdzIChMdWNhcykKdjM6ClJlYmFzZSwgZGlz YWJsZSBjb2xvciBjbGVhciwgc3R5bGluZyBjaGFuZ2VzIGFuZCBtb2RpZnkKaW50ZWxfdGlsZV93 aWR0aF9ieXRlcyBhbmQgaW50ZWxfdGlsZV9oZWlnaHQgdG8gaGFuZGxlIGxpbmVhciBDQ1MKCkNj OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgpDYzogTWF0 dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KQ2M6IE5hbmxleSBHIENoZXJ5IDxu YW5sZXkuZy5jaGVyeUBpbnRlbC5jb20+CkNjOiBKYXNvbiBFa3N0cmFuZCA8amFzb25Aamxla3N0 cmFuZC5uZXQ+ClNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4u cGFuZGl5YW5AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBMdWNhcyBEZSBNYXJjaGkgPGx1Y2Fz LmRlbWFyY2hpQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYyB8IDg1ICsrKysrKysrKysrKysrKystLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jICB8IDIzICsrKystLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAgICAgfCAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDg0 IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMGEyZjY4ZGQ3NjIwLi5hMWRjY2NhNmEwM2Qg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCkBAIC0x OTA5LDYgKzE5MDksMTAgQEAgaW50ZWxfdGlsZV93aWR0aF9ieXRlcyhjb25zdCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwgaW50IGNvbG9yX3BsYW5lKQogCQlpZiAoY29sb3JfcGxhbmUgPT0g MSkKIAkJCXJldHVybiAxMjg7CiAJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2UgSTkxNV9GT1JN QVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTOgorCQlpZiAoY29sb3JfcGxhbmUgPT0gMSkKKwkJ CXJldHVybiA2NDsKKwkJLyogZmFsbCB0aHJvdWdoICovCiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRDoKIAkJaWYgKElTX0dFTihkZXZfcHJpdiwgMikgfHwgSEFTXzEyOF9CWVRFX1lfVElM SU5HKGRldl9wcml2KSkKIAkJCXJldHVybiAxMjg7CkBAIC0xOTQyLDggKzE5NDYsMTUgQEAgaW50 ZWxfdGlsZV93aWR0aF9ieXRlcyhjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50 IGNvbG9yX3BsYW5lKQogc3RhdGljIHVuc2lnbmVkIGludAogaW50ZWxfdGlsZV9oZWlnaHQoY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjb2xvcl9wbGFuZSkKIHsKLQlyZXR1 cm4gaW50ZWxfdGlsZV9zaXplKHRvX2k5MTUoZmItPmRldikpIC8KLQkJaW50ZWxfdGlsZV93aWR0 aF9ieXRlcyhmYiwgY29sb3JfcGxhbmUpOworCXN3aXRjaCAoZmItPm1vZGlmaWVyKSB7CisJY2Fz ZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1M6CisJCWlmIChjb2xvcl9wbGFu ZSA9PSAxKQorCQkJcmV0dXJuIDE7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWRlZmF1bHQ6CisJ CXJldHVybiBpbnRlbF90aWxlX3NpemUodG9faTkxNShmYi0+ZGV2KSkgLworCQkJaW50ZWxfdGls ZV93aWR0aF9ieXRlcyhmYiwgY29sb3JfcGxhbmUpOworCX0KIH0KIAogLyogUmV0dXJuIHRoZSB0 aWxlIGRpbWVuc2lvbnMgaW4gcGl4ZWwgdW5pdHMgKi8KQEAgLTIwNDIsNiArMjA1Myw4IEBAIHN0 YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfc3VyZl9hbGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsCiAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCQlyZXR1 cm4gMjU2ICogMTAyNDsKIAkJcmV0dXJuIDA7CisJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxF RF9HRU4xMl9SQ19DQ1M6CisJCXJldHVybiAxNiAqIDEwMjQ7CiAJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfWV9USUxFRF9DQ1M6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOgogCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6CkBAIC0yMjM4LDcgKzIyNTEsOCBAQCBzdGF0aWMg dTMyIGludGVsX2FkanVzdF90aWxlX29mZnNldChpbnQgKngsIGludCAqeSwKIAogc3RhdGljIGJv b2wgaXNfc3VyZmFjZV9saW5lYXIodTY0IG1vZGlmaWVyLCBpbnQgY29sb3JfcGxhbmUpCiB7Ci0J cmV0dXJuIG1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUjsKKwlyZXR1cm4gbW9kaWZp ZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElORUFSIHx8CisJICAgICAgIChtb2RpZmllciA9PSBJOTE1 X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1MgJiYgY29sb3JfcGxhbmUgPT0gMSk7CiB9 CiAKIHN0YXRpYyB1MzIgaW50ZWxfYWRqdXN0X2FsaWduZWRfb2Zmc2V0KGludCAqeCwgaW50ICp5 LApAQCAtMjQyNSw2ICsyNDM5LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9mYl9tb2Rp Zmllcl90b190aWxpbmcodTY0IGZiX21vZGlmaWVyKQogCQlyZXR1cm4gSTkxNV9USUxJTkdfWDsK IAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lf VElMRURfQ0NTOgorCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTOgog CQlyZXR1cm4gSTkxNV9USUxJTkdfWTsKIAlkZWZhdWx0OgogCQlyZXR1cm4gSTkxNV9USUxJTkdf Tk9ORTsKQEAgLTI0NDUsNyArMjQ2MCw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfZmJf bW9kaWZpZXJfdG9fdGlsaW5nKHU2NCBmYl9tb2RpZmllcikKICAqIHVzIGEgcmF0aW8gb2Ygb25l IGJ5dGUgaW4gdGhlIENDUyBmb3IgZWFjaCA4eDE2IHBpeGVscyBpbiB0aGUKICAqIG1haW4gc3Vy ZmFjZS4KICAqLwotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZm9ybWF0X2luZm8gY2NzX2Zvcm1h dHNbXSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIHNrbF9jY3NfZm9y bWF0c1tdID0gewogCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfWFJHQjg4ODgsIC5kZXB0aCA9IDI0 LCAubnVtX3BsYW5lcyA9IDIsCiAJICAuY3BwID0geyA0LCAxLCB9LCAuaHN1YiA9IDgsIC52c3Vi ID0gMTYsIH0sCiAJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9YQkdSODg4OCwgLmRlcHRoID0gMjQs IC5udW1fcGxhbmVzID0gMiwKQEAgLTI0NTYsNiArMjQ3MSwyNCBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9mb3JtYXRfaW5mbyBjY3NfZm9ybWF0c1tdID0gewogCSAgLmNwcCA9IHsgNCwgMSwg fSwgLmhzdWIgPSA4LCAudnN1YiA9IDE2LCAuaGFzX2FscGhhID0gdHJ1ZSwgfSwKIH07CiAKKy8q CisgKiBHZW4tMTIgY29tcHJlc3Npb24gdXNlcyA0IGJpdHMgb2YgQ0NTIGRhdGEgZm9yIGVhY2gg Y2FjaGUgbGluZSBwYWlyIGluIHRoZQorICogbWFpbiBzdXJmYWNlLiBBbmQgZWFjaCA2NEIgQ0NT IGNhY2hlIGxpbmUgcmVwcmVzZW50cyBhbiBhcmVhIG9mIDR4MSBZLXRpbGVzCisgKiBpbiB0aGUg bWFpbiBzdXJmYWNlLiBXaXRoIDQgYnl0ZSBwaXhlbHMgYW5kIGVhY2ggWS10aWxlIGhhdmluZyBk aW1lbnNpb25zIG9mCisgKiAzMngzMiBwaXhlbHMsIHRoZSByYXRpbyB0dXJucyBvdXQgdG8gMUIg aW4gdGhlIENDUyBmb3IgZXZlcnkgMngzMiBwaXhlbHMgaW4KKyAqIHRoZSBtYWluIHN1cmZhY2Uu CisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIGdlbjEyX2Njc19mb3Jt YXRzW10gPSB7CisJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4OCwgLmRlcHRoID0gMjQs IC5udW1fcGxhbmVzID0gMiwKKwkgIC5jcHAgPSB7IDQsIDEsIH0sIC5oc3ViID0gMiwgLnZzdWIg PSAzMiwgfSwKKwl7IC5mb3JtYXQgPSBEUk1fRk9STUFUX1hCR1I4ODg4LCAuZGVwdGggPSAyNCwg Lm51bV9wbGFuZXMgPSAyLAorCSAgLmNwcCA9IHsgNCwgMSwgfSwgLmhzdWIgPSAyLCAudnN1YiA9 IDMyLCB9LAorCXsgLmZvcm1hdCA9IERSTV9GT1JNQVRfQVJHQjg4ODgsIC5kZXB0aCA9IDMyLCAu bnVtX3BsYW5lcyA9IDIsCisJICAuY3BwID0geyA0LCAxLCB9LCAuaHN1YiA9IDIsIC52c3ViID0g MzIsIC5oYXNfYWxwaGEgPSB0cnVlIH0sCisJeyAuZm9ybWF0ID0gRFJNX0ZPUk1BVF9BQkdSODg4 OCwgLmRlcHRoID0gMzIsIC5udW1fcGxhbmVzID0gMiwKKwkgIC5jcHAgPSB7IDQsIDEsIH0sIC5o c3ViID0gMiwgLnZzdWIgPSAzMiwgLmhhc19hbHBoYSA9IHRydWUgfSwKK307CisKIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICoKIGxvb2t1cF9mb3JtYXRfaW5mbyhjb25zdCBz dHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvIGZvcm1hdHNbXSwKIAkJICAgaW50IG51bV9mb3JtYXRzLCB1 MzIgZm9ybWF0KQpAQCAtMjQ3Niw4ICsyNTA5LDEyIEBAIGludGVsX2dldF9mb3JtYXRfaW5mbyhj b25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqY21kKQogCXN3aXRjaCAoY21kLT5tb2RpZmll clswXSkgewogCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOgogCWNhc2UgSTkxNV9G T1JNQVRfTU9EX1lmX1RJTEVEX0NDUzoKLQkJcmV0dXJuIGxvb2t1cF9mb3JtYXRfaW5mbyhjY3Nf Zm9ybWF0cywKLQkJCQkJICBBUlJBWV9TSVpFKGNjc19mb3JtYXRzKSwKKwkJcmV0dXJuIGxvb2t1 cF9mb3JtYXRfaW5mbyhza2xfY2NzX2Zvcm1hdHMsCisJCQkJCSAgQVJSQVlfU0laRShza2xfY2Nz X2Zvcm1hdHMpLAorCQkJCQkgIGNtZC0+cGl4ZWxfZm9ybWF0KTsKKwljYXNlIEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUzoKKwkJcmV0dXJuIGxvb2t1cF9mb3JtYXRfaW5mbyhn ZW4xMl9jY3NfZm9ybWF0cywKKwkJCQkJICBBUlJBWV9TSVpFKGdlbjEyX2Njc19mb3JtYXRzKSwK IAkJCQkJICBjbWQtPnBpeGVsX2Zvcm1hdCk7CiAJZGVmYXVsdDoKIAkJcmV0dXJuIE5VTEw7CkBA IC0yNDg2LDcgKzI1MjMsOCBAQCBpbnRlbF9nZXRfZm9ybWF0X2luZm8oY29uc3Qgc3RydWN0IGRy bV9tb2RlX2ZiX2NtZDIgKmNtZCkKIAogYm9vbCBpc19jY3NfbW9kaWZpZXIodTY0IG1vZGlmaWVy KQogewotCXJldHVybiBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9DQ1MgfHwK KwlyZXR1cm4gbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NT IHx8CisJICAgICAgIG1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0NDUyB8fAog CSAgICAgICBtb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOwogfQogCkBA IC0yNTMxLDggKzI1NjksOSBAQCBzdGF0aWMgdTMyCiBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50 KGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUpCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShmYi0+ZGV2KTsKKwl1 MzIgdGlsZV93aWR0aDsKIAotCWlmIChmYi0+bW9kaWZpZXIgPT0gRFJNX0ZPUk1BVF9NT0RfTElO RUFSKSB7CisJaWYgKGlzX3N1cmZhY2VfbGluZWFyKGZiLT5tb2RpZmllciwgY29sb3JfcGxhbmUp KSB7CiAJCXUzMiBtYXhfc3RyaWRlID0gaW50ZWxfcGxhbmVfZmJfbWF4X3N0cmlkZShkZXZfcHJp diwKIAkJCQkJCQkgICBmYi0+Zm9ybWF0LT5mb3JtYXQsCiAJCQkJCQkJICAgZmItPm1vZGlmaWVy KTsKQEAgLTI1NDEsMTMgKzI1ODAsMTQgQEAgaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChjb25z dCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNvbG9yX3BsYW5lKQogCQkgKiBUbyBt YWtlIHJlbWFwcGluZyB3aXRoIGxpbmVhciBnZW5lcmFsbHkgZmVhc2libGUKIAkJICogd2UgbmVl ZCB0aGUgc3RyaWRlIHRvIGJlIHBhZ2UgYWxpZ25lZC4KIAkJICovCi0JCWlmIChmYi0+cGl0Y2hl c1tjb2xvcl9wbGFuZV0gPiBtYXhfc3RyaWRlKQorCQlpZiAoZmItPnBpdGNoZXNbY29sb3JfcGxh bmVdID4gbWF4X3N0cmlkZSAmJiAhaXNfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikpCiAJCQly ZXR1cm4gaW50ZWxfdGlsZV9zaXplKGRldl9wcml2KTsKIAkJZWxzZQogCQkJcmV0dXJuIDY0Owot CX0gZWxzZSB7Ci0JCXUzMiB0aWxlX3dpZHRoID0gaW50ZWxfdGlsZV93aWR0aF9ieXRlcyhmYiwg Y29sb3JfcGxhbmUpOworCX0KIAorCXRpbGVfd2lkdGggPSBpbnRlbF90aWxlX3dpZHRoX2J5dGVz KGZiLCBjb2xvcl9wbGFuZSk7CisJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpICYm IGNvbG9yX3BsYW5lID09IDApIHsKIAkJLyoKIAkJICogRGlzcGxheSBXQSAjMDUzMTogc2tsLGJ4 dCxrYmwsZ2xrCiAJCSAqCkBAIC0yNTU3LDEyICsyNTk3LDE2IEBAIGludGVsX2ZiX3N0cmlkZV9h bGlnbm1lbnQoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjb2xvcl9wbGFu ZSkKIAkJICogcmVxdWlyZSB0aGUgZW50aXJlIGZiIHRvIGFjY29tbW9kYXRlIHRoYXQgdG8gYXZv aWQKIAkJICogcG90ZW50aWFsIHJ1bnRpbWUgZXJyb3JzIGF0IHBsYW5lIGNvbmZpZ3VyYXRpb24g dGltZS4KIAkJICovCi0JCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmIGlzX2Njc19tb2RpZmll cihmYi0+bW9kaWZpZXIpICYmCi0JCSAgICBjb2xvcl9wbGFuZSA9PSAwICYmIGZiLT53aWR0aCA+ IDM4NDApCisJCWlmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmIGZiLT53aWR0aCA+IDM4NDApCisJ CQl0aWxlX3dpZHRoICo9IDQ7CisJCS8qCisJCSAqIFRoZSBtYWluIHN1cmZhY2UgcGl0Y2ggbXVz dCBiZSBwYWRkZWQgdG8gYSBtdWx0aXBsZSBvZiBmb3VyCisJCSAqIHRpbGUgd2lkdGhzLgorCQkg Ki8KKwkJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKIAkJCXRpbGVfd2lkdGgg Kj0gNDsKLQotCQlyZXR1cm4gdGlsZV93aWR0aDsKIAl9CisJcmV0dXJuIHRpbGVfd2lkdGg7CiB9 CiAKIGJvb2wgaW50ZWxfcGxhbmVfY2FuX3JlbWFwKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUpCkBAIC0yNjcxLDYgKzI3MTUsNyBAQCBpbnRlbF9maWxsX2ZiX2lu Zm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJaW50IGNjc194LCBjY3Nf eTsKIAogCQkJaW50ZWxfdGlsZV9kaW1zKGZiLCBpLCAmdGlsZV93aWR0aCwgJnRpbGVfaGVpZ2h0 KTsKKwogCQkJdGlsZV93aWR0aCAqPSBoc3ViOwogCQkJdGlsZV9oZWlnaHQgKj0gdnN1YjsKIApA QCAtMzk2Myw3ICs0MDA4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBza2xfcGxhbmVfc3RyaWRl X211bHQoY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiAJICogVGhlIHN0cmlkZSBp cyBlaXRoZXIgZXhwcmVzc2VkIGFzIGEgbXVsdGlwbGUgb2YgNjQgYnl0ZXMgY2h1bmtzIGZvcgog CSAqIGxpbmVhciBidWZmZXJzIG9yIGluIG51bWJlciBvZiB0aWxlcyBmb3IgdGlsZWQgYnVmZmVy cy4KIAkgKi8KLQlpZiAoZmItPm1vZGlmaWVyID09IERSTV9GT1JNQVRfTU9EX0xJTkVBUikKKwlp ZiAoaXNfc3VyZmFjZV9saW5lYXIoZmItPm1vZGlmaWVyLCBjb2xvcl9wbGFuZSkpCiAJCXJldHVy biA2NDsKIAllbHNlIGlmIChkcm1fcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkKIAkJcmV0 dXJuIGludGVsX3RpbGVfaGVpZ2h0KGZiLCBjb2xvcl9wbGFuZSk7CkBAIC00MDg5LDYgKzQxMzQs MTAgQEAgc3RhdGljIHUzMiBza2xfcGxhbmVfY3RsX3RpbGluZyh1NjQgZmJfbW9kaWZpZXIpCiAJ CXJldHVybiBQTEFORV9DVExfVElMRURfWTsKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVE X0NDUzoKIAkJcmV0dXJuIFBMQU5FX0NUTF9USUxFRF9ZIHwgUExBTkVfQ1RMX1JFTkRFUl9ERUNP TVBSRVNTSU9OX0VOQUJMRTsKKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JD X0NDUzoKKwkJcmV0dXJuIFBMQU5FX0NUTF9USUxFRF9ZIHwKKwkJICAgICAgIFBMQU5FX0NUTF9S RU5ERVJfREVDT01QUkVTU0lPTl9FTkFCTEUgfAorCQkgICAgICAgUExBTkVfQ1RMX0NMRUFSX0NP TE9SX0RJU0FCTEU7CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6CiAJCXJldHVybiBQ TEFORV9DVExfVElMRURfWUY7CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRURfQ0NTOgpA QCAtOTg1MCw3ICs5ODk5LDkgQEAgc2t5bGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCiAJY2FzZSBQTEFORV9DVExfVElMRURfWToKIAkJcGxhbmVf Y29uZmlnLT50aWxpbmcgPSBJOTE1X1RJTElOR19ZOwogCQlpZiAodmFsICYgUExBTkVfQ1RMX1JF TkRFUl9ERUNPTVBSRVNTSU9OX0VOQUJMRSkKLQkJCWZiLT5tb2RpZmllciA9IEk5MTVfRk9STUFU X01PRF9ZX1RJTEVEX0NDUzsKKwkJCWZiLT5tb2RpZmllciA9IElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTIgPworCQkJCUk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUyA6CisJCQkJ STkxNV9GT1JNQVRfTU9EX1lfVElMRURfQ0NTOwogCQllbHNlCiAJCQlmYi0+bW9kaWZpZXIgPSBJ OTE1X0ZPUk1BVF9NT0RfWV9USUxFRDsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9zcHJpdGUuYwppbmRleCA2MzNmYTgwNjkzNDguLjIwZGY2NDMzNjY2OSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCkBAIC01MzUs NiArNTM1LDcgQEAgc2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK IAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSAqa2V5ID0gJnBsYW5lX3N0 YXRlLT5ja2V5OwogCXUzMiBzdXJmX2FkZHIgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbY29s b3JfcGxhbmVdLm9mZnNldDsKIAl1MzIgc3RyaWRlID0gc2tsX3BsYW5lX3N0cmlkZShwbGFuZV9z dGF0ZSwgY29sb3JfcGxhbmUpOworCXUzMiBhdXhfZGlzdCA9IHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVsxXS5vZmZzZXQgLSBzdXJmX2FkZHI7CiAJdTMyIGF1eF9zdHJpZGUgPSBza2xfcGxhbmVf c3RyaWRlKHBsYW5lX3N0YXRlLCAxKTsKIAlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPmJhc2Uu ZHN0LngxOwogCWludCBjcnRjX3kgPSBwbGFuZV9zdGF0ZS0+YmFzZS5kc3QueTE7CkBAIC01NzYs OCArNTc3LDEwIEBAIHNrbF9wcm9ncmFtX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs CiAJSTkxNV9XUklURV9GVyhQTEFORV9TVFJJREUocGlwZSwgcGxhbmVfaWQpLCBzdHJpZGUpOwog CUk5MTVfV1JJVEVfRlcoUExBTkVfUE9TKHBpcGUsIHBsYW5lX2lkKSwgKGNydGNfeSA8PCAxNikg fCBjcnRjX3gpOwogCUk5MTVfV1JJVEVfRlcoUExBTkVfU0laRShwaXBlLCBwbGFuZV9pZCksIChz cmNfaCA8PCAxNikgfCBzcmNfdyk7Ci0JSTkxNV9XUklURV9GVyhQTEFORV9BVVhfRElTVChwaXBl LCBwbGFuZV9pZCksCi0JCSAgICAgIChwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMV0ub2Zmc2V0 IC0gc3VyZl9hZGRyKSB8IGF1eF9zdHJpZGUpOworCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PCAxMikKKwkJYXV4X2Rpc3QgfD0gYXV4X3N0cmlkZTsKKwlJOTE1X1dSSVRFX0ZXKFBMQU5FX0FV WF9ESVNUKHBpcGUsIHBsYW5lX2lkKSwgYXV4X2Rpc3QpOwogCiAJaWYgKGljbF9pc19oZHJfcGxh bmUoZGV2X3ByaXYsIHBsYW5lX2lkKSkgewogCQl1MzIgY3VzX2N0bCA9IDA7CkBAIC0xNzM0LDcg KzE3MzcsOCBAQCBzdGF0aWMgaW50IHNrbF9wbGFuZV9jaGVja19mYihjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkgICAgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRCB8fAogCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01P RF9ZZl9USUxFRCB8fAogCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJ TEVEX0NDUyB8fAotCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxF RF9DQ1MpKSB7CisJICAgICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVE X0NDUyB8fAorCSAgICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dF TjEyX1JDX0NDUykpIHsKIAkJRFJNX0RFQlVHX0tNUygiWS9ZZiB0aWxpbmcgbm90IHN1cHBvcnRl ZCBpbiBJRi1JRCBtb2RlXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMjE0Niw3ICsy MTUwLDggQEAgc3RhdGljIGNvbnN0IHU2NCBza2xfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3Nb XSA9IHsKIAlEUk1fRk9STUFUX01PRF9JTlZBTElECiB9OwogCi1zdGF0aWMgY29uc3QgdTY0IGdl bjEyX3BsYW5lX2Zvcm1hdF9tb2RpZmllcnNfbm9jY3NbXSA9IHsKK3N0YXRpYyBjb25zdCB1NjQg Z2VuMTJfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3NbXSA9IHsKKwlJOTE1X0ZPUk1BVF9NT0Rf WV9USUxFRF9HRU4xMl9SQ19DQ1MsCiAJSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQsCiAJSTkxNV9G T1JNQVRfTU9EX1hfVElMRUQsCiAJRFJNX0ZPUk1BVF9NT0RfTElORUFSLApAQCAtMjMwOCw2ICsy MzEzLDcgQEAgc3RhdGljIGJvb2wgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3Ry dWN0IGRybV9wbGFuZSAqX3BsYW5lLAogCWNhc2UgRFJNX0ZPUk1BVF9NT0RfTElORUFSOgogCWNh c2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxF RDoKKwljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDUzoKIAkJYnJlYWs7 CiAJZGVmYXVsdDoKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMjMxOCw2ICsyMzI0LDkgQEAgc3RhdGlj IGJvb2wgZ2VuMTJfcGxhbmVfZm9ybWF0X21vZF9zdXBwb3J0ZWQoc3RydWN0IGRybV9wbGFuZSAq X3BsYW5lLAogCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKIAljYXNlIERSTV9GT1JNQVRfQVJH Qjg4ODg6CiAJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4OgorCQlpZiAoaXNfY2NzX21vZGlmaWVy KG1vZGlmaWVyKSkKKwkJCXJldHVybiB0cnVlOworCQkvKiBmYWxsIHRocm91Z2ggKi8KIAljYXNl IERSTV9GT1JNQVRfUkdCNTY1OgogCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMjEwMTAxMDoKIAljYXNl IERSTV9GT1JNQVRfWEJHUjIxMDEwMTA6CkBAIC0yNTI2LDEzICsyNTM1LDExIEBAIHNrbF91bml2 ZXJzYWxfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ Zm9ybWF0cyA9IHNrbF9nZXRfcGxhbmVfZm9ybWF0cyhkZXZfcHJpdiwgcGlwZSwKIAkJCQkJCXBs YW5lX2lkLCAmbnVtX2Zvcm1hdHMpOwogCisJcGxhbmUtPmhhc19jY3MgPSBza2xfcGxhbmVfaGFz X2NjcyhkZXZfcHJpdiwgcGlwZSwgcGxhbmVfaWQpOwogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDEyKSB7Ci0JCS8qIFRPRE86IEltcGxlbWVudCBzdXBwb3J0IGZvciBnZW4tMTIgQ0NTIG1v ZGlmaWVycyAqLwotCQlwbGFuZS0+aGFzX2NjcyA9IGZhbHNlOwotCQltb2RpZmllcnMgPSBnZW4x Ml9wbGFuZV9mb3JtYXRfbW9kaWZpZXJzX25vY2NzOworCQltb2RpZmllcnMgPSBnZW4xMl9wbGFu ZV9mb3JtYXRfbW9kaWZpZXJzX2NjczsKIAkJcGxhbmVfZnVuY3MgPSAmZ2VuMTJfcGxhbmVfZnVu Y3M7CiAJfSBlbHNlIHsKLQkJcGxhbmUtPmhhc19jY3MgPSBza2xfcGxhbmVfaGFzX2NjcyhkZXZf cHJpdiwgcGlwZSwgcGxhbmVfaWQpOwogCQlpZiAocGxhbmUtPmhhc19jY3MpCiAJCQltb2RpZmll cnMgPSBza2xfcGxhbmVfZm9ybWF0X21vZGlmaWVyc19jY3M7CiAJCWVsc2UKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oCmluZGV4IGUyNDk5MWU1NDg5Ny4uYzE1ODNmNWM0MTNiIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmgKQEAgLTY3MDIsNiArNjcwMiw3IEBAIGVudW0gewogI2RlZmluZSAgIFBMQU5F X0NUTF9ZVVY0MjJfVllVWQkJCSgzIDw8IDE2KQogI2RlZmluZSAgIFBMQU5FX0NUTF9SRU5ERVJf REVDT01QUkVTU0lPTl9FTkFCTEUJKDEgPDwgMTUpCiAjZGVmaW5lICAgUExBTkVfQ1RMX1RSSUNL TEVfRkVFRF9ESVNBQkxFCSgxIDw8IDE0KQorI2RlZmluZSAgIFBMQU5FX0NUTF9DTEVBUl9DT0xP Ul9ESVNBQkxFCQkoMSA8PCAxMykgLyogVEdMKyAqLwogI2RlZmluZSAgIFBMQU5FX0NUTF9QTEFO RV9HQU1NQV9ESVNBQkxFCQkoMSA8PCAxMykgLyogUHJlLUdMSyAqLwogI2RlZmluZSAgIFBMQU5F X0NUTF9USUxFRF9NQVNLCQkJKDB4NyA8PCAxMCkKICNkZWZpbmUgICBQTEFORV9DVExfVElMRURf TElORUFSCQkoMCA8PCAxMCkKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4