From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 22/36] drm/tegra: Atomic conversion, phase 1 Date: Tue, 20 Jan 2015 11:48:41 +0100 Message-ID: <1421750935-4023-23-git-send-email-thierry.reding@gmail.com> References: <1421750935-4023-1-git-send-email-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1421750935-4023-1-git-send-email-thierry.reding@gmail.com> 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-tegra@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KCkltcGxlbWVudCBpbml0 aWFsIGF0b21pYyBzdGF0ZSBoYW5kbGluZy4gSG9vayB1cCB0aGUgQ1JUQ3MsIHBsYW5lcycgYW5k CmNvbm5lY3RvcnMnIC0+YXRvbWljX2Rlc3Ryb3lfc3RhdGUoKSBjYWxsYmFjayB0byBlbnN1cmUg dGhhdCB0aGUgYXRvbWljCnN0YXRlIG9iamVjdHMgZG9uJ3QgbGVhay4KCkZ1cnRoZXJtb3JlIHRo ZSBDUlRDIG5vdyBpbXBsZW1lbnRzIHRoZSAtPm1vZGVfc2V0X25vZmIoKSBjYWxsYmFjayB0aGF0 CmlzIHVzZWQgYnkgbmV3IGhlbHBlcnMgdG8gaW1wbGVtZW50IC0+bW9kZV9zZXQoKSBhbmQgLT5t b2RlX3NldF9iYXNlKCkuClRoZXNlIG5ldyBoZWxwZXJzIGFsc28gbWFrZSB1c2Ugb2YgdGhlIG5l dyBwbGFuZSBoZWxwZXIgZnVuY3Rpb25zIHdoaWNoCnRoZSBkcml2ZXIgbm93IHByb3ZpZGVzLgoK U2lnbmVkLW9mZi1ieTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYyAgICAgfCAzOTcgKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYyAgICB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RzaS5jICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1 L2RybS90ZWdyYS9oZG1pLmMgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vdGVncmEvb3V0cHV0 LmMgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3JnYi5jICAgIHwgICAyICsKIGRyaXZl cnMvZ3B1L2RybS90ZWdyYS9zb3IuYyAgICB8ICAgMiArCiA3IGZpbGVzIGNoYW5nZWQsIDIyMyBp bnNlcnRpb25zKCspLCAxODUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3RlZ3JhL2RjLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZGMuYwppbmRleCA4NDZkYWY0 OGNmNjEuLmU3ZWZiNmNhMTI3YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2Rj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2RjLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNp bmNsdWRlICJkcm0uaCIKICNpbmNsdWRlICJnZW0uaCIKIAorI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CiAKIHN0cnVj dCB0ZWdyYV9kY19zb2NfaW5mbyB7CkBAIC0yMDcsOCArMjA4LDggQEAgc3RhdGljIGlubGluZSB1 MzIgY29tcHV0ZV9pbml0aWFsX2RkYSh1bnNpZ25lZCBpbnQgaW4pCiAJcmV0dXJuIGRmaXhlZF9m cmFjKGluZik7CiB9CiAKLXN0YXRpYyBpbnQgdGVncmFfZGNfc2V0dXBfd2luZG93KHN0cnVjdCB0 ZWdyYV9kYyAqZGMsIHVuc2lnbmVkIGludCBpbmRleCwKLQkJCQkgY29uc3Qgc3RydWN0IHRlZ3Jh X2RjX3dpbmRvdyAqd2luZG93KQorc3RhdGljIHZvaWQgdGVncmFfZGNfc2V0dXBfd2luZG93KHN0 cnVjdCB0ZWdyYV9kYyAqZGMsIHVuc2lnbmVkIGludCBpbmRleCwKKwkJCQkgIGNvbnN0IHN0cnVj dCB0ZWdyYV9kY193aW5kb3cgKndpbmRvdykKIHsKIAl1bnNpZ25lZCBoX29mZnNldCwgdl9vZmZz ZXQsIGhfc2l6ZSwgdl9zaXplLCBoX2RkYSwgdl9kZGEsIGJwcDsKIAl1bnNpZ25lZCBsb25nIHZh bHVlLCBmbGFnczsKQEAgLTMxNyw5ICszMTgsMTEgQEAgc3RhdGljIGludCB0ZWdyYV9kY19zZXR1 cF93aW5kb3coc3RydWN0IHRlZ3JhX2RjICpkYywgdW5zaWduZWQgaW50IGluZGV4LAogCQkJYnJl YWs7CiAKIAkJY2FzZSBURUdSQV9CT19USUxJTkdfTU9ERV9CTE9DSzoKLQkJCURSTV9FUlJPUigi aGFyZHdhcmUgZG9lc24ndCBzdXBwb3J0IGJsb2NrIGxpbmVhciBtb2RlXG4iKTsKLQkJCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRjLT5sb2NrLCBmbGFncyk7Ci0JCQlyZXR1cm4gLUVJTlZBTDsK KwkJCS8qCisJCQkgKiBObyBuZWVkIHRvIGhhbmRsZSB0aGlzIGhlcmUgYmVjYXVzZSAtPmF0b21p Y19jaGVjaworCQkJICogd2lsbCBhbHJlYWR5IGhhdmUgZmlsdGVyZWQgaXQgb3V0LgorCQkJICov CisJCQlicmVhazsKIAkJfQogCiAJCXRlZ3JhX2RjX3dyaXRlbChkYywgdmFsdWUsIERDX1dJTl9C VUZGRVJfQUREUl9NT0RFKTsKQEAgLTM3OCwzNCArMzgxLDYgQEAgc3RhdGljIGludCB0ZWdyYV9k Y19zZXR1cF93aW5kb3coc3RydWN0IHRlZ3JhX2RjICpkYywgdW5zaWduZWQgaW50IGluZGV4LAog CXRlZ3JhX2RjX3dpbmRvd19jb21taXQoZGMsIGluZGV4KTsKIAogCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRjLT5sb2NrLCBmbGFncyk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCB0 ZWdyYV93aW5kb3dfcGxhbmVfZGlzYWJsZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKLXsKLQlz dHJ1Y3QgdGVncmFfZGMgKmRjID0gdG9fdGVncmFfZGMocGxhbmUtPmNydGMpOwotCXN0cnVjdCB0 ZWdyYV9wbGFuZSAqcCA9IHRvX3RlZ3JhX3BsYW5lKHBsYW5lKTsKLQl1bnNpZ25lZCBsb25nIGZs YWdzOwotCXUzMiB2YWx1ZTsKLQotCWlmICghcGxhbmUtPmNydGMpCi0JCXJldHVybiAwOwotCi0J c3Bpbl9sb2NrX2lycXNhdmUoJmRjLT5sb2NrLCBmbGFncyk7Ci0KLQl2YWx1ZSA9IFdJTkRPV19B X1NFTEVDVCA8PCBwLT5pbmRleDsKLQl0ZWdyYV9kY193cml0ZWwoZGMsIHZhbHVlLCBEQ19DTURf RElTUExBWV9XSU5ET1dfSEVBREVSKTsKLQotCXZhbHVlID0gdGVncmFfZGNfcmVhZGwoZGMsIERD X1dJTl9XSU5fT1BUSU9OUyk7Ci0JdmFsdWUgJj0gfldJTl9FTkFCTEU7Ci0JdGVncmFfZGNfd3Jp dGVsKGRjLCB2YWx1ZSwgRENfV0lOX1dJTl9PUFRJT05TKTsKLQotCXRlZ3JhX2RjX3dpbmRvd19j b21taXQoZGMsIHAtPmluZGV4KTsKLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmRjLT5sb2Nr LCBmbGFncyk7Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgdGVncmFfcGxhbmVfZGVz dHJveShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkKQEAgLTQyMiw1NyArMzk3LDEzOSBAQCBzdGF0 aWMgY29uc3QgdTMyIHRlZ3JhX3ByaW1hcnlfcGxhbmVfZm9ybWF0c1tdID0gewogCURSTV9GT1JN QVRfUkdCNTY1LAogfTsKIAotc3RhdGljIGludCB0ZWdyYV9wcmltYXJ5X3BsYW5lX3VwZGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKLQkJCQkgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Ci0JCQkJICAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjcnRjX3gsCi0JCQkJ ICAgICAgaW50IGNydGNfeSwgdW5zaWduZWQgaW50IGNydGNfdywKLQkJCQkgICAgICB1bnNpZ25l ZCBpbnQgY3J0Y19oLCB1aW50MzJfdCBzcmNfeCwKLQkJCQkgICAgICB1aW50MzJfdCBzcmNfeSwg dWludDMyX3Qgc3JjX3csCi0JCQkJICAgICAgdWludDMyX3Qgc3JjX2gpCitzdGF0aWMgdm9pZCB0 ZWdyYV9wcmltYXJ5X3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiB7Ci0J c3RydWN0IHRlZ3JhX2JvICpibyA9IHRlZ3JhX2ZiX2dldF9wbGFuZShmYiwgMCk7CisJdGVncmFf cGxhbmVfZGVzdHJveShwbGFuZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5l X2Z1bmNzIHRlZ3JhX3ByaW1hcnlfcGxhbmVfZnVuY3MgPSB7CisJLnVwZGF0ZV9wbGFuZSA9IGRy bV9wbGFuZV9oZWxwZXJfdXBkYXRlLAorCS5kaXNhYmxlX3BsYW5lID0gZHJtX3BsYW5lX2hlbHBl cl9kaXNhYmxlLAorCS5kZXN0cm95ID0gdGVncmFfcHJpbWFyeV9wbGFuZV9kZXN0cm95LAorCS5h dG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rlc3Ryb3lfc3Rh dGUsCit9OworCitzdGF0aWMgaW50IHRlZ3JhX3BsYW5lX3ByZXBhcmVfZmIoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCisJCQkJICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKK3sKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGVncmFfcGxhbmVfY2xlYW51cF9mYihzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKKwkJCQkgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKK3sKK30K Kworc3RhdGljIGludCB0ZWdyYV9wbGFuZV9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsCisJCQkJICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQoreworCXN0cnVj dCB0ZWdyYV9kYyAqZGMgPSB0b190ZWdyYV9kYyhzdGF0ZS0+Y3J0Yyk7CisJc3RydWN0IHRlZ3Jh X2JvX3RpbGluZyB0aWxpbmc7CisJaW50IGVycjsKKworCS8qIG5vIG5lZWQgZm9yIGZ1cnRoZXIg Y2hlY2tzIGlmIHRoZSBwbGFuZSBpcyBiZWluZyBkaXNhYmxlZCAqLworCWlmICghc3RhdGUtPmNy dGMpCisJCXJldHVybiAwOworCisJZXJyID0gdGVncmFfZmJfZ2V0X3RpbGluZyhzdGF0ZS0+ZmIs ICZ0aWxpbmcpOworCWlmIChlcnIgPCAwKQorCQlyZXR1cm4gZXJyOworCisJaWYgKHRpbGluZy5t b2RlID09IFRFR1JBX0JPX1RJTElOR19NT0RFX0JMT0NLICYmCisJICAgICFkYy0+c29jLT5zdXBw b3J0c19ibG9ja19saW5lYXIpIHsKKwkJRFJNX0VSUk9SKCJoYXJkd2FyZSBkb2Vzbid0IHN1cHBv cnQgYmxvY2sgbGluZWFyIG1vZGVcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKgor CSAqIFRlZ3JhIGRvZXNuJ3Qgc3VwcG9ydCBkaWZmZXJlbnQgc3RyaWRlcyBmb3IgVSBhbmQgViBw bGFuZXMgc28gd2UKKwkgKiBlcnJvciBvdXQgaWYgdGhlIHVzZXIgdHJpZXMgdG8gZGlzcGxheSBh IGZyYW1lYnVmZmVyIHdpdGggc3VjaCBhCisJICogY29uZmlndXJhdGlvbi4KKwkgKi8KKwlpZiAo ZHJtX2Zvcm1hdF9udW1fcGxhbmVzKHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0KSA+IDIpIHsKKwkJ aWYgKHN0YXRlLT5mYi0+cGl0Y2hlc1syXSAhPSBzdGF0ZS0+ZmItPnBpdGNoZXNbMV0pIHsKKwkJ CURSTV9FUlJPUigidW5zdXBwb3J0ZWQgVVYtcGxhbmUgY29uZmlndXJhdGlvblxuIik7CisJCQly ZXR1cm4gLUVJTlZBTDsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCB0 ZWdyYV9wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAg ICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgdGVncmFf ZGMgKmRjID0gdG9fdGVncmFfZGMocGxhbmUtPnN0YXRlLT5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7CiAJc3RydWN0IHRlZ3JhX3BsYW5lICpw ID0gdG9fdGVncmFfcGxhbmUocGxhbmUpOwotCXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSB0b190ZWdy YV9kYyhjcnRjKTsKIAlzdHJ1Y3QgdGVncmFfZGNfd2luZG93IHdpbmRvdzsKKwl1bnNpZ25lZCBp bnQgaTsKIAlpbnQgZXJyOwogCisJLyogcmllbiBuZSB2YSBwbHVzICovCisJaWYgKCFwbGFuZS0+ c3RhdGUtPmNydGMgfHwgIXBsYW5lLT5zdGF0ZS0+ZmIpCisJCXJldHVybjsKKwogCW1lbXNldCgm d2luZG93LCAwLCBzaXplb2Yod2luZG93KSk7Ci0Jd2luZG93LnNyYy54ID0gc3JjX3ggPj4gMTY7 Ci0Jd2luZG93LnNyYy55ID0gc3JjX3kgPj4gMTY7Ci0Jd2luZG93LnNyYy53ID0gc3JjX3cgPj4g MTY7Ci0Jd2luZG93LnNyYy5oID0gc3JjX2ggPj4gMTY7Ci0Jd2luZG93LmRzdC54ID0gY3J0Y194 OwotCXdpbmRvdy5kc3QueSA9IGNydGNfeTsKLQl3aW5kb3cuZHN0LncgPSBjcnRjX3c7Ci0Jd2lu ZG93LmRzdC5oID0gY3J0Y19oOworCXdpbmRvdy5zcmMueCA9IHBsYW5lLT5zdGF0ZS0+c3JjX3gg Pj4gMTY7CisJd2luZG93LnNyYy55ID0gcGxhbmUtPnN0YXRlLT5zcmNfeSA+PiAxNjsKKwl3aW5k b3cuc3JjLncgPSBwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2OworCXdpbmRvdy5zcmMuaCA9IHBs YW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTY7CisJd2luZG93LmRzdC54ID0gcGxhbmUtPnN0YXRlLT5j cnRjX3g7CisJd2luZG93LmRzdC55ID0gcGxhbmUtPnN0YXRlLT5jcnRjX3k7CisJd2luZG93LmRz dC53ID0gcGxhbmUtPnN0YXRlLT5jcnRjX3c7CisJd2luZG93LmRzdC5oID0gcGxhbmUtPnN0YXRl LT5jcnRjX2g7CiAJd2luZG93LmZvcm1hdCA9IHRlZ3JhX2RjX2Zvcm1hdChmYi0+cGl4ZWxfZm9y bWF0LCAmd2luZG93LnN3YXApOwogCXdpbmRvdy5iaXRzX3Blcl9waXhlbCA9IGZiLT5iaXRzX3Bl cl9waXhlbDsKIAl3aW5kb3cuYm90dG9tX3VwID0gdGVncmFfZmJfaXNfYm90dG9tX3VwKGZiKTsK IAogCWVyciA9IHRlZ3JhX2ZiX2dldF90aWxpbmcoZmIsICZ3aW5kb3cudGlsaW5nKTsKLQlpZiAo ZXJyIDwgMCkKLQkJcmV0dXJuIGVycjsKKwlXQVJOX09OKGVyciA8IDApOwogCi0Jd2luZG93LmJh c2VbMF0gPSBiby0+cGFkZHIgKyBmYi0+b2Zmc2V0c1swXTsKLQl3aW5kb3cuc3RyaWRlWzBdID0g ZmItPnBpdGNoZXNbMF07CisJZm9yIChpID0gMDsgaSA8IGRybV9mb3JtYXRfbnVtX3BsYW5lcyhm Yi0+cGl4ZWxfZm9ybWF0KTsgaSsrKSB7CisJCXN0cnVjdCB0ZWdyYV9ibyAqYm8gPSB0ZWdyYV9m Yl9nZXRfcGxhbmUoZmIsIGkpOwogCi0JZXJyID0gdGVncmFfZGNfc2V0dXBfd2luZG93KGRjLCBw LT5pbmRleCwgJndpbmRvdyk7Ci0JaWYgKGVyciA8IDApCi0JCXJldHVybiBlcnI7CisJCXdpbmRv dy5iYXNlW2ldID0gYm8tPnBhZGRyICsgZmItPm9mZnNldHNbaV07CisJCXdpbmRvdy5zdHJpZGVb aV0gPSBmYi0+cGl0Y2hlc1tpXTsKKwl9CiAKLQlyZXR1cm4gMDsKKwl0ZWdyYV9kY19zZXR1cF93 aW5kb3coZGMsIHAtPmluZGV4LCAmd2luZG93KTsKIH0KIAotc3RhdGljIHZvaWQgdGVncmFfcHJp bWFyeV9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQorc3RhdGljIHZvaWQg dGVncmFfcGxhbmVfYXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJ ICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKLQl0ZWdyYV93aW5k b3dfcGxhbmVfZGlzYWJsZShwbGFuZSk7Ci0JdGVncmFfcGxhbmVfZGVzdHJveShwbGFuZSk7CisJ c3RydWN0IHRlZ3JhX3BsYW5lICpwID0gdG9fdGVncmFfcGxhbmUocGxhbmUpOworCXN0cnVjdCB0 ZWdyYV9kYyAqZGM7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwl1MzIgdmFsdWU7CisKKwkvKiBy aWVuIG5lIHZhIHBsdXMgKi8KKwlpZiAoIW9sZF9zdGF0ZSB8fCAhb2xkX3N0YXRlLT5jcnRjKQor CQlyZXR1cm47CisKKwlkYyA9IHRvX3RlZ3JhX2RjKG9sZF9zdGF0ZS0+Y3J0Yyk7CisKKwlzcGlu X2xvY2tfaXJxc2F2ZSgmZGMtPmxvY2ssIGZsYWdzKTsKKworCXZhbHVlID0gV0lORE9XX0FfU0VM RUNUIDw8IHAtPmluZGV4OworCXRlZ3JhX2RjX3dyaXRlbChkYywgdmFsdWUsIERDX0NNRF9ESVNQ TEFZX1dJTkRPV19IRUFERVIpOworCisJdmFsdWUgPSB0ZWdyYV9kY19yZWFkbChkYywgRENfV0lO X1dJTl9PUFRJT05TKTsKKwl2YWx1ZSAmPSB+V0lOX0VOQUJMRTsKKwl0ZWdyYV9kY193cml0ZWwo ZGMsIHZhbHVlLCBEQ19XSU5fV0lOX09QVElPTlMpOworCisJdGVncmFfZGNfd2luZG93X2NvbW1p dChkYywgcC0+aW5kZXgpOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGMtPmxvY2ssIGZs YWdzKTsKIH0KIAotc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgdGVncmFfcHJp bWFyeV9wbGFuZV9mdW5jcyA9IHsKLQkudXBkYXRlX3BsYW5lID0gdGVncmFfcHJpbWFyeV9wbGFu ZV91cGRhdGUsCi0JLmRpc2FibGVfcGxhbmUgPSB0ZWdyYV93aW5kb3dfcGxhbmVfZGlzYWJsZSwK LQkuZGVzdHJveSA9IHRlZ3JhX3ByaW1hcnlfcGxhbmVfZGVzdHJveSwKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyB0ZWdyYV9wcmltYXJ5X3BsYW5lX2hlbHBlcl9m dW5jcyA9IHsKKwkucHJlcGFyZV9mYiA9IHRlZ3JhX3BsYW5lX3ByZXBhcmVfZmIsCisJLmNsZWFu dXBfZmIgPSB0ZWdyYV9wbGFuZV9jbGVhbnVwX2ZiLAorCS5hdG9taWNfY2hlY2sgPSB0ZWdyYV9w bGFuZV9hdG9taWNfY2hlY2ssCisJLmF0b21pY191cGRhdGUgPSB0ZWdyYV9wbGFuZV9hdG9taWNf dXBkYXRlLAorCS5hdG9taWNfZGlzYWJsZSA9IHRlZ3JhX3BsYW5lX2F0b21pY19kaXNhYmxlLAog fTsKIAogc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKnRlZ3JhX2RjX3ByaW1hcnlfcGxhbmVfY3Jl YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sCkBAIC01MTEsNiArNTY4LDggQEAgc3RhdGljIHN0 cnVjdCBkcm1fcGxhbmUgKnRlZ3JhX2RjX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0sCiAJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCisJZHJtX3BsYW5lX2hl bHBlcl9hZGQoJnBsYW5lLT5iYXNlLCAmdGVncmFfcHJpbWFyeV9wbGFuZV9oZWxwZXJfZnVuY3Mp OworCiAJcmV0dXJuICZwbGFuZS0+YmFzZTsKIH0KIApAQCAtNTE4LDI3ICs1NzcsNDIgQEAgc3Rh dGljIGNvbnN0IHUzMiB0ZWdyYV9jdXJzb3JfcGxhbmVfZm9ybWF0c1tdID0gewogCURSTV9GT1JN QVRfUkdCQTg4ODgsCiB9OwogCi1zdGF0aWMgaW50IHRlZ3JhX2N1cnNvcl9wbGFuZV91cGRhdGUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCi0JCQkJICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMs Ci0JCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNydGNfeCwKLQkJCQkg ICAgIGludCBjcnRjX3ksIHVuc2lnbmVkIGludCBjcnRjX3csCi0JCQkJICAgICB1bnNpZ25lZCBp bnQgY3J0Y19oLCB1aW50MzJfdCBzcmNfeCwKLQkJCQkgICAgIHVpbnQzMl90IHNyY195LCB1aW50 MzJfdCBzcmNfdywKLQkJCQkgICAgIHVpbnQzMl90IHNyY19oKQorc3RhdGljIGludCB0ZWdyYV9j dXJzb3JfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCSAgICAgc3Ry dWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IHRlZ3JhX2JvICpibyA9IHRl Z3JhX2ZiX2dldF9wbGFuZShmYiwgMCk7Ci0Jc3RydWN0IHRlZ3JhX2RjICpkYyA9IHRvX3RlZ3Jh X2RjKGNydGMpOwotCXUzMiB2YWx1ZSA9IENVUlNPUl9DTElQX0RJU1BMQVk7CisJLyogbm8gbmVl ZCBmb3IgZnVydGhlciBjaGVja3MgaWYgdGhlIHBsYW5lIGlzIGJlaW5nIGRpc2FibGVkICovCisJ aWYgKCFzdGF0ZS0+Y3J0YykKKwkJcmV0dXJuIDA7CiAKIAkvKiBzY2FsaW5nIG5vdCBzdXBwb3J0 ZWQgZm9yIGN1cnNvciAqLwotCWlmICgoc3JjX3cgPj4gMTYgIT0gY3J0Y193KSB8fCAoc3JjX2gg Pj4gMTYgIT0gY3J0Y19oKSkKKwlpZiAoKHN0YXRlLT5zcmNfdyA+PiAxNiAhPSBzdGF0ZS0+Y3J0 Y193KSB8fAorCSAgICAoc3RhdGUtPnNyY19oID4+IDE2ICE9IHN0YXRlLT5jcnRjX2gpKQogCQly ZXR1cm4gLUVJTlZBTDsKIAogCS8qIG9ubHkgc3F1YXJlIGN1cnNvcnMgc3VwcG9ydGVkICovCi0J aWYgKHNyY193ICE9IHNyY19oKQorCWlmIChzdGF0ZS0+c3JjX3cgIT0gc3RhdGUtPnNyY19oKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChzdGF0ZS0+Y3J0Y193ICE9IDMyICYmIHN0YXRlLT5j cnRjX3cgIT0gNjQgJiYKKwkgICAgc3RhdGUtPmNydGNfdyAhPSAxMjggJiYgc3RhdGUtPmNydGNf dyAhPSAyNTYpCiAJCXJldHVybiAtRUlOVkFMOwogCi0Jc3dpdGNoIChjcnRjX3cpIHsKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgdGVncmFfY3Vyc29yX2F0b21pY191cGRhdGUoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJICAgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm9s ZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgdGVncmFfYm8gKmJvID0gdGVncmFfZmJfZ2V0X3BsYW5lKHBs YW5lLT5zdGF0ZS0+ZmIsIDApOworCXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSB0b190ZWdyYV9kYyhw bGFuZS0+c3RhdGUtPmNydGMpOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlID0gcGxh bmUtPnN0YXRlOworCXUzMiB2YWx1ZSA9IENVUlNPUl9DTElQX0RJU1BMQVk7CisKKwkvKiByaWVu IG5lIHZhIHBsdXMgKi8KKwlpZiAoIXBsYW5lLT5zdGF0ZS0+Y3J0YyB8fCAhcGxhbmUtPnN0YXRl LT5mYikKKwkJcmV0dXJuOworCisJc3dpdGNoIChzdGF0ZS0+Y3J0Y193KSB7CiAJY2FzZSAzMjoK IAkJdmFsdWUgfD0gQ1VSU09SX1NJWkVfMzJ4MzI7CiAJCWJyZWFrOwpAQCAtNTU2LDcgKzYzMCw5 IEBAIHN0YXRpYyBpbnQgdGVncmFfY3Vyc29yX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgotCQlyZXR1cm4gLUVJTlZBTDsKKwkJV0FS TigxLCAiY3Vyc29yIHNpemUgJXV4JXUgbm90IHN1cHBvcnRlZFxuIiwgc3RhdGUtPmNydGNfdywK KwkJICAgICBzdGF0ZS0+Y3J0Y19oKTsKKwkJcmV0dXJuOwogCX0KIAogCXZhbHVlIHw9IChiby0+ cGFkZHIgPj4gMTApICYgMHgzZmZmZmY7CkBAIC01ODIsMjMgKzY1OCwyNSBAQCBzdGF0aWMgaW50 IHRlZ3JhX2N1cnNvcl9wbGFuZV91cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJdGVn cmFfZGNfd3JpdGVsKGRjLCB2YWx1ZSwgRENfRElTUF9CTEVORF9DVVJTT1JfQ09OVFJPTCk7CiAK IAkvKiBwb3NpdGlvbiB0aGUgY3Vyc29yICovCi0JdmFsdWUgPSAoY3J0Y195ICYgMHgzZmZmKSA8 PCAxNiB8IChjcnRjX3ggJiAweDNmZmYpOworCXZhbHVlID0gKHN0YXRlLT5jcnRjX3kgJiAweDNm ZmYpIDw8IDE2IHwgKHN0YXRlLT5jcnRjX3ggJiAweDNmZmYpOwogCXRlZ3JhX2RjX3dyaXRlbChk YywgdmFsdWUsIERDX0RJU1BfQ1VSU09SX1BPU0lUSU9OKTsKIAogCS8qIGFwcGx5IGNoYW5nZXMg Ki8KIAl0ZWdyYV9kY19jdXJzb3JfY29tbWl0KGRjKTsKIAl0ZWdyYV9kY19jb21taXQoZGMpOwot Ci0JcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgdGVncmFfY3Vyc29yX3BsYW5lX2Rpc2FibGUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCitzdGF0aWMgdm9pZCB0ZWdyYV9jdXJzb3JfYXRvbWlj X2Rpc2FibGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCisJCQkJCXN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKm9sZF9zdGF0ZSkKIHsKLQlzdHJ1Y3QgdGVncmFfZGMgKmRjID0gdG9fdGVncmFfZGMo cGxhbmUtPmNydGMpOworCXN0cnVjdCB0ZWdyYV9kYyAqZGM7CiAJdTMyIHZhbHVlOwogCi0JaWYg KCFwbGFuZS0+Y3J0YykKLQkJcmV0dXJuIDA7CisJLyogcmllbiBuZSB2YSBwbHVzICovCisJaWYg KCFvbGRfc3RhdGUgfHwgIW9sZF9zdGF0ZS0+Y3J0YykKKwkJcmV0dXJuOworCisJZGMgPSB0b190 ZWdyYV9kYyhvbGRfc3RhdGUtPmNydGMpOwogCiAJdmFsdWUgPSB0ZWdyYV9kY19yZWFkbChkYywg RENfRElTUF9ESVNQX1dJTl9PUFRJT05TKTsKIAl2YWx1ZSAmPSB+Q1VSU09SX0VOQUJMRTsKQEAg LTYwNiwxNCArNjg0LDIxIEBAIHN0YXRpYyBpbnQgdGVncmFfY3Vyc29yX3BsYW5lX2Rpc2FibGUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCiAKIAl0ZWdyYV9kY19jdXJzb3JfY29tbWl0KGRjKTsK IAl0ZWdyYV9kY19jb21taXQoZGMpOwotCi0JcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIHRlZ3JhX2N1cnNvcl9wbGFuZV9mdW5jcyA9IHsKLQkudXBk YXRlX3BsYW5lID0gdGVncmFfY3Vyc29yX3BsYW5lX3VwZGF0ZSwKLQkuZGlzYWJsZV9wbGFuZSA9 IHRlZ3JhX2N1cnNvcl9wbGFuZV9kaXNhYmxlLAorCS51cGRhdGVfcGxhbmUgPSBkcm1fcGxhbmVf aGVscGVyX3VwZGF0ZSwKKwkuZGlzYWJsZV9wbGFuZSA9IGRybV9wbGFuZV9oZWxwZXJfZGlzYWJs ZSwKIAkuZGVzdHJveSA9IHRlZ3JhX3BsYW5lX2Rlc3Ryb3ksCisJLmF0b21pY19kZXN0cm95X3N0 YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZGVzdHJveV9zdGF0ZSwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyB0ZWdyYV9jdXJzb3JfcGxhbmVf aGVscGVyX2Z1bmNzID0geworCS5wcmVwYXJlX2ZiID0gdGVncmFfcGxhbmVfcHJlcGFyZV9mYiwK KwkuY2xlYW51cF9mYiA9IHRlZ3JhX3BsYW5lX2NsZWFudXBfZmIsCisJLmF0b21pY19jaGVjayA9 IHRlZ3JhX2N1cnNvcl9hdG9taWNfY2hlY2ssCisJLmF0b21pY191cGRhdGUgPSB0ZWdyYV9jdXJz b3JfYXRvbWljX3VwZGF0ZSwKKwkuYXRvbWljX2Rpc2FibGUgPSB0ZWdyYV9jdXJzb3JfYXRvbWlj X2Rpc2FibGUsCiB9OwogCiBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqdGVncmFfZGNfY3Vyc29y X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLApAQCAtNjM5LDcxICs3MjQsMjEg QEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKnRlZ3JhX2RjX2N1cnNvcl9wbGFuZV9jcmVhdGUo c3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAkJcmV0dXJuIEVSUl9QVFIoZXJyKTsKIAl9CiAKLQly ZXR1cm4gJnBsYW5lLT5iYXNlOwotfQotCi1zdGF0aWMgaW50IHRlZ3JhX292ZXJsYXlfcGxhbmVf dXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAotCQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKLQkJCQkgICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNydGNf eCwKLQkJCQkgICAgICBpbnQgY3J0Y195LCB1bnNpZ25lZCBpbnQgY3J0Y193LAotCQkJCSAgICAg IHVuc2lnbmVkIGludCBjcnRjX2gsIHVpbnQzMl90IHNyY194LAotCQkJCSAgICAgIHVpbnQzMl90 IHNyY195LCB1aW50MzJfdCBzcmNfdywKLQkJCQkgICAgICB1aW50MzJfdCBzcmNfaCkKLXsKLQlz dHJ1Y3QgdGVncmFfcGxhbmUgKnAgPSB0b190ZWdyYV9wbGFuZShwbGFuZSk7Ci0Jc3RydWN0IHRl Z3JhX2RjICpkYyA9IHRvX3RlZ3JhX2RjKGNydGMpOwotCXN0cnVjdCB0ZWdyYV9kY193aW5kb3cg d2luZG93OwotCXVuc2lnbmVkIGludCBpOwotCWludCBlcnI7Ci0KLQltZW1zZXQoJndpbmRvdywg MCwgc2l6ZW9mKHdpbmRvdykpOwotCXdpbmRvdy5zcmMueCA9IHNyY194ID4+IDE2OwotCXdpbmRv dy5zcmMueSA9IHNyY195ID4+IDE2OwotCXdpbmRvdy5zcmMudyA9IHNyY193ID4+IDE2OwotCXdp bmRvdy5zcmMuaCA9IHNyY19oID4+IDE2OwotCXdpbmRvdy5kc3QueCA9IGNydGNfeDsKLQl3aW5k b3cuZHN0LnkgPSBjcnRjX3k7Ci0Jd2luZG93LmRzdC53ID0gY3J0Y193OwotCXdpbmRvdy5kc3Qu aCA9IGNydGNfaDsKLQl3aW5kb3cuZm9ybWF0ID0gdGVncmFfZGNfZm9ybWF0KGZiLT5waXhlbF9m b3JtYXQsICZ3aW5kb3cuc3dhcCk7Ci0Jd2luZG93LmJpdHNfcGVyX3BpeGVsID0gZmItPmJpdHNf cGVyX3BpeGVsOwotCXdpbmRvdy5ib3R0b21fdXAgPSB0ZWdyYV9mYl9pc19ib3R0b21fdXAoZmIp OwotCi0JZXJyID0gdGVncmFfZmJfZ2V0X3RpbGluZyhmYiwgJndpbmRvdy50aWxpbmcpOwotCWlm IChlcnIgPCAwKQotCQlyZXR1cm4gZXJyOworCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZwbGFuZS0+ YmFzZSwgJnRlZ3JhX2N1cnNvcl9wbGFuZV9oZWxwZXJfZnVuY3MpOwogCi0JZm9yIChpID0gMDsg aSA8IGRybV9mb3JtYXRfbnVtX3BsYW5lcyhmYi0+cGl4ZWxfZm9ybWF0KTsgaSsrKSB7Ci0JCXN0 cnVjdCB0ZWdyYV9ibyAqYm8gPSB0ZWdyYV9mYl9nZXRfcGxhbmUoZmIsIGkpOwotCi0JCXdpbmRv dy5iYXNlW2ldID0gYm8tPnBhZGRyICsgZmItPm9mZnNldHNbaV07Ci0KLQkJLyoKLQkJICogVGVn cmEgZG9lc24ndCBzdXBwb3J0IGRpZmZlcmVudCBzdHJpZGVzIGZvciBVIGFuZCBWIHBsYW5lcwot CQkgKiBzbyB3ZSBkaXNwbGF5IGEgd2FybmluZyBpZiB0aGUgdXNlciB0cmllcyB0byBkaXNwbGF5 IGEKLQkJICogZnJhbWVidWZmZXIgd2l0aCBzdWNoIGEgY29uZmlndXJhdGlvbi4KLQkJICovCi0J CWlmIChpID49IDIpIHsKLQkJCWlmIChmYi0+cGl0Y2hlc1tpXSAhPSB3aW5kb3cuc3RyaWRlWzFd KQotCQkJCURSTV9FUlJPUigidW5zdXBwb3J0ZWQgVVYtcGxhbmUgY29uZmlndXJhdGlvblxuIik7 Ci0JCX0gZWxzZSB7Ci0JCQl3aW5kb3cuc3RyaWRlW2ldID0gZmItPnBpdGNoZXNbaV07Ci0JCX0K LQl9Ci0KLQlyZXR1cm4gdGVncmFfZGNfc2V0dXBfd2luZG93KGRjLCBwLT5pbmRleCwgJndpbmRv dyk7CisJcmV0dXJuICZwbGFuZS0+YmFzZTsKIH0KIAogc3RhdGljIHZvaWQgdGVncmFfb3Zlcmxh eV9wbGFuZV9kZXN0cm95KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lKQogewotCXRlZ3JhX3dpbmRv d19wbGFuZV9kaXNhYmxlKHBsYW5lKTsKIAl0ZWdyYV9wbGFuZV9kZXN0cm95KHBsYW5lKTsKIH0K IAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgdGVncmFfb3ZlcmxheV9wbGFu ZV9mdW5jcyA9IHsKLQkudXBkYXRlX3BsYW5lID0gdGVncmFfb3ZlcmxheV9wbGFuZV91cGRhdGUs Ci0JLmRpc2FibGVfcGxhbmUgPSB0ZWdyYV93aW5kb3dfcGxhbmVfZGlzYWJsZSwKKwkudXBkYXRl X3BsYW5lID0gZHJtX3BsYW5lX2hlbHBlcl91cGRhdGUsCisJLmRpc2FibGVfcGxhbmUgPSBkcm1f cGxhbmVfaGVscGVyX2Rpc2FibGUsCiAJLmRlc3Ryb3kgPSB0ZWdyYV9vdmVybGF5X3BsYW5lX2Rl c3Ryb3ksCisJLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVf ZGVzdHJveV9zdGF0ZSwKIH07CiAKIHN0YXRpYyBjb25zdCB1aW50MzJfdCB0ZWdyYV9vdmVybGF5 X3BsYW5lX2Zvcm1hdHNbXSA9IHsKQEAgLTcxNiw2ICs3NTEsMTQgQEAgc3RhdGljIGNvbnN0IHVp bnQzMl90IHRlZ3JhX292ZXJsYXlfcGxhbmVfZm9ybWF0c1tdID0gewogCURSTV9GT1JNQVRfWVVW NDIyLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIHRl Z3JhX292ZXJsYXlfcGxhbmVfaGVscGVyX2Z1bmNzID0geworCS5wcmVwYXJlX2ZiID0gdGVncmFf cGxhbmVfcHJlcGFyZV9mYiwKKwkuY2xlYW51cF9mYiA9IHRlZ3JhX3BsYW5lX2NsZWFudXBfZmIs CisJLmF0b21pY19jaGVjayA9IHRlZ3JhX3BsYW5lX2F0b21pY19jaGVjaywKKwkuYXRvbWljX3Vw ZGF0ZSA9IHRlZ3JhX3BsYW5lX2F0b21pY191cGRhdGUsCisJLmF0b21pY19kaXNhYmxlID0gdGVn cmFfcGxhbmVfYXRvbWljX2Rpc2FibGUsCit9OworCiBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAq dGVncmFfZGNfb3ZlcmxheV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAkJ CQkJCSAgICAgICBzdHJ1Y3QgdGVncmFfZGMgKmRjLAogCQkJCQkJICAgICAgIHVuc2lnbmVkIGlu dCBpbmRleCkKQEAgLTc0Miw2ICs3ODUsOCBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqdGVn cmFfZGNfb3ZlcmxheV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRybSwKIAkJcmV0 dXJuIEVSUl9QVFIoZXJyKTsKIAl9CiAKKwlkcm1fcGxhbmVfaGVscGVyX2FkZCgmcGxhbmUtPmJh c2UsICZ0ZWdyYV9vdmVybGF5X3BsYW5lX2hlbHBlcl9mdW5jcyk7CisKIAlyZXR1cm4gJnBsYW5l LT5iYXNlOwogfQogCkBAIC05NjAsNiArMTAwNSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2NydGNfZnVuY3MgdGVncmFfY3J0Y19mdW5jcyA9IHsKIAkucGFnZV9mbGlwID0gdGVncmFfZGNf cGFnZV9mbGlwLAogCS5zZXRfY29uZmlnID0gZHJtX2NydGNfaGVscGVyX3NldF9jb25maWcsCiAJ LmRlc3Ryb3kgPSB0ZWdyYV9kY19kZXN0cm95LAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRy bV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKIH07CiAKIHN0YXRpYyB2b2lkIHRl Z3JhX2RjX3N0b3Aoc3RydWN0IHRlZ3JhX2RjICpkYykKQEAgLTEwOTcsMTYgKzExNDMsMTEgQEAg aW50IHRlZ3JhX2RjX3NldHVwX2Nsb2NrKHN0cnVjdCB0ZWdyYV9kYyAqZGMsIHN0cnVjdCBjbGsg KnBhcmVudCwKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCB0ZWdyYV9jcnRjX21vZGVfc2V0 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSwKLQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWQsCi0J CQkgICAgICAgaW50IHgsIGludCB5LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIpCitz dGF0aWMgdm9pZCB0ZWdyYV9jcnRjX21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpjcnRj KQogewotCXN0cnVjdCB0ZWdyYV9ibyAqYm8gPSB0ZWdyYV9mYl9nZXRfcGxhbmUoY3J0Yy0+cHJp bWFyeS0+ZmIsIDApOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNydGMtPnN0 YXRlLT5hZGp1c3RlZF9tb2RlOwogCXN0cnVjdCB0ZWdyYV9kYyAqZGMgPSB0b190ZWdyYV9kYyhj cnRjKTsKLQlzdHJ1Y3QgdGVncmFfZGNfd2luZG93IHdpbmRvdzsKIAl1MzIgdmFsdWU7Ci0JaW50 IGVycjsKIAogCS8qIHByb2dyYW0gZGlzcGxheSBtb2RlICovCiAJdGVncmFfZGNfc2V0X3RpbWlu Z3MoZGMsIG1vZGUpOwpAQCAtMTEyMCwzNiArMTE2MSw2IEBAIHN0YXRpYyBpbnQgdGVncmFfY3J0 Y19tb2RlX3NldChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCXZhbHVlICY9IH5JTlRFUkxBQ0Vf RU5BQkxFOwogCQl0ZWdyYV9kY193cml0ZWwoZGMsIHZhbHVlLCBEQ19ESVNQX0lOVEVSTEFDRV9D T05UUk9MKTsKIAl9Ci0KLQkvKiBzZXR1cCB3aW5kb3cgcGFyYW1ldGVycyAqLwotCW1lbXNldCgm d2luZG93LCAwLCBzaXplb2Yod2luZG93KSk7Ci0Jd2luZG93LnNyYy54ID0gMDsKLQl3aW5kb3cu c3JjLnkgPSAwOwotCXdpbmRvdy5zcmMudyA9IG1vZGUtPmhkaXNwbGF5OwotCXdpbmRvdy5zcmMu aCA9IG1vZGUtPnZkaXNwbGF5OwotCXdpbmRvdy5kc3QueCA9IDA7Ci0Jd2luZG93LmRzdC55ID0g MDsKLQl3aW5kb3cuZHN0LncgPSBtb2RlLT5oZGlzcGxheTsKLQl3aW5kb3cuZHN0LmggPSBtb2Rl LT52ZGlzcGxheTsKLQl3aW5kb3cuZm9ybWF0ID0gdGVncmFfZGNfZm9ybWF0KGNydGMtPnByaW1h cnktPmZiLT5waXhlbF9mb3JtYXQsCi0JCQkJCSZ3aW5kb3cuc3dhcCk7Ci0Jd2luZG93LmJpdHNf cGVyX3BpeGVsID0gY3J0Yy0+cHJpbWFyeS0+ZmItPmJpdHNfcGVyX3BpeGVsOwotCXdpbmRvdy5z dHJpZGVbMF0gPSBjcnRjLT5wcmltYXJ5LT5mYi0+cGl0Y2hlc1swXTsKLQl3aW5kb3cuYmFzZVsw XSA9IGJvLT5wYWRkcjsKLQotCWVyciA9IHRlZ3JhX2RjX3NldHVwX3dpbmRvdyhkYywgMCwgJndp bmRvdyk7Ci0JaWYgKGVyciA8IDApCi0JCWRldl9lcnIoZGMtPmRldiwgImZhaWxlZCB0byBlbmFi bGUgcm9vdCBwbGFuZVxuIik7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCB0ZWdyYV9j cnRjX21vZGVfc2V0X2Jhc2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBpbnQgeCwgaW50IHksCi0J CQkJICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYikKLXsKLQlzdHJ1Y3QgdGVncmFf ZGMgKmRjID0gdG9fdGVncmFfZGMoY3J0Yyk7Ci0KLQlyZXR1cm4gdGVncmFfZGNfc2V0X2Jhc2Uo ZGMsIHgsIHksIGNydGMtPnByaW1hcnktPmZiKTsKIH0KIAogc3RhdGljIHZvaWQgdGVncmFfY3J0 Y19wcmVwYXJlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKQEAgLTEyMDAsMTMgKzEyMTEsMzEgQEAg c3RhdGljIHZvaWQgdGVncmFfY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXRl Z3JhX2RjX2NvbW1pdChkYyk7CiB9CiAKK3N0YXRpYyBpbnQgdGVncmFfY3J0Y19hdG9taWNfY2hl Y2soc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq c3RhdGUpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIHRlZ3JhX2NydGNfYXRvbWlj X2JlZ2luKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3sKK30KKworc3RhdGljIHZvaWQgdGVncmFf Y3J0Y19hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRjICpjcnRjKQoreworfQorCiBzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9jcnRjX2hlbHBlcl9mdW5jcyB0ZWdyYV9jcnRjX2hlbHBlcl9mdW5j cyA9IHsKIAkuZGlzYWJsZSA9IHRlZ3JhX2NydGNfZGlzYWJsZSwKIAkubW9kZV9maXh1cCA9IHRl Z3JhX2NydGNfbW9kZV9maXh1cCwKLQkubW9kZV9zZXQgPSB0ZWdyYV9jcnRjX21vZGVfc2V0LAot CS5tb2RlX3NldF9iYXNlID0gdGVncmFfY3J0Y19tb2RlX3NldF9iYXNlLAorCS5tb2RlX3NldCA9 IGRybV9oZWxwZXJfY3J0Y19tb2RlX3NldCwKKwkubW9kZV9zZXRfbm9mYiA9IHRlZ3JhX2NydGNf bW9kZV9zZXRfbm9mYiwKKwkubW9kZV9zZXRfYmFzZSA9IGRybV9oZWxwZXJfY3J0Y19tb2RlX3Nl dF9iYXNlLAogCS5wcmVwYXJlID0gdGVncmFfY3J0Y19wcmVwYXJlLAogCS5jb21taXQgPSB0ZWdy YV9jcnRjX2NvbW1pdCwKKwkuYXRvbWljX2NoZWNrID0gdGVncmFfY3J0Y19hdG9taWNfY2hlY2ss CisJLmF0b21pY19iZWdpbiA9IHRlZ3JhX2NydGNfYXRvbWljX2JlZ2luLAorCS5hdG9taWNfZmx1 c2ggPSB0ZWdyYV9jcnRjX2F0b21pY19mbHVzaCwKIH07CiAKIHN0YXRpYyBpcnFyZXR1cm5fdCB0 ZWdyYV9kY19pcnEoaW50IGlycSwgdm9pZCAqZGF0YSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS90ZWdyYS9kcm0uYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYwppbmRleCAxMjFl MDIyYmRhYjAuLjMzMjZkZjI1MmM1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3Jh L2RybS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kcm0uYwpAQCAtMTIxLDggKzEyMSw4 IEBAIHN0YXRpYyBpbnQgdGVncmFfZHJtX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQog CiAJZHJtX2ttc19oZWxwZXJfcG9sbF9maW5pKGRybSk7CiAJdGVncmFfZHJtX2ZiX2V4aXQoZHJt KTsKLQlkcm1fdmJsYW5rX2NsZWFudXAoZHJtKTsKIAlkcm1fbW9kZV9jb25maWdfY2xlYW51cChk cm0pOworCWRybV92YmxhbmtfY2xlYW51cChkcm0pOwogCiAJZXJyID0gaG9zdDF4X2RldmljZV9l eGl0KGRldmljZSk7CiAJaWYgKGVyciA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dGVncmEvZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHNpLmMKaW5kZXggZjhiZmI0NTU4 N2Q4Li40YmIwNmMxMTlhMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9kc2ku YworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZHNpLmMKQEAgLTE3LDYgKzE3LDcgQEAKIAog I2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgogCisjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5oPgogI2luY2x1 ZGUgPGRybS9kcm1fcGFuZWwuaD4KIApAQCAtNzM2LDYgKzczNyw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB0ZWdyYV9kc2lfY29ubmVjdG9yX2Z1bmNzID0gewog CS5kZXRlY3QgPSB0ZWdyYV9vdXRwdXRfY29ubmVjdG9yX2RldGVjdCwKIAkuZmlsbF9tb2RlcyA9 IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKIAkuZGVzdHJveSA9IHRl Z3JhX291dHB1dF9jb25uZWN0b3JfZGVzdHJveSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKIH07CiAKIHN0YXRpYyBl bnVtIGRybV9tb2RlX3N0YXR1cwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2hk bWkuYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9oZG1pLmMKaW5kZXggZDQxNTMwZjEwOTdjLi5i Zjg2OGQ1NGVmN2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9oZG1pLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL2hkbWkuYwpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1 ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPgogI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+ CiAKKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJt X2NydGMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CiAKQEAgLTc4MSw2ICs3 ODIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgdGVncmFfaGRt aV9jb25uZWN0b3JfZnVuY3MgPSB7CiAJLmRldGVjdCA9IHRlZ3JhX291dHB1dF9jb25uZWN0b3Jf ZGV0ZWN0LAogCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9y X21vZGVzLAogCS5kZXN0cm95ID0gdGVncmFfb3V0cHV0X2Nvbm5lY3Rvcl9kZXN0cm95LAorCS5h dG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95 X3N0YXRlLAogfTsKIAogc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vdGVncmEvb3V0cHV0LmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvb3V0 cHV0LmMKaW5kZXggZDAyN2UzMDc5YzE3Li43OTUzMGMyMzc5MGIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS90ZWdyYS9vdXRwdXQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvb3V0 cHV0LmMKQEAgLTksNiArOSw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9vZl9ncGlvLmg+CiAKKyNp bmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3BhbmVs Lmg+CiAjaW5jbHVkZSAiZHJtLmgiCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90ZWdy YS9yZ2IuYyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9yZ2IuYwppbmRleCAwYzkzMmY5ZGMxMmQu LjIzYmE0MDM3MGViMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3JnYi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS90ZWdyYS9yZ2IuYwpAQCAtOSw2ICs5LDcgQEAKIAogI2luY2x1 ZGUgPGxpbnV4L2Nsay5oPgogCisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CiAj aW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgogCiAjaW5jbHVkZSAiZHJtLmgiCkBAIC05Nyw2ICs5 OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB0ZWdyYV9yZ2Jf Y29ubmVjdG9yX2Z1bmNzID0gewogCS5kZXRlY3QgPSB0ZWdyYV9vdXRwdXRfY29ubmVjdG9yX2Rl dGVjdCwKIAkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9t b2RlcywKIAkuZGVzdHJveSA9IHRlZ3JhX291dHB1dF9jb25uZWN0b3JfZGVzdHJveSwKKwkuYXRv bWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9z dGF0ZSwKIH07CiAKIHN0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jCmlu ZGV4IDllNjc4MzhjMTU2Mi4uZTJmMzk5MzYzZjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vdGVncmEvc29yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL3RlZ3JhL3Nvci5jCkBAIC0xNSw2 ICsxNSw3IEBACiAKICNpbmNsdWRlIDxzb2MvdGVncmEvcG1jLmg+CiAKKyNpbmNsdWRlIDxkcm0v ZHJtX2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2RwX2hlbHBlci5oPgogI2lu Y2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KIApAQCAtNzM3LDYgKzczOCw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyB0ZWdyYV9zb3JfY29ubmVjdG9yX2Z1bmNzID0g ewogCS5kZXRlY3QgPSB0ZWdyYV9zb3JfY29ubmVjdG9yX2RldGVjdCwKIAkuZmlsbF9tb2RlcyA9 IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKIAkuZGVzdHJveSA9IHRl Z3JhX291dHB1dF9jb25uZWN0b3JfZGVzdHJveSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwKIH07CiAKIHN0YXRpYyBp bnQgdGVncmFfc29yX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKLS0gCjIuMS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=