From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyungwon Hwang Subject: [PATCH v2 1/6] drm/exynos: add Exynos5433 decon driver Date: Wed, 18 Mar 2015 17:16:26 +0900 Message-ID: <1426666591-16103-2-git-send-email-human.hwang@samsung.com> References: <1426666591-16103-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: <1426666591-16103-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 Cc: sw0312.kim@samsung.com, dh09.lee@samsung.com, cw00.choi@samsung.com, Hyungwon Hwang List-Id: devicetree@vger.kernel.org RnJvbTogSm9vbnlvdW5nIFNoaW0gPGp5MDkyMi5zaGltQHNhbXN1bmcuY29tPgoKREVDT04oRGlz cGxheSBhbmQgRW5oYW5jZW1lbnQgQ29udHJvbGxlcikgaXMgbmV3IElQIHJlcGxhY2luZyBGSU1E IGluCkV4eW5vczU0MzMuIFRoaXMgcGF0Y2ggYWRkcyBFeHlub3M1NDMzIGRlY29uIGRyaXZlci4K ClNpZ25lZC1vZmYtYnk6IEpvb255b3VuZyBTaGltIDxqeTA5MjIuc2hpbUBzYW1zdW5nLmNvbT4K U2lnbmVkLW9mZi1ieTogSHl1bmd3b24gSHdhbmcgPGh1bWFuLmh3YW5nQHNhbXN1bmcuY29tPgot LS0KQ2hhbmdlcyBmb3IgdjI6CmNoYW5nZSBmaWxlIG5hbWVzIGFuZCB2YXJpYWJsZSBuYW1lcyBv ZiBkZWNvbiB0byByZXByZXNudCBleHlub3M1NDMzIGluc3RlYWQgb2YKZXh5bm9zIHRvIGRpc3Rp bmd1aXNoIHRoZW0gZnJvbSBleHlub3M3IGRlY29uCiAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy92 aWRlby9leHlub3M1NDMzLWRlY29uLnR4dCB8ICA2NSArKysKIGRyaXZlcnMvZ3B1L2RybS9leHlu b3MvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9l eHlub3MvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zNTQzM19kcm1fZGVjb24uYyAgICAgIHwgNTQzICsrKysrKysrKysrKysr KysrKysrKwogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jICAgICAgICAg ICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5oICAgICAg ICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9yZWdzLWV4eW5vczU0MzMtZGVj b24uaCAgICAgfCAxNjMgKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA3ODIgaW5zZXJ0aW9ucygr KQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92 aWRlby9leHlub3M1NDMzLWRlY29uLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1 L2RybS9leHlub3MvZXh5bm9zNTQzM19kcm1fZGVjb24uYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9leHlub3MvcmVncy1leHlub3M1NDMzLWRlY29uLmgKCmRpZmYgLS1naXQg YS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZXh5bm9zNTQzMy1kZWNv bi50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZXh5bm9zNTQz My1kZWNvbi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzc3YWZiZgot LS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRl by9leHlub3M1NDMzLWRlY29uLnR4dApAQCAtMCwwICsxLDY1IEBACitEZXZpY2UtVHJlZSBiaW5k aW5ncyBmb3IgU2Ftc3VuZyBFeHlub3MgU29DIGRpc3BsYXkgY29udHJvbGxlciAoREVDT04pCisK K0RFQ09OIChEaXNwbGF5IGFuZCBFbmhhbmNlbWVudCBDb250cm9sbGVyKSBpcyB0aGUgRGlzcGxh eSBDb250cm9sbGVyIGZvciB0aGUKK0V4eW5vcyBzZXJpZXMgb2YgU29DcyB3aGljaCB0cmFuc2Zl cnMgdGhlIGltYWdlIGRhdGEgZnJvbSBhIHZpZGVvIG1lbW9yeQorYnVmZmVyIHRvIGFuIGV4dGVy bmFsIExDRCBpbnRlcmZhY2UuCisKK1JlcXVpcmVkIHByb3BlcnRpZXM6CistIGNvbXBhdGlibGU6 IHZhbHVlIHNob3VsZCBiZSAic2Ftc3VuZyxleHlub3M1NDMzLWRlY29uIjsKKy0gcmVnOiBwaHlz aWNhbCBiYXNlIGFkZHJlc3MgYW5kIGxlbmd0aCBvZiB0aGUgREVDT04gcmVnaXN0ZXJzIHNldC4K Ky0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gYSBsaXN0IG9mIGFsbCBERUNPTiBJUCBibG9j ayBpbnRlcnJ1cHRzIGluIHRoZQorCSAgICAgIG9yZGVyOiBWU1lOQywgTENEX1NZU1RFTS4gVGhl IGludGVycnVwdCBzcGVjaWZpZXIgZm9ybWF0CisJICAgICAgZGVwZW5kcyBvbiB0aGUgaW50ZXJy dXB0IGNvbnRyb2xsZXIgdXNlZC4KKy0gaW50ZXJydXB0LW5hbWVzOiBzaG91bGQgY29udGFpbiB0 aGUgaW50ZXJydXB0IG5hbWVzOiAidnN5bmMiLCAibGNkX3N5cyIKKwkJICAgaW4gdGhlIHNhbWUg b3JkZXIgYXMgdGhleSB3ZXJlIGxpc3RlZCBpbiB0aGUgaW50ZXJydXB0cworCQkgICBwcm9wZXJ0 eS4KKy0gY2xvY2tzOiBtdXN0IGluY2x1ZGUgY2xvY2sgc3BlY2lmaWVycyBjb3JyZXNwb25kaW5n IHRvIGVudHJpZXMgaW4gdGhlCisJICBjbG9jay1uYW1lcyBwcm9wZXJ0eS4KKy0gY2xvY2stbmFt ZXM6IGxpc3Qgb2YgY2xvY2sgbmFtZXMgc29ydGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBj bG9ja3MKKwkgICAgICAgcHJvcGVydHkuIE11c3QgY29udGFpbiAiYWNsa19kZWNvbiIsICJhY2xr X3NtbXVfZGVjb24weCIsCisJICAgICAgICJhY2xrX3hpdV9kZWNvbjB4IiwgInBjbGtfc21tdV9k ZWNvbjB4IiwgY2xrX2RlY29uX3ZjbGsiLAorCSAgICAgICAic2Nsa19kZWNvbl9lY2xrIgorLSBw b3J0czogY29udGFpbnMgYSBwb3J0IHdoaWNoIGlzIGNvbm5lY3RlZCB0byBtaWMgbm9kZS4gYWRk cmVzcy1jZWxscyBhbmQKKwkgc2l6ZS1jZWxscyBtdXN0IDEgYW5kIDAsIHJlc3BlY3RpdmVseS4K Ky0gcG9ydDogY29udGFpbnMgYW4gZW5kcG9pbnQgbm9kZSB3aGljaCBpcyBjb25uZWN0ZWQgdG8g dGhlIGVuZHBvaW50IGluIHRoZSBtaWMKKwlub2RlLiBUaGUgcmVnIHZhbHVlIG11c2V0IGJlIDAu CistIGk4MC1pZi10aW1pbmdzOiBzcGVjaWZ5IHdoZXRoZXIgdGhlIHBhbmVsIHdoaWNoIGlzIGNv bm5lY3RlZCB0byBkZWNvbiB1c2VzCisJCSAgaTgwIGxjZCBpbnRlcmZhY2Ugb3IgbWlwaSB2aWRl byBpbnRlcmZhY2UuIFRoaXMgbm9kZSBjb250YWlucworCQkgIG5vIHRpbWluZyBpbmZvcm1hdGlv biBhcyB0aGF0IG9mIGZpbWQgZG9lcy4gQmVjYXVzZSB0aGVyZSBpcworCQkgIG5vIHJlZ2lzdGVy IGluIGRlY29uIHRvIHNwZWNpZnkgaTgwIGludGVyZmFjZSB0aW1pbmcgdmFsdWUsCisJCSAgaXQg aXMgbm90IG5lZWRlZCwgYnV0IG1ha2UgaXQgcmVtYWluIHRvIHVzZSBzYW1lIGtpbmQgb2Ygbm9k ZQorCQkgIGluIGZpbWQgYW5kIGV4eW5vczcgZGVjb24uCisKK0V4YW1wbGU6CitTb0Mgc3BlY2lm aWMgRFQgZW50cnk6CitkZWNvbjogZGVjb25AMTM4MDAwMDAgeworCWNvbXBhdGlibGUgPSAic2Ft c3VuZyxleHlub3M1NDMzLWRlY29uIjsKKwlyZWcgPSA8MHgxMzgwMDAwMCAweDIxMDQ+OworCWNs b2NrcyA9IDwmY211X2Rpc3AgQ0xLX0FDTEtfREVDT04+LCA8JmNtdV9kaXNwIENMS19BQ0xLX1NN TVVfREVDT04wWD4sCisJCTwmY211X2Rpc3AgQ0xLX0FDTEtfWElVX0RFQ09OMFg+LAorCQk8JmNt dV9kaXNwIENMS19QQ0xLX1NNTVVfREVDT04wWD4sCisJCTwmY211X2Rpc3AgQ0xLX1NDTEtfREVD T05fVkNMSz4sCisJCTwmY211X2Rpc3AgQ0xLX1NDTEtfREVDT05fRUNMSz47CisJY2xvY2stbmFt ZXMgPSAiYWNsa19kZWNvbiIsICJhY2xrX3NtbXVfZGVjb24weCIsICJhY2xrX3hpdV9kZWNvbjB4 IiwKKwkJInBjbGtfc21tdV9kZWNvbjB4IiwgInNjbGtfZGVjb25fdmNsayIsICJzY2xrX2RlY29u X2VjbGsiOworCWludGVycnVwdC1uYW1lcyA9ICJ2c3luYyIsICJsY2Rfc3lzIjsKKwlpbnRlcnJ1 cHRzID0gPDAgMjAyIDA+LCA8MCAyMDMgMD47CisKKwlwb3J0cyB7CisJCSNhZGRyZXNzLWNlbGxz ID0gPDE+OworCQkjc2l6ZS1jZWxscyA9IDwwPjsKKworCQlwb3J0QDAgeworCQkJcmVnID0gPDA+ OworCQkJZGVjb25fdG9fbWljOiBlbmRwb2ludCB7CisJCQkJcmVtb3RlLWVuZHBvaW50ID0gPCZt aWNfdG9fZGVjb24+OworCQkJfTsKKwkJfTsKKwl9OworfTsKKworQm9hcmQgc3BlY2lmaWMgRFQg ZW50cnk6CismZGVjb24geworCWk4MC1pZi10aW1pbmdzIHsKKwl9OworfTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3Mv S2NvbmZpZwppbmRleCBhNWU3NDYxLi5lMTVjYzJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vZXh5bm9zL0tjb25maWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9LY29uZmlnCkBA IC0yNCw2ICsyNCwxMiBAQCBjb25maWcgRFJNX0VYWU5PU19GSU1ECiAJaGVscAogCSAgQ2hvb3Nl IHRoaXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHVzZSBFeHlub3MgRklNRCBmb3IgRFJNLgoKK2Nv bmZpZyBEUk1fRVhZTk9TNTQzM19ERUNPTgorCWJvb2wgIkV4eW5vczU0MzMgRFJNIERFQ09OIgor CWRlcGVuZHMgb24gRFJNX0VYWU5PUworCWhlbHAKKwkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5 b3Ugd2FudCB0byB1c2UgRXh5bm9zNTQzMyBERUNPTiBmb3IgRFJNLgorCiBjb25maWcgRFJNX0VY WU5PUzdfREVDT04KIAlib29sICJFeHlub3MgRFJNIERFQ09OIgogCWRlcGVuZHMgb24gRFJNX0VY WU5PUwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvTWFrZWZpbGUKaW5kZXggY2M5MDY3OS4uZmJkMDg0ZCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vZXh5bm9zL01ha2VmaWxlCkBAIC0xMCw2ICsxMCw3IEBAIGV4eW5vc2RybS15IDo9IGV4eW5v c19kcm1fZHJ2Lm8gZXh5bm9zX2RybV9lbmNvZGVyLm8gXAoKIGV4eW5vc2RybS0kKENPTkZJR19E Uk1fRVhZTk9TX0lPTU1VKSArPSBleHlub3NfZHJtX2lvbW11Lm8KIGV4eW5vc2RybS0kKENPTkZJ R19EUk1fRVhZTk9TX0ZJTUQpCSs9IGV4eW5vc19kcm1fZmltZC5vCitleHlub3Nkcm0tJChDT05G SUdfRFJNX0VYWU5PUzU0MzNfREVDT04pCSs9IGV4eW5vczU0MzNfZHJtX2RlY29uLm8KIGV4eW5v c2RybS0kKENPTkZJR19EUk1fRVhZTk9TN19ERUNPTikJKz0gZXh5bm9zN19kcm1fZGVjb24ubwog ZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfRFBJKQkrPSBleHlub3NfZHJtX2RwaS5vCiBl eHlub3Nkcm0tJChDT05GSUdfRFJNX0VYWU5PU19EU0kpCSs9IGV4eW5vc19kcm1fZHNpLm8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zNTQzM19kcm1fZGVjb24uYyBi L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zNTQzM19kcm1fZGVjb24uYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2U1ZGVmCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3M1NDMzX2RybV9kZWNvbi5jCkBAIC0wLDAgKzEsNTQz IEBACisvKiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zNTQzM19kcm1fZGVjb24uYworICoKKyAqIENv cHlyaWdodCAoQykgMjAxNSBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLkx0ZAorICogQXV0aG9yczoK KyAqCUpvb255b3VuZyBTaGltIDxqeTA5MjIuc2hpbUBzYW1zdW5nLmNvbT4KKyAqCUh5dW5nd29u IEh3YW5nIDxodW1hbi5od2FuZ0BzYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICog aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJz aW9uIDIgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9ucgor ICovCisKKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51 eC9jbGsuaD4KKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KKyNpbmNsdWRlIDxsaW51eC9v Zl9ncGlvLmg+CisjaW5jbHVkZSAiZXh5bm9zX2RybV9kcnYuaCIKKyNpbmNsdWRlICJleHlub3Nf ZHJtX2NydGMuaCIKKyNpbmNsdWRlICJyZWdzLWV4eW5vczU0MzMtZGVjb24uaCIKKworc3RydWN0 IGRlY29uX3JlZ19kYXRhIHsKKwl1MzIJCXdpbmNvbjsKKwl1MzIJCXZpZG9zZF9hOwkvKiBsZWZ0 IHRvcCAqLworCXUzMgkJdmlkb3NkX2I7CS8qIHJpZ2h0IGJvdHRvbSAqLworCXUzMgkJdmlkb3Nk X2M7CS8qIGFscGhhICovCisJdTMyCQl2aWRvc2RfZDsJLyogYWxwaGEgKi8KKwlkbWFfYWRkcl90 CXZpZHdfYWRkMDsJLyogc3RhcnQgYWRkcmVzcyAqLworCWRtYV9hZGRyX3QJdmlkd19hZGQxOwkv KiBlbmQgYWRkcmVzcyAqLworCXUzMgkJdmlkd19hZGQyOwkvKiBvZmZzaXplICYgcGFnZXdpZHRo ICovCit9OworCitzdHJ1Y3QgZXh5bm9zX2RlY29uIHsKKwlzdHJ1Y3QgZGV2aWNlCQkJKmRldjsK KwlzdHJ1Y3QgZHJtX2RldmljZQkJKmRybV9kZXY7CisJc3RydWN0IGV4eW5vc19kcm1fY3J0YyAg ICAgICAgICAqY3J0YzsKKwl2b2lkIF9faW9tZW0JCQkqYWRkcjsKKwlzdHJ1Y3QgY2xrCQkJKmNs a3NbNl07CisJc3RydWN0IGRlY29uX3JlZ19kYXRhCQlyZWdfZGF0YVs1XTsKKwlpbnQJCQkJcGlw ZTsKKworI2RlZmluZSBCSVRfQ0xLU19FTkFCTEVECQkwCisjZGVmaW5lIEJJVF9JUlFTX0VOQUJM RUQJCTEKKwl1bnNpZ25lZCBsb25nCQkJZW5hYmxlZDsKKwlib29sCQkJCWk4MF9pZjsKKwlhdG9t aWNfdAkJCXdpbl91cGRhdGVkOworfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBkZWNv bl9jbGtzX25hbWVbXSA9IHsKKwkiYWNsa19kZWNvbiIsCisJImFjbGtfc21tdV9kZWNvbjB4IiwK KwkiYWNsa194aXVfZGVjb24weCIsCisJInBjbGtfc21tdV9kZWNvbjB4IiwKKwkic2Nsa19kZWNv bl92Y2xrIiwKKwkic2Nsa19kZWNvbl9lY2xrIiwKK307CisKK3N0YXRpYyBpbnQgZGVjb25fZW5h YmxlX3ZibGFuayhzdHJ1Y3QgZXh5bm9zX2RybV9jcnRjICpjcnRjKQoreworCXN0cnVjdCBleHlu b3NfZGVjb24gKmRlY29uID0gY3J0Yy0+Y3R4OworCXUzMiB2YWw7CisKKwlpZiAoIXRlc3RfYW5k X3NldF9iaXQoQklUX0lSUVNfRU5BQkxFRCwgJmRlY29uLT5lbmFibGVkKSkgeworCQl2YWwgPSBW SURJTlRDT04wX0ZSQU1FRE9ORSB8IFZJRElOVENPTjBfSU5URlJNRU4gfAorCQkJVklESU5UQ09O MF9JTlRFTjsKKwkJd3JpdGVsKHZhbCwgZGVjb24tPmFkZHIgKyBERUNPTl9WSURJTlRDT04wKTsK Kwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZGVjb25fZGlzYWJsZV92Ymxhbmso c3RydWN0IGV4eW5vc19kcm1fY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZXh5bm9zX2RlY29uICpk ZWNvbiA9IGNydGMtPmN0eDsKKworCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQklUX0lSUVNfRU5B QkxFRCwgJmRlY29uLT5lbmFibGVkKSkKKwkJd3JpdGVsKDAsIGRlY29uLT5hZGRyICsgREVDT05f VklESU5UQ09OMCk7Cit9CisKK3N0YXRpYyB2b2lkIGRlY29uX2RwbXNfb24oc3RydWN0IGV4eW5v c19kZWNvbiAqZGVjb24pCit7CisJaW50IHJldDsKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGRlY29uX2Nsa3NfbmFtZSk7IGkrKykgeworCQlyZXQgPSBjbGtfcHJlcGFy ZV9lbmFibGUoZGVjb24tPmNsa3NbaV0pOworCQlpZiAocmV0IDwgMCkKKwkJCWdvdG8gZXJyOwor CX0KKworCXNldF9iaXQoQklUX0NMS1NfRU5BQkxFRCwgJmRlY29uLT5lbmFibGVkKTsKKworCXJl dHVybjsKKworZXJyOgorCXdoaWxlICgtLWkgPj0gMCkKKwkJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGRlY29uLT5jbGtzW2ldKTsKK30KKworc3RhdGljIHZvaWQgZGVjb25fZHBtc19vZmYoc3RydWN0 IGV4eW5vc19kZWNvbiAqZGVjb24pCit7CisJaW50IGk7CisKKwljbGVhcl9iaXQoQklUX0NMS1Nf RU5BQkxFRCwgJmRlY29uLT5lbmFibGVkKTsKKworCWZvciAoaSA9IEFSUkFZX1NJWkUoZGVjb25f Y2xrc19uYW1lKSAtIDE7IGkgPj0gMDsgaS0tKQorCQljbGtfZGlzYWJsZV91bnByZXBhcmUoZGVj b24tPmNsa3NbaV0pOworfQorCitzdGF0aWMgdm9pZCBkZWNvbl9kcG1zKHN0cnVjdCBleHlub3Nf ZHJtX2NydGMgKmNydGMsIGludCBtb2RlKQoreworCXN0cnVjdCBleHlub3NfZGVjb24gKmRlY29u ID0gY3J0Yy0+Y3R4OworCisJc3dpdGNoIChtb2RlKSB7CisJY2FzZSBEUk1fTU9ERV9EUE1TX09O OgorCQlkZWNvbl9kcG1zX29uKGRlY29uKTsKKwkJYnJlYWs7CisJY2FzZSBEUk1fTU9ERV9EUE1T X1NUQU5EQlk6CisJY2FzZSBEUk1fTU9ERV9EUE1TX1NVU1BFTkQ6CisJY2FzZSBEUk1fTU9ERV9E UE1TX09GRjoKKwkJZGVjb25fZHBtc19vZmYoZGVjb24pOworCQlicmVhazsKKwlkZWZhdWx0Ogor CQlEUk1fREVCVUdfS01TKCJ1bnNwZWNpZmllZCBtb2RlICVkXG4iLCBtb2RlKTsKKwkJYnJlYWs7 CisJfQorfQorCitzdGF0aWMgdm9pZCBkZWNvbl9jb21taXQoc3RydWN0IGV4eW5vc19kcm1fY3J0 YyAqY3J0YykKK3sKKwlzdHJ1Y3QgZXh5bm9zX2RlY29uICpkZWNvbiA9IGNydGMtPmN0eDsKKwlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5iYXNlLm1vZGU7CisJdTMyIHZh bDsKKworCS8qIGVuYWJsZSBjbG9jayBnYXRlICovCisJdmFsID0gQ01VX0NMS0dBR0VfTU9ERV9T RlJfRiB8IENNVV9DTEtHQUdFX01PREVfTUVNX0Y7CisJd3JpdGVsKHZhbCwgZGVjb24tPmFkZHIg KyBERUNPTl9DTVUpOworCisJLyogbGNkIG9uIGFuZCB1c2UgY29tbWFuZCBpZiAqLworCXZhbCA9 IFZJRE9VVF9MQ0RfT047CisJaWYgKGRlY29uLT5pODBfaWYpCisJCXZhbCB8PSBWSURPVVRfQ09N TUFORF9JRjsKKwllbHNlCisJCXZhbCB8PSBWSURPVVRfUkdCX0lGOworCXdyaXRlbCh2YWwsIGRl Y29uLT5hZGRyICsgREVDT05fVklET1VUQ09OMCk7CisKKwl2YWwgPSBWSURUQ09OMl9MSU5FVkFM KG1vZGUtPnZkaXNwbGF5IC0gMSkgfAorCQlWSURUQ09OMl9IT1pWQUwobW9kZS0+aGRpc3BsYXkg LSAxKTsKKwl3cml0ZWwodmFsLCBkZWNvbi0+YWRkciArIERFQ09OX1ZJRFRDT04yKTsKKworCWlm ICghZGVjb24tPmk4MF9pZikgeworCQl2YWwgPSBWSURUQ09OMDBfVkJQRF9GKAorCQkJCW1vZGUt PmNydGNfdnRvdGFsIC0gbW9kZS0+Y3J0Y192c3luY19lbmQpIHwKKwkJCVZJRFRDT04wMF9WRlBE X0YoCisJCQkJbW9kZS0+Y3J0Y192c3luY19zdGFydCAtIG1vZGUtPmNydGNfdmRpc3BsYXkpOwor CQl3cml0ZWwodmFsLCBkZWNvbi0+YWRkciArIERFQ09OX1ZJRFRDT04wMCk7CisKKwkJdmFsID0g VklEVENPTjAxX1ZTUFdfRigKKwkJCQltb2RlLT5jcnRjX3ZzeW5jX2VuZCAtIG1vZGUtPmNydGNf dnN5bmNfc3RhcnQpOworCQl3cml0ZWwodmFsLCBkZWNvbi0+YWRkciArIERFQ09OX1ZJRFRDT04w MSk7CisKKwkJdmFsID0gVklEVENPTjEwX0hCUERfRigKKwkJCQltb2RlLT5jcnRjX2h0b3RhbCAt IG1vZGUtPmNydGNfaHN5bmNfZW5kKSB8CisJCQlWSURUQ09OMTBfSEZQRF9GKAorCQkJCW1vZGUt PmNydGNfaHN5bmNfc3RhcnQgLSBtb2RlLT5jcnRjX2hkaXNwbGF5KTsKKwkJd3JpdGVsKHZhbCwg ZGVjb24tPmFkZHIgKyBERUNPTl9WSURUQ09OMTApOworCisJCXZhbCA9IFZJRFRDT04xMV9IU1BX X0YoCisJCQkJbW9kZS0+Y3J0Y19oc3luY19lbmQgLSBtb2RlLT5jcnRjX2hzeW5jX3N0YXJ0KTsK KwkJd3JpdGVsKHZhbCwgZGVjb24tPmFkZHIgKyBERUNPTl9WSURUQ09OMTEpOworCX0KKworCS8q IHN3IHRyaWdnZXIgZW5hYmxlICovCisJdmFsID0gVFJJR0NPTl9UUklHRU5fUEVSX0YgfCBUUklH Q09OX1RSSUdFTl9GIHwgVFJJR0NPTl9URV9BVVRPX01BU0sgfAorCQlUUklHQ09OX1NXVFJJR0VO OworCXdyaXRlbCh2YWwsIGRlY29uLT5hZGRyICsgREVDT05fVFJJR0NPTik7CisKKwkvKiBlbmFi bGUgb3V0cHV0IGFuZCBkaXNwbGF5IHNpZ25hbCAqLworCXZhbCA9IFZJRENPTjBfRU5WSUQgfCBW SURDT04wX0VOVklEX0Y7CisJd3JpdGVsKHZhbCwgZGVjb24tPmFkZHIgKyBERUNPTl9WSURDT04w KTsKK30KKworI2RlZmluZSBDT09SRElOQVRFX1goeCkJCSgoKHgpICYgMHhmZmYpIDw8IDEyKQor I2RlZmluZSBDT09SRElOQVRFX1koeCkJCSgoeCkgJiAweGZmZikKKyNkZWZpbmUgT0ZGU0laRSh4 KQkJKCgoeCkgJiAweDNmZmYpIDw8IDE0KQorI2RlZmluZSBQQUdFV0lEVEgoeCkJCSgoeCkgJiAw eDNmZmYpCisKK3N0YXRpYyB2b2lkIGRlY29uX3dpbl9tb2RlX3NldChzdHJ1Y3QgZXh5bm9zX2Ry bV9jcnRjICpjcnRjLAorCQkJICAgICAgIHN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpwbGFuZSkK K3sKKwlzdHJ1Y3QgZXh5bm9zX2RlY29uICpkZWNvbiA9IGNydGMtPmN0eDsKKwlzdHJ1Y3QgZGVj b25fcmVnX2RhdGEgKnJlZ19kYXRhOworCXVuc2lnbmVkIGludCBieXRlc19wZXJfcGl4ZWwgPSBw bGFuZS0+YnBwID4+IDM7CisJdW5zaWduZWQgaW50IHZhbF9oOworCXVuc2lnbmVkIGludCB2YWxf bDsKKwl1bnNpZ25lZCBpbnQgd2luOworCWRtYV9hZGRyX3QgYWRkcjsKKwl1MzIgdmFsID0gMDsK KworCWlmICghcGxhbmUpIHsKKwkJRFJNX0VSUk9SKCJwbGFuZSBpcyBOVUxMXG4iKTsKKwkJcmV0 dXJuOworCX0KKworCXdpbiA9IHBsYW5lLT56cG9zOworCWlmICh3aW4gPT0gREVGQVVMVF9aUE9T KQorCQl3aW4gPSAwOworCisJaWYgKHdpbiA8IDAgfHwgd2luID49IDUpCisJCXJldHVybjsKKwor CXJlZ19kYXRhID0gJmRlY29uLT5yZWdfZGF0YVt3aW5dOworCisJc3dpdGNoIChwbGFuZS0+cGl4 ZWxfZm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1hSR0IxNTU1OgorCQl2YWwgfD0gV0lOQ09O eF9CUFBNT0RFXzE2QlBQX0kxNTU1OworCQl2YWwgfD0gV0lOQ09OeF9IQVdTV1BfRjsKKwkJdmFs IHw9IFdJTkNPTnhfQlVSU1RMRU5fMTZXT1JEOworCQlicmVhazsKKwljYXNlIERSTV9GT1JNQVRf UkdCNTY1OgorCQl2YWwgfD0gV0lOQ09OeF9CUFBNT0RFXzE2QlBQXzU2NTsKKwkJdmFsIHw9IFdJ TkNPTnhfSEFXU1dQX0Y7CisJCXZhbCB8PSBXSU5DT054X0JVUlNUTEVOXzE2V09SRDsKKwkJYnJl YWs7CisJY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgorCQl2YWwgfD0gV0lOQ09OeF9CUFBNT0RF XzI0QlBQXzg4ODsKKwkJdmFsIHw9IFdJTkNPTnhfV1NXUF9GOworCQl2YWwgfD0gV0lOQ09OeF9C VVJTVExFTl8xNldPUkQ7CisJCWJyZWFrOworCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKKwkJ dmFsIHw9IFdJTkNPTnhfQlBQTU9ERV8zMkJQUF9BODg4ODsKKwkJdmFsIHw9IFdJTkNPTnhfV1NX UF9GIHwgV0lOQ09OeF9CTERfUElYX0YgfCBXSU5DT054X0FMUEhBX1NFTF9GOworCQl2YWwgfD0g V0lOQ09OeF9CVVJTVExFTl8xNldPUkQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXZhbCB8PSBX SU5DT054X0JQUE1PREVfMjRCUFBfODg4OworCQl2YWwgfD0gV0lOQ09OeF9XU1dQX0Y7CisJCXZh bCB8PSBXSU5DT054X0JVUlNUTEVOXzE2V09SRDsKKwkJYnJlYWs7CisJfQorCisJcmVnX2RhdGEt PndpbmNvbiA9IHZhbDsKKwlyZWdfZGF0YS0+dmlkb3NkX2EgPSBDT09SRElOQVRFX1gocGxhbmUt PmNydGNfeCkgfAorCQkJCUNPT1JESU5BVEVfWShwbGFuZS0+Y3J0Y195KTsKKwlyZWdfZGF0YS0+ dmlkb3NkX2IgPQorCQlDT09SRElOQVRFX1gocGxhbmUtPmNydGNfeCArIHBsYW5lLT5jcnRjX3dp ZHRoIC0gMSkgfAorCQlDT09SRElOQVRFX1kocGxhbmUtPmNydGNfeSArIHBsYW5lLT5jcnRjX2hl aWdodCAtIDEpOworCXJlZ19kYXRhLT52aWRvc2RfYyA9IFZJRE9TRF9XeF9BTFBIQV9SX0YoMHgw KSB8CisJCQkJVklET1NEX1d4X0FMUEhBX0dfRigweDApIHwKKwkJCQlWSURPU0RfV3hfQUxQSEFf Ql9GKDB4MCk7CisJcmVnX2RhdGEtPnZpZG9zZF9kID0gVklET1NEX1d4X0FMUEhBX1JfRigweDAp IHwKKwkJCQlWSURPU0RfV3hfQUxQSEFfR19GKDB4MCkgfAorCQkJCVZJRE9TRF9XeF9BTFBIQV9C X0YoMHgwKTsKKworCWFkZHIgPSBwbGFuZS0+ZG1hX2FkZHJbMF07CisJYWRkciArPSBwbGFuZS0+ ZmJfd2lkdGggKiBwbGFuZS0+ZmJfeSAqIGJ5dGVzX3Blcl9waXhlbDsKKwlhZGRyICs9IHBsYW5l LT5mYl94ICogYnl0ZXNfcGVyX3BpeGVsOworCisJcmVnX2RhdGEtPnZpZHdfYWRkMCA9IGFkZHI7 CisKKwlhZGRyICs9IHBsYW5lLT5mYl93aWR0aCAqIHBsYW5lLT5jcnRjX2hlaWdodCAqIGJ5dGVz X3Blcl9waXhlbDsKKworCXJlZ19kYXRhLT52aWR3X2FkZDEgPSBhZGRyOworCisJdmFsX2ggPSAo cGxhbmUtPmZiX3dpZHRoIC0gcGxhbmUtPmNydGNfd2lkdGgpICogYnl0ZXNfcGVyX3BpeGVsOwor CXZhbF9sID0gcGxhbmUtPmNydGNfd2lkdGggKiBieXRlc19wZXJfcGl4ZWw7CisKKwlyZWdfZGF0 YS0+dmlkd19hZGQyID0gT0ZGU0laRSh2YWxfaCkgfCBQQUdFV0lEVEgodmFsX2wpOworfQorCitz dGF0aWMgdm9pZCBkZWNvbl93aW5fY29tbWl0KHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMs IGludCB6cG9zKQoreworCXN0cnVjdCBleHlub3NfZGVjb24gKmRlY29uID0gY3J0Yy0+Y3R4Owor CXN0cnVjdCBkZWNvbl9yZWdfZGF0YSAqcmVnX2RhdGE7CisJdW5zaWduZWQgaW50IHdpbiA9IHpw b3M7CisJdTMyIHZhbDsKKworCWlmICh3aW4gPT0gREVGQVVMVF9aUE9TKQorCQl3aW4gPSAwOwor CisJaWYgKHdpbiA8IDAgfHwgd2luID49IDUpCisJCXJldHVybjsKKworCXJlZ19kYXRhID0gJmRl Y29uLT5yZWdfZGF0YVt3aW5dOworCisJLyogc2hhZG93IHVwZGF0ZSBkaXNhYmxlICovCisJdmFs ID0gcmVhZGwoZGVjb24tPmFkZHIgKyBERUNPTl9TSEFET1dDT04pOworCXZhbCB8PSBTSEFET1dD T05fV3hfUFJPVEVDVCh3aW4pOworCXdyaXRlbCh2YWwsIGRlY29uLT5hZGRyICsgREVDT05fU0hB RE9XQ09OKTsKKworCXdyaXRlbChyZWdfZGF0YS0+dmlkb3NkX2EsIGRlY29uLT5hZGRyICsgREVD T05fVklET1NEeEEod2luKSk7CisJd3JpdGVsKHJlZ19kYXRhLT52aWRvc2RfYiwgZGVjb24tPmFk ZHIgKyBERUNPTl9WSURPU0R4Qih3aW4pKTsKKwl3cml0ZWwocmVnX2RhdGEtPnZpZG9zZF9jLCBk ZWNvbi0+YWRkciArIERFQ09OX1ZJRE9TRHhDKHdpbikpOworCXdyaXRlbChyZWdfZGF0YS0+dmlk b3NkX2QsIGRlY29uLT5hZGRyICsgREVDT05fVklET1NEeEQod2luKSk7CisJd3JpdGVsKHJlZ19k YXRhLT52aWR3X2FkZDAsIGRlY29uLT5hZGRyICsgREVDT05fVklEVzB4QUREMEIwKHdpbikpOwor CXdyaXRlbChyZWdfZGF0YS0+dmlkd19hZGQxLCBkZWNvbi0+YWRkciArIERFQ09OX1ZJRFcweEFE RDFCMCh3aW4pKTsKKwl3cml0ZWwocmVnX2RhdGEtPnZpZHdfYWRkMiwgZGVjb24tPmFkZHIgKyBE RUNPTl9WSURXMHhBREQyKHdpbikpOworCisJLyogd2luZG93IGVuYWJsZSAqLworCXZhbCA9IHJl Z19kYXRhLT53aW5jb247CisJdmFsIHw9IFdJTkNPTnhfRU5XSU5fRjsKKwl3cml0ZWwodmFsLCBk ZWNvbi0+YWRkciArIERFQ09OX1dJTkNPTngod2luKSk7CisKKwkvKiBzaGFkb3cgdXBkYXRlIGVu YWJsZSAqLworCXZhbCA9IHJlYWRsKGRlY29uLT5hZGRyICsgREVDT05fU0hBRE9XQ09OKTsKKwl2 YWwgJj0gflNIQURPV0NPTl9XeF9QUk9URUNUKHdpbik7CisJd3JpdGVsKHZhbCwgZGVjb24tPmFk ZHIgKyBERUNPTl9TSEFET1dDT04pOworCisJLyogc3RhbmRhbG9uZSB1cGRhdGUgKi8KKwl2YWwg PSByZWFkbChkZWNvbi0+YWRkciArIERFQ09OX1VQREFURSk7CisJdmFsIHw9IFNUQU5EQUxPTkVf VVBEQVRFX0Y7CisJd3JpdGVsKHZhbCwgZGVjb24tPmFkZHIgKyBERUNPTl9VUERBVEUpOworCisJ aWYgKGRlY29uLT5pODBfaWYpCisJCWF0b21pY19zZXQoJmRlY29uLT53aW5fdXBkYXRlZCwgMSk7 Cit9CisKK3N0YXRpYyB2b2lkIGRlY29uX3dpbl9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2Ny dGMgKmNydGMsIGludCB6cG9zKQoreworCXN0cnVjdCBleHlub3NfZGVjb24gKmRlY29uID0gY3J0 Yy0+Y3R4OworCXN0cnVjdCBkZWNvbl9yZWdfZGF0YSAqcmVnX2RhdGE7CisJdW5zaWduZWQgaW50 IHdpbiA9IHpwb3M7CisJdTMyIHZhbDsKKworCWlmICh3aW4gPT0gREVGQVVMVF9aUE9TKQorCQl3 aW4gPSAwOworCisJaWYgKHdpbiA8IDAgfHwgd2luID49IDUpCisJCXJldHVybjsKKworCXJlZ19k YXRhID0gJmRlY29uLT5yZWdfZGF0YVt3aW5dOworCisJLyogc2hhZG93IHVwZGF0ZSBkaXNhYmxl ICovCisJdmFsID0gcmVhZGwoZGVjb24tPmFkZHIgKyBERUNPTl9TSEFET1dDT04pOworCXZhbCB8 PSBTSEFET1dDT05fV3hfUFJPVEVDVCh3aW4pOworCXdyaXRlbCh2YWwsIGRlY29uLT5hZGRyICsg REVDT05fU0hBRE9XQ09OKTsKKworCS8qIHdpbmRvdyBkaXNhYmxlICovCisJdmFsID0gcmVnX2Rh dGEtPndpbmNvbjsKKwl2YWwgJj0gfldJTkNPTnhfRU5XSU5fRjsKKwl3cml0ZWwodmFsLCBkZWNv bi0+YWRkciArIERFQ09OX1dJTkNPTngod2luKSk7CisKKwkvKiBzaGFkb3cgdXBkYXRlIGVuYWJs ZSAqLworCXZhbCA9IHJlYWRsKGRlY29uLT5hZGRyICsgREVDT05fU0hBRE9XQ09OKTsKKwl2YWwg Jj0gflNIQURPV0NPTl9XeF9QUk9URUNUKHdpbik7CisJd3JpdGVsKHZhbCwgZGVjb24tPmFkZHIg KyBERUNPTl9TSEFET1dDT04pOworCisJLyogc3RhbmRhbG9uZSB1cGRhdGUgKi8KKwl2YWwgPSBy ZWFkbChkZWNvbi0+YWRkciArIERFQ09OX1VQREFURSk7CisJdmFsIHw9IFNUQU5EQUxPTkVfVVBE QVRFX0Y7CisJd3JpdGVsKHZhbCwgZGVjb24tPmFkZHIgKyBERUNPTl9VUERBVEUpOworfQorCit2 b2lkIGRlY29uX3RlX2lycV9oYW5kbGVyKHN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMpCit7 CisJc3RydWN0IGV4eW5vc19kZWNvbiAqZGVjb24gPSBjcnRjLT5jdHg7CisJdTMyIHZhbDsKKwor CWlmICghdGVzdF9iaXQoQklUX0NMS1NfRU5BQkxFRCwgJmRlY29uLT5lbmFibGVkKSkKKwkJcmV0 dXJuOworCisJaWYgKGF0b21pY19hZGRfdW5sZXNzKCZkZWNvbi0+d2luX3VwZGF0ZWQsIC0xLCAw KSkgeworCQkvKiB0cmlnZ2VyICovCisJCXZhbCA9IHJlYWRsKGRlY29uLT5hZGRyICsgREVDT05f VFJJR0NPTik7CisJCXZhbCB8PSBUUklHQ09OX1NXVFJJR0NNRDsKKwkJd3JpdGVsKHZhbCwgZGVj b24tPmFkZHIgKyBERUNPTl9UUklHQ09OKTsKKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZXh5bm9z X2RybV9jcnRjX29wcyBkZWNvbl9jcnRjX29wcyA9IHsKKwkuZHBtcwkJCT0gZGVjb25fZHBtcywK KwkuZW5hYmxlX3ZibGFuawkJPSBkZWNvbl9lbmFibGVfdmJsYW5rLAorCS5kaXNhYmxlX3ZibGFu awkJPSBkZWNvbl9kaXNhYmxlX3ZibGFuaywKKwkuY29tbWl0CQkJPSBkZWNvbl9jb21taXQsCisJ Lndpbl9tb2RlX3NldAkJPSBkZWNvbl93aW5fbW9kZV9zZXQsCisJLndpbl9jb21taXQJCT0gZGVj b25fd2luX2NvbW1pdCwKKwkud2luX2Rpc2FibGUJCT0gZGVjb25fd2luX2Rpc2FibGUsCisJLnRl X2hhbmRsZXIJCT0gZGVjb25fdGVfaXJxX2hhbmRsZXIsCit9OworCitzdGF0aWMgaW50IGRlY29u X2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRh dGEpCit7CisJc3RydWN0IGV4eW5vc19kZWNvbiAqZGVjb24gPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7CisJc3RydWN0IGV4eW5vc19k cm1fcHJpdmF0ZSAqcHJpdiA9IGRybV9kZXYtPmRldl9wcml2YXRlOworCisJZGVjb24tPmRybV9k ZXYgPSBkcm1fZGV2OworCWRlY29uLT5waXBlID0gcHJpdi0+cGlwZSsrOworCisJZGVjb24tPmNy dGMgPSBleHlub3NfZHJtX2NydGNfY3JlYXRlKGRybV9kZXYsIGRlY29uLT5waXBlLAorCQkJRVhZ Tk9TX0RJU1BMQVlfVFlQRV9MQ0QsICZkZWNvbl9jcnRjX29wcywgZGVjb24pOworCWlmIChJU19F UlIoZGVjb24tPmNydGMpKQorCQlyZXR1cm4gUFRSX0VSUihkZWNvbi0+Y3J0Yyk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIHZvaWQgZGVjb25fdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwg c3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBleHlub3NfZGVj b24gKmRlY29uID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlkZWNvbl9kcG1zKGRlY29uLT5j cnRjLCBEUk1fTU9ERV9EUE1TX09GRik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29tcG9u ZW50X29wcyBkZWNvbl9jb21wb25lbnRfb3BzID0geworCS5iaW5kCT0gZGVjb25fYmluZCwKKwku dW5iaW5kID0gZGVjb25fdW5iaW5kLAorfTsKKworc3RhdGljIGlycXJldHVybl90IGRlY29uX3Zz eW5jX2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlzdHJ1Y3QgZXh5bm9z X2RlY29uICpkZWNvbiA9IGRldl9pZDsKKwl1MzIgdmFsOworCisJaWYgKCF0ZXN0X2JpdChCSVRf Q0xLU19FTkFCTEVELCAmZGVjb24tPmVuYWJsZWQpKQorCQlnb3RvIG91dDsKKworCXZhbCA9IHJl YWRsKGRlY29uLT5hZGRyICsgREVDT05fVklESU5UQ09OMSk7CisJaWYgKHZhbCAmIFZJRElOVENP TjFfSU5URlJNUEVORCkgeworCQlpZiAoZGVjb24tPmRybV9kZXYpCisJCQlkcm1faGFuZGxlX3Zi bGFuayhkZWNvbi0+ZHJtX2RldiwgZGVjb24tPnBpcGUpOworCisJCS8qIGNsZWFyICovCisJCXdy aXRlbChWSURJTlRDT04xX0lOVEZSTVBFTkQsIGRlY29uLT5hZGRyICsgREVDT05fVklESU5UQ09O MSk7CisJfQorCitvdXQ6CisJcmV0dXJuIElSUV9IQU5ETEVEOworfQorCitzdGF0aWMgaXJxcmV0 dXJuX3QgZGVjb25fbGNkX3N5c19pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkZXZfaWQpCit7 CisJc3RydWN0IGV4eW5vc19kZWNvbiAqZGVjb24gPSBkZXZfaWQ7CisJdTMyIHZhbDsKKworCWlm ICghdGVzdF9iaXQoQklUX0NMS1NfRU5BQkxFRCwgJmRlY29uLT5lbmFibGVkKSkKKwkJZ290byBv dXQ7CisKKwl2YWwgPSByZWFkbChkZWNvbi0+YWRkciArIERFQ09OX1ZJRElOVENPTjEpOworCWlm ICh2YWwgJiBWSURJTlRDT04xX0lOVEZSTURPTkVQRU5EKSB7CisJCWlmIChkZWNvbi0+ZHJtX2Rl dikKKwkJCWV4eW5vc19kcm1fY3J0Y19maW5pc2hfcGFnZWZsaXAoZGVjb24tPmRybV9kZXYsCisJ CQkJCQkJZGVjb24tPnBpcGUpOworCQkvKiBjbGVhciAqLworCQl3cml0ZWwoVklESU5UQ09OMV9J TlRGUk1ET05FUEVORCwKKwkJCQlkZWNvbi0+YWRkciArIERFQ09OX1ZJRElOVENPTjEpOworCX0K Kworb3V0OgorCXJldHVybiBJUlFfSEFORExFRDsKK30KKworc3RhdGljIGludCBleHlub3M1NDMz X2RlY29uX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0IGRl dmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgZXh5bm9zX2RlY29uICpkZWNvbjsKKwlz dHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlpbnQgcmV0OworCWludCBpOworCisJZGVjb24gPSBkZXZt X2t6YWxsb2MoZGV2LCBzaXplb2YoKmRlY29uKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkZWNvbikK KwkJcmV0dXJuIC1FTk9NRU07CisKKwlkZWNvbi0+ZGV2ID0gZGV2OworCWlmIChvZl9nZXRfY2hp bGRfYnlfbmFtZShkZXYtPm9mX25vZGUsICJpODAtaWYtdGltaW5ncyIpKQorCQlkZWNvbi0+aTgw X2lmID0gdHJ1ZTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRlY29uX2Nsa3NfbmFt ZSk7IGkrKykgeworCQlzdHJ1Y3QgY2xrICpjbGs7CisKKwkJY2xrID0gZGV2bV9jbGtfZ2V0KGRl Y29uLT5kZXYsIGRlY29uX2Nsa3NfbmFtZVtpXSk7CisJCWlmIChJU19FUlIoY2xrKSkKKwkJCXJl dHVybiBQVFJfRVJSKGNsayk7CisKKwkJZGVjb24tPmNsa3NbaV0gPSBjbGs7CisJfQorCisJcmVz ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlpZiAo IXJlcykgeworCQlkZXZfZXJyKGRldiwgImNhbm5vdCBmaW5kIElPIHJlc291cmNlXG4iKTsKKwkJ cmV0dXJuIC1FTlhJTzsKKwl9CisKKwlkZWNvbi0+YWRkciA9IGRldm1faW9yZW1hcF9yZXNvdXJj ZShkZXYsIHJlcyk7CisJaWYgKElTX0VSUihkZWNvbi0+YWRkcikpIHsKKwkJZGV2X2VycihkZXYs ICJpb3JlbWFwIGZhaWxlZFxuIik7CisJCXJldHVybiBQVFJfRVJSKGRlY29uLT5hZGRyKTsKKwl9 CisKKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBkZXYsIElPUkVTT1VSQ0Vf SVJRLAorCQkJZGVjb24tPmk4MF9pZiA/ICJsY2Rfc3lzIiA6ICJ2c3luYyIpOworCWlmICghcmVz KSB7CisJCWRldl9lcnIoZGV2LCAiY2Fubm90IGZpbmQgSVJRIHJlc291cmNlXG4iKTsKKwkJcmV0 dXJuIC1FTlhJTzsKKwl9CisKKwlyZXQgPSBkZXZtX3JlcXVlc3RfaXJxKGRldiwgcmVzLT5zdGFy dCwgZGVjb24tPmk4MF9pZiA/CisJCQlkZWNvbl9sY2Rfc3lzX2lycV9oYW5kbGVyIDogZGVjb25f dnN5bmNfaXJxX2hhbmRsZXIsIDAsCisJCQkiZHJtX2RlY29uIiwgZGVjb24pOworCWlmIChyZXQg PCAwKSB7CisJCWRldl9lcnIoZGV2LCAibGNkX3N5cyBpcnEgcmVxdWVzdCBmYWlsZWRcbiIpOwor CQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGV4eW5vc19kcm1fY29tcG9uZW50X2FkZChkZXYs IEVYWU5PU19ERVZJQ0VfVFlQRV9DUlRDLAorCQkJCSAgICAgICBFWFlOT1NfRElTUExBWV9UWVBF X0xDRCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShwZGV2LCBkZWNvbik7CisKKwlyZXQgPSBjb21wb25lbnRfYWRkKGRldiwgJmRlY29uX2Nv bXBvbmVudF9vcHMpOworCWlmIChyZXQgPCAwKSB7CisJCWV4eW5vc19kcm1fY29tcG9uZW50X2Rl bChkZXYsIEVYWU5PU19ERVZJQ0VfVFlQRV9DUlRDKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBleHlub3M1NDMzX2RlY29uX3JlbW92ZShzdHJ1Y3Qg cGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCWNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmRl Y29uX2NvbXBvbmVudF9vcHMpOworCWV4eW5vc19kcm1fY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2 LCBFWFlOT1NfREVWSUNFX1RZUEVfQ1JUQyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZXh5bm9zNTQzM19kZWNvbl9kcml2ZXJfZHRfbWF0Y2hb XSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9zNTQzMy1kZWNvbiIgfSwKKwl7 fSwKK307CitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBleHlub3M1NDMzX2RlY29uX2RyaXZlcl9k dF9tYXRjaCk7CisKK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZXh5bm9zNTQzM19kZWNvbl9kcml2 ZXIgPSB7CisJLnByb2JlCQk9IGV4eW5vczU0MzNfZGVjb25fcHJvYmUsCisJLnJlbW92ZQkJPSBl eHlub3M1NDMzX2RlY29uX3JlbW92ZSwKKwkuZHJpdmVyCQk9IHsKKwkJLm5hbWUJPSAiZXh5bm9z NTQzMy1kZWNvbiIsCisJCS5vd25lcgk9IFRISVNfTU9EVUxFLAorCQkub2ZfbWF0Y2hfdGFibGUg PSBleHlub3M1NDMzX2RlY29uX2RyaXZlcl9kdF9tYXRjaCwKKwl9LAorfTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RybV9kcnYuYwppbmRleCA5OGEyMzlhLi4xZmEwZGQwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5jCkBAIC01NTYsNiArNTU2LDkgQEAgc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmNvbnN0IGV4eW5vc19kcm1fa21zX2RyaXZlcnNb XSA9IHsKICNpZmRlZiBDT05GSUdfRFJNX0VYWU5PU19GSU1ECiAJJmZpbWRfZHJpdmVyLAogI2Vu ZGlmCisjaWZkZWYgQ09ORklHX0RSTV9FWFlOT1M1NDMzX0RFQ09OCisJJmV4eW5vczU0MzNfZGVj b25fZHJpdmVyLAorI2VuZGlmCiAjaWZkZWYgQ09ORklHX0RSTV9FWFlOT1M3X0RFQ09OCiAJJmRl Y29uX2RyaXZlciwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rydi5o CmluZGV4IDlhZmQzOTAuLjQwOTk2ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlu b3MvZXh5bm9zX2RybV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cm1fZHJ2LmgKQEAgLTM0NCw2ICszNDQsNyBAQCB2b2lkIGV4eW5vc19kcm1fY29tcG9uZW50X2Rl bChzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJCQkJZW51bSBleHlub3NfZHJtX2RldmljZV90eXBlIGRl dl90eXBlKTsKCiBleHRlcm4gc3RydWN0IHBsYXRmb3JtX2RyaXZlciBmaW1kX2RyaXZlcjsKK2V4 dGVybiBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGV4eW5vczU0MzNfZGVjb25fZHJpdmVyOwogZXh0 ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZGVjb25fZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgZHBfZHJpdmVyOwogZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIg ZHNpX2RyaXZlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvcmVncy1leHlu b3M1NDMzLWRlY29uLmggYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL3JlZ3MtZXh5bm9zNTQzMy1k ZWNvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllN2Y4NTEKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL3JlZ3MtZXh5bm9zNTQzMy1kZWNv bi5oCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IFNhbXN1bmcg RWxlY3Ryb25pY3MgQ28uTHRkCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCisgKiBw dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbnIKKyAqLworCisjaWZuZGVm IEVYWU5PU19SRUdTX0RFQ09OX0gKKyNkZWZpbmUgRVhZTk9TX1JFR1NfREVDT05fSAorCisvKiBF eHlub3M1NDNYIERFQ09OICovCisjZGVmaW5lIERFQ09OX1ZJRENPTjAJCQkweDAwMDAKKyNkZWZp bmUgREVDT05fVklET1VUQ09OMAkJMHgwMDEwCisjZGVmaW5lIERFQ09OX1dJTkNPTngobikJCSgw eDAwMjAgKyAoKG4pICogNCkpCisjZGVmaW5lIERFQ09OX1ZJRE9TRHhIKG4pCQkoMHgwMDgwICsg KChuKSAqIDQpKQorI2RlZmluZSBERUNPTl9TSEFET1dDT04JCQkweDAwQTAKKyNkZWZpbmUgREVD T05fVklET1NEeEEobikJCSgweDAwQjAgKyAoKG4pICogMHgyMCkpCisjZGVmaW5lIERFQ09OX1ZJ RE9TRHhCKG4pCQkoMHgwMEI0ICsgKChuKSAqIDB4MjApKQorI2RlZmluZSBERUNPTl9WSURPU0R4 QyhuKQkJKDB4MDBCOCArICgobikgKiAweDIwKSkKKyNkZWZpbmUgREVDT05fVklET1NEeEQobikJ CSgweDAwQkMgKyAoKG4pICogMHgyMCkpCisjZGVmaW5lIERFQ09OX1ZJRE9TRHhFKG4pCQkoMHgw MEMwICsgKChuKSAqIDB4MjApKQorI2RlZmluZSBERUNPTl9WSURXMHhBREQwQjAobikJCSgweDAx NTAgKyAoKG4pICogMHgxMCkpCisjZGVmaW5lIERFQ09OX1ZJRFcweEFERDBCMShuKQkJKDB4MDE1 NCArICgobikgKiAweDEwKSkKKyNkZWZpbmUgREVDT05fVklEVzB4QUREMEIyKG4pCQkoMHgwMTU4 ICsgKChuKSAqIDB4MTApKQorI2RlZmluZSBERUNPTl9WSURXMHhBREQxQjAobikJCSgweDAxQTAg KyAoKG4pICogMHgxMCkpCisjZGVmaW5lIERFQ09OX1ZJRFcweEFERDFCMShuKQkJKDB4MDFBNCAr ICgobikgKiAweDEwKSkKKyNkZWZpbmUgREVDT05fVklEVzB4QUREMUIyKG4pCQkoMHgwMUE4ICsg KChuKSAqIDB4MTApKQorI2RlZmluZSBERUNPTl9WSURXMHhBREQyKG4pCQkoMHgwMjAwICsgKChu KSAqIDQpKQorI2RlZmluZSBERUNPTl9MT0NBTHhTSVpFKG4pCQkoMHgwMjE0ICsgKChuKSAqIDQp KQorI2RlZmluZSBERUNPTl9WSURJTlRDT04wCQkweDAyMjAKKyNkZWZpbmUgREVDT05fVklESU5U Q09OMQkJMHgwMjI0CisjZGVmaW5lIERFQ09OX1d4S0VZQ09OMChuKQkJKDB4MDIzMCArICgobiAt IDEpICogOCkpCisjZGVmaW5lIERFQ09OX1d4S0VZQ09OMShuKQkJKDB4MDIzNCArICgobiAtIDEp ICogOCkpCisjZGVmaW5lIERFQ09OX1d4S0VZQUxQSEEobikJCSgweDAyNTAgKyAoKG4gLSAxKSAq IDQpKQorI2RlZmluZSBERUNPTl9XSU54TUFQKG4pCQkoMHgwMjcwICsgKChuKSAqIDQpKQorI2Rl ZmluZSBERUNPTl9RT1NMVVQwN18wMAkJMHgwMkMwCisjZGVmaW5lIERFQ09OX1FPU0xVVDE1XzA4 CQkweDAyQzQKKyNkZWZpbmUgREVDT05fUU9TQ1RSTAkJCTB4MDJDOAorI2RlZmluZSBERUNPTl9C TEVOREVSUXgobikJCSgweDAzMDAgKyAoKG4gLSAxKSAqIDQpKQorI2RlZmluZSBERUNPTl9CTEVO RENPTgkJCTB4MDMxMAorI2RlZmluZSBERUNPTl9PUEVfVklEVzB4QUREMChuKQkJKDB4MDQwMCAr ICgobikgKiA0KSkKKyNkZWZpbmUgREVDT05fT1BFX1ZJRFcweEFERDEobikJCSgweDA0MTQgKyAo KG4pICogNCkpCisjZGVmaW5lIERFQ09OX0ZSQU1FRklGT19SRUc3CQkweDA1MUMKKyNkZWZpbmUg REVDT05fRlJBTUVGSUZPX1JFRzgJCTB4MDUyMAorI2RlZmluZSBERUNPTl9GUkFNRUZJRk9fU1RB VFVTCQkweDA1MjQKKyNkZWZpbmUgREVDT05fQ01VCQkJMHgxNDA0CisjZGVmaW5lIERFQ09OX1VQ REFURQkJCTB4MTQxMAorI2RlZmluZSBERUNPTl9VUERBVEVfU0NIRU1FCQkweDE0MzgKKyNkZWZp bmUgREVDT05fVklEQ09OMQkJCTB4MjAwMAorI2RlZmluZSBERUNPTl9WSURDT04yCQkJMHgyMDA0 CisjZGVmaW5lIERFQ09OX1ZJRENPTjMJCQkweDIwMDgKKyNkZWZpbmUgREVDT05fVklEQ09ONAkJ CTB4MjAwQworI2RlZmluZSBERUNPTl9WSURUQ09OMgkJCTB4MjAyOAorI2RlZmluZSBERUNPTl9G UkFNRV9TSVpFCQkweDIwMzgKKyNkZWZpbmUgREVDT05fTElORUNOVF9PUF9USFJFU0hPTEQJMHgy MDNDCisjZGVmaW5lIERFQ09OX1RSSUdDT04JCQkweDIwNDAKKyNkZWZpbmUgREVDT05fVFJJR1NL SVAJCQkweDIwNTAKKyNkZWZpbmUgREVDT05fQ1JDUkRBVEEJCQkweDIwQjAKKyNkZWZpbmUgREVD T05fQ1JDQ1RSTAkJCTB4MjBCNAorCisvKiBFeHlub3M1NDMwIERFQ09OICovCisjZGVmaW5lIERF Q09OX1ZJRFRDT04wCQkJMHgyMDIwCisjZGVmaW5lIERFQ09OX1ZJRFRDT04xCQkJMHgyMDI0CisK Ky8qIEV4eW5vczU0MzMgREVDT04gKi8KKyNkZWZpbmUgREVDT05fVklEVENPTjAwCQkJMHgyMDEw CisjZGVmaW5lIERFQ09OX1ZJRFRDT04wMQkJCTB4MjAxNAorI2RlZmluZSBERUNPTl9WSURUQ09O MTAJCQkweDIwMTgKKyNkZWZpbmUgREVDT05fVklEVENPTjExCQkJMHgyMDFDCisKKy8qIEV4eW5v czU0M1ggREVDT04gSW50ZXJuYWwgKi8KKyNkZWZpbmUgREVDT05fVzAxM0RTVFJFT0NPTgkJMHgw MzIwCisjZGVmaW5lIERFQ09OX1cyMzNEU1RSRU9DT04JCTB4MDMyNAorI2RlZmluZSBERUNPTl9G UkFNRUZJRk9fUkVHMAkJMHgwNTAwCisjZGVmaW5lIERFQ09OX0VOSEFOQ0VSX0NUUkwJCTB4MjEw MAorCisvKiBFeHlub3M1NDNYIERFQ09OIFRWICovCisjZGVmaW5lIERFQ09OX1ZDTEtDT04wCQkJ MHgwMDE0CisjZGVmaW5lIERFQ09OX1ZJRElOVENPTjIJCTB4MDIyOAorI2RlZmluZSBERUNPTl9W SURJTlRDT04zCQkweDAyMkMKKworLyogVklEQ09OMCAqLworI2RlZmluZSBWSURDT04wX0VOVklE CQkJKDEgPDwgMSkKKyNkZWZpbmUgVklEQ09OMF9FTlZJRF9GCQkJKDEgPDwgMCkKKworLyogVklE T1VUQ09OMCAqLworI2RlZmluZSBWSURPVVRfTENEX09OCQkJKDEgPDwgMjQpCisjZGVmaW5lIFZJ RE9VVF9JRl9GX01BU0sJCSgweDMgPDwgMjApCisjZGVmaW5lIFZJRE9VVF9SR0JfSUYJCQkoMHgw IDw8IDIwKQorI2RlZmluZSBWSURPVVRfQ09NTUFORF9JRgkJKDB4MiA8PCAyMCkKKworLyogV0lO Q09OeCAqLworI2RlZmluZSBXSU5DT054X0hBV1NXUF9GCQkoMSA8PCAxNikKKyNkZWZpbmUgV0lO Q09OeF9XU1dQX0YJCQkoMSA8PCAxNSkKKyNkZWZpbmUgV0lOQ09OeF9CVVJTVExFTl9NQVNLCQko MHgzIDw8IDEwKQorI2RlZmluZSBXSU5DT054X0JVUlNUTEVOXzE2V09SRAkJKDB4MCA8PCAxMCkK KyNkZWZpbmUgV0lOQ09OeF9CVVJTVExFTl84V09SRAkJKDB4MSA8PCAxMCkKKyNkZWZpbmUgV0lO Q09OeF9CVVJTVExFTl80V09SRAkJKDB4MiA8PCAxMCkKKyNkZWZpbmUgV0lOQ09OeF9CTERfUElY X0YJCSgxIDw8IDYpCisjZGVmaW5lIFdJTkNPTnhfQlBQTU9ERV9NQVNLCQkoMHhmIDw8IDIpCisj ZGVmaW5lIFdJTkNPTnhfQlBQTU9ERV8xNkJQUF81NjUJKDB4NSA8PCAyKQorI2RlZmluZSBXSU5D T054X0JQUE1PREVfMTZCUFBfQTE1NTUJKDB4NiA8PCAyKQorI2RlZmluZSBXSU5DT054X0JQUE1P REVfMTZCUFBfSTE1NTUJKDB4NyA8PCAyKQorI2RlZmluZSBXSU5DT054X0JQUE1PREVfMjRCUFBf ODg4CSgweGIgPDwgMikKKyNkZWZpbmUgV0lOQ09OeF9CUFBNT0RFXzI0QlBQX0ExODg3CSgweGMg PDwgMikKKyNkZWZpbmUgV0lOQ09OeF9CUFBNT0RFXzI1QlBQX0ExODg4CSgweGQgPDwgMikKKyNk ZWZpbmUgV0lOQ09OeF9CUFBNT0RFXzMyQlBQX0E4ODg4CSgweGQgPDwgMikKKyNkZWZpbmUgV0lO Q09OeF9CUFBNT0RFXzE2QlBQX0E0NDQ0CSgweGUgPDwgMikKKyNkZWZpbmUgV0lOQ09OeF9BTFBI QV9TRUxfRgkJKDEgPDwgMSkKKyNkZWZpbmUgV0lOQ09OeF9FTldJTl9GCQkJKDEgPDwgMCkKKwor LyogU0hBRE9XQ09OICovCisjZGVmaW5lIFNIQURPV0NPTl9XeF9QUk9URUNUKG4pCQkoMSA8PCAo MTAgKyAobikpKQorCisvKiBWSURPU0R4RCAqLworI2RlZmluZSBWSURPU0RfV3hfQUxQSEFfUl9G KG4pCQkoKChuKSAmIDB4ZmYpIDw8IDE2KQorI2RlZmluZSBWSURPU0RfV3hfQUxQSEFfR19GKG4p CQkoKChuKSAmIDB4ZmYpIDw8IDgpCisjZGVmaW5lIFZJRE9TRF9XeF9BTFBIQV9CX0YobikJCSgo KG4pICYgMHhmZikgPDwgMCkKKworLyogVklESU5UQ09OMCAqLworI2RlZmluZSBWSURJTlRDT04w X0ZSQU1FRE9ORQkJKDEgPDwgMTcpCisjZGVmaW5lIFZJRElOVENPTjBfSU5URlJNRU4JCSgxIDw8 IDEyKQorI2RlZmluZSBWSURJTlRDT04wX0lOVEVOCQkoMSA8PCAwKQorCisvKiBWSURJTlRDT04x ICovCisjZGVmaW5lIFZJRElOVENPTjFfSU5URlJNRE9ORVBFTkQJKDEgPDwgMikKKyNkZWZpbmUg VklESU5UQ09OMV9JTlRGUk1QRU5ECQkoMSA8PCAxKQorI2RlZmluZSBWSURJTlRDT04xX0lOVEZJ Rk9QRU5ECQkoMSA8PCAwKQorCisvKiBERUNPTl9DTVUgKi8KKyNkZWZpbmUgQ01VX0NMS0dBR0Vf TU9ERV9TRlJfRgkJKDEgPDwgMSkKKyNkZWZpbmUgQ01VX0NMS0dBR0VfTU9ERV9NRU1fRgkJKDEg PDwgMCkKKworLyogREVDT05fVVBEQVRFICovCisjZGVmaW5lIFNUQU5EQUxPTkVfVVBEQVRFX0YJ CSgxIDw8IDApCisKKy8qIERFQ09OX1ZJRFRDT04wMCAqLworI2RlZmluZSBWSURUQ09OMDBfVkJQ RF9GKHgpCQkoKCh4KSAmIDB4ZmZmKSA8PCAxNikKKyNkZWZpbmUgVklEVENPTjAwX1ZGUERfRih4 KQkJKCh4KSAmIDB4ZmZmKQorCisvKiBERUNPTl9WSURUQ09OMDEgKi8KKyNkZWZpbmUgVklEVENP TjAxX1ZTUFdfRih4KQkJKCgoeCkgJiAweGZmZikgPDwgMTYpCisKKy8qIERFQ09OX1ZJRFRDT04x MCAqLworI2RlZmluZSBWSURUQ09OMTBfSEJQRF9GKHgpCQkoKCh4KSAmIDB4ZmZmKSA8PCAxNikK KyNkZWZpbmUgVklEVENPTjEwX0hGUERfRih4KQkJKCh4KSAmIDB4ZmZmKQorCisvKiBERUNPTl9W SURUQ09OMTEgKi8KKyNkZWZpbmUgVklEVENPTjExX0hTUFdfRih4KQkJKCgoeCkgJiAweGZmZikg PDwgMTYpCisKKy8qIERFQ09OX1ZJRFRDT04yICovCisjZGVmaW5lIFZJRFRDT04yX0xJTkVWQUwo eCkJCSgoKHgpICYgMHhmZmYpIDw8IDE2KQorI2RlZmluZSBWSURUQ09OMl9IT1pWQUwoeCkJCSgo eCkgJiAweGZmZikKKworLyogVFJJR0NPTiAqLworI2RlZmluZSBUUklHQ09OX1RSSUdFTl9QRVJf RgkJKDEgPDwgMzEpCisjZGVmaW5lIFRSSUdDT05fVFJJR0VOX0YJCSgxIDw8IDMwKQorI2RlZmlu ZSBUUklHQ09OX1RFX0FVVE9fTUFTSwkJKDEgPDwgMjkpCisjZGVmaW5lIFRSSUdDT05fU1dUUklH Q01ECQkoMSA8PCAxKQorI2RlZmluZSBUUklHQ09OX1NXVFJJR0VOCQkoMSA8PCAwKQorCisjZW5k aWYgLyogRVhZTk9TX1JFR1NfREVDT05fSCAqLwotLQoxLjkuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK