From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyungwon Hwang Subject: [PATCH v4 1/8] drm/exynos: add Exynos5433 decon driver Date: Tue, 07 Apr 2015 20:57:31 +0900 Message-ID: <1428407858-25523-2-git-send-email-human.hwang@samsung.com> References: <1428407858-25523-1-git-send-email-human.hwang@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1428407858-25523-1-git-send-email-human.hwang@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, devicetree@vger.kernel.org, inki.dae@samsung.com, daniel@fooishbar.org Cc: dh09.lee@samsung.com, sw0312.kim@samsung.com, Hyungwon Hwang , cw00.choi@samsung.com List-Id: devicetree@vger.kernel.org RnJvbTogSm9vbnlvdW5nIFNoaW0gPGp5MDkyMi5zaGltQHNhbXN1bmcuY29tPgoKREVDT04oRGlz cGxheSBhbmQgRW5oYW5jZW1lbnQgQ29udHJvbGxlcikgaXMgbmV3IElQIHJlcGxhY2luZyBGSU1E IGluCkV4eW5vczU0MzMuIFRoaXMgcGF0Y2ggYWRkcyBFeHlub3M1NDMzIGRlY29uIGRyaXZlci4K ClNpZ25lZC1vZmYtYnk6IEpvb255b3VuZyBTaGltIDxqeTA5MjIuc2hpbUBzYW1zdW5nLmNvbT4K U2lnbmVkLW9mZi1ieTogSHl1bmd3b24gSHdhbmcgPGh1bWFuLmh3YW5nQHNhbXN1bmcuY29tPgot LS0KQ2hhbmdlcyBmb3IgdjI6Ci0gY2hhbmdlIGZpbGUgbmFtZXMgYW5kIHZhcmlhYmxlIG5hbWVz IG9mIGRlY29uIHRvIHJlcHJlc250IGV4eW5vczU0MzMgaW5zdGVhZApvZiBleHlub3MgdG8gZGlz dGluZ3Vpc2ggdGhlbSBmcm9tIGV4eW5vczcgZGVjb24KCkNoYW5nZXMgZm9yIHYzOgotIGZhaWwg ZmFzdCB3aGVuIHRoZSBwcm9wZXIgaW1hZ2UgZm9ybWF0IGlzIG5vdCBzZXQKLSByZW1vdmUgdW5u ZWNlc3NhcnkgY2hlY2tpbmcgY29kZQotIGFkZCBhbmQgbW9kaWZ5IHRoZSBmdW5jdGlvbiB0byBt YWtlIERQTVMgd29yayB3ZWxsCgpDaGFuZ2VzIGZvciB2NDoKLSByZWJhc2VkIHRvIGV4eW5vcy1k cm0tbmV4dCB3aXRoIHRoZSBjbGVhbi11cCBwYXRjaHNldCBieSBHdXN0YXZvIFBhZG92YW4uCiAu Li4vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9leHlub3M1NDMzLWRlY29uLnR4dCB8ICA2NSAr KysKIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwg ICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAg IHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zNTQzM19kcm1fZGVjb24uYyAg ICAgIHwgNjE3ICsrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX2Rydi5jICAgICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9leHlub3NfZHJtX2Rydi5oICAgICAgICAgICAgfCAgIDEgKwogaW5jbHVkZS92aWRlby9leHlu b3M1NDMzX2RlY29uLmggICAgICAgICAgICAgICAgICAgfCAxNjMgKysrKysrCiA3IGZpbGVzIGNo YW5nZWQsIDg1NiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgRG9jdW1lbnRhdGlv bi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVvL2V4eW5vczU0MzMtZGVjb24udHh0CiBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3M1NDMzX2RybV9kZWNvbi5j CiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS92aWRlby9leHlub3M1NDMzX2RlY29uLmgKCmRp ZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZXh5bm9z NTQzMy1kZWNvbi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8v ZXh5bm9zNTQzMy1kZWNvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u Mzc3YWZiZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5k aW5ncy92aWRlby9leHlub3M1NDMzLWRlY29uLnR4dApAQCAtMCwwICsxLDY1IEBACitEZXZpY2Ut VHJlZSBiaW5kaW5ncyBmb3IgU2Ftc3VuZyBFeHlub3MgU29DIGRpc3BsYXkgY29udHJvbGxlciAo REVDT04pCisKK0RFQ09OIChEaXNwbGF5IGFuZCBFbmhhbmNlbWVudCBDb250cm9sbGVyKSBpcyB0 aGUgRGlzcGxheSBDb250cm9sbGVyIGZvciB0aGUKK0V4eW5vcyBzZXJpZXMgb2YgU29DcyB3aGlj aCB0cmFuc2ZlcnMgdGhlIGltYWdlIGRhdGEgZnJvbSBhIHZpZGVvIG1lbW9yeQorYnVmZmVyIHRv IGFuIGV4dGVybmFsIExDRCBpbnRlcmZhY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNv bXBhdGlibGU6IHZhbHVlIHNob3VsZCBiZSAic2Ftc3VuZyxleHlub3M1NDMzLWRlY29uIjsKKy0g cmVnOiBwaHlzaWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgREVDT04gcmVnaXN0 ZXJzIHNldC4KKy0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gYSBsaXN0IG9mIGFsbCBERUNP TiBJUCBibG9jayBpbnRlcnJ1cHRzIGluIHRoZQorCSAgICAgIG9yZGVyOiBWU1lOQywgTENEX1NZ U1RFTS4gVGhlIGludGVycnVwdCBzcGVjaWZpZXIgZm9ybWF0CisJICAgICAgZGVwZW5kcyBvbiB0 aGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgdXNlZC4KKy0gaW50ZXJydXB0LW5hbWVzOiBzaG91bGQg Y29udGFpbiB0aGUgaW50ZXJydXB0IG5hbWVzOiAidnN5bmMiLCAibGNkX3N5cyIKKwkJICAgaW4g dGhlIHNhbWUgb3JkZXIgYXMgdGhleSB3ZXJlIGxpc3RlZCBpbiB0aGUgaW50ZXJydXB0cworCQkg ICBwcm9wZXJ0eS4KKy0gY2xvY2tzOiBtdXN0IGluY2x1ZGUgY2xvY2sgc3BlY2lmaWVycyBjb3Jy ZXNwb25kaW5nIHRvIGVudHJpZXMgaW4gdGhlCisJICBjbG9jay1uYW1lcyBwcm9wZXJ0eS4KKy0g Y2xvY2stbmFtZXM6IGxpc3Qgb2YgY2xvY2sgbmFtZXMgc29ydGVkIGluIHRoZSBzYW1lIG9yZGVy IGFzIHRoZSBjbG9ja3MKKwkgICAgICAgcHJvcGVydHkuIE11c3QgY29udGFpbiAiYWNsa19kZWNv biIsICJhY2xrX3NtbXVfZGVjb24weCIsCisJICAgICAgICJhY2xrX3hpdV9kZWNvbjB4IiwgInBj bGtfc21tdV9kZWNvbjB4IiwgY2xrX2RlY29uX3ZjbGsiLAorCSAgICAgICAic2Nsa19kZWNvbl9l Y2xrIgorLSBwb3J0czogY29udGFpbnMgYSBwb3J0IHdoaWNoIGlzIGNvbm5lY3RlZCB0byBtaWMg bm9kZS4gYWRkcmVzcy1jZWxscyBhbmQKKwkgc2l6ZS1jZWxscyBtdXN0IDEgYW5kIDAsIHJlc3Bl Y3RpdmVseS4KKy0gcG9ydDogY29udGFpbnMgYW4gZW5kcG9pbnQgbm9kZSB3aGljaCBpcyBjb25u ZWN0ZWQgdG8gdGhlIGVuZHBvaW50IGluIHRoZSBtaWMKKwlub2RlLiBUaGUgcmVnIHZhbHVlIG11 c2V0IGJlIDAuCistIGk4MC1pZi10aW1pbmdzOiBzcGVjaWZ5IHdoZXRoZXIgdGhlIHBhbmVsIHdo aWNoIGlzIGNvbm5lY3RlZCB0byBkZWNvbiB1c2VzCisJCSAgaTgwIGxjZCBpbnRlcmZhY2Ugb3Ig bWlwaSB2aWRlbyBpbnRlcmZhY2UuIFRoaXMgbm9kZSBjb250YWlucworCQkgIG5vIHRpbWluZyBp bmZvcm1hdGlvbiBhcyB0aGF0IG9mIGZpbWQgZG9lcy4gQmVjYXVzZSB0aGVyZSBpcworCQkgIG5v IHJlZ2lzdGVyIGluIGRlY29uIHRvIHNwZWNpZnkgaTgwIGludGVyZmFjZSB0aW1pbmcgdmFsdWUs CisJCSAgaXQgaXMgbm90IG5lZWRlZCwgYnV0IG1ha2UgaXQgcmVtYWluIHRvIHVzZSBzYW1lIGtp bmQgb2Ygbm9kZQorCQkgIGluIGZpbWQgYW5kIGV4eW5vczcgZGVjb24uCisKK0V4YW1wbGU6CitT b0Mgc3BlY2lmaWMgRFQgZW50cnk6CitkZWNvbjogZGVjb25AMTM4MDAwMDAgeworCWNvbXBhdGli bGUgPSAic2Ftc3VuZyxleHlub3M1NDMzLWRlY29uIjsKKwlyZWcgPSA8MHgxMzgwMDAwMCAweDIx MDQ+OworCWNsb2NrcyA9IDwmY211X2Rpc3AgQ0xLX0FDTEtfREVDT04+LCA8JmNtdV9kaXNwIENM S19BQ0xLX1NNTVVfREVDT04wWD4sCisJCTwmY211X2Rpc3AgQ0xLX0FDTEtfWElVX0RFQ09OMFg+ LAorCQk8JmNtdV9kaXNwIENMS19QQ0xLX1NNTVVfREVDT04wWD4sCisJCTwmY211X2Rpc3AgQ0xL X1NDTEtfREVDT05fVkNMSz4sCisJCTwmY211X2Rpc3AgQ0xLX1NDTEtfREVDT05fRUNMSz47CisJ Y2xvY2stbmFtZXMgPSAiYWNsa19kZWNvbiIsICJhY2xrX3NtbXVfZGVjb24weCIsICJhY2xrX3hp dV9kZWNvbjB4IiwKKwkJInBjbGtfc21tdV9kZWNvbjB4IiwgInNjbGtfZGVjb25fdmNsayIsICJz Y2xrX2RlY29uX2VjbGsiOworCWludGVycnVwdC1uYW1lcyA9ICJ2c3luYyIsICJsY2Rfc3lzIjsK KwlpbnRlcnJ1cHRzID0gPDAgMjAyIDA+LCA8MCAyMDMgMD47CisKKwlwb3J0cyB7CisJCSNhZGRy ZXNzLWNlbGxzID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlwb3J0QDAgeworCQkJ cmVnID0gPDA+OworCQkJZGVjb25fdG9fbWljOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBv aW50ID0gPCZtaWNfdG9fZGVjb24+OworCQkJfTsKKwkJfTsKKwl9OworfTsKKworQm9hcmQgc3Bl Y2lmaWMgRFQgZW50cnk6CismZGVjb24geworCWk4MC1pZi10aW1pbmdzIHsKKwl9OworfTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvS2NvbmZpZwppbmRleCAwYTY3ODAzLi5kZDZhZTIxIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9L Y29uZmlnCkBAIC0yNCw2ICsyNCwxMiBAQCBjb25maWcgRFJNX0VYWU5PU19GSU1ECiAJaGVscAog CSAgQ2hvb3NlIHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHVzZSBFeHlub3MgRklNRCBmb3Ig RFJNLgoKK2NvbmZpZyBEUk1fRVhZTk9TNTQzM19ERUNPTgorCWJvb2wgIkV4eW5vczU0MzMgRFJN IERFQ09OIgorCWRlcGVuZHMgb24gRFJNX0VYWU5PUworCWhlbHAKKwkgIENob29zZSB0aGlzIG9w dGlvbiBpZiB5b3Ugd2FudCB0byB1c2UgRXh5bm9zNTQzMyBERUNPTiBmb3IgRFJNLgorCiBjb25m aWcgRFJNX0VYWU5PUzdfREVDT04KIAlib29sICJFeHlub3MgRFJNIERFQ09OIgogCWRlcGVuZHMg b24gRFJNX0VYWU5PUwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvTWFrZWZpbGUKaW5kZXggY2M5MDY3OS4uZmJkMDg0 ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZQorKysgYi9kcml2 ZXJzL2dwdS9kcm0vZXh5bm9zL01ha2VmaWxlCkBAIC0xMCw2ICsxMCw3IEBAIGV4eW5vc2RybS15 IDo9IGV4eW5vc19kcm1fZHJ2Lm8gZXh5bm9zX2RybV9lbmNvZGVyLm8gXAoKIGV4eW5vc2RybS0k KENPTkZJR19EUk1fRVhZTk9TX0lPTU1VKSArPSBleHlub3NfZHJtX2lvbW11Lm8KIGV4eW5vc2Ry bS0kKENPTkZJR19EUk1fRVhZTk9TX0ZJTUQpCSs9IGV4eW5vc19kcm1fZmltZC5vCitleHlub3Nk cm0tJChDT05GSUdfRFJNX0VYWU5PUzU0MzNfREVDT04pCSs9IGV4eW5vczU0MzNfZHJtX2RlY29u Lm8KIGV4eW5vc2RybS0kKENPTkZJR19EUk1fRVhZTk9TN19ERUNPTikJKz0gZXh5bm9zN19kcm1f ZGVjb24ubwogZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfRFBJKQkrPSBleHlub3NfZHJt X2RwaS5vCiBleHlub3Nkcm0tJChDT05GSUdfRFJNX0VYWU5PU19EU0kpCSs9IGV4eW5vc19kcm1f ZHNpLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zNTQzM19kcm1f ZGVjb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zNTQzM19kcm1fZGVjb24uYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2MyODQyCi0tLSAvZGV2L251bGwK KysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3M1NDMzX2RybV9kZWNvbi5jCkBAIC0w LDAgKzEsNjE3IEBACisvKiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zNTQzM19kcm1fZGVjb24uYwor ICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLkx0ZAorICog QXV0aG9yczoKKyAqCUpvb255b3VuZyBTaGltIDxqeTA5MjIuc2hpbUBzYW1zdW5nLmNvbT4KKyAq CUh5dW5nd29uIEh3YW5nIDxodW1hbi5od2FuZ0BzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSB2ZXJzaW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9ucgorICovCisKKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNs dWRlIDxsaW51eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRl IDxsaW51eC9vZl9ncGlvLmg+CisKKyNpbmNsdWRlIDx2aWRlby9leHlub3M1NDMzX2RlY29uLmg+ CisKKyNpbmNsdWRlICJleHlub3NfZHJtX2Rydi5oIgorI2luY2x1ZGUgImV4eW5vc19kcm1fY3J0 Yy5oIgorI2luY2x1ZGUgImV4eW5vc19kcm1fcGxhbmUuaCIKKworI2RlZmluZSBXSU5ET1dTX05S CTMKKyNkZWZpbmUgTUlOX0ZCX1dJRFRIX0ZPUl8xNldPUkRfQlVSU1QJMTI4CisKK3N0cnVjdCBk ZWNvbl9jb250ZXh0IHsKKwlzdHJ1Y3QgZGV2aWNlCQkJKmRldjsKKwlzdHJ1Y3QgZHJtX2Rldmlj ZQkJKmRybV9kZXY7CisJc3RydWN0IGV4eW5vc19kcm1fY3J0YwkJKmNydGM7CisJc3RydWN0IGV4 eW5vc19kcm1fcGxhbmUJCXBsYW5lc1tXSU5ET1dTX05SXTsKKwl2b2lkIF9faW9tZW0JCQkqYWRk cjsKKwlzdHJ1Y3QgY2xrCQkJKmNsa3NbNl07CisJdW5zaWduZWQgaW50CQkJZGVmYXVsdF93aW47 CisJaW50CQkJCXBpcGU7CisJYm9vbAkJCQlzdXNwZW5kZWQ7CisKKyNkZWZpbmUgQklUX0NMS1Nf RU5BQkxFRAkJMAorI2RlZmluZSBCSVRfSVJRU19FTkFCTEVECQkxCisJdW5zaWduZWQgbG9uZwkJ CWVuYWJsZWQ7CisJYm9vbAkJCQlpODBfaWY7CisJYXRvbWljX3QJCQl3aW5fdXBkYXRlZDsKK307 CisKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZGVjb25fY2xrc19uYW1lW10gPSB7CisJImFj bGtfZGVjb24iLAorCSJhY2xrX3NtbXVfZGVjb24weCIsCisJImFjbGtfeGl1X2RlY29uMHgiLAor CSJwY2xrX3NtbXVfZGVjb24weCIsCisJInNjbGtfZGVjb25fdmNsayIsCisJInNjbGtfZGVjb25f ZWNsayIsCit9OworCitzdGF0aWMgaW50IGRlY29uX2VuYWJsZV92Ymxhbmsoc3RydWN0IGV4eW5v c19kcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4ID0gY3J0Yy0+ Y3R4OworCXUzMiB2YWw7CisKKwlpZiAoY3R4LT5zdXNwZW5kZWQpCisJCXJldHVybiAtRVBFUk07 CisKKwlpZiAoIXRlc3RfYW5kX3NldF9iaXQoQklUX0lSUVNfRU5BQkxFRCwgJmN0eC0+ZW5hYmxl ZCkpIHsKKwkJdmFsID0gVklESU5UQ09OMF9JTlRFTjsKKwkJaWYgKGN0eC0+aTgwX2lmKQorCQkJ dmFsIHw9IFZJRElOVENPTjBfRlJBTUVET05FOworCQllbHNlCisJCQl2YWwgfD0gVklESU5UQ09O MF9JTlRGUk1FTjsKKworCQl3cml0ZWwodmFsLCBjdHgtPmFkZHIgKyBERUNPTl9WSURJTlRDT04w KTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZGVjb25fZGlzYWJsZV92Ymxh bmsoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZGVjb25fY29udGV4 dCAqY3R4ID0gY3J0Yy0+Y3R4OworCisJaWYgKGN0eC0+c3VzcGVuZGVkKQorCQlyZXR1cm47CisK KwlpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJJVF9JUlFTX0VOQUJMRUQsICZjdHgtPmVuYWJsZWQp KQorCQl3cml0ZWwoMCwgY3R4LT5hZGRyICsgREVDT05fVklESU5UQ09OMCk7Cit9CisKK3N0YXRp YyB2b2lkIGRlY29uX2NvbW1pdChzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKQoreworCXN0 cnVjdCBkZWNvbl9jb250ZXh0ICpjdHggPSBjcnRjLT5jdHg7CisJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGUgPSAmY3J0Yy0+YmFzZS5tb2RlOworCXUzMiB2YWw7CisKKwkvKiBlbmFibGUg Y2xvY2sgZ2F0ZSAqLworCXZhbCA9IENNVV9DTEtHQUdFX01PREVfU0ZSX0YgfCBDTVVfQ0xLR0FH RV9NT0RFX01FTV9GOworCXdyaXRlbCh2YWwsIGN0eC0+YWRkciArIERFQ09OX0NNVSk7CisKKwkv KiBsY2Qgb24gYW5kIHVzZSBjb21tYW5kIGlmICovCisJdmFsID0gVklET1VUX0xDRF9PTjsKKwlp ZiAoY3R4LT5pODBfaWYpCisJCXZhbCB8PSBWSURPVVRfQ09NTUFORF9JRjsKKwllbHNlCisJCXZh bCB8PSBWSURPVVRfUkdCX0lGOworCXdyaXRlbCh2YWwsIGN0eC0+YWRkciArIERFQ09OX1ZJRE9V VENPTjApOworCisJdmFsID0gVklEVENPTjJfTElORVZBTChtb2RlLT52ZGlzcGxheSAtIDEpIHwK KwkJVklEVENPTjJfSE9aVkFMKG1vZGUtPmhkaXNwbGF5IC0gMSk7CisJd3JpdGVsKHZhbCwgY3R4 LT5hZGRyICsgREVDT05fVklEVENPTjIpOworCisJaWYgKCFjdHgtPmk4MF9pZikgeworCQl2YWwg PSBWSURUQ09OMDBfVkJQRF9GKAorCQkJCW1vZGUtPmNydGNfdnRvdGFsIC0gbW9kZS0+Y3J0Y192 c3luY19lbmQpIHwKKwkJCVZJRFRDT04wMF9WRlBEX0YoCisJCQkJbW9kZS0+Y3J0Y192c3luY19z dGFydCAtIG1vZGUtPmNydGNfdmRpc3BsYXkpOworCQl3cml0ZWwodmFsLCBjdHgtPmFkZHIgKyBE RUNPTl9WSURUQ09OMDApOworCisJCXZhbCA9IFZJRFRDT04wMV9WU1BXX0YoCisJCQkJbW9kZS0+ Y3J0Y192c3luY19lbmQgLSBtb2RlLT5jcnRjX3ZzeW5jX3N0YXJ0KTsKKwkJd3JpdGVsKHZhbCwg Y3R4LT5hZGRyICsgREVDT05fVklEVENPTjAxKTsKKworCQl2YWwgPSBWSURUQ09OMTBfSEJQRF9G KAorCQkJCW1vZGUtPmNydGNfaHRvdGFsIC0gbW9kZS0+Y3J0Y19oc3luY19lbmQpIHwKKwkJCVZJ RFRDT04xMF9IRlBEX0YoCisJCQkJbW9kZS0+Y3J0Y19oc3luY19zdGFydCAtIG1vZGUtPmNydGNf aGRpc3BsYXkpOworCQl3cml0ZWwodmFsLCBjdHgtPmFkZHIgKyBERUNPTl9WSURUQ09OMTApOwor CisJCXZhbCA9IFZJRFRDT04xMV9IU1BXX0YoCisJCQkJbW9kZS0+Y3J0Y19oc3luY19lbmQgLSBt b2RlLT5jcnRjX2hzeW5jX3N0YXJ0KTsKKwkJd3JpdGVsKHZhbCwgY3R4LT5hZGRyICsgREVDT05f VklEVENPTjExKTsKKwl9CisKKwkvKiBzdyB0cmlnZ2VyIGVuYWJsZSAqLworCXZhbCA9IFRSSUdD T05fVFJJR0VOX1BFUl9GIHwgVFJJR0NPTl9UUklHRU5fRiB8IFRSSUdDT05fVEVfQVVUT19NQVNL IHwKKwkJVFJJR0NPTl9TV1RSSUdFTjsKKwl3cml0ZWwodmFsLCBjdHgtPmFkZHIgKyBERUNPTl9U UklHQ09OKTsKKworCS8qIGVuYWJsZSBvdXRwdXQgYW5kIGRpc3BsYXkgc2lnbmFsICovCisJdmFs ID0gVklEQ09OMF9FTlZJRCB8IFZJRENPTjBfRU5WSURfRjsKKwl3cml0ZWwodmFsLCBjdHgtPmFk ZHIgKyBERUNPTl9WSURDT04wKTsKK30KKworI2RlZmluZSBDT09SRElOQVRFX1goeCkJCSgoKHgp ICYgMHhmZmYpIDw8IDEyKQorI2RlZmluZSBDT09SRElOQVRFX1koeCkJCSgoeCkgJiAweGZmZikK KyNkZWZpbmUgT0ZGU0laRSh4KQkJKCgoeCkgJiAweDNmZmYpIDw8IDE0KQorI2RlZmluZSBQQUdF V0lEVEgoeCkJCSgoeCkgJiAweDNmZmYpCisKK3N0YXRpYyB2b2lkIGRlY29uX3dpbl9zZXRfcGl4 Zm10KHN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHgsIHVuc2lnbmVkIGludCB3aW4pCit7CisJc3Ry dWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lID0gJmN0eC0+cGxhbmVzW3dpbl07CisJdW5zaWdu ZWQgbG9uZyB2YWw7CisKKwl2YWwgPSByZWFkbChjdHgtPmFkZHIgKyBERUNPTl9XSU5DT054KHdp bikpOworCXZhbCAmPSB+V0lOQ09OeF9CUFBNT0RFX01BU0s7CisKKwlzd2l0Y2ggKHBsYW5lLT5w aXhlbF9mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjE1NTU6CisJCXZhbCB8PSBXSU5D T054X0JQUE1PREVfMTZCUFBfSTE1NTU7CisJCXZhbCB8PSBXSU5DT054X0hBV1NXUF9GOworCQl2 YWwgfD0gV0lOQ09OeF9CVVJTVExFTl8xNldPUkQ7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1B VF9SR0I1NjU6CisJCXZhbCB8PSBXSU5DT054X0JQUE1PREVfMTZCUFBfNTY1OworCQl2YWwgfD0g V0lOQ09OeF9IQVdTV1BfRjsKKwkJdmFsIHw9IFdJTkNPTnhfQlVSU1RMRU5fMTZXT1JEOworCQli cmVhazsKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CisJCXZhbCB8PSBXSU5DT054X0JQUE1P REVfMjRCUFBfODg4OworCQl2YWwgfD0gV0lOQ09OeF9XU1dQX0Y7CisJCXZhbCB8PSBXSU5DT054 X0JVUlNUTEVOXzE2V09SRDsKKwkJYnJlYWs7CisJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogor CQl2YWwgfD0gV0lOQ09OeF9CUFBNT0RFXzMyQlBQX0E4ODg4OworCQl2YWwgfD0gV0lOQ09OeF9X U1dQX0YgfCBXSU5DT054X0JMRF9QSVhfRiB8IFdJTkNPTnhfQUxQSEFfU0VMX0Y7CisJCXZhbCB8 PSBXSU5DT054X0JVUlNUTEVOXzE2V09SRDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJRFJNX0VS Uk9SKCJQcm9wZXIgcGl4ZWwgZm9ybWF0IGlzIG5vdCBzZXRcbiIpOworCQlyZXR1cm47CisJfQor CisJRFJNX0RFQlVHX0tNUygiYnBwID0gJXVcbiIsIHBsYW5lLT5icHApOworCisJLyoKKwkgKiBJ biBjYXNlIG9mIGV4eW5vcywgc2V0dGluZyBkbWEtYnVyc3QgdG8gMTZXb3JkIGNhdXNlcyBwZXJt YW5lbnQKKwkgKiB0ZWFyaW5nIGZvciB2ZXJ5IHNtYWxsIGJ1ZmZlcnMsIGUuZy4gY3Vyc29yIGJ1 ZmZlci4gQnVyc3QgTW9kZQorCSAqIHN3aXRjaGluZyB3aGljaCBpcyBiYXNlZCBvbiBwbGFuZSBz aXplIGlzIG5vdCByZWNvbW1lbmRlZCBhcworCSAqIHBsYW5lIHNpemUgdmFyaWVzIGEgbG90IHRv d2FyZHMgdGhlIGVuZCBvZiB0aGUgc2NyZWVuIGFuZCByYXBpZAorCSAqIG1vdmVtZW50IGNhdXNl cyB1bnN0YWJsZSBETUEgd2hpY2ggcmVzdWx0cyBpbnRvIGlvbW11IGNyYXNoL3RlYXIuCisJICov CisKKwlpZiAocGxhbmUtPmZiX3dpZHRoIDwgTUlOX0ZCX1dJRFRIX0ZPUl8xNldPUkRfQlVSU1Qp IHsKKwkJdmFsICY9IH5XSU5DT054X0JVUlNUTEVOX01BU0s7CisJCXZhbCB8PSBXSU5DT054X0JV UlNUTEVOXzhXT1JEOworCX0KKworCXdyaXRlbCh2YWwsIGN0eC0+YWRkciArIERFQ09OX1dJTkNP Tngod2luKSk7Cit9CisKK3N0YXRpYyB2b2lkIGRlY29uX3NoYWRvd19wcm90ZWN0X3dpbihzdHJ1 Y3QgZGVjb25fY29udGV4dCAqY3R4LCBpbnQgd2luLAorCQkJCQlib29sIHByb3RlY3QpCit7CisJ dTMyIHZhbDsKKworCXZhbCA9IHJlYWRsKGN0eC0+YWRkciArIERFQ09OX1NIQURPV0NPTik7CisK KwlpZiAocHJvdGVjdCkKKwkJdmFsIHw9IFNIQURPV0NPTl9XeF9QUk9URUNUKHdpbik7CisJZWxz ZQorCQl2YWwgJj0gflNIQURPV0NPTl9XeF9QUk9URUNUKHdpbik7CisKKwl3cml0ZWwodmFsLCBj dHgtPmFkZHIgKyBERUNPTl9TSEFET1dDT04pOworfQorCitzdGF0aWMgdm9pZCBkZWNvbl93aW5f Y29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMsIHVuc2lnbmVkIGludCB3aW4pCit7 CisJc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0eDsKKwlzdHJ1Y3QgZXh5bm9z X2RybV9wbGFuZSAqcGxhbmU7CisJdTMyIHZhbDsKKworCWlmICh3aW4gPCAwIHx8IHdpbiA+PSBX SU5ET1dTX05SKQorCQlyZXR1cm47CisKKwlwbGFuZSA9ICZjdHgtPnBsYW5lc1t3aW5dOworCisJ LyogSWYgc3VzcGVuZGVkLCBlbmFibGUgdGhpcyBvbiByZXN1bWUgKi8KKwlpZiAoY3R4LT5zdXNw ZW5kZWQpIHsKKwkJcGxhbmUtPnJlc3VtZSA9IHRydWU7CisJCXJldHVybjsKKwl9CisKKwlkZWNv bl9zaGFkb3dfcHJvdGVjdF93aW4oY3R4LCB3aW4sIHRydWUpOworCisJdmFsID0gQ09PUkRJTkFU RV9YKHBsYW5lLT5jcnRjX3gpIHwgQ09PUkRJTkFURV9ZKHBsYW5lLT5jcnRjX3kpOworCXdyaXRl bCh2YWwsIGN0eC0+YWRkciArIERFQ09OX1ZJRE9TRHhBKHdpbikpOworCisJdmFsID0gQ09PUkRJ TkFURV9YKHBsYW5lLT5jcnRjX3ggKyBwbGFuZS0+Y3J0Y193aWR0aCAtIDEpIHwKKwkJQ09PUkRJ TkFURV9ZKHBsYW5lLT5jcnRjX3kgKyBwbGFuZS0+Y3J0Y19oZWlnaHQgLSAxKTsKKwl3cml0ZWwo dmFsLCBjdHgtPmFkZHIgKyBERUNPTl9WSURPU0R4Qih3aW4pKTsKKworCXZhbCA9IFZJRE9TRF9X eF9BTFBIQV9SX0YoMHgwKSB8IFZJRE9TRF9XeF9BTFBIQV9HX0YoMHgwKSB8CisJCVZJRE9TRF9X eF9BTFBIQV9CX0YoMHgwKTsKKwl3cml0ZWwodmFsLCBjdHgtPmFkZHIgKyBERUNPTl9WSURPU0R4 Qyh3aW4pKTsKKworCXZhbCA9IFZJRE9TRF9XeF9BTFBIQV9SX0YoMHgwKSB8IFZJRE9TRF9XeF9B TFBIQV9HX0YoMHgwKSB8CisJCVZJRE9TRF9XeF9BTFBIQV9CX0YoMHgwKTsKKwl3cml0ZWwodmFs LCBjdHgtPmFkZHIgKyBERUNPTl9WSURPU0R4RCh3aW4pKTsKKworCXdyaXRlbChwbGFuZS0+ZG1h X2FkZHJbMF0sIGN0eC0+YWRkciArIERFQ09OX1ZJRFcweEFERDBCMCh3aW4pKTsKKworCXZhbCA9 IHBsYW5lLT5kbWFfYWRkclswXSArIHBsYW5lLT5waXRjaCAqIHBsYW5lLT5jcnRjX2hlaWdodDsK Kwl3cml0ZWwodmFsLCBjdHgtPmFkZHIgKyBERUNPTl9WSURXMHhBREQxQjAod2luKSk7CisKKwl2 YWwgPSBPRkZTSVpFKHBsYW5lLT5waXRjaCAtIHBsYW5lLT5jcnRjX3dpZHRoICogKHBsYW5lLT5i cHAgPj4gMykpCisJCXwgUEFHRVdJRFRIKHBsYW5lLT5jcnRjX3dpZHRoICogKHBsYW5lLT5icHAg Pj4gMykpOworCXdyaXRlbCh2YWwsIGN0eC0+YWRkciArIERFQ09OX1ZJRFcweEFERDIod2luKSk7 CisKKwlkZWNvbl93aW5fc2V0X3BpeGZtdChjdHgsIHdpbik7CisKKwkvKiB3aW5kb3cgZW5hYmxl ICovCisJdmFsID0gcmVhZGwoY3R4LT5hZGRyICsgREVDT05fV0lOQ09OeCh3aW4pKTsKKwl2YWwg fD0gV0lOQ09OeF9FTldJTl9GOworCXdyaXRlbCh2YWwsIGN0eC0+YWRkciArIERFQ09OX1dJTkNP Tngod2luKSk7CisKKwlkZWNvbl9zaGFkb3dfcHJvdGVjdF93aW4oY3R4LCB3aW4sIGZhbHNlKTsK KworCS8qIHN0YW5kYWxvbmUgdXBkYXRlICovCisJdmFsID0gcmVhZGwoY3R4LT5hZGRyICsgREVD T05fVVBEQVRFKTsKKwl2YWwgfD0gU1RBTkRBTE9ORV9VUERBVEVfRjsKKwl3cml0ZWwodmFsLCBj dHgtPmFkZHIgKyBERUNPTl9VUERBVEUpOworCisJaWYgKGN0eC0+aTgwX2lmKQorCQlhdG9taWNf c2V0KCZjdHgtPndpbl91cGRhdGVkLCAxKTsKKworCXBsYW5lLT5lbmFibGVkID0gdHJ1ZTsKK30K Kworc3RhdGljIHZvaWQgZGVjb25fd2luX2Rpc2FibGUoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAq Y3J0YywgdW5zaWduZWQgaW50IHdpbikKK3sKKwlzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4ID0g Y3J0Yy0+Y3R4OworCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZTsKKwl1MzIgdmFsOwor CisJaWYgKHdpbiA8IDAgfHwgd2luID49IFdJTkRPV1NfTlIpCisJCXJldHVybjsKKworCXBsYW5l ID0gJmN0eC0+cGxhbmVzW3dpbl07CisKKwlpZiAoY3R4LT5zdXNwZW5kZWQpIHsKKwkJcGxhbmUt PnJlc3VtZSA9IGZhbHNlOworCQlyZXR1cm47CisJfQorCisJZGVjb25fc2hhZG93X3Byb3RlY3Rf d2luKGN0eCwgd2luLCB0cnVlKTsKKworCS8qIHdpbmRvdyBkaXNhYmxlICovCisJdmFsID0gcmVh ZGwoY3R4LT5hZGRyICsgREVDT05fV0lOQ09OeCh3aW4pKTsKKwl2YWwgJj0gfldJTkNPTnhfRU5X SU5fRjsKKwl3cml0ZWwodmFsLCBjdHgtPmFkZHIgKyBERUNPTl9XSU5DT054KHdpbikpOworCisJ ZGVjb25fc2hhZG93X3Byb3RlY3Rfd2luKGN0eCwgd2luLCBmYWxzZSk7CisKKwkvKiBzdGFuZGFs b25lIHVwZGF0ZSAqLworCXZhbCA9IHJlYWRsKGN0eC0+YWRkciArIERFQ09OX1VQREFURSk7CisJ dmFsIHw9IFNUQU5EQUxPTkVfVVBEQVRFX0Y7CisJd3JpdGVsKHZhbCwgY3R4LT5hZGRyICsgREVD T05fVVBEQVRFKTsKKworCXBsYW5lLT5lbmFibGVkID0gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lk IGRlY29uX3dpbmRvd19zdXNwZW5kKHN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHgpCit7CisJc3Ry dWN0IGV4eW5vc19kcm1fcGxhbmUgKnBsYW5lOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8 IFdJTkRPV1NfTlI7IGkrKykgeworCQlwbGFuZSA9ICZjdHgtPnBsYW5lc1tpXTsKKwkJcGxhbmUt PnJlc3VtZSA9IHBsYW5lLT5lbmFibGVkOworCQlpZiAocGxhbmUtPmVuYWJsZWQpCisJCQlkZWNv bl93aW5fZGlzYWJsZShjdHgtPmNydGMsIGkpOworCX0KK30KKworc3RhdGljIHZvaWQgZGVjb25f d2luZG93X3Jlc3VtZShzdHJ1Y3QgZGVjb25fY29udGV4dCAqY3R4KQoreworCXN0cnVjdCBleHlu b3NfZHJtX3BsYW5lICpwbGFuZTsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBXSU5ET1dT X05SOyBpKyspIHsKKwkJcGxhbmUgPSAmY3R4LT5wbGFuZXNbaV07CisJCXBsYW5lLT5lbmFibGVk ID0gcGxhbmUtPnJlc3VtZTsKKwkJcGxhbmUtPnJlc3VtZSA9IGZhbHNlOworCX0KK30KKworc3Rh dGljIHZvaWQgZGVjb25fYXBwbHkoc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCkKK3sKKwlzdHJ1 Y3QgZXh5bm9zX2RybV9wbGFuZSAqcGxhbmU7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwg V0lORE9XU19OUjsgaSsrKSB7CisJCXBsYW5lID0gJmN0eC0+cGxhbmVzW2ldOworCQlpZiAocGxh bmUtPmVuYWJsZWQpCisJCQlkZWNvbl93aW5fY29tbWl0KGN0eC0+Y3J0YywgaSk7CisJCWVsc2UK KwkJCWRlY29uX3dpbl9kaXNhYmxlKGN0eC0+Y3J0YywgaSk7CisJfQorCisJZGVjb25fY29tbWl0 KGN0eC0+Y3J0Yyk7Cit9CisKK3N0YXRpYyB2b2lkIGRlY29uX2RwbXNfb24oc3RydWN0IGRlY29u X2NvbnRleHQgKmN0eCkKK3sKKwlpbnQgcmV0OworCWludCBpOworCisJaWYgKCFjdHgtPnN1c3Bl bmRlZCkKKwkJcmV0dXJuOworCisJY3R4LT5zdXNwZW5kZWQgPSBmYWxzZTsKKworCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKGRlY29uX2Nsa3NfbmFtZSk7IGkrKykgeworCQlyZXQgPSBjbGtf cHJlcGFyZV9lbmFibGUoY3R4LT5jbGtzW2ldKTsKKwkJaWYgKHJldCA8IDApCisJCQlnb3RvIGVy cjsKKwl9CisKKwlzZXRfYml0KEJJVF9DTEtTX0VOQUJMRUQsICZjdHgtPmVuYWJsZWQpOworCisJ ZGVjb25fd2luZG93X3Jlc3VtZShjdHgpOworCWRlY29uX2FwcGx5KGN0eCk7CisKKwlyZXR1cm47 CitlcnI6CisJd2hpbGUgKC0taSA+PSAwKQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUoY3R4LT5j bGtzW2ldKTsKKworCWN0eC0+c3VzcGVuZGVkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZGVj b25fZHBtc19vZmYoc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCkKK3sKKwlpbnQgaTsKKworCWlm IChjdHgtPnN1c3BlbmRlZCkKKwkJcmV0dXJuOworCisJY2xlYXJfYml0KEJJVF9DTEtTX0VOQUJM RUQsICZjdHgtPmVuYWJsZWQpOworCWRlY29uX3dpbmRvd19zdXNwZW5kKGN0eCk7CisKKwlmb3Ig KGkgPSBBUlJBWV9TSVpFKGRlY29uX2Nsa3NfbmFtZSkgLSAxOyBpID49IDA7IGktLSkKKwkJY2xr X2Rpc2FibGVfdW5wcmVwYXJlKGN0eC0+Y2xrc1tpXSk7CisKKwljdHgtPnN1c3BlbmRlZCA9IHRy dWU7Cit9CisKK3N0YXRpYyB2b2lkIGRlY29uX2RwbXMoc3RydWN0IGV4eW5vc19kcm1fY3J0YyAq Y3J0YywgaW50IG1vZGUpCit7CisJc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0 eDsKKworCXN3aXRjaCAobW9kZSkgeworCWNhc2UgRFJNX01PREVfRFBNU19PTjoKKwkJZGVjb25f ZHBtc19vbihjdHgpOworCQlicmVhazsKKwljYXNlIERSTV9NT0RFX0RQTVNfU1RBTkRCWToKKwlj YXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoKKwljYXNlIERSTV9NT0RFX0RQTVNfT0ZGOgorCQlk ZWNvbl9kcG1zX29mZihjdHgpOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fREVCVUdfS01T KCJ1bnNwZWNpZmllZCBtb2RlICVkXG4iLCBtb2RlKTsKKwkJYnJlYWs7CisJfQorfQorCit2b2lk IGRlY29uX3RlX2lycV9oYW5kbGVyKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpCit7CisJ c3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCA9IGNydGMtPmN0eDsKKwl1MzIgdmFsOworCisJaWYg KCF0ZXN0X2JpdChCSVRfQ0xLU19FTkFCTEVELCAmY3R4LT5lbmFibGVkKSkKKwkJcmV0dXJuOwor CisJaWYgKGF0b21pY19hZGRfdW5sZXNzKCZjdHgtPndpbl91cGRhdGVkLCAtMSwgMCkpIHsKKwkJ LyogdHJpZ2dlciAqLworCQl2YWwgPSByZWFkbChjdHgtPmFkZHIgKyBERUNPTl9UUklHQ09OKTsK KwkJdmFsIHw9IFRSSUdDT05fU1dUUklHQ01EOworCQl3cml0ZWwodmFsLCBjdHgtPmFkZHIgKyBE RUNPTl9UUklHQ09OKTsKKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjX29w cyBkZWNvbl9jcnRjX29wcyA9IHsKKwkuZHBtcwkJCT0gZGVjb25fZHBtcywKKwkuZW5hYmxlX3Zi bGFuawkJPSBkZWNvbl9lbmFibGVfdmJsYW5rLAorCS5kaXNhYmxlX3ZibGFuawkJPSBkZWNvbl9k aXNhYmxlX3ZibGFuaywKKwkuY29tbWl0CQkJPSBkZWNvbl9jb21taXQsCisJLndpbl9jb21taXQJ CT0gZGVjb25fd2luX2NvbW1pdCwKKwkud2luX2Rpc2FibGUJCT0gZGVjb25fd2luX2Rpc2FibGUs CisJLnRlX2hhbmRsZXIJCT0gZGVjb25fdGVfaXJxX2hhbmRsZXIsCit9OworCitzdGF0aWMgaW50 IGRlY29uX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZv aWQgKmRhdGEpCit7CisJc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCA9IGRldl9nZXRfZHJ2ZGF0 YShkZXYpOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm1fZGV2ID0gZGF0YTsKKwlzdHJ1Y3QgZXh5 bm9zX2RybV9wcml2YXRlICpwcml2ID0gZHJtX2Rldi0+ZGV2X3ByaXZhdGU7CisJZW51bSBkcm1f cGxhbmVfdHlwZSB0eXBlOworCXVuc2lnbmVkIGludCB6cG9zOworCWludCByZXQ7CisKKwljdHgt PmRybV9kZXYgPSBkcm1fZGV2OworCWN0eC0+cGlwZSA9IHByaXYtPnBpcGUrKzsKKworCWZvciAo enBvcyA9IDA7IHpwb3MgPCBXSU5ET1dTX05SOyB6cG9zKyspIHsKKwkJdHlwZSA9ICh6cG9zID09 IGN0eC0+ZGVmYXVsdF93aW4pID8gRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSA6CisJCQlEUk1fUExB TkVfVFlQRV9PVkVSTEFZOworCQlyZXQgPSBleHlub3NfcGxhbmVfaW5pdChkcm1fZGV2LCAmY3R4 LT5wbGFuZXNbenBvc10sCisJCQkJMSA8PCBjdHgtPnBpcGUsIHR5cGUsIHpwb3MpOworCQlpZiAo cmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwljdHgtPmNydGMgPSBleHlub3NfZHJtX2NydGNf Y3JlYXRlKGRybV9kZXYsCisJCQkmY3R4LT5wbGFuZXNbY3R4LT5kZWZhdWx0X3dpbl0uYmFzZSwg Y3R4LT5waXBlLAorCQkJRVhZTk9TX0RJU1BMQVlfVFlQRV9MQ0QsICZkZWNvbl9jcnRjX29wcywg Y3R4KTsKKwlpZiAoSVNfRVJSKGN0eC0+Y3J0YykpIHsKKwkJcHJpdi0+cGlwZS0tOworCQlyZXR1 cm4gUFRSX0VSUihjdHgtPmNydGMpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBkZWNvbl91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIs IHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCA9IGRldl9nZXRfZHJ2 ZGF0YShkZXYpOworCisJZGVjb25fZHBtcyhjdHgtPmNydGMsIERSTV9NT0RFX0RQTVNfT0ZGKTsK K30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzIGRlY29uX2NvbXBvbmVudF9v cHMgPSB7CisJLmJpbmQJPSBkZWNvbl9iaW5kLAorCS51bmJpbmQgPSBkZWNvbl91bmJpbmQsCit9 OworCitzdGF0aWMgaXJxcmV0dXJuX3QgZGVjb25fdnN5bmNfaXJxX2hhbmRsZXIoaW50IGlycSwg dm9pZCAqZGV2X2lkKQoreworCXN0cnVjdCBkZWNvbl9jb250ZXh0ICpjdHggPSBkZXZfaWQ7CisJ dTMyIHZhbDsKKworCWlmICghdGVzdF9iaXQoQklUX0NMS1NfRU5BQkxFRCwgJmN0eC0+ZW5hYmxl ZCkpCisJCWdvdG8gb3V0OworCisJdmFsID0gcmVhZGwoY3R4LT5hZGRyICsgREVDT05fVklESU5U Q09OMSk7CisJaWYgKHZhbCAmIFZJRElOVENPTjFfSU5URlJNUEVORCkgeworCQlkcm1faGFuZGxl X3ZibGFuayhjdHgtPmRybV9kZXYsIGN0eC0+cGlwZSk7CisKKwkJLyogY2xlYXIgKi8KKwkJd3Jp dGVsKFZJRElOVENPTjFfSU5URlJNUEVORCwgY3R4LT5hZGRyICsgREVDT05fVklESU5UQ09OMSk7 CisJfQorCitvdXQ6CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgaXJxcmV0dXJu X3QgZGVjb25fbGNkX3N5c19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7CisJ c3RydWN0IGRlY29uX2NvbnRleHQgKmN0eCA9IGRldl9pZDsKKwl1MzIgdmFsOworCisJaWYgKCF0 ZXN0X2JpdChCSVRfQ0xLU19FTkFCTEVELCAmY3R4LT5lbmFibGVkKSkKKwkJZ290byBvdXQ7CisK Kwl2YWwgPSByZWFkbChjdHgtPmFkZHIgKyBERUNPTl9WSURJTlRDT04xKTsKKwlpZiAodmFsICYg VklESU5UQ09OMV9JTlRGUk1ET05FUEVORCkgeworCQlleHlub3NfZHJtX2NydGNfZmluaXNoX3Bh Z2VmbGlwKGN0eC0+ZHJtX2RldiwgY3R4LT5waXBlKTsKKworCQkvKiBjbGVhciAqLworCQl3cml0 ZWwoVklESU5UQ09OMV9JTlRGUk1ET05FUEVORCwKKwkJCQljdHgtPmFkZHIgKyBERUNPTl9WSURJ TlRDT04xKTsKKwl9CisKK291dDoKKwlyZXR1cm4gSVJRX0hBTkRMRUQ7Cit9CisKK3N0YXRpYyBp bnQgZXh5bm9zNTQzM19kZWNvbl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQor eworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7CisJc3RydWN0IGRlY29uX2NvbnRl eHQgKmN0eDsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlpbnQgcmV0OworCWludCBpOworCisJ Y3R4ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjdHgpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IWN0eCkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwljdHgtPmRlZmF1bHRfd2luID0gMDsKKwljdHgt PnN1c3BlbmRlZCA9IHRydWU7CisJY3R4LT5kZXYgPSBkZXY7CisJaWYgKG9mX2dldF9jaGlsZF9i eV9uYW1lKGRldi0+b2Zfbm9kZSwgImk4MC1pZi10aW1pbmdzIikpCisJCWN0eC0+aTgwX2lmID0g dHJ1ZTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRlY29uX2Nsa3NfbmFtZSk7IGkr KykgeworCQlzdHJ1Y3QgY2xrICpjbGs7CisKKwkJY2xrID0gZGV2bV9jbGtfZ2V0KGN0eC0+ZGV2 LCBkZWNvbl9jbGtzX25hbWVbaV0pOworCQlpZiAoSVNfRVJSKGNsaykpCisJCQlyZXR1cm4gUFRS X0VSUihjbGspOworCisJCWN0eC0+Y2xrc1tpXSA9IGNsazsKKwl9CisKKwlyZXMgPSBwbGF0Zm9y bV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOworCWlmICghcmVzKSB7CisJ CWRldl9lcnIoZGV2LCAiY2Fubm90IGZpbmQgSU8gcmVzb3VyY2VcbiIpOworCQlyZXR1cm4gLUVO WElPOworCX0KKworCWN0eC0+YWRkciA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7 CisJaWYgKElTX0VSUihjdHgtPmFkZHIpKSB7CisJCWRldl9lcnIoZGV2LCAiaW9yZW1hcCBmYWls ZWRcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjdHgtPmFkZHIpOworCX0KKworCXJlcyA9IHBsYXRm b3JtX2dldF9yZXNvdXJjZV9ieW5hbWUocGRldiwgSU9SRVNPVVJDRV9JUlEsCisJCQljdHgtPmk4 MF9pZiA/ICJsY2Rfc3lzIiA6ICJ2c3luYyIpOworCWlmICghcmVzKSB7CisJCWRldl9lcnIoZGV2 LCAiY2Fubm90IGZpbmQgSVJRIHJlc291cmNlXG4iKTsKKwkJcmV0dXJuIC1FTlhJTzsKKwl9CisK KwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgcmVzLT5zdGFydCwgY3R4LT5pODBfaWYgPwor CQkJZGVjb25fbGNkX3N5c19pcnFfaGFuZGxlciA6IGRlY29uX3ZzeW5jX2lycV9oYW5kbGVyLCAw LAorCQkJImRybV9kZWNvbiIsIGN0eCk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkZXYs ICJsY2Rfc3lzIGlycSByZXF1ZXN0IGZhaWxlZFxuIik7CisJCXJldHVybiByZXQ7CisJfQorCisJ cmV0ID0gZXh5bm9zX2RybV9jb21wb25lbnRfYWRkKGRldiwgRVhZTk9TX0RFVklDRV9UWVBFX0NS VEMsCisJCQkJICAgICAgIEVYWU5PU19ESVNQTEFZX1RZUEVfTENEKTsKKwlpZiAocmV0IDwgMCkK KwkJcmV0dXJuIHJldDsKKworCXBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYsIGN0eCk7CisKKwly ZXQgPSBjb21wb25lbnRfYWRkKGRldiwgJmRlY29uX2NvbXBvbmVudF9vcHMpOworCWlmIChyZXQg PCAwKSB7CisJCWV4eW5vc19kcm1fY29tcG9uZW50X2RlbChkZXYsIEVYWU5PU19ERVZJQ0VfVFlQ RV9DUlRDKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu dCBleHlub3M1NDMzX2RlY29uX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQor eworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmRlY29uX2NvbXBvbmVudF9vcHMpOworCWV4 eW5vc19kcm1fY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2LCBFWFlOT1NfREVWSUNFX1RZUEVfQ1JU Qyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg ZXh5bm9zNTQzM19kZWNvbl9kcml2ZXJfZHRfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRpYmxlID0g InNhbXN1bmcsZXh5bm9zNTQzMy1kZWNvbiIgfSwKKwl7fSwKK307CitNT0RVTEVfREVWSUNFX1RB QkxFKG9mLCBleHlub3M1NDMzX2RlY29uX2RyaXZlcl9kdF9tYXRjaCk7CisKK3N0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgZXh5bm9zNTQzM19kZWNvbl9kcml2ZXIgPSB7CisJLnByb2JlCQk9IGV4eW5v czU0MzNfZGVjb25fcHJvYmUsCisJLnJlbW92ZQkJPSBleHlub3M1NDMzX2RlY29uX3JlbW92ZSwK KwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAiZXh5bm9zNTQzMy1kZWNvbiIsCisJCS5vd25lcgk9 IFRISVNfTU9EVUxFLAorCQkub2ZfbWF0Y2hfdGFibGUgPSBleHlub3M1NDMzX2RlY29uX2RyaXZl cl9kdF9tYXRjaCwKKwl9LAorfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3Mv ZXh5bm9zX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYu YwppbmRleCA4YWM0NjUyLi43OGVmNDk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX2Rydi5jCkBAIC01MjksNiArNTI5LDkgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2 ZXIgKmNvbnN0IGV4eW5vc19kcm1fa21zX2RyaXZlcnNbXSA9IHsKICNpZmRlZiBDT05GSUdfRFJN X0VYWU5PU19GSU1ECiAJJmZpbWRfZHJpdmVyLAogI2VuZGlmCisjaWZkZWYgQ09ORklHX0RSTV9F WFlOT1M1NDMzX0RFQ09OCisJJmV4eW5vczU0MzNfZGVjb25fZHJpdmVyLAorI2VuZGlmCiAjaWZk ZWYgQ09ORklHX0RSTV9FWFlOT1M3X0RFQ09OCiAJJmRlY29uX2RyaXZlciwKICNlbmRpZgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oCmluZGV4IGExMDEzYWEuLjQwNWYwOTgg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmgKQEAgLTMzOCw2ICszMzgs NyBAQCB2b2lkIGV4eW5vc19kcm1fY29tcG9uZW50X2RlbChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJ CQkJZW51bSBleHlub3NfZHJtX2RldmljZV90eXBlIGRldl90eXBlKTsKCiBleHRlcm4gc3RydWN0 IHBsYXRmb3JtX2RyaXZlciBmaW1kX2RyaXZlcjsKK2V4dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJp dmVyIGV4eW5vczU0MzNfZGVjb25fZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2 ZXIgZGVjb25fZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHBfZHJpdmVy OwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHNpX2RyaXZlcjsKZGlmZiAtLWdpdCBh L2luY2x1ZGUvdmlkZW8vZXh5bm9zNTQzM19kZWNvbi5oIGIvaW5jbHVkZS92aWRlby9leHlub3M1 NDMzX2RlY29uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU3Zjg1MQot LS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdmlkZW8vZXh5bm9zNTQzM19kZWNvbi5oCkBAIC0w LDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcgRWxlY3Ryb25p Y3MgQ28uTHRkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBwdWJsaXNoZWQg YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbnIKKyAqLworCisjaWZuZGVmIEVYWU5PU19S RUdTX0RFQ09OX0gKKyNkZWZpbmUgRVhZTk9TX1JFR1NfREVDT05fSAorCisvKiBFeHlub3M1NDNY IERFQ09OICovCisjZGVmaW5lIERFQ09OX1ZJRENPTjAJCQkweDAwMDAKKyNkZWZpbmUgREVDT05f VklET1VUQ09OMAkJMHgwMDEwCisjZGVmaW5lIERFQ09OX1dJTkNPTngobikJCSgweDAwMjAgKyAo KG4pICogNCkpCisjZGVmaW5lIERFQ09OX1ZJRE9TRHhIKG4pCQkoMHgwMDgwICsgKChuKSAqIDQp KQorI2RlZmluZSBERUNPTl9TSEFET1dDT04JCQkweDAwQTAKKyNkZWZpbmUgREVDT05fVklET1NE eEEobikJCSgweDAwQjAgKyAoKG4pICogMHgyMCkpCisjZGVmaW5lIERFQ09OX1ZJRE9TRHhCKG4p CQkoMHgwMEI0ICsgKChuKSAqIDB4MjApKQorI2RlZmluZSBERUNPTl9WSURPU0R4QyhuKQkJKDB4 MDBCOCArICgobikgKiAweDIwKSkKKyNkZWZpbmUgREVDT05fVklET1NEeEQobikJCSgweDAwQkMg KyAoKG4pICogMHgyMCkpCisjZGVmaW5lIERFQ09OX1ZJRE9TRHhFKG4pCQkoMHgwMEMwICsgKChu KSAqIDB4MjApKQorI2RlZmluZSBERUNPTl9WSURXMHhBREQwQjAobikJCSgweDAxNTAgKyAoKG4p ICogMHgxMCkpCisjZGVmaW5lIERFQ09OX1ZJRFcweEFERDBCMShuKQkJKDB4MDE1NCArICgobikg KiAweDEwKSkKKyNkZWZpbmUgREVDT05fVklEVzB4QUREMEIyKG4pCQkoMHgwMTU4ICsgKChuKSAq IDB4MTApKQorI2RlZmluZSBERUNPTl9WSURXMHhBREQxQjAobikJCSgweDAxQTAgKyAoKG4pICog MHgxMCkpCisjZGVmaW5lIERFQ09OX1ZJRFcweEFERDFCMShuKQkJKDB4MDFBNCArICgobikgKiAw eDEwKSkKKyNkZWZpbmUgREVDT05fVklEVzB4QUREMUIyKG4pCQkoMHgwMUE4ICsgKChuKSAqIDB4 MTApKQorI2RlZmluZSBERUNPTl9WSURXMHhBREQyKG4pCQkoMHgwMjAwICsgKChuKSAqIDQpKQor I2RlZmluZSBERUNPTl9MT0NBTHhTSVpFKG4pCQkoMHgwMjE0ICsgKChuKSAqIDQpKQorI2RlZmlu ZSBERUNPTl9WSURJTlRDT04wCQkweDAyMjAKKyNkZWZpbmUgREVDT05fVklESU5UQ09OMQkJMHgw MjI0CisjZGVmaW5lIERFQ09OX1d4S0VZQ09OMChuKQkJKDB4MDIzMCArICgobiAtIDEpICogOCkp CisjZGVmaW5lIERFQ09OX1d4S0VZQ09OMShuKQkJKDB4MDIzNCArICgobiAtIDEpICogOCkpCisj ZGVmaW5lIERFQ09OX1d4S0VZQUxQSEEobikJCSgweDAyNTAgKyAoKG4gLSAxKSAqIDQpKQorI2Rl ZmluZSBERUNPTl9XSU54TUFQKG4pCQkoMHgwMjcwICsgKChuKSAqIDQpKQorI2RlZmluZSBERUNP Tl9RT1NMVVQwN18wMAkJMHgwMkMwCisjZGVmaW5lIERFQ09OX1FPU0xVVDE1XzA4CQkweDAyQzQK KyNkZWZpbmUgREVDT05fUU9TQ1RSTAkJCTB4MDJDOAorI2RlZmluZSBERUNPTl9CTEVOREVSUXgo bikJCSgweDAzMDAgKyAoKG4gLSAxKSAqIDQpKQorI2RlZmluZSBERUNPTl9CTEVORENPTgkJCTB4 MDMxMAorI2RlZmluZSBERUNPTl9PUEVfVklEVzB4QUREMChuKQkJKDB4MDQwMCArICgobikgKiA0 KSkKKyNkZWZpbmUgREVDT05fT1BFX1ZJRFcweEFERDEobikJCSgweDA0MTQgKyAoKG4pICogNCkp CisjZGVmaW5lIERFQ09OX0ZSQU1FRklGT19SRUc3CQkweDA1MUMKKyNkZWZpbmUgREVDT05fRlJB TUVGSUZPX1JFRzgJCTB4MDUyMAorI2RlZmluZSBERUNPTl9GUkFNRUZJRk9fU1RBVFVTCQkweDA1 MjQKKyNkZWZpbmUgREVDT05fQ01VCQkJMHgxNDA0CisjZGVmaW5lIERFQ09OX1VQREFURQkJCTB4 MTQxMAorI2RlZmluZSBERUNPTl9VUERBVEVfU0NIRU1FCQkweDE0MzgKKyNkZWZpbmUgREVDT05f VklEQ09OMQkJCTB4MjAwMAorI2RlZmluZSBERUNPTl9WSURDT04yCQkJMHgyMDA0CisjZGVmaW5l IERFQ09OX1ZJRENPTjMJCQkweDIwMDgKKyNkZWZpbmUgREVDT05fVklEQ09ONAkJCTB4MjAwQwor I2RlZmluZSBERUNPTl9WSURUQ09OMgkJCTB4MjAyOAorI2RlZmluZSBERUNPTl9GUkFNRV9TSVpF CQkweDIwMzgKKyNkZWZpbmUgREVDT05fTElORUNOVF9PUF9USFJFU0hPTEQJMHgyMDNDCisjZGVm aW5lIERFQ09OX1RSSUdDT04JCQkweDIwNDAKKyNkZWZpbmUgREVDT05fVFJJR1NLSVAJCQkweDIw NTAKKyNkZWZpbmUgREVDT05fQ1JDUkRBVEEJCQkweDIwQjAKKyNkZWZpbmUgREVDT05fQ1JDQ1RS TAkJCTB4MjBCNAorCisvKiBFeHlub3M1NDMwIERFQ09OICovCisjZGVmaW5lIERFQ09OX1ZJRFRD T04wCQkJMHgyMDIwCisjZGVmaW5lIERFQ09OX1ZJRFRDT04xCQkJMHgyMDI0CisKKy8qIEV4eW5v czU0MzMgREVDT04gKi8KKyNkZWZpbmUgREVDT05fVklEVENPTjAwCQkJMHgyMDEwCisjZGVmaW5l IERFQ09OX1ZJRFRDT04wMQkJCTB4MjAxNAorI2RlZmluZSBERUNPTl9WSURUQ09OMTAJCQkweDIw MTgKKyNkZWZpbmUgREVDT05fVklEVENPTjExCQkJMHgyMDFDCisKKy8qIEV4eW5vczU0M1ggREVD T04gSW50ZXJuYWwgKi8KKyNkZWZpbmUgREVDT05fVzAxM0RTVFJFT0NPTgkJMHgwMzIwCisjZGVm aW5lIERFQ09OX1cyMzNEU1RSRU9DT04JCTB4MDMyNAorI2RlZmluZSBERUNPTl9GUkFNRUZJRk9f UkVHMAkJMHgwNTAwCisjZGVmaW5lIERFQ09OX0VOSEFOQ0VSX0NUUkwJCTB4MjEwMAorCisvKiBF eHlub3M1NDNYIERFQ09OIFRWICovCisjZGVmaW5lIERFQ09OX1ZDTEtDT04wCQkJMHgwMDE0Cisj ZGVmaW5lIERFQ09OX1ZJRElOVENPTjIJCTB4MDIyOAorI2RlZmluZSBERUNPTl9WSURJTlRDT04z CQkweDAyMkMKKworLyogVklEQ09OMCAqLworI2RlZmluZSBWSURDT04wX0VOVklECQkJKDEgPDwg MSkKKyNkZWZpbmUgVklEQ09OMF9FTlZJRF9GCQkJKDEgPDwgMCkKKworLyogVklET1VUQ09OMCAq LworI2RlZmluZSBWSURPVVRfTENEX09OCQkJKDEgPDwgMjQpCisjZGVmaW5lIFZJRE9VVF9JRl9G X01BU0sJCSgweDMgPDwgMjApCisjZGVmaW5lIFZJRE9VVF9SR0JfSUYJCQkoMHgwIDw8IDIwKQor I2RlZmluZSBWSURPVVRfQ09NTUFORF9JRgkJKDB4MiA8PCAyMCkKKworLyogV0lOQ09OeCAqLwor I2RlZmluZSBXSU5DT054X0hBV1NXUF9GCQkoMSA8PCAxNikKKyNkZWZpbmUgV0lOQ09OeF9XU1dQ X0YJCQkoMSA8PCAxNSkKKyNkZWZpbmUgV0lOQ09OeF9CVVJTVExFTl9NQVNLCQkoMHgzIDw8IDEw KQorI2RlZmluZSBXSU5DT054X0JVUlNUTEVOXzE2V09SRAkJKDB4MCA8PCAxMCkKKyNkZWZpbmUg V0lOQ09OeF9CVVJTVExFTl84V09SRAkJKDB4MSA8PCAxMCkKKyNkZWZpbmUgV0lOQ09OeF9CVVJT VExFTl80V09SRAkJKDB4MiA8PCAxMCkKKyNkZWZpbmUgV0lOQ09OeF9CTERfUElYX0YJCSgxIDw8 IDYpCisjZGVmaW5lIFdJTkNPTnhfQlBQTU9ERV9NQVNLCQkoMHhmIDw8IDIpCisjZGVmaW5lIFdJ TkNPTnhfQlBQTU9ERV8xNkJQUF81NjUJKDB4NSA8PCAyKQorI2RlZmluZSBXSU5DT054X0JQUE1P REVfMTZCUFBfQTE1NTUJKDB4NiA8PCAyKQorI2RlZmluZSBXSU5DT054X0JQUE1PREVfMTZCUFBf STE1NTUJKDB4NyA8PCAyKQorI2RlZmluZSBXSU5DT054X0JQUE1PREVfMjRCUFBfODg4CSgweGIg PDwgMikKKyNkZWZpbmUgV0lOQ09OeF9CUFBNT0RFXzI0QlBQX0ExODg3CSgweGMgPDwgMikKKyNk ZWZpbmUgV0lOQ09OeF9CUFBNT0RFXzI1QlBQX0ExODg4CSgweGQgPDwgMikKKyNkZWZpbmUgV0lO Q09OeF9CUFBNT0RFXzMyQlBQX0E4ODg4CSgweGQgPDwgMikKKyNkZWZpbmUgV0lOQ09OeF9CUFBN T0RFXzE2QlBQX0E0NDQ0CSgweGUgPDwgMikKKyNkZWZpbmUgV0lOQ09OeF9BTFBIQV9TRUxfRgkJ KDEgPDwgMSkKKyNkZWZpbmUgV0lOQ09OeF9FTldJTl9GCQkJKDEgPDwgMCkKKworLyogU0hBRE9X Q09OICovCisjZGVmaW5lIFNIQURPV0NPTl9XeF9QUk9URUNUKG4pCQkoMSA8PCAoMTAgKyAobikp KQorCisvKiBWSURPU0R4RCAqLworI2RlZmluZSBWSURPU0RfV3hfQUxQSEFfUl9GKG4pCQkoKChu KSAmIDB4ZmYpIDw8IDE2KQorI2RlZmluZSBWSURPU0RfV3hfQUxQSEFfR19GKG4pCQkoKChuKSAm IDB4ZmYpIDw8IDgpCisjZGVmaW5lIFZJRE9TRF9XeF9BTFBIQV9CX0YobikJCSgoKG4pICYgMHhm ZikgPDwgMCkKKworLyogVklESU5UQ09OMCAqLworI2RlZmluZSBWSURJTlRDT04wX0ZSQU1FRE9O RQkJKDEgPDwgMTcpCisjZGVmaW5lIFZJRElOVENPTjBfSU5URlJNRU4JCSgxIDw8IDEyKQorI2Rl ZmluZSBWSURJTlRDT04wX0lOVEVOCQkoMSA8PCAwKQorCisvKiBWSURJTlRDT04xICovCisjZGVm aW5lIFZJRElOVENPTjFfSU5URlJNRE9ORVBFTkQJKDEgPDwgMikKKyNkZWZpbmUgVklESU5UQ09O MV9JTlRGUk1QRU5ECQkoMSA8PCAxKQorI2RlZmluZSBWSURJTlRDT04xX0lOVEZJRk9QRU5ECQko MSA8PCAwKQorCisvKiBERUNPTl9DTVUgKi8KKyNkZWZpbmUgQ01VX0NMS0dBR0VfTU9ERV9TRlJf RgkJKDEgPDwgMSkKKyNkZWZpbmUgQ01VX0NMS0dBR0VfTU9ERV9NRU1fRgkJKDEgPDwgMCkKKwor LyogREVDT05fVVBEQVRFICovCisjZGVmaW5lIFNUQU5EQUxPTkVfVVBEQVRFX0YJCSgxIDw8IDAp CisKKy8qIERFQ09OX1ZJRFRDT04wMCAqLworI2RlZmluZSBWSURUQ09OMDBfVkJQRF9GKHgpCQko KCh4KSAmIDB4ZmZmKSA8PCAxNikKKyNkZWZpbmUgVklEVENPTjAwX1ZGUERfRih4KQkJKCh4KSAm IDB4ZmZmKQorCisvKiBERUNPTl9WSURUQ09OMDEgKi8KKyNkZWZpbmUgVklEVENPTjAxX1ZTUFdf Rih4KQkJKCgoeCkgJiAweGZmZikgPDwgMTYpCisKKy8qIERFQ09OX1ZJRFRDT04xMCAqLworI2Rl ZmluZSBWSURUQ09OMTBfSEJQRF9GKHgpCQkoKCh4KSAmIDB4ZmZmKSA8PCAxNikKKyNkZWZpbmUg VklEVENPTjEwX0hGUERfRih4KQkJKCh4KSAmIDB4ZmZmKQorCisvKiBERUNPTl9WSURUQ09OMTEg Ki8KKyNkZWZpbmUgVklEVENPTjExX0hTUFdfRih4KQkJKCgoeCkgJiAweGZmZikgPDwgMTYpCisK Ky8qIERFQ09OX1ZJRFRDT04yICovCisjZGVmaW5lIFZJRFRDT04yX0xJTkVWQUwoeCkJCSgoKHgp ICYgMHhmZmYpIDw8IDE2KQorI2RlZmluZSBWSURUQ09OMl9IT1pWQUwoeCkJCSgoeCkgJiAweGZm ZikKKworLyogVFJJR0NPTiAqLworI2RlZmluZSBUUklHQ09OX1RSSUdFTl9QRVJfRgkJKDEgPDwg MzEpCisjZGVmaW5lIFRSSUdDT05fVFJJR0VOX0YJCSgxIDw8IDMwKQorI2RlZmluZSBUUklHQ09O X1RFX0FVVE9fTUFTSwkJKDEgPDwgMjkpCisjZGVmaW5lIFRSSUdDT05fU1dUUklHQ01ECQkoMSA8 PCAxKQorI2RlZmluZSBUUklHQ09OX1NXVFJJR0VOCQkoMSA8PCAwKQorCisjZW5kaWYgLyogRVhZ Tk9TX1JFR1NfREVDT05fSCAqLwotLQoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9kcmktZGV2ZWwK