From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jilai Wang Subject: [PATCH 3/3] drm/msm/mdp5: Add plane blending operation support for MDP5 Date: Fri, 19 Jun 2015 11:36:49 -0400 Message-ID: <1434728209-24724-4-git-send-email-jilaiw@codeaurora.org> References: <1434728209-24724-1-git-send-email-jilaiw@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1434728209-24724-1-git-send-email-jilaiw@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 VGhpcyBjaGFuZ2UgaXMgdG8gYWRkIHByb3BlcnRpZXMgYWxwaGEvenBvcy9wcmVtdWx0aXBsaWVk IHRvIG1kcDUgcGxhbmUKZm9yIGFscGhhIGJsZW5kaW5nIG9wZXJhdGlvbiB0byBnZW5lcmF0ZSB0 aGUgYmxlbmRlZCBvdXRwdXQuCgpTaWduZWQtb2ZmLWJ5OiBKaWxhaSBXYW5nIDxqaWxhaXdAY29k ZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NydGMu YyAgfCAxMTAgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v bXNtL21kcC9tZHA1L21kcDVfY3RsLmMgICB8ICA2NiArKysrKysrKysrKysrKysrLS0KIGRyaXZl cnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuaCAgIHwgIDMyICsrLS0tLS0tLQogZHJp dmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5oICAgfCAgMTYgKystLS0KIGRyaXZl cnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9wbGFuZS5jIHwgMTA3ICsrKysrKysrKysrKysr KysrKysrKysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCAgICAgICAgICAg ICB8ICAxMCArKysKIDYgZmlsZXMgY2hhbmdlZCwgMjU2IGluc2VydGlvbnMoKyksIDg1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9j cnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3J0Yy5jCmluZGV4IGRl YTNkMmUuLmU2ZTUzYjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUv bWRwNV9jcnRjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2NydGMu YwpAQCAtMTYwLDcgKzE2MCw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2ZsaXAoc3RydWN0IGRy bV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAKIAlpZiAobWRwNV9jcnRjLT5j dGwgJiYgIWNydGMtPnN0YXRlLT5lbmFibGUpIHsKIAkJLyogc2V0IFNUQUdFX1VOVVNFRCBmb3Ig YWxsIGxheWVycyAqLwotCQltZHA1X2N0bF9ibGVuZChtZHA1X2NydGMtPmN0bCwgbWRwNV9jcnRj LT5sbSwgMHgwMDAwMDAwMCk7CisJCW1kcDVfY3RsX2JsZW5kKG1kcDVfY3J0Yy0+Y3RsLCBtZHA1 X2NydGMtPmxtLCBOVUxMLCAwLCAwKTsKIAkJbWRwNV9jdGxfcmVsZWFzZShtZHA1X2NydGMtPmN0 bCk7CiAJCW1kcDVfY3J0Yy0+Y3RsID0gTlVMTDsKIAl9CkBAIC0xOTYsMTMgKzE5Niw5IEBAIHN0 YXRpYyBib29sIG1kcDVfY3J0Y19tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIC8q CiAgKiBibGVuZF9zZXR1cCgpIC0gYmxlbmQgYWxsIHRoZSBwbGFuZXMgb2YgYSBDUlRDCiAgKgot ICogV2hlbiBib3JkZXIgaXMgZW5hYmxlZCwgdGhlIGJvcmRlciBjb2xvciB3aWxsIEFMV0FZUyBi ZSB0aGUgYmFzZSBsYXllci4KLSAqIFRoZXJlZm9yZSwgdGhlIGZpcnN0IHBsYW5lIChwcml2YXRl IFJHQiBwaXBlKSB3aWxsIHN0YXJ0IGF0IFNUQUdFMC4KLSAqIElmIGRpc2FibGVkLCB0aGUgZmly c3QgcGxhbmUgc3RhcnRzIGF0IFNUQUdFX0JBU0UuCi0gKgotICogTm90ZToKLSAqIEJvcmRlciBp cyBub3QgZW5hYmxlZCBoZXJlIGJlY2F1c2UgdGhlIHByaXZhdGUgcGxhbmUgaXMgZXhhY3RseQot ICogdGhlIENSVEMgcmVzb2x1dGlvbi4KKyAqIElmIG5vIGJhc2UgbGF5ZXIgaXMgYXZhaWxhYmxl LCBib3JkZXIgd2lsbCBiZSBlbmFibGVkIGFzIHRoZSBiYXNlIGxheWVyLgorICogT3RoZXJ3aXNl IGFsbCBsYXllcnMgd2lsbCBiZSBibGVuZGVkIGJhc2VkIG9uIHRoZWlyIHN0YWdlIGNhbGN1bGF0 ZWQKKyAqIGluIG1kcDVfY3J0Y19hdG9taWNfY2hlY2suCiAgKi8KIHN0YXRpYyB2b2lkIGJsZW5k X3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKQEAgLTIxMCw5ICsyMDYsMTQgQEAgc3Rh dGljIHZvaWQgYmxlbmRfc2V0dXAoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXN0cnVjdCBtZHA1 X2ttcyAqbWRwNV9rbXMgPSBnZXRfa21zKGNydGMpOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l OwogCWNvbnN0IHN0cnVjdCBtZHA1X2NmZ19odyAqaHdfY2ZnOwotCXVpbnQzMl90IGxtID0gbWRw NV9jcnRjLT5sbSwgYmxlbmRfY2ZnID0gMDsKKwlzdHJ1Y3QgbWRwNV9wbGFuZV9zdGF0ZSAqcHN0 YXRlLCAqcHN0YXRlc1tTVEFHRV9NQVggKyAxXSA9IHtOVUxMfTsKKwljb25zdCBzdHJ1Y3QgbWRw X2Zvcm1hdCAqZm9ybWF0OworCXVpbnQzMl90IGxtID0gbWRwNV9jcnRjLT5sbTsKKwl1aW50MzJf dCBibGVuZF9vcCwgZmdfYWxwaGEsIGJnX2FscGhhLCBjdGxfYmxlbmRfZmxhZ3MgPSAwOwogCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Ci0jZGVmaW5lIGJsZW5kZXIoc3RhZ2UpCSgoc3RhZ2UpIC0gU1RB R0VfQkFTRSkKKwl1aW50OF90IHN0YWdlW1NUQUdFX01BWCArIDFdOworCWludCBpLCBwbGFuZV9j bnQgPSAwOworI2RlZmluZSBibGVuZGVyKHN0YWdlKQkoKHN0YWdlKSAtIFNUQUdFMCkKIAogCWh3 X2NmZyA9IG1kcDVfY2ZnX2dldF9od19jb25maWcobWRwNV9rbXMtPmNmZyk7CiAKQEAgLTIyMiwz MyArMjIzLDczIEBAIHN0YXRpYyB2b2lkIGJsZW5kX3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKIAlpZiAoIW1kcDVfY3J0Yy0+Y3RsKQogCQlnb3RvIG91dDsKIAorCS8qIENvbGxlY3QgYWxs IHBsYW5lIGluZm9ybWF0aW9uICovCiAJZHJtX2F0b21pY19jcnRjX2Zvcl9lYWNoX3BsYW5lKHBs YW5lLCBjcnRjKSB7Ci0JCWVudW0gbWRwX21peGVyX3N0YWdlX2lkIHN0YWdlID0KLQkJCXRvX21k cDVfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKS0+c3RhZ2U7CisJCXBzdGF0ZSA9IHRvX21kcDVf cGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKKwkJcHN0YXRlc1twc3RhdGUtPnN0YWdlXSA9IHBz dGF0ZTsKKwkJc3RhZ2VbcHN0YXRlLT5zdGFnZV0gPSBtZHA1X3BsYW5lX3BpcGUocGxhbmUpOwor CQlwbGFuZV9jbnQrKzsKKwl9CiAKLQkJLyoKLQkJICogTm90ZTogVGhpcyBjYW5ub3QgaGFwcGVu IHdpdGggY3VycmVudCBpbXBsZW1lbnRhdGlvbiBidXQKLQkJICogd2UgbmVlZCB0byBjaGVjayB0 aGlzIGNvbmRpdGlvbiBvbmNlIHogcHJvcGVydHkgaXMgYWRkZWQKLQkJICovCi0JCUJVR19PTihz dGFnZSA+IGh3X2NmZy0+bG0ubmJfc3RhZ2VzKTsKKwkvKgorCSogSWYgdGhlcmUgaXMgbm8gYmFz ZSBsYXllciwgZW5hYmxlIGJvcmRlciBjb2xvci4KKwkqIEFsdGhvdWdoIGl0J3Mgbm90IHBvc3Ni aWxlIGluIGN1cnJlbnQgYmxlbmQgbG9naWMsCisJKiBwdXQgaXQgaGVyZSBhcyBhIHJlbWluZGVy LgorCSovCisJaWYgKCFwc3RhdGVzW1NUQUdFX0JBU0VdICYmIHBsYW5lX2NudCkgeworCQljdGxf YmxlbmRfZmxhZ3MgfD0gTURQNV9DVExfQkxFTkRfT1BfRkxBR19CT1JERVJfT1VUOworCQlEQkco IkJvcmRlciBDb2xvciBpcyBlbmFibGVkIik7CisJfQogCi0JCS8qIExNICovCi0JCW1kcDVfd3Jp dGUobWRwNV9rbXMsCi0JCQkJUkVHX01EUDVfTE1fQkxFTkRfT1BfTU9ERShsbSwgYmxlbmRlcihz dGFnZSkpLAotCQkJCU1EUDVfTE1fQkxFTkRfT1BfTU9ERV9GR19BTFBIQShGR19DT05TVCkgfAot CQkJCU1EUDVfTE1fQkxFTkRfT1BfTU9ERV9CR19BTFBIQShCR19DT05TVCkpOworCS8qIFRoZSBy ZXNldCBmb3IgYmxlbmRpbmcgKi8KKwlmb3IgKGkgPSBTVEFHRTA7IGkgPD0gU1RBR0VfTUFYOyBp KyspIHsKKwkJaWYgKCFwc3RhdGVzW2ldKQorCQkJY29udGludWU7CisKKwkJZm9ybWF0ID0gdG9f bWRwX2Zvcm1hdCgKKwkJCW1zbV9mcmFtZWJ1ZmZlcl9mb3JtYXQocHN0YXRlc1tpXS0+YmFzZS5m YikpOworCQlwbGFuZSA9IHBzdGF0ZXNbaV0tPmJhc2UucGxhbmU7CisJCWJsZW5kX29wID0gTURQ NV9MTV9CTEVORF9PUF9NT0RFX0ZHX0FMUEhBKEZHX0NPTlNUKSB8CisJCQlNRFA1X0xNX0JMRU5E X09QX01PREVfQkdfQUxQSEEoQkdfQ09OU1QpOworCQlmZ19hbHBoYSA9IHBzdGF0ZXNbaV0tPmFs cGhhOworCQliZ19hbHBoYSA9IDB4RkYgLSBwc3RhdGVzW2ldLT5hbHBoYTsKKwkJREJHKCJTdGFn ZSAlZCBmZ19hbHBoYSAleCBiZ19hbHBoYSAleCIsIGksIGZnX2FscGhhLCBiZ19hbHBoYSk7CisK KwkJaWYgKGZvcm1hdC0+YWxwaGFfZW5hYmxlICYmIHBzdGF0ZXNbaV0tPnByZW11bHRpcGxpZWQp IHsKKwkJCWJsZW5kX29wID0gTURQNV9MTV9CTEVORF9PUF9NT0RFX0ZHX0FMUEhBKEZHX0NPTlNU KSB8CisJCQkJTURQNV9MTV9CTEVORF9PUF9NT0RFX0JHX0FMUEhBKEZHX1BJWEVMKTsKKwkJCWlm IChmZ19hbHBoYSAhPSAweGZmKSB7CisJCQkJYmdfYWxwaGEgPSBmZ19hbHBoYTsKKwkJCQlibGVu ZF9vcCB8PQorCQkJCQlNRFA1X0xNX0JMRU5EX09QX01PREVfQkdfTU9EX0FMUEhBIHwKKwkJCQkJ TURQNV9MTV9CTEVORF9PUF9NT0RFX0JHX0lOVl9NT0RfQUxQSEE7CisJCQl9IGVsc2UgeworCQkJ CWJsZW5kX29wIHw9IE1EUDVfTE1fQkxFTkRfT1BfTU9ERV9CR19JTlZfQUxQSEE7CisJCQl9CisJ CX0gZWxzZSBpZiAoZm9ybWF0LT5hbHBoYV9lbmFibGUpIHsKKwkJCWJsZW5kX29wID0gTURQNV9M TV9CTEVORF9PUF9NT0RFX0ZHX0FMUEhBKEZHX1BJWEVMKSB8CisJCQkJTURQNV9MTV9CTEVORF9P UF9NT0RFX0JHX0FMUEhBKEZHX1BJWEVMKTsKKwkJCWlmIChmZ19hbHBoYSAhPSAweGZmKSB7CisJ CQkJYmdfYWxwaGEgPSBmZ19hbHBoYTsKKwkJCQlibGVuZF9vcCB8PQorCQkJCSAgICAgICBNRFA1 X0xNX0JMRU5EX09QX01PREVfRkdfTU9EX0FMUEhBIHwKKwkJCQkgICAgICAgTURQNV9MTV9CTEVO RF9PUF9NT0RFX0ZHX0lOVl9NT0RfQUxQSEEgfAorCQkJCSAgICAgICBNRFA1X0xNX0JMRU5EX09Q X01PREVfQkdfTU9EX0FMUEhBIHwKKwkJCQkgICAgICAgTURQNV9MTV9CTEVORF9PUF9NT0RFX0JH X0lOVl9NT0RfQUxQSEE7CisJCQl9IGVsc2UgeworCQkJCWJsZW5kX29wIHw9IE1EUDVfTE1fQkxF TkRfT1BfTU9ERV9CR19JTlZfQUxQSEE7CisJCQl9CisJCX0KKworCQltZHA1X3dyaXRlKG1kcDVf a21zLCBSRUdfTURQNV9MTV9CTEVORF9PUF9NT0RFKGxtLAorCQkJCWJsZW5kZXIoaSkpLCBibGVu ZF9vcCk7CiAJCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X0xNX0JMRU5EX0ZHX0FMUEhB KGxtLAotCQkJCWJsZW5kZXIoc3RhZ2UpKSwgMHhmZik7CisJCQkJYmxlbmRlcihpKSksIGZnX2Fs cGhhKTsKIAkJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfTE1fQkxFTkRfQkdfQUxQSEEo bG0sCi0JCQkJYmxlbmRlcihzdGFnZSkpLCAweDAwKTsKLQkJLyogQ1RMICovCi0JCWJsZW5kX2Nm ZyB8PSBtZHBfY3RsX2JsZW5kX21hc2sobWRwNV9wbGFuZV9waXBlKHBsYW5lKSwgc3RhZ2UpOwot CQlEQkcoIiVzOiBibGVuZGluZyBwaXBlICVzIG9uIHN0YWdlPSVkIiwgbWRwNV9jcnRjLT5uYW1l LAotCQkJCXBpcGUybmFtZShtZHA1X3BsYW5lX3BpcGUocGxhbmUpKSwgc3RhZ2UpOworCQkJCWJs ZW5kZXIoaSkpLCBiZ19hbHBoYSk7CiAJfQogCi0JREJHKCIlczogbG0lZDogYmxlbmQgY29uZmln ID0gMHglMDh4IiwgbWRwNV9jcnRjLT5uYW1lLCBsbSwgYmxlbmRfY2ZnKTsKLQltZHA1X2N0bF9i bGVuZChtZHA1X2NydGMtPmN0bCwgbG0sIGJsZW5kX2NmZyk7CisJbWRwNV9jdGxfYmxlbmQobWRw NV9jcnRjLT5jdGwsIGxtLCBzdGFnZSwgcGxhbmVfY250LCBjdGxfYmxlbmRfZmxhZ3MpOwogCiBv dXQ6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbWRwNV9jcnRjLT5sbV9sb2NrLCBmbGFncyk7 CkBAIC0zMzksNyArMzgwLDggQEAgc3RhdGljIGludCBtZHA1X2NydGNfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0gZ2V0X2tt cyhjcnRjKTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gY3J0Yy0+ZGV2OwotCXN0cnVjdCBwbGFuZV9zdGF0ZSBwc3RhdGVzW1NUQUdFMyArIDFd OworCXN0cnVjdCBwbGFuZV9zdGF0ZSBwc3RhdGVzW1NUQUdFX01BWCArIDFdOworCWNvbnN0IHN0 cnVjdCBtZHA1X2NmZ19odyAqaHdfY2ZnOwogCWludCBjbnQgPSAwLCBpOwogCiAJREJHKCIlczog Y2hlY2siLCBtZHA1X2NydGMtPm5hbWUpOwpAQCAtMzU0LDEwICszOTYsMTAgQEAgc3RhdGljIGlu dCBtZHA1X2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkvKiB2ZXJp ZnkgdGhhdCB0aGVyZSBhcmUgbm90IHRvbyBtYW55IHBsYW5lcyBhdHRhY2hlZCB0byBjcnRjCiAJ ICogYW5kIHRoYXQgd2UgZG9uJ3QgaGF2ZSBjb25mbGljdGluZyBtaXhlciBzdGFnZXM6CiAJICov CisJaHdfY2ZnID0gbWRwNV9jZmdfZ2V0X2h3X2NvbmZpZyhtZHA1X2ttcy0+Y2ZnKTsKIAlkcm1f YXRvbWljX2NydGNfc3RhdGVfZm9yX2VhY2hfcGxhbmUocGxhbmUsIHN0YXRlKSB7CiAJCXN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKLQotCQlpZiAoY250ID49IEFSUkFZX1NJWkUocHN0 YXRlcykpIHsKKwkJaWYgKGNudCA+PSAoaHdfY2ZnLT5sbS5uYl9zdGFnZXMpKSB7CiAJCQlkZXZf ZXJyKGRldi0+ZGV2LCAidG9vIG1hbnkgcGxhbmVzIVxuIik7CiAJCQlyZXR1cm4gLUVJTlZBTDsK IAkJfQpAQCAtMzY5LDEzICs0MTEsMTMgQEAgc3RhdGljIGludCBtZHA1X2NydGNfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJICovCiAJCWlmICghcHN0YXRlKQogCQkJcHN0 YXRlID0gcGxhbmUtPnN0YXRlOwotCiAJCXBzdGF0ZXNbY250XS5wbGFuZSA9IHBsYW5lOwogCQlw c3RhdGVzW2NudF0uc3RhdGUgPSB0b19tZHA1X3BsYW5lX3N0YXRlKHBzdGF0ZSk7CiAKIAkJY250 Kys7CiAJfQogCisJLyogYXNzaWduIGEgc3RhZ2UgYmFzZWQgb24gc29ydGVkIHpwb3MgcHJvcGVy dHkgKi8KIAlzb3J0KHBzdGF0ZXMsIGNudCwgc2l6ZW9mKHBzdGF0ZXNbMF0pLCBwc3RhdGVfY21w LCBOVUxMKTsKIAogCWZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykgewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2N0bC5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tZHAvbWRwNS9tZHA1X2N0bC5jCmluZGV4IGYyNTMwZjIuLjYyMjg0OWIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3RsLmMKQEAgLTI4NywzMCArMjg3LDg2IEBAIGludCBt ZHA1X2N0bF9zZXRfY3Vyc29yKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCBpbnQgY3Vyc29yX2lkLCBi b29sIGVuYWJsZSkKIAkJYmxlbmRfY2ZnICY9IH5NRFA1X0NUTF9MQVlFUl9SRUdfQ1VSU09SX09V VDsKIAogCWN0bF93cml0ZShjdGwsIFJFR19NRFA1X0NUTF9MQVlFUl9SRUcoY3RsLT5pZCwgbG0p LCBibGVuZF9jZmcpOworCWN0bC0+Y3Vyc29yX29uID0gZW5hYmxlOwogCiAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmY3RsLT5od19sb2NrLCBmbGFncyk7CiAKIAljdGwtPnBlbmRpbmdfY3RsX3Ry aWdnZXIgPSBtZHBfY3RsX2ZsdXNoX21hc2tfY3Vyc29yKGN1cnNvcl9pZCk7Ci0JY3RsLT5jdXJz b3Jfb24gPSBlbmFibGU7CiAKIAlyZXR1cm4gMDsKIH0KIAotaW50IG1kcDVfY3RsX2JsZW5kKHN0 cnVjdCBtZHA1X2N0bCAqY3RsLCB1MzIgbG0sIHUzMiBibGVuZF9jZmcpCitzdGF0aWMgdTMyIG1k cF9jdGxfYmxlbmRfbWFzayhlbnVtIG1kcDVfcGlwZSBwaXBlLAorCQllbnVtIG1kcF9taXhlcl9z dGFnZV9pZCBzdGFnZSkKK3sKKwlzd2l0Y2ggKHBpcGUpIHsKKwljYXNlIFNTUFBfVklHMDogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19WSUcwKHN0YWdlKTsKKwljYXNlIFNTUFBfVklHMTogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19WSUcxKHN0YWdlKTsKKwljYXNlIFNTUFBfVklHMjogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19WSUcyKHN0YWdlKTsKKwljYXNlIFNTUFBfUkdCMDogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19SR0IwKHN0YWdlKTsKKwljYXNlIFNTUFBfUkdCMTogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19SR0IxKHN0YWdlKTsKKwljYXNlIFNTUFBfUkdCMjogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19SR0IyKHN0YWdlKTsKKwljYXNlIFNTUFBfRE1BMDogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19ETUEwKHN0YWdlKTsKKwljYXNlIFNTUFBfRE1BMTogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19ETUExKHN0YWdlKTsKKwljYXNlIFNTUFBfVklHMzogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19WSUczKHN0YWdlKTsKKwljYXNlIFNTUFBfUkdCMzogcmV0 dXJuIE1EUDVfQ1RMX0xBWUVSX1JFR19SR0IzKHN0YWdlKTsKKwlkZWZhdWx0OglyZXR1cm4gMDsK Kwl9Cit9CisKK3N0YXRpYyB1MzIgbWRwX2N0bF9ibGVuZF9leHRfbWFzayhlbnVtIG1kcDVfcGlw ZSBwaXBlLAorCQllbnVtIG1kcF9taXhlcl9zdGFnZV9pZCBzdGFnZSkKK3sKKwlpZiAoc3RhZ2Ug PCBTVEFHRTYpCisJCXJldHVybiAwOworCisJc3dpdGNoIChwaXBlKSB7CisJY2FzZSBTU1BQX1ZJ RzA6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9FWFRfUkVHX1ZJRzBfQklUMzsKKwljYXNlIFNTUFBf VklHMTogcmV0dXJuIE1EUDVfQ1RMX0xBWUVSX0VYVF9SRUdfVklHMV9CSVQzOworCWNhc2UgU1NQ UF9WSUcyOiByZXR1cm4gTURQNV9DVExfTEFZRVJfRVhUX1JFR19WSUcyX0JJVDM7CisJY2FzZSBT U1BQX1JHQjA6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9FWFRfUkVHX1JHQjBfQklUMzsKKwljYXNl IFNTUFBfUkdCMTogcmV0dXJuIE1EUDVfQ1RMX0xBWUVSX0VYVF9SRUdfUkdCMV9CSVQzOworCWNh c2UgU1NQUF9SR0IyOiByZXR1cm4gTURQNV9DVExfTEFZRVJfRVhUX1JFR19SR0IyX0JJVDM7CisJ Y2FzZSBTU1BQX0RNQTA6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9FWFRfUkVHX0RNQTBfQklUMzsK KwljYXNlIFNTUFBfRE1BMTogcmV0dXJuIE1EUDVfQ1RMX0xBWUVSX0VYVF9SRUdfRE1BMV9CSVQz OworCWNhc2UgU1NQUF9WSUczOiByZXR1cm4gTURQNV9DVExfTEFZRVJfRVhUX1JFR19WSUczX0JJ VDM7CisJY2FzZSBTU1BQX1JHQjM6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9FWFRfUkVHX1JHQjNf QklUMzsKKwlkZWZhdWx0OglyZXR1cm4gMDsKKwl9Cit9CisKK2ludCBtZHA1X2N0bF9ibGVuZChz dHJ1Y3QgbWRwNV9jdGwgKmN0bCwgdTMyIGxtLCB1OCAqc3RhZ2UsIHUzMiBzdGFnZV9jbnQsCisJ dTMyIGN0bF9ibGVuZF9vcF9mbGFncykKIHsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOworCXUzMiBi bGVuZF9jZmcgPSAwLCBibGVuZF9leHRfY2ZnID0gMDsKKwlpbnQgaSwgc3RhcnRfc3RhZ2U7CisK KwlpZiAoY3RsX2JsZW5kX29wX2ZsYWdzICYgTURQNV9DVExfQkxFTkRfT1BfRkxBR19CT1JERVJf T1VUKSB7CisJCXN0YXJ0X3N0YWdlID0gU1RBR0UwOworCQlibGVuZF9jZmcgfD0gTURQNV9DVExf TEFZRVJfUkVHX0JPUkRFUl9DT0xPUjsKKwl9IGVsc2UgeworCQlzdGFydF9zdGFnZSA9IFNUQUdF X0JBU0U7CisJfQorCisJZm9yIChpID0gc3RhcnRfc3RhZ2U7IGkgPCBzdGFydF9zdGFnZSArIHN0 YWdlX2NudDsgaSsrKSB7CisJCWJsZW5kX2NmZyB8PSBtZHBfY3RsX2JsZW5kX21hc2soc3RhZ2Vb aV0sIGkpOworCQlibGVuZF9leHRfY2ZnIHw9IG1kcF9jdGxfYmxlbmRfZXh0X21hc2soc3RhZ2Vb aV0sIGkpOworCX0KIAorCXNwaW5fbG9ja19pcnFzYXZlKCZjdGwtPmh3X2xvY2ssIGZsYWdzKTsK IAlpZiAoY3RsLT5jdXJzb3Jfb24pCiAJCWJsZW5kX2NmZyB8PSAgTURQNV9DVExfTEFZRVJfUkVH X0NVUlNPUl9PVVQ7Ci0JZWxzZQotCQlibGVuZF9jZmcgJj0gfk1EUDVfQ1RMX0xBWUVSX1JFR19D VVJTT1JfT1VUOwogCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmN0bC0+aHdfbG9jaywgZmxhZ3MpOwog CWN0bF93cml0ZShjdGwsIFJFR19NRFA1X0NUTF9MQVlFUl9SRUcoY3RsLT5pZCwgbG0pLCBibGVu ZF9jZmcpOworCWN0bF93cml0ZShjdGwsIFJFR19NRFA1X0NUTF9MQVlFUl9FWFRfUkVHKGN0bC0+ aWQsIGxtKSwgYmxlbmRfZXh0X2NmZyk7CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY3RsLT5o d19sb2NrLCBmbGFncyk7CiAKIAljdGwtPnBlbmRpbmdfY3RsX3RyaWdnZXIgPSBtZHBfY3RsX2Zs dXNoX21hc2tfbG0obG0pOwogCisJREJHKCJsbSVkOiBibGVuZCBjb25maWcgPSAweCUwOHguIGV4 dF9jZmcgPSAweCUwOHgiLCBsbSwKKwkJYmxlbmRfY2ZnLCBibGVuZF9leHRfY2ZnKTsKKwogCXJl dHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21k cDVfY3RsLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3RsLmgKaW5kZXgg NDY3ODIyOC4uYWI1MjY3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X2N0bC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwu aApAQCAtNDIsMzkgKzQyLDE5IEBAIGludCBtZHA1X2N0bF9zZXRfZW5jb2Rlcl9zdGF0ZShzdHJ1 Y3QgbWRwNV9jdGwgKmN0bCwgYm9vbCBlbmFibGVkKTsKIGludCBtZHA1X2N0bF9zZXRfY3Vyc29y KHN0cnVjdCBtZHA1X2N0bCAqY3RsLCBpbnQgY3Vyc29yX2lkLCBib29sIGVuYWJsZSk7CiAKIC8q Ci0gKiBibGVuZF9jZmcgKExNIGJsZW5kZXIgY29uZmlnKToKLSAqCi0gKiBUaGUgZnVuY3Rpb24g YmVsb3cgYWxsb3dzIHRoZSBjYWxsZXIgb2YgbWRwNV9jdGxfYmxlbmQoKSB0byBzcGVjaWZ5IGhv dyBwaXBlcwotICogYXJlIGJlaW5nIGJsZW5kZWQgYWNjb3JkaW5nIHRvIHRoZWlyIHN0YWdlICh6 LW9yZGVyKSwgdGhyb3VnaCBAYmxlbmRfY2ZnIGFyZy4KLSAqLwotc3RhdGljIGlubGluZSB1MzIg bWRwX2N0bF9ibGVuZF9tYXNrKGVudW0gbWRwNV9waXBlIHBpcGUsCi0JCWVudW0gbWRwX21peGVy X3N0YWdlX2lkIHN0YWdlKQotewotCXN3aXRjaCAocGlwZSkgewotCWNhc2UgU1NQUF9WSUcwOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1ZJRzAoc3RhZ2UpOwotCWNhc2UgU1NQUF9WSUcxOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1ZJRzEoc3RhZ2UpOwotCWNhc2UgU1NQUF9WSUcyOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1ZJRzIoc3RhZ2UpOwotCWNhc2UgU1NQUF9SR0IwOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1JHQjAoc3RhZ2UpOwotCWNhc2UgU1NQUF9SR0IxOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1JHQjEoc3RhZ2UpOwotCWNhc2UgU1NQUF9SR0IyOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1JHQjIoc3RhZ2UpOwotCWNhc2UgU1NQUF9ETUEwOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX0RNQTAoc3RhZ2UpOwotCWNhc2UgU1NQUF9ETUExOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX0RNQTEoc3RhZ2UpOwotCWNhc2UgU1NQUF9WSUczOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1ZJRzMoc3RhZ2UpOwotCWNhc2UgU1NQUF9SR0IzOiBy ZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1JHQjMoc3RhZ2UpOwotCWRlZmF1bHQ6CXJldHVybiAw OwotCX0KLX0KLQotLyoKICAqIG1kcDVfY3RsX2JsZW5kKCkgLSBCbGVuZCBtdWx0aXBsZSBsYXll cnMgb24gYSBMYXllciBNaXhlciAoTE0pCiAgKgotICogQGJsZW5kX2NmZzogc2VlIExNIGJsZW5k ZXIgY29uZmlnIGRlZmluaXRpb24gYmVsb3cKKyAqIEBzdGFnZTogYXJyYXkgdG8gY29udGFpbiB0 aGUgcGlwZSBudW0gZm9yIGVhY2ggc3RhZ2UKKyAqIEBzdGFnZV9jbnQ6IHZhbGlkIHN0YWdlIG51 bWJlciBpbiBzdGFnZSBhcnJheQorICogQGN0bF9ibGVuZF9vcF9mbGFnczogYmxlbmRlciBvcGVy YXRpb24gbW9kZSBmbGFncwogICoKICAqIE5vdGU6CiAgKiBDVEwgcmVnaXN0ZXJzIG5lZWQgdG8g YmUgZmx1c2hlZCBhZnRlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb24KICAqIChjYWxsIG1kcDVfY3Rs X2NvbW1pdCgpIHdpdGggbWRwX2N0bF9mbHVzaF9tYXNrX2N0bCgpIG1hc2spCiAgKi8KLWludCBt ZHA1X2N0bF9ibGVuZChzdHJ1Y3QgbWRwNV9jdGwgKmN0bCwgdTMyIGxtLCB1MzIgYmxlbmRfY2Zn KTsKKyNkZWZpbmUgTURQNV9DVExfQkxFTkRfT1BfRkxBR19CT1JERVJfT1VUCUJJVCgwKQoraW50 IG1kcDVfY3RsX2JsZW5kKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCB1MzIgbG0sIHU4ICpzdGFnZSwg dTMyIHN0YWdlX2NudCwKKwl1MzIgY3RsX2JsZW5kX29wX2ZsYWdzKTsKIAogLyoqCiAgKiBtZHBf Y3RsX2ZsdXNoX21hc2suLi4oKSAtIFJlZ2lzdGVyIEZMVVNIIG1hc2tzCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmggYi9kcml2ZXJzL2dwdS9kcm0v bXNtL21kcC9tZHA1L21kcDVfa21zLmgKaW5kZXggZTBlYjI0NS4uMDZhZjQxNSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMuaApAQCAtNzAsMTggKzcwLDEyIEBAIHN0cnVj dCBtZHA1X2ttcyB7CiBzdHJ1Y3QgbWRwNV9wbGFuZV9zdGF0ZSB7CiAJc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSBiYXNlOwogCi0JLyogInZpcnR1YWwiIHpwb3MuLiB3ZSBjYWxjdWxhdGUgYWN0dWFs IG1peGVyLXN0YWdlIGF0IHJ1bnRpbWUKLQkgKiBieSBzb3J0aW5nIHRoZSBhdHRhY2hlZCBwbGFu ZXMgYnkgenBvcyBhbmQgdGhlbiBhc3NpZ25pbmcKLQkgKiBtaXhlciBzdGFnZSBsb3dlc3QgdG8g aGlnaGVzdC4gIFByaXZhdGUgcGxhbmVzIGdldCBkZWZhdWx0Ci0JICogenBvcyBvZiB6ZXJvLCBh bmQgcHVibGljIHBsYW5lcyBhIHVuaXF1ZSB2YWx1ZSB0aGF0IGlzCi0JICogZ3JlYXRlciB0aGFu IHplcm8uICBUaGlzIHdheSwgdGhpbmdzIHdvcmsgb3V0IGlmIGEgbmFpdmUKLQkgKiB1c2Vyc3Bh Y2UgYXNzaWducyBwbGFuZXMgdG8gYSBjcnRjIHdpdGhvdXQgc2V0dGluZyB6cG9zLgotCSAqLwot CWludCB6cG9zOworCS8qIGFsaWduZWQgd2l0aCBwcm9wZXJ0eSAqLworCXVpbnQ4X3QgcHJlbXVs dGlwbGllZDsKKwl1aW50OF90IHpwb3M7CisJdWludDhfdCBhbHBoYTsKIAotCS8qIHRoZSBhY3R1 YWwgbWl4ZXIgc3RhZ2UsIGNhbGN1bGF0ZWQgaW4gY3J0Yy0+YXRvbWljX2NoZWNrKCkKLQkgKiBO T1RFOiB0aGlzIHNob3VsZCBtb3ZlIHRvIG1kcDVfY3J0Y19zdGF0ZSwgd2hlbiB0aGF0IGV4aXN0 cwotCSAqLworCS8qIGFzc2lnbmVkIGJ5IGNydGMgYmxlbmRlciAqLwogCWVudW0gbWRwX21peGVy X3N0YWdlX2lkIHN0YWdlOwogCiAJLyogc29tZSBhZGRpdGlvbmFsIHRyYW5zYWN0aW9uYWwgc3Rh dHVzIHRvIGhlbHAgdXMga25vdyBpbiB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbWRwL21kcDUvbWRwNV9wbGFuZS5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9t ZHA1X3BsYW5lLmMKaW5kZXggNTdiOGY1Ni4uNjEwM2ZkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMKQEAgLTg2LDE0ICs4Niw5NyBAQCBzdGF0aWMgdm9pZCBt ZHA1X3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB2b2lkIG1kcDVfcGxh bmVfaW5zdGFsbF9wcm9wZXJ0aWVzKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlzdHJ1Y3Qg ZHJtX21vZGVfb2JqZWN0ICpvYmopCiB7Ci0JLy8gWFhYCisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHBsYW5lLT5kZXY7CisJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOworCXN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3A7CisKKyNkZWZpbmUgSU5T VEFMTF9QUk9QRVJUWShuYW1lLCBOQU1FLCBtaW4sIG1heCwgaW5pdF92YWwpIGRvIHsgXAorCQlw cm9wID0gZGV2X3ByaXYtPnBsYW5lX3Byb3BlcnR5W1BMQU5FX1BST1BfIyNOQU1FXTsgXAorCQlp ZiAoIXByb3ApIHsgXAorCQkJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UoZGV2LCAw LCAjbmFtZSwgXAorCQkJCW1pbiwgbWF4KTsgXAorCQkJaWYgKCFwcm9wKSB7IFwKKwkJCQlkZXZf d2FybihkZXYtPmRldiwgXAorCQkJCQkiQ3JlYXRlIHByb3BlcnR5ICVzIGZhaWxlZFxuIiwgXAor CQkJCQkjbmFtZSk7IFwKKwkJCQlyZXR1cm47IFwKKwkJCX0gXAorCQkJZGV2X3ByaXYtPnBsYW5l X3Byb3BlcnR5W1BMQU5FX1BST1BfIyNOQU1FXSA9IHByb3A7IFwKKwkJfSBcCisJCWRybV9vYmpl Y3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgaW5pdF92YWwpOyBcCisJfSB3 aGlsZSAoMCkKKworCUlOU1RBTExfUFJPUEVSVFkoenBvcywgWlBPUywgMSwgMjU1LCAxKTsKKwlJ TlNUQUxMX1BST1BFUlRZKGFscGhhLCBBTFBIQSwgMCwgMjU1LCAyNTUpOworCUlOU1RBTExfUFJP UEVSVFkocHJlbXVsdGlwbGllZCwgUFJFTVVMVElQTElFRCwgMCwgMSwgMCk7CisjdW5kZWYgSU5T VEFMTF9QUk9QRVJUWQogfQogCi1pbnQgbWRwNV9wbGFuZV9zZXRfcHJvcGVydHkoc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUsCitzdGF0aWMgaW50IG1kcDVfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0 eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUsIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQl1aW50NjRfdCB2YWwpCit7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CisJc3RydWN0IG1kcDVfcGxhbmVf c3RhdGUgKnBzdGF0ZTsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJaW50IHJldCA9IDA7CisKKwlwc3RhdGUgPSB0b19tZHA1X3BsYW5lX3N0 YXRlKHN0YXRlKTsKKworI2RlZmluZSBTRVRfUFJPUEVSVFkobmFtZSwgTkFNRSwgdHlwZSkgZG8g eyBcCisJCWlmIChkZXZfcHJpdi0+cGxhbmVfcHJvcGVydHlbUExBTkVfUFJPUF8jI05BTUVdID09 IHByb3BlcnR5KSB7IFwKKwkJCXBzdGF0ZS0+bmFtZSA9ICh0eXBlKXZhbDsgXAorCQkJREJHKCJT ZXQgcHJvcGVydHkgJXMgJWQiLCAjbmFtZSwgKHR5cGUpdmFsKTsgXAorCQkJZ290byBkb25lOyBc CisJCX0gXAorCX0gd2hpbGUgKDApCisKKwlTRVRfUFJPUEVSVFkoenBvcywgWlBPUywgdWludDhf dCk7CisJU0VUX1BST1BFUlRZKGFscGhhLCBBTFBIQSwgdWludDhfdCk7CisJU0VUX1BST1BFUlRZ KHByZW11bHRpcGxpZWQsIFBSRU1VTFRJUExJRUQsIHVpbnQ4X3QpOworCisJZGV2X2VycihkZXYt PmRldiwgIkludmFsaWQgcHJvcGVydHlcbiIpOworCXJldCA9IC1FSU5WQUw7Citkb25lOgorCXJl dHVybiByZXQ7CisjdW5kZWYgU0VUX1BST1BFUlRZCit9CisKK3N0YXRpYyBpbnQgbWRwNV9wbGFu ZV9zZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCXN0cnVjdCBkcm1fcHJv cGVydHkgKnByb3BlcnR5LCB1aW50NjRfdCB2YWwpCiB7Ci0JLy8gWFhYCi0JcmV0dXJuIC1FSU5W QUw7CisJcmV0dXJuIG1kcDVfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eShwbGFuZSwgcGxhbmUt PnN0YXRlLCBwcm9wZXJ0eSwKKwkJdmFsKTsKK30KKworc3RhdGljIGludCBtZHA1X3BsYW5lX2F0 b21pY19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCWNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLAorCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0 eSwgdWludDY0X3QgKnZhbCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRl djsKKwlzdHJ1Y3QgbWRwNV9wbGFuZV9zdGF0ZSAqcHN0YXRlOworCXN0cnVjdCBtc21fZHJtX3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcmV0ID0gMDsKKworCXBz dGF0ZSA9IHRvX21kcDVfcGxhbmVfc3RhdGUoc3RhdGUpOworCisjZGVmaW5lIEdFVF9QUk9QRVJU WShuYW1lLCBOQU1FLCB0eXBlKSBkbyB7IFwKKwkJaWYgKGRldl9wcml2LT5wbGFuZV9wcm9wZXJ0 eVtQTEFORV9QUk9QXyMjTkFNRV0gPT0gcHJvcGVydHkpIHsgXAorCQkJKnZhbCA9IHBzdGF0ZS0+ bmFtZTsgXAorCQkJREJHKCJHZXQgcHJvcGVydHkgJXMgJWxsZCIsICNuYW1lLCAqdmFsKTsgXAor CQkJZ290byBkb25lOyBcCisJCX0gXAorCX0gd2hpbGUgKDApCisKKwlHRVRfUFJPUEVSVFkoenBv cywgWlBPUywgdWludDhfdCk7CisJR0VUX1BST1BFUlRZKGFscGhhLCBBTFBIQSwgdWludDhfdCk7 CisJR0VUX1BST1BFUlRZKHByZW11bHRpcGxpZWQsIFBSRU1VTFRJUExJRUQsIHVpbnQ4X3QpOwor CisJZGV2X2VycihkZXYtPmRldiwgIkludmFsaWQgcHJvcGVydHlcbiIpOworCXJldCA9IC1FSU5W QUw7Citkb25lOgorCXJldHVybiByZXQ7CisjdW5kZWYgU0VUX1BST1BFUlRZCiB9CiAKIHN0YXRp YyB2b2lkIG1kcDVfcGxhbmVfcmVzZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCkBAIC0xMDYs MTEgKzE4OSwxNSBAQCBzdGF0aWMgdm9pZCBtZHA1X3BsYW5lX3Jlc2V0KHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lKQogCWtmcmVlKHRvX21kcDVfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKSk7CiAJ bWRwNV9zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCptZHA1X3N0YXRlKSwgR0ZQX0tFUk5FTCk7CiAK LQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkgewotCQltZHA1X3N0 YXRlLT56cG9zID0gMDsKLQl9IGVsc2UgewotCQltZHA1X3N0YXRlLT56cG9zID0gMSArIGRybV9w bGFuZV9pbmRleChwbGFuZSk7Ci0JfQorCS8qIGFzc2lnbiBkZWZhdWx0IGJsZW5kIHBhcmFtZXRl cnMgKi8KKwltZHA1X3N0YXRlLT5hbHBoYSA9IDI1NTsKKwltZHA1X3N0YXRlLT5wcmVtdWx0aXBs aWVkID0gMDsKKworCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQor CQltZHA1X3N0YXRlLT56cG9zID0gU1RBR0VfQkFTRTsKKwllbHNlCisJCW1kcDVfc3RhdGUtPnpw b3MgPSBTVEFHRTAgKyBkcm1fcGxhbmVfaW5kZXgocGxhbmUpOworCiAJbWRwNV9zdGF0ZS0+YmFz ZS5wbGFuZSA9IHBsYW5lOwogCiAJcGxhbmUtPnN0YXRlID0gJm1kcDVfc3RhdGUtPmJhc2U7CkBA IC0xNTAsNiArMjM3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgbWRw NV9wbGFuZV9mdW5jcyA9IHsKIAkJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9k aXNhYmxlX3BsYW5lLAogCQkuZGVzdHJveSA9IG1kcDVfcGxhbmVfZGVzdHJveSwKIAkJLnNldF9w cm9wZXJ0eSA9IG1kcDVfcGxhbmVfc2V0X3Byb3BlcnR5LAorCQkuYXRvbWljX3NldF9wcm9wZXJ0 eSA9IG1kcDVfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eSwKKwkJLmF0b21pY19nZXRfcHJvcGVy dHkgPSBtZHA1X3BsYW5lX2F0b21pY19nZXRfcHJvcGVydHksCiAJCS5yZXNldCA9IG1kcDVfcGxh bmVfcmVzZXQsCiAJCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gbWRwNV9wbGFuZV9kdXBsaWNh dGVfc3RhdGUsCiAJCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IG1kcDVfcGxhbmVfZGVzdHJveV9z dGF0ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKaW5kZXggZTdjNWVhMS4uYmQ2NGE4MiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tc21fZHJ2LmgKQEAgLTY0LDYgKzY0LDEzIEBAIHN0cnVjdCBtc21fZmlsZV9wcml2YXRlIHsK IAlpbnQgZHVtbXk7CiB9OwogCitlbnVtIG1zbV9tZHBfcGxhbmVfcHJvcGVydHkgeworCVBMQU5F X1BST1BfWlBPUywKKwlQTEFORV9QUk9QX0FMUEhBLAorCVBMQU5FX1BST1BfUFJFTVVMVElQTElF RCwKKwlQTEFORV9QUk9QX01BWF9OVU0KK307CisKIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewog CiAJc3RydWN0IG1zbV9rbXMgKmttczsKQEAgLTEyOCw2ICsxMzUsOSBAQCBzdHJ1Y3QgbXNtX2Ry bV9wcml2YXRlIHsKIAl1bnNpZ25lZCBpbnQgbnVtX2Nvbm5lY3RvcnM7CiAJc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcnNbOF07CiAKKwkvKiBQcm9wZXJ0aWVzICovCisJc3RydWN0IGRy bV9wcm9wZXJ0eSAqcGxhbmVfcHJvcGVydHlbUExBTkVfUFJPUF9NQVhfTlVNXTsKKwogCS8qIFZS QU0gY2FydmVvdXQsIHVzZWQgd2hlbiBubyBJT01NVTogKi8KIAlzdHJ1Y3QgewogCQl1bnNpZ25l ZCBsb25nIHNpemU7Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMg YSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29s bGFib3JhdGl2ZSBQcm9qZWN0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=