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(V2) Date: Thu, 25 Jun 2015 17:37:42 -0400 Message-ID: <1435268262-7654-1-git-send-email-jilaiw@codeaurora.org> References: <1434728209-24724-4-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-4-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 VGhpcyBjaGFuZ2UgaXMgdG8gYWRkIHByb3BlcnRpZXMgYWxwaGEvenBvcy9ibGVuZF9tb2RlIHRv IG1kcDUgcGxhbmUKZm9yIGFscGhhIGJsZW5kaW5nIG9wZXJhdGlvbiB0byBnZW5lcmF0ZSB0aGUg YmxlbmRlZCBvdXRwdXQuClYxOiBJbml0aWFsIGNoYW5nZQpWMjogQ2hhbmdlICJwcmVtdWx0aWxp ZWQiIHByb3BlcnR5IHRvIGVudW0gKFJvYidzIGNvbW1lbnQpCgpTaWduZWQtb2ZmLWJ5OiBKaWxh aSBXYW5nIDxqaWxhaXdAY29kZWF1cm9yYS5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9t ZHAvbWRwNS9tZHA1X2NydGMuYyAgfCAxMTAgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIGRy aXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuYyAgIHwgIDY2ICsrKysrKysrKysr KysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuaCAgIHwgIDMyICsr LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmggICB8ICAxNiAr Ky0tCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYyB8IDEyNCArKysr KysrKysrKysrKysrKysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5o ICAgICAgICAgICAgIHwgIDEwICsrKwogNiBmaWxlcyBjaGFuZ2VkLCAyNzMgaW5zZXJ0aW9ucygr KSwgODUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAv bWRwNS9tZHA1X2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jcnRj LmMKaW5kZXggZGVhM2QyZS4uZTZlNTNiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21z bS9tZHAvbWRwNS9tZHA1X2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1 L21kcDVfY3J0Yy5jCkBAIC0xNjAsNyArMTYwLDcgQEAgc3RhdGljIHZvaWQgY29tcGxldGVfZmxp cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIAogCWlmICht ZHA1X2NydGMtPmN0bCAmJiAhY3J0Yy0+c3RhdGUtPmVuYWJsZSkgewogCQkvKiBzZXQgU1RBR0Vf VU5VU0VEIGZvciBhbGwgbGF5ZXJzICovCi0JCW1kcDVfY3RsX2JsZW5kKG1kcDVfY3J0Yy0+Y3Rs LCBtZHA1X2NydGMtPmxtLCAweDAwMDAwMDAwKTsKKwkJbWRwNV9jdGxfYmxlbmQobWRwNV9jcnRj LT5jdGwsIG1kcDVfY3J0Yy0+bG0sIE5VTEwsIDAsIDApOwogCQltZHA1X2N0bF9yZWxlYXNlKG1k cDVfY3J0Yy0+Y3RsKTsKIAkJbWRwNV9jcnRjLT5jdGwgPSBOVUxMOwogCX0KQEAgLTE5NiwxMyAr MTk2LDkgQEAgc3RhdGljIGJvb2wgbWRwNV9jcnRjX21vZGVfZml4dXAoc3RydWN0IGRybV9jcnRj ICpjcnRjLAogLyoKICAqIGJsZW5kX3NldHVwKCkgLSBibGVuZCBhbGwgdGhlIHBsYW5lcyBvZiBh IENSVEMKICAqCi0gKiBXaGVuIGJvcmRlciBpcyBlbmFibGVkLCB0aGUgYm9yZGVyIGNvbG9yIHdp bGwgQUxXQVlTIGJlIHRoZSBiYXNlIGxheWVyLgotICogVGhlcmVmb3JlLCB0aGUgZmlyc3QgcGxh bmUgKHByaXZhdGUgUkdCIHBpcGUpIHdpbGwgc3RhcnQgYXQgU1RBR0UwLgotICogSWYgZGlzYWJs ZWQsIHRoZSBmaXJzdCBwbGFuZSBzdGFydHMgYXQgU1RBR0VfQkFTRS4KLSAqCi0gKiBOb3RlOgot ICogQm9yZGVyIGlzIG5vdCBlbmFibGVkIGhlcmUgYmVjYXVzZSB0aGUgcHJpdmF0ZSBwbGFuZSBp cyBleGFjdGx5Ci0gKiB0aGUgQ1JUQyByZXNvbHV0aW9uLgorICogSWYgbm8gYmFzZSBsYXllciBp cyBhdmFpbGFibGUsIGJvcmRlciB3aWxsIGJlIGVuYWJsZWQgYXMgdGhlIGJhc2UgbGF5ZXIuCisg KiBPdGhlcndpc2UgYWxsIGxheWVycyB3aWxsIGJlIGJsZW5kZWQgYmFzZWQgb24gdGhlaXIgc3Rh Z2UgY2FsY3VsYXRlZAorICogaW4gbWRwNV9jcnRjX2F0b21pY19jaGVjay4KICAqLwogc3RhdGlj IHZvaWQgYmxlbmRfc2V0dXAoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewpAQCAtMjEwLDkgKzIw NiwxNCBAQCBzdGF0aWMgdm9pZCBibGVuZF9zZXR1cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJ c3RydWN0IG1kcDVfa21zICptZHA1X2ttcyA9IGdldF9rbXMoY3J0Yyk7CiAJc3RydWN0IGRybV9w bGFuZSAqcGxhbmU7CiAJY29uc3Qgc3RydWN0IG1kcDVfY2ZnX2h3ICpod19jZmc7Ci0JdWludDMy X3QgbG0gPSBtZHA1X2NydGMtPmxtLCBibGVuZF9jZmcgPSAwOworCXN0cnVjdCBtZHA1X3BsYW5l X3N0YXRlICpwc3RhdGUsICpwc3RhdGVzW1NUQUdFX01BWCArIDFdID0ge05VTEx9OworCWNvbnN0 IHN0cnVjdCBtZHBfZm9ybWF0ICpmb3JtYXQ7CisJdWludDMyX3QgbG0gPSBtZHA1X2NydGMtPmxt OworCXVpbnQzMl90IGJsZW5kX29wLCBmZ19hbHBoYSwgYmdfYWxwaGEsIGN0bF9ibGVuZF9mbGFn cyA9IDA7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKLSNkZWZpbmUgYmxlbmRlcihzdGFnZSkJKChz dGFnZSkgLSBTVEFHRV9CQVNFKQorCXVpbnQ4X3Qgc3RhZ2VbU1RBR0VfTUFYICsgMV07CisJaW50 IGksIHBsYW5lX2NudCA9IDA7CisjZGVmaW5lIGJsZW5kZXIoc3RhZ2UpCSgoc3RhZ2UpIC0gU1RB R0UwKQogCiAJaHdfY2ZnID0gbWRwNV9jZmdfZ2V0X2h3X2NvbmZpZyhtZHA1X2ttcy0+Y2ZnKTsK IApAQCAtMjIyLDMzICsyMjMsNzMgQEAgc3RhdGljIHZvaWQgYmxlbmRfc2V0dXAoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCWlmICghbWRwNV9jcnRjLT5jdGwpCiAJCWdvdG8gb3V0OwogCisJLyog Q29sbGVjdCBhbGwgcGxhbmUgaW5mb3JtYXRpb24gKi8KIAlkcm1fYXRvbWljX2NydGNfZm9yX2Vh Y2hfcGxhbmUocGxhbmUsIGNydGMpIHsKLQkJZW51bSBtZHBfbWl4ZXJfc3RhZ2VfaWQgc3RhZ2Ug PQotCQkJdG9fbWRwNV9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpLT5zdGFnZTsKKwkJcHN0YXRl ID0gdG9fbWRwNV9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpOworCQlwc3RhdGVzW3BzdGF0ZS0+ c3RhZ2VdID0gcHN0YXRlOworCQlzdGFnZVtwc3RhdGUtPnN0YWdlXSA9IG1kcDVfcGxhbmVfcGlw ZShwbGFuZSk7CisJCXBsYW5lX2NudCsrOworCX0KIAotCQkvKgotCQkgKiBOb3RlOiBUaGlzIGNh bm5vdCBoYXBwZW4gd2l0aCBjdXJyZW50IGltcGxlbWVudGF0aW9uIGJ1dAotCQkgKiB3ZSBuZWVk IHRvIGNoZWNrIHRoaXMgY29uZGl0aW9uIG9uY2UgeiBwcm9wZXJ0eSBpcyBhZGRlZAotCQkgKi8K LQkJQlVHX09OKHN0YWdlID4gaHdfY2ZnLT5sbS5uYl9zdGFnZXMpOworCS8qCisJKiBJZiB0aGVy ZSBpcyBubyBiYXNlIGxheWVyLCBlbmFibGUgYm9yZGVyIGNvbG9yLgorCSogQWx0aG91Z2ggaXQn cyBub3QgcG9zc2JpbGUgaW4gY3VycmVudCBibGVuZCBsb2dpYywKKwkqIHB1dCBpdCBoZXJlIGFz IGEgcmVtaW5kZXIuCisJKi8KKwlpZiAoIXBzdGF0ZXNbU1RBR0VfQkFTRV0gJiYgcGxhbmVfY250 KSB7CisJCWN0bF9ibGVuZF9mbGFncyB8PSBNRFA1X0NUTF9CTEVORF9PUF9GTEFHX0JPUkRFUl9P VVQ7CisJCURCRygiQm9yZGVyIENvbG9yIGlzIGVuYWJsZWQiKTsKKwl9CiAKLQkJLyogTE0gKi8K LQkJbWRwNV93cml0ZShtZHA1X2ttcywKLQkJCQlSRUdfTURQNV9MTV9CTEVORF9PUF9NT0RFKGxt LCBibGVuZGVyKHN0YWdlKSksCi0JCQkJTURQNV9MTV9CTEVORF9PUF9NT0RFX0ZHX0FMUEhBKEZH X0NPTlNUKSB8Ci0JCQkJTURQNV9MTV9CTEVORF9PUF9NT0RFX0JHX0FMUEhBKEJHX0NPTlNUKSk7 CisJLyogVGhlIHJlc2V0IGZvciBibGVuZGluZyAqLworCWZvciAoaSA9IFNUQUdFMDsgaSA8PSBT VEFHRV9NQVg7IGkrKykgeworCQlpZiAoIXBzdGF0ZXNbaV0pCisJCQljb250aW51ZTsKKworCQlm b3JtYXQgPSB0b19tZHBfZm9ybWF0KAorCQkJbXNtX2ZyYW1lYnVmZmVyX2Zvcm1hdChwc3RhdGVz W2ldLT5iYXNlLmZiKSk7CisJCXBsYW5lID0gcHN0YXRlc1tpXS0+YmFzZS5wbGFuZTsKKwkJYmxl bmRfb3AgPSBNRFA1X0xNX0JMRU5EX09QX01PREVfRkdfQUxQSEEoRkdfQ09OU1QpIHwKKwkJCU1E UDVfTE1fQkxFTkRfT1BfTU9ERV9CR19BTFBIQShCR19DT05TVCk7CisJCWZnX2FscGhhID0gcHN0 YXRlc1tpXS0+YWxwaGE7CisJCWJnX2FscGhhID0gMHhGRiAtIHBzdGF0ZXNbaV0tPmFscGhhOwor CQlEQkcoIlN0YWdlICVkIGZnX2FscGhhICV4IGJnX2FscGhhICV4IiwgaSwgZmdfYWxwaGEsIGJn X2FscGhhKTsKKworCQlpZiAoZm9ybWF0LT5hbHBoYV9lbmFibGUgJiYgcHN0YXRlc1tpXS0+cHJl bXVsdGlwbGllZCkgeworCQkJYmxlbmRfb3AgPSBNRFA1X0xNX0JMRU5EX09QX01PREVfRkdfQUxQ SEEoRkdfQ09OU1QpIHwKKwkJCQlNRFA1X0xNX0JMRU5EX09QX01PREVfQkdfQUxQSEEoRkdfUElY RUwpOworCQkJaWYgKGZnX2FscGhhICE9IDB4ZmYpIHsKKwkJCQliZ19hbHBoYSA9IGZnX2FscGhh OworCQkJCWJsZW5kX29wIHw9CisJCQkJCU1EUDVfTE1fQkxFTkRfT1BfTU9ERV9CR19NT0RfQUxQ SEEgfAorCQkJCQlNRFA1X0xNX0JMRU5EX09QX01PREVfQkdfSU5WX01PRF9BTFBIQTsKKwkJCX0g ZWxzZSB7CisJCQkJYmxlbmRfb3AgfD0gTURQNV9MTV9CTEVORF9PUF9NT0RFX0JHX0lOVl9BTFBI QTsKKwkJCX0KKwkJfSBlbHNlIGlmIChmb3JtYXQtPmFscGhhX2VuYWJsZSkgeworCQkJYmxlbmRf b3AgPSBNRFA1X0xNX0JMRU5EX09QX01PREVfRkdfQUxQSEEoRkdfUElYRUwpIHwKKwkJCQlNRFA1 X0xNX0JMRU5EX09QX01PREVfQkdfQUxQSEEoRkdfUElYRUwpOworCQkJaWYgKGZnX2FscGhhICE9 IDB4ZmYpIHsKKwkJCQliZ19hbHBoYSA9IGZnX2FscGhhOworCQkJCWJsZW5kX29wIHw9CisJCQkJ ICAgICAgIE1EUDVfTE1fQkxFTkRfT1BfTU9ERV9GR19NT0RfQUxQSEEgfAorCQkJCSAgICAgICBN RFA1X0xNX0JMRU5EX09QX01PREVfRkdfSU5WX01PRF9BTFBIQSB8CisJCQkJICAgICAgIE1EUDVf TE1fQkxFTkRfT1BfTU9ERV9CR19NT0RfQUxQSEEgfAorCQkJCSAgICAgICBNRFA1X0xNX0JMRU5E X09QX01PREVfQkdfSU5WX01PRF9BTFBIQTsKKwkJCX0gZWxzZSB7CisJCQkJYmxlbmRfb3AgfD0g TURQNV9MTV9CTEVORF9PUF9NT0RFX0JHX0lOVl9BTFBIQTsKKwkJCX0KKwkJfQorCisJCW1kcDVf d3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X0xNX0JMRU5EX09QX01PREUobG0sCisJCQkJYmxlbmRl cihpKSksIGJsZW5kX29wKTsKIAkJbWRwNV93cml0ZShtZHA1X2ttcywgUkVHX01EUDVfTE1fQkxF TkRfRkdfQUxQSEEobG0sCi0JCQkJYmxlbmRlcihzdGFnZSkpLCAweGZmKTsKKwkJCQlibGVuZGVy KGkpKSwgZmdfYWxwaGEpOwogCQltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9MTV9CTEVO RF9CR19BTFBIQShsbSwKLQkJCQlibGVuZGVyKHN0YWdlKSksIDB4MDApOwotCQkvKiBDVEwgKi8K LQkJYmxlbmRfY2ZnIHw9IG1kcF9jdGxfYmxlbmRfbWFzayhtZHA1X3BsYW5lX3BpcGUocGxhbmUp LCBzdGFnZSk7Ci0JCURCRygiJXM6IGJsZW5kaW5nIHBpcGUgJXMgb24gc3RhZ2U9JWQiLCBtZHA1 X2NydGMtPm5hbWUsCi0JCQkJcGlwZTJuYW1lKG1kcDVfcGxhbmVfcGlwZShwbGFuZSkpLCBzdGFn ZSk7CisJCQkJYmxlbmRlcihpKSksIGJnX2FscGhhKTsKIAl9CiAKLQlEQkcoIiVzOiBsbSVkOiBi bGVuZCBjb25maWcgPSAweCUwOHgiLCBtZHA1X2NydGMtPm5hbWUsIGxtLCBibGVuZF9jZmcpOwot CW1kcDVfY3RsX2JsZW5kKG1kcDVfY3J0Yy0+Y3RsLCBsbSwgYmxlbmRfY2ZnKTsKKwltZHA1X2N0 bF9ibGVuZChtZHA1X2NydGMtPmN0bCwgbG0sIHN0YWdlLCBwbGFuZV9jbnQsIGN0bF9ibGVuZF9m bGFncyk7CiAKIG91dDoKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZtZHA1X2NydGMtPmxtX2xv Y2ssIGZsYWdzKTsKQEAgLTMzOSw3ICszODAsOCBAQCBzdGF0aWMgaW50IG1kcDVfY3J0Y19hdG9t aWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVjdCBtZHA1X2ttcyAqbWRwNV9r bXMgPSBnZXRfa21zKGNydGMpOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IHBsYW5lX3N0YXRlIHBzdGF0ZXNb U1RBR0UzICsgMV07CisJc3RydWN0IHBsYW5lX3N0YXRlIHBzdGF0ZXNbU1RBR0VfTUFYICsgMV07 CisJY29uc3Qgc3RydWN0IG1kcDVfY2ZnX2h3ICpod19jZmc7CiAJaW50IGNudCA9IDAsIGk7CiAK IAlEQkcoIiVzOiBjaGVjayIsIG1kcDVfY3J0Yy0+bmFtZSk7CkBAIC0zNTQsMTAgKzM5NiwxMCBA QCBzdGF0aWMgaW50IG1kcDVfY3J0Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRj LAogCS8qIHZlcmlmeSB0aGF0IHRoZXJlIGFyZSBub3QgdG9vIG1hbnkgcGxhbmVzIGF0dGFjaGVk IHRvIGNydGMKIAkgKiBhbmQgdGhhdCB3ZSBkb24ndCBoYXZlIGNvbmZsaWN0aW5nIG1peGVyIHN0 YWdlczoKIAkgKi8KKwlod19jZmcgPSBtZHA1X2NmZ19nZXRfaHdfY29uZmlnKG1kcDVfa21zLT5j ZmcpOwogCWRybV9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZShwbGFuZSwgc3RhdGUp IHsKIAkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOwotCi0JCWlmIChjbnQgPj0gQVJS QVlfU0laRShwc3RhdGVzKSkgeworCQlpZiAoY250ID49IChod19jZmctPmxtLm5iX3N0YWdlcykp IHsKIAkJCWRldl9lcnIoZGV2LT5kZXYsICJ0b28gbWFueSBwbGFuZXMhXG4iKTsKIAkJCXJldHVy biAtRUlOVkFMOwogCQl9CkBAIC0zNjksMTMgKzQxMSwxMyBAQCBzdGF0aWMgaW50IG1kcDVfY3J0 Y19hdG9taWNfY2hlY2soc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkgKi8KIAkJaWYgKCFwc3Rh dGUpCiAJCQlwc3RhdGUgPSBwbGFuZS0+c3RhdGU7Ci0KIAkJcHN0YXRlc1tjbnRdLnBsYW5lID0g cGxhbmU7CiAJCXBzdGF0ZXNbY250XS5zdGF0ZSA9IHRvX21kcDVfcGxhbmVfc3RhdGUocHN0YXRl KTsKIAogCQljbnQrKzsKIAl9CiAKKwkvKiBhc3NpZ24gYSBzdGFnZSBiYXNlZCBvbiBzb3J0ZWQg enBvcyBwcm9wZXJ0eSAqLwogCXNvcnQocHN0YXRlcywgY250LCBzaXplb2YocHN0YXRlc1swXSks IHBzdGF0ZV9jbXAsIE5VTEwpOwogCiAJZm9yIChpID0gMDsgaSA8IGNudDsgaSsrKSB7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3RsLmMgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY3RsLmMKaW5kZXggZjI1MzBmMi4uNjIyODQ5YiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2N0bC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jdGwuYwpAQCAtMjg3LDMwICsyODcs ODYgQEAgaW50IG1kcDVfY3RsX3NldF9jdXJzb3Ioc3RydWN0IG1kcDVfY3RsICpjdGwsIGludCBj dXJzb3JfaWQsIGJvb2wgZW5hYmxlKQogCQlibGVuZF9jZmcgJj0gfk1EUDVfQ1RMX0xBWUVSX1JF R19DVVJTT1JfT1VUOwogCiAJY3RsX3dyaXRlKGN0bCwgUkVHX01EUDVfQ1RMX0xBWUVSX1JFRyhj dGwtPmlkLCBsbSksIGJsZW5kX2NmZyk7CisJY3RsLT5jdXJzb3Jfb24gPSBlbmFibGU7CiAKIAlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZjdGwtPmh3X2xvY2ssIGZsYWdzKTsKIAogCWN0bC0+cGVu ZGluZ19jdGxfdHJpZ2dlciA9IG1kcF9jdGxfZmx1c2hfbWFza19jdXJzb3IoY3Vyc29yX2lkKTsK LQljdGwtPmN1cnNvcl9vbiA9IGVuYWJsZTsKIAogCXJldHVybiAwOwogfQogCi1pbnQgbWRwNV9j dGxfYmxlbmQoc3RydWN0IG1kcDVfY3RsICpjdGwsIHUzMiBsbSwgdTMyIGJsZW5kX2NmZykKK3N0 YXRpYyB1MzIgbWRwX2N0bF9ibGVuZF9tYXNrKGVudW0gbWRwNV9waXBlIHBpcGUsCisJCWVudW0g bWRwX21peGVyX3N0YWdlX2lkIHN0YWdlKQoreworCXN3aXRjaCAocGlwZSkgeworCWNhc2UgU1NQ UF9WSUcwOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1ZJRzAoc3RhZ2UpOworCWNhc2UgU1NQ UF9WSUcxOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1ZJRzEoc3RhZ2UpOworCWNhc2UgU1NQ UF9WSUcyOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1ZJRzIoc3RhZ2UpOworCWNhc2UgU1NQ UF9SR0IwOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1JHQjAoc3RhZ2UpOworCWNhc2UgU1NQ UF9SR0IxOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1JHQjEoc3RhZ2UpOworCWNhc2UgU1NQ UF9SR0IyOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1JHQjIoc3RhZ2UpOworCWNhc2UgU1NQ UF9ETUEwOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX0RNQTAoc3RhZ2UpOworCWNhc2UgU1NQ UF9ETUExOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX0RNQTEoc3RhZ2UpOworCWNhc2UgU1NQ UF9WSUczOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1ZJRzMoc3RhZ2UpOworCWNhc2UgU1NQ UF9SR0IzOiByZXR1cm4gTURQNV9DVExfTEFZRVJfUkVHX1JHQjMoc3RhZ2UpOworCWRlZmF1bHQ6 CXJldHVybiAwOworCX0KK30KKworc3RhdGljIHUzMiBtZHBfY3RsX2JsZW5kX2V4dF9tYXNrKGVu dW0gbWRwNV9waXBlIHBpcGUsCisJCWVudW0gbWRwX21peGVyX3N0YWdlX2lkIHN0YWdlKQorewor CWlmIChzdGFnZSA8IFNUQUdFNikKKwkJcmV0dXJuIDA7CisKKwlzd2l0Y2ggKHBpcGUpIHsKKwlj YXNlIFNTUFBfVklHMDogcmV0dXJuIE1EUDVfQ1RMX0xBWUVSX0VYVF9SRUdfVklHMF9CSVQzOwor CWNhc2UgU1NQUF9WSUcxOiByZXR1cm4gTURQNV9DVExfTEFZRVJfRVhUX1JFR19WSUcxX0JJVDM7 CisJY2FzZSBTU1BQX1ZJRzI6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9FWFRfUkVHX1ZJRzJfQklU MzsKKwljYXNlIFNTUFBfUkdCMDogcmV0dXJuIE1EUDVfQ1RMX0xBWUVSX0VYVF9SRUdfUkdCMF9C SVQzOworCWNhc2UgU1NQUF9SR0IxOiByZXR1cm4gTURQNV9DVExfTEFZRVJfRVhUX1JFR19SR0Ix X0JJVDM7CisJY2FzZSBTU1BQX1JHQjI6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9FWFRfUkVHX1JH QjJfQklUMzsKKwljYXNlIFNTUFBfRE1BMDogcmV0dXJuIE1EUDVfQ1RMX0xBWUVSX0VYVF9SRUdf RE1BMF9CSVQzOworCWNhc2UgU1NQUF9ETUExOiByZXR1cm4gTURQNV9DVExfTEFZRVJfRVhUX1JF R19ETUExX0JJVDM7CisJY2FzZSBTU1BQX1ZJRzM6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9FWFRf UkVHX1ZJRzNfQklUMzsKKwljYXNlIFNTUFBfUkdCMzogcmV0dXJuIE1EUDVfQ1RMX0xBWUVSX0VY VF9SRUdfUkdCM19CSVQzOworCWRlZmF1bHQ6CXJldHVybiAwOworCX0KK30KKworaW50IG1kcDVf Y3RsX2JsZW5kKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCB1MzIgbG0sIHU4ICpzdGFnZSwgdTMyIHN0 YWdlX2NudCwKKwl1MzIgY3RsX2JsZW5kX29wX2ZsYWdzKQogewogCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisJdTMyIGJsZW5kX2NmZyA9IDAsIGJsZW5kX2V4dF9jZmcgPSAwOworCWludCBpLCBzdGFy dF9zdGFnZTsKKworCWlmIChjdGxfYmxlbmRfb3BfZmxhZ3MgJiBNRFA1X0NUTF9CTEVORF9PUF9G TEFHX0JPUkRFUl9PVVQpIHsKKwkJc3RhcnRfc3RhZ2UgPSBTVEFHRTA7CisJCWJsZW5kX2NmZyB8 PSBNRFA1X0NUTF9MQVlFUl9SRUdfQk9SREVSX0NPTE9SOworCX0gZWxzZSB7CisJCXN0YXJ0X3N0 YWdlID0gU1RBR0VfQkFTRTsKKwl9CisKKwlmb3IgKGkgPSBzdGFydF9zdGFnZTsgaSA8IHN0YXJ0 X3N0YWdlICsgc3RhZ2VfY250OyBpKyspIHsKKwkJYmxlbmRfY2ZnIHw9IG1kcF9jdGxfYmxlbmRf bWFzayhzdGFnZVtpXSwgaSk7CisJCWJsZW5kX2V4dF9jZmcgfD0gbWRwX2N0bF9ibGVuZF9leHRf bWFzayhzdGFnZVtpXSwgaSk7CisJfQogCisJc3Bpbl9sb2NrX2lycXNhdmUoJmN0bC0+aHdfbG9j aywgZmxhZ3MpOwogCWlmIChjdGwtPmN1cnNvcl9vbikKIAkJYmxlbmRfY2ZnIHw9ICBNRFA1X0NU TF9MQVlFUl9SRUdfQ1VSU09SX09VVDsKLQllbHNlCi0JCWJsZW5kX2NmZyAmPSB+TURQNV9DVExf TEFZRVJfUkVHX0NVUlNPUl9PVVQ7CiAKLQlzcGluX2xvY2tfaXJxc2F2ZSgmY3RsLT5od19sb2Nr LCBmbGFncyk7CiAJY3RsX3dyaXRlKGN0bCwgUkVHX01EUDVfQ1RMX0xBWUVSX1JFRyhjdGwtPmlk LCBsbSksIGJsZW5kX2NmZyk7CisJY3RsX3dyaXRlKGN0bCwgUkVHX01EUDVfQ1RMX0xBWUVSX0VY VF9SRUcoY3RsLT5pZCwgbG0pLCBibGVuZF9leHRfY2ZnKTsKIAlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZjdGwtPmh3X2xvY2ssIGZsYWdzKTsKIAogCWN0bC0+cGVuZGluZ19jdGxfdHJpZ2dlciA9 IG1kcF9jdGxfZmx1c2hfbWFza19sbShsbSk7CiAKKwlEQkcoImxtJWQ6IGJsZW5kIGNvbmZpZyA9 IDB4JTA4eC4gZXh0X2NmZyA9IDB4JTA4eCIsIGxtLAorCQlibGVuZF9jZmcsIGJsZW5kX2V4dF9j ZmcpOworCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20v bWRwL21kcDUvbWRwNV9jdGwuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9j dGwuaAppbmRleCA0Njc4MjI4Li5hYjUyNjc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v bXNtL21kcC9tZHA1L21kcDVfY3RsLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X2N0bC5oCkBAIC00MiwzOSArNDIsMTkgQEAgaW50IG1kcDVfY3RsX3NldF9lbmNvZGVy X3N0YXRlKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCBib29sIGVuYWJsZWQpOwogaW50IG1kcDVfY3Rs X3NldF9jdXJzb3Ioc3RydWN0IG1kcDVfY3RsICpjdGwsIGludCBjdXJzb3JfaWQsIGJvb2wgZW5h YmxlKTsKIAogLyoKLSAqIGJsZW5kX2NmZyAoTE0gYmxlbmRlciBjb25maWcpOgotICoKLSAqIFRo ZSBmdW5jdGlvbiBiZWxvdyBhbGxvd3MgdGhlIGNhbGxlciBvZiBtZHA1X2N0bF9ibGVuZCgpIHRv IHNwZWNpZnkgaG93IHBpcGVzCi0gKiBhcmUgYmVpbmcgYmxlbmRlZCBhY2NvcmRpbmcgdG8gdGhl aXIgc3RhZ2UgKHotb3JkZXIpLCB0aHJvdWdoIEBibGVuZF9jZmcgYXJnLgotICovCi1zdGF0aWMg aW5saW5lIHUzMiBtZHBfY3RsX2JsZW5kX21hc2soZW51bSBtZHA1X3BpcGUgcGlwZSwKLQkJZW51 bSBtZHBfbWl4ZXJfc3RhZ2VfaWQgc3RhZ2UpCi17Ci0Jc3dpdGNoIChwaXBlKSB7Ci0JY2FzZSBT U1BQX1ZJRzA6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfVklHMChzdGFnZSk7Ci0JY2FzZSBT U1BQX1ZJRzE6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfVklHMShzdGFnZSk7Ci0JY2FzZSBT U1BQX1ZJRzI6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfVklHMihzdGFnZSk7Ci0JY2FzZSBT U1BQX1JHQjA6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfUkdCMChzdGFnZSk7Ci0JY2FzZSBT U1BQX1JHQjE6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfUkdCMShzdGFnZSk7Ci0JY2FzZSBT U1BQX1JHQjI6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfUkdCMihzdGFnZSk7Ci0JY2FzZSBT U1BQX0RNQTA6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfRE1BMChzdGFnZSk7Ci0JY2FzZSBT U1BQX0RNQTE6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfRE1BMShzdGFnZSk7Ci0JY2FzZSBT U1BQX1ZJRzM6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfVklHMyhzdGFnZSk7Ci0JY2FzZSBT U1BQX1JHQjM6IHJldHVybiBNRFA1X0NUTF9MQVlFUl9SRUdfUkdCMyhzdGFnZSk7Ci0JZGVmYXVs dDoJcmV0dXJuIDA7Ci0JfQotfQotCi0vKgogICogbWRwNV9jdGxfYmxlbmQoKSAtIEJsZW5kIG11 bHRpcGxlIGxheWVycyBvbiBhIExheWVyIE1peGVyIChMTSkKICAqCi0gKiBAYmxlbmRfY2ZnOiBz ZWUgTE0gYmxlbmRlciBjb25maWcgZGVmaW5pdGlvbiBiZWxvdworICogQHN0YWdlOiBhcnJheSB0 byBjb250YWluIHRoZSBwaXBlIG51bSBmb3IgZWFjaCBzdGFnZQorICogQHN0YWdlX2NudDogdmFs aWQgc3RhZ2UgbnVtYmVyIGluIHN0YWdlIGFycmF5CisgKiBAY3RsX2JsZW5kX29wX2ZsYWdzOiBi bGVuZGVyIG9wZXJhdGlvbiBtb2RlIGZsYWdzCiAgKgogICogTm90ZToKICAqIENUTCByZWdpc3Rl cnMgbmVlZCB0byBiZSBmbHVzaGVkIGFmdGVyIGNhbGxpbmcgdGhpcyBmdW5jdGlvbgogICogKGNh bGwgbWRwNV9jdGxfY29tbWl0KCkgd2l0aCBtZHBfY3RsX2ZsdXNoX21hc2tfY3RsKCkgbWFzaykK ICAqLwotaW50IG1kcDVfY3RsX2JsZW5kKHN0cnVjdCBtZHA1X2N0bCAqY3RsLCB1MzIgbG0sIHUz MiBibGVuZF9jZmcpOworI2RlZmluZSBNRFA1X0NUTF9CTEVORF9PUF9GTEFHX0JPUkRFUl9PVVQJ QklUKDApCitpbnQgbWRwNV9jdGxfYmxlbmQoc3RydWN0IG1kcDVfY3RsICpjdGwsIHUzMiBsbSwg dTggKnN0YWdlLCB1MzIgc3RhZ2VfY250LAorCXUzMiBjdGxfYmxlbmRfb3BfZmxhZ3MpOwogCiAv KioKICAqIG1kcF9jdGxfZmx1c2hfbWFzay4uLigpIC0gUmVnaXN0ZXIgRkxVU0ggbWFza3MKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMuaCBiL2RyaXZl cnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9rbXMuaAppbmRleCBlMGViMjQ1Li4wNmFmNDE1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X2ttcy5oCkBAIC03MCwxOCArNzAs MTIgQEAgc3RydWN0IG1kcDVfa21zIHsKIHN0cnVjdCBtZHA1X3BsYW5lX3N0YXRlIHsKIAlzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlIGJhc2U7CiAKLQkvKiAidmlydHVhbCIgenBvcy4uIHdlIGNhbGN1 bGF0ZSBhY3R1YWwgbWl4ZXItc3RhZ2UgYXQgcnVudGltZQotCSAqIGJ5IHNvcnRpbmcgdGhlIGF0 dGFjaGVkIHBsYW5lcyBieSB6cG9zIGFuZCB0aGVuIGFzc2lnbmluZwotCSAqIG1peGVyIHN0YWdl IGxvd2VzdCB0byBoaWdoZXN0LiAgUHJpdmF0ZSBwbGFuZXMgZ2V0IGRlZmF1bHQKLQkgKiB6cG9z IG9mIHplcm8sIGFuZCBwdWJsaWMgcGxhbmVzIGEgdW5pcXVlIHZhbHVlIHRoYXQgaXMKLQkgKiBn cmVhdGVyIHRoYW4gemVyby4gIFRoaXMgd2F5LCB0aGluZ3Mgd29yayBvdXQgaWYgYSBuYWl2ZQot CSAqIHVzZXJzcGFjZSBhc3NpZ25zIHBsYW5lcyB0byBhIGNydGMgd2l0aG91dCBzZXR0aW5nIHpw b3MuCi0JICovCi0JaW50IHpwb3M7CisJLyogYWxpZ25lZCB3aXRoIHByb3BlcnR5ICovCisJdWlu dDhfdCBwcmVtdWx0aXBsaWVkOworCXVpbnQ4X3QgenBvczsKKwl1aW50OF90IGFscGhhOwogCi0J LyogdGhlIGFjdHVhbCBtaXhlciBzdGFnZSwgY2FsY3VsYXRlZCBpbiBjcnRjLT5hdG9taWNfY2hl Y2soKQotCSAqIE5PVEU6IHRoaXMgc2hvdWxkIG1vdmUgdG8gbWRwNV9jcnRjX3N0YXRlLCB3aGVu IHRoYXQgZXhpc3RzCi0JICovCisJLyogYXNzaWduZWQgYnkgY3J0YyBibGVuZGVyICovCiAJZW51 bSBtZHBfbWl4ZXJfc3RhZ2VfaWQgc3RhZ2U7CiAKIAkvKiBzb21lIGFkZGl0aW9uYWwgdHJhbnNh Y3Rpb25hbCBzdGF0dXMgdG8gaGVscCB1cyBrbm93IGluIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21kcC9tZHA1L21kcDVfcGxhbmUuYwppbmRleCA1N2I4ZjU2Li41MWJiOTQ0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfcGxhbmUuYwpAQCAtODIsMTggKzgyLDExOCBAQCBz dGF0aWMgdm9pZCBtZHA1X3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJ a2ZyZWUobWRwNV9wbGFuZSk7CiB9CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51 bV9saXN0IHByZW11bHRpcGxpZWRfcHJvcF9lbnVtX2xpc3RbXSA9IHsKKwl7IDAsICJmYWxzZSIg fSwKKwl7IDEsICJ0cnVlIiB9LAorfTsKKwogLyogaGVscGVyIHRvIGluc3RhbGwgcHJvcGVydGll cyB3aGljaCBhcmUgY29tbW9uIHRvIHBsYW5lcyBhbmQgY3J0Y3MgKi8KIHZvaWQgbWRwNV9wbGFu ZV9pbnN0YWxsX3Byb3BlcnRpZXMoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCXN0cnVjdCBk cm1fbW9kZV9vYmplY3QgKm9iaikKIHsKLQkvLyBYWFgKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gcGxhbmUtPmRldjsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcDsKKworI2RlZmluZSBJTlNU QUxMX1BST1BFUlRZKG5hbWUsIE5BTUUsIGluaXRfdmFsLCBmbmMsIC4uLikgZG8geyBcCisJCXBy b3AgPSBkZXZfcHJpdi0+cGxhbmVfcHJvcGVydHlbUExBTkVfUFJPUF8jI05BTUVdOyBcCisJCWlm ICghcHJvcCkgeyBcCisJCQlwcm9wID0gZHJtX3Byb3BlcnR5XyMjZm5jKGRldiwgMCwgI25hbWUs IFwKKwkJCQkjI19fVkFfQVJHU19fKTsgXAorCQkJaWYgKCFwcm9wKSB7IFwKKwkJCQlkZXZfd2Fy bihkZXYtPmRldiwgXAorCQkJCQkiQ3JlYXRlIHByb3BlcnR5ICVzIGZhaWxlZFxuIiwgXAorCQkJ CQkjbmFtZSk7IFwKKwkJCQlyZXR1cm47IFwKKwkJCX0gXAorCQkJZGV2X3ByaXYtPnBsYW5lX3By b3BlcnR5W1BMQU5FX1BST1BfIyNOQU1FXSA9IHByb3A7IFwKKwkJfSBcCisJCWRybV9vYmplY3Rf YXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZSwgcHJvcCwgaW5pdF92YWwpOyBcCisJfSB3aGls ZSAoMCkKKworI2RlZmluZSBJTlNUQUxMX1JBTkdFX1BST1BFUlRZKG5hbWUsIE5BTUUsIG1pbiwg bWF4LCBpbml0X3ZhbCkgXAorCQlJTlNUQUxMX1BST1BFUlRZKG5hbWUsIE5BTUUsIGluaXRfdmFs LCBcCisJCQkJY3JlYXRlX3JhbmdlLCBtaW4sIG1heCkKKworI2RlZmluZSBJTlNUQUxMX0VOVU1f UFJPUEVSVFkobmFtZSwgTkFNRSwgaW5pdF92YWwpIFwKKwkJSU5TVEFMTF9QUk9QRVJUWShuYW1l LCBOQU1FLCBpbml0X3ZhbCwgXAorCQkJCWNyZWF0ZV9lbnVtLCBuYW1lIyNfcHJvcF9lbnVtX2xp c3QsIFwKKwkJCQlBUlJBWV9TSVpFKG5hbWUjI19wcm9wX2VudW1fbGlzdCkpCisKKwlJTlNUQUxM X1JBTkdFX1BST1BFUlRZKHpwb3MsIFpQT1MsIDEsIDI1NSwgMSk7CisJSU5TVEFMTF9SQU5HRV9Q Uk9QRVJUWShhbHBoYSwgQUxQSEEsIDAsIDI1NSwgMjU1KTsKKwlJTlNUQUxMX0VOVU1fUFJPUEVS VFkocHJlbXVsdGlwbGllZCwgUFJFTVVMVElQTElFRCwgMCk7CisKKyN1bmRlZiBJTlNUQUxMX1JB TkdFX1BST1BFUlRZCisjdW5kZWYgSU5TVEFMTF9FTlVNX1BST1BFUlRZCisjdW5kZWYgSU5TVEFM TF9QUk9QRVJUWQorfQorCitzdGF0aWMgaW50IG1kcDVfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0 eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3Rh dGUsIHN0cnVjdCBkcm1fcHJvcGVydHkgKnByb3BlcnR5LAorCQl1aW50NjRfdCB2YWwpCit7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CisJc3RydWN0IG1kcDVfcGxhbmVf c3RhdGUgKnBzdGF0ZTsKKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CisJaW50IHJldCA9IDA7CisKKwlwc3RhdGUgPSB0b19tZHA1X3BsYW5lX3N0 YXRlKHN0YXRlKTsKKworI2RlZmluZSBTRVRfUFJPUEVSVFkobmFtZSwgTkFNRSwgdHlwZSkgZG8g eyBcCisJCWlmIChkZXZfcHJpdi0+cGxhbmVfcHJvcGVydHlbUExBTkVfUFJPUF8jI05BTUVdID09 IHByb3BlcnR5KSB7IFwKKwkJCXBzdGF0ZS0+bmFtZSA9ICh0eXBlKXZhbDsgXAorCQkJREJHKCJT ZXQgcHJvcGVydHkgJXMgJWQiLCAjbmFtZSwgKHR5cGUpdmFsKTsgXAorCQkJZ290byBkb25lOyBc CisJCX0gXAorCX0gd2hpbGUgKDApCisKKwlTRVRfUFJPUEVSVFkoenBvcywgWlBPUywgdWludDhf dCk7CisJU0VUX1BST1BFUlRZKGFscGhhLCBBTFBIQSwgdWludDhfdCk7CisJU0VUX1BST1BFUlRZ KHByZW11bHRpcGxpZWQsIFBSRU1VTFRJUExJRUQsIHVpbnQ4X3QpOworCisJZGV2X2VycihkZXYt PmRldiwgIkludmFsaWQgcHJvcGVydHlcbiIpOworCXJldCA9IC1FSU5WQUw7Citkb25lOgorCXJl dHVybiByZXQ7CisjdW5kZWYgU0VUX1BST1BFUlRZCiB9CiAKLWludCBtZHA1X3BsYW5lX3NldF9w cm9wZXJ0eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKK3N0YXRpYyBpbnQgbWRwNV9wbGFuZV9z ZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCXN0cnVjdCBkcm1fcHJvcGVy dHkgKnByb3BlcnR5LCB1aW50NjRfdCB2YWwpCiB7Ci0JLy8gWFhYCi0JcmV0dXJuIC1FSU5WQUw7 CisJcmV0dXJuIG1kcDVfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eShwbGFuZSwgcGxhbmUtPnN0 YXRlLCBwcm9wZXJ0eSwKKwkJdmFsKTsKK30KKworc3RhdGljIGludCBtZHA1X3BsYW5lX2F0b21p Y19nZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCWNvbnN0IHN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnN0YXRlLAorCQlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wZXJ0eSwg dWludDY0X3QgKnZhbCkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsK KwlzdHJ1Y3QgbWRwNV9wbGFuZV9zdGF0ZSAqcHN0YXRlOworCXN0cnVjdCBtc21fZHJtX3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlpbnQgcmV0ID0gMDsKKworCXBzdGF0 ZSA9IHRvX21kcDVfcGxhbmVfc3RhdGUoc3RhdGUpOworCisjZGVmaW5lIEdFVF9QUk9QRVJUWShu YW1lLCBOQU1FLCB0eXBlKSBkbyB7IFwKKwkJaWYgKGRldl9wcml2LT5wbGFuZV9wcm9wZXJ0eVtQ TEFORV9QUk9QXyMjTkFNRV0gPT0gcHJvcGVydHkpIHsgXAorCQkJKnZhbCA9IHBzdGF0ZS0+bmFt ZTsgXAorCQkJREJHKCJHZXQgcHJvcGVydHkgJXMgJWxsZCIsICNuYW1lLCAqdmFsKTsgXAorCQkJ Z290byBkb25lOyBcCisJCX0gXAorCX0gd2hpbGUgKDApCisKKwlHRVRfUFJPUEVSVFkoenBvcywg WlBPUywgdWludDhfdCk7CisJR0VUX1BST1BFUlRZKGFscGhhLCBBTFBIQSwgdWludDhfdCk7CisJ R0VUX1BST1BFUlRZKHByZW11bHRpcGxpZWQsIFBSRU1VTFRJUExJRUQsIHVpbnQ4X3QpOworCisJ ZGV2X2VycihkZXYtPmRldiwgIkludmFsaWQgcHJvcGVydHlcbiIpOworCXJldCA9IC1FSU5WQUw7 Citkb25lOgorCXJldHVybiByZXQ7CisjdW5kZWYgU0VUX1BST1BFUlRZCiB9CiAKIHN0YXRpYyB2 b2lkIG1kcDVfcGxhbmVfcmVzZXQoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCkBAIC0xMDYsMTEg KzIwNiwxNSBAQCBzdGF0aWMgdm9pZCBtZHA1X3BsYW5lX3Jlc2V0KHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lKQogCWtmcmVlKHRvX21kcDVfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKSk7CiAJbWRw NV9zdGF0ZSA9IGt6YWxsb2Moc2l6ZW9mKCptZHA1X3N0YXRlKSwgR0ZQX0tFUk5FTCk7CiAKLQlp ZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSkgewotCQltZHA1X3N0YXRl LT56cG9zID0gMDsKLQl9IGVsc2UgewotCQltZHA1X3N0YXRlLT56cG9zID0gMSArIGRybV9wbGFu ZV9pbmRleChwbGFuZSk7Ci0JfQorCS8qIGFzc2lnbiBkZWZhdWx0IGJsZW5kIHBhcmFtZXRlcnMg Ki8KKwltZHA1X3N0YXRlLT5hbHBoYSA9IDI1NTsKKwltZHA1X3N0YXRlLT5wcmVtdWx0aXBsaWVk ID0gMDsKKworCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQorCQlt ZHA1X3N0YXRlLT56cG9zID0gU1RBR0VfQkFTRTsKKwllbHNlCisJCW1kcDVfc3RhdGUtPnpwb3Mg PSBTVEFHRTAgKyBkcm1fcGxhbmVfaW5kZXgocGxhbmUpOworCiAJbWRwNV9zdGF0ZS0+YmFzZS5w bGFuZSA9IHBsYW5lOwogCiAJcGxhbmUtPnN0YXRlID0gJm1kcDVfc3RhdGUtPmJhc2U7CkBAIC0x NTAsNiArMjU0LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgbWRwNV9w bGFuZV9mdW5jcyA9IHsKIAkJLmRpc2FibGVfcGxhbmUgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNh YmxlX3BsYW5lLAogCQkuZGVzdHJveSA9IG1kcDVfcGxhbmVfZGVzdHJveSwKIAkJLnNldF9wcm9w ZXJ0eSA9IG1kcDVfcGxhbmVfc2V0X3Byb3BlcnR5LAorCQkuYXRvbWljX3NldF9wcm9wZXJ0eSA9 IG1kcDVfcGxhbmVfYXRvbWljX3NldF9wcm9wZXJ0eSwKKwkJLmF0b21pY19nZXRfcHJvcGVydHkg PSBtZHA1X3BsYW5lX2F0b21pY19nZXRfcHJvcGVydHksCiAJCS5yZXNldCA9IG1kcDVfcGxhbmVf cmVzZXQsCiAJCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gbWRwNV9wbGFuZV9kdXBsaWNhdGVf c3RhdGUsCiAJCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IG1kcDVfcGxhbmVfZGVzdHJveV9zdGF0 ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL21zbS9tc21fZHJ2LmgKaW5kZXggZTdjNWVhMS4uYmQ2NGE4MiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZHJ2LmgKQEAgLTY0LDYgKzY0LDEzIEBAIHN0cnVjdCBtc21fZmlsZV9wcml2YXRlIHsKIAlp bnQgZHVtbXk7CiB9OwogCitlbnVtIG1zbV9tZHBfcGxhbmVfcHJvcGVydHkgeworCVBMQU5FX1BS T1BfWlBPUywKKwlQTEFORV9QUk9QX0FMUEhBLAorCVBMQU5FX1BST1BfUFJFTVVMVElQTElFRCwK KwlQTEFORV9QUk9QX01BWF9OVU0KK307CisKIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgewogCiAJ c3RydWN0IG1zbV9rbXMgKmttczsKQEAgLTEyOCw2ICsxMzUsOSBAQCBzdHJ1Y3QgbXNtX2RybV9w cml2YXRlIHsKIAl1bnNpZ25lZCBpbnQgbnVtX2Nvbm5lY3RvcnM7CiAJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcnNbOF07CiAKKwkvKiBQcm9wZXJ0aWVzICovCisJc3RydWN0IGRybV9w cm9wZXJ0eSAqcGxhbmVfcHJvcGVydHlbUExBTkVfUFJPUF9NQVhfTlVNXTsKKwogCS8qIFZSQU0g Y2FydmVvdXQsIHVzZWQgd2hlbiBubyBJT01NVTogKi8KIAlzdHJ1Y3QgewogCQl1bnNpZ25lZCBs b25nIHNpemU7Ci0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIEluYy4gaXMgYSBt ZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLAphIExpbnV4IEZvdW5kYXRpb24gQ29sbGFi b3JhdGl2ZSBQcm9qZWN0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=