From mboxrd@z Thu Jan 1 00:00:00 1970 From: Archit Taneja Subject: [PATCH 15/24] drm/msm/mdp5: Add optional 'right' Layer Mixer in CRTC state Date: Thu, 23 Mar 2017 15:58:08 +0530 Message-ID: <20170323102817.15017-16-architt@codeaurora.org> References: <20170323102817.15017-1-architt@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170323102817.15017-1-architt@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: robdclark@gmail.com Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: linux-arm-msm@vger.kernel.org QWRkIGFub3RoZXIgbWRwNV9od19taXhlciBwb2ludGVyIChyX21peGVyKSBpbiBtZHA1X2NydGNf c3RhdGUuClRoaXMgbWl4ZXIgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSByaWdodCBoYWxm IG9mIHRoZSBzY2Fub3V0LgoKV2l0aCBTb3VyY2UgU3BsaXQsIGEgU1NQUCBjYW4gbm93IGJlIGNv bm5lY3RlZCB0byAyIExheWVyIE1peGVycywgYnV0CmhhcyB0byBiZSBhdCB0aGUgc2FtZSBibGVu ZCBsZXZlbCAoc3RhZ2UgIykgb24gYm90aCBMYXllciBNaXhlcnMuCgpBIGRybV9wbGFuZSB0aGF0 IGhhcyBhIGxlc3NlciB3aWR0aCB0aGFuIHRoZSBtYXggd2lkdGggc3VwcG9ydGVkLCB3aWxsCmNv bXByaXNlIG9mIGEgc2luZ2xlIFNTUFAvaHdwaXBlLCBzdGFnZWQgb24gYm90aCB0aGUgTGF5ZXIg TWl4ZXJzIGF0CnRoZSBzYW1lIGJsZW5kIGxldmVsLiBBIHBsYW5lIHRoYXQgaXMgZ3JlYXRlciB0 aGFuIG1heCB3aWR0aCB3aWxsIGNvbXByaXNlCm9mIDIgU1NQUHMsIHdpdGggdGhlICdsZWZ0JyBT U1BQIHN0YWdlZCBvbiB0aGUgbGVmdCBMTSwgYW5kIHRoZSAncmlnaHQnClNTUFAgc3RhZ2VkIG9u IHRoZSByaWdodCBMTSBhdCB0aGUgc2FtZSBibGVuZCBsZXZlbC4KCkZvciBub3csIHRoZSBkcm1f cGxhbmUgY29uc2lzdHMgb2Ygb25seSBvbmUgU1NQUCwgdGhlcmVmb3JlLCBpdApuZWVkcyB0byBi ZSBzdGFnZWQgb24gYm90aCB0aGUgTE1zIGluIGJsZW5kX3NldHVwKCkgYW5kIG1kcDVfY3RsX2Js ZW5kKCkuCldlJ2xsIGV4dGVuZCB0aGlzIGxvZ2ljIHRvIHN1cHBvcnQgMiBod3BpcGVzIHBlciBw bGFuZSBsYXRlci4KClRoZSBjcnRjIGN1cnNvciBvcHMgKHVzaW5nIHRoZSBMTSBjdXJzb3JzLCBu b3QgU1NQUCBjdXJzb3JzKSBzaW1wbHkKcmV0dXJuIGFuIGVycm9yIGlmIHRoZXkncmUgY2FsbGVk IHdoZW4gdGhlIHJpZ2h0IG1peGVyIGlzIGFzc2lnbmVkIHRvCnRoZSBDUlRDIHN0YXRlLiBXaXRo IHNvdXJjZSBzcGxpdCBpcyBlbmFibGVkLCB3ZSdyZSBleHBlY3RlZCB0byBvbmx5ClNTUFAgY3Vy c29ycy4KClRoaXMgY29tbWl0IGFkZHMgY29kZSB0aGF0IGNvbmZpZ3VyZXMgdGhlIHJpZ2h0IG1p eGVyLCBidXQgdGhlIHJfbWl4ZXIKaXRzZWxmIGlzbid0IGFzc2lnbmVkIGF0IHRoZSBtb21lbnQu CgpTaWduZWQtb2ZmLWJ5OiBBcmNoaXQgVGFuZWphIDxhcmNoaXR0QGNvZGVhdXJvcmEub3JnPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jcnRjLmMgfCA2MiArKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9t ZHA1X2N0bC5jICB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0v bXNtL21kcC9tZHA1L21kcDVfY3RsLmggIHwgIDcgKystLQogZHJpdmVycy9ncHUvZHJtL21zbS9t ZHAvbWRwNS9tZHA1X2ttcy5oICB8ICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgMTAzIGluc2VydGlv bnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bWRwL21kcDUvbWRwNV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVf Y3J0Yy5jCmluZGV4IGYzODJjMzQwNTc4Ni4uNWJmZmVmNmVjOWRjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3J0Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbWRwL21kcDUvbWRwNV9jcnRjLmMKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgdTMy IGNydGNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjLCB1MzIgZmx1c2hfbWFzaykKIHN0YXRp YyB1MzIgY3J0Y19mbHVzaF9hbGwoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBt ZHA1X2NydGNfc3RhdGUgKm1kcDVfY3N0YXRlID0gdG9fbWRwNV9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKTsKLQlzdHJ1Y3QgbWRwNV9od19taXhlciAqbWl4ZXI7CisJc3RydWN0IG1kcDVfaHdfbWl4 ZXIgKm1peGVyLCAqcl9taXhlcjsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAl1aW50MzJf dCBmbHVzaF9tYXNrID0gMDsKIApAQCAtMTIwLDYgKzEyMCwxMCBAQCBzdGF0aWMgdTMyIGNydGNf Zmx1c2hfYWxsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAltaXhlciA9IG1kcDVfY3N0YXRlLT5w aXBlbGluZS5taXhlcjsKIAlmbHVzaF9tYXNrIHw9IG1kcF9jdGxfZmx1c2hfbWFza19sbShtaXhl ci0+bG0pOwogCisJcl9taXhlciA9IG1kcDVfY3N0YXRlLT5waXBlbGluZS5yX21peGVyOworCWlm IChyX21peGVyKQorCQlmbHVzaF9tYXNrIHw9IG1kcF9jdGxfZmx1c2hfbWFza19sbShyX21peGVy LT5sbSk7CisKIAlyZXR1cm4gY3J0Y19mbHVzaChjcnRjLCBmbHVzaF9tYXNrKTsKIH0KIApAQCAt MTUxLDcgKzE1NSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2ZsaXAoc3RydWN0IGRybV9jcnRj ICpjcnRjLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAKIAlpZiAoY3RsICYmICFjcnRjLT5zdGF0 ZS0+ZW5hYmxlKSB7CiAJCS8qIHNldCBTVEFHRV9VTlVTRUQgZm9yIGFsbCBsYXllcnMgKi8KLQkJ bWRwNV9jdGxfYmxlbmQoY3RsLCBwaXBlbGluZSwgTlVMTCwgMCwgMCk7CisJCW1kcDVfY3RsX2Js ZW5kKGN0bCwgcGlwZWxpbmUsIE5VTEwsIE5VTEwsIDAsIDApOwogCQkvKiBYWFg6IFdoYXQgdG8g ZG8gaGVyZT8gKi8KIAkJLyogbWRwNV9jcnRjLT5jdGwgPSBOVUxMOyAqLwogCX0KQEAgLTE5Myw2 ICsxOTcsMTIgQEAgc3RhdGljIGlubGluZSB1MzIgbWRwNV9sbV91c2VfZmdfYWxwaGFfbWFzayhl bnVtIG1kcF9taXhlcl9zdGFnZV9pZCBzdGFnZSkKIH0KIAogLyoKKyAqIGxlZnQvcmlnaHQgcGlw ZSBvZmZzZXRzIGZvciB0aGUgc3RhZ2UgYXJyYXkgdXNlZCBpbiBibGVuZF9zZXR1cCgpCisgKi8K KyNkZWZpbmUgUElQRV9MRUZUCTAKKyNkZWZpbmUgUElQRV9SSUdIVAkxCisKKy8qCiAgKiBibGVu ZF9zZXR1cCgpIC0gYmxlbmQgYWxsIHRoZSBwbGFuZXMgb2YgYSBDUlRDCiAgKgogICogSWYgbm8g YmFzZSBsYXllciBpcyBhdmFpbGFibGUsIGJvcmRlciB3aWxsIGJlIGVuYWJsZWQgYXMgdGhlIGJh c2UgbGF5ZXIuCkBAIC0yMTEsMTAgKzIyMSwxMyBAQCBzdGF0aWMgdm9pZCBibGVuZF9zZXR1cChz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJY29uc3Qgc3RydWN0IG1kcF9mb3JtYXQgKmZvcm1hdDsK IAlzdHJ1Y3QgbWRwNV9od19taXhlciAqbWl4ZXIgPSBwaXBlbGluZS0+bWl4ZXI7CiAJdWludDMy X3QgbG0gPSBtaXhlci0+bG07CisJc3RydWN0IG1kcDVfaHdfbWl4ZXIgKnJfbWl4ZXIgPSBwaXBl bGluZS0+cl9taXhlcjsKKwl1aW50MzJfdCByX2xtID0gcl9taXhlciA/IHJfbWl4ZXItPmxtIDog MDsKIAlzdHJ1Y3QgbWRwNV9jdGwgKmN0bCA9IG1kcDVfY3N0YXRlLT5jdGw7CiAJdWludDMyX3Qg YmxlbmRfb3AsIGZnX2FscGhhLCBiZ19hbHBoYSwgY3RsX2JsZW5kX2ZsYWdzID0gMDsKIAl1bnNp Z25lZCBsb25nIGZsYWdzOwotCWVudW0gbWRwNV9waXBlIHN0YWdlW1NUQUdFX01BWCArIDFdID0g eyBTU1BQX05PTkUgfTsKKwllbnVtIG1kcDVfcGlwZSBzdGFnZVtTVEFHRV9NQVggKyAxXVtNQVhf UElQRV9TVEFHRV0gPSB7IFNTUFBfTk9ORSB9OworCWVudW0gbWRwNV9waXBlIHJfc3RhZ2VbU1RB R0VfTUFYICsgMV1bTUFYX1BJUEVfU1RBR0VdID0geyBTU1BQX05PTkUgfTsKIAlpbnQgaSwgcGxh bmVfY250ID0gMDsKIAlib29sIGJnX2FscGhhX2VuYWJsZWQgPSBmYWxzZTsKIAl1MzIgbWl4ZXJf b3BfbW9kZSA9IDA7CkBAIC0yMzMsNyArMjQ2LDE1IEBAIHN0YXRpYyB2b2lkIGJsZW5kX3NldHVw KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlkcm1fYXRvbWljX2NydGNfZm9yX2VhY2hfcGxhbmUo cGxhbmUsIGNydGMpIHsKIAkJcHN0YXRlID0gdG9fbWRwNV9wbGFuZV9zdGF0ZShwbGFuZS0+c3Rh dGUpOwogCQlwc3RhdGVzW3BzdGF0ZS0+c3RhZ2VdID0gcHN0YXRlOwotCQlzdGFnZVtwc3RhdGUt PnN0YWdlXSA9IG1kcDVfcGxhbmVfcGlwZShwbGFuZSk7CisJCXN0YWdlW3BzdGF0ZS0+c3RhZ2Vd W1BJUEVfTEVGVF0gPSBtZHA1X3BsYW5lX3BpcGUocGxhbmUpOworCQkvKgorCQkgKiBpZiB3ZSBo YXZlIGEgcmlnaHQgbWl4ZXIsIHN0YWdlIHRoZSBzYW1lIHBpcGUgYXMgd2UKKwkJICogaGF2ZSBv biB0aGUgbGVmdCBtaXhlcgorCQkgKi8KKwkJaWYgKHJfbWl4ZXIpCisJCQlyX3N0YWdlW3BzdGF0 ZS0+c3RhZ2VdW1BJUEVfTEVGVF0gPQorCQkJCQkJbWRwNV9wbGFuZV9waXBlKHBsYW5lKTsKKwog CQlwbGFuZV9jbnQrKzsKIAl9CiAKQEAgLTI5OSwxMiArMzIwLDIzIEBAIHN0YXRpYyB2b2lkIGJs ZW5kX3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJCQlibGVuZGVyKGkpKSwgZmdfYWxw aGEpOwogCQltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9MTV9CTEVORF9CR19BTFBIQShs bSwKIAkJCQlibGVuZGVyKGkpKSwgYmdfYWxwaGEpOworCQlpZiAocl9taXhlcikgeworCQkJbWRw NV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfTE1fQkxFTkRfT1BfTU9ERShyX2xtLAorCQkJCQli bGVuZGVyKGkpKSwgYmxlbmRfb3ApOworCQkJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVf TE1fQkxFTkRfRkdfQUxQSEEocl9sbSwKKwkJCQkJYmxlbmRlcihpKSksIGZnX2FscGhhKTsKKwkJ CW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X0xNX0JMRU5EX0JHX0FMUEhBKHJfbG0sCisJ CQkJCWJsZW5kZXIoaSkpLCBiZ19hbHBoYSk7CisJCX0KIAl9CiAKIAltZHA1X3dyaXRlKG1kcDVf a21zLCBSRUdfTURQNV9MTV9CTEVORF9DT0xPUl9PVVQobG0pLCBtaXhlcl9vcF9tb2RlKTsKKwlp ZiAocl9taXhlcikKKwkJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfTE1fQkxFTkRfQ09M T1JfT1VUKHJfbG0pLAorCQkJICAgbWl4ZXJfb3BfbW9kZSk7CiAKLQltZHA1X2N0bF9ibGVuZChj dGwsIHBpcGVsaW5lLCBzdGFnZSwgcGxhbmVfY250LCBjdGxfYmxlbmRfZmxhZ3MpOwotCisJbWRw NV9jdGxfYmxlbmQoY3RsLCBwaXBlbGluZSwgc3RhZ2UsIHJfc3RhZ2UsIHBsYW5lX2NudCwKKwkJ ICAgICAgIGN0bF9ibGVuZF9mbGFncyk7CiBvdXQ6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm bWRwNV9jcnRjLT5sbV9sb2NrLCBmbGFncyk7CiB9CkBAIC0zMTUsNiArMzQ3LDcgQEAgc3RhdGlj IHZvaWQgbWRwNV9jcnRjX21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXN0 cnVjdCBtZHA1X2NydGNfc3RhdGUgKm1kcDVfY3N0YXRlID0gdG9fbWRwNV9jcnRjX3N0YXRlKGNy dGMtPnN0YXRlKTsKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gZ2V0X2ttcyhjcnRjKTsK IAlzdHJ1Y3QgbWRwNV9od19taXhlciAqbWl4ZXIgPSBtZHA1X2NzdGF0ZS0+cGlwZWxpbmUubWl4 ZXI7CisJc3RydWN0IG1kcDVfaHdfbWl4ZXIgKnJfbWl4ZXIgPSBtZHA1X2NzdGF0ZS0+cGlwZWxp bmUucl9taXhlcjsKIAl1aW50MzJfdCBsbSA9IG1peGVyLT5sbTsKIAl1bnNpZ25lZCBsb25nIGZs YWdzOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwpAQCAtMzM3LDYgKzM3MCwxMCBA QCBzdGF0aWMgdm9pZCBtZHA1X2NydGNfbW9kZV9zZXRfbm9mYihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiAJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfTE1fT1VUX1NJWkUobG0pLAogCQkJ TURQNV9MTV9PVVRfU0laRV9XSURUSChtb2RlLT5oZGlzcGxheSkgfAogCQkJTURQNV9MTV9PVVRf U0laRV9IRUlHSFQobW9kZS0+dmRpc3BsYXkpKTsKKwlpZiAocl9taXhlcikKKwkJbWRwNV93cml0 ZShtZHA1X2ttcywgUkVHX01EUDVfTE1fT1VUX1NJWkUocl9taXhlci0+bG0pLAorCQkJICAgTURQ NV9MTV9PVVRfU0laRV9XSURUSChtb2RlLT5oZGlzcGxheSkgfAorCQkJICAgTURQNV9MTV9PVVRf U0laRV9IRUlHSFQobW9kZS0+dmRpc3BsYXkpKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZt ZHA1X2NydGMtPmxtX2xvY2ssIGZsYWdzKTsKIH0KIApAQCAtNjE4LDYgKzY1NSwxMCBAQCBzdGF0 aWMgaW50IG1kcDVfY3J0Y19jdXJzb3Jfc2V0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpZiAo IWN0bCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKKwkvKiBkb24ndCBzdXBwb3J0IExNIGN1cnNvcnMg d2hlbiB3ZSB3ZSBoYXZlIHNvdXJjZSBzcGxpdCBlbmFibGVkICovCisJaWYgKG1kcDVfY3N0YXRl LT5waXBlbGluZS5yX21peGVyKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCWlmICghaGFuZGxlKSB7 CiAJCURCRygiQ3Vyc29yIG9mZiIpOwogCQljdXJzb3JfZW5hYmxlID0gZmFsc2U7CkBAIC02OTEs NiArNzMyLDEwIEBAIHN0YXRpYyBpbnQgbWRwNV9jcnRjX2N1cnNvcl9tb3ZlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywgaW50IHgsIGludCB5KQogCXVpbnQzMl90IHJvaV9oOwogCXVuc2lnbmVkIGxv bmcgZmxhZ3M7CiAKKwkvKiBkb24ndCBzdXBwb3J0IExNIGN1cnNvcnMgd2hlbiB3ZSB3ZSBoYXZl IHNvdXJjZSBzcGxpdCBlbmFibGVkICovCisJaWYgKG1kcDVfY3N0YXRlLT5waXBlbGluZS5yX21p eGVyKQorCQlyZXR1cm4gLUVJTlZBTDsKKwogCS8qIEluIGNhc2UgdGhlIENSVEMgaXMgZGlzYWJs ZWQsIGp1c3QgZHJvcCB0aGUgY3Vyc29yIHVwZGF0ZSAqLwogCWlmICh1bmxpa2VseSghY3J0Yy0+ c3RhdGUtPmVuYWJsZSkpCiAJCXJldHVybiAwOwpAQCAtNzIwLDEyICs3NjUsMTcgQEAgbWRwNV9j cnRjX2F0b21pY19wcmludF9zdGF0ZShzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsCiB7CiAJc3RydWN0 IG1kcDVfY3J0Y19zdGF0ZSAqbWRwNV9jc3RhdGUgPSB0b19tZHA1X2NydGNfc3RhdGUoc3RhdGUp OwogCXN0cnVjdCBtZHA1X3BpcGVsaW5lICpwaXBlbGluZSA9ICZtZHA1X2NzdGF0ZS0+cGlwZWxp bmU7CisJc3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMoc3RhdGUtPmNydGMpOwog CiAJaWYgKFdBUk5fT04oIXBpcGVsaW5lKSkKIAkJcmV0dXJuOwogCiAJZHJtX3ByaW50ZihwLCAi XHRod21peGVyPSVzXG4iLCBwaXBlbGluZS0+bWl4ZXIgPwogCQkJcGlwZWxpbmUtPm1peGVyLT5u YW1lIDogIihudWxsKSIpOworCisJaWYgKG1kcDVfa21zLT5jYXBzICYgTURQX0NBUF9TUkNfU1BM SVQpCisJCWRybV9wcmludGYocCwgIlx0cmlnaHQgaHdtaXhlcj0lc1xuIiwgcGlwZWxpbmUtPnJf bWl4ZXIgPworCQkJICAgcGlwZWxpbmUtPnJfbWl4ZXItPm5hbWUgOiAiKG51bGwpIik7CiB9CiAK IHN0YXRpYyB2b2lkIG1kcDVfY3J0Y19yZXNldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3RsLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3RsLmMKaW5kZXggOWEwMTA5NDEwOTc0Li4xZmRi YjkzNjg3N2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9j dGwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3RsLmMKQEAgLTE3 Miw5ICsxNzIsMTIgQEAgaW50IG1kcDVfY3RsX3NldF9waXBlbGluZShzdHJ1Y3QgbWRwNV9jdGwg KmN0bCwgc3RydWN0IG1kcDVfcGlwZWxpbmUgKnBpcGVsaW5lKQogCXN0cnVjdCBtZHA1X2ttcyAq bWRwNV9rbXMgPSBnZXRfa21zKGN0bF9tZ3IpOwogCXN0cnVjdCBtZHA1X2ludGVyZmFjZSAqaW50 ZiA9IHBpcGVsaW5lLT5pbnRmOwogCXN0cnVjdCBtZHA1X2h3X21peGVyICptaXhlciA9IHBpcGVs aW5lLT5taXhlcjsKKwlzdHJ1Y3QgbWRwNV9od19taXhlciAqcl9taXhlciA9IHBpcGVsaW5lLT5y X21peGVyOwogCiAJY3RsLT5zdGFydF9tYXNrID0gbWRwX2N0bF9mbHVzaF9tYXNrX2xtKG1peGVy LT5sbSkgfAogCQkJICBtZHBfY3RsX2ZsdXNoX21hc2tfZW5jb2RlcihpbnRmKTsKKwlpZiAocl9t aXhlcikKKwkJY3RsLT5zdGFydF9tYXNrIHw9IG1kcF9jdGxfZmx1c2hfbWFza19sbShyX21peGVy LT5sbSk7CiAKIAkvKiBWaXJ0dWFsIGludGVyZmFjZXMgbmVlZCBub3Qgc2V0IGEgZGlzcGxheSBp bnRmIChlLmcuOiBXcml0ZWJhY2spICovCiAJaWYgKCFtZHA1X2NmZ19pbnRmX2lzX3ZpcnR1YWwo aW50Zi0+dHlwZSkpCkBAIC0yMjQsOCArMjI3LDExIEBAIHN0YXRpYyB2b2lkIHJlZmlsbF9zdGFy dF9tYXNrKHN0cnVjdCBtZHA1X2N0bCAqY3RsLAogewogCXN0cnVjdCBtZHA1X2ludGVyZmFjZSAq aW50ZiA9IHBpcGVsaW5lLT5pbnRmOwogCXN0cnVjdCBtZHA1X2h3X21peGVyICptaXhlciA9IHBp cGVsaW5lLT5taXhlcjsKKwlzdHJ1Y3QgbWRwNV9od19taXhlciAqcl9taXhlciA9IHBpcGVsaW5l LT5yX21peGVyOwogCiAJY3RsLT5zdGFydF9tYXNrID0gbWRwX2N0bF9mbHVzaF9tYXNrX2xtKG1p eGVyLT5sbSk7CisJaWYgKHJfbWl4ZXIpCisJCWN0bC0+c3RhcnRfbWFzayB8PSBtZHBfY3RsX2Zs dXNoX21hc2tfbG0ocl9taXhlci0+bG0pOwogCiAJLyoKIAkgKiBXcml0ZWJhY2sgZW5jb2RlciBu ZWVkcyB0byBwcm9ncmFtICYgZmx1c2gKQEAgLTI4Miw2ICsyODgsMTEgQEAgaW50IG1kcDVfY3Rs X3NldF9jdXJzb3Ioc3RydWN0IG1kcDVfY3RsICpjdGwsIHN0cnVjdCBtZHA1X3BpcGVsaW5lICpw aXBlbGluZSwKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCisJaWYgKHBpcGVsaW5lLT5yX21peGVy KSB7CisJCWRldl9lcnIoY3RsX21nci0+ZGV2LT5kZXYsICJ1bnN1cHBvcnRlZCBjb25maWd1cmF0 aW9uIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwogCXNwaW5fbG9ja19pcnFzYXZlKCZjdGwt Pmh3X2xvY2ssIGZsYWdzKTsKIAogCWJsZW5kX2NmZyA9IGN0bF9yZWFkKGN0bCwgUkVHX01EUDVf Q1RMX0xBWUVSX1JFRyhjdGwtPmlkLCBtaXhlci0+bG0pKTsKQEAgLTM0NCwyNCArMzU1LDQwIEBA IHN0YXRpYyB1MzIgbWRwX2N0bF9ibGVuZF9leHRfbWFzayhlbnVtIG1kcDVfcGlwZSBwaXBlLAog CX0KIH0KIAorI2RlZmluZSBQSVBFX0xFRlQJMAorI2RlZmluZSBQSVBFX1JJR0hUCTEKIGludCBt ZHA1X2N0bF9ibGVuZChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCwgc3RydWN0IG1kcDVfcGlwZWxpbmUg KnBpcGVsaW5lLAotCQkgICBlbnVtIG1kcDVfcGlwZSAqc3RhZ2UsIHUzMiBzdGFnZV9jbnQsIHUz MiBjdGxfYmxlbmRfb3BfZmxhZ3MpCisJCSAgIGVudW0gbWRwNV9waXBlIHN0YWdlW11bTUFYX1BJ UEVfU1RBR0VdLAorCQkgICBlbnVtIG1kcDVfcGlwZSByX3N0YWdlW11bTUFYX1BJUEVfU1RBR0Vd LAorCQkgICB1MzIgc3RhZ2VfY250LCB1MzIgY3RsX2JsZW5kX29wX2ZsYWdzKQogewogCXN0cnVj dCBtZHA1X2h3X21peGVyICptaXhlciA9IHBpcGVsaW5lLT5taXhlcjsKKwlzdHJ1Y3QgbWRwNV9o d19taXhlciAqcl9taXhlciA9IHBpcGVsaW5lLT5yX21peGVyOwogCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CiAJdTMyIGJsZW5kX2NmZyA9IDAsIGJsZW5kX2V4dF9jZmcgPSAwOworCXUzMiByX2JsZW5k X2NmZyA9IDAsIHJfYmxlbmRfZXh0X2NmZyA9IDA7CiAJaW50IGksIHN0YXJ0X3N0YWdlOwogCiAJ aWYgKGN0bF9ibGVuZF9vcF9mbGFncyAmIE1EUDVfQ1RMX0JMRU5EX09QX0ZMQUdfQk9SREVSX09V VCkgewogCQlzdGFydF9zdGFnZSA9IFNUQUdFMDsKIAkJYmxlbmRfY2ZnIHw9IE1EUDVfQ1RMX0xB WUVSX1JFR19CT1JERVJfQ09MT1I7CisJCWlmIChyX21peGVyKQorCQkJcl9ibGVuZF9jZmcgfD0g TURQNV9DVExfTEFZRVJfUkVHX0JPUkRFUl9DT0xPUjsKIAl9IGVsc2UgewogCQlzdGFydF9zdGFn ZSA9IFNUQUdFX0JBU0U7CiAJfQogCiAJZm9yIChpID0gc3RhcnRfc3RhZ2U7IHN0YWdlX2NudCAm JiBpIDw9IFNUQUdFX01BWDsgaSsrKSB7Ci0JCWJsZW5kX2NmZyB8PSBtZHBfY3RsX2JsZW5kX21h c2soc3RhZ2VbaV0sIGkpOwotCQlibGVuZF9leHRfY2ZnIHw9IG1kcF9jdGxfYmxlbmRfZXh0X21h c2soc3RhZ2VbaV0sIGkpOworCQlibGVuZF9jZmcgfD0KKwkJCW1kcF9jdGxfYmxlbmRfbWFzayhz dGFnZVtpXVtQSVBFX0xFRlRdLCBpKTsKKwkJYmxlbmRfZXh0X2NmZyB8PQorCQkJbWRwX2N0bF9i bGVuZF9leHRfbWFzayhzdGFnZVtpXVtQSVBFX0xFRlRdLCBpKTsKKwkJaWYgKHJfbWl4ZXIpIHsK KwkJCXJfYmxlbmRfY2ZnIHw9CisJCQkJbWRwX2N0bF9ibGVuZF9tYXNrKHJfc3RhZ2VbaV1bUElQ RV9MRUZUXSwgaSk7CisJCQlyX2JsZW5kX2V4dF9jZmcgfD0KKwkJCQltZHBfY3RsX2JsZW5kX2V4 dF9tYXNrKHJfc3RhZ2VbaV1bUElQRV9MRUZUXSwgaSk7CisJCX0KIAl9CiAKIAlzcGluX2xvY2tf aXJxc2F2ZSgmY3RsLT5od19sb2NrLCBmbGFncyk7CkBAIC0zNzEsMTIgKzM5OCwyMyBAQCBpbnQg bWRwNV9jdGxfYmxlbmQoc3RydWN0IG1kcDVfY3RsICpjdGwsIHN0cnVjdCBtZHA1X3BpcGVsaW5l ICpwaXBlbGluZSwKIAljdGxfd3JpdGUoY3RsLCBSRUdfTURQNV9DVExfTEFZRVJfUkVHKGN0bC0+ aWQsIG1peGVyLT5sbSksIGJsZW5kX2NmZyk7CiAJY3RsX3dyaXRlKGN0bCwgUkVHX01EUDVfQ1RM X0xBWUVSX0VYVF9SRUcoY3RsLT5pZCwgbWl4ZXItPmxtKSwKIAkJICBibGVuZF9leHRfY2ZnKTsK KwlpZiAocl9taXhlcikgeworCQljdGxfd3JpdGUoY3RsLCBSRUdfTURQNV9DVExfTEFZRVJfUkVH KGN0bC0+aWQsIHJfbWl4ZXItPmxtKSwKKwkJCSAgcl9ibGVuZF9jZmcpOworCQljdGxfd3JpdGUo Y3RsLCBSRUdfTURQNV9DVExfTEFZRVJfRVhUX1JFRyhjdGwtPmlkLCByX21peGVyLT5sbSksCisJ CQkgIHJfYmxlbmRfZXh0X2NmZyk7CisJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0bC0+ aHdfbG9jaywgZmxhZ3MpOwogCiAJY3RsLT5wZW5kaW5nX2N0bF90cmlnZ2VyID0gbWRwX2N0bF9m bHVzaF9tYXNrX2xtKG1peGVyLT5sbSk7CisJaWYgKHJfbWl4ZXIpCisJCWN0bC0+cGVuZGluZ19j dGxfdHJpZ2dlciB8PSBtZHBfY3RsX2ZsdXNoX21hc2tfbG0ocl9taXhlci0+bG0pOwogCiAJREJH KCJsbSVkOiBibGVuZCBjb25maWcgPSAweCUwOHguIGV4dF9jZmcgPSAweCUwOHgiLCBtaXhlci0+ bG0sCiAJCWJsZW5kX2NmZywgYmxlbmRfZXh0X2NmZyk7CisJaWYgKHJfbWl4ZXIpCisJCURCRygi bG0lZDogYmxlbmQgY29uZmlnID0gMHglMDh4LiBleHRfY2ZnID0gMHglMDh4IiwKKwkJICAgIHJf bWl4ZXItPmxtLCByX2JsZW5kX2NmZywgcl9ibGVuZF9leHRfY2ZnKTsKIAogCXJldHVybiAwOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2N0bC5oIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2N0bC5oCmluZGV4IDc1MWRkODYxY2Zk OC4uYjYzMTIwMzg4ZGM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1 L21kcDVfY3RsLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2N0bC5o CkBAIC00Niw2ICs0Niw4IEBAIGludCBtZHA1X2N0bF9zZXRfY3Vyc29yKHN0cnVjdCBtZHA1X2N0 bCAqY3RsLCBzdHJ1Y3QgbWRwNV9waXBlbGluZSAqcGlwZWxpbmUsCiAJCQlpbnQgY3Vyc29yX2lk LCBib29sIGVuYWJsZSk7CiBpbnQgbWRwNV9jdGxfcGFpcihzdHJ1Y3QgbWRwNV9jdGwgKmN0bHgs IHN0cnVjdCBtZHA1X2N0bCAqY3RseSwgYm9vbCBlbmFibGUpOwogCisjZGVmaW5lIE1BWF9QSVBF X1NUQUdFCQkyCisKIC8qCiAgKiBtZHA1X2N0bF9ibGVuZCgpIC0gQmxlbmQgbXVsdGlwbGUgbGF5 ZXJzIG9uIGEgTGF5ZXIgTWl4ZXIgKExNKQogICoKQEAgLTU5LDggKzYxLDkgQEAgaW50IG1kcDVf Y3RsX3BhaXIoc3RydWN0IG1kcDVfY3RsICpjdGx4LCBzdHJ1Y3QgbWRwNV9jdGwgKmN0bHksIGJv b2wgZW5hYmxlKTsKICAqLwogI2RlZmluZSBNRFA1X0NUTF9CTEVORF9PUF9GTEFHX0JPUkRFUl9P VVQJQklUKDApCiBpbnQgbWRwNV9jdGxfYmxlbmQoc3RydWN0IG1kcDVfY3RsICpjdGwsIHN0cnVj dCBtZHA1X3BpcGVsaW5lICpwaXBlbGluZSwKLQkJICAgZW51bSBtZHA1X3BpcGUgKnN0YWdlLCB1 MzIgc3RhZ2VfY250LAotCQkgICB1MzIgY3RsX2JsZW5kX29wX2ZsYWdzKTsKKwkJICAgZW51bSBt ZHA1X3BpcGUgc3RhZ2VbXVtNQVhfUElQRV9TVEFHRV0sCisJCSAgIGVudW0gbWRwNV9waXBlIHJf c3RhZ2VbXVtNQVhfUElQRV9TVEFHRV0sCisJCSAgIHUzMiBzdGFnZV9jbnQsIHUzMiBjdGxfYmxl bmRfb3BfZmxhZ3MpOwogCiAvKioKICAqIG1kcF9jdGxfZmx1c2hfbWFzay4uLigpIC0gUmVnaXN0 ZXIgRkxVU0ggbWFza3MKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUv bWRwNV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMuaAppbmRl eCA3Yzg5OWNjNzM4OGEuLjc1OWNmMDY5ZjJhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L21zbS9tZHAvbWRwNS9tZHA1X2ttcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21k cDUvbWRwNV9rbXMuaApAQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCBtZHA1X3BsYW5lX3N0YXRl IHsKIHN0cnVjdCBtZHA1X3BpcGVsaW5lIHsKIAlzdHJ1Y3QgbWRwNV9pbnRlcmZhY2UgKmludGY7 CiAJc3RydWN0IG1kcDVfaHdfbWl4ZXIgKm1peGVyOworCXN0cnVjdCBtZHA1X2h3X21peGVyICpy X21peGVyOwkvKiByaWdodCBtaXhlciAqLwogfTsKIAogc3RydWN0IG1kcDVfY3J0Y19zdGF0ZSB7 Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2Yg dGhlIENvZGUgQXVyb3JhIEZvcnVtLApob3N0ZWQgYnkgVGhlIExpbnV4IEZvdW5kYXRpb24KCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=