From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephane Viau Subject: [PATCH v3 3/4] drm/msm/mdp5: Add START signal to kick off certain pipelines Date: Fri, 13 Mar 2015 15:49:33 -0400 Message-ID: <1426276174-17010-4-git-send-email-sviau@codeaurora.org> References: <1426276174-17010-1-git-send-email-sviau@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1426276174-17010-1-git-send-email-sviau@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org U29tZSBpbnRlcmZhY2VzIChXQiwgRFNJIENvbW1hbmQgTW9kZSkgbmVlZCB0byBiZSBraWNrZWQg b2ZmCnRocm91Z2ggYSBTVEFSVCBTaWduYWwuIFRoaXMgc2lnbmFsIG5lZWRzIHRvIGJlIHNlbnQg YXQgdGhlIHJpZ2h0CnRpbWUgYW5kIHJlcXVlc3RzIGluIHNvbWUgY2FzZXMgdG8ga2VlcCB0cmFj ayBvZiB0aGUgcGlwZWxpbmUKc3RhdHVzIChlZzogd2hldGhlciBwaXBlbGluZSByZWdpc3RlcnMg YXJlIGZsdXNoZWQgQU5EIG91dHB1dCBXQgpidWZmZXJzIGFyZSByZWFkeSwgaW4gY2FzZSBvZiBX QiBpbnRlcmZhY2UpLgoKU2lnbmVkLW9mZi1ieTogU3RlcGhhbmUgVmlhdSA8c3ZpYXVAY29kZWF1 cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NmZy5jICAg ICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY2ZnLmggICAgIHwg ICA3ICstCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3J0Yy5jICAgIHwgIDMx ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuYyAgICAgfCAyNDcg KysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X2N0bC5oICAgICB8ICA3MiArKystLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAv bWRwNS9tZHA1X2VuY29kZXIuYyB8ICAxMyArLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X2ttcy5oICAgICB8ICAgMSArCiA3IGZpbGVzIGNoYW5nZWQsIDI3NiBpbnNlcnRpb25z KCspLCA5NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21k cC9tZHA1L21kcDVfY2ZnLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY2Zn LmMKaW5kZXggYzA3OGYzMC4uNzJjMDc1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9tZHAvbWRwNS9tZHA1X2NmZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUv bWRwNV9jZmcuYwpAQCAtMzEsNiArMzEsNyBAQCBjb25zdCBzdHJ1Y3QgbWRwNV9jZmdfaHcgbXNt OHg3NF9jb25maWcgPSB7CiAJLmN0bCA9IHsKIAkJLmNvdW50ID0gNSwKIAkJLmJhc2UgPSB7IDB4 MDA2MDAsIDB4MDA3MDAsIDB4MDA4MDAsIDB4MDA5MDAsIDB4MDBhMDAgfSwKKwkJLmZsdXNoX2h3 X21hc2sgPSAweDAwMDNmZmZmLAogCX0sCiAJLnBpcGVfdmlnID0gewogCQkuY291bnQgPSAzLApA QCAtNzgsNiArNzksNyBAQCBjb25zdCBzdHJ1Y3QgbWRwNV9jZmdfaHcgYXBxODA4NF9jb25maWcg PSB7CiAJLmN0bCA9IHsKIAkJLmNvdW50ID0gNSwKIAkJLmJhc2UgPSB7IDB4MDA2MDAsIDB4MDA3 MDAsIDB4MDA4MDAsIDB4MDA5MDAsIDB4MDBhMDAgfSwKKwkJLmZsdXNoX2h3X21hc2sgPSAweDAw M2ZmZmZmLAogCX0sCiAJLnBpcGVfdmlnID0gewogCQkuY291bnQgPSA0LApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NmZy5oIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tZHAvbWRwNS9tZHA1X2NmZy5oCmluZGV4IDRlOTA3NDAuLjY5ZTM1YWMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jZmcuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY2ZnLmgKQEAgLTQ0LDYgKzQ0LDExIEBAIHN0cnVj dCBtZHA1X2xtX2Jsb2NrIHsKIAl1aW50MzJfdCBuYl9zdGFnZXM7CQkvKiBudW1iZXIgb2Ygc3Rh Z2VzIHBlciBibGVuZGVyICovCiB9OwogCitzdHJ1Y3QgbWRwNV9jdGxfYmxvY2sgeworCU1EUDVf U1VCX0JMT0NLX0RFRklOSVRJT047CisJdWludDMyX3QgZmx1c2hfaHdfbWFzazsJCS8qIEZMVVNI IHJlZ2lzdGVyJ3MgaGFyZHdhcmUgbWFzayAqLworfTsKKwogc3RydWN0IG1kcDVfc21wX2Jsb2Nr IHsKIAlpbnQgbW1iX2NvdW50OwkJCS8qIG51bWJlciBvZiBTTVAgTU1CcyAqLwogCWludCBtbWJf c2l6ZTsJCQkvKiBNTUI6IHNpemUgaW4gYnl0ZXMgKi8KQEAgLTU1LDcgKzYwLDcgQEAgc3RydWN0 IG1kcDVfY2ZnX2h3IHsKIAljaGFyICAqbmFtZTsKIAogCXN0cnVjdCBtZHA1X3NtcF9ibG9jayBz bXA7Ci0Jc3RydWN0IG1kcDVfc3ViX2Jsb2NrIGN0bDsKKwlzdHJ1Y3QgbWRwNV9jdGxfYmxvY2sg Y3RsOwogCXN0cnVjdCBtZHA1X3N1Yl9ibG9jayBwaXBlX3ZpZzsKIAlzdHJ1Y3QgbWRwNV9zdWJf YmxvY2sgcGlwZV9yZ2I7CiAJc3RydWN0IG1kcDVfc3ViX2Jsb2NrIHBpcGVfZG1hOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NydGMuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jcnRjLmMKaW5kZXggMTUxMzZmMS4uOTUyN2FkMSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NydGMuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3J0Yy5jCkBAIC04Miw4ICs4Miw2 IEBAIHN0YXRpYyB2b2lkIHJlcXVlc3RfcGVuZGluZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHVp bnQzMl90IHBlbmRpbmcpCiAJbWRwX2lycV9yZWdpc3RlcigmZ2V0X2ttcyhjcnRjKS0+YmFzZSwg Jm1kcDVfY3J0Yy0+dmJsYW5rKTsKIH0KIAotI2RlZmluZSBtZHA1X2xtX2dldF9mbHVzaChsbSkJ bWRwX2N0bF9mbHVzaF9tYXNrX2xtKGxtKQotCiBzdGF0aWMgdm9pZCBjcnRjX2ZsdXNoKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywgdTMyIGZsdXNoX21hc2spCiB7CiAJc3RydWN0IG1kcDVfY3J0YyAq bWRwNV9jcnRjID0gdG9fbWRwNV9jcnRjKGNydGMpOwpAQCAtMTEwLDggKzEwOCw4IEBAIHN0YXRp YyB2b2lkIGNydGNfZmx1c2hfYWxsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlkcm1fYXRvbWlj X2NydGNfZm9yX2VhY2hfcGxhbmUocGxhbmUsIGNydGMpIHsKIAkJZmx1c2hfbWFzayB8PSBtZHA1 X3BsYW5lX2dldF9mbHVzaChwbGFuZSk7CiAJfQotCWZsdXNoX21hc2sgfD0gbWRwNV9jdGxfZ2V0 X2ZsdXNoKG1kcDVfY3J0Yy0+Y3RsKTsKLQlmbHVzaF9tYXNrIHw9IG1kcDVfbG1fZ2V0X2ZsdXNo KG1kcDVfY3J0Yy0+bG0pOworCisJZmx1c2hfbWFzayB8PSBtZHBfY3RsX2ZsdXNoX21hc2tfbG0o bWRwNV9jcnRjLT5sbSk7CiAKIAljcnRjX2ZsdXNoKGNydGMsIGZsdXNoX21hc2spOwogfQpAQCAt NDQyLDEzICs0NDAsMTQgQEAgc3RhdGljIGludCBtZHA1X2NydGNfY3Vyc29yX3NldChzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJc3RydWN0IG1kcDVfY3J0YyAqbWRwNV9jcnRjID0gdG9fbWRwNV9j cnRjKGNydGMpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0 IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMoY3J0Yyk7Ci0Jc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpjdXJzb3JfYm8sICpvbGRfYm87CisJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpjdXJzb3Jf Ym8sICpvbGRfYm8gPSBOVUxMOwogCXVpbnQzMl90IGJsZW5kY2ZnLCBjdXJzb3JfYWRkciwgc3Ry aWRlOwogCWludCByZXQsIGJwcCwgbG07CiAJdW5zaWduZWQgaW50IGRlcHRoOwogCWVudW0gbWRw NV9jdXJzb3JfYWxwaGEgY3VyX2FscGhhID0gQ1VSU09SX0FMUEhBX1BFUl9QSVhFTDsKIAl1aW50 MzJfdCBmbHVzaF9tYXNrID0gbWRwX2N0bF9mbHVzaF9tYXNrX2N1cnNvcigwKTsKIAl1aW50MzJf dCByb2lfdywgcm9pX2g7CisJYm9vbCBjdXJzb3JfZW5hYmxlID0gdHJ1ZTsKIAl1bnNpZ25lZCBs b25nIGZsYWdzOwogCiAJaWYgKCh3aWR0aCA+IENVUlNPUl9XSURUSCkgfHwgKGhlaWdodCA+IENV UlNPUl9IRUlHSFQpKSB7CkBAIC00NjEsNyArNDYwLDggQEAgc3RhdGljIGludCBtZHA1X2NydGNf Y3Vyc29yX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpZiAoIWhhbmRsZSkgewogCQlE QkcoIkN1cnNvciBvZmYiKTsKLQkJcmV0dXJuIG1kcDVfY3RsX3NldF9jdXJzb3IobWRwNV9jcnRj LT5jdGwsIGZhbHNlKTsKKwkJY3Vyc29yX2VuYWJsZSA9IGZhbHNlOworCQlnb3RvIHNldF9jdXJz b3I7CiAJfQogCiAJY3Vyc29yX2JvID0gZHJtX2dlbV9vYmplY3RfbG9va3VwKGRldiwgZmlsZSwg aGFuZGxlKTsKQEAgLTUwMiwxMSArNTAyLDE0IEBAIHN0YXRpYyBpbnQgbWRwNV9jcnRjX2N1cnNv cl9zZXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgm bWRwNV9jcnRjLT5jdXJzb3IubG9jaywgZmxhZ3MpOwogCi0JcmV0ID0gbWRwNV9jdGxfc2V0X2N1 cnNvcihtZHA1X2NydGMtPmN0bCwgdHJ1ZSk7Ci0JaWYgKHJldCkKK3NldF9jdXJzb3I6CisJcmV0 ID0gbWRwNV9jdGxfc2V0X2N1cnNvcihtZHA1X2NydGMtPmN0bCwgMCwgY3Vyc29yX2VuYWJsZSk7 CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRldi0+ZGV2LCAiZmFpbGVkIHRvICVzYWJsZSBjdXJz b3I6ICVkXG4iLAorCQkJCWN1cnNvcl9lbmFibGUgPyAiZW4iIDogImRpcyIsIHJldCk7CiAJCWdv dG8gZW5kOworCX0KIAotCWZsdXNoX21hc2sgfD0gbWRwNV9jdGxfZ2V0X2ZsdXNoKG1kcDVfY3J0 Yy0+Y3RsKTsKIAljcnRjX2ZsdXNoKGNydGMsIGZsdXNoX21hc2spOwogCiBlbmQ6CkBAIC02Mjgs MTEgKzYzMSwxMyBAQCB2b2lkIG1kcDVfY3J0Y19zZXRfaW50ZihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsIHN0cnVjdCBtZHA1X2ludGVyZmFjZSAqaW50ZikKIGludCBtZHA1X2NydGNfZ2V0X2xtKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlzdHJ1Y3QgbWRwNV9jcnRjICptZHA1X2NydGMgPSB0 b19tZHA1X2NydGMoY3J0Yyk7CisJcmV0dXJuIFdBUk5fT04oIWNydGMpID8gLUVJTlZBTCA6IG1k cDVfY3J0Yy0+bG07Cit9CiAKLQlpZiAoV0FSTl9PTighY3J0YykpCi0JCXJldHVybiAtRUlOVkFM OwotCi0JcmV0dXJuIG1kcDVfY3J0Yy0+bG07CitzdHJ1Y3QgbWRwNV9jdGwgKm1kcDVfY3J0Y19n ZXRfY3RsKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgbWRwNV9jcnRjICptZHA1 X2NydGMgPSB0b19tZHA1X2NydGMoY3J0Yyk7CisJcmV0dXJuIFdBUk5fT04oIWNydGMpID8gTlVM TCA6IG1kcDVfY3J0Yy0+Y3RsOwogfQogCiAvKiBpbml0aWFsaXplIGNydGMgKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuYwppbmRleCBhNTQ4MTEzLi43YzBhZGY1IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3RsLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2N0bC5jCkBAIC0xLDUgKzEsNSBAQAogLyoK LSAqIENvcHlyaWdodCAoYykgMjAxNCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxNC0yMDE1IFRoZSBMaW51eCBGb3VuZGF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBhbmQK QEAgLTM1LDE4ICszNSwxNiBAQAogCiBzdHJ1Y3Qgb3BfbW9kZSB7CiAJc3RydWN0IG1kcDVfaW50 ZXJmYWNlIGludGY7Ci0JLyoKLQkgKiBUT0RPOiBhZGQgYSBzdGF0ZSB2YXJpYWJsZSB0byBjb250 cm9sIHRoZSBwaXBlbGluZQotCSAqCi0JICogZWc6IFdCIGludGVyZmFjZSBuZWVkcyBib3RoIGJ1 ZmZlciBhZGRyZXNzZXMgdG8gYmUgY29tbWl0dGVkICsKLQkgKiBvdXRwdXQgYnVmZmVycyByZWFk eSB0byBiZSB3cml0dGVuIGludG8sIGJlZm9yZSB3ZSBjYW4gU1RBUlQuCi0JICovCisKKwlib29s IGVuY29kZXJfZW5hYmxlZDsKKwl1aW50MzJfdCBzdGFydF9tYXNrOwogfTsKIAogc3RydWN0IG1k cDVfY3RsIHsKIAlzdHJ1Y3QgbWRwNV9jdGxfbWFuYWdlciAqY3RsbTsKIAogCXUzMiBpZDsKKwlp bnQgbG07CiAKIAkvKiB3aGV0aGVyIHRoaXMgQ1RMIGhhcyBiZWVuIGFsbG9jYXRlZCBvciBub3Q6 ICovCiAJYm9vbCBidXN5OwpAQCAtNTgsOCArNTYsOCBAQCBzdHJ1Y3QgbWRwNV9jdGwgewogCXNw aW5sb2NrX3QgaHdfbG9jazsKIAl1MzIgcmVnX29mZnNldDsKIAotCS8qIGZsdXNoIG1hc2sgdXNl ZCB0byBjb21taXQgQ1RMIHJlZ2lzdGVycyAqLwotCXUzMiBmbHVzaF9tYXNrOworCS8qIHdoZW4g ZG8gQ1RMIHJlZ2lzdGVycyBuZWVkIHRvIGJlIGZsdXNoZWQ/IChtYXNrIG9mIHRyaWdnZXIgYml0 cykgKi8KKwl1MzIgcGVuZGluZ19jdGxfdHJpZ2dlcjsKIAogCWJvb2wgY3Vyc29yX29uOwogCkBA IC03Myw2ICs3MSw5IEBAIHN0cnVjdCBtZHA1X2N0bF9tYW5hZ2VyIHsKIAl1MzIgbmxtOwogCXUz MiBuY3RsOwogCisJLyogdG8gZmlsdGVyIG91dCBub24tcHJlc2VudCBiaXRzIGluIHRoZSBjdXJy ZW50IGhhcmR3YXJlIGNvbmZpZyAqLworCXUzMiBmbHVzaF9od19tYXNrOworCiAJLyogcG9vbCBv ZiBDVExzICsgbG9jayB0byBwcm90ZWN0IHJlc291cmNlIGFsbG9jYXRpb24gKGN0bHNbaV0uYnVz eSkgKi8KIAlzcGlubG9ja190IHBvb2xfbG9jazsKIAlzdHJ1Y3QgbWRwNV9jdGwgY3Rsc1tNQVhf Q1RMXTsKQEAgLTE3NCw2ICsxNzUsOSBAQCBpbnQgbWRwNV9jdGxfc2V0X2ludGYoc3RydWN0IG1k cDVfY3RsICpjdGwsIHN0cnVjdCBtZHA1X2ludGVyZmFjZSAqaW50ZikKIAogCW1lbWNweSgmY3Rs LT5waXBlbGluZS5pbnRmLCBpbnRmLCBzaXplb2YoKmludGYpKTsKIAorCWN0bC0+cGlwZWxpbmUu c3RhcnRfbWFzayA9IG1kcF9jdGxfZmx1c2hfbWFza19sbShjdGwtPmxtKSB8CisJCQkJICAgbWRw X2N0bF9mbHVzaF9tYXNrX2VuY29kZXIoaW50Zik7CisKIAkvKiBWaXJ0dWFsIGludGVyZmFjZXMg bmVlZCBub3Qgc2V0IGEgZGlzcGxheSBpbnRmIChlLmcuOiBXcml0ZWJhY2spICovCiAJaWYgKCFt ZHA1X2NmZ19pbnRmX2lzX3ZpcnR1YWwoaW50Zi0+dHlwZSkpCiAJCXNldF9kaXNwbGF5X2ludGYo bWRwNV9rbXMsIGludGYpOwpAQCAtMTgzLDE0ICsxODcsOTAgQEAgaW50IG1kcDVfY3RsX3NldF9p bnRmKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCBzdHJ1Y3QgbWRwNV9pbnRlcmZhY2UgKmludGYpCiAJ cmV0dXJuIDA7CiB9CiAKLWludCBtZHA1X2N0bF9zZXRfY3Vyc29yKHN0cnVjdCBtZHA1X2N0bCAq Y3RsLCBib29sIGVuYWJsZSkKK3N0YXRpYyBib29sIHN0YXJ0X3NpZ25hbF9uZWVkZWQoc3RydWN0 IG1kcDVfY3RsICpjdGwpCit7CisJc3RydWN0IG9wX21vZGUgKnBpcGVsaW5lID0gJmN0bC0+cGlw ZWxpbmU7CisKKwlpZiAoIXBpcGVsaW5lLT5lbmNvZGVyX2VuYWJsZWQgfHwgcGlwZWxpbmUtPnN0 YXJ0X21hc2sgIT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCisJc3dpdGNoIChwaXBlbGluZS0+aW50 Zi50eXBlKSB7CisJY2FzZSBJTlRGX1dCOgorCQlyZXR1cm4gdHJ1ZTsKKwljYXNlIElOVEZfRFNJ OgorCQlyZXR1cm4gcGlwZWxpbmUtPmludGYubW9kZSA9PSBNRFA1X0lOVEZfRFNJX01PREVfQ09N TUFORDsKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCisvKgorICogc2VuZF9z dGFydF9zaWduYWwoKSAtIE92ZXJsYXkgUHJvY2Vzc29yIFN0YXJ0IFNpZ25hbAorICoKKyAqIEZv ciBhIGdpdmVuIGNvbnRyb2wgb3BlcmF0aW9uIChkaXNwbGF5IHBpcGVsaW5lKSwgYSBTVEFSVCBz aWduYWwgbmVlZHMgdG8gYmUKKyAqIGV4ZWN1dGVkIGluIG9yZGVyIHRvIGtpY2sgb2ZmIG9wZXJh dGlvbiBhbmQgYWN0aXZhdGUgYWxsIGxheWVycy4KKyAqIGUuZy46IERTSSBjb21tYW5kIG1vZGUs IFdyaXRlYmFjaworICovCitzdGF0aWMgdm9pZCBzZW5kX3N0YXJ0X3NpZ25hbChzdHJ1Y3QgbWRw NV9jdGwgKmN0bCkKK3sKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNh dmUoJmN0bC0+aHdfbG9jaywgZmxhZ3MpOworCWN0bF93cml0ZShjdGwsIFJFR19NRFA1X0NUTF9T VEFSVChjdGwtPmlkKSwgMSk7CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3RsLT5od19sb2Nr LCBmbGFncyk7Cit9CisKK3N0YXRpYyB2b2lkIHJlZmlsbF9zdGFydF9tYXNrKHN0cnVjdCBtZHA1 X2N0bCAqY3RsKQoreworCXN0cnVjdCBvcF9tb2RlICpwaXBlbGluZSA9ICZjdGwtPnBpcGVsaW5l OworCXN0cnVjdCBtZHA1X2ludGVyZmFjZSAqaW50ZiA9ICZjdGwtPnBpcGVsaW5lLmludGY7CisK KwlwaXBlbGluZS0+c3RhcnRfbWFzayA9IG1kcF9jdGxfZmx1c2hfbWFza19sbShjdGwtPmxtKTsK KworCS8qCisJICogV3JpdGViYWNrIGVuY29kZXIgbmVlZHMgdG8gcHJvZ3JhbSAmIGZsdXNoCisJ ICogYWRkcmVzcyByZWdpc3RlcnMgZm9yIGVhY2ggcGFnZSBmbGlwLi4KKwkgKi8KKwlpZiAoaW50 Zi0+dHlwZSA9PSBJTlRGX1dCKQorCQlwaXBlbGluZS0+c3RhcnRfbWFzayB8PSBtZHBfY3RsX2Zs dXNoX21hc2tfZW5jb2RlcihpbnRmKTsKK30KKworLyoqCisgKiBtZHA1X2N0bF9zZXRfZW5jb2Rl cl9zdGF0ZSgpIC0gc2V0IHRoZSBlbmNvZGVyIHN0YXRlCisgKgorICogQGVuYWJsZTogdHJ1ZSwg d2hlbiBlbmNvZGVyIGlzIHJlYWR5IGZvciBkYXRhIHN0cmVhbWluZzsgZmFsc2UsIG90aGVyd2lz ZS4KKyAqCisgKiBOb3RlOgorICogVGhpcyBlbmNvZGVyIHN0YXRlIGlzIG5lZWRlZCB0byB0cmln Z2VyIFNUQVJUIHNpZ25hbCAoZGF0YSBwYXRoIGtpY2tvZmYpLgorICovCitpbnQgbWRwNV9jdGxf c2V0X2VuY29kZXJfc3RhdGUoc3RydWN0IG1kcDVfY3RsICpjdGwsIGJvb2wgZW5hYmxlZCkKK3sK KwlpZiAoV0FSTl9PTighY3RsKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljdGwtPnBpcGVsaW5l LmVuY29kZXJfZW5hYmxlZCA9IGVuYWJsZWQ7CisJREJHKCJpbnRmXyVkOiAlcyIsIGN0bC0+cGlw ZWxpbmUuaW50Zi5udW0sIGVuYWJsZWQgPyAib24iIDogIm9mZiIpOworCisJaWYgKHN0YXJ0X3Np Z25hbF9uZWVkZWQoY3RsKSkgeworCQlzZW5kX3N0YXJ0X3NpZ25hbChjdGwpOworCQlyZWZpbGxf c3RhcnRfbWFzayhjdGwpOworCX0KKworCXJldHVybiAwOworfQorCisvKgorICogTm90ZToKKyAq IENUTCByZWdpc3RlcnMgbmVlZCB0byBiZSBmbHVzaGVkIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5j dGlvbgorICogKGNhbGwgbWRwNV9jdGxfY29tbWl0KCkgd2l0aCBtZHBfY3RsX2ZsdXNoX21hc2tf Y3RsKCkgbWFzaykKKyAqLworaW50IG1kcDVfY3RsX3NldF9jdXJzb3Ioc3RydWN0IG1kcDVfY3Rs ICpjdGwsIGludCBjdXJzb3JfaWQsIGJvb2wgZW5hYmxlKQogewogCXN0cnVjdCBtZHA1X2N0bF9t YW5hZ2VyICpjdGxfbWdyID0gY3RsLT5jdGxtOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJdTMy IGJsZW5kX2NmZzsKLQlpbnQgbG07CisJaW50IGxtID0gY3RsLT5sbTsKIAotCWxtID0gbWRwNV9j cnRjX2dldF9sbShjdGwtPmNydGMpOwogCWlmICh1bmxpa2VseShXQVJOX09OKGxtIDwgMCkpKSB7 CiAJCWRldl9lcnIoY3RsX21nci0+ZGV2LT5kZXYsICJDVEwgJWQgY2Fubm90IGZpbmQgTE06ICVk IiwKIAkJCQljdGwtPmlkLCBsbSk7CkBAIC0yMTAsMTIgKzI5MCwxMiBAQCBpbnQgbWRwNV9jdGxf c2V0X2N1cnNvcihzdHJ1Y3QgbWRwNV9jdGwgKmN0bCwgYm9vbCBlbmFibGUpCiAKIAlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZjdGwtPmh3X2xvY2ssIGZsYWdzKTsKIAorCWN0bC0+cGVuZGluZ19j dGxfdHJpZ2dlciA9IG1kcF9jdGxfZmx1c2hfbWFza19jdXJzb3IoY3Vyc29yX2lkKTsKIAljdGwt PmN1cnNvcl9vbiA9IGVuYWJsZTsKIAogCXJldHVybiAwOwogfQogCi0KIGludCBtZHA1X2N0bF9i bGVuZChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCwgdTMyIGxtLCB1MzIgYmxlbmRfY2ZnKQogewogCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CkBAIC0yMjksMzcgKzMwOSwxMzMgQEAgaW50IG1kcDVfY3RsX2Js ZW5kKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCB1MzIgbG0sIHUzMiBibGVuZF9jZmcpCiAJY3RsX3dy aXRlKGN0bCwgUkVHX01EUDVfQ1RMX0xBWUVSX1JFRyhjdGwtPmlkLCBsbSksIGJsZW5kX2NmZyk7 CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3RsLT5od19sb2NrLCBmbGFncyk7CiAKKwljdGwt PnBlbmRpbmdfY3RsX3RyaWdnZXIgPSBtZHBfY3RsX2ZsdXNoX21hc2tfbG0obG0pOworCiAJcmV0 dXJuIDA7CiB9CiAKK3UzMiBtZHBfY3RsX2ZsdXNoX21hc2tfZW5jb2RlcihzdHJ1Y3QgbWRwNV9p bnRlcmZhY2UgKmludGYpCit7CisJLyogdGhlc2UgYXJlIGR1bW15IGJpdHMgZm9yIG5vdywgYnV0 IHdpbGwgYXBwZWFyIGluIG5leHQgY2hpcHNldHM6ICovCisjZGVmaW5lIE1EUDVfQ1RMX0ZMVVNI X1RJTUlOR18wCQkweDgwMDAwMDAwCisjZGVmaW5lIE1EUDVfQ1RMX0ZMVVNIX1RJTUlOR18xCQkw eDQwMDAwMDAwCisjZGVmaW5lIE1EUDVfQ1RMX0ZMVVNIX1RJTUlOR18yCQkweDIwMDAwMDAwCisj ZGVmaW5lIE1EUDVfQ1RMX0ZMVVNIX1RJTUlOR18zCQkweDEwMDAwMDAwCisjZGVmaW5lIE1EUDVf Q1RMX0ZMVVNIX1dCCQkweDAwMDEwMDAwCisKKwlpZiAoaW50Zi0+dHlwZSA9PSBJTlRGX1dCKQor CQlyZXR1cm4gTURQNV9DVExfRkxVU0hfV0I7CisKKwlzd2l0Y2ggKGludGYtPm51bSkgeworCWNh c2UgMDogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1RJTUlOR18wOworCWNhc2UgMTogcmV0dXJuIE1E UDVfQ1RMX0ZMVVNIX1RJTUlOR18xOworCWNhc2UgMjogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1RJ TUlOR18yOworCWNhc2UgMzogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1RJTUlOR18zOworCWRlZmF1 bHQ6IHJldHVybiAwOworCX0KK30KKwordTMyIG1kcF9jdGxfZmx1c2hfbWFza19jdXJzb3IoaW50 IGN1cnNvcl9pZCkKK3sKKwkvKiB0aGVzZSBhcmUgZHVtbXkgYml0cyBmb3Igbm93LCBidXQgd2ls bCBhcHBlYXIgaW4gbmV4dCBjaGlwc2V0czogKi8KKyNkZWZpbmUgTURQNV9DVExfRkxVU0hfQ1VS U09SXzAJCTB4MDA0MDAwMDAKKyNkZWZpbmUgTURQNV9DVExfRkxVU0hfQ1VSU09SXzEJCTB4MDA4 MDAwMDAKKworCXN3aXRjaCAoY3Vyc29yX2lkKSB7CisJY2FzZSAwOiByZXR1cm4gTURQNV9DVExf RkxVU0hfQ1VSU09SXzA7CisJY2FzZSAxOiByZXR1cm4gTURQNV9DVExfRkxVU0hfQ1VSU09SXzE7 CisJZGVmYXVsdDogcmV0dXJuIDA7CisJfQorfQorCit1MzIgbWRwX2N0bF9mbHVzaF9tYXNrX3Bp cGUoZW51bSBtZHA1X3BpcGUgcGlwZSkKK3sKKwlzd2l0Y2ggKHBpcGUpIHsKKwljYXNlIFNTUFBf VklHMDogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1ZJRzA7CisJY2FzZSBTU1BQX1ZJRzE6IHJldHVy biBNRFA1X0NUTF9GTFVTSF9WSUcxOworCWNhc2UgU1NQUF9WSUcyOiByZXR1cm4gTURQNV9DVExf RkxVU0hfVklHMjsKKwljYXNlIFNTUFBfUkdCMDogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1JHQjA7 CisJY2FzZSBTU1BQX1JHQjE6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9SR0IxOworCWNhc2UgU1NQ UF9SR0IyOiByZXR1cm4gTURQNV9DVExfRkxVU0hfUkdCMjsKKwljYXNlIFNTUFBfRE1BMDogcmV0 dXJuIE1EUDVfQ1RMX0ZMVVNIX0RNQTA7CisJY2FzZSBTU1BQX0RNQTE6IHJldHVybiBNRFA1X0NU TF9GTFVTSF9ETUExOworCWNhc2UgU1NQUF9WSUczOiByZXR1cm4gTURQNV9DVExfRkxVU0hfVklH MzsKKwljYXNlIFNTUFBfUkdCMzogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1JHQjM7CisJZGVmYXVs dDogICAgICAgIHJldHVybiAwOworCX0KK30KKwordTMyIG1kcF9jdGxfZmx1c2hfbWFza19sbShp bnQgbG0pCit7CisJc3dpdGNoIChsbSkgeworCWNhc2UgMDogIHJldHVybiBNRFA1X0NUTF9GTFVT SF9MTTA7CisJY2FzZSAxOiAgcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX0xNMTsKKwljYXNlIDI6ICBy ZXR1cm4gTURQNV9DVExfRkxVU0hfTE0yOworCWNhc2UgNTogIHJldHVybiBNRFA1X0NUTF9GTFVT SF9MTTU7CisJZGVmYXVsdDogcmV0dXJuIDA7CisJfQorfQorCitzdGF0aWMgdTMyIGZpeF9zd19m bHVzaChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCwgdTMyIGZsdXNoX21hc2spCit7CisJc3RydWN0IG1k cDVfY3RsX21hbmFnZXIgKmN0bF9tZ3IgPSBjdGwtPmN0bG07CisJdTMyIHN3X21hc2sgPSAwOwor I2RlZmluZSBCSVRfTkVFRFNfU1dfRklYKGJpdCkgXAorCSghKGN0bF9tZ3ItPmZsdXNoX2h3X21h c2sgJiBiaXQpICYmIChmbHVzaF9tYXNrICYgYml0KSkKKworCS8qIGZvciBzb21lIHRhcmdldHMs IGN1cnNvciBiaXQgaXMgdGhlIHNhbWUgYXMgTE0gYml0ICovCisJaWYgKEJJVF9ORUVEU19TV19G SVgoTURQNV9DVExfRkxVU0hfQ1VSU09SXzApKQorCQlzd19tYXNrIHw9IG1kcF9jdGxfZmx1c2hf bWFza19sbShjdGwtPmxtKTsKKworCXJldHVybiBzd19tYXNrOworfQorCisvKioKKyAqIG1kcDVf Y3RsX2NvbW1pdCgpIC0gUmVnaXN0ZXIgRmx1c2gKKyAqCisgKiBUaGUgZmx1c2ggcmVnaXN0ZXIg aXMgdXNlZCB0byBpbmRpY2F0ZSBzZXZlcmFsIHJlZ2lzdGVycyBhcmUgYWxsCisgKiBwcm9ncmFt bWVkLCBhbmQgYXJlIHNhZmUgdG8gdXBkYXRlIHRvIHRoZSBiYWNrIGNvcHkgb2YgdGhlIGRvdWJs ZQorICogYnVmZmVyZWQgcmVnaXN0ZXJzLgorICoKKyAqIFNvbWUgcmVnaXN0ZXJzIEZMVVNIIGJp dHMgYXJlIHNoYXJlZCB3aGVuIHRoZSBoYXJkd2FyZSBkb2VzIG5vdCBoYXZlCisgKiBkZWRpY2F0 ZWQgYml0cyBmb3IgdGhlbTsgaGFuZGxpbmcgdGhlc2UgaXMgdGhlIGpvYiBvZiBmaXhfc3dfZmx1 c2goKS4KKyAqCisgKiBDVEwgcmVnaXN0ZXJzIG5lZWQgdG8gYmUgZmx1c2hlZCBpbiBzb21lIGNp cmN1bXN0YW5jZXM7IGlmIHRoYXQgaXMgdGhlCisgKiBjYXNlLCBzb21lIHRyaWdnZXIgYml0cyB3 aWxsIGJlIHByZXNlbnQgaW4gYm90aCBmbHVzaCBtYXNrIGFuZAorICogY3RsLT5wZW5kaW5nX2N0 bF90cmlnZ2VyLgorICovCiBpbnQgbWRwNV9jdGxfY29tbWl0KHN0cnVjdCBtZHA1X2N0bCAqY3Rs LCB1MzIgZmx1c2hfbWFzaykKIHsKIAlzdHJ1Y3QgbWRwNV9jdGxfbWFuYWdlciAqY3RsX21nciA9 IGN0bC0+Y3RsbTsKKwlzdHJ1Y3Qgb3BfbW9kZSAqcGlwZWxpbmUgPSAmY3RsLT5waXBlbGluZTsK IAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCi0JaWYgKGZsdXNoX21hc2sgJiBNRFA1X0NUTF9GTFVT SF9DVVJTT1JfRFVNTVkpIHsKLQkJaW50IGxtID0gbWRwNV9jcnRjX2dldF9sbShjdGwtPmNydGMp OworCXBpcGVsaW5lLT5zdGFydF9tYXNrICY9IH5mbHVzaF9tYXNrOwogCi0JCWlmICh1bmxpa2Vs eShXQVJOX09OKGxtIDwgMCkpKSB7Ci0JCQlkZXZfZXJyKGN0bF9tZ3ItPmRldi0+ZGV2LCAiQ1RM ICVkIGNhbm5vdCBmaW5kIExNOiAlZCIsCi0JCQkJCWN0bC0+aWQsIGxtKTsKLQkJCXJldHVybiAt RUlOVkFMOwotCQl9CisJVkVSQigiZmx1c2hfbWFzaz0leCwgc3RhcnRfbWFzaz0leCwgdHJpZ2dl cj0leCIsIGZsdXNoX21hc2ssCisJCQlwaXBlbGluZS0+c3RhcnRfbWFzaywgY3RsLT5wZW5kaW5n X2N0bF90cmlnZ2VyKTsKIAotCQkvKiBmb3IgY3VycmVudCB0YXJnZXRzLCBjdXJzb3IgYml0IGlz IHRoZSBzYW1lIGFzIExNIGJpdCAqLwotCQlmbHVzaF9tYXNrIHw9IG1kcF9jdGxfZmx1c2hfbWFz a19sbShsbSk7CisJaWYgKGN0bC0+cGVuZGluZ19jdGxfdHJpZ2dlciAmIGZsdXNoX21hc2spIHsK KwkJZmx1c2hfbWFzayB8PSBNRFA1X0NUTF9GTFVTSF9DVEw7CisJCWN0bC0+cGVuZGluZ19jdGxf dHJpZ2dlciA9IDA7CiAJfQogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmN0bC0+aHdfbG9jaywgZmxh Z3MpOwotCWN0bF93cml0ZShjdGwsIFJFR19NRFA1X0NUTF9GTFVTSChjdGwtPmlkKSwgZmx1c2hf bWFzayk7Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3RsLT5od19sb2NrLCBmbGFncyk7CisJ Zmx1c2hfbWFzayB8PSBmaXhfc3dfZmx1c2goY3RsLCBmbHVzaF9tYXNrKTsKIAotCXJldHVybiAw OwotfQorCWZsdXNoX21hc2sgJj0gY3RsX21nci0+Zmx1c2hfaHdfbWFzazsKIAotdTMyIG1kcDVf Y3RsX2dldF9mbHVzaChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCkKLXsKLQlyZXR1cm4gY3RsLT5mbHVz aF9tYXNrOworCWlmIChmbHVzaF9tYXNrKSB7CisJCXNwaW5fbG9ja19pcnFzYXZlKCZjdGwtPmh3 X2xvY2ssIGZsYWdzKTsKKwkJY3RsX3dyaXRlKGN0bCwgUkVHX01EUDVfQ1RMX0ZMVVNIKGN0bC0+ aWQpLCBmbHVzaF9tYXNrKTsKKwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3RsLT5od19sb2Nr LCBmbGFncyk7CisJfQorCisJaWYgKHN0YXJ0X3NpZ25hbF9uZWVkZWQoY3RsKSkgeworCQlzZW5k X3N0YXJ0X3NpZ25hbChjdGwpOworCQlyZWZpbGxfc3RhcnRfbWFzayhjdGwpOworCX0KKworCXJl dHVybiAwOwogfQogCiB2b2lkIG1kcDVfY3RsX3JlbGVhc2Uoc3RydWN0IG1kcDVfY3RsICpjdGwp CkBAIC0yODAsNiArNDU2LDExIEBAIHZvaWQgbWRwNV9jdGxfcmVsZWFzZShzdHJ1Y3QgbWRwNV9j dGwgKmN0bCkKIAlEQkcoIkNUTCAlZCByZWxlYXNlZCIsIGN0bC0+aWQpOwogfQogCitpbnQgbWRw NV9jdGxfZ2V0X2N0bF9pZChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCkKK3sKKwlyZXR1cm4gV0FSTl9P TighY3RsKSA/IC1FSU5WQUwgOiBjdGwtPmlkOworfQorCiAvKgogICogbWRwNV9jdGxfcmVxdWVz dCgpIC0gQ1RMIGR5bmFtaWMgYWxsb2NhdGlvbgogICoKQEAgLTMwNyw4ICs0ODgsMTAgQEAgc3Ry dWN0IG1kcDVfY3RsICptZHA1X2N0bG1fcmVxdWVzdChzdHJ1Y3QgbWRwNV9jdGxfbWFuYWdlciAq Y3RsX21nciwKIAogCWN0bCA9ICZjdGxfbWdyLT5jdGxzW2NdOwogCisJY3RsLT5sbSA9IG1kcDVf Y3J0Y19nZXRfbG0oY3J0Yyk7CiAJY3RsLT5jcnRjID0gY3J0YzsKIAljdGwtPmJ1c3kgPSB0cnVl OworCWN0bC0+cGVuZGluZ19jdGxfdHJpZ2dlciA9IDA7CiAJREJHKCJDVEwgJWQgYWxsb2NhdGVk IiwgY3RsLT5pZCk7CiAKIHVubG9jazoKQEAgLTMzOSw3ICs1MjIsNyBAQCBzdHJ1Y3QgbWRwNV9j dGxfbWFuYWdlciAqbWRwNV9jdGxtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJdm9p ZCBfX2lvbWVtICptbWlvX2Jhc2UsIGNvbnN0IHN0cnVjdCBtZHA1X2NmZ19odyAqaHdfY2ZnKQog ewogCXN0cnVjdCBtZHA1X2N0bF9tYW5hZ2VyICpjdGxfbWdyOwotCWNvbnN0IHN0cnVjdCBtZHA1 X3N1Yl9ibG9jayAqY3RsX2NmZyA9ICZod19jZmctPmN0bDsKKwljb25zdCBzdHJ1Y3QgbWRwNV9j dGxfYmxvY2sgKmN0bF9jZmcgPSAmaHdfY2ZnLT5jdGw7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsK IAlpbnQgYywgcmV0OwogCkBAIC0zNjEsNiArNTQ0LDcgQEAgc3RydWN0IG1kcDVfY3RsX21hbmFn ZXIgKm1kcDVfY3RsbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJY3RsX21nci0+ZGV2 ID0gZGV2OwogCWN0bF9tZ3ItPm5sbSA9IGh3X2NmZy0+bG0uY291bnQ7CiAJY3RsX21nci0+bmN0 bCA9IGN0bF9jZmctPmNvdW50OworCWN0bF9tZ3ItPmZsdXNoX2h3X21hc2sgPSBjdGxfY2ZnLT5m bHVzaF9od19tYXNrOwogCXNwaW5fbG9ja19pbml0KCZjdGxfbWdyLT5wb29sX2xvY2spOwogCiAJ LyogaW5pdGlhbGl6ZSBlYWNoIENUTCBvZiB0aGUgcG9vbDogKi8KQEAgLTM3Niw3ICs1NjAsNiBA QCBzdHJ1Y3QgbWRwNV9jdGxfbWFuYWdlciAqbWRwNV9jdGxtX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAkJY3RsLT5jdGxtID0gY3RsX21ncjsKIAkJY3RsLT5pZCA9IGM7CiAJCWN0bC0+ cmVnX29mZnNldCA9IGN0bF9jZmctPmJhc2VbY107Ci0JCWN0bC0+Zmx1c2hfbWFzayA9IE1EUDVf Q1RMX0ZMVVNIX0NUTDsKIAkJY3RsLT5idXN5ID0gZmFsc2U7CiAJCXNwaW5fbG9ja19pbml0KCZj dGwtPmh3X2xvY2spOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21k cDUvbWRwNV9jdGwuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuaApp bmRleCAyNzFkNWFjLi43YTYyMDAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21k cC9tZHA1L21kcDVfY3RsLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1 X2N0bC5oCkBAIC0zMywyMCArMzMsMTMgQEAgdm9pZCBtZHA1X2N0bG1fZGVzdHJveShzdHJ1Y3Qg bWRwNV9jdGxfbWFuYWdlciAqY3RsbSk7CiAgKiB3aGljaCBpcyB0aGVuIHVzZWQgdG8gY2FsbCB0 aGUgb3RoZXIgbWRwNV9jdGxfKihjdGwsIC4uLikgZnVuY3Rpb25zLgogICovCiBzdHJ1Y3QgbWRw NV9jdGwgKm1kcDVfY3RsbV9yZXF1ZXN0KHN0cnVjdCBtZHA1X2N0bF9tYW5hZ2VyICpjdGxtLCBz dHJ1Y3QgZHJtX2NydGMgKmNydGMpOworaW50IG1kcDVfY3RsX2dldF9jdGxfaWQoc3RydWN0IG1k cDVfY3RsICpjdGwpOwogCiBzdHJ1Y3QgbWRwNV9pbnRlcmZhY2U7CiBpbnQgbWRwNV9jdGxfc2V0 X2ludGYoc3RydWN0IG1kcDVfY3RsICpjdGwsIHN0cnVjdCBtZHA1X2ludGVyZmFjZSAqaW50Zik7 CitpbnQgbWRwNV9jdGxfc2V0X2VuY29kZXJfc3RhdGUoc3RydWN0IG1kcDVfY3RsICpjdGwsIGJv b2wgZW5hYmxlZCk7CiAKLWludCBtZHA1X2N0bF9zZXRfY3Vyc29yKHN0cnVjdCBtZHA1X2N0bCAq Y3RsLCBib29sIGVuYWJsZSk7Ci0KLS8qIEBibGVuZF9jZmc6IHNlZSBMTSBibGVuZGVyIGNvbmZp ZyBkZWZpbml0aW9uIGJlbG93ICovCi1pbnQgbWRwNV9jdGxfYmxlbmQoc3RydWN0IG1kcDVfY3Rs ICpjdGwsIHUzMiBsbSwgdTMyIGJsZW5kX2NmZyk7Ci0KLS8qIEBmbHVzaF9tYXNrOiBzZWUgQ1RM IGZsdXNoIG1hc2tzIGRlZmluaXRpb25zIGJlbG93ICovCi1pbnQgbWRwNV9jdGxfY29tbWl0KHN0 cnVjdCBtZHA1X2N0bCAqY3RsLCB1MzIgZmx1c2hfbWFzayk7Ci11MzIgbWRwNV9jdGxfZ2V0X2Zs dXNoKHN0cnVjdCBtZHA1X2N0bCAqY3RsKTsKLQotdm9pZCBtZHA1X2N0bF9yZWxlYXNlKHN0cnVj dCBtZHA1X2N0bCAqY3RsKTsKK2ludCBtZHA1X2N0bF9zZXRfY3Vyc29yKHN0cnVjdCBtZHA1X2N0 bCAqY3RsLCBpbnQgY3Vyc29yX2lkLCBib29sIGVuYWJsZSk7CiAKIC8qCiAgKiBibGVuZF9jZmcg KExNIGJsZW5kZXIgY29uZmlnKToKQEAgLTczLDUxICs2NiwzMiBAQCBzdGF0aWMgaW5saW5lIHUz MiBtZHBfY3RsX2JsZW5kX21hc2soZW51bSBtZHA1X3BpcGUgcGlwZSwKIH0KIAogLyoKLSAqIGZs dXNoX21hc2sgKENUTCBmbHVzaCBtYXNrcyk6CisgKiBtZHA1X2N0bF9ibGVuZCgpIC0gQmxlbmQg bXVsdGlwbGUgbGF5ZXJzIG9uIGEgTGF5ZXIgTWl4ZXIgKExNKQorICoKKyAqIEBibGVuZF9jZmc6 IHNlZSBMTSBibGVuZGVyIGNvbmZpZyBkZWZpbml0aW9uIGJlbG93CiAgKgotICogVGhlIGZvbGxv d2luZyBmdW5jdGlvbnMgYWxsb3cgZWFjaCBEUk0gZW50aXR5IHRvIGdldCBhbmQgc3RvcmUKLSAq IHRoZWlyIG93biBmbHVzaCBtYXNrLgotICogT25jZSBzdG9yZWQsIHRoZXNlIG1hc2tzIHdpbGwg dGhlbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGVhY2ggRFJNJ3MKLSAqIGludGVyZmFjZSBhbmQgdXNl ZCBieSB0aGUgY2FsbGVyIG9mIG1kcDVfY3RsX2NvbW1pdCgpIHRvIHNwZWNpZnkKLSAqIHdoaWNo IGJsb2NrKHMpIG5lZWQgdG8gYmUgZmx1c2hlZCB0aHJvdWdoIEBmbHVzaF9tYXNrIHBhcmFtZXRl ci4KKyAqIE5vdGU6CisgKiBDVEwgcmVnaXN0ZXJzIG5lZWQgdG8gYmUgZmx1c2hlZCBhZnRlciBj YWxsaW5nIHRoaXMgZnVuY3Rpb24KKyAqIChjYWxsIG1kcDVfY3RsX2NvbW1pdCgpIHdpdGggbWRw X2N0bF9mbHVzaF9tYXNrX2N0bCgpIG1hc2spCiAgKi8KK2ludCBtZHA1X2N0bF9ibGVuZChzdHJ1 Y3QgbWRwNV9jdGwgKmN0bCwgdTMyIGxtLCB1MzIgYmxlbmRfY2ZnKTsKIAotI2RlZmluZSBNRFA1 X0NUTF9GTFVTSF9DVVJTT1JfRFVNTVkJMHg4MDAwMDAwMAorLyoqCisgKiBtZHBfY3RsX2ZsdXNo X21hc2suLi4oKSAtIFJlZ2lzdGVyIEZMVVNIIG1hc2tzCisgKgorICogVGhlc2UgbWFza3MgYXJl IHVzZWQgdG8gc3BlY2lmeSB3aGljaCBibG9jayhzKSBuZWVkIHRvIGJlIGZsdXNoZWQKKyAqIHRo cm91Z2ggQGZsdXNoX21hc2sgcGFyYW1ldGVyIGluIG1kcDVfY3RsX2NvbW1pdCguLiwgZmx1c2hf bWFzaykuCisgKi8KK3UzMiBtZHBfY3RsX2ZsdXNoX21hc2tfbG0oaW50IGxtKTsKK3UzMiBtZHBf Y3RsX2ZsdXNoX21hc2tfcGlwZShlbnVtIG1kcDVfcGlwZSBwaXBlKTsKK3UzMiBtZHBfY3RsX2Zs dXNoX21hc2tfY3Vyc29yKGludCBjdXJzb3JfaWQpOwordTMyIG1kcF9jdGxfZmx1c2hfbWFza19l bmNvZGVyKHN0cnVjdCBtZHA1X2ludGVyZmFjZSAqaW50Zik7CiAKLXN0YXRpYyBpbmxpbmUgdTMy IG1kcF9jdGxfZmx1c2hfbWFza19jdXJzb3IoaW50IGN1cnNvcl9pZCkKLXsKLQkvKiBUT0RPOiB1 c2UgaWQgb25jZSBtdWx0aXBsZSBjdXJzb3Igc3VwcG9ydCBpcyBwcmVzZW50ICovCi0JKHZvaWQp Y3Vyc29yX2lkOworLyogQGZsdXNoX21hc2s6IHNlZSBDVEwgZmx1c2ggbWFza3MgZGVmaW5pdGlv bnMgYmVsb3cgKi8KK2ludCBtZHA1X2N0bF9jb21taXQoc3RydWN0IG1kcDVfY3RsICpjdGwsIHUz MiBmbHVzaF9tYXNrKTsKIAotCXJldHVybiBNRFA1X0NUTF9GTFVTSF9DVVJTT1JfRFVNTVk7Ci19 Cit2b2lkIG1kcDVfY3RsX3JlbGVhc2Uoc3RydWN0IG1kcDVfY3RsICpjdGwpOwogCi1zdGF0aWMg aW5saW5lIHUzMiBtZHBfY3RsX2ZsdXNoX21hc2tfbG0oaW50IGxtKQotewotCXN3aXRjaCAobG0p IHsKLQljYXNlIDA6ICByZXR1cm4gTURQNV9DVExfRkxVU0hfTE0wOwotCWNhc2UgMTogIHJldHVy biBNRFA1X0NUTF9GTFVTSF9MTTE7Ci0JY2FzZSAyOiAgcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX0xN MjsKLQljYXNlIDU6ICByZXR1cm4gTURQNV9DVExfRkxVU0hfTE01OwotCWRlZmF1bHQ6IHJldHVy biAwOwotCX0KLX0KIAotc3RhdGljIGlubGluZSB1MzIgbWRwX2N0bF9mbHVzaF9tYXNrX3BpcGUo ZW51bSBtZHA1X3BpcGUgcGlwZSkKLXsKLQlzd2l0Y2ggKHBpcGUpIHsKLQljYXNlIFNTUFBfVklH MDogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1ZJRzA7Ci0JY2FzZSBTU1BQX1ZJRzE6IHJldHVybiBN RFA1X0NUTF9GTFVTSF9WSUcxOwotCWNhc2UgU1NQUF9WSUcyOiByZXR1cm4gTURQNV9DVExfRkxV U0hfVklHMjsKLQljYXNlIFNTUFBfUkdCMDogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1JHQjA7Ci0J Y2FzZSBTU1BQX1JHQjE6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9SR0IxOwotCWNhc2UgU1NQUF9S R0IyOiByZXR1cm4gTURQNV9DVExfRkxVU0hfUkdCMjsKLQljYXNlIFNTUFBfRE1BMDogcmV0dXJu IE1EUDVfQ1RMX0ZMVVNIX0RNQTA7Ci0JY2FzZSBTU1BQX0RNQTE6IHJldHVybiBNRFA1X0NUTF9G TFVTSF9ETUExOwotCWNhc2UgU1NQUF9WSUczOiByZXR1cm4gTURQNV9DVExfRkxVU0hfVklHMzsK LQljYXNlIFNTUFBfUkdCMzogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1JHQjM7Ci0JZGVmYXVsdDog ICAgICAgIHJldHVybiAwOwotCX0KLX0KIAogI2VuZGlmIC8qIF9fTURQNV9DVExfSF9fICovCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfZW5jb2Rlci5jIGIv ZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2VuY29kZXIuYwppbmRleCBmM2I2ZmU4 Li5hMTdlYjljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVf ZW5jb2Rlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9lbmNvZGVy LmMKQEAgLTIxNywxMiArMjE3LDE1IEBAIHN0YXRpYyB2b2lkIG1kcDVfZW5jb2Rlcl9tb2RlX3Nl dChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAJbWRwNV93cml0ZShtZHA1X2ttcywgUkVH X01EUDVfSU5URl9GUkFNRV9MSU5FX0NPVU5UX0VOKGludGYpLCAweDMpOyAgLyogZnJhbWUrbGlu ZT8gKi8KIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm1kcDVfZW5jb2Rlci0+aW50Zl9sb2Nr LCBmbGFncyk7CisKKwltZHA1X2NydGNfc2V0X2ludGYoZW5jb2Rlci0+Y3J0YywgJm1kcDVfZW5j b2Rlci0+aW50Zik7CiB9CiAKIHN0YXRpYyB2b2lkIG1kcDVfZW5jb2Rlcl9kaXNhYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgbWRwNV9lbmNvZGVyICptZHA1X2Vu Y29kZXIgPSB0b19tZHA1X2VuY29kZXIoZW5jb2Rlcik7CiAJc3RydWN0IG1kcDVfa21zICptZHA1 X2ttcyA9IGdldF9rbXMoZW5jb2Rlcik7CisJc3RydWN0IG1kcDVfY3RsICpjdGwgPSBtZHA1X2Ny dGNfZ2V0X2N0bChlbmNvZGVyLT5jcnRjKTsKIAlpbnQgbG0gPSBtZHA1X2NydGNfZ2V0X2xtKGVu Y29kZXItPmNydGMpOwogCXN0cnVjdCBtZHA1X2ludGVyZmFjZSAqaW50ZiA9ICZtZHA1X2VuY29k ZXItPmludGY7CiAJaW50IGludGZuID0gbWRwNV9lbmNvZGVyLT5pbnRmLm51bTsKQEAgLTIzMSw5 ICsyMzQsMTIgQEAgc3RhdGljIHZvaWQgbWRwNV9lbmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKQogCWlmIChXQVJOX09OKCFtZHA1X2VuY29kZXItPmVuYWJsZWQpKQog CQlyZXR1cm47CiAKKwltZHA1X2N0bF9zZXRfZW5jb2Rlcl9zdGF0ZShjdGwsIGZhbHNlKTsKKwog CXNwaW5fbG9ja19pcnFzYXZlKCZtZHA1X2VuY29kZXItPmludGZfbG9jaywgZmxhZ3MpOwogCW1k cDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X0lOVEZfVElNSU5HX0VOR0lORV9FTihpbnRmbiks IDApOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm1kcDVfZW5jb2Rlci0+aW50Zl9sb2NrLCBm bGFncyk7CisJbWRwNV9jdGxfY29tbWl0KGN0bCwgbWRwX2N0bF9mbHVzaF9tYXNrX2VuY29kZXIo aW50ZikpOwogCiAJLyoKIAkgKiBXYWl0IGZvciBhIHZzeW5jIHNvIHdlIGtub3cgdGhlIEVOQUJM RT0wIGxhdGNoZWQgYmVmb3JlCkBAIC0yNTQsMTggKzI2MCwyMSBAQCBzdGF0aWMgdm9pZCBtZHA1 X2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3Qg bWRwNV9lbmNvZGVyICptZHA1X2VuY29kZXIgPSB0b19tZHA1X2VuY29kZXIoZW5jb2Rlcik7CiAJ c3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMoZW5jb2Rlcik7CisJc3RydWN0IG1k cDVfY3RsICpjdGwgPSBtZHA1X2NydGNfZ2V0X2N0bChlbmNvZGVyLT5jcnRjKTsKKwlzdHJ1Y3Qg bWRwNV9pbnRlcmZhY2UgKmludGYgPSAmbWRwNV9lbmNvZGVyLT5pbnRmOwogCWludCBpbnRmbiA9 IG1kcDVfZW5jb2Rlci0+aW50Zi5udW07CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAogCWlmIChX QVJOX09OKG1kcDVfZW5jb2Rlci0+ZW5hYmxlZCkpCiAJCXJldHVybjsKIAotCW1kcDVfY3J0Y19z ZXRfaW50ZihlbmNvZGVyLT5jcnRjLCAmbWRwNV9lbmNvZGVyLT5pbnRmKTsKLQogCWJzX3NldCht ZHA1X2VuY29kZXIsIDEpOwogCXNwaW5fbG9ja19pcnFzYXZlKCZtZHA1X2VuY29kZXItPmludGZf bG9jaywgZmxhZ3MpOwogCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X0lOVEZfVElNSU5H X0VOR0lORV9FTihpbnRmbiksIDEpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJm1kcDVfZW5j b2Rlci0+aW50Zl9sb2NrLCBmbGFncyk7CisJbWRwNV9jdGxfY29tbWl0KGN0bCwgbWRwX2N0bF9m bHVzaF9tYXNrX2VuY29kZXIoaW50ZikpOworCisJbWRwNV9jdGxfc2V0X2VuY29kZXJfc3RhdGUo Y3RsLCB0cnVlKTsKIAogCW1kcDVfZW5jb2Rlci0+ZW5hYmxlZCA9IHRydWU7CiB9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmggYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmgKaW5kZXggMWE2YWE0OS4uNjkwZWRmZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMuaApAQCAtMjMwLDYgKzIzMCw3IEBA IHN0cnVjdCBkcm1fcGxhbmUgKm1kcDVfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogdWludDMyX3QgbWRwNV9jcnRjX3ZibGFuayhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogCiBp bnQgbWRwNV9jcnRjX2dldF9sbShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOworc3RydWN0IG1kcDVf Y3RsICptZHA1X2NydGNfZ2V0X2N0bChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogdm9pZCBtZHA1 X2NydGNfY2FuY2VsX3BlbmRpbmdfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSk7CiB2b2lkIG1kcDVfY3J0Y19zZXRfaW50ZihzdHJ1Y3QgZHJtX2NydGMg KmNydGMsIHN0cnVjdCBtZHA1X2ludGVyZmFjZSAqaW50Zik7CiBzdHJ1Y3QgZHJtX2NydGMgKm1k cDVfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0tIApRdWFsY29tbSBJbm5vdmF0 aW9uIENlbnRlciwgSW5jLgoKVGhlIFF1YWxjb21tIElubm92YXRpb24gQ2VudGVyLCBJbmMuIGlz IGEgbWVtYmVyIG9mIHRoZSBDb2RlIEF1cm9yYSBGb3J1bSwgYSBMaW51eCBGb3VuZGF0aW9uIENv bGxhYm9yYXRpdmUgUHJvamVjdAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9k cmktZGV2ZWwK