From mboxrd@z Thu Jan 1 00:00:00 1970 From: "james qian wang (Arm Technology China)" Subject: [PATCH v3 7/9] drm/komeda: Attach komeda_dev to DRM-KMS Date: Fri, 21 Dec 2018 10:00:33 +0000 Message-ID: <20181221095757.15510-8-james.qian.wang@arm.com> References: <20181221095757.15510-1-james.qian.wang@arm.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181221095757.15510-1-james.qian.wang@arm.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liviu Dudau Cc: Mark Rutland , "linux-doc@vger.kernel.org" , "maxime.ripard@bootlin.com" , "Jonathan Chai (Arm Technology China)" , Alexandru-Cosmin Gheorghe , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" , "yamada.masahiro@socionext.com" , "Yiqi Kang (Arm Technology China)" , "mchehab+samsung@kernel.org" , "Tiannan Zhu (Arm Technology China)" , "corbet@lwn.net" , "airlied@linux.ie" , "malidp@foss.arm.com" , "thomas Sun (Arm Technology China)" , Ayan Halder , devicetree List-Id: devicetree@vger.kernel.org QWRkIGtvbWVkYV9rbXMgYWJzdHJhY3RvbiB0byBhdHRhY2gga29tZWRhX2RldiB0byBEUk0tS01T CiAgQ1JUQzogYWNjb3JkaW5nIHRvIHRoZSBrb21lZGFfcGlwZWxpbmUKICBQTEFORTogYWNjb3Jk aW5nIHRvIGtvbWVkYV9sYXllciAobGF5ZXIgaW5wdXQgcGlwZWxpbmUpCiAgUFJJVkFURV9PQkpT OiBrb21lZGFfcGlwZWxpbmUvY29tcG9uZW50IGFsbCB3aWxsIGJlIHRyZWF0IGFzIHByaXZhdGVf b2JqcwoKa29tZWRhX2ttcyBpcyBmb3IgY29ubmVjdGluZyBEUk0tS01TIGFuZCBrb21lZGFfZGV2 LCBsaWtlIHJlcG9ydGluZyB0aGUKa21zIG9iamVjdCBwcm9wZXJ0aWVzIGFjY29yZGluZyB0byB0 aGUga29tZWRhX2RldiwgYW5kIHBhc3MvY29udmVydCBLTVMncwpyZXF1aXJlbWVudCB0byBrb21l ZGFfZGV2LgoKQ2hhbmdlcyBpbiB2MzoKLSBGaXhlZCBzdHlsZSBwcm9ibGVtIGZvdW5kIGJ5IGNo ZWNrcGF0Y2gucGwgLS1zdHJpY3QuCgpDaGFuZ2VzIGluIHYyOgotIFVuaWZpZWQgYWJicmV2aWF0 aW9uIG9mICJwaXBlbGluZSIgdG8gInBpcGUiLgoKU2lnbmVkLW9mZi1ieTogSmFtZXMgKFFpYW4p IFdhbmcgPGphbWVzLnFpYW4ud2FuZ0Bhcm0uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEvTWFrZWZpbGUgICB8ICAgNiArLQogLi4uL2dwdS9kcm0vYXJtL2Rpc3Bs YXkva29tZWRhL2tvbWVkYV9jcnRjLmMgIHwgMTA2ICsrKysrKysrKysrCiAuLi4vZ3B1L2RybS9h cm0vZGlzcGxheS9rb21lZGEva29tZWRhX2Rydi5jICAgfCAgMTkgKy0KIC4uLi9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMgICB8IDE2OSArKysrKysrKysrKysrKysrKysK IC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmggICB8IDExMyArKysr KysrKysrKysKIC4uLi9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oICB8 ICAgMyArCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BsYW5lLmMgfCAx MDkgKysrKysrKysrKysKIC4uLi9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2Jq LmMgICB8ICA4OCArKysrKysrKysKIDggZmlsZXMgY2hhbmdlZCwgNjA4IGluc2VydGlvbnMoKyks IDUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2FybS9k aXNwbGF5L2tvbWVkYS9rb21lZGFfY3J0Yy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3Bs YW5lLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29t ZWRhL2tvbWVkYV9wcml2YXRlX29iai5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Fy bS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9r b21lZGEvTWFrZWZpbGUKaW5kZXggMjViZWFlOTAwZWQyLi4xYjg3NWU1ZGMwZjYgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUKKysrIGIvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZQpAQCAtOSw3ICs5LDExIEBA IGtvbWVkYS15IDo9IFwKIAlrb21lZGFfZGV2Lm8gXAogCWtvbWVkYV9mb3JtYXRfY2Fwcy5vIFwK IAlrb21lZGFfcGlwZWxpbmUubyBcCi0Ja29tZWRhX2ZyYW1lYnVmZmVyLm8KKwlrb21lZGFfZnJh bWVidWZmZXIubyBcCisJa29tZWRhX2ttcy5vIFwKKwlrb21lZGFfY3J0Yy5vIFwKKwlrb21lZGFf cGxhbmUubyBcCisJa29tZWRhX3ByaXZhdGVfb2JqLm8KIAoga29tZWRhLXkgKz0gXAogCWQ3MS9k NzFfZGV2Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX2NydGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRh X2NydGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjViYjVhNTVm NmIzMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEva29tZWRhX2NydGMuYwpAQCAtMCwwICsxLDEwNiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEdQTC0yLjAKKy8qCisgKiAoQykgQ09QWVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBBdXRob3I6IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlh bi53YW5nQGFybS5jb20+CisgKgorICovCisjaW5jbHVkZSA8bGludXgvY2xrLmg+CisjaW5jbHVk ZSA8bGludXgvc3BpbmxvY2suaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVs cGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGxpbnV4 L3BtX3J1bnRpbWUuaD4KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiCisjaW5jbHVkZSAia29tZWRh X2ttcy5oIgorCitzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzIGtvbWVkYV9jcnRjX2hlbHBl cl9mdW5jcyA9IHsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3Mga29t ZWRhX2NydGNfZnVuY3MgPSB7Cit9OworCitpbnQga29tZWRhX2ttc19zZXR1cF9jcnRjcyhzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJCSAgIHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQor eworCXN0cnVjdCBrb21lZGFfY3J0YyAqY3J0YzsKKwlzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpt YXN0ZXI7CisJY2hhciBzdHJbMTZdOworCWludCBpOworCisJa21zLT5uX2NydGNzID0gMDsKKwor CWZvciAoaSA9IDA7IGkgPCBtZGV2LT5uX3BpcGVsaW5lczsgaSsrKSB7CisJCWNydGMgPSAma21z LT5jcnRjc1trbXMtPm5fY3J0Y3NdOworCQltYXN0ZXIgPSBtZGV2LT5waXBlbGluZXNbaV07CisK KwkJY3J0Yy0+bWFzdGVyID0gbWFzdGVyOworCQljcnRjLT5zbGF2ZSAgPSBOVUxMOworCisJCWlm IChjcnRjLT5zbGF2ZSkKKwkJCXNwcmludGYoc3RyLCAicGlwZS0lZCIsIGNydGMtPnNsYXZlLT5p ZCk7CisJCWVsc2UKKwkJCXNwcmludGYoc3RyLCAiTm9uZSIpOworCisJCURSTV9JTkZPKCJjcnRj JWQ6IG1hc3RlcihwaXBlLSVkKSBzbGF2ZSglcykgb3V0cHV0OiAlcy5cbiIsCisJCQkga21zLT5u X2NydGNzLCBtYXN0ZXItPmlkLCBzdHIsCisJCQkgbWFzdGVyLT5vZl9vdXRwdXRfZGV2ID8KKwkJ CSBtYXN0ZXItPm9mX291dHB1dF9kZXYtPmZ1bGxfbmFtZSA6ICJOb25lIik7CisKKwkJa21zLT5u X2NydGNzKys7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5l ICoKK2dldF9jcnRjX3ByaW1hcnkoc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsIHN0cnVjdCBr b21lZGFfY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3Qga29tZWRhX3BsYW5lICprcGxhbmU7CisJc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmU7CisKKwlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsICZrbXMt PmJhc2UpIHsKKwkJaWYgKHBsYW5lLT50eXBlICE9IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCisJ CQljb250aW51ZTsKKworCQlrcGxhbmUgPSB0b19rcGxhbmUocGxhbmUpOworCQkvKiBvbmx5IG1h c3RlciBjYW4gYmUgcHJpbWFyeSAqLworCQlpZiAoa3BsYW5lLT5sYXllci0+YmFzZS5waXBlbGlu ZSA9PSBjcnRjLT5tYXN0ZXIpCisJCQlyZXR1cm4gcGxhbmU7CisJfQorCisJcmV0dXJuIE5VTEw7 Cit9CisKK3N0YXRpYyBpbnQga29tZWRhX2NydGNfYWRkKHN0cnVjdCBrb21lZGFfa21zX2RldiAq a21zLAorCQkJICAgc3RydWN0IGtvbWVkYV9jcnRjICprY3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSAma2NydGMtPmJhc2U7CisJaW50IGVycjsKKworCWVyciA9IGRybV9jcnRjX2lu aXRfd2l0aF9wbGFuZXMoJmttcy0+YmFzZSwgY3J0YywKKwkJCQkJZ2V0X2NydGNfcHJpbWFyeShr bXMsIGtjcnRjKSwgTlVMTCwKKwkJCQkJJmtvbWVkYV9jcnRjX2Z1bmNzLCBOVUxMKTsKKwlpZiAo ZXJyKQorCQlyZXR1cm4gZXJyOworCisJZHJtX2NydGNfaGVscGVyX2FkZChjcnRjLCAma29tZWRh X2NydGNfaGVscGVyX2Z1bmNzKTsKKwlkcm1fY3J0Y192YmxhbmtfcmVzZXQoY3J0Yyk7CisKKwlj cnRjLT5wb3J0ID0ga2NydGMtPm1hc3Rlci0+b2Zfb3V0cHV0X3BvcnQ7CisKKwlyZXR1cm4gMDsK K30KKworaW50IGtvbWVkYV9rbXNfYWRkX2NydGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21z LCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKK3sKKwlpbnQgaSwgZXJyOworCisJZm9yIChpID0g MDsgaSA8IGttcy0+bl9jcnRjczsgaSsrKSB7CisJCWVyciA9IGtvbWVkYV9jcnRjX2FkZChrbXMs ICZrbXMtPmNydGNzW2ldKTsKKwkJaWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJfQorCisJcmV0 dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRh L2tvbWVkYV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRh X2Rydi5jCmluZGV4IGEyNjU3YjNkMDlkNy4uNGI4Y2U3MTdhNzFjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kcnYuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9kcnYuYwpAQCAtMTMsMTggKzEzLDIx IEBACiAKIHN0cnVjdCBrb21lZGFfZHJ2IHsKIAlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldjsKKwlz dHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttczsKIH07CiAKIHN0YXRpYyB2b2lkIGtvbWVkYV91bmJp bmQoc3RydWN0IGRldmljZSAqZGV2KQogewogCXN0cnVjdCBrb21lZGFfZHJ2ICptZHJ2ID0gZGV2 X2dldF9kcnZkYXRhKGRldik7CiAKLQlkZXZfc2V0X2RydmRhdGEoZGV2LCBOVUxMKTsKLQogCWlm ICghbWRydikKIAkJcmV0dXJuOwogCisJa29tZWRhX2ttc19kZXRhY2gobWRydi0+a21zKTsKKwog CWtvbWVkYV9kZXZfZGVzdHJveShtZHJ2LT5tZGV2KTsKKworCWRldl9zZXRfZHJ2ZGF0YShkZXYs IE5VTEwpOwogCWtmcmVlKG1kcnYpOwogfQogCkBAIC0zMyw3ICszNiw3IEBAIHN0YXRpYyBpbnQg a29tZWRhX2JpbmQoc3RydWN0IGRldmljZSAqZGV2KQogCXN0cnVjdCBrb21lZGFfZHJ2ICptZHJ2 OwogCWludCBlcnI7CiAKLQltZHJ2ID0ga3phbGxvYyhzaXplb2YoKm1kcnYpLCBHRlBfS0VSTkVM KTsKKwltZHJ2ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCptZHJ2KSwgR0ZQX0tFUk5FTCk7 CiAJaWYgKCFtZHJ2KQogCQlyZXR1cm4gLUVOT01FTTsKIApAQCAtNDUsMTAgKzQ4LDE4IEBAIHN0 YXRpYyBpbnQga29tZWRhX2JpbmQoc3RydWN0IGRldmljZSAqZGV2KQogCiAJZGV2X3NldF9kcnZk YXRhKGRldiwgbWRydik7CiAKKwltZHJ2LT5rbXMgPSBrb21lZGFfa21zX2F0dGFjaChtZHJ2LT5t ZGV2KTsKKwlpZiAoSVNfRVJSKG1kcnYtPmttcykpIHsKKwkJZXJyID0gUFRSX0VSUihtZHJ2LT5r bXMpOworCQlnb3RvIGRlc3Ryb3lfbWRldjsKKwl9CisKIAlyZXR1cm4gMDsKIAorZGVzdHJveV9t ZGV2OgorCWtvbWVkYV9kZXZfZGVzdHJveShtZHJ2LT5tZGV2KTsKIGZyZWVfbWRydjoKLQlrZnJl ZShtZHJ2KTsKKwlkZXZtX2tmcmVlKGRldiwgbWRydik7CiAJcmV0dXJuIGVycjsKIH0KIApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmMg Yi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZkNDgzNjBjYTUyNAotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5j CkBAIC0wLDAgKzEsMTY5IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAor LyoKKyAqIChDKSBDT1BZUklHSFQgMjAxOCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl ZC4KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4K KyAqCisgKi8KKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUg PGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2Vt X2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgorI2luY2x1ZGUg PGxpbnV4L2ludGVycnVwdC5oPgorI2luY2x1ZGUgImtvbWVkYV9kZXYuaCIKKyNpbmNsdWRlICJr b21lZGFfa21zLmgiCisjaW5jbHVkZSAia29tZWRhX2ZyYW1lYnVmZmVyLmgiCisKK0RFRklORV9E Uk1fR0VNX0NNQV9GT1BTKGtvbWVkYV9jbWFfZm9wcyk7CisKK3N0YXRpYyBpbnQga29tZWRhX2dl bV9jbWFfZHVtYl9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlLAorCQkJCSAgICAgIHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICAgICAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1i ICphcmdzKQoreworCXUzMiBhbGlnbm1lbnQgPSAxNjsgLyogVE9ETyBnZXQgYWxpZ25tZW50IGZy b20gZGV2ICovCisKKwlhcmdzLT5waXRjaCA9IEFMSUdOKERJVl9ST1VORF9VUChhcmdzLT53aWR0 aCAqIGFyZ3MtPmJwcCwgOCksCisJCQkgICAgYWxpZ25tZW50KTsKKworCXJldHVybiBkcm1fZ2Vt X2NtYV9kdW1iX2NyZWF0ZV9pbnRlcm5hbChmaWxlLCBkZXYsIGFyZ3MpOworfQorCitzdGF0aWMg c3RydWN0IGRybV9kcml2ZXIga29tZWRhX2ttc19kcml2ZXIgPSB7CisJLmRyaXZlcl9mZWF0dXJl cyA9IERSSVZFUl9HRU0gfCBEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9BVE9NSUMgfAorCQkJICAg RFJJVkVSX1BSSU1FLAorCS5sYXN0Y2xvc2UJCQk9IGRybV9mYl9oZWxwZXJfbGFzdGNsb3NlLAor CS5nZW1fZnJlZV9vYmplY3RfdW5sb2NrZWQJPSBkcm1fZ2VtX2NtYV9mcmVlX29iamVjdCwKKwku Z2VtX3ZtX29wcwkJCT0gJmRybV9nZW1fY21hX3ZtX29wcywKKwkuZHVtYl9jcmVhdGUJCQk9IGtv bWVkYV9nZW1fY21hX2R1bWJfY3JlYXRlLAorCS5wcmltZV9oYW5kbGVfdG9fZmQJCT0gZHJtX2dl bV9wcmltZV9oYW5kbGVfdG9fZmQsCisJLnByaW1lX2ZkX3RvX2hhbmRsZQkJPSBkcm1fZ2VtX3By aW1lX2ZkX3RvX2hhbmRsZSwKKwkuZ2VtX3ByaW1lX2V4cG9ydAkJPSBkcm1fZ2VtX3ByaW1lX2V4 cG9ydCwKKwkuZ2VtX3ByaW1lX2ltcG9ydAkJPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwkuZ2Vt X3ByaW1lX2dldF9zZ190YWJsZQkJPSBkcm1fZ2VtX2NtYV9wcmltZV9nZXRfc2dfdGFibGUsCisJ LmdlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUJPSBkcm1fZ2VtX2NtYV9wcmltZV9pbXBvcnRfc2df dGFibGUsCisJLmdlbV9wcmltZV92bWFwCQkJPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5n ZW1fcHJpbWVfdnVubWFwCQk9IGRybV9nZW1fY21hX3ByaW1lX3Z1bm1hcCwKKwkuZ2VtX3ByaW1l X21tYXAJCQk9IGRybV9nZW1fY21hX3ByaW1lX21tYXAsCisJLmZvcHMgPSAma29tZWRhX2NtYV9m b3BzLAorCS5uYW1lID0gImtvbWVkYSIsCisJLmRlc2MgPSAiQVJNIE1hbGkgS29tZWRhIERpc3Bs YXkgUHJvY2Vzc29yIGRyaXZlciIsCisJLmRhdGUgPSAiMjAxODExMDEiLAorCS5tYWpvciA9IDAs CisJLm1pbm9yID0gMSwKK307CisKK3N0YXRpYyB2b2lkIGtvbWVkYV9rbXNfY29tbWl0X3RhaWwo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gb2xkX3N0YXRlLT5kZXY7CisKKwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9k ZXNldF9kaXNhYmxlcyhkZXYsIG9sZF9zdGF0ZSk7CisKKwlkcm1fYXRvbWljX2hlbHBlcl9jb21t aXRfcGxhbmVzKGRldiwgb2xkX3N0YXRlLCAwKTsKKworCWRybV9hdG9taWNfaGVscGVyX2NvbW1p dF9tb2Rlc2V0X2VuYWJsZXMoZGV2LCBvbGRfc3RhdGUpOworCisJZHJtX2F0b21pY19oZWxwZXJf d2FpdF9mb3JfZmxpcF9kb25lKGRldiwgb2xkX3N0YXRlKTsKKworCWRybV9hdG9taWNfaGVscGVy X2NvbW1pdF9od19kb25lKG9sZF9zdGF0ZSk7CisKKwlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVw X3BsYW5lcyhkZXYsIG9sZF9zdGF0ZSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21v ZGVfY29uZmlnX2hlbHBlcl9mdW5jcyBrb21lZGFfbW9kZV9jb25maWdfaGVscGVycyA9IHsKKwku YXRvbWljX2NvbW1pdF90YWlsID0ga29tZWRhX2ttc19jb21taXRfdGFpbCwKK307CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGtvbWVkYV9tb2RlX2NvbmZpZ19m dW5jcyA9IHsKKwkuZmJfY3JlYXRlCQk9IGtvbWVkYV9mYl9jcmVhdGUsCisJLmF0b21pY19jaGVj awkJPSBOVUxMLC8qa29tZWRhX2ttc19jaGVjayovCisJLmF0b21pY19jb21taXQJCT0gZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0LAorfTsKKworc3RhdGljIHZvaWQga29tZWRhX2ttc19tb2RlX2Nv bmZpZ19pbml0KHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLAorCQkJCQlzdHJ1Y3Qga29tZWRh X2RldiAqbWRldikKK3sKKwlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAma21zLT5i YXNlLm1vZGVfY29uZmlnOworCisJZHJtX21vZGVfY29uZmlnX2luaXQoJmttcy0+YmFzZSk7CisK Kwlrb21lZGFfa21zX3NldHVwX2NydGNzKGttcywgbWRldik7CisKKwkvKiBHZXQgdmFsdWUgZnJv bSBkZXYgKi8KKwljb25maWctPm1pbl93aWR0aAk9IDA7CisJY29uZmlnLT5taW5faGVpZ2h0CT0g MDsKKwljb25maWctPm1heF93aWR0aAk9IDQwOTY7CisJY29uZmlnLT5tYXhfaGVpZ2h0CT0gNDA5 NjsKKwljb25maWctPmFsbG93X2ZiX21vZGlmaWVycyA9IHRydWU7CisKKwljb25maWctPmZ1bmNz ID0gJmtvbWVkYV9tb2RlX2NvbmZpZ19mdW5jczsKKwljb25maWctPmhlbHBlcl9wcml2YXRlID0g JmtvbWVkYV9tb2RlX2NvbmZpZ19oZWxwZXJzOworfQorCitzdHJ1Y3Qga29tZWRhX2ttc19kZXYg KmtvbWVkYV9rbXNfYXR0YWNoKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQoreworCXN0cnVjdCBr b21lZGFfa21zX2RldiAqa21zID0ga3phbGxvYyhzaXplb2YoKmttcyksIEdGUF9LRVJORUwpOwor CXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJaW50IGVycjsKKworCWlmICgha21zKQorCQlyZXR1 cm4gRVJSX1BUUigtRU5PTUVNKTsKKworCWRybSA9ICZrbXMtPmJhc2U7CisJZXJyID0gZHJtX2Rl dl9pbml0KGRybSwgJmtvbWVkYV9rbXNfZHJpdmVyLCBtZGV2LT5kZXYpOworCWlmIChlcnIpCisJ CWdvdG8gZnJlZV9rbXM7CisKKwlkcm0tPmRldl9wcml2YXRlID0gbWRldjsKKworCWtvbWVkYV9r bXNfbW9kZV9jb25maWdfaW5pdChrbXMsIG1kZXYpOworCisJZXJyID0ga29tZWRhX2ttc19hZGRf cHJpdmF0ZV9vYmpzKGttcywgbWRldik7CisJaWYgKGVycikKKwkJZ290byBjbGVhbnVwX21vZGVf Y29uZmlnOworCisJZXJyID0ga29tZWRhX2ttc19hZGRfcGxhbmVzKGttcywgbWRldik7CisJaWYg KGVycikKKwkJZ290byBjbGVhbnVwX21vZGVfY29uZmlnOworCisJZXJyID0gZHJtX3ZibGFua19p bml0KGRybSwga21zLT5uX2NydGNzKTsKKwlpZiAoZXJyKQorCQlnb3RvIGNsZWFudXBfbW9kZV9j b25maWc7CisKKwllcnIgPSBrb21lZGFfa21zX2FkZF9jcnRjcyhrbXMsIG1kZXYpOworCWlmIChl cnIpCisJCWdvdG8gY2xlYW51cF9tb2RlX2NvbmZpZzsKKworCWVyciA9IGNvbXBvbmVudF9iaW5k X2FsbChtZGV2LT5kZXYsIGttcyk7CisJaWYgKGVycikKKwkJZ290byBjbGVhbnVwX21vZGVfY29u ZmlnOworCisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7CisKKwllcnIgPSBkcm1fZGV2X3Jl Z2lzdGVyKGRybSwgMCk7CisJaWYgKGVycikKKwkJZ290byB1bmluc3RhbGxfaXJxOworCisJcmV0 dXJuIGttczsKKwordW5pbnN0YWxsX2lycToKKwlkcm1faXJxX3VuaW5zdGFsbChkcm0pOworY2xl YW51cF9tb2RlX2NvbmZpZzoKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworZnJlZV9r bXM6CisJa2ZyZWUoa21zKTsKKwlyZXR1cm4gRVJSX1BUUihlcnIpOworfQorCit2b2lkIGtvbWVk YV9rbXNfZGV0YWNoKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zKQoreworCXN0cnVjdCBkcm1f ZGV2aWNlICpkcm0gPSAma21zLT5iYXNlOworCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2ID0gZHJt LT5kZXZfcHJpdmF0ZTsKKworCWRybV9kZXZfdW5yZWdpc3Rlcihkcm0pOworCWNvbXBvbmVudF91 bmJpbmRfYWxsKG1kZXYtPmRldiwgZHJtKTsKKwlrb21lZGFfa21zX2NsZWFudXBfcHJpdmF0ZV9v YmpzKG1kZXYpOworCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRybSk7CisJZHJtLT5kZXZfcHJp dmF0ZSA9IE5VTEw7CisJZHJtX2Rldl9wdXQoZHJtKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oIGIvZHJpdmVycy9ncHUvZHJt L2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5mMTM2NjYwMDRhNDIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuaApAQCAtMCwwICsxLDExMyBA QAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8KKy8qCisgKiAoQykgQ09Q WVJJR0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBBdXRob3I6 IEphbWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+CisgKgorICovCisjaWZu ZGVmIF9LT01FREFfS01TX0hfCisjZGVmaW5lIF9LT01FREFfS01TX0hfCisKKyNpbmNsdWRlIDxk cm0vZHJtX2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3dyaXRlYmFj ay5oPgorCisvKiogc3RydWN0IGtvbWVkYV9wbGFuZSAtIGtvbWVkYSBpbnN0YW5jZSBvZiBkcm1f cGxhbmUgKi8KK3N0cnVjdCBrb21lZGFfcGxhbmUgeworCS8qKiBAYmFzZTogJmRybV9wbGFuZSAq LworCXN0cnVjdCBkcm1fcGxhbmUgYmFzZTsKKwkvKioKKwkgKiBAbGF5ZXI6CisJICoKKwkgKiBy ZXByZXNlbnRzIGF2YWlsYWJsZSBsYXllciBpbnB1dCBwaXBlbGluZXMgZm9yIHRoaXMgcGxhbmUu CisJICoKKwkgKiBOT1RFOgorCSAqIHRoZSBsYXllciBpcyBub3QgZm9yIGEgc3BlY2lmaWMgTGF5 ZXIsIGJ1dCBpbmRpY2F0ZSBhIGdyb3VwIG9mCisJICogTGF5ZXJzIHdpdGggc2FtZSBjYXBhYmls aXRpZXMuCisJICovCisJc3RydWN0IGtvbWVkYV9sYXllciAqbGF5ZXI7Cit9OworCisvKioKKyAq IHN0cnVjdCBrb21lZGFfcGxhbmVfc3RhdGUKKyAqCisgKiBUaGUgcGxhbmVfc3RhdGUgY2FuIGJl IHNwbGl0IGludG8gdHdvIGRhdGEgZmxvdyAobGVmdC9yaWdodCkgYW5kIGhhbmRsZWQKKyAqIGJ5 IHR3byBsYXllcnMgJmtvbWVkYV9wbGFuZS5sYXllciBhbmQgJmtvbWVkYV9wbGFuZS5sYXllci5y aWdodAorICovCitzdHJ1Y3Qga29tZWRhX3BsYW5lX3N0YXRlIHsKKwkvKiogQGJhc2U6ICZkcm1f cGxhbmVfc3RhdGUgKi8KKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlIGJhc2U7CisKKwkvKiBwcml2 YXRlIHByb3BlcnRpZXMgKi8KK307CisKKy8qKgorICogc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0 b3IKKyAqLworc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0b3IgeworCS8qKiBAYmFzZTogJmRybV93 cml0ZWJhY2tfY29ubmVjdG9yICovCisJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yIGJh c2U7CisKKwkvKiogQHdiX2xheWVyOiByZXByZXNlbnRzIGFzc29jaWF0ZWQgd3JpdGViYWNrIHBp cGVsaW5lIG9mIGtvbWVkYSAqLworCXN0cnVjdCBrb21lZGFfbGF5ZXIgKndiX2xheWVyOworfTsK KworLyoqCisgKiBzdHJ1Y3Qga29tZWRhX2NydGMKKyAqLworc3RydWN0IGtvbWVkYV9jcnRjIHsK KwkvKiogQGJhc2U6ICZkcm1fY3J0YyAqLworCXN0cnVjdCBkcm1fY3J0YyBiYXNlOworCS8qKiBA bWFzdGVyOiBvbmx5IG1hc3RlciBoYXMgZGlzcGxheSBvdXRwdXQgKi8KKwlzdHJ1Y3Qga29tZWRh X3BpcGVsaW5lICptYXN0ZXI7CisJLyoqCisJICogQHNsYXZlOiBvcHRpb25hbAorCSAqCisJICog RG9lc24ndCBoYXZlIGl0cyBvd24gZGlzcGxheSBvdXRwdXQsIHRoZSBoYW5kbGVkIGRhdGEgZmxv dyB3aWxsCisJICogbWVyZ2UgaW50byB0aGUgbWFzdGVyLgorCSAqLworCXN0cnVjdCBrb21lZGFf cGlwZWxpbmUgKnNsYXZlOworfTsKKworLyoqIHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqLwor c3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlIHsKKwkvKiogQGJhc2U6ICZkcm1fY3J0Y19zdGF0ZSAq LworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBiYXNlOworCisJLyogcHJpdmF0ZSBwcm9wZXJ0aWVz ICovCisKKwkvKiBjb21wdXRlZCBzdGF0ZSB3aGljaCBhcmUgdXNlZCBieSB2YWxpZGF0ZS9jaGVj ayAqLworCXUzMiBhZmZlY3RlZF9waXBlczsKKwl1MzIgYWN0aXZlX3BpcGVzOworfTsKKworLyoq IHN0cnVjdCBrb21lZGFfa21zX2RldiAtIGZvciBnYXRoZXIgS01TIHJlbGF0ZWQgdGhpbmdzICov CitzdHJ1Y3Qga29tZWRhX2ttc19kZXYgeworCS8qKiBAYmFzZTogJmRybV9kZXZpY2UgKi8KKwlz dHJ1Y3QgZHJtX2RldmljZSBiYXNlOworCisJLyoqIEBuX2NydGNzOiB2YWxpZCBudW1iZXJzIG9m IGNydGNzIGluICZrb21lZGFfa21zX2Rldi5jcnRjcyAqLworCWludCBuX2NydGNzOworCS8qKiBA Y3J0Y3M6IGNydGNzIGxpc3QgKi8KKwlzdHJ1Y3Qga29tZWRhX2NydGMgY3J0Y3NbS09NRURBX01B WF9QSVBFTElORVNdOworfTsKKworI2RlZmluZSB0b19rcGxhbmUocCkJY29udGFpbmVyX29mKHAs IHN0cnVjdCBrb21lZGFfcGxhbmUsIGJhc2UpCisjZGVmaW5lIHRvX2twbGFuZV9zdChwKQljb250 YWluZXJfb2YocCwgc3RydWN0IGtvbWVkYV9wbGFuZV9zdGF0ZSwgYmFzZSkKKyNkZWZpbmUgdG9f a2Nvbm4ocCkJY29udGFpbmVyX29mKHAsIHN0cnVjdCBrb21lZGFfd2JfY29ubmVjdG9yLCBiYXNl KQorI2RlZmluZSB0b19rY3J0YyhwKQljb250YWluZXJfb2YocCwgc3RydWN0IGtvbWVkYV9jcnRj LCBiYXNlKQorI2RlZmluZSB0b19rY3J0Y19zdChwKQljb250YWluZXJfb2YocCwgc3RydWN0IGtv bWVkYV9jcnRjX3N0YXRlLCBiYXNlKQorI2RlZmluZSB0b19rZGV2KHApCWNvbnRhaW5lcl9vZihw LCBzdHJ1Y3Qga29tZWRhX2ttc19kZXYsIGJhc2UpCisKK2ludCBrb21lZGFfa21zX3NldHVwX2Ny dGNzKHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7 CisKK2ludCBrb21lZGFfa21zX2FkZF9jcnRjcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywg c3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOworaW50IGtvbWVkYV9rbXNfYWRkX3BsYW5lcyhzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOworaW50IGtv bWVkYV9rbXNfYWRkX3ByaXZhdGVfb2JqcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJ CQlzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7Cit2b2lkIGtvbWVkYV9rbXNfY2xlYW51cF9wcml2 YXRlX29ianMoc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOworCitzdHJ1Y3Qga29tZWRhX2ttc19k ZXYgKmtvbWVkYV9rbXNfYXR0YWNoKHN0cnVjdCBrb21lZGFfZGV2ICptZGV2KTsKK3ZvaWQga29t ZWRhX2ttc19kZXRhY2goc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMpOworCisjZW5kaWYgLypf S09NRURBX0tNU19IXyovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkv a29tZWRhL2tvbWVkYV9waXBlbGluZS5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tv bWVkYS9rb21lZGFfcGlwZWxpbmUuaAppbmRleCAyZDY4ZmZlYWUyNWQuLjExNDEyOWQ5Njg1MSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlw ZWxpbmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9w aXBlbGluZS5oCkBAIC0zMzMsNiArMzMzLDkgQEAgc3RydWN0IGtvbWVkYV9waXBlbGluZV9zdGF0 ZSB7CiAjZGVmaW5lIHRvX2ltcHJvY19zdChjKQljb250YWluZXJfb2YoYywgc3RydWN0IGtvbWVk YV9pbXByb2Nfc3RhdGUsIGJhc2UpCiAjZGVmaW5lIHRvX2N0cmxyX3N0KGMpCWNvbnRhaW5lcl9v ZihjLCBzdHJ1Y3Qga29tZWRhX3RpbWluZ19jdHJscl9zdGF0ZSwgYmFzZSkKIAorI2RlZmluZSBw cml2X3RvX2NvbXBfc3QobykgY29udGFpbmVyX29mKG8sIHN0cnVjdCBrb21lZGFfY29tcG9uZW50 X3N0YXRlLCBvYmopCisjZGVmaW5lIHByaXZfdG9fcGlwZV9zdChvKSAgY29udGFpbmVyX29mKG8s IHN0cnVjdCBrb21lZGFfcGlwZWxpbmVfc3RhdGUsIG9iaikKKwogLyogcGlwZWxpbmUgQVBJcyAq Lwogc3RydWN0IGtvbWVkYV9waXBlbGluZSAqCiBrb21lZGFfcGlwZWxpbmVfYWRkKHN0cnVjdCBr b21lZGFfZGV2ICptZGV2LCBzaXplX3Qgc2l6ZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3BsYW5lLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJt L2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wbGFuZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uMGE0OTUzYTlhOTA5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGxhbmUuYwpAQCAtMCwwICsxLDEwOSBA QAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKKy8qCisgKiAoQykgQ09QWVJJ R0hUIDIwMTggQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBBdXRob3I6IEph bWVzLlFpYW4uV2FuZyA8amFtZXMucWlhbi53YW5nQGFybS5jb20+CisgKgorICovCisjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWMuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4K KyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgorI2luY2x1ZGUgImtvbWVkYV9kZXYu aCIKKyNpbmNsdWRlICJrb21lZGFfa21zLmgiCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Bs YW5lX2hlbHBlcl9mdW5jcyBrb21lZGFfcGxhbmVfaGVscGVyX2Z1bmNzID0geworfTsKKworc3Rh dGljIHZvaWQga29tZWRhX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRybV9wbGFuZSAqcGxhbmUpCit7 CisJZHJtX3BsYW5lX2NsZWFudXAocGxhbmUpOworCisJa2ZyZWUodG9fa3BsYW5lKHBsYW5lKSk7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGtvbWVkYV9wbGFuZV9m dW5jcyA9IHsKK307CisKKy8qIGZvciBrb21lZGEsIHdoaWNoIGlzIHBpcGVsaW5lIGNhbiBiZSBz aGFyZSBiZXR3ZWVuIGNydGNzICovCitzdGF0aWMgdTMyIGdldF9wb3NzaWJsZV9jcnRjcyhzdHJ1 Y3Qga29tZWRhX2ttc19kZXYgKmttcywKKwkJCSAgICAgIHN0cnVjdCBrb21lZGFfcGlwZWxpbmUg KnBpcGUpCit7CisJc3RydWN0IGtvbWVkYV9jcnRjICpjcnRjOworCXUzMiBwb3NzaWJsZV9jcnRj cyA9IDA7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwga21zLT5uX2NydGNzOyBpKyspIHsK KwkJY3J0YyA9ICZrbXMtPmNydGNzW2ldOworCisJCWlmICgocGlwZSA9PSBjcnRjLT5tYXN0ZXIp IHx8IChwaXBlID09IGNydGMtPnNsYXZlKSkKKwkJCXBvc3NpYmxlX2NydGNzIHw9IEJJVChpKTsK Kwl9CisKKwlyZXR1cm4gcG9zc2libGVfY3J0Y3M7Cit9CisKKy8qIHVzZSBMYXllcjAgYXMgcHJp bWFyeSAqLworc3RhdGljIHUzMiBnZXRfcGxhbmVfdHlwZShzdHJ1Y3Qga29tZWRhX2ttc19kZXYg KmttcywKKwkJCSAgc3RydWN0IGtvbWVkYV9jb21wb25lbnQgKmMpCit7CisJYm9vbCBpc19wcmlt YXJ5ID0gKGMtPmlkID09IEtPTUVEQV9DT01QT05FTlRfTEFZRVIwKTsKKworCXJldHVybiBpc19w cmltYXJ5ID8gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSA6IERSTV9QTEFORV9UWVBFX09WRVJMQVk7 Cit9CisKK3N0YXRpYyBpbnQga29tZWRhX3BsYW5lX2FkZChzdHJ1Y3Qga29tZWRhX2ttc19kZXYg KmttcywKKwkJCSAgICBzdHJ1Y3Qga29tZWRhX2xheWVyICpsYXllcikKK3sKKwlzdHJ1Y3Qga29t ZWRhX2RldiAqbWRldiA9IGttcy0+YmFzZS5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qga29tZWRhX2Nv bXBvbmVudCAqYyA9ICZsYXllci0+YmFzZTsKKwlzdHJ1Y3Qga29tZWRhX3BsYW5lICprcGxhbmU7 CisJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7CisJdTMyICpmb3JtYXRzLCBuX2Zvcm1hdHMgPSAw OworCWludCBlcnI7CisKKwlrcGxhbmUgPSBremFsbG9jKHNpemVvZigqa3BsYW5lKSwgR0ZQX0tF Uk5FTCk7CisJaWYgKCFrcGxhbmUpCisJCXJldHVybiAtRU5PTUVNOworCisJcGxhbmUgPSAma3Bs YW5lLT5iYXNlOworCWtwbGFuZS0+bGF5ZXIgPSBsYXllcjsKKworCWZvcm1hdHMgPSBrb21lZGFf Z2V0X2xheWVyX2ZvdXJjY19saXN0KCZtZGV2LT5mbXRfdGJsLAorCQkJCQkgICAgICAgbGF5ZXIt PmxheWVyX3R5cGUsICZuX2Zvcm1hdHMpOworCisJZXJyID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9p bml0KCZrbXMtPmJhc2UsIHBsYW5lLAorCQkJZ2V0X3Bvc3NpYmxlX2NydGNzKGttcywgYy0+cGlw ZWxpbmUpLAorCQkJJmtvbWVkYV9wbGFuZV9mdW5jcywKKwkJCWZvcm1hdHMsIG5fZm9ybWF0cywg TlVMTCwKKwkJCWdldF9wbGFuZV90eXBlKGttcywgYyksCisJCQkiJXMiLCBjLT5uYW1lKTsKKwor CWtvbWVkYV9wdXRfZm91cmNjX2xpc3QoZm9ybWF0cyk7CisKKwlpZiAoZXJyKQorCQlnb3RvIGNs ZWFudXA7CisKKwlkcm1fcGxhbmVfaGVscGVyX2FkZChwbGFuZSwgJmtvbWVkYV9wbGFuZV9oZWxw ZXJfZnVuY3MpOworCisJcmV0dXJuIDA7CitjbGVhbnVwOgorCWtvbWVkYV9wbGFuZV9kZXN0cm95 KHBsYW5lKTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQga29tZWRhX2ttc19hZGRfcGxhbmVzKHN0 cnVjdCBrb21lZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldikKK3sKKwlz dHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlOworCWludCBpLCBqLCBlcnI7CisKKwlmb3IgKGkg PSAwOyBpIDwgbWRldi0+bl9waXBlbGluZXM7IGkrKykgeworCQlwaXBlID0gbWRldi0+cGlwZWxp bmVzW2ldOworCisJCWZvciAoaiA9IDA7IGogPCBwaXBlLT5uX2xheWVyczsgaisrKSB7CisJCQll cnIgPSBrb21lZGFfcGxhbmVfYWRkKGttcywgcGlwZS0+bGF5ZXJzW2pdKTsKKwkJCWlmIChlcnIp CisJCQkJcmV0dXJuIGVycjsKKwkJfQorCX0KKworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0ZV9vYmouYyBi L2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2JqLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45ZWRmZDZhYjBjMTIKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9wcml2YXRlX29iai5jCkBAIC0wLDAgKzEsODggQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wCisvKgorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwg cmlnaHRzIHJlc2VydmVkLgorICogQXV0aG9yOiBKYW1lcy5RaWFuLldhbmcgPGphbWVzLnFpYW4u d2FuZ0Bhcm0uY29tPgorICoKKyAqLworI2luY2x1ZGUgImtvbWVkYV9kZXYuaCIKKyNpbmNsdWRl ICJrb21lZGFfa21zLmgiCisKK3N0YXRpYyBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUgKgora29t ZWRhX3BpcGVsaW5lX2F0b21pY19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29i aiAqb2JqKQoreworCXN0cnVjdCBrb21lZGFfcGlwZWxpbmVfc3RhdGUgKnN0OworCisJc3QgPSBr bWVtZHVwKG9iai0+c3RhdGUsIHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN0KQor CQlyZXR1cm4gTlVMTDsKKworCXN0LT5hY3RpdmVfY29tcHMgPSAwOworCisJX19kcm1fYXRvbWlj X2hlbHBlcl9wcml2YXRlX29ial9kdXBsaWNhdGVfc3RhdGUob2JqLCAmc3QtPm9iaik7CisKKwly ZXR1cm4gJnN0LT5vYmo7Cit9CisKK3N0YXRpYyB2b2lkCitrb21lZGFfcGlwZWxpbmVfYXRvbWlj X2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wcml2YXRlX29iaiAqb2JqLAorCQkJCSAgICAgc3Ry dWN0IGRybV9wcml2YXRlX3N0YXRlICpzdGF0ZSkKK3sKKwlrZnJlZShwcml2X3RvX3BpcGVfc3Qo c3RhdGUpKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZV9mdW5j cyBrb21lZGFfcGlwZWxpbmVfb2JqX2Z1bmNzID0geworCS5hdG9taWNfZHVwbGljYXRlX3N0YXRl CT0ga29tZWRhX3BpcGVsaW5lX2F0b21pY19kdXBsaWNhdGVfc3RhdGUsCisJLmF0b21pY19kZXN0 cm95X3N0YXRlCT0ga29tZWRhX3BpcGVsaW5lX2F0b21pY19kZXN0cm95X3N0YXRlLAorfTsKKwor c3RhdGljIGludCBrb21lZGFfcGlwZWxpbmVfb2JqX2FkZChzdHJ1Y3Qga29tZWRhX2ttc19kZXYg KmttcywKKwkJCQkgICBzdHJ1Y3Qga29tZWRhX3BpcGVsaW5lICpwaXBlKQoreworCXN0cnVjdCBr b21lZGFfcGlwZWxpbmVfc3RhdGUgKnN0OworCisJc3QgPSBremFsbG9jKHNpemVvZigqc3QpLCBH RlBfS0VSTkVMKTsKKwlpZiAoIXN0KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXN0LT5waXBlID0g cGlwZTsKKwlkcm1fYXRvbWljX3ByaXZhdGVfb2JqX2luaXQoJnBpcGUtPm9iaiwgJnN0LT5vYmos CisJCQkJICAgICZrb21lZGFfcGlwZWxpbmVfb2JqX2Z1bmNzKTsKKworCXJldHVybiAwOworfQor CitpbnQga29tZWRhX2ttc19hZGRfcHJpdmF0ZV9vYmpzKHN0cnVjdCBrb21lZGFfa21zX2RldiAq a21zLAorCQkJCXN0cnVjdCBrb21lZGFfZGV2ICptZGV2KQoreworCXN0cnVjdCBrb21lZGFfcGlw ZWxpbmUgKnBpcGU7CisJaW50IGksIGVycjsKKworCWZvciAoaSA9IDA7IGkgPCBtZGV2LT5uX3Bp cGVsaW5lczsgaSsrKSB7CisJCXBpcGUgPSBtZGV2LT5waXBlbGluZXNbaV07CisKKwkJZXJyID0g a29tZWRhX3BpcGVsaW5lX29ial9hZGQoa21zLCBwaXBlKTsKKwkJaWYgKGVycikKKwkJCXJldHVy biBlcnI7CisKKwkJLyogQWRkIGNvbXBvbmVudCAqLworCX0KKworCXJldHVybiAwOworfQorCit2 b2lkIGtvbWVkYV9rbXNfY2xlYW51cF9wcml2YXRlX29ianMoc3RydWN0IGtvbWVkYV9kZXYgKm1k ZXYpCit7CisJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqcGlwZTsKKwlzdHJ1Y3Qga29tZWRhX2Nv bXBvbmVudCAqYzsKKwlpbnQgaSwgaWQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgbWRldi0+bl9waXBl bGluZXM7IGkrKykgeworCQlwaXBlID0gbWRldi0+cGlwZWxpbmVzW2ldOworCQlkcF9mb3JfZWFj aF9zZXRfYml0KGlkLCBwaXBlLT5hdmFpbF9jb21wcykgeworCQkJYyA9IGtvbWVkYV9waXBlbGlu ZV9nZXRfY29tcG9uZW50KHBpcGUsIGlkKTsKKworCQkJZHJtX2F0b21pY19wcml2YXRlX29ial9m aW5pKCZjLT5vYmopOworCQl9CisJCWRybV9hdG9taWNfcHJpdmF0ZV9vYmpfZmluaSgmcGlwZS0+ b2JqKTsKKwl9Cit9Ci0tIAoyLjE3LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=