From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Szyprowski Subject: [PATCH v2 22/22] drm/exynos: add support for plane rotation, scalling and colospace convesion Date: Mon, 30 Nov 2015 14:53:37 +0100 Message-ID: <1448891617-18830-23-git-send-email-m.szyprowski@samsung.com> References: <1448891617-18830-1-git-send-email-m.szyprowski@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1448891617-18830-1-git-send-email-m.szyprowski@samsung.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, linux-samsung-soc@vger.kernel.org Cc: Javier Martinez Canillas , Krzysztof Kozlowski , Bartlomiej Zolnierkiewicz , Seung-Woo Kim , Andrzej Hajda , Tobias Jakobi , Marek Szyprowski List-Id: linux-samsung-soc@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIGdlbmVyaWMgcGxhbmUgcm90YXRpb24gcHJvcGVydHkgZm9yIGFsbCBz dXBwb3J0ZWQKZHJpdmVycy4gVGhpcyBoYXMgYmVlbiBpbXBsZW1lbnRlZCB3aXRoIGFkZGl0aW9u YWwgaGVscCBmcm9tIEV4eW5vcyBJUFAKKEV4eW5vcyBJbWFnZSBQb3N0LVByb2Nlc3Npbmcgc3Vi c3lzdGVtKSB3aXRoIHRlbXBvcmFyeSBmcmFtZWJ1ZmZlcnMuCkJlc2lkZXMgcm90YXRpb24sIHNj YWxpbmcgYW5kIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24gYXJlIGFsc28gc3VwcG9ydGVkLgoKU2ln bmVkLW9mZi1ieTogTWFyZWsgU3p5cHJvd3NraSA8bS5zenlwcm93c2tpQHNhbXN1bmcuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZyAgICAgICAgICAgICAgICB8ICAgOCAr CiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oICAgICAgIHwgICA5ICsKIGRy aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9pcHAuYyAgICAgICB8IDE1NCArKysrKysr KysrLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2lwcC5oICAgICAgIHwgICA0 ICsKIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9wbGFuZS5jICAgICB8ICAyOCAr LQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lX2lwcC5jIHwgMzY5ICsr KysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fcGxhbmVfaXBwLmggfCAgNzMgKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNjQxIGluc2VydGlv bnMoKyksIDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX3BsYW5lX2lwcC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lX2lwcC5oCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9LY29u ZmlnCmluZGV4IDgzZWZjYTk0MTM4OC4uZTdkNDE0YWVmYmRjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vZXh5bm9zL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9LY29u ZmlnCkBAIC0xMDQsNiArMTA0LDE0IEBAIGNvbmZpZyBEUk1fRVhZTk9TX0lQUAogCWhlbHAKIAkg IENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgSVBQIGZlYXR1cmUgZm9yIERS TS4KIAorY29uZmlnIERSTV9FWFlOT1NfUExBTkVfSVBQCisJZGVwZW5kcyBvbiBEUk1fRVhZTk9T X0lQUAorCWJvb2wgIlVzZSBJUFAgZnJhbWV3b3JrIGZvciBpbXBsZW1lbnRpbmcgdW5zdXBwb3J0 ZWQgcGxhbmUgcHJvcGVydGllcyIKKwloZWxwCisJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91 IHdhbnQgdG8gbGV0IElQUCBmcmFtZXdvcmsgdG8gcHJvdmlkZSBwbGFuZQorCSAgcHJvcGVydGll cyAobGlrZSByb3RhdGlvbiwgb3ZlcmxheSBzY2FsaW5nIGFuZCBtb3JlIHBpeGVsIGZvcm1hdHMp LAorCSAgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgYnkgaGFyZHdhcmUgQ1JUQyBkcml2ZXJzLgor CiBjb25maWcgRFJNX0VYWU5PU19GSU1DCiAJYm9vbCAiRklNQyIKIAlkZXBlbmRzIG9uIERSTV9F WFlOT1NfSVBQICYmIE1GRF9TWVNDT04KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlu b3MvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL01ha2VmaWxlCmluZGV4IDY0OTY1 MzJhYWE5MS4uOTJjM2Y3Y2FjN2E5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9z L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvTWFrZWZpbGUKQEAgLTE5LDYg KzE5LDcgQEAgZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfSERNSSkJKz0gZXh5bm9zX2hk bWkubwogZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfVklESSkJKz0gZXh5bm9zX2RybV92 aWRpLm8KIGV4eW5vc2RybS0kKENPTkZJR19EUk1fRVhZTk9TX0cyRCkJKz0gZXh5bm9zX2RybV9n MmQubwogZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfSVBQKQkrPSBleHlub3NfZHJtX2lw cC5vCitleHlub3Nkcm0tJChDT05GSUdfRFJNX0VYWU5PU19QTEFORV9JUFApCSs9IGV4eW5vc19k cm1fcGxhbmVfaXBwLm8KIGV4eW5vc2RybS0kKENPTkZJR19EUk1fRVhZTk9TX0ZJTUMpCSs9IGV4 eW5vc19kcm1fZmltYy5vCiBleHlub3Nkcm0tJChDT05GSUdfRFJNX0VYWU5PU19ST1RBVE9SKQkr PSBleHlub3NfZHJtX3JvdGF0b3IubwogZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfR1ND KQkrPSBleHlub3NfZHJtX2dzYy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9z L2V4eW5vc19kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2 LmgKaW5kZXggNjcwZjZkMDZhMmE5Li5iMTdlNDE5OTM1ZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fZHJ2LmgKQEAgLTcwLDYgKzcwLDEzIEBAIHN0cnVjdCBleHlub3NfZHJt X3BsYW5lX3N0YXRlIHsKIAl1bnNpZ25lZCBpbnQgaF9yYXRpbzsKIAl1bnNpZ25lZCBpbnQgdl9y YXRpbzsKIAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKKwl1bnNpZ25lZCBpbnQgcm90YXRp b247CisKKwl1bnNpZ25lZCBpbnQgaXBwX25lZWRlZDsKKwl1aW50MzJfdCBpcHBfcGl4ZWxfZm9y bWF0OworCXN0cnVjdCBleHlub3NfZHJtX3JlY3QgaXBwX3NyYzsKKwlzdHJ1Y3QgZXh5bm9zX2Ry bV9yZWN0IGlwcF9kc3Q7CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqaXBwX2ZiOwogfTsKIAog c3RhdGljIGlubGluZSBzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0ZSAqCkBAIC05Myw2ICsx MDAsOCBAQCBzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSB7CiAJY29uc3Qgc3RydWN0IGV4eW5vc19k cm1fcGxhbmVfY29uZmlnICpjb25maWc7CiAJdW5zaWduZWQgaW50IHpwb3M7CiAJc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqcGVuZGluZ19mYjsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICppcHBf Y3VyX2ZiOworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmlwcF9uZXh0X2ZiOwogfTsKIAogI2Rl ZmluZSBFWFlOT1NfRFJNX1BMQU5FX0NBUF9ET1VCTEUJKDEgPDwgMCkKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9pcHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV9pcHAuYwppbmRleCA0NGE2Njg5ZTBmNGMuLjIzMWNmYmZlMDM2YyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2lwcC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9pcHAuYwpAQCAtMjAsNiArMjAsNyBA QAogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2V4eW5vc19kcm0uaD4KICNp bmNsdWRlICJleHlub3NfZHJtX2Rydi5oIgorI2luY2x1ZGUgImV4eW5vc19kcm1fZmIuaCIKICNp bmNsdWRlICJleHlub3NfZHJtX2dlbS5oIgogI2luY2x1ZGUgImV4eW5vc19kcm1faXBwLmgiCiAj aW5jbHVkZSAiZXh5bm9zX2RybV9pb21tdS5oIgpAQCAtMTUxMyw3ICsxNTE0LDcgQEAgc3RhdGlj IGludCBpcHBfc2VuZF9ldmVudChzdHJ1Y3QgZXh5bm9zX2RybV9pcHBkcnYgKmlwcGRydiwKIAog CXNwaW5fbG9ja19pcnFzYXZlKCZkcm1fZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CiAJbGlzdF9t b3ZlX3RhaWwoJmUtPmJhc2UubGluaywgJmUtPmJhc2UuZmlsZV9wcml2LT5ldmVudF9saXN0KTsK LQl3YWtlX3VwX2ludGVycnVwdGlibGUoJmUtPmJhc2UuZmlsZV9wcml2LT5ldmVudF93YWl0KTsK Kwl3YWtlX3VwKCZlLT5iYXNlLmZpbGVfcHJpdi0+ZXZlbnRfd2FpdCk7CiAJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZHJtX2Rldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwogCW11dGV4X3VubG9jaygm Y19ub2RlLT5ldmVudF9sb2NrKTsKIApAQCAtMTU3OSw2ICsxNTgwLDE1NyBAQCBlcnJfY29tcGxl dGlvbjoKIAkJY29tcGxldGUoJmNfbm9kZS0+c3RhcnRfY29tcGxldGUpOwogfQogCitzdGF0aWMg c3RydWN0IGRybV9leHlub3NfaXBwX21lbV9ub2RlCisJCSppcHBfZ2V0X2ludGVybmFsX21lbV9u b2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAorCQlzdHJ1Y3QgZHJtX2V4eW5vc19pcHBf Y21kX25vZGUgKmNfbm9kZSwKKwkJX191MzIgcHJvcF9pZCwgZW51bSBkcm1fZXh5bm9zX29wc19p ZCBvcHNfaWQsCisJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQoreworCXN0cnVjdCBkcm1f ZXh5bm9zX2lwcF9tZW1fbm9kZSAqbV9ub2RlOworCXN0cnVjdCBkcm1fZXh5bm9zX2lwcF9idWZf aW5mbyAqYnVmX2luZm87CisJaW50IGk7CisKKwltX25vZGUgPSBremFsbG9jKHNpemVvZigqbV9u b2RlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFtX25vZGUpCisJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOworCisJYnVmX2luZm8gPSAmbV9ub2RlLT5idWZfaW5mbzsKKworCW1fbm9kZS0+b3BzX2lk ID0gb3BzX2lkOworCW1fbm9kZS0+cHJvcF9pZCA9IHByb3BfaWQ7CisJSU5JVF9MSVNUX0hFQUQo Jm1fbm9kZS0+bGlzdCk7CisKKwlEUk1fREVCVUdfS01TKCJtX25vZGVbMHgleF1vcHNfaWRbJWRd cHJvcF9pZFslZF1cbiIsIChpbnQpbV9ub2RlLCBvcHNfaWQsIHByb3BfaWQpOworCisJZm9yX2Vh Y2hfaXBwX3BsYW5hcihpKSB7CisJCWJ1Zl9pbmZvLT5vYmpbaV0gPSBOVUxMOworCQlidWZfaW5m by0+YmFzZVtpXSA9IGV4eW5vc19kcm1fZmJfZG1hX2FkZHIoZmIsIGkpOworCQlidWZfaW5mby0+ c2l6ZVtpXSA9IGZiLT5waXRjaGVzW2ldICogZmItPmhlaWdodDsKKwl9CisKKwltdXRleF9sb2Nr KCZjX25vZGUtPm1lbV9sb2NrKTsKKwlsaXN0X2FkZF90YWlsKCZtX25vZGUtPmxpc3QsICZjX25v ZGUtPm1lbV9saXN0W29wc19pZF0pOworCW11dGV4X3VubG9jaygmY19ub2RlLT5tZW1fbG9jayk7 CisKKwlyZXR1cm4gbV9ub2RlOworfQorCisKK3N0YXRpYyBpbnQgZXh5bm9zX2RybV9pcHBfaW50 ZXJuYWxfZW5xdWV1ZV9idWYoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCisJCV9fdTMyIHBy b3BfaWQsIGVudW0gZHJtX2V4eW5vc19vcHNfaWQgb3BzX2lkLAorCQlzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYikKK3sKKwlzdHJ1Y3QgZHJtX2V4eW5vc19pcHBfY21kX25vZGUgKmNfbm9kZTsK KwlzdHJ1Y3QgZHJtX2V4eW5vc19pcHBfbWVtX25vZGUgKm1fbm9kZTsKKwlpbnQgcmV0OworCXN0 cnVjdCBkcm1fZXh5bm9zX2lwcF9xdWV1ZV9idWYgcWJ1ZiA9IHsKKwkJLm9wc19pZCA9IG9wc19p ZCwKKwkJLmJ1Zl90eXBlID0gSVBQX0JVRl9FTlFVRVVFLAorCQkucHJvcF9pZCA9IHByb3BfaWQs CisJfTsKKworCURSTV9ERUJVR19LTVMoInByb3BfaWRbJWRdb3BzX2lkWyVzXVxuIiwKKwkJcHJv cF9pZCwgb3BzX2lkID8gImRzdCIgOiAic3JjIik7CisKKwljX25vZGUgPSBpcHBfZmluZF9vYmoo JmN0eC0+cHJvcF9pZHIsICZjdHgtPnByb3BfbG9jaywgcHJvcF9pZCk7CisJaWYgKCFjX25vZGUp IHsKKwkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGNvbW1hbmQgbm9kZS5cbiIpOworCQlyZXR1 cm4gLUVOT0RFVjsKKwl9CisKKwltX25vZGUgPSBpcHBfZ2V0X2ludGVybmFsX21lbV9ub2RlKGRy bV9kZXYsIGNfbm9kZSwgcHJvcF9pZCwKKwkJCQkJICAgb3BzX2lkLCBmYik7CisJaWYgKElTX0VS UihtX25vZGUpKSB7CisJCURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBtX25vZGUuXG4iKTsKKwkJ cmV0dXJuIFBUUl9FUlIobV9ub2RlKTsKKwl9CisKKwlpZiAob3BzX2lkID09IEVYWU5PU19EUk1f T1BTX0RTVCkgeworCQlyZXQgPSBpcHBfZ2V0X2V2ZW50KGRybV9kZXYsIGNfbm9kZSwgJnFidWYp OworCQlpZiAocmV0KSB7CisJCQlEUk1fRVJST1IoImZhaWxlZCB0byBnZXQgZXZlbnQuXG4iKTsK KwkJCWdvdG8gZXJyX2NsZWFuX25vZGU7CisJCX0KKworCQlyZXQgPSBpcHBfcXVldWVfYnVmX3dp dGhfcnVuKGNfbm9kZSwgbV9ub2RlLCAmcWJ1Zik7CisJCWlmIChyZXQpIHsKKwkJCURSTV9FUlJP UigiZmFpbGVkIHRvIHJ1biBjb21tYW5kLlxuIik7CisJCQlnb3RvIGVycl9jbGVhbl9ub2RlOwor CQl9CisJfQorCisJcmV0dXJuIDA7CisKK2Vycl9jbGVhbl9ub2RlOgorCURSTV9FUlJPUigiY2xl YW4gbWVtb3J5IG5vZGVzLlxuIik7CisKKwlpcHBfY2xlYW5fcXVldWVfYnVmKGRybV9kZXYsIGNf bm9kZSwgJnFidWYpOworCXJldHVybiByZXQ7Cit9CisKK2ludCBleHlub3NfaXBwX3Byb2Nlc3Nf aW50ZXJuYWwoc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYsCisJc3RydWN0IGRybV9leHlub3Nf aXBwX2NvbmZpZyAqc3JjX2NvbmYsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKnNyY19mYiwKKwlz dHJ1Y3QgZHJtX2V4eW5vc19pcHBfY29uZmlnICpkc3RfY29uZiwgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZHN0X2ZiKQoreworCWludCByZXQ7CisJc3RydWN0IGRybV9leHlub3NfaXBwX3Byb3Bl cnR5IHByb3BlcnR5ID0geworCQkuY29uZmlnID0geworCQkJKnNyY19jb25mLAorCQkJKmRzdF9j b25mLAorCQl9LAorCQkuY21kID0gSVBQX0NNRF9NMk0sCisJfTsKKwlzdHJ1Y3QgZHJtX2V4eW5v c19pcHBfY21kX2N0cmwgY3RybCA9IHsKKwkJLyogLnByb3BfaWQgKi8KKwkJLmN0cmwgPSBJUFBf Q1RSTF9QTEFZLAorCX07CisJc3RydWN0IGRybV9leHlub3NfaXBwX2NtZF9jdHJsIGN0cmxfc3Rv cCA9IHsKKwkJLyogLnByb3BfaWQgKi8KKwkJLmN0cmwgPSBJUFBfQ1RSTF9TVE9QLAorCX07CisJ c3RydWN0IGRybV9maWxlIHZpcnRfZmlsZSA9IHsgfTsKKworCUlOSVRfTElTVF9IRUFEKCZ2aXJ0 X2ZpbGUubGhlYWQpOworCUlOSVRfTElTVF9IRUFEKCZ2aXJ0X2ZpbGUuZmJzKTsKKwltdXRleF9p bml0KCZ2aXJ0X2ZpbGUuZmJzX2xvY2spOworCUlOSVRfTElTVF9IRUFEKCZ2aXJ0X2ZpbGUuYmxv YnMpOworCUlOSVRfTElTVF9IRUFEKCZ2aXJ0X2ZpbGUuZXZlbnRfbGlzdCk7CisJaW5pdF93YWl0 cXVldWVfaGVhZCgmdmlydF9maWxlLmV2ZW50X3dhaXQpOworCXZpcnRfZmlsZS5ldmVudF9zcGFj ZSA9IDQwOTY7CisJdmlydF9maWxlLnVpZCA9IGN1cnJlbnRfZXVpZCgpOworCXZpcnRfZmlsZS5w aWQgPSBnZXRfcGlkKHRhc2tfcGlkKGN1cnJlbnQpKTsKKwl2aXJ0X2ZpbGUuYXV0aGVudGljYXRl ZCA9IGNhcGFibGUoQ0FQX1NZU19BRE1JTik7CisJdmlydF9maWxlLmxvY2tfY291bnQgPSAwOwor CisJcmV0ID0gZXh5bm9zX2RybV9pcHBfc2V0X3Byb3BlcnR5KGRybV9kZXYsICZwcm9wZXJ0eSwg JnZpcnRfZmlsZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWN0cmwucHJvcF9pZCA9 IHByb3BlcnR5LnByb3BfaWQ7CisJY3RybF9zdG9wLnByb3BfaWQgPSBwcm9wZXJ0eS5wcm9wX2lk OworCisJcmV0ID0gZXh5bm9zX2RybV9pcHBfaW50ZXJuYWxfZW5xdWV1ZV9idWYoZHJtX2Rldiwg cHJvcGVydHkucHJvcF9pZCwKKwkJCQkJCSAgRVhZTk9TX0RSTV9PUFNfU1JDLCBzcmNfZmIpOwor CWlmIChyZXQpCisJCWdvdG8gY2xlYW51cDsKKworCXJldCA9IGV4eW5vc19kcm1faXBwX2ludGVy bmFsX2VucXVldWVfYnVmKGRybV9kZXYsIHByb3BlcnR5LnByb3BfaWQsCisJCQkJCQkgIEVYWU5P U19EUk1fT1BTX0RTVCwgZHN0X2ZiKTsKKwlpZiAocmV0KQorCQlnb3RvIGNsZWFudXA7CisKKwly ZXQgPSBleHlub3NfZHJtX2lwcF9jbWRfY3RybChkcm1fZGV2LCAmY3RybCwgJnZpcnRfZmlsZSk7 CisJaWYgKHJldCkKKwkJZ290byBjbGVhbnVwOworCisJd2FpdF9ldmVudCh2aXJ0X2ZpbGUuZXZl bnRfd2FpdCwgIWxpc3RfZW1wdHkoJnZpcnRfZmlsZS5ldmVudF9saXN0KSk7CisKK2NsZWFudXA6 CisJZXh5bm9zX2RybV9pcHBfY21kX2N0cmwoZHJtX2RldiwgJmN0cmxfc3RvcCwgJnZpcnRfZmls ZSk7CisKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgaW50IGlwcF9zdWJkcnZfcHJvYmUoc3Ry dWN0IGRybV9kZXZpY2UgKmRybV9kZXYsIHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3Qg ZXh5bm9zX2RybV9pcHBkcnYgKmlwcGRydjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV9pcHAuaCBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2Ry bV9pcHAuaAppbmRleCAxZGMxM2JmNTdiMTYuLjdlOTU0MzdlZGVjYiAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2lwcC5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9pcHAuaApAQCAtMjQsNiArMjQsMTAgQEAKICNkZWZpbmUgSVBQ X0dFVF9MQ0RfSEVJR0hUCV9JT1IoJ0YnLCAzMDMsIGludCkKICNkZWZpbmUgSVBQX1NFVF9XUklU RUJBQ0sJX0lPVygnRicsIDMwNCwgdTMyKQogCitpbnQgZXh5bm9zX2lwcF9wcm9jZXNzX2ludGVy bmFsKHN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2LAorCXN0cnVjdCBkcm1fZXh5bm9zX2lwcF9j b25maWcgKnNyY19jb25mLCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpzcmNfZmIsCisJc3RydWN0 IGRybV9leHlub3NfaXBwX2NvbmZpZyAqZHN0X2NvbmYsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmRzdF9mYik7CisKIC8qIGRlZmluaXRpb24gb2Ygc3RhdGUgKi8KIGVudW0gZHJtX2V4eW5vc19p cHBfc3RhdGUgewogCUlQUF9TVEFURV9JRExFLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5v c19kcm1fcGxhbmUuYwppbmRleCA4YTEyNDJiNWE5MzguLjM0ZWQxZDZiODE4NCAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX3BsYW5lLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNp bmNsdWRlICJleHlub3NfZHJtX2ZiLmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9nZW0uaCIKICNp bmNsdWRlICJleHlub3NfZHJtX3BsYW5lLmgiCisjaW5jbHVkZSAiZXh5bm9zX2RybV9wbGFuZV9p cHAuaCIKIAogLyoKICAqIFRoaXMgZnVuY3Rpb24gaXMgdG8gZ2V0IFggb3IgWSBzaXplIHNob3du IHZpYSBzY3JlZW4uIFRoaXMgbmVlZHMgbGVuZ3RoIGFuZApAQCAtNTYsNyArNTcsOCBAQCBzdGF0 aWMgaW50IGV4eW5vc19wbGFuZV9nZXRfc2l6ZShpbnQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwg dW5zaWduZWQgbGFzdCkKIAlyZXR1cm4gc2l6ZTsKIH0KIAotc3RhdGljIHZvaWQgZXh5bm9zX3Bs YW5lX21vZGVfc2V0KHN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0YXRlICpleHlub3Nfc3RhdGUp CitzdGF0aWMgdm9pZCBleHlub3NfcGxhbmVfbW9kZV9zZXQoc3RydWN0IGV4eW5vc19kcm1fcGxh bmVfc3RhdGUgKmV4eW5vc19zdGF0ZSwKKwkJCQkgIGNvbnN0IHN0cnVjdCBleHlub3NfZHJtX3Bs YW5lX2NvbmZpZyAqY29uZmlnKQogCiB7CiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUg PSAmZXh5bm9zX3N0YXRlLT5iYXNlOwpAQCAtODUsNiArODcsOSBAQCBzdGF0aWMgdm9pZCBleHlu b3NfcGxhbmVfbW9kZV9zZXQoc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3RhdGUgKmV4eW5vc19z dGF0ZSkKIAlzcmNfdyA9IHN0YXRlLT5zcmNfdyA+PiAxNjsKIAlzcmNfaCA9IHN0YXRlLT5zcmNf aCA+PiAxNjsKIAorCWV4eW5vc19wbGFuZV9pcHBfc2V0dXAoZXh5bm9zX3N0YXRlLCBjb25maWcs ICZzcmNfeCwgJnNyY195LCAmc3JjX3csCisJCQkgICAgICAgJnNyY19oLCAmY3J0Y193LCAmY3J0 Y19oKTsKKwogCS8qIHNldCByYXRpbyAqLwogCWV4eW5vc19zdGF0ZS0+aF9yYXRpbyA9IChzcmNf dyA8PCAxNikgLyBjcnRjX3c7CiAJZXh5bm9zX3N0YXRlLT52X3JhdGlvID0gKHNyY19oIDw8IDE2 KSAvIGNydGNfaDsKQEAgLTE2Myw2ICsxNjgsMTMgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RybV9w bGFuZV9kZXN0cm95X3N0YXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogewogCXN0cnVjdCBl eHlub3NfZHJtX3BsYW5lX3N0YXRlICpvbGRfZXh5bm9zX3N0YXRlID0KIAkJCQkJdG9fZXh5bm9z X3BsYW5lX3N0YXRlKG9sZF9zdGF0ZSk7CisJc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKmV4eW5v c19wbGFuZSA9IHRvX2V4eW5vc19wbGFuZShwbGFuZSk7CisJLyoKKwkgKiBUaGlzIGlzIHRoZSBv bmx5IHBsYWNlIGluIHRoZSBjb2RlLCB3aGVyZSBhbGwgdGVtcG9yYXJ5IG9iamVjdHMKKwkgKiB1 c2VkIGZvciBwcm9jZXNzaW5nIGFyZSBubyBsb25nZXIgdXNlZCBhbmQgY2FuIGJlIGZyZWVkLgor CSAqLworCWV4eW5vc19wbGFuZV9pcHBfY2xlYW51cChleHlub3NfcGxhbmUsIG9sZF9leHlub3Nf c3RhdGUpOworCiAJX19kcm1fYXRvbWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKHBsYW5l LCBvbGRfc3RhdGUpOwogCWtmcmVlKG9sZF9leHlub3Nfc3RhdGUpOwogfQpAQCAtMTc0LDYgKzE4 Niw3IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGV4eW5vc19wbGFuZV9mdW5jcyA9 IHsKIAkucmVzZXQJCT0gZXh5bm9zX2RybV9wbGFuZV9yZXNldCwKIAkuYXRvbWljX2R1cGxpY2F0 ZV9zdGF0ZSA9IGV4eW5vc19kcm1fcGxhbmVfZHVwbGljYXRlX3N0YXRlLAogCS5hdG9taWNfZGVz dHJveV9zdGF0ZSA9IGV4eW5vc19kcm1fcGxhbmVfZGVzdHJveV9zdGF0ZSwKKwkuc2V0X3Byb3Bl cnR5ID0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfc2V0X3Byb3BlcnR5LAogfTsKIAogc3RhdGlj IGludApAQCAtMjE4LDE2ICsyMzEsMjEgQEAgc3RhdGljIGludCBleHlub3NfcGxhbmVfYXRvbWlj X2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQlyZXR1cm4gMDsKIAogCS8qIHRyYW5z bGF0ZSBzdGF0ZSBpbnRvIGV4eW5vc19zdGF0ZSAqLwotCWV4eW5vc19wbGFuZV9tb2RlX3NldChl eHlub3Nfc3RhdGUpOworCWV4eW5vc19wbGFuZV9tb2RlX3NldChleHlub3Nfc3RhdGUsIGV4eW5v c19wbGFuZS0+Y29uZmlnKTsKIAogCXJldCA9IGV4eW5vc19kcm1fcGxhbmVfY2hlY2tfc2l6ZShl eHlub3NfcGxhbmUtPmNvbmZpZywgZXh5bm9zX3N0YXRlKTsKLQlyZXR1cm4gcmV0OworCWlmIChy ZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gZXh5bm9zX3BsYW5lX2lwcF9jaGVjayhleHlu b3NfcGxhbmUsIGV4eW5vc19zdGF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGV4eW5vc19wbGFuZV9h dG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAogCQkJCSAgICAgICBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq c3RhdGUgPSBwbGFuZS0+c3RhdGU7CisJc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3RhdGUgKmV4 eW5vc19zdGF0ZSA9CisJCQkJCQl0b19leHlub3NfcGxhbmVfc3RhdGUoc3RhdGUpOwogCXN0cnVj dCBleHlub3NfZHJtX2NydGMgKmV4eW5vc19jcnRjID0gdG9fZXh5bm9zX2NydGMoc3RhdGUtPmNy dGMpOwogCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmUgPSB0b19leHlub3Nf cGxhbmUocGxhbmUpOwogCkBAIC0yMzcsNiArMjU1LDggQEAgc3RhdGljIHZvaWQgZXh5bm9zX3Bs YW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJcGxhbmUtPmNydGMg PSBzdGF0ZS0+Y3J0YzsKIAlleHlub3NfcGxhbmUtPnBlbmRpbmdfZmIgPSBzdGF0ZS0+ZmI7CiAK KwlleHlub3NfcGxhbmVfaXBwX3VwZGF0ZShleHlub3NfcGxhbmUsIGV4eW5vc19zdGF0ZSk7CisK IAlpZiAoZXh5bm9zX2NydGMtPm9wcy0+dXBkYXRlX3BsYW5lKQogCQlleHlub3NfY3J0Yy0+b3Bz LT51cGRhdGVfcGxhbmUoZXh5bm9zX2NydGMsIGV4eW5vc19wbGFuZSk7CiB9CkBAIC0zMDgsNSAr MzI4LDUgQEAgaW50IGV4eW5vc19wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CWV4eW5vc19wbGFuZV9hdHRhY2hfenBvc19wcm9wZXJ0eSgmZXh5bm9zX3BsYW5lLT5iYXNlLAog CQkJCQkJICBjb25maWctPnpwb3MpOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuIGV4eW5vc19wbGFu ZV9pcHBfaW5pdChkZXYsIGV4eW5vc19wbGFuZSk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxhbmVfaXBwLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fcGxhbmVfaXBwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi4zMDg2ZmQyOWY0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9k cm0vZXh5bm9zL2V4eW5vc19kcm1fcGxhbmVfaXBwLmMKQEAgLTAsMCArMSwzNjkgQEAKKy8qCisg KiBDb3B5cmlnaHQgKEMpIDIwMTUgU2Ftc3VuZyBFbGVjdHJvbmljcyBDby5MdGQKKyAqIEF1dGhv cnM6IE1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFu ZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCisg KiBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqLworCisjaW5jbHVkZSA8ZHJtL2Ry bVAuaD4KKworI2luY2x1ZGUgPGRybS9leHlub3NfZHJtLmg+CisjaW5jbHVkZSAiZXh5bm9zX2Ry bV9kcnYuaCIKKyNpbmNsdWRlICJleHlub3NfZHJtX2ZiLmgiCisjaW5jbHVkZSAiZXh5bm9zX2Ry bV9nZW0uaCIKKyNpbmNsdWRlICJleHlub3NfZHJtX2lwcC5oIgorI2luY2x1ZGUgImV4eW5vc19k cm1fcGxhbmUuaCIKKyNpbmNsdWRlICJleHlub3NfZHJtX3BsYW5lX2lwcC5oIgorI2luY2x1ZGUg ImV4eW5vc19kcm1faW9tbXUuaCIKKworc3RhdGljIHVpbnQzMl90IHByZWZlcnJlZF9mb3JtYXRz W10gPSB7CisJRFJNX0ZPUk1BVF9YUkdCODg4OCwKKwlEUk1fRk9STUFUX1JHQjU2NSwKKwlEUk1f Rk9STUFUX05WMTIsCit9OworCitzdGF0aWMgdWludDMyX3Qgc3VwcG9ydGVkX2Zvcm1hdHNbXSA9 IHsKKwlEUk1fRk9STUFUX1JHQjU2NSwKKwlEUk1fRk9STUFUX1hSR0I4ODg4LAorCURSTV9GT1JN QVRfWVVZViwKKwlEUk1fRk9STUFUX1lWWVUsCisJRFJNX0ZPUk1BVF9VWVZZLAorCURSTV9GT1JN QVRfVllVWSwKKwlEUk1fRk9STUFUX05WMTIsCisJRFJNX0ZPUk1BVF9OVjE2LAorCURSTV9GT1JN QVRfTlYyMSwKKwlEUk1fRk9STUFUX05WNjEsCisJRFJNX0ZPUk1BVF9ZVVY0MjIsCisJRFJNX0ZP Uk1BVF9ZVVY0MjAsCisJRFJNX0ZPUk1BVF9ZVlU0MjAsCit9OworCitzdGF0aWMgYm9vbAorZXh5 bm9zX3BsYW5lX2NoZWNrX2Zvcm1hdChjb25zdCBzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9jb25m aWcgKmNvbmZpZywKKwkJCSAgICAgICB1aW50MzJfdCBmb3JtYXQpCit7CisJaW50IGk7CisKKwlm b3IgKGkgPSAwOyBpIDwgY29uZmlnLT5udW1fcGl4ZWxfZm9ybWF0czsgaSsrKQorCQlpZiAoY29u ZmlnLT5waXhlbF9mb3JtYXRzW2ldID09IGZvcm1hdCkKKwkJCXJldHVybiB0cnVlOworCXJldHVy biBmYWxzZTsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmV4eW5vc19wbGFu ZV9pcHBfYWxsb2NfZmIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkJc3RydWN0IGV4eW5v c19kcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBleHlub3NfZHJtX2dlbSAqZXh5 bm9zX2dlbVtNQVhfRkJfQlVGRkVSXSA9IHsgTlVMTCB9OworCXN0cnVjdCBkcm1fbW9kZV9mYl9j bWQyIG1vZGVfY21kID0geyAwIH07CisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CisJdW5z aWduZWQgaW50IHNpemU7CisJdW5zaWduZWQgaW50IGZsYWdzOworCWludCBpLCBjcHA7CisJaW50 IG51bV9wbGFuZXMgPSBkcm1fZm9ybWF0X251bV9wbGFuZXMoc3RhdGUtPmlwcF9waXhlbF9mb3Jt YXQpOworCWludCByZXQgPSAwOworCisKKwlpZiAoaXNfZHJtX2lvbW11X3N1cHBvcnRlZChkZXYp KQorCQlmbGFncyA9IEVYWU5PU19CT19OT05DT05USUcgfCBFWFlOT1NfQk9fV0M7CisJZWxzZQor CQlmbGFncyA9IEVYWU5PU19CT19DT05USUcgfCBFWFlOT1NfQk9fV0M7CisKKwltb2RlX2NtZC53 aWR0aCA9IHN0YXRlLT5pcHBfZHN0LnggKyBzdGF0ZS0+aXBwX2RzdC53OworCW1vZGVfY21kLmhl aWdodCA9IHN0YXRlLT5pcHBfZHN0LnkgKyBzdGF0ZS0+aXBwX2RzdC5oOworCW1vZGVfY21kLnBp eGVsX2Zvcm1hdCA9IHN0YXRlLT5pcHBfcGl4ZWxfZm9ybWF0OworCisJZm9yIChpID0gMDsgaSA8 IG51bV9wbGFuZXM7IGkrKykgeworCQljcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChzdGF0ZS0+ aXBwX3BpeGVsX2Zvcm1hdCwgaSk7CisJCW1vZGVfY21kLnBpdGNoZXNbaV0gPSByb3VuZHVwKG1v ZGVfY21kLndpZHRoLAorCQkJCQlFWFlOT1NfRFJNX1BJVENIX0FMSUdOKSAqIGNwcDsKKwkJbW9k ZV9jbWQub2Zmc2V0c1tpXSA9IDA7CisJCXNpemUgPSBtb2RlX2NtZC5oZWlnaHQgKiBtb2RlX2Nt ZC5waXRjaGVzW2ldOworCQlleHlub3NfZ2VtW2ldID0gZXh5bm9zX2RybV9nZW1fY3JlYXRlKGRl diwgZmxhZ3MsIHNpemUpOworCQlpZiAoSVNfRVJSKGV4eW5vc19nZW1baV0pKSB7CisJCQlyZXQg PSBQVFJfRVJSKGV4eW5vc19nZW1baV0pOworCQkJZ290byBlcnJfZnJlZTsKKwkJfQorCX0KKwor CWZiID0gZXh5bm9zX2RybV9mcmFtZWJ1ZmZlcl9pbml0KGRldiwgJm1vZGVfY21kLCBleHlub3Nf Z2VtLCBudW1fcGxhbmVzKTsKKwlpZiAoSVNfRVJSKGZiKSkgeworCQlyZXQgPSBQVFJfRVJSKGZi KTsKKwkJZ290byBlcnJfZnJlZTsKKwl9CisKKwlyZXR1cm4gZmI7CisKK2Vycl9mcmVlOgorCWZv ciAoO2kgPj0gMDsgaS0tKQorCQlleHlub3NfZHJtX2dlbV9kZXN0cm95KGV4eW5vc19nZW1baV0p OworCXJldHVybiBFUlJfUFRSKHJldCk7Cit9CisKK3N0YXRpYyBib29sIGV4eW5vc19wbGFuZV9p cHBfY2hlY2tfZmIoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqaXBwX2ZiLAorCQkJCXN0cnVjdCBl eHlub3NfZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPmlwcF9kc3QueCAr IHN0YXRlLT5pcHBfZHN0LncgPD0gaXBwX2ZiLT53aWR0aCAmJgorCSAgICBzdGF0ZS0+aXBwX2Rz dC55ICsgc3RhdGUtPmlwcF9kc3QuaCA8PSBpcHBfZmItPmhlaWdodCAmJgorCSAgICBzdGF0ZS0+ YmFzZS5mYi0+cGl4ZWxfZm9ybWF0ID09IGlwcF9mYi0+cGl4ZWxfZm9ybWF0KQorCQlyZXR1cm4g dHJ1ZTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBpbnQgZXh5bm9zX3BsYW5lX2lwcF90 cmFuc2Zvcm0oc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3RhdGUgKnN0YXRlKQoreworCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKnNyY19mYiA9IHN0YXRlLT5iYXNlLmZiOworCXN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmRzdF9mYiA9IHN0YXRlLT5pcHBfZmI7CisJc3RydWN0IGRybV9leHlub3Nf aXBwX2NvbmZpZyBzcmNfY29uZmlnID0geworCQkub3BzX2lkID0gRVhZTk9TX0RSTV9PUFNfU1JD LAorCQkuc3ogPSB7CisJCQkuaHNpemUgPSBzcmNfZmItPnBpdGNoZXNbMF0gLworCQkJCWRybV9m b3JtYXRfcGxhbmVfY3BwKHNyY19mYi0+cGl4ZWxfZm9ybWF0LCAwKSwKKwkJCS52c2l6ZSA9IHNy Y19mYi0+aGVpZ2h0LAorCQl9LAorCQkuZm10ID0gc3JjX2ZiLT5waXhlbF9mb3JtYXQsCisJCS5w b3MgPSB7CisJCQkueCA9IHN0YXRlLT5pcHBfc3JjLngsCisJCQkueSA9IHN0YXRlLT5pcHBfc3Jj LnksCisJCQkudyA9IHN0YXRlLT5pcHBfc3JjLncsCisJCQkuaCA9IHN0YXRlLT5pcHBfc3JjLmgs CisJCX0sCisJfTsKKwlzdHJ1Y3QgZHJtX2V4eW5vc19pcHBfY29uZmlnIGRzdF9jb25maWcgPSB7 CisJCS5zeiA9IHsKKwkJCS5oc2l6ZSA9IGRzdF9mYi0+cGl0Y2hlc1swXSAvCisJCQkJZHJtX2Zv cm1hdF9wbGFuZV9jcHAoZHN0X2ZiLT5waXhlbF9mb3JtYXQsIDApLAorCQkJLnZzaXplID0gZHN0 X2ZiLT5oZWlnaHQsCisJCX0sCisJCS5mbXQgPSBkc3RfZmItPnBpeGVsX2Zvcm1hdCwKKwkJLnBv cyA9IHsKKwkJCS54ID0gc3RhdGUtPmlwcF9kc3QueCwKKwkJCS55ID0gc3RhdGUtPmlwcF9kc3Qu eSwKKwkJCS53ID0gc3RhdGUtPmlwcF9kc3QudywKKwkJCS5oID0gc3RhdGUtPmlwcF9kc3QuaCwK KwkJfSwKKwl9OworCWludCBkZWdyZWUgPSAwLCBmbGlwID0gMDsKKworCWlmIChzdGF0ZS0+cm90 YXRpb24gJiBCSVQoRFJNX1JPVEFURV8xODApKQorCQlkZWdyZWUgPSBFWFlOT1NfRFJNX0RFR1JF RV8xODA7CisJZWxzZSBpZiAoc3RhdGUtPnJvdGF0aW9uICYgQklUKERSTV9ST1RBVEVfOTApKQor CQlkZWdyZWUgPSBFWFlOT1NfRFJNX0RFR1JFRV85MDsKKwllbHNlIGlmIChzdGF0ZS0+cm90YXRp b24gJiBCSVQoRFJNX1JPVEFURV8yNzApKQorCQlkZWdyZWUgPSBFWFlOT1NfRFJNX0RFR1JFRV8y NzA7CisKKwlpZiAoc3RhdGUtPnJvdGF0aW9uICYgQklUKERSTV9SRUZMRUNUX1gpKQorCQlmbGlw IHw9IEVYWU5PU19EUk1fRkxJUF9IT1JJWk9OVEFMOworCWlmIChzdGF0ZS0+cm90YXRpb24gJiBC SVQoRFJNX1JFRkxFQ1RfWSkpCisJCWZsaXAgfD0gRVhZTk9TX0RSTV9GTElQX1ZFUlRJQ0FMOwor CisJZHN0X2NvbmZpZy5mbGlwID0gZmxpcDsKKwlkc3RfY29uZmlnLmRlZ3JlZSA9IGRlZ3JlZTsK KworCXJldHVybiBleHlub3NfaXBwX3Byb2Nlc3NfaW50ZXJuYWwoc3JjX2ZiLT5kZXYsICZzcmNf Y29uZmlnLCBzcmNfZmIsCisJCQkJCSAgICZkc3RfY29uZmlnLCBkc3RfZmIpOworfQorCit2b2lk IGV4eW5vc19wbGFuZV9pcHBfc2V0dXAoc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3RhdGUgKnN0 YXRlLAorCQkJICAgIGNvbnN0IHN0cnVjdCBleHlub3NfZHJtX3BsYW5lX2NvbmZpZyAqY29uZmln LAorCQkJICAgIHVuc2lnbmVkIGludCAqc3JjX3gsIHVuc2lnbmVkIGludCAqc3JjX3ksCisJCQkg ICAgdW5zaWduZWQgaW50ICpzcmNfdywgdW5zaWduZWQgaW50ICpzcmNfaCwKKwkJCSAgICB1bnNp Z25lZCBpbnQgKmNydGNfdywgdW5zaWduZWQgaW50ICpjcnRjX2gpCit7CisJaW50IHJvdGF0aW9u ID0gc3RhdGUtPmJhc2Uucm90YXRpb247CisJaW50IHByZV94LCBwcmVfeSwgcG9zdF94LCBwb3N0 X3k7CisJaW50IGk7CisJYm9vbCBzdXBwb3J0ZWRfcGl4ZWxfZm9ybWF0ID0KKwkJZXh5bm9zX3Bs YW5lX2NoZWNrX2Zvcm1hdChjb25maWcsIHN0YXRlLT5iYXNlLmZiLT5waXhlbF9mb3JtYXQpOwor CisJc3RhdGUtPnJvdGF0aW9uID0gcm90YXRpb247CisKKwkvKiBjaGVjayBpZiBpcHAgaXMgcmVh bGx5IG5lZWRlZCAqLworCWlmIChyb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8wKSAmJiBzdXBw b3J0ZWRfcGl4ZWxfZm9ybWF0ICYmCisJICAgICgqc3JjX3cgPT0gKmNydGNfdyB8fAorCSAgICAg KChjb25maWctPmNhcGFiaWxpdGllcyAmIEVYWU5PU19EUk1fUExBTkVfQ0FQX0RPVUJMRSkgJiYK KwkgICAgICAgKnNyY193ICogMiA9PSAqY3J0Y193KSB8fAorCSAgICAgIGNvbmZpZy0+Y2FwYWJp bGl0aWVzICYgRVhZTk9TX0RSTV9QTEFORV9DQVBfU0NBTEUpICYmCisJICAgICgqc3JjX2ggPT0g KmNydGNfaCB8fAorCSAgICAgKChjb25maWctPmNhcGFiaWxpdGllcyAmIEVYWU5PU19EUk1fUExB TkVfQ0FQX0RPVUJMRSkgJiYKKwkgICAgICAgKnNyY19oICogMiA9PSAqY3J0Y19oKSB8fAorCSAg ICAgIGNvbmZpZy0+Y2FwYWJpbGl0aWVzICYgRVhZTk9TX0RSTV9QTEFORV9DQVBfU0NBTEUpKQor CQlyZXR1cm47CisKKwlzdGF0ZS0+aXBwX25lZWRlZCA9IHRydWU7CisKKwlzdGF0ZS0+aXBwX3Bp eGVsX2Zvcm1hdCA9IHN0YXRlLT5iYXNlLmZiLT5waXhlbF9mb3JtYXQ7CisJaWYgKCFzdXBwb3J0 ZWRfcGl4ZWxfZm9ybWF0KSB7CisJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHByZWZlcnJl ZF9mb3JtYXRzKTsgaSsrKQorCQkJaWYgKGV4eW5vc19wbGFuZV9jaGVja19mb3JtYXQoY29uZmln LAorCQkJCQkJICAgICAgcHJlZmVycmVkX2Zvcm1hdHNbaV0pKSB7CisJCQkJc3RhdGUtPmlwcF9w aXhlbF9mb3JtYXQgPSBwcmVmZXJyZWRfZm9ybWF0c1tpXTsKKwkJCQlicmVhazsKKwkJCX0KKwl9 CisKKwlzdGF0ZS0+aXBwX3NyYy54ID0gcm91bmRkb3duKCpzcmNfeCwgRVhZTk9TX0RSTV9QSVRD SF9BTElHTik7CisJc3RhdGUtPmlwcF9zcmMueSA9IHJvdW5kZG93bigqc3JjX3ksIEVYWU5PU19E Uk1fUElUQ0hfQUxJR04pOworCXN0YXRlLT5pcHBfZHN0LnggPSAwOworCXN0YXRlLT5pcHBfZHN0 LnkgPSAwOworCisJcHJlX3ggPSAqc3JjX3ggJiAoRVhZTk9TX0RSTV9QSVRDSF9BTElHTiAtIDEp OworCXByZV95ID0gKnNyY195ICYgKEVYWU5PU19EUk1fUElUQ0hfQUxJR04gLSAxKTsKKworCXN0 YXRlLT5pcHBfc3JjLncgPSByb3VuZHVwKCpzcmNfdyArIHByZV94LCBFWFlOT1NfRFJNX1BJVENI X0FMSUdOKTsKKwlzdGF0ZS0+aXBwX3NyYy5oID0gcm91bmR1cCgqc3JjX2ggKyBwcmVfeSwgRVhZ Tk9TX0RSTV9QSVRDSF9BTElHTik7CisJaWYgKHN0YXRlLT5pcHBfc3JjLncgPiBzdGF0ZS0+YmFz ZS5mYi0+cGl0Y2hlc1swXSkKKwkJc3RhdGUtPmlwcF9zcmMudyA9IHN0YXRlLT5iYXNlLmZiLT5w aXRjaGVzWzBdOworCWlmIChzdGF0ZS0+aXBwX3NyYy5oID4gc3RhdGUtPmJhc2UuZmItPmhlaWdo dCkKKwkJc3RhdGUtPmlwcF9zcmMuaCA9IHN0YXRlLT5iYXNlLmZiLT5oZWlnaHQ7CisKKwlzdGF0 ZS0+aXBwX2RzdC53ID0gc3RhdGUtPmlwcF9zcmMudzsKKwlzdGF0ZS0+aXBwX2RzdC5oID0gc3Rh dGUtPmlwcF9zcmMuaDsKKworCXBvc3RfeCA9IHN0YXRlLT5pcHBfc3JjLncgLSBwcmVfeCAtICpz cmNfdzsKKwlwb3N0X3kgPSBzdGF0ZS0+aXBwX3NyYy5oIC0gcHJlX3kgLSAqc3JjX2g7CisKKwlp ZiAocm90YXRpb24gJiBCSVQoRFJNX1JFRkxFQ1RfWSkpCisJCXN3YXAocHJlX3ksIHBvc3RfeSk7 CisKKwlpZiAocm90YXRpb24gJiBCSVQoRFJNX1JFRkxFQ1RfWCkpCisJCXN3YXAocHJlX3gsIHBv c3RfeCk7CisKKwlzd2l0Y2ggKHJvdGF0aW9uICYgMHhmKSB7CisJY2FzZSBCSVQoRFJNX1JPVEFU RV8wKToKKwkJKnNyY194ID0gcHJlX3g7CisJCSpzcmNfeSA9IHByZV95OworCQlicmVhazsKKwlj YXNlIEJJVChEUk1fUk9UQVRFXzkwKToKKwkJKnNyY194ID0gcG9zdF95OworCQkqc3JjX3kgPSBw cmVfeDsKKwkJc3dhcCgqc3JjX3csICpzcmNfaCk7CisJCXN3YXAoc3RhdGUtPmlwcF9kc3Qudywg c3RhdGUtPmlwcF9kc3QuaCk7CisJCWJyZWFrOworCWNhc2UgQklUKERSTV9ST1RBVEVfMTgwKToK KwkJKnNyY194ID0gcG9zdF94OworCQkqc3JjX3kgPSBwb3N0X3k7CisJCWJyZWFrOworCWNhc2Ug QklUKERSTV9ST1RBVEVfMjcwKToKKwkJKnNyY194ID0gcHJlX3k7CisJCSpzcmNfeSA9IHBvc3Rf eDsKKwkJc3dhcCgqc3JjX3csICpzcmNfaCk7CisJCXN3YXAoc3RhdGUtPmlwcF9kc3Qudywgc3Rh dGUtPmlwcF9kc3QuaCk7CisJCWJyZWFrOworCX0KKworCS8qIGFwcGx5IHNjYWxsaW5nICovCisJ c3RhdGUtPmlwcF9kc3QudyA9IHN0YXRlLT5pcHBfZHN0LncgKiAqY3J0Y193IC8gKnNyY193Owor CXN0YXRlLT5pcHBfZHN0LmggPSBzdGF0ZS0+aXBwX2RzdC5oICogKmNydGNfaCAvICpzcmNfaDsK KworCSpzcmNfeCA9ICpzcmNfeCAqICpjcnRjX3cgLyAqc3JjX3c7CisJKnNyY195ID0gKnNyY195 ICogKmNydGNfaCAvICpzcmNfaDsKKwkqc3JjX3cgPSAqY3J0Y193OworCSpzcmNfaCA9ICpjcnRj X2g7Cit9CisKK2ludCBleHlub3NfcGxhbmVfaXBwX2NoZWNrKHN0cnVjdCBleHlub3NfZHJtX3Bs YW5lICpwbGFuZSwKKwkJCSAgIHN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkK K3sKKwlpZiAoIXN0YXRlLT5pcHBfbmVlZGVkKQorCQlyZXR1cm4gMDsKKworCS8qIGNoZWNrIGlm IGN1cnJlbnRseSBhbGxvY2F0ZWQgaXBwIGZiIGNhbiBiZSByZXVzZWQgKi8KKwlpZiAocGxhbmUt PmlwcF9uZXh0X2ZiICYmCisJCSFleHlub3NfcGxhbmVfaXBwX2NoZWNrX2ZiKHBsYW5lLT5pcHBf bmV4dF9mYiwgc3RhdGUpKSB7CisJCWRybV9mcmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShwbGFuZS0+ aXBwX25leHRfZmIpOworCQlwbGFuZS0+aXBwX25leHRfZmIgPSBOVUxMOworCX0KKworCS8qIGFs bG9jYXRlIG5ldyBpcHAgZmIgKi8KKwlpZiAoIXBsYW5lLT5pcHBfbmV4dF9mYikgeworCQlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICppcHBfZmI7CisKKwkJaXBwX2ZiID0gZXh5bm9zX3BsYW5lX2lw cF9hbGxvY19mYihwbGFuZS0+YmFzZS5kZXYsIHN0YXRlKTsKKwkJaWYgKElTX0VSUihpcHBfZmIp KQorCQkJcmV0dXJuIFBUUl9FUlIoaXBwX2ZiKTsKKwkJcGxhbmUtPmlwcF9uZXh0X2ZiID0gaXBw X2ZiOworCX0KKworCXN0YXRlLT5mYiA9IHN0YXRlLT5pcHBfZmIgPSBwbGFuZS0+aXBwX25leHRf ZmI7CisKKwkvKiBwZXJmb3JtIHRyYW5zZm9ybWF0aW9uICovCisJcmV0dXJuIGV4eW5vc19wbGFu ZV9pcHBfdHJhbnNmb3JtKHN0YXRlKTsKK30KKwordm9pZCBleHlub3NfcGxhbmVfaXBwX3VwZGF0 ZShzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgIHN0cnVjdCBleHlub3Nf ZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKK3sKKwlpZiAoIXN0YXRlLT5pcHBfbmVlZGVkKQorCQly ZXR1cm47CisKKwlpZiAocGxhbmUtPmlwcF9uZXh0X2ZiKQorCQlzd2FwKHBsYW5lLT5pcHBfbmV4 dF9mYiwgcGxhbmUtPmlwcF9jdXJfZmIpOworfQorCit2b2lkIGV4eW5vc19wbGFuZV9pcHBfY2xl YW51cChzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgICBzdHJ1Y3QgZXh5 bm9zX2RybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKQoreworCXN0cnVjdCBleHlub3NfZHJtX3Bs YW5lX3N0YXRlICpzdGF0ZTsKKworCS8qIGdldCBjdXJyZW50IHBsYW5lIHN0YXRlICovCisJc3Rh dGUgPSB0b19leHlub3NfcGxhbmVfc3RhdGUocGxhbmUtPmJhc2Uuc3RhdGUpOworCisJaWYgKCFz dGF0ZS0+aXBwX25lZWRlZCkgeworCQlpZiAocGxhbmUtPmlwcF9jdXJfZmIpIHsKKwkJCWRybV9m cmFtZWJ1ZmZlcl91bnJlZmVyZW5jZShwbGFuZS0+aXBwX2N1cl9mYik7CisJCQlwbGFuZS0+aXBw X2N1cl9mYiA9IE5VTEw7CisJCX0KKwkJaWYgKHBsYW5lLT5pcHBfbmV4dF9mYikgeworCQkJZHJt X2ZyYW1lYnVmZmVyX3VucmVmZXJlbmNlKHBsYW5lLT5pcHBfbmV4dF9mYik7CisJCQlwbGFuZS0+ aXBwX25leHRfZmIgPSBOVUxMOworCQl9CisJfQorfQorCitpbnQgZXh5bm9zX3BsYW5lX2lwcF9p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkgIHN0cnVjdCBleHlub3NfZHJtX3BsYW5l ICpwbGFuZSkKK3sKKwlpbnQgaSwgaiwgbnVtX2Zvcm1hdHMsIGlwcF9mb3JtYXRzID0gMDsKKwl1 aW50MzJfdCAqZm9ybWF0czsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHN1cHBvcnRl ZF9mb3JtYXRzKTsgaSsrKQorCQlpZiAoIWV4eW5vc19wbGFuZV9jaGVja19mb3JtYXQocGxhbmUt PmNvbmZpZywKKwkJCQkJICAgICAgIHN1cHBvcnRlZF9mb3JtYXRzW2ldKSkKKwkJCWlwcF9mb3Jt YXRzKys7CisKKwludW1fZm9ybWF0cyA9IHBsYW5lLT5jb25maWctPm51bV9waXhlbF9mb3JtYXRz ICsgaXBwX2Zvcm1hdHM7CisJZm9ybWF0cyA9IGttYWxsb2NfYXJyYXkobnVtX2Zvcm1hdHMsIHNp emVvZih1aW50MzJfdCksIEdGUF9LRVJORUwpOworCWlmICghZm9ybWF0cykKKwkJcmV0dXJuIC1F Tk9NRU07CisKKwltZW1jcHkoZm9ybWF0cywgcGxhbmUtPmNvbmZpZy0+cGl4ZWxfZm9ybWF0cywK KwkgICAgICAgcGxhbmUtPmNvbmZpZy0+bnVtX3BpeGVsX2Zvcm1hdHMgKiBzaXplb2YodWludDMy X3QpKTsKKwlqID0gcGxhbmUtPmNvbmZpZy0+bnVtX3BpeGVsX2Zvcm1hdHM7CisKKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShzdXBwb3J0ZWRfZm9ybWF0cyk7IGkrKykKKwkJaWYgKCFleHlu b3NfcGxhbmVfY2hlY2tfZm9ybWF0KHBsYW5lLT5jb25maWcsCisJCQkJCSAgICAgICBzdXBwb3J0 ZWRfZm9ybWF0c1tpXSkpCisJCQlmb3JtYXRzW2orK10gPSBzdXBwb3J0ZWRfZm9ybWF0c1tpXTsK KworCWtmcmVlKHBsYW5lLT5iYXNlLmZvcm1hdF90eXBlcyk7CisJcGxhbmUtPmJhc2UuZm9ybWF0 X3R5cGVzID0gZm9ybWF0czsKKwlwbGFuZS0+YmFzZS5mb3JtYXRfY291bnQgPSBudW1fZm9ybWF0 czsKKworCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKKwkJZGV2LT5t b2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9CisJCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRp b25fcHJvcGVydHkoZGV2LAorCQkJCUJJVChEUk1fUk9UQVRFXzApIHwgQklUKERSTV9ST1RBVEVf OTApIHwKKwkJCQlCSVQoRFJNX1JPVEFURV8xODApIHwgQklUKERSTV9ST1RBVEVfMjcwKSB8CisJ CQkJQklUKERSTV9SRUZMRUNUX1gpIHwgQklUKERSTV9SRUZMRUNUX1kpKTsKKworCWlmIChkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQorCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9w ZXJ0eSgmcGxhbmUtPmJhc2UuYmFzZSwKKwkJCQkJICAgZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlv bl9wcm9wZXJ0eSwKKwkJCQkJICAgQklUKERSTV9ST1RBVEVfMCkpOworCisJcmV0dXJuIDA7Cit9 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxhbmVfaXBw LmggYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxhbmVfaXBwLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NGI3ZjJjNTM4MjkKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fcGxhbmVfaXBwLmgK QEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBTYW1zdW5nIEVsZWN0 cm9uaWNzIENvLkx0ZAorICogQXV0aG9yczogTWFyZWsgU3p5cHJvd3NraSA8bS5zenlwcm93c2tp QHNhbXN1bmcuY29tPgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSAgaXQgYW5kL29yIG1vZGlmeSBpdAorICogdW5kZXIgIHRoZSB0ZXJt cyBvZiAgdGhlIEdOVSBHZW5lcmFsICBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl CisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247ICBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSAg TGljZW5zZSwgb3IgKGF0IHlvdXIKKyAqIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICovCisKKyNpZm5kZWYgX0VYWU5PU19EUk1fUExBTkVfSVBQX0hfCisjZGVmaW5lIF9FWFlOT1Nf RFJNX1BMQU5FX0lQUF9IXworCisjaWZkZWYgQ09ORklHX0RSTV9FWFlOT1NfUExBTkVfSVBQCisK K3ZvaWQgZXh5bm9zX3BsYW5lX2lwcF9zZXR1cChzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0 ZSAqc3RhdGUsCisJCQkgICAgY29uc3Qgc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfY29uZmlnICpj b25maWcsCisJCQkgICAgdW5zaWduZWQgaW50ICpzcmNfeCwgdW5zaWduZWQgaW50ICpzcmNfeSwK KwkJCSAgICB1bnNpZ25lZCBpbnQgKnNyY193LCB1bnNpZ25lZCBpbnQgKnNyY19oLAorCQkJICAg IHVuc2lnbmVkIGludCAqY3J0Y193LCB1bnNpZ25lZCBpbnQgKmNydGNfaCk7CisKK2ludCBleHlu b3NfcGxhbmVfaXBwX2NoZWNrKHN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZSwKKwkJCSAg IHN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSk7CisKK3ZvaWQgZXh5bm9zX3Bs YW5lX2lwcF91cGRhdGUoc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lLAorCQkJICAgICBz dHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0ZSAqc3RhdGUpOworCit2b2lkIGV4eW5vc19wbGFu ZV9pcHBfY2xlYW51cChzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgICBz dHJ1Y3QgZXh5bm9zX2RybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlKTsKKworaW50IGV4eW5vc19w bGFuZV9pcHBfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAorCQkJICBzdHJ1Y3QgZXh5bm9z X2RybV9wbGFuZSAqcGxhbmUpOworCisjZWxzZQorCitzdGF0aWMgaW5saW5lCit2b2lkIGV4eW5v c19wbGFuZV9pcHBfc2V0dXAoc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3RhdGUgKnN0YXRlLAor CQkJICAgIGNvbnN0IHN0cnVjdCBleHlub3NfZHJtX3BsYW5lX2NvbmZpZyAqY29uZmlnLAorCQkJ ICAgIHVuc2lnbmVkIGludCAqc3JjX3gsIHVuc2lnbmVkIGludCAqc3JjX3ksCisJCQkgICAgdW5z aWduZWQgaW50ICpzcmNfdywgdW5zaWduZWQgaW50ICpzcmNfaCwKKwkJCSAgICB1bnNpZ25lZCBp bnQgKmNydGNfdywgdW5zaWduZWQgaW50ICpjcnRjX2gpCit7Cit9CisKK3N0YXRpYyBpbmxpbmUK K2ludCBleHlub3NfcGxhbmVfaXBwX2NoZWNrKHN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFu ZSwKKwkJCSAgIHN0cnVjdCBleHlub3NfZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkKK3sKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGlubGluZQordm9pZCBleHlub3NfcGxhbmVfaXBwX3VwZGF0ZShz dHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUsCisJCQkgICAgIHN0cnVjdCBleHlub3NfZHJt X3BsYW5lX3N0YXRlICpzdGF0ZSkKK3sKK30KKworc3RhdGljIGlubGluZQordm9pZCBleHlub3Nf cGxhbmVfaXBwX2NsZWFudXAoc3RydWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lLAorCQkJICAg ICAgc3RydWN0IGV4eW5vc19kcm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKK30KKworc3Rh dGljIGlubGluZQoraW50IGV4eW5vc19wbGFuZV9pcHBfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAorCQkJICBzdHJ1Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmUpCit7CisJcmV0dXJuIDA7 Cit9CisKKyNlbmRpZgorI2VuZGlmCi0tIAoxLjkuMgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWwK