From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Hean-Loong, Ong" Subject: [PATCHv11 3/3] ARM:drm ivip Intel FPGA Video and Image Processing Suite Date: Mon, 11 Feb 2019 10:11:10 +0800 Message-ID: <20190211021110.2717-4-hean.loong.ong@intel.com> References: <20190211021110.2717-1-hean.loong.ong@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190211021110.2717-1-hean.loong.ong@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring , Dinh Nguyen , Daniel Vetter , =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= , Rienk de Jong Cc: devicetree@vger.kernel.org, hean.loong.ong@intel.com, chin.liang.see@intel.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Ong@freedesktop.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org RnJvbTogT25nLCBIZWFuIExvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+CgpTaWduZWQt b2ZmLWJ5OiBPbmcsIEhlYW4gTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnICAgICAgICAgIHwgICAxNCArKysKIGRyaXZlcnMv Z3B1L2RybS9pdmlwL01ha2VmaWxlICAgICAgICAgfCAgICA3ICsrCiBkcml2ZXJzL2dwdS9kcm0v aXZpcC9pbnRlbF92aXBfY29ubi5jIHwgICA5MSArKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dw dS9kcm0vaXZpcC9pbnRlbF92aXBfY29yZS5jIHwgIDE4OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaCAgfCAgIDcz ICsrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5jICAgfCAg MTgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMgY2hhbmdlZCwgNTU1 IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9ncHUvZHJtL2l2aXAvS2NvbmZpZwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pdmlwL01ha2VmaWxlCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAv aW50ZWxfdmlwX2Nvbm4uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlw L2ludGVsX3ZpcF9jb3JlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZp cC9pbnRlbF92aXBfZHJ2LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZp cC9pbnRlbF92aXBfb2YuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL0tjb25m aWcgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjFkMDhiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aXZpcC9LY29uZmlnCkBAIC0wLDAgKzEsMTQgQEAKK2NvbmZpZyBEUk1fSVZJUAorICAgICAgICB0 cmlzdGF0ZSAiSW50ZWwgRkdQQSBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyIKKyAgICAgICAg ZGVwZW5kcyBvbiBEUk0gJiYgT0YKKyAgICAgICAgc2VsZWN0IERSTV9HRU1fQ01BX0hFTFBFUgor ICAgICAgICBzZWxlY3QgRFJNX0tNU19IRUxQRVIKKyAgICAgICAgc2VsZWN0IERSTV9LTVNfRkJf SEVMUEVSCisgICAgICAgIHNlbGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKKyAgICAgICAgaGVscAor CQkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhbiBJbnRlbCBGUEdBIEFycmlhIDEw IHN5c3RlbQorCQkgIGFuZCBhYm92ZSB3aXRoIGFuIEludGVsIERpc3BsYXkgUG9ydCBJUC4gVGhp cyBkb2VzIG5vdCBzdXBwb3J0CisJCSAgbGVnYWN5IEludGVsIEZQR0EgQ3ljbG9uZSBWIGRpc3Bs YXkgcG9ydC4gQ3VycmVudGx5IG9ubHkgc2luZ2xlCisJCSAgZnJhbWUgYnVmZmVyIGlzIHN1cHBv cnRlZC4gTm90ZSB0aGF0IEFDUEkgYW5kIFhfODYgYXJjaGl0ZWN0dXJlCisJCSAgaXMgbm90IHN1 cHBvcnRlZCBmb3IgQXJyaWExMC4gSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9kdWxlIHdpbGwgYmUK KwkJICBjYWxsZWQgaXZpcC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uM2ZkMmU3NQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pdmlwL01ha2VmaWxlCkBAIC0wLDAgKzEsNyBAQAorIworIyBNYWtlZmlsZSBmb3IgdGhlIGRy bSBkZXZpY2UgZHJpdmVyLiAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlCisj IERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgKERSSSkgaW4gWEZyZWU4NiA0LjEuMCBh bmQgaGlnaGVyLgorCitvYmotJChDT05GSUdfRFJNX0lWSVApICs9IGl2aXAubworaXZpcC1vYmpz IDo9IGludGVsX3ZpcF9vZi5vIGludGVsX3ZpcF9jb3JlLm8gXAorCWludGVsX3ZpcF9jb25uLm8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29ubi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjkzY2UwYjMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aXZpcC9pbnRlbF92aXBfY29ubi5jCkBAIC0wLDAgKzEsOTEgQEAKKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEludGVsIENvcnBv cmF0aW9uLgorICoKKyAqIGludGVsX3ZpcF9jb25uLmMgLS0gSW50ZWwgVmlkZW8gYW5kIEltYWdl IFByb2Nlc3NpbmcoVklQKQorICogRnJhbWUgQnVmZmVyIElJIGRyaXZlcgorICoKKyAqIFRoaXMg ZHJpdmVyIHN1cHBvcnRzIHRoZSBJbnRlbCBWSVAgRnJhbWUgUmVhZGVyIGNvbXBvbmVudC4KKyAq IE1vcmUgaW5mbyBvbiB0aGUgaGFyZHdhcmUgY2FuIGJlIGZvdW5kIGluIHRoZSBJbnRlbCBWaWRl bworICogYW5kIEltYWdlIFByb2Nlc3NpbmcgU3VpdGUgVXNlciBHdWlkZSBhdCB0aGlzIGFkZHJl c3MKKyAqIGh0dHA6Ly93d3cuYWx0ZXJhLmNvbS9saXRlcmF0dXJlL3VnL3VnX3ZpcC5wZGYuCisg KgorICogQXV0aG9yczoKKyAqIFdhbHRlciBHb29zc2VucyA8d2FsdGVyZ29vc3NlbnNAaG9tZS5u bD4KKyAqIFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KKyAqIENocmlzIFJhdWVy IDxjcmF1ZXJAYWx0ZXJhLmNvbT4KKyAqIE9uZywgSGVhbi1Mb29uZyA8aGVhbi5sb29uZy5vbmdA aW50ZWwuY29tPgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXJf c2xhdmUuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgorCitzdGF0aWMgZW51 bSBkcm1fY29ubmVjdG9yX3N0YXR1cworaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2RldGVjdChz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQoreworCXJldHVybiBj b25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKK30KKworc3RhdGljIHZvaWQgaW50ZWx2aXBmYl9k cm1fY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sK Kwlkcm1fY29ubmVjdG9yX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKKwlkcm1fY29ubmVjdG9yX2Ns ZWFudXAoY29ubmVjdG9yKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X2Z1bmNzIGludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKKwkuZGV0ZWN0ID0gaW50 ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2RldGVjdCwKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBl cl9jb25uZWN0b3JfcmVzZXQsCisJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3Npbmds ZV9jb25uZWN0b3JfbW9kZXMsCisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWlj X2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9zdGF0 ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAorCS5kZXN0cm95 ID0gaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Rlc3Ryb3ksCit9OworCitzdGF0aWMgaW50IGlu dGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gY29ubmVjdG9yLT5kZXY7CisJ aW50IGNvdW50OworCisJY291bnQgPSBkcm1fYWRkX21vZGVzX25vZWRpZChjb25uZWN0b3IsIGRy bS0+bW9kZV9jb25maWcubWF4X3dpZHRoLAorCQkJZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0 KTsKKwlkcm1fc2V0X3ByZWZlcnJlZF9tb2RlKGNvbm5lY3RvciwgZHJtLT5tb2RlX2NvbmZpZy5t YXhfd2lkdGgsCisJCQlkcm0tPm1vZGVfY29uZmlnLm1heF9oZWlnaHQpOworCXJldHVybiBjb3Vu dDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcwor aW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyA9IHsKKwkuZ2V0X21vZGVzID0g aW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2dldF9tb2RlcywKK307CisKK3N0cnVjdCBkcm1fY29u bmVjdG9yICoKK2ludGVsdmlwZmJfY29ubl9zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQor eworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uOworCWludCByZXQ7CisKKwljb25uID0gZGV2 bV9remFsbG9jKGRybS0+ZGV2LCBzaXplb2YoKmNvbm4pLCBHRlBfS0VSTkVMKTsKKwlpZiAoSVNf RVJSKGNvbm4pKQorCQlyZXR1cm4gTlVMTDsKKworCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChj b25uLCAmaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7CisJcmV0ID0gZHJt X2Nvbm5lY3Rvcl9pbml0KGRybSwgY29ubiwgJmludGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9mdW5j cywKKwkJCURSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCk7CisJaWYgKHJldCA8IDApIHsK KwkJZGV2X2Vycihkcm0tPmRldiwgImZhaWxlZCB0byBpbml0aWFsaXplIGRybSBjb25uZWN0b3Jc biIpOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycm9yX2Nvbm5lY3Rvcl9jbGVhbnVwOwor CX0KKworCXJldHVybiBjb25uOworCitlcnJvcl9jb25uZWN0b3JfY2xlYW51cDoKKwlkcm1fY29u bmVjdG9yX2NsZWFudXAoY29ubik7CisKKwlyZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaXZp cC9pbnRlbF92aXBfY29yZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4 MGYwZjMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBf Y29yZS5jCkBAIC0wLDAgKzEsMTg5IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BM LTIuMAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbi4KKyAqCisg KiBpbnRlbF92aXBfY29yZS5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJ UCkKKyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIKKyAqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0 cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuCisgKiBNb3JlIGluZm8gb24g dGhlIGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KKyAqIGFuZCBJbWFn ZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzCisgKiBodHRwOi8v d3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLgorICoKKyAqIEF1dGhvcnM6 CisgKiBXYWx0ZXIgR29vc3NlbnMgPHdhbHRlcmdvb3NzZW5zQGhvbWUubmw+CisgKiBUaG9tYXMg Q2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+CisgKiBDaHJpcyBSYXVlciA8Y3JhdWVyQGFsdGVy YS5jb20+CisgKiBPbmcsIEhlYW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KKyAq CisgKi8KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMu aD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJt X2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRl IDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVs cGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0v ZHJtX3NpbXBsZV9rbXNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZm ZXJfaGVscGVyLmg+CisKKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+CisjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisKKyNpbmNsdWRlICJpbnRlbF92 aXBfZHJ2LmgiCisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGludGVsdmlwZmJfcHJpdiAqCitwaXBl X3RvX2ludGVsdmlwZHJtKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSkKK3sK KwlyZXR1cm4gY29udGFpbmVyX29mKHBpcGUsIHN0cnVjdCBpbnRlbHZpcGZiX3ByaXYsIHBpcGUp OworfQorCitzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2VuYWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9k aXNwbGF5X3BpcGUgKnBpcGUsCisJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqCisJICAgICAgIHBsYW5lX3N0YXRlKQorewor CS8qCisJICogVGhlIGZyYW1laW5mbyB2YXJpYWJsZSBoYXMgdG8gY29ycmVzcG9uZCB0byB0aGUg c2l6ZSBvZiB0aGUgVklQIFN1aXRlCisJICogRnJhbWUgUmVhZGVyIHJlZ2lzdGVyIDcgd2hpY2gg d2lsbCBkZXRlcm1pbmUgdGhlIG1heGltdW0gc2l6ZSB1c2VkCisJICogaW4gdGhpcyBmcmFtZWlu Zm8KKwkgKi8KKworCXUzMiBmcmFtZWluZm87CisJc3RydWN0IGludGVsdmlwZmJfcHJpdiAqcHJp diA9IHBpcGUtPnBsYW5lLmRldi0+ZGV2X3ByaXZhdGU7CisJdm9pZCBfX2lvbWVtICpiYXNlID0g cHJpdi0+YmFzZTsKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSA9IHBpcGUtPnBsYW5l LnN0YXRlOworCWRtYV9hZGRyX3QgYWRkcjsKKworCWFkZHIgPSBkcm1fZmJfY21hX2dldF9nZW1f YWRkcihzdGF0ZS0+ZmIsIHN0YXRlLCAwKTsKKworCWZyYW1laW5mbyA9CisJCXJlYWRsKGJhc2Ug KyBJTlRFTFZJUEZCX0ZSQU1FX1JFQURFUikgJiAweDAwZmZmZmZmOworCXdyaXRlbChmcmFtZWlu Zm8sIGJhc2UgKyBJTlRFTFZJUEZCX0ZSQU1FX0lORk8pOworCXdyaXRlbChhZGRyLCBiYXNlICsg SU5URUxWSVBGQl9GUkFNRV9TVEFSVCk7CisJLyogRmluYWxseSBzZXQgdGhlIGNvbnRyb2wgcmVn aXN0ZXIgdG8gMSB0byBzdGFydCBzdHJlYW1pbmcgKi8KKwl3cml0ZWwoMSwgYmFzZSArIElOVEVM VklQRkJfQ09OVFJPTCk7Cit9CisKK3N0YXRpYyB2b2lkIGludGVsdmlwZmJfZGlzYWJsZShzdHJ1 Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUpCit7CisJc3RydWN0IGludGVsdmlwZmJf cHJpdiAqcHJpdiA9IHBpcGUtPnBsYW5lLmRldi0+ZGV2X3ByaXZhdGU7CisJdm9pZCBfX2lvbWVt ICpiYXNlID0gcHJpdi0+YmFzZTsKKwkvKiBzZXQgdGhlIGNvbnRyb2wgcmVnaXN0ZXIgdG8gMCB0 byBzdG9wIHN0cmVhbWluZyAqLworCXdyaXRlbCgwLCBiYXNlICsgSU5URUxWSVBGQl9DT05UUk9M KTsKK30KKworCitzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBpbnRl bHZpcGZiX21vZGVfY29uZmlnX2Z1bmNzID0geworCS5mYl9jcmVhdGUgPSBkcm1fZ2VtX2ZiX2Ny ZWF0ZSwKKwkuYXRvbWljX2NoZWNrID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssCisJLmF0b21p Y19jb21taXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21taXQsCit9OworCisKK3N0YXRpYyB2b2lk IGludGVsdmlwZmJfc2V0dXBfbW9kZV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sK Kwlkcm1fbW9kZV9jb25maWdfaW5pdChkcm0pOworCWRybS0+bW9kZV9jb25maWcuZnVuY3MgPSAm aW50ZWx2aXBmYl9tb2RlX2NvbmZpZ19mdW5jczsKK30KKwordm9pZCBpbnRlbHZpcGZiX2Rpc3Bs YXlfcGlwZV91cGRhdGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAorCQkJ CSBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpCit7CisJc3RydWN0IGludGVsdmlw ZmJfcHJpdiAqZmJwcml2ID0gcGlwZV90b19pbnRlbHZpcGRybShwaXBlKTsKKwlzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiA9IHBpcGUtPnBsYW5lLnN0YXRlLT5mYjsKKwlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSAmZmJwcml2LT5waXBlLmNydGM7CisKKwlpZiAoZmIgJiYgKGZiICE9IG9sZF9z dGF0ZS0+ZmIpKSB7CisJCWlmIChmYnByaXYtPmZiX2RpcnR5KQorCQkJZmJwcml2LT5mYl9kaXJ0 eShmYiwgTlVMTCwgMCwgMCwgTlVMTCwgMCk7CisJfQorCisJaWYgKGNydGMtPnN0YXRlLT5ldmVu dCkgeworCQlzcGluX2xvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2spOworCQlkcm1fY3J0 Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOworCQlzcGluX3Vu bG9ja19pcnEoJmNydGMtPmRldi0+ZXZlbnRfbG9jayk7CisJCWNydGMtPnN0YXRlLT5ldmVudCA9 IE5VTEw7CisJfQorfQorRVhQT1JUX1NZTUJPTChpbnRlbHZpcGZiX2Rpc3BsYXlfcGlwZV91cGRh dGUpOworCitzdGF0aWMgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIGZicHJp dl9mdW5jcyA9IHsKKwkucHJlcGFyZV9mYiA9IGRybV9nZW1fZmJfc2ltcGxlX2Rpc3BsYXlfcGlw ZV9wcmVwYXJlX2ZiLAorCS51cGRhdGUgPSBpbnRlbHZpcGZiX2Rpc3BsYXlfcGlwZV91cGRhdGUs CisJLmVuYWJsZSA9IGludGVsdmlwZmJfZW5hYmxlLAorCS5kaXNhYmxlID0gaW50ZWx2aXBmYl9k aXNhYmxlLAorfTsKKworCitpbnQgaW50ZWx2aXBmYl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYp Cit7CisJaW50IHJldHZhbDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOworCXN0cnVjdCBpbnRl bHZpcGZiX3ByaXYgKmZicHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwl1MzIgZm9ybWF0c1tdID0ge0RSTV9GT1JNQVRfWFJH Qjg4ODh9OworCisJZHJtID0gZmJwcml2LT5kcm07CisKKwlkcm0tPmRldl9wcml2YXRlID0gZmJw cml2OworCisJaW50ZWx2aXBmYl9zZXR1cF9tb2RlX2NvbmZpZyhkcm0pOworCisJY29ubmVjdG9y ID0gaW50ZWx2aXBmYl9jb25uX3NldHVwKGRybSk7CisJaWYgKCFjb25uZWN0b3IpIHsKKwkJZGV2 X2Vycihkcm0tPmRldiwgIkNvbm5lY3RvciBzZXR1cCBmYWlsZWRcbiIpOworCQlnb3RvIGVycl9t b2RlX2NvbmZpZzsKKwl9CisKKwlyZXR2YWwgPSBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9pbml0 KGRybSwKKwkJCSZmYnByaXYtPnBpcGUsCisJCQkmZmJwcml2X2Z1bmNzLAorCQkJZm9ybWF0cywK KwkJCUFSUkFZX1NJWkUoZm9ybWF0cyksCisJCQlOVUxMLCBjb25uZWN0b3IpOworCisJaWYgKHJl dHZhbCA8IDApIHsKKwkJZGV2X2Vycihkcm0tPmRldiwgIkNhbm5vdCBzZXR1cCBzaW1wbGUgZGlz cGxheSBwaXBlXG4iKTsKKwkJZ290byBlcnJfbW9kZV9jb25maWc7CisJfQorCisJZHJtX21vZGVf Y29uZmlnX3Jlc2V0KGRybSk7CisKKwlkcm1fZGV2X3JlZ2lzdGVyKGRybSwgMCk7CisKKwlkcm1f ZmJkZXZfZ2VuZXJpY19zZXR1cChkcm0sIDMyKTsKKworCWRldl9pbmZvKGRybS0+ZGV2LCAiaXZp cDogU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZmJcbiIpOworCisJcmV0dXJuIHJldHZhbDsKKworZXJy X21vZGVfY29uZmlnOgorCisJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZHJtKTsKKwlyZXR1cm4g LUVOT0RFVjsKK30KKworaW50IGludGVsdmlwZmJfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldikK K3sKKwlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpmYnByaXYgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gIGZicHJpdi0+ZHJtOworCisJZHJtX2Rldl91 bnJlZ2lzdGVyKGRybSk7CisKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworCisJcmV0 dXJuIDA7Cit9CisKKy8qIE9yaWdpbmFsIGF1dGhvciBvZiBBbHRlcmEgRnJhbWUgQnVmZmVyKi8K K01PRFVMRV9BVVRIT1IoIldhbHRlciBHb29zc2VucyA8d2FsdGVyZ29vc3NlbnNAaG9tZS5ubD4i KTsKK01PRFVMRV9BVVRIT1IoIlRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4iKTsK K01PRFVMRV9BVVRIT1IoIkNocmlzIFJhdWVyIDxjcmF1ZXJAYWx0ZXJhLmNvbT4iKTsKKy8qIEF1 dGhvciBvZiBJbnRlbCBGUEdBIEZyYW1lIEJ1ZmZlciBJSSovCitNT0RVTEVfQVVUSE9SKCJPbmcs IEhlYW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQ VElPTigiSW50ZWwgVklQIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNF KCJHUEwgdjIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDM4ZjI5Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5 IEludGVsIENvcnBvcmF0aW9uLgorICoKKyAqIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNz aW5nKFZJUCkgRnJhbWUgQnVmZmVyIElJIGRyaXZlci4KKyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2 ZXIKKyAqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRl ciBjb21wb25lbnQuCisgKiBNb3JlIGluZm8gb24gdGhlIGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBp biB0aGUgSW50ZWwgVmlkZW8KKyAqIGFuZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3Vp ZGUgYXQgdGhpcyBhZGRyZXNzCisgKiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91 Zy91Z192aXAucGRmLgorICoKKyAqIEF1dGhvcnM6CisgKiBXYWx0ZXIgR29vc3NlbnMgPHdhbHRl cmdvb3NzZW5zQGhvbWUubmw+CisgKiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+ CisgKiBDaHJpcyBSYXVlciA8Y3JhdWVyQGFsdGVyYS5jb20+CisgKiBPbmcsIEhlYW4tTG9vbmcg PGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KKyAqCisgKi8KKyNpZm5kZWYgX0lOVEVMX1ZJUF9E UlZfSAorI2RlZmluZSBfSU5URUxfVklQX0RSVl9ICisKKyNkZWZpbmUgRFJJVkVSX05BTUUgICAg ImludGVsdmlwZmIiCisjZGVmaW5lIEJZVEVTX1BFUl9QSVhFTAkgNAorI2RlZmluZSBDUlRDX05V TQkgICAgICAgIDEKKyNkZWZpbmUgQ09OTl9OVU0JICAgICAgICAxCisKKy8qIGNvbnRyb2wgcmVn aXN0ZXJzICovCisjZGVmaW5lIElOVEVMVklQRkJfQ09OVFJPTAkgICAgICAwCisjZGVmaW5lIElO VEVMVklQRkJfU1RBVFVTCSAgICAgICAweDQKKyNkZWZpbmUgSU5URUxWSVBGQl9JTlRFUlJVUFQJ ICAgIDB4OAorI2RlZmluZSBJTlRFTFZJUEZCX0ZSQU1FX0NPVU5URVIJMHhDCisjZGVmaW5lIElO VEVMVklQRkJfRlJBTUVfRFJPUAkgICAweDEwCisjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfSU5G TwkgICAweDE0CisjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfU1RBUlQJICAweDE4CisjZGVmaW5l IElOVEVMVklQRkJfRlJBTUVfUkVBREVSCSAgICAgICAgIDB4MUMKKworaW50IGludGVsdmlwZmJf cHJvYmUoc3RydWN0IGRldmljZSAqZGV2KTsKK2ludCBpbnRlbHZpcGZiX3JlbW92ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYpOworaW50IGludGVsdmlwZmJfc2V0dXBfY3J0YyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZHJtKTsKK3N0cnVjdCBkcm1fY29ubmVjdG9yICppbnRlbHZpcGZiX2Nvbm5fc2V0dXAoc3Ry dWN0IGRybV9kZXZpY2UgKmRybSk7CisKK3N0cnVjdCBpbnRlbHZpcGZiX3ByaXYgeworCS8qKgor CSAqIEBwaXBlOiBEaXNwbGF5IHBpcGUgc3RydWN0dXJlCisJICovCisJc3RydWN0IGRybV9zaW1w bGVfZGlzcGxheV9waXBlIHBpcGU7CisKKwkvKioKKwkgKiBAZHJtOiBEUk0gZGV2aWNlCisJICov CisJc3RydWN0IGRybV9kZXZpY2UgKmRybTsKKworCS8qKgorCSAqIEBkaXJ0eV9sb2NrOiBTZXJp YWxpemVzIGZyYW1lYnVmZmVyIGZsdXNoaW5nCisJICovCisJc3RydWN0IG11dGV4IGRpcnR5X2xv Y2s7CisKKwkvKioKKwkgKiBAYmFzZTogQmFzZSBtZW1vcnkgZm9yIHRoZSBmcmFtZWJ1ZmZlcgor CSAqLworCXZvaWQgICAgX19pb21lbSAqYmFzZTsKKworCS8qKgorCSAqIEBmYl9kaXJ0eTogRnJh bWVidWZmZXIgZGlydHkgY2FsbGJhY2sKKwkgKi8KKwlpbnQgKCpmYl9kaXJ0eSkoc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZnJhbWVidWZmZXIsCisJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 LCB1bnNpZ25lZCBpbnQgZmxhZ3MsCisJCXVuc2lnbmVkIGludCBjb2xvciwgc3RydWN0IGRybV9j bGlwX3JlY3QgKmNsaXBzLAorCQl1bnNpZ25lZCBpbnQgbnVtX2NsaXBzKTsKK307CisKKyNlbmRp ZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX29mLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5jODk5ZTMwCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2l2 aXAvaW50ZWxfdmlwX29mLmMKQEAgLTAsMCArMSwxODEgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wCisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEludGVsIENvcnBvcmF0 aW9uLgorICoKKyAqIGludGVsX3ZpcF9vZi5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9j ZXNzaW5nKFZJUCkKKyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIKKyAqCisgKiBUaGlzIGRyaXZl ciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuCisgKiBNb3Jl IGluZm8gb24gdGhlIGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KKyAq IGFuZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzCisg KiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLgorICoKKyAq IEF1dGhvcnM6CisgKiBPbmcsIEhlYW4tTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4K KyAqCisgKi8KKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+ CisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2ZiX2Nt YV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CisjaW5jbHVk ZSA8ZHJtL2RybV9vZi5oPgorI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaD4K KworI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4K KyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKworI2luY2x1ZGUgImludGVsX3ZpcF9k cnYuaCIKKworREVGSU5FX0RSTV9HRU1fQ01BX0ZPUFMoZHJtX2ZvcHMpOworCitzdGF0aWMgc3Ry dWN0IGRybV9kcml2ZXIgaW50ZWx2aXBmYl9kcm0gPSB7CisJLmRyaXZlcl9mZWF0dXJlcyA9CisJ CQlEUklWRVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfAorCQkJRFJJVkVSX1BSSU1FIHwgRFJJVkVS X0FUT01JQywKKwkuZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gZHJtX2dlbV9jbWFfZnJlZV9v YmplY3QsCisJLmdlbV92bV9vcHMgPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5kdW1iX2NyZWF0 ZSA9IGRybV9nZW1fY21hX2R1bWJfY3JlYXRlLAorCS5kdW1iX2Rlc3Ryb3kgPSBkcm1fZ2VtX2R1 bWJfZGVzdHJveSwKKwkucHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dlbV9wcmltZV9oYW5kbGVf dG9fZmQsCisJLnByaW1lX2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxl LAorCS5nZW1fcHJpbWVfZXhwb3J0ID0gZHJtX2dlbV9wcmltZV9leHBvcnQsCisJLmdlbV9wcmlt ZV9pbXBvcnQgPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJs ZSA9IGRybV9nZW1fY21hX3ByaW1lX2dldF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9z Z190YWJsZSA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1l X3ZtYXAgPSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5nZW1fcHJpbWVfdnVubWFwID0gZHJt X2dlbV9jbWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcCA9IGRybV9nZW1fY21hX3By aW1lX21tYXAsCisJLm5hbWUgPSBEUklWRVJfTkFNRSwKKwkuZGF0ZSA9ICIyMDE5MDEyOSIsCisJ LmRlc2MgPSAiSW50ZWwgRlBHQSBWSVAgU1VJVEUiLAorCS5tYWpvciA9IDEsCisJLm1pbm9yID0g MCwKKwkuaW9jdGxzID0gTlVMTCwKKwkucGF0Y2hsZXZlbCA9IDAsCisJLmZvcHMgPSAmZHJtX2Zv cHMsCit9OworCisvKgorICogU2V0dGluZyB1cCBpbmZvcm1hdGlvbiBkZXJpdmVkIGZyb20gT0Yg RGV2aWNlIFRyZWUgTm9kZXMKKyAqIG1heC13aWR0aCwgbWF4LWhlaWdodCwgYml0cyBwZXIgcGl4 ZWwsIG1lbW9yeSBwb3J0IHdpZHRoCisgKi8KKworc3RhdGljIGludCBpbnRlbHZpcGZiX2RybV9z ZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZi cHJpdikKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gZmJwcml2LT5kcm07CisJc3RydWN0 IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZTsKKwlpbnQgbWVtX3dvcmRfd2lkdGg7CisJ aW50IG1heF9oLCBtYXhfdzsKKwlpbnQgcmV0OworCisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91 MzIobnAsICJhbHRyLG1heC13aWR0aCIsICZtYXhfdyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJy KGRldiwKKwkJCSJNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciAnYWx0cixtYXgtd2lkdGgnIik7 CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAsICJh bHRyLG1heC1oZWlnaHQiLCAmbWF4X2gpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsCisJ CQkiTWlzc2luZyByZXF1aXJlZCBwYXJhbWV0ZXIgJ2FsdHIsbWF4LWhlaWdodCciKTsKKwkJcmV0 dXJuIHJldDsKKwl9CisKKwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImFsdHIsbWVt LXBvcnQtd2lkdGgiLCAmbWVtX3dvcmRfd2lkdGgpOworCWlmIChyZXQpIHsKKwkJZGV2X2Vycihk ZXYsICJNaXNzaW5nIHJlcXVpcmVkIHBhcmFtZXRlciAnYWx0cixtZW0tcG9ydC13aWR0aCAnIik7 CisJCXJldHVybiByZXQ7CisJfQorCisJaWYgKCEobWVtX3dvcmRfd2lkdGggPj0gMzIgJiYgbWVt X3dvcmRfd2lkdGggJSAzMiA9PSAwKSkgeworCQlkZXZfZXJyKGRldiwKKwkJCSJtZW0td29yZC13 aWR0aCBpcyBzZXQgdG8gJWkuIG11c3QgYmUgPj0gMzIgYW5kIG11bHRpcGxlIG9mIDMyLiIsCisJ CQkgbWVtX3dvcmRfd2lkdGgpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlkcm0tPm1vZGVf Y29uZmlnLm1pbl93aWR0aCA9IDY0MDsKKwlkcm0tPm1vZGVfY29uZmlnLm1pbl9oZWlnaHQgPSA0 ODA7CisJZHJtLT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSBtYXhfdzsKKwlkcm0tPm1vZGVfY29u ZmlnLm1heF9oZWlnaHQgPSBtYXhfaDsKKwlkcm0tPm1vZGVfY29uZmlnLnByZWZlcnJlZF9kZXB0 aCA9IDMyOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9vZl9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWludCByZXR2YWw7CisJc3RydWN0 IHJlc291cmNlICpyZWdfcmVzOworCXN0cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZicHJpdjsKKwlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2OworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07 CisKKwlmYnByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmZicHJpdiksIEdGUF9LRVJO RUwpOworCWlmICghZmJwcml2KQorCQlyZXR1cm4gLUVOT01FTTsKKworCS8qc2V0dXAgRFJNICov CisJZHJtID0gZHJtX2Rldl9hbGxvYygmaW50ZWx2aXBmYl9kcm0sIGRldik7CisJaWYgKElTX0VS Uihkcm0pKQorCQlyZXR1cm4gUFRSX0VSUihkcm0pOworCisJcmV0dmFsID0gZG1hX3NldF9tYXNr X2FuZF9jb2hlcmVudChkcm0tPmRldiwgRE1BX0JJVF9NQVNLKDMyKSk7CisJaWYgKHJldHZhbCkK KwkJcmV0dXJuIC1FTk9ERVY7CisKKwlmYnByaXYtPmRybSA9IGRybTsKKworCXJlZ19yZXMgPSBw bGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWlmICghcmVn X3JlcykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmYnByaXYtPmJhc2UgPSBkZXZtX2lvcmVtYXBf cmVzb3VyY2UoZGV2LCByZWdfcmVzKTsKKworCWlmIChJU19FUlIoZmJwcml2LT5iYXNlKSkgewor CQlkZXZfZXJyKGRldiwgImRldm1faW9yZW1hcF9yZXNvdXJjZSBmYWlsZWRcbiIpOworCQlyZXR2 YWwgPSBQVFJfRVJSKGZicHJpdi0+YmFzZSk7CisJCXJldHVybiAtRU5PTUVNOworCX0KKworCWlu dGVsdmlwZmJfZHJtX3NldHVwKGRldiwgZmJwcml2KTsKKworCWRldl9zZXRfZHJ2ZGF0YShkZXYs IGZicHJpdik7CisKKwlyZXR1cm4gaW50ZWx2aXBmYl9wcm9iZShkZXYpOworfQorCitzdGF0aWMg aW50IGludGVsdmlwZmJfb2ZfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7 CisJcmV0dXJuIGludGVsdmlwZmJfcmVtb3ZlKCZwZGV2LT5kZXYpOworfQorCisvKgorICogVGhl IG5hbWUgdmlwLWZyYW1lLWJ1ZmZlci0yLjAgaXMgZGVyaXZlZCBmcm9tCisgKiBodHRwOi8vd3d3 LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmCisgKiBmcmFtZSBidWZmZXIgSVAg Y29yZXMgc2VjdGlvbiAxNAorICovCisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lk IGludGVsdmlwZmJfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0gImFsdHIsdmlwLWZy YW1lLWJ1ZmZlci0yLjAiIH0sCisJe30sCit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBp bnRlbHZpcGZiX29mX21hdGNoKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgaW50 ZWx2aXBmYl9kcml2ZXIgPSB7CisJLnByb2JlID0gaW50ZWx2aXBmYl9vZl9wcm9iZSwKKwkucmVt b3ZlID0gaW50ZWx2aXBmYl9vZl9yZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJLm5hbWUgPSBEUklW RVJfTkFNRSwKKwkJLm9mX21hdGNoX3RhYmxlID0gaW50ZWx2aXBmYl9vZl9tYXRjaCwKKwl9LAor fTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihpbnRlbHZpcGZiX2RyaXZlcik7Ci0tIAoxLjcu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==