From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephane Viau Subject: [PATCH 3/4] drm/msm/mdp5: Add START signal to kick off certain pipelines Date: Tue, 3 Mar 2015 13:36:14 -0500 Message-ID: <1425407775-7704-4-git-send-email-sviau@codeaurora.org> References: <1425407775-7704-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: <1425407775-7704-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 L21zbS9tZHAvbWRwNS9tZHA1X2NmZy5oCmluZGV4IGJlNTg3YjguLmJlMTQ5YjMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jZmcuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY2ZnLmgKQEAgLTQ2LDYgKzQ2LDExIEBAIHN0cnVj dCBtZHA1X2xtX2Jsb2NrIHsKIAl1aW50MzJfdCBuYl9zdGFnZXM7CQkvKiBudW1iZXIgb2Ygc3Rh Z2VzIHBlciBibGVuZGVyICovCiB9OwogCitzdHJ1Y3QgbWRwNV9jdGxfYmxvY2sgeworCU1EUDVf U1VCX0JMT0NLX0RFRklOSVRJT047CisJdWludDMyX3QgZmx1c2hfaHdfbWFzazsJCS8qIEZMVVNI IHJlZ2lzdGVyJ3MgaGFyZHdhcmUgbWFzayAqLworfTsKKwogc3RydWN0IG1kcDVfc21wX2Jsb2Nr IHsKIAlpbnQgbW1iX2NvdW50OwkJCS8qIG51bWJlciBvZiBTTVAgTU1CcyAqLwogCWludCBtbWJf c2l6ZTsJCQkvKiBNTUI6IHNpemUgaW4gYnl0ZXMgKi8KQEAgLTU3LDcgKzYyLDcgQEAgc3RydWN0 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 L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuYwppbmRleCAzZTg4YmI3Li5jOWZkNWY4IDEwMDY0 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 bmVlZCBub3Qgc2V0IGEgZGlzcGxheSBpbnRmIChlLmcuOiBXcml0ZWJhY2spICovCiAJaWYgKCFN RFA1X0lOVEZfSVNfVklSVFVBTF9ESVNQTEFZKGludGYtPnR5cGUpKQogCQlzZXRfZGlzcGxheV9p bnRmKG1kcDVfa21zLCBpbnRmKTsKQEAgLTE4MywxNCArMTg3LDkwIEBAIGludCBtZHA1X2N0bF9z ZXRfaW50ZihzdHJ1Y3QgbWRwNV9jdGwgKmN0bCwgc3RydWN0IG1kcDVfaW50ZXJmYWNlICppbnRm KQogCXJldHVybiAwOwogfQogCi1pbnQgbWRwNV9jdGxfc2V0X2N1cnNvcihzdHJ1Y3QgbWRwNV9j dGwgKmN0bCwgYm9vbCBlbmFibGUpCitzdGF0aWMgYm9vbCBzdGFydF9zaWduYWxfbmVlZGVkKHN0 cnVjdCBtZHA1X2N0bCAqY3RsKQoreworCXN0cnVjdCBvcF9tb2RlICpwaXBlbGluZSA9ICZjdGwt PnBpcGVsaW5lOworCisJaWYgKCFwaXBlbGluZS0+ZW5jb2Rlcl9lbmFibGVkIHx8IHBpcGVsaW5l LT5zdGFydF9tYXNrICE9IDApCisJCXJldHVybiBmYWxzZTsKKworCXN3aXRjaCAocGlwZWxpbmUt PmludGYudHlwZSkgeworCWNhc2UgSU5URl9XQjoKKwkJcmV0dXJuIHRydWU7CisJY2FzZSBJTlRG X0RTSToKKwkJcmV0dXJuIHBpcGVsaW5lLT5pbnRmLm1vZGUgPT0gTURQNV9JTlRGX0RTSV9NT0RF X0NPTU1BTkQ7CisJZGVmYXVsdDoKKwkJcmV0dXJuIGZhbHNlOworCX0KK30KKworLyoKKyAqIHNl bmRfc3RhcnRfc2lnbmFsKCkgLSBPdmVybGF5IFByb2Nlc3NvciBTdGFydCBTaWduYWwKKyAqCisg KiBGb3IgYSBnaXZlbiBjb250cm9sIG9wZXJhdGlvbiAoZGlzcGxheSBwaXBlbGluZSksIGEgU1RB UlQgc2lnbmFsIG5lZWRzIHRvIGJlCisgKiBleGVjdXRlZCBpbiBvcmRlciB0byBraWNrIG9mZiBv cGVyYXRpb24gYW5kIGFjdGl2YXRlIGFsbCBsYXllcnMuCisgKiBlLmcuOiBEU0kgY29tbWFuZCBt b2RlLCBXcml0ZWJhY2sKKyAqLworc3RhdGljIHZvaWQgc2VuZF9zdGFydF9zaWduYWwoc3RydWN0 IG1kcDVfY3RsICpjdGwpCit7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19p cnFzYXZlKCZjdGwtPmh3X2xvY2ssIGZsYWdzKTsKKwljdGxfd3JpdGUoY3RsLCBSRUdfTURQNV9D VExfU1RBUlQoY3RsLT5pZCksIDEpOworCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0bC0+aHdf bG9jaywgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZCByZWZpbGxfc3RhcnRfbWFzayhzdHJ1Y3Qg bWRwNV9jdGwgKmN0bCkKK3sKKwlzdHJ1Y3Qgb3BfbW9kZSAqcGlwZWxpbmUgPSAmY3RsLT5waXBl bGluZTsKKwlzdHJ1Y3QgbWRwNV9pbnRlcmZhY2UgKmludGYgPSAmY3RsLT5waXBlbGluZS5pbnRm OworCisJcGlwZWxpbmUtPnN0YXJ0X21hc2sgPSBtZHBfY3RsX2ZsdXNoX21hc2tfbG0oY3RsLT5s bSk7CisKKwkvKgorCSAqIFdyaXRlYmFjayBlbmNvZGVyIG5lZWRzIHRvIHByb2dyYW0gJiBmbHVz aAorCSAqIGFkZHJlc3MgcmVnaXN0ZXJzIGZvciBlYWNoIHBhZ2UgZmxpcC4uCisJICovCisJaWYg KGludGYtPnR5cGUgPT0gSU5URl9XQikKKwkJcGlwZWxpbmUtPnN0YXJ0X21hc2sgfD0gbWRwX2N0 bF9mbHVzaF9tYXNrX2VuY29kZXIoaW50Zik7Cit9CisKKy8qKgorICogbWRwNV9jdGxfc2V0X2Vu Y29kZXJfc3RhdGUoKSAtIHNldCB0aGUgZW5jb2RlciBzdGF0ZQorICoKKyAqIEBlbmFibGU6IHRy dWUsIHdoZW4gZW5jb2RlciBpcyByZWFkeSBmb3IgZGF0YSBzdHJlYW1pbmc7IGZhbHNlLCBvdGhl cndpc2UuCisgKgorICogTm90ZToKKyAqIFRoaXMgZW5jb2RlciBzdGF0ZSBpcyBuZWVkZWQgdG8g dHJpZ2dlciBTVEFSVCBzaWduYWwgKGRhdGEgcGF0aCBraWNrb2ZmKS4KKyAqLworaW50IG1kcDVf Y3RsX3NldF9lbmNvZGVyX3N0YXRlKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCBib29sIGVuYWJsZWQp Cit7CisJaWYgKFdBUk5fT04oIWN0bCkpCisJCXJldHVybiAtRUlOVkFMOworCisJY3RsLT5waXBl bGluZS5lbmNvZGVyX2VuYWJsZWQgPSBlbmFibGVkOworCURCRygiaW50Zl8lZDogJXMiLCBjdGwt PnBpcGVsaW5lLmludGYubnVtLCBlbmFibGVkID8gIm9uIiA6ICJvZmYiKTsKKworCWlmIChzdGFy dF9zaWduYWxfbmVlZGVkKGN0bCkpIHsKKwkJc2VuZF9zdGFydF9zaWduYWwoY3RsKTsKKwkJcmVm aWxsX3N0YXJ0X21hc2soY3RsKTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIE5vdGU6 CisgKiBDVEwgcmVnaXN0ZXJzIG5lZWQgdG8gYmUgZmx1c2hlZCBhZnRlciBjYWxsaW5nIHRoaXMg ZnVuY3Rpb24KKyAqIChjYWxsIG1kcDVfY3RsX2NvbW1pdCgpIHdpdGggbWRwX2N0bF9mbHVzaF9t YXNrX2N0bCgpIG1hc2spCisgKi8KK2ludCBtZHA1X2N0bF9zZXRfY3Vyc29yKHN0cnVjdCBtZHA1 X2N0bCAqY3RsLCBpbnQgY3Vyc29yX2lkLCBib29sIGVuYWJsZSkKIHsKIAlzdHJ1Y3QgbWRwNV9j dGxfbWFuYWdlciAqY3RsX21nciA9IGN0bC0+Y3RsbTsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwog CXUzMiBibGVuZF9jZmc7Ci0JaW50IGxtOworCWludCBsbSA9IGN0bC0+bG07CiAKLQlsbSA9IG1k cDVfY3J0Y19nZXRfbG0oY3RsLT5jcnRjKTsKIAlpZiAodW5saWtlbHkoV0FSTl9PTihsbSA8IDAp KSkgewogCQlkZXZfZXJyKGN0bF9tZ3ItPmRldi0+ZGV2LCAiQ1RMICVkIGNhbm5vdCBmaW5kIExN OiAlZCIsCiAJCQkJY3RsLT5pZCwgbG0pOwpAQCAtMjEwLDEyICsyOTAsMTIgQEAgaW50IG1kcDVf Y3RsX3NldF9jdXJzb3Ioc3RydWN0IG1kcDVfY3RsICpjdGwsIGJvb2wgZW5hYmxlKQogCiAJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY3RsLT5od19sb2NrLCBmbGFncyk7CiAKKwljdGwtPnBlbmRp bmdfY3RsX3RyaWdnZXIgPSBtZHBfY3RsX2ZsdXNoX21hc2tfY3Vyc29yKGN1cnNvcl9pZCk7CiAJ Y3RsLT5jdXJzb3Jfb24gPSBlbmFibGU7CiAKIAlyZXR1cm4gMDsKIH0KIAotCiBpbnQgbWRwNV9j dGxfYmxlbmQoc3RydWN0IG1kcDVfY3RsICpjdGwsIHUzMiBsbSwgdTMyIGJsZW5kX2NmZykKIHsK IAl1bnNpZ25lZCBsb25nIGZsYWdzOwpAQCAtMjI5LDM3ICszMDksMTMzIEBAIGludCBtZHA1X2N0 bF9ibGVuZChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCwgdTMyIGxtLCB1MzIgYmxlbmRfY2ZnKQogCWN0 bF93cml0ZShjdGwsIFJFR19NRFA1X0NUTF9MQVlFUl9SRUcoY3RsLT5pZCwgbG0pLCBibGVuZF9j ZmcpOwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0bC0+aHdfbG9jaywgZmxhZ3MpOwogCisJ Y3RsLT5wZW5kaW5nX2N0bF90cmlnZ2VyID0gbWRwX2N0bF9mbHVzaF9tYXNrX2xtKGxtKTsKKwog CXJldHVybiAwOwogfQogCit1MzIgbWRwX2N0bF9mbHVzaF9tYXNrX2VuY29kZXIoc3RydWN0IG1k cDVfaW50ZXJmYWNlICppbnRmKQoreworCS8qIHRoZXNlIGFyZSBkdW1teSBiaXRzIGZvciBub3cs IGJ1dCB3aWxsIGFwcGVhciBpbiBuZXh0IGNoaXBzZXRzOiAqLworI2RlZmluZSBNRFA1X0NUTF9G TFVTSF9USU1JTkdfMAkJMHg4MDAwMDAwMAorI2RlZmluZSBNRFA1X0NUTF9GTFVTSF9USU1JTkdf MQkJMHg0MDAwMDAwMAorI2RlZmluZSBNRFA1X0NUTF9GTFVTSF9USU1JTkdfMgkJMHgyMDAwMDAw MAorI2RlZmluZSBNRFA1X0NUTF9GTFVTSF9USU1JTkdfMwkJMHgxMDAwMDAwMAorI2RlZmluZSBN RFA1X0NUTF9GTFVTSF9XQgkJMHgwMDAxMDAwMAorCisJaWYgKGludGYtPnR5cGUgPT0gSU5URl9X QikKKwkJcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1dCOworCisJc3dpdGNoIChpbnRmLT5udW0pIHsK KwljYXNlIDA6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9USU1JTkdfMDsKKwljYXNlIDE6IHJldHVy biBNRFA1X0NUTF9GTFVTSF9USU1JTkdfMTsKKwljYXNlIDI6IHJldHVybiBNRFA1X0NUTF9GTFVT SF9USU1JTkdfMjsKKwljYXNlIDM6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9USU1JTkdfMzsKKwlk ZWZhdWx0OiByZXR1cm4gMDsKKwl9Cit9CisKK3UzMiBtZHBfY3RsX2ZsdXNoX21hc2tfY3Vyc29y KGludCBjdXJzb3JfaWQpCit7CisJLyogdGhlc2UgYXJlIGR1bW15IGJpdHMgZm9yIG5vdywgYnV0 IHdpbGwgYXBwZWFyIGluIG5leHQgY2hpcHNldHM6ICovCisjZGVmaW5lIE1EUDVfQ1RMX0ZMVVNI X0NVUlNPUl8wCQkweDAwNDAwMDAwCisjZGVmaW5lIE1EUDVfQ1RMX0ZMVVNIX0NVUlNPUl8xCQkw eDAwODAwMDAwCisKKwlzd2l0Y2ggKGN1cnNvcl9pZCkgeworCWNhc2UgMDogcmV0dXJuIE1EUDVf Q1RMX0ZMVVNIX0NVUlNPUl8wOworCWNhc2UgMTogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX0NVUlNP Ul8xOworCWRlZmF1bHQ6IHJldHVybiAwOworCX0KK30KKwordTMyIG1kcF9jdGxfZmx1c2hfbWFz a19waXBlKGVudW0gbWRwNV9waXBlIHBpcGUpCit7CisJc3dpdGNoIChwaXBlKSB7CisJY2FzZSBT U1BQX1ZJRzA6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9WSUcwOworCWNhc2UgU1NQUF9WSUcxOiBy ZXR1cm4gTURQNV9DVExfRkxVU0hfVklHMTsKKwljYXNlIFNTUFBfVklHMjogcmV0dXJuIE1EUDVf Q1RMX0ZMVVNIX1ZJRzI7CisJY2FzZSBTU1BQX1JHQjA6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9S R0IwOworCWNhc2UgU1NQUF9SR0IxOiByZXR1cm4gTURQNV9DVExfRkxVU0hfUkdCMTsKKwljYXNl IFNTUFBfUkdCMjogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1JHQjI7CisJY2FzZSBTU1BQX0RNQTA6 IHJldHVybiBNRFA1X0NUTF9GTFVTSF9ETUEwOworCWNhc2UgU1NQUF9ETUExOiByZXR1cm4gTURQ NV9DVExfRkxVU0hfRE1BMTsKKwljYXNlIFNTUFBfVklHMzogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNI X1ZJRzM7CisJY2FzZSBTU1BQX1JHQjM6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9SR0IzOworCWRl ZmF1bHQ6ICAgICAgICByZXR1cm4gMDsKKwl9Cit9CisKK3UzMiBtZHBfY3RsX2ZsdXNoX21hc2tf bG0oaW50IGxtKQoreworCXN3aXRjaCAobG0pIHsKKwljYXNlIDA6ICByZXR1cm4gTURQNV9DVExf RkxVU0hfTE0wOworCWNhc2UgMTogIHJldHVybiBNRFA1X0NUTF9GTFVTSF9MTTE7CisJY2FzZSAy OiAgcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX0xNMjsKKwljYXNlIDU6ICByZXR1cm4gTURQNV9DVExf RkxVU0hfTE01OworCWRlZmF1bHQ6IHJldHVybiAwOworCX0KK30KKworc3RhdGljIHUzMiBmaXhf c3dfZmx1c2goc3RydWN0IG1kcDVfY3RsICpjdGwsIHUzMiBmbHVzaF9tYXNrKQoreworCXN0cnVj dCBtZHA1X2N0bF9tYW5hZ2VyICpjdGxfbWdyID0gY3RsLT5jdGxtOworCXUzMiBzd19tYXNrID0g MDsKKyNkZWZpbmUgQklUX05FRURTX1NXX0ZJWChiaXQpIFwKKwkoIShjdGxfbWdyLT5mbHVzaF9o d19tYXNrICYgYml0KSAmJiAoZmx1c2hfbWFzayAmIGJpdCkpCisKKwkvKiBmb3Igc29tZSB0YXJn ZXRzLCBjdXJzb3IgYml0IGlzIHRoZSBzYW1lIGFzIExNIGJpdCAqLworCWlmIChCSVRfTkVFRFNf U1dfRklYKE1EUDVfQ1RMX0ZMVVNIX0NVUlNPUl8wKSkKKwkJc3dfbWFzayB8PSBtZHBfY3RsX2Zs dXNoX21hc2tfbG0oY3RsLT5sbSk7CisKKwlyZXR1cm4gc3dfbWFzazsKK30KKworLyoqCisgKiBt ZHA1X2N0bF9jb21taXQoKSAtIFJlZ2lzdGVyIEZsdXNoCisgKgorICogVGhlIGZsdXNoIHJlZ2lz dGVyIGlzIHVzZWQgdG8gaW5kaWNhdGUgc2V2ZXJhbCByZWdpc3RlcnMgYXJlIGFsbAorICogcHJv Z3JhbW1lZCwgYW5kIGFyZSBzYWZlIHRvIHVwZGF0ZSB0byB0aGUgYmFjayBjb3B5IG9mIHRoZSBk b3VibGUKKyAqIGJ1ZmZlcmVkIHJlZ2lzdGVycy4KKyAqCisgKiBTb21lIHJlZ2lzdGVycyBGTFVT SCBiaXRzIGFyZSBzaGFyZWQgd2hlbiB0aGUgaGFyZHdhcmUgZG9lcyBub3QgaGF2ZQorICogZGVk aWNhdGVkIGJpdHMgZm9yIHRoZW07IGhhbmRsaW5nIHRoZXNlIGlzIHRoZSBqb2Igb2YgZml4X3N3 X2ZsdXNoKCkuCisgKgorICogQ1RMIHJlZ2lzdGVycyBuZWVkIHRvIGJlIGZsdXNoZWQgaW4gc29t ZSBjaXJjdW1zdGFuY2VzOyBpZiB0aGF0IGlzIHRoZQorICogY2FzZSwgc29tZSB0cmlnZ2VyIGJp dHMgd2lsbCBiZSBwcmVzZW50IGluIGJvdGggZmx1c2ggbWFzayBhbmQKKyAqIGN0bC0+cGVuZGlu Z19jdGxfdHJpZ2dlci4KKyAqLwogaW50IG1kcDVfY3RsX2NvbW1pdChzdHJ1Y3QgbWRwNV9jdGwg KmN0bCwgdTMyIGZsdXNoX21hc2spCiB7CiAJc3RydWN0IG1kcDVfY3RsX21hbmFnZXIgKmN0bF9t Z3IgPSBjdGwtPmN0bG07CisJc3RydWN0IG9wX21vZGUgKnBpcGVsaW5lID0gJmN0bC0+cGlwZWxp bmU7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCWlmIChmbHVzaF9tYXNrICYgTURQNV9DVExf RkxVU0hfQ1VSU09SX0RVTU1ZKSB7Ci0JCWludCBsbSA9IG1kcDVfY3J0Y19nZXRfbG0oY3RsLT5j cnRjKTsKKwlwaXBlbGluZS0+c3RhcnRfbWFzayAmPSB+Zmx1c2hfbWFzazsKIAotCQlpZiAodW5s aWtlbHkoV0FSTl9PTihsbSA8IDApKSkgewotCQkJZGV2X2VycihjdGxfbWdyLT5kZXYtPmRldiwg IkNUTCAlZCBjYW5ub3QgZmluZCBMTTogJWQiLAotCQkJCQljdGwtPmlkLCBsbSk7Ci0JCQlyZXR1 cm4gLUVJTlZBTDsKLQkJfQorCVZFUkIoImZsdXNoX21hc2s9JXgsIHN0YXJ0X21hc2s9JXgsIHRy aWdnZXI9JXgiLCBmbHVzaF9tYXNrLAorCQkJcGlwZWxpbmUtPnN0YXJ0X21hc2ssIGN0bC0+cGVu ZGluZ19jdGxfdHJpZ2dlcik7CiAKLQkJLyogZm9yIGN1cnJlbnQgdGFyZ2V0cywgY3Vyc29yIGJp dCBpcyB0aGUgc2FtZSBhcyBMTSBiaXQgKi8KLQkJZmx1c2hfbWFzayB8PSBtZHBfY3RsX2ZsdXNo X21hc2tfbG0obG0pOworCWlmIChjdGwtPnBlbmRpbmdfY3RsX3RyaWdnZXIgJiBmbHVzaF9tYXNr KSB7CisJCWZsdXNoX21hc2sgfD0gTURQNV9DVExfRkxVU0hfQ1RMOworCQljdGwtPnBlbmRpbmdf Y3RsX3RyaWdnZXIgPSAwOwogCX0KIAotCXNwaW5fbG9ja19pcnFzYXZlKCZjdGwtPmh3X2xvY2ss IGZsYWdzKTsKLQljdGxfd3JpdGUoY3RsLCBSRUdfTURQNV9DVExfRkxVU0goY3RsLT5pZCksIGZs dXNoX21hc2spOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0bC0+aHdfbG9jaywgZmxhZ3Mp OworCWZsdXNoX21hc2sgfD0gZml4X3N3X2ZsdXNoKGN0bCwgZmx1c2hfbWFzayk7CiAKLQlyZXR1 cm4gMDsKLX0KKwlmbHVzaF9tYXNrICY9IGN0bF9tZ3ItPmZsdXNoX2h3X21hc2s7CiAKLXUzMiBt ZHA1X2N0bF9nZXRfZmx1c2goc3RydWN0IG1kcDVfY3RsICpjdGwpCi17Ci0JcmV0dXJuIGN0bC0+ Zmx1c2hfbWFzazsKKwlpZiAoZmx1c2hfbWFzaykgeworCQlzcGluX2xvY2tfaXJxc2F2ZSgmY3Rs LT5od19sb2NrLCBmbGFncyk7CisJCWN0bF93cml0ZShjdGwsIFJFR19NRFA1X0NUTF9GTFVTSChj dGwtPmlkKSwgZmx1c2hfbWFzayk7CisJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmN0bC0+aHdf bG9jaywgZmxhZ3MpOworCX0KKworCWlmIChzdGFydF9zaWduYWxfbmVlZGVkKGN0bCkpIHsKKwkJ c2VuZF9zdGFydF9zaWduYWwoY3RsKTsKKwkJcmVmaWxsX3N0YXJ0X21hc2soY3RsKTsKKwl9CisK KwlyZXR1cm4gMDsKIH0KIAogdm9pZCBtZHA1X2N0bF9yZWxlYXNlKHN0cnVjdCBtZHA1X2N0bCAq Y3RsKQpAQCAtMjgwLDYgKzQ1NiwxMSBAQCB2b2lkIG1kcDVfY3RsX3JlbGVhc2Uoc3RydWN0IG1k cDVfY3RsICpjdGwpCiAJREJHKCJDVEwgJWQgcmVsZWFzZWQiLCBjdGwtPmlkKTsKIH0KIAoraW50 IG1kcDVfY3RsX2dldF9jdGxfaWQoc3RydWN0IG1kcDVfY3RsICpjdGwpCit7CisJcmV0dXJuIFdB Uk5fT04oIWN0bCkgPyAtRUlOVkFMIDogY3RsLT5pZDsKK30KKwogLyoKICAqIG1kcDVfY3RsX3Jl cXVlc3QoKSAtIENUTCBkeW5hbWljIGFsbG9jYXRpb24KICAqCkBAIC0zMDcsOCArNDg4LDEwIEBA IHN0cnVjdCBtZHA1X2N0bCAqbWRwNV9jdGxtX3JlcXVlc3Qoc3RydWN0IG1kcDVfY3RsX21hbmFn ZXIgKmN0bF9tZ3IsCiAKIAljdGwgPSAmY3RsX21nci0+Y3Rsc1tjXTsKIAorCWN0bC0+bG0gPSBt ZHA1X2NydGNfZ2V0X2xtKGNydGMpOwogCWN0bC0+Y3J0YyA9IGNydGM7CiAJY3RsLT5idXN5ID0g dHJ1ZTsKKwljdGwtPnBlbmRpbmdfY3RsX3RyaWdnZXIgPSAwOwogCURCRygiQ1RMICVkIGFsbG9j YXRlZCIsIGN0bC0+aWQpOwogCiB1bmxvY2s6CkBAIC0zMzksNyArNTIyLDcgQEAgc3RydWN0IG1k cDVfY3RsX21hbmFnZXIgKm1kcDVfY3RsbV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CXZvaWQgX19pb21lbSAqbW1pb19iYXNlLCBjb25zdCBzdHJ1Y3QgbWRwNV9jZmdfaHcgKmh3X2Nm ZykKIHsKIAlzdHJ1Y3QgbWRwNV9jdGxfbWFuYWdlciAqY3RsX21ncjsKLQljb25zdCBzdHJ1Y3Qg bWRwNV9zdWJfYmxvY2sgKmN0bF9jZmcgPSAmaHdfY2ZnLT5jdGw7CisJY29uc3Qgc3RydWN0IG1k cDVfY3RsX2Jsb2NrICpjdGxfY2ZnID0gJmh3X2NmZy0+Y3RsOwogCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CiAJaW50IGMsIHJldDsKIApAQCAtMzYxLDYgKzU0NCw3IEBAIHN0cnVjdCBtZHA1X2N0bF9t YW5hZ2VyICptZHA1X2N0bG1faW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWN0bF9tZ3It PmRldiA9IGRldjsKIAljdGxfbWdyLT5ubG0gPSBod19jZmctPmxtLmNvdW50OwogCWN0bF9tZ3It Pm5jdGwgPSBjdGxfY2ZnLT5jb3VudDsKKwljdGxfbWdyLT5mbHVzaF9od19tYXNrID0gY3RsX2Nm Zy0+Zmx1c2hfaHdfbWFzazsKIAlzcGluX2xvY2tfaW5pdCgmY3RsX21nci0+cG9vbF9sb2NrKTsK IAogCS8qIGluaXRpYWxpemUgZWFjaCBDVEwgb2YgdGhlIHBvb2w6ICovCkBAIC0zNzYsNyArNTYw LDYgQEAgc3RydWN0IG1kcDVfY3RsX21hbmFnZXIgKm1kcDVfY3RsbV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCWN0bC0+Y3RsbSA9IGN0bF9tZ3I7CiAJCWN0bC0+aWQgPSBjOwogCQlj dGwtPnJlZ19vZmZzZXQgPSBjdGxfY2ZnLT5iYXNlW2NdOwotCQljdGwtPmZsdXNoX21hc2sgPSBN RFA1X0NUTF9GTFVTSF9DVEw7CiAJCWN0bC0+YnVzeSA9IGZhbHNlOwogCQlzcGluX2xvY2tfaW5p dCgmY3RsLT5od19sb2NrKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21k cC9tZHA1L21kcDVfY3RsLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3Rs LmgKaW5kZXggMjcxZDVhYy4uN2E2MjAwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9tZHAvbWRwNS9tZHA1X2N0bC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUv bWRwNV9jdGwuaApAQCAtMzMsMjAgKzMzLDEzIEBAIHZvaWQgbWRwNV9jdGxtX2Rlc3Ryb3koc3Ry dWN0IG1kcDVfY3RsX21hbmFnZXIgKmN0bG0pOwogICogd2hpY2ggaXMgdGhlbiB1c2VkIHRvIGNh bGwgdGhlIG90aGVyIG1kcDVfY3RsXyooY3RsLCAuLi4pIGZ1bmN0aW9ucy4KICAqLwogc3RydWN0 IG1kcDVfY3RsICptZHA1X2N0bG1fcmVxdWVzdChzdHJ1Y3QgbWRwNV9jdGxfbWFuYWdlciAqY3Rs bSwgc3RydWN0IGRybV9jcnRjICpjcnRjKTsKK2ludCBtZHA1X2N0bF9nZXRfY3RsX2lkKHN0cnVj dCBtZHA1X2N0bCAqY3RsKTsKIAogc3RydWN0IG1kcDVfaW50ZXJmYWNlOwogaW50IG1kcDVfY3Rs X3NldF9pbnRmKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCBzdHJ1Y3QgbWRwNV9pbnRlcmZhY2UgKmlu dGYpOworaW50IG1kcDVfY3RsX3NldF9lbmNvZGVyX3N0YXRlKHN0cnVjdCBtZHA1X2N0bCAqY3Rs LCBib29sIGVuYWJsZWQpOwogCi1pbnQgbWRwNV9jdGxfc2V0X2N1cnNvcihzdHJ1Y3QgbWRwNV9j dGwgKmN0bCwgYm9vbCBlbmFibGUpOwotCi0vKiBAYmxlbmRfY2ZnOiBzZWUgTE0gYmxlbmRlciBj b25maWcgZGVmaW5pdGlvbiBiZWxvdyAqLwotaW50IG1kcDVfY3RsX2JsZW5kKHN0cnVjdCBtZHA1 X2N0bCAqY3RsLCB1MzIgbG0sIHUzMiBibGVuZF9jZmcpOwotCi0vKiBAZmx1c2hfbWFzazogc2Vl IENUTCBmbHVzaCBtYXNrcyBkZWZpbml0aW9ucyBiZWxvdyAqLwotaW50IG1kcDVfY3RsX2NvbW1p dChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCwgdTMyIGZsdXNoX21hc2spOwotdTMyIG1kcDVfY3RsX2dl dF9mbHVzaChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCk7Ci0KLXZvaWQgbWRwNV9jdGxfcmVsZWFzZShz dHJ1Y3QgbWRwNV9jdGwgKmN0bCk7CitpbnQgbWRwNV9jdGxfc2V0X2N1cnNvcihzdHJ1Y3QgbWRw NV9jdGwgKmN0bCwgaW50IGN1cnNvcl9pZCwgYm9vbCBlbmFibGUpOwogCiAvKgogICogYmxlbmRf Y2ZnIChMTSBibGVuZGVyIGNvbmZpZyk6CkBAIC03Myw1MSArNjYsMzIgQEAgc3RhdGljIGlubGlu ZSB1MzIgbWRwX2N0bF9ibGVuZF9tYXNrKGVudW0gbWRwNV9waXBlIHBpcGUsCiB9CiAKIC8qCi0g KiBmbHVzaF9tYXNrIChDVEwgZmx1c2ggbWFza3MpOgorICogbWRwNV9jdGxfYmxlbmQoKSAtIEJs ZW5kIG11bHRpcGxlIGxheWVycyBvbiBhIExheWVyIE1peGVyIChMTSkKKyAqCisgKiBAYmxlbmRf Y2ZnOiBzZWUgTE0gYmxlbmRlciBjb25maWcgZGVmaW5pdGlvbiBiZWxvdwogICoKLSAqIFRoZSBm b2xsb3dpbmcgZnVuY3Rpb25zIGFsbG93IGVhY2ggRFJNIGVudGl0eSB0byBnZXQgYW5kIHN0b3Jl Ci0gKiB0aGVpciBvd24gZmx1c2ggbWFzay4KLSAqIE9uY2Ugc3RvcmVkLCB0aGVzZSBtYXNrcyB3 aWxsIHRoZW4gYmUgYWNjZXNzZWQgdGhyb3VnaCBlYWNoIERSTSdzCi0gKiBpbnRlcmZhY2UgYW5k IHVzZWQgYnkgdGhlIGNhbGxlciBvZiBtZHA1X2N0bF9jb21taXQoKSB0byBzcGVjaWZ5Ci0gKiB3 aGljaCBibG9jayhzKSBuZWVkIHRvIGJlIGZsdXNoZWQgdGhyb3VnaCBAZmx1c2hfbWFzayBwYXJh bWV0ZXIuCisgKiBOb3RlOgorICogQ1RMIHJlZ2lzdGVycyBuZWVkIHRvIGJlIGZsdXNoZWQgYWZ0 ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uCisgKiAoY2FsbCBtZHA1X2N0bF9jb21taXQoKSB3aXRo IG1kcF9jdGxfZmx1c2hfbWFza19jdGwoKSBtYXNrKQogICovCitpbnQgbWRwNV9jdGxfYmxlbmQo c3RydWN0IG1kcDVfY3RsICpjdGwsIHUzMiBsbSwgdTMyIGJsZW5kX2NmZyk7CiAKLSNkZWZpbmUg TURQNV9DVExfRkxVU0hfQ1VSU09SX0RVTU1ZCTB4ODAwMDAwMDAKKy8qKgorICogbWRwX2N0bF9m bHVzaF9tYXNrLi4uKCkgLSBSZWdpc3RlciBGTFVTSCBtYXNrcworICoKKyAqIFRoZXNlIG1hc2tz IGFyZSB1c2VkIHRvIHNwZWNpZnkgd2hpY2ggYmxvY2socykgbmVlZCB0byBiZSBmbHVzaGVkCisg KiB0aHJvdWdoIEBmbHVzaF9tYXNrIHBhcmFtZXRlciBpbiBtZHA1X2N0bF9jb21taXQoLi4sIGZs dXNoX21hc2spLgorICovCit1MzIgbWRwX2N0bF9mbHVzaF9tYXNrX2xtKGludCBsbSk7Cit1MzIg bWRwX2N0bF9mbHVzaF9tYXNrX3BpcGUoZW51bSBtZHA1X3BpcGUgcGlwZSk7Cit1MzIgbWRwX2N0 bF9mbHVzaF9tYXNrX2N1cnNvcihpbnQgY3Vyc29yX2lkKTsKK3UzMiBtZHBfY3RsX2ZsdXNoX21h c2tfZW5jb2RlcihzdHJ1Y3QgbWRwNV9pbnRlcmZhY2UgKmludGYpOwogCi1zdGF0aWMgaW5saW5l IHUzMiBtZHBfY3RsX2ZsdXNoX21hc2tfY3Vyc29yKGludCBjdXJzb3JfaWQpCi17Ci0JLyogVE9E TzogdXNlIGlkIG9uY2UgbXVsdGlwbGUgY3Vyc29yIHN1cHBvcnQgaXMgcHJlc2VudCAqLwotCSh2 b2lkKWN1cnNvcl9pZDsKKy8qIEBmbHVzaF9tYXNrOiBzZWUgQ1RMIGZsdXNoIG1hc2tzIGRlZmlu aXRpb25zIGJlbG93ICovCitpbnQgbWRwNV9jdGxfY29tbWl0KHN0cnVjdCBtZHA1X2N0bCAqY3Rs LCB1MzIgZmx1c2hfbWFzayk7CiAKLQlyZXR1cm4gTURQNV9DVExfRkxVU0hfQ1VSU09SX0RVTU1Z OwotfQordm9pZCBtZHA1X2N0bF9yZWxlYXNlKHN0cnVjdCBtZHA1X2N0bCAqY3RsKTsKIAotc3Rh dGljIGlubGluZSB1MzIgbWRwX2N0bF9mbHVzaF9tYXNrX2xtKGludCBsbSkKLXsKLQlzd2l0Y2gg KGxtKSB7Ci0JY2FzZSAwOiAgcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX0xNMDsKLQljYXNlIDE6ICBy ZXR1cm4gTURQNV9DVExfRkxVU0hfTE0xOwotCWNhc2UgMjogIHJldHVybiBNRFA1X0NUTF9GTFVT SF9MTTI7Ci0JY2FzZSA1OiAgcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX0xNNTsKLQlkZWZhdWx0OiBy ZXR1cm4gMDsKLQl9Ci19CiAKLXN0YXRpYyBpbmxpbmUgdTMyIG1kcF9jdGxfZmx1c2hfbWFza19w aXBlKGVudW0gbWRwNV9waXBlIHBpcGUpCi17Ci0Jc3dpdGNoIChwaXBlKSB7Ci0JY2FzZSBTU1BQ X1ZJRzA6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9WSUcwOwotCWNhc2UgU1NQUF9WSUcxOiByZXR1 cm4gTURQNV9DVExfRkxVU0hfVklHMTsKLQljYXNlIFNTUFBfVklHMjogcmV0dXJuIE1EUDVfQ1RM X0ZMVVNIX1ZJRzI7Ci0JY2FzZSBTU1BQX1JHQjA6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9SR0Iw OwotCWNhc2UgU1NQUF9SR0IxOiByZXR1cm4gTURQNV9DVExfRkxVU0hfUkdCMTsKLQljYXNlIFNT UFBfUkdCMjogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1JHQjI7Ci0JY2FzZSBTU1BQX0RNQTA6IHJl dHVybiBNRFA1X0NUTF9GTFVTSF9ETUEwOwotCWNhc2UgU1NQUF9ETUExOiByZXR1cm4gTURQNV9D VExfRkxVU0hfRE1BMTsKLQljYXNlIFNTUFBfVklHMzogcmV0dXJuIE1EUDVfQ1RMX0ZMVVNIX1ZJ RzM7Ci0JY2FzZSBTU1BQX1JHQjM6IHJldHVybiBNRFA1X0NUTF9GTFVTSF9SR0IzOwotCWRlZmF1 bHQ6ICAgICAgICByZXR1cm4gMDsKLQl9Ci19CiAKICNlbmRpZiAvKiBfX01EUDVfQ1RMX0hfXyAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2VuY29kZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9lbmNvZGVyLmMKaW5kZXggZjNi NmZlOC4uYTE3ZWI5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9t ZHA1X2VuY29kZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfZW5j b2Rlci5jCkBAIC0yMTcsMTIgKzIxNywxNSBAQCBzdGF0aWMgdm9pZCBtZHA1X2VuY29kZXJfbW9k ZV9zZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAogCW1kcDVfd3JpdGUobWRwNV9rbXMs IFJFR19NRFA1X0lOVEZfRlJBTUVfTElORV9DT1VOVF9FTihpbnRmKSwgMHgzKTsgIC8qIGZyYW1l K2xpbmU/ICovCiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtZHA1X2VuY29kZXItPmludGZf bG9jaywgZmxhZ3MpOworCisJbWRwNV9jcnRjX3NldF9pbnRmKGVuY29kZXItPmNydGMsICZtZHA1 X2VuY29kZXItPmludGYpOwogfQogCiBzdGF0aWMgdm9pZCBtZHA1X2VuY29kZXJfZGlzYWJsZShz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0IG1kcDVfZW5jb2RlciAqbWRw NV9lbmNvZGVyID0gdG9fbWRwNV9lbmNvZGVyKGVuY29kZXIpOwogCXN0cnVjdCBtZHA1X2ttcyAq bWRwNV9rbXMgPSBnZXRfa21zKGVuY29kZXIpOworCXN0cnVjdCBtZHA1X2N0bCAqY3RsID0gbWRw NV9jcnRjX2dldF9jdGwoZW5jb2Rlci0+Y3J0Yyk7CiAJaW50IGxtID0gbWRwNV9jcnRjX2dldF9s bShlbmNvZGVyLT5jcnRjKTsKIAlzdHJ1Y3QgbWRwNV9pbnRlcmZhY2UgKmludGYgPSAmbWRwNV9l bmNvZGVyLT5pbnRmOwogCWludCBpbnRmbiA9IG1kcDVfZW5jb2Rlci0+aW50Zi5udW07CkBAIC0y MzEsOSArMjM0LDEyIEBAIHN0YXRpYyB2b2lkIG1kcDVfZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlcikKIAlpZiAoV0FSTl9PTighbWRwNV9lbmNvZGVyLT5lbmFibGVk KSkKIAkJcmV0dXJuOwogCisJbWRwNV9jdGxfc2V0X2VuY29kZXJfc3RhdGUoY3RsLCBmYWxzZSk7 CisKIAlzcGluX2xvY2tfaXJxc2F2ZSgmbWRwNV9lbmNvZGVyLT5pbnRmX2xvY2ssIGZsYWdzKTsK IAltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9JTlRGX1RJTUlOR19FTkdJTkVfRU4oaW50 Zm4pLCAwKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtZHA1X2VuY29kZXItPmludGZfbG9j aywgZmxhZ3MpOworCW1kcDVfY3RsX2NvbW1pdChjdGwsIG1kcF9jdGxfZmx1c2hfbWFza19lbmNv ZGVyKGludGYpKTsKIAogCS8qCiAJICogV2FpdCBmb3IgYSB2c3luYyBzbyB3ZSBrbm93IHRoZSBF TkFCTEU9MCBsYXRjaGVkIGJlZm9yZQpAQCAtMjU0LDE4ICsyNjAsMjEgQEAgc3RhdGljIHZvaWQg bWRwNV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJc3Ry dWN0IG1kcDVfZW5jb2RlciAqbWRwNV9lbmNvZGVyID0gdG9fbWRwNV9lbmNvZGVyKGVuY29kZXIp OwogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKGVuY29kZXIpOworCXN0cnVj dCBtZHA1X2N0bCAqY3RsID0gbWRwNV9jcnRjX2dldF9jdGwoZW5jb2Rlci0+Y3J0Yyk7CisJc3Ry dWN0IG1kcDVfaW50ZXJmYWNlICppbnRmID0gJm1kcDVfZW5jb2Rlci0+aW50ZjsKIAlpbnQgaW50 Zm4gPSBtZHA1X2VuY29kZXItPmludGYubnVtOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKIAlp ZiAoV0FSTl9PTihtZHA1X2VuY29kZXItPmVuYWJsZWQpKQogCQlyZXR1cm47CiAKLQltZHA1X2Ny dGNfc2V0X2ludGYoZW5jb2Rlci0+Y3J0YywgJm1kcDVfZW5jb2Rlci0+aW50Zik7Ci0KIAlic19z ZXQobWRwNV9lbmNvZGVyLCAxKTsKIAlzcGluX2xvY2tfaXJxc2F2ZSgmbWRwNV9lbmNvZGVyLT5p bnRmX2xvY2ssIGZsYWdzKTsKIAltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9JTlRGX1RJ TUlOR19FTkdJTkVfRU4oaW50Zm4pLCAxKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtZHA1 X2VuY29kZXItPmludGZfbG9jaywgZmxhZ3MpOworCW1kcDVfY3RsX2NvbW1pdChjdGwsIG1kcF9j dGxfZmx1c2hfbWFza19lbmNvZGVyKGludGYpKTsKKworCW1kcDVfY3RsX3NldF9lbmNvZGVyX3N0 YXRlKGN0bCwgdHJ1ZSk7CiAKIAltZHA1X2VuY29kZXItPmVuYWJsZWQgPSB0cnVlOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5oCmluZGV4IDFhNmFhNDkuLjY5MGVkZmQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmgKQEAgLTIzMCw2ICsyMzAs NyBAQCBzdHJ1Y3QgZHJtX3BsYW5lICptZHA1X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKIHVpbnQzMl90IG1kcDVfY3J0Y192Ymxhbmsoc3RydWN0IGRybV9jcnRjICpjcnRjKTsK IAogaW50IG1kcDVfY3J0Y19nZXRfbG0oc3RydWN0IGRybV9jcnRjICpjcnRjKTsKK3N0cnVjdCBt ZHA1X2N0bCAqbWRwNV9jcnRjX2dldF9jdGwoc3RydWN0IGRybV9jcnRjICpjcnRjKTsKIHZvaWQg bWRwNV9jcnRjX2NhbmNlbF9wZW5kaW5nX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpOwogdm9pZCBtZHA1X2NydGNfc2V0X2ludGYoc3RydWN0IGRybV9j cnRjICpjcnRjLCBzdHJ1Y3QgbWRwNV9pbnRlcmZhY2UgKmludGYpOwogc3RydWN0IGRybV9jcnRj ICptZHA1X2NydGNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAotLSAKUXVhbGNvbW0gSW5u b3ZhdGlvbiBDZW50ZXIsIEluYy4KClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5j LiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZSBBdXJvcmEgRm9ydW0sIGEgTGludXggRm91bmRhdGlv biBDb2xsYWJvcmF0aXZlIFByb2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==