From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 02/12] drm/amd: Add CGS interfaces Date: Thu, 9 Jul 2015 12:21:01 -0400 Message-ID: <1436458871-16358-2-git-send-email-alexander.deucher@amd.com> References: <1436458871-16358-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk0-f182.google.com (mail-qk0-f182.google.com [209.85.220.182]) by gabe.freedesktop.org (Postfix) with ESMTPS id A452E6E7EA for ; Thu, 9 Jul 2015 09:21:20 -0700 (PDT) Received: by qkcl188 with SMTP id l188so5957438qkc.1 for ; Thu, 09 Jul 2015 09:21:19 -0700 (PDT) In-Reply-To: <1436458871-16358-1-git-send-email-alexander.deucher@amd.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 Cc: Alex Deucher , Chunming Zhou , Maruthi.Bayyavarapu@amd.com List-Id: dri-devel@lists.freedesktop.org RnJvbTogQ2h1bm1pbmcgWmhvdSA8RGF2aWQxLlpob3VAYW1kLmNvbT4KCkNHUyAoQ29tbW9uIEdy YXBoaWNzIFNlcnZpY2VzKSBpcyBhbiBBTUQgY3Jvc3MgY29tcG9uZW50CmFic3RyYWN0aW9uIGxh eWVyIHRvIGRlc2lnbmVkIHRvIGJldHRlciBlbmNhcHN1bGF0ZQpzcGVjaWZpYyBJUCBibG9jayBk cml2ZXJzIHNvIGRpZmZlcmVudCB0ZWFtcyBjYW4gZWZmZWN0aXZlbHkKd29yayBvbiBkaWZmZXJu ZXQgSVAgYmxvY2sgZHJpdmVycyBpbmRlcGVuZGVudGx5LiBJdCBwcm92aWRlcwphIGNvbW1vbiBp bnRlcmZhY2UgZm9yIHRoaW5ncyBsaWtlIGFjY2Vzc2luZyByZWdpc3RlcnMsCmFsbG9jYXRpbmcg R1BVIG1lbW9yeSwgYW5kIHJlZ2lzdGVyaW5nIGludGVycnVwdCBzb3VyY2VzLgpUaGUgcGxhbiBp cyB0byBldmVudHVhbGx5IG1vdmUgbW9yZSBhbmQgbW9yZSBJUCBkcml2ZXJzIHRvCnRoaXMgaW50 ZXJmYWNlLiAgVGhlIGZpcnN0IHVzZXIgaXMgdGhlIEFDUCBJUCBkcml2ZXIuCgpSZXZpZXdlZC1i eTogSmFtbXkgWmhvdSA8SmFtbXkuWmhvdUBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBDaHVubWlu ZyBaaG91IDxEYXZpZDEuWmhvdUBhbWQuY29tPgpBY2tlZC1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8 Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgpBY2tlZC1ieTogQWxleCBEZXVjaGVyIDxhbGV4YW5k ZXIuZGV1Y2hlckBhbWQuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERldWNoZXIgPGFsZXhhbmRl ci5kZXVjaGVyQGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFrZWZp bGUgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAgICAg IHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jZ3MuYyAgfCAzMjcg KysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUvY2dzX2NvbW1v bi5oIHwgNTYzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvaW5jbHVkZS9jZ3NfbGludXguaCAgfCAxMzUgKysrKysrKysKIDUgZmlsZXMgY2hhbmdl ZCwgMTAyOSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2Nncy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2FtZC9pbmNsdWRlL2Nnc19jb21tb24uaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMv Z3B1L2RybS9hbWQvaW5jbHVkZS9jZ3NfbGludXguaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFr ZWZpbGUKaW5kZXggNjE2ZGZkNC4uZjE3ZDBjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvTWFr ZWZpbGUKQEAgLTcxLDYgKzcxLDkgQEAgYW1kZ3B1LXkgKz0gXAogCWFtZGdwdV92Y2UubyBcCiAJ dmNlX3YzXzAubwogCisjIGFkZCBjZ3MKK2FtZGdwdS15ICs9IGFtZGdwdV9jZ3MubworCiBhbWRn cHUtJChDT05GSUdfQ09NUEFUKSArPSBhbWRncHVfaW9jMzIubwogYW1kZ3B1LSQoQ09ORklHX1ZH QV9TV0lUQ0hFUk9PKSArPSBhbWRncHVfYXRweF9oYW5kbGVyLm8KIGFtZGdwdS0kKENPTkZJR19B Q1BJKSArPSBhbWRncHVfYWNwaS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCmluZGV4 IDAxNjU3ODMuLjljNDFkMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCkBAIC00 Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8dHRtL3R0bV9tb2R1bGUuaD4KICNpbmNsdWRlIDx0dG0v dHRtX2V4ZWNidWZfdXRpbC5oPgogCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlIDxk cm0vZHJtX2dlbS5oPgogI2luY2x1ZGUgPGRybS9hbWRncHVfZHJtLmg+CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jZ3MuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9jZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi5hZWEyNjRhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2Nncy5jCkBAIC0wLDAgKzEsMzI3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTUg QWR2YW5jZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5 IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBj b3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAo dGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1 c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us CisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHly aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQg aW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl LgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJB TlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAorICogVEhFIENPUFlSSUdIVCBIT0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCisgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKKyAqIEFSSVNJ TkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUgorICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqCisgKi8K KyNpbmNsdWRlICJhbWRncHUuaCIKKyNpbmNsdWRlICJjZ3NfbGludXguaCIKKworc3RydWN0IGFt ZGdwdV9jZ3NfZGV2aWNlIHsKKwlzdHJ1Y3QgY2dzX2RldmljZSBiYXNlOworCXN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2OworfTsKKworI2RlZmluZSBDR1NfRlVOQ19BREVWCQkJCQkJCVwKKwlz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9CQkJCQlcCisJCSgoc3RydWN0IGFtZGdwdV9jZ3Nf ZGV2aWNlICopY2dzX2RldmljZSktPmFkZXYKKworc3RhdGljIGludCBhbWRncHVfY2dzX2dwdV9t ZW1faW5mbyh2b2lkICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19ncHVfbWVtX3R5cGUgdHlwZSwKKwkJ CQkgICB1aW50NjRfdCAqbWNfc3RhcnQsIHVpbnQ2NF90ICptY19zaXplLAorCQkJCSAgIHVpbnQ2 NF90ICptZW1fc2l6ZSkKK3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbWRncHVfY2dz X2dtYXBfa21lbSh2b2lkICpjZ3NfZGV2aWNlLCB2b2lkICprbWVtLAorCQkJCXVpbnQ2NF90IHNp emUsCisJCQkJdWludDY0X3QgbWluX29mZnNldCwgdWludDY0X3QgbWF4X29mZnNldCwKKwkJCQlj Z3NfaGFuZGxlX3QgKmttZW1faGFuZGxlLCB1aW50NjRfdCAqbWNhZGRyKQoreworCXJldHVybiAw OworfQorCitzdGF0aWMgaW50IGFtZGdwdV9jZ3NfZ3VubWFwX2ttZW0odm9pZCAqY2dzX2Rldmlj ZSwgY2dzX2hhbmRsZV90IGttZW1faGFuZGxlKQoreworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IGFtZGdwdV9jZ3NfYWxsb2NfZ3B1X21lbSh2b2lkICpjZ3NfZGV2aWNlLAorCQkJCSAgICBl bnVtIGNnc19ncHVfbWVtX3R5cGUgdHlwZSwKKwkJCQkgICAgdWludDY0X3Qgc2l6ZSwgdWludDY0 X3QgYWxpZ24sCisJCQkJICAgIHVpbnQ2NF90IG1pbl9vZmZzZXQsIHVpbnQ2NF90IG1heF9vZmZz ZXQsCisJCQkJICAgIGNnc19oYW5kbGVfdCAqaGFuZGxlKQoreworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGFtZGdwdV9jZ3NfaW1wb3J0X2dwdV9tZW0odm9pZCAqY2dzX2RldmljZSwgaW50 IGRtYWJ1Zl9mZCwKKwkJCQkgICAgIGNnc19oYW5kbGVfdCAqaGFuZGxlKQoreworCS8qIFRPRE8g Ki8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbWRncHVfY2dzX2ZyZWVfZ3B1X21lbSh2 b2lkICpjZ3NfZGV2aWNlLCBjZ3NfaGFuZGxlX3QgaGFuZGxlKQoreworCS8qIFRPRE8gKi8KKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbWRncHVfY2dzX2dtYXBfZ3B1X21lbSh2b2lkICpj Z3NfZGV2aWNlLCBjZ3NfaGFuZGxlX3QgaGFuZGxlLAorCQkJCSAgIHVpbnQ2NF90ICptY2FkZHIp Cit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFtZGdwdV9jZ3Nf Z3VubWFwX2dwdV9tZW0odm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90IGhhbmRsZSkKK3sK KwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X2Nnc19rbWFw X2dwdV9tZW0odm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90IGhhbmRsZSwKKwkJCQkgICB2 b2lkICoqbWFwKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBh bWRncHVfY2dzX2t1bm1hcF9ncHVfbWVtKHZvaWQgKmNnc19kZXZpY2UsIGNnc19oYW5kbGVfdCBo YW5kbGUpCit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgdWludDMyX3Qg YW1kZ3B1X2Nnc19yZWFkX3JlZ2lzdGVyKHZvaWQgKmNnc19kZXZpY2UsIHVuc2lnbmVkIG9mZnNl dCkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGFtZGdwdV9j Z3Nfd3JpdGVfcmVnaXN0ZXIodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgb2Zmc2V0LAorCQkJ CSAgICAgIHVpbnQzMl90IHZhbHVlKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm47Cit9CisKK3N0 YXRpYyB1aW50MzJfdCBhbWRncHVfY2dzX3JlYWRfaW5kX3JlZ2lzdGVyKHZvaWQgKmNnc19kZXZp Y2UsCisJCQkJCSAgICAgZW51bSBjZ3NfaW5kX3JlZyBzcGFjZSwKKwkJCQkJICAgICB1bnNpZ25l ZCBpbmRleCkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGFt ZGdwdV9jZ3Nfd3JpdGVfaW5kX3JlZ2lzdGVyKHZvaWQgKmNnc19kZXZpY2UsCisJCQkJCSAgZW51 bSBjZ3NfaW5kX3JlZyBzcGFjZSwKKwkJCQkJICB1bnNpZ25lZCBpbmRleCwgdWludDMyX3QgdmFs dWUpCit7CisJLyogVE9ETyAqLworCXJldHVybjsKK30KKworc3RhdGljIHVpbnQ4X3QgYW1kZ3B1 X2Nnc19yZWFkX3BjaV9jb25maWdfYnl0ZSh2b2lkICpjZ3NfZGV2aWNlLCB1bnNpZ25lZCBhZGRy KQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHVpbnQxNl90IGFtZGdw dV9jZ3NfcmVhZF9wY2lfY29uZmlnX3dvcmQodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgYWRk cikKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1aW50MzJfdCBhbWRn cHVfY2dzX3JlYWRfcGNpX2NvbmZpZ19kd29yZCh2b2lkICpjZ3NfZGV2aWNlLAorCQkJCQkJIHVu c2lnbmVkIGFkZHIpCit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBhbWRncHVfY2dzX3dyaXRlX3BjaV9jb25maWdfYnl0ZSh2b2lkICpjZ3NfZGV2aWNlLCB1bnNp Z25lZCBhZGRyLAorCQkJCQkgICAgIHVpbnQ4X3QgdmFsdWUpCit7CisJLyogVE9ETyAqLworCXJl dHVybjsKK30KKworc3RhdGljIHZvaWQgYW1kZ3B1X2Nnc193cml0ZV9wY2lfY29uZmlnX3dvcmQo dm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgYWRkciwKKwkJCQkJICAgICB1aW50MTZfdCB2YWx1 ZSkKK3sKKwkvKiBUT0RPICovCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBhbWRncHVfY2dz X3dyaXRlX3BjaV9jb25maWdfZHdvcmQodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgYWRkciwK KwkJCQkJICAgICAgdWludDMyX3QgdmFsdWUpCit7CisJLyogVE9ETyAqLworCXJldHVybjsKK30K Kworc3RhdGljIGNvbnN0IHZvaWQgKmFtZGdwdV9jZ3NfYXRvbV9nZXRfZGF0YV90YWJsZSh2b2lk ICpjZ3NfZGV2aWNlLAorCQkJCQkJICB1bnNpZ25lZCB0YWJsZSwgdWludDE2X3QgKnNpemUsCisJ CQkJCQkgIHVpbnQ4X3QgKmZyZXYsIHVpbnQ4X3QgKmNyZXYpCit7CisJLyogVE9ETyAqLworCXJl dHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IGFtZGdwdV9jZ3NfYXRvbV9nZXRfY21kX3RhYmxl X3JldnModm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgdGFibGUsCisJCQkJCSAgICAgIHVpbnQ4 X3QgKmZyZXYsIHVpbnQ4X3QgKmNyZXYpCit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGFtZGdwdV9jZ3NfYXRvbV9leGVjX2NtZF90YWJsZSh2b2lkICpjZ3NfZGV2 aWNlLCB1bnNpZ25lZCB0YWJsZSwKKwkJCQkJICB2b2lkICphcmdzKQoreworCS8qIFRPRE8gKi8K KwlyZXR1cm4gMDsKK30KKworCitzdGF0aWMgaW50IGFtZGdwdV9jZ3NfY3JlYXRlX3BtX3JlcXVl c3Qodm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90ICpyZXF1ZXN0KQoreworCS8qIFRPRE8g Ki8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbWRncHVfY2dzX2Rlc3Ryb3lfcG1fcmVx dWVzdCh2b2lkICpjZ3NfZGV2aWNlLCBjZ3NfaGFuZGxlX3QgcmVxdWVzdCkKK3sKKwkvKiBUT0RP ICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X2Nnc19zZXRfcG1fcmVxdWVz dCh2b2lkICpjZ3NfZGV2aWNlLCBjZ3NfaGFuZGxlX3QgcmVxdWVzdCwKKwkJCQkgICAgIGludCBh Y3RpdmUpCit7CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFtZGdw dV9jZ3NfcG1fcmVxdWVzdF9jbG9jayh2b2lkICpjZ3NfZGV2aWNlLCBjZ3NfaGFuZGxlX3QgcmVx dWVzdCwKKwkJCQkgICAgICAgZW51bSBjZ3NfY2xvY2sgY2xvY2ssIHVuc2lnbmVkIGZyZXEpCit7 CisJLyogVE9ETyAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGFtZGdwdV9jZ3NfcG1f cmVxdWVzdF9lbmdpbmUodm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90IHJlcXVlc3QsCisJ CQkJCWVudW0gY2dzX2VuZ2luZSBlbmdpbmUsIGludCBwb3dlcmVkKQoreworCS8qIFRPRE8gKi8K KwlyZXR1cm4gMDsKK30KKworCisKK3N0YXRpYyBpbnQgYW1kZ3B1X2Nnc19wbV9xdWVyeV9jbG9j a19saW1pdHModm9pZCAqY2dzX2RldmljZSwKKwkJCQkJICAgIGVudW0gY2dzX2Nsb2NrIGNsb2Nr LAorCQkJCQkgICAgc3RydWN0IGNnc19jbG9ja19saW1pdHMgKmxpbWl0cykKK3sKKwkvKiBUT0RP ICovCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgYW1kZ3B1X2Nnc19zZXRfY2FtZXJhX3Zv bHRhZ2VzKHZvaWQgKmNnc19kZXZpY2UsIHVpbnQzMl90IG1hc2ssCisJCQkJCSAgY29uc3QgdWlu dDMyX3QgKnZvbHRhZ2VzKQoreworCURSTV9FUlJPUigibm90IGltcGxlbWVudGVkIik7CisJcmV0 dXJuIC1FUEVSTTsKK30KKworc3RhdGljIGludCBhbWRncHVfY2dzX2FkZF9pcnFfc291cmNlKHZv aWQgKmNnc19kZXZpY2UsIHVuc2lnbmVkIHNyY19pZCwKKwkJCQkgICAgIHVuc2lnbmVkIG51bV90 eXBlcywKKwkJCQkgICAgIGNnc19pcnFfc291cmNlX3NldF9mdW5jX3Qgc2V0LAorCQkJCSAgICAg Y2dzX2lycV9oYW5kbGVyX2Z1bmNfdCBoYW5kbGVyLAorCQkJCSAgICAgdm9pZCAqcHJpdmF0ZV9k YXRhKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbWRncHVf Y2dzX2lycV9nZXQodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgc3JjX2lkLCB1bnNpZ25lZCB0 eXBlKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhbWRncHVf Y2dzX2lycV9wdXQodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgc3JjX2lkLCB1bnNpZ25lZCB0 eXBlKQoreworCS8qIFRPRE8gKi8KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVj dCBjZ3Nfb3BzIGFtZGdwdV9jZ3Nfb3BzID0geworCWFtZGdwdV9jZ3NfZ3B1X21lbV9pbmZvLAor CWFtZGdwdV9jZ3NfZ21hcF9rbWVtLAorCWFtZGdwdV9jZ3NfZ3VubWFwX2ttZW0sCisJYW1kZ3B1 X2Nnc19hbGxvY19ncHVfbWVtLAorCWFtZGdwdV9jZ3NfZnJlZV9ncHVfbWVtLAorCWFtZGdwdV9j Z3NfZ21hcF9ncHVfbWVtLAorCWFtZGdwdV9jZ3NfZ3VubWFwX2dwdV9tZW0sCisJYW1kZ3B1X2Nn c19rbWFwX2dwdV9tZW0sCisJYW1kZ3B1X2Nnc19rdW5tYXBfZ3B1X21lbSwKKwlhbWRncHVfY2dz X3JlYWRfcmVnaXN0ZXIsCisJYW1kZ3B1X2Nnc193cml0ZV9yZWdpc3RlciwKKwlhbWRncHVfY2dz X3JlYWRfaW5kX3JlZ2lzdGVyLAorCWFtZGdwdV9jZ3Nfd3JpdGVfaW5kX3JlZ2lzdGVyLAorCWFt ZGdwdV9jZ3NfcmVhZF9wY2lfY29uZmlnX2J5dGUsCisJYW1kZ3B1X2Nnc19yZWFkX3BjaV9jb25m aWdfd29yZCwKKwlhbWRncHVfY2dzX3JlYWRfcGNpX2NvbmZpZ19kd29yZCwKKwlhbWRncHVfY2dz X3dyaXRlX3BjaV9jb25maWdfYnl0ZSwKKwlhbWRncHVfY2dzX3dyaXRlX3BjaV9jb25maWdfd29y ZCwKKwlhbWRncHVfY2dzX3dyaXRlX3BjaV9jb25maWdfZHdvcmQsCisJYW1kZ3B1X2Nnc19hdG9t X2dldF9kYXRhX3RhYmxlLAorCWFtZGdwdV9jZ3NfYXRvbV9nZXRfY21kX3RhYmxlX3JldnMsCisJ YW1kZ3B1X2Nnc19hdG9tX2V4ZWNfY21kX3RhYmxlLAorCWFtZGdwdV9jZ3NfY3JlYXRlX3BtX3Jl cXVlc3QsCisJYW1kZ3B1X2Nnc19kZXN0cm95X3BtX3JlcXVlc3QsCisJYW1kZ3B1X2Nnc19zZXRf cG1fcmVxdWVzdCwKKwlhbWRncHVfY2dzX3BtX3JlcXVlc3RfY2xvY2ssCisJYW1kZ3B1X2Nnc19w bV9yZXF1ZXN0X2VuZ2luZSwKKwlhbWRncHVfY2dzX3BtX3F1ZXJ5X2Nsb2NrX2xpbWl0cywKKwlh bWRncHVfY2dzX3NldF9jYW1lcmFfdm9sdGFnZXMKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg Y2dzX29zX29wcyBhbWRncHVfY2dzX29zX29wcyA9IHsKKwlhbWRncHVfY2dzX2ltcG9ydF9ncHVf bWVtLAorCWFtZGdwdV9jZ3NfYWRkX2lycV9zb3VyY2UsCisJYW1kZ3B1X2Nnc19pcnFfZ2V0LAor CWFtZGdwdV9jZ3NfaXJxX3B1dAorfTsKKwordm9pZCAqYW1kZ3B1X2Nnc19jcmVhdGVfZGV2aWNl KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KQoreworCXN0cnVjdCBhbWRncHVfY2dzX2Rldmlj ZSAqY2dzX2RldmljZSA9CisJCWttYWxsb2Moc2l6ZW9mKCpjZ3NfZGV2aWNlKSwgR0ZQX0tFUk5F TCk7CisKKwlpZiAoIWNnc19kZXZpY2UpIHsKKwkJRFJNX0VSUk9SKCJDb3VsZG4ndCBhbGxvY2F0 ZSBDR1MgZGV2aWNlIHN0cnVjdHVyZVxuIik7CisJCXJldHVybiBOVUxMOworCX0KKworCWNnc19k ZXZpY2UtPmJhc2Uub3BzID0gJmFtZGdwdV9jZ3Nfb3BzOworCWNnc19kZXZpY2UtPmJhc2Uub3Nf b3BzID0gJmFtZGdwdV9jZ3Nfb3Nfb3BzOworCWNnc19kZXZpY2UtPmFkZXYgPSBhZGV2OworCisJ cmV0dXJuIGNnc19kZXZpY2U7Cit9CisKK3ZvaWQgYW1kZ3B1X2Nnc19kZXN0cm95X2RldmljZSh2 b2lkICpjZ3NfZGV2aWNlKQoreworCWtmcmVlKGNnc19kZXZpY2UpOworfQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2Nnc19jb21tb24uaCBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvaW5jbHVkZS9jZ3NfY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZjhjZGI4OAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvaW5j bHVkZS9jZ3NfY29tbW9uLmgKQEAgLTAsMCArMSw1NjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAx NSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMuCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAq IGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVz ICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJl c3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQg cGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29w eXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRl ZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh cmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJ U0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgKgorICoKKyAq LworI2lmbmRlZiBfQ0dTX0NPTU1PTl9ICisjZGVmaW5lIF9DR1NfQ09NTU9OX0gKKworLyoqCisg KiBlbnVtIGNnc19ncHVfbWVtX3R5cGUgLSBHUFUgbWVtb3J5IHR5cGVzCisgKi8KK2VudW0gY2dz X2dwdV9tZW1fdHlwZSB7CisJQ0dTX0dQVV9NRU1fVFlQRV9fVklTSUJMRV9GQiwKKwlDR1NfR1BV X01FTV9UWVBFX19JTlZJU0lCTEVfRkIsCisJQ0dTX0dQVV9NRU1fVFlQRV9fVklTSUJMRV9DT05U SUdfRkIsCisJQ0dTX0dQVV9NRU1fVFlQRV9fSU5WSVNJQkxFX0NPTlRJR19GQiwKKwlDR1NfR1BV X01FTV9UWVBFX19HQVJUX0NBQ0hFQUJMRSwKKwlDR1NfR1BVX01FTV9UWVBFX19HQVJUX1dSSVRF Q09NQklORQorfTsKKworLyoqCisgKiBlbnVtIGNnc19pbmRfcmVnIC0gSW5kaXJlY3QgcmVnaXN0 ZXIgc3BhY2VzCisgKi8KK2VudW0gY2dzX2luZF9yZWcgeworCUNHU19JTkRfUkVHX19NTUlPLAor CUNHU19JTkRfUkVHX19QQ0lFLAorCUNHU19JTkRfUkVHX19TTUMsCisJQ0dTX0lORF9SRUdfX1VW RF9DVFgsCisJQ0dTX0lORF9SRUdfX0RJRFQsCisJQ0dTX0lORF9SRUdfX0FVRElPX0VORFBUCit9 OworCisvKioKKyAqIGVudW0gY2dzX2Nsb2NrIC0gQ2xvY2tzIGNvbnRyb2xsZWQgYnkgdGhlIFNN VQorICovCitlbnVtIGNnc19jbG9jayB7CisJQ0dTX0NMT0NLX19TQ0xLLAorCUNHU19DTE9DS19f TUNMSywKKwlDR1NfQ0xPQ0tfX1ZDTEssCisJQ0dTX0NMT0NLX19EQ0xLLAorCUNHU19DTE9DS19f RUNMSywKKwlDR1NfQ0xPQ0tfX0FDTEssCisJQ0dTX0NMT0NLX19JQ0xLLAorCS8qIC4uLiAqLwor fTsKKworLyoqCisgKiBlbnVtIGNnc19lbmdpbmUgLSBFbmdpbmVzIHRoYXQgY2FuIGJlIHN0YXRp Y2FsbHkgcG93ZXItZ2F0ZWQKKyAqLworZW51bSBjZ3NfZW5naW5lIHsKKwlDR1NfRU5HSU5FX19V VkQsCisJQ0dTX0VOR0lORV9fVkNFLAorCUNHU19FTkdJTkVfX1ZQOCwKKwlDR1NfRU5HSU5FX19B Q1BfRE1BLAorCUNHU19FTkdJTkVfX0FDUF9EU1AwLAorCUNHU19FTkdJTkVfX0FDUF9EU1AxLAor CUNHU19FTkdJTkVfX0lTUCwKKwkvKiAuLi4gKi8KK307CisKKy8qKgorICogZW51bSBjZ3Nfdm9s dGFnZV9wbGFuZXMgLSBWb2x0YWdlIHBsYW5lcyBmb3IgZXh0ZXJuYWwgY2FtZXJhIEhXCisgKi8K K2VudW0gY2dzX3ZvbHRhZ2VfcGxhbmVzIHsKKwlDR1NfVk9MVEFHRV9QTEFORV9fU0VOU09SMCwK KwlDR1NfVk9MVEFHRV9QTEFORV9fU0VOU09SMSwKKwkvKiAuLi4gKi8KK307CisKKy8qKgorICog c3RydWN0IGNnc19jbG9ja19saW1pdHMgLSBDbG9jayBsaW1pdHMKKyAqCisgKiBDbG9ja3MgYXJl IHNwZWNpZmllZCBpbiAxMEtIeiB1bml0cy4KKyAqLworc3RydWN0IGNnc19jbG9ja19saW1pdHMg eworCXVuc2lnbmVkIG1pbjsJCS8qKjwgTWluaW11bSBzdXBwb3J0ZWQgZnJlcXVlbmN5ICovCisJ dW5zaWduZWQgbWF4OwkJLyoqPCBNYXh1bWltIHN1cHBvcnRlZCBmcmVxdWVuY3kgKi8KKwl1bnNp Z25lZCBzdXN0YWluYWJsZTsJLyoqPCBUaGVybWFsbHkgc3VzdGFpbmFibGUgZnJlcXVlbmN5ICov Cit9OworCit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgY2dzX2hhbmRsZV90OworCisvKioKKyAqIGNn c19ncHVfbWVtX2luZm8oKSAtIFJldHVybiBpbmZvcm1hdGlvbiBhYm91dCBtZW1vcnkgaGVhcHMK KyAqIEBjZ3NfZGV2aWNlOiBvcGFxdWUgZGV2aWNlIGhhbmRsZQorICogQHR5cGU6CW1lbW9yeSB0 eXBlCisgKiBAbWNfc3RhcnQ6CVN0YXJ0IE1DIGFkZHJlc3Mgb2YgdGhlIGhlYXAgKG91dHB1dCkK KyAqIEBtY19zaXplOglNQyBhZGRyZXNzIHNwYWNlIHNpemUgKG91dHB1dCkKKyAqIEBtZW1fc2l6 ZToJbWF4aW11bSBhbW91bnQgb2YgbWVtb3J5IGF2YWlsYWJsZSBmb3IgYWxsb2NhdGlvbiAob3V0 cHV0KQorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBtZW1v cnkgaGVhcHMuIFRoZSB0eXBlCisgKiBwYXJhbWV0ZXIgaXMgdXNlZCB0byBzZWxlY3QgdGhlIG1l bW9yeSBoZWFwLiBUaGUgbWNfc3RhcnQgYW5kCisgKiBtY19zaXplIGZvciBHQVJUIGhlYXBzIG1h eSBiZSBiaWdnZXIgdGhhbiB0aGUgbWVtb3J5IGF2YWlsYWJsZSBmb3IKKyAqIGFsbG9jYXRpb24u CisgKgorICogbWNfc3RhcnQgYW5kIG1jX3NpemUgYXJlIHVuZGVmaW5lZCBmb3Igbm9uLWNvbnRp Z3VvdXMgRkIgbWVtb3J5CisgKiB0eXBlcywgc2luY2UgYnVmZmVycyBhbGxvY2F0ZWQgd2l0aCB0 aGVzZSB0eXBlcyBtYXkgb3IgbWF5IG5vdCBiZQorICogR0FSVCBtYXBwZWQuCisgKgorICogUmV0 dXJuOiAgMCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlCisgKi8KK3R5cGVkZWYgaW50ICgq Y2dzX2dwdV9tZW1faW5mb190KSh2b2lkICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19ncHVfbWVtX3R5 cGUgdHlwZSwKKwkJCQkgIHVpbnQ2NF90ICptY19zdGFydCwgdWludDY0X3QgKm1jX3NpemUsCisJ CQkJICB1aW50NjRfdCAqbWVtX3NpemUpOworCisvKioKKyAqIGNnc19nbWFwX2ttZW0oKSAtIG1h cCBrZXJuZWwgbWVtb3J5IHRvIEdBUlQgYXBlcnR1cmUKKyAqIEBjZ3NfZGV2aWNlOglvcGFxdWUg ZGV2aWNlIGhhbmRsZQorICogQGttZW06CXBvaW50ZXIgdG8ga2VybmVsIG1lbW9yeQorICogQHNp emU6CXNpemUgdG8gbWFwCisgKiBAbWluX29mZnNldDogbWluaW11bSBvZmZzZXQgZnJvbSBzdGFy dCBvZiBHQVJUIGFwZXJ0dXJlCisgKiBAbWF4X29mZnNldDogbWF4aW11bSBvZmZzZXQgZnJvbSBz dGFydCBvZiBHQVJUIGFwZXJ0dXJlCisgKiBAa21lbV9oYW5kbGU6IGtlcm5lbCBtZW1vcnkgaGFu ZGxlIChvdXRwdXQpCisgKiBAbWNhZGRyOglNQyBhZGRyZXNzIChvdXRwdXQpCisgKgorICogUmV0 dXJuOiAgMCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlCisgKi8KK3R5cGVkZWYgaW50ICgq Y2dzX2dtYXBfa21lbV90KSh2b2lkICpjZ3NfZGV2aWNlLCB2b2lkICprbWVtLCB1aW50NjRfdCBz aXplLAorCQkJICAgICAgIHVpbnQ2NF90IG1pbl9vZmZzZXQsIHVpbnQ2NF90IG1heF9vZmZzZXQs CisJCQkgICAgICAgY2dzX2hhbmRsZV90ICprbWVtX2hhbmRsZSwgdWludDY0X3QgKm1jYWRkcik7 CisKKy8qKgorICogY2dzX2d1bm1hcF9rbWVtKCkgLSB1bm1hcCBrZXJuZWwgbWVtb3J5CisgKiBA Y2dzX2RldmljZToJb3BhcXVlIGRldmljZSBoYW5kbGUKKyAqIEBrbWVtX2hhbmRsZToga2VybmVs IG1lbW9yeSBoYW5kbGUgcmV0dXJuZWQgYnkgZ21hcF9rbWVtCisgKgorICogUmV0dXJuOiAgMCBv biBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlCisgKi8KK3R5cGVkZWYgaW50ICgqY2dzX2d1bm1h cF9rbWVtX3QpKHZvaWQgKmNnc19kZXZpY2UsIGNnc19oYW5kbGVfdCBrbWVtX2hhbmRsZSk7CisK Ky8qKgorICogY2dzX2FsbG9jX2dwdV9tZW0oKSAtIEFsbG9jYXRlIEdQVSBtZW1vcnkKKyAqIEBj Z3NfZGV2aWNlOglvcGFxdWUgZGV2aWNlIGhhbmRsZQorICogQHR5cGU6CW1lbW9yeSB0eXBlCisg KiBAc2l6ZToJc2l6ZSBpbiBieXRlcworICogQGFsaWduOglhbGlnbm1lbnQgaW4gYnl0ZXMKKyAq IEBtaW5fb2Zmc2V0OiBtaW5pbXVtIG9mZnNldCBmcm9tIHN0YXJ0IG9mIGhlYXAKKyAqIEBtYXhf b2Zmc2V0OiBtYXhpbXVtIG9mZnNldCBmcm9tIHN0YXJ0IG9mIGhlYXAKKyAqIEBoYW5kbGU6CW1l bW9yeSBoYW5kbGUgKG91dHB1dCkKKyAqCisgKiBUaGUgbWVtb3J5IHR5cGVzIENHU19HUFVfTUVN X1RZUEVfKl9DT05USUdfRkIgZm9yY2UgY29udGlndW91cworICogbWVtb3J5IGFsbG9jYXRpb24u IFRoaXMgZ3VhcmFudGVlcyB0aGF0IHRoZSBNQyBhZGRyZXNzIHJldHVybmVkIGJ5CisgKiBjZ3Nf Z21hcF9ncHVfbWVtIGlzIG5vdCBtYXBwZWQgdGhyb3VnaCB0aGUgR0FSVC4gVGhlIG5vbi1jb250 aWd1b3VzCisgKiBGQiBtZW1vcnkgdHlwZXMgbWF5IGJlIEdBUlQgbWFwcGVkIGRlcGVuZGluZyBv biBtZW1vcnkKKyAqIGZyYWdtZW50YXRpb24gYW5kIG1lbW9yeSBhbGxvY2F0b3IgcG9saWNpZXMu CisgKgorICogSWYgbWluL21heF9vZmZzZXQgYXJlIG5vbi0wLCB0aGUgYWxsb2NhdGlvbiB3aWxs IGJlIGZvcmNlZCB0bworICogcmVzaWRlIGJldHdlZW4gdGhlc2Ugb2Zmc2V0cyBpbiBpdHMgcmVz cGVjdGl2ZSBtZW1vcnkgaGVhcC4gVGhlCisgKiBiYXNlIGFkZHJlc3MgdGhhdCB0aGUgb2Zmc2V0 IHJlbGF0ZXMgdG8sIGRlcGVuZHMgb24gdGhlIG1lbW9yeQorICogdHlwZS4KKyAqCisgKiAtIENH U19HUFVfTUVNX1RZUEVfXypfQ09OVElHX0ZCOiBGQiBNQyBiYXNlIGFkZHJlc3MKKyAqIC0gQ0dT X0dQVV9NRU1fVFlQRV9fR0FSVF8qOgkgICAgR0FSVCBhcGVydHVyZSBiYXNlIGFkZHJlc3MKKyAq IC0gb3RoZXJzOgkJCSAgICB1bmRlZmluZWQsIGRvbid0IHVzZSB3aXRoIG1heF9vZmZzZXQKKyAq CisgKiBSZXR1cm46ICAwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UKKyAqLwordHlwZWRl ZiBpbnQgKCpjZ3NfYWxsb2NfZ3B1X21lbV90KSh2b2lkICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19n cHVfbWVtX3R5cGUgdHlwZSwKKwkJCQkgICB1aW50NjRfdCBzaXplLCB1aW50NjRfdCBhbGlnbiwK KwkJCQkgICB1aW50NjRfdCBtaW5fb2Zmc2V0LCB1aW50NjRfdCBtYXhfb2Zmc2V0LAorCQkJCSAg IGNnc19oYW5kbGVfdCAqaGFuZGxlKTsKKworLyoqCisgKiBjZ3NfZnJlZV9ncHVfbWVtKCkgLSBG cmVlIEdQVSBtZW1vcnkKKyAqIEBjZ3NfZGV2aWNlOglvcGFxdWUgZGV2aWNlIGhhbmRsZQorICog QGhhbmRsZToJbWVtb3J5IGhhbmRsZSByZXR1cm5lZCBieSBhbGxvYyBvciBpbXBvcnQKKyAqCisg KiBSZXR1cm46ICAwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UKKyAqLwordHlwZWRlZiBp bnQgKCpjZ3NfZnJlZV9ncHVfbWVtX3QpKHZvaWQgKmNnc19kZXZpY2UsIGNnc19oYW5kbGVfdCBo YW5kbGUpOworCisvKioKKyAqIGNnc19nbWFwX2dwdV9tZW0oKSAtIEdQVS1tYXAgR1BVIG1lbW9y eQorICogQGNnc19kZXZpY2U6CW9wYXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAaGFuZGxlOgltZW1v cnkgaGFuZGxlIHJldHVybmVkIGJ5IGFsbG9jIG9yIGltcG9ydAorICogQG1jYWRkcjoJTUMgYWRk cmVzcyAob3V0cHV0KQorICoKKyAqIEVuc3VyZXMgdGhhdCBhIGJ1ZmZlciBpcyBHUFUgYWNjZXNz aWJsZSBhbmQgcmV0dXJucyBpdHMgTUMgYWRkcmVzcy4KKyAqCisgKiBSZXR1cm46ICAwIG9uIHN1 Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UKKyAqLwordHlwZWRlZiBpbnQgKCpjZ3NfZ21hcF9ncHVf bWVtX3QpKHZvaWQgKmNnc19kZXZpY2UsIGNnc19oYW5kbGVfdCBoYW5kbGUsCisJCQkJICB1aW50 NjRfdCAqbWNhZGRyKTsKKworLyoqCisgKiBjZ3NfZ3VubWFwX2dwdV9tZW0oKSAtIEdQVS11bm1h cCBHUFUgbWVtb3J5CisgKiBAY2dzX2RldmljZToJb3BhcXVlIGRldmljZSBoYW5kbGUKKyAqIEBo YW5kbGU6CW1lbW9yeSBoYW5kbGUgcmV0dXJuZWQgYnkgYWxsb2Mgb3IgaW1wb3J0CisgKgorICog QWxsb3dzIHRoZSBidWZmZXIgdG8gYmUgbWlncmF0ZWQgd2hpbGUgaXQncyBub3QgdXNlZCBieSB0 aGUgR1BVLgorICoKKyAqIFJldHVybjogIDAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZQor ICovCit0eXBlZGVmIGludCAoKmNnc19ndW5tYXBfZ3B1X21lbV90KSh2b2lkICpjZ3NfZGV2aWNl LCBjZ3NfaGFuZGxlX3QgaGFuZGxlKTsKKworLyoqCisgKiBjZ3Nfa21hcF9ncHVfbWVtKCkgLSBL ZXJuZWwtbWFwIEdQVSBtZW1vcnkKKyAqCisgKiBAY2dzX2RldmljZToJb3BhcXVlIGRldmljZSBo YW5kbGUKKyAqIEBoYW5kbGU6CW1lbW9yeSBoYW5kbGUgcmV0dXJuZWQgYnkgYWxsb2Mgb3IgaW1w b3J0CisgKiBAbWFwOglLZXJuZWwgdmlydHVhbCBhZGRyZXNzIHRoZSBtZW1vcnkgd2FzIG1hcHBl ZCB0byAob3V0cHV0KQorICoKKyAqIFJldHVybjogIDAgb24gc3VjY2VzcywgLWVycm5vIG90aGVy d2lzZQorICovCit0eXBlZGVmIGludCAoKmNnc19rbWFwX2dwdV9tZW1fdCkodm9pZCAqY2dzX2Rl dmljZSwgY2dzX2hhbmRsZV90IGhhbmRsZSwKKwkJCQkgIHZvaWQgKiptYXApOworCisvKioKKyAq IGNnc19rdW5tYXBfZ3B1X21lbSgpIC0gS2VybmVsLXVubWFwIEdQVSBtZW1vcnkKKyAqIEBjZ3Nf ZGV2aWNlOglvcGFxdWUgZGV2aWNlIGhhbmRsZQorICogQGhhbmRsZToJbWVtb3J5IGhhbmRsZSBy ZXR1cm5lZCBieSBhbGxvYyBvciBpbXBvcnQKKyAqCisgKiBSZXR1cm46ICAwIG9uIHN1Y2Nlc3Ms IC1lcnJubyBvdGhlcndpc2UKKyAqLwordHlwZWRlZiBpbnQgKCpjZ3Nfa3VubWFwX2dwdV9tZW1f dCkodm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90IGhhbmRsZSk7CisKKy8qKgorICogY2dz X3JlYWRfcmVnaXN0ZXIoKSAtIFJlYWQgYW4gTU1JTyByZWdpc3RlcgorICogQGNnc19kZXZpY2U6 CW9wYXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAb2Zmc2V0OglyZWdpc3RlciBvZmZzZXQKKyAqCisg KiBSZXR1cm46ICByZWdpc3RlciB2YWx1ZQorICovCit0eXBlZGVmIHVpbnQzMl90ICgqY2dzX3Jl YWRfcmVnaXN0ZXJfdCkodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgb2Zmc2V0KTsKKworLyoq CisgKiBjZ3Nfd3JpdGVfcmVnaXN0ZXIoKSAtIFdyaXRlIGFuIE1NSU8gcmVnaXN0ZXIKKyAqIEBj Z3NfZGV2aWNlOglvcGFxdWUgZGV2aWNlIGhhbmRsZQorICogQG9mZnNldDoJcmVnaXN0ZXIgb2Zm c2V0CisgKiBAdmFsdWU6CXJlZ2lzdGVyIHZhbHVlCisgKi8KK3R5cGVkZWYgdm9pZCAoKmNnc193 cml0ZV9yZWdpc3Rlcl90KSh2b2lkICpjZ3NfZGV2aWNlLCB1bnNpZ25lZCBvZmZzZXQsCisJCQkJ ICAgICB1aW50MzJfdCB2YWx1ZSk7CisKKy8qKgorICogY2dzX3JlYWRfaW5kX3JlZ2lzdGVyKCkg LSBSZWFkIGFuIGluZGlyZWN0IHJlZ2lzdGVyCisgKiBAY2dzX2RldmljZToJb3BhcXVlIGRldmlj ZSBoYW5kbGUKKyAqIEBvZmZzZXQ6CXJlZ2lzdGVyIG9mZnNldAorICoKKyAqIFJldHVybjogIHJl Z2lzdGVyIHZhbHVlCisgKi8KK3R5cGVkZWYgdWludDMyX3QgKCpjZ3NfcmVhZF9pbmRfcmVnaXN0 ZXJfdCkodm9pZCAqY2dzX2RldmljZSwgZW51bSBjZ3NfaW5kX3JlZyBzcGFjZSwKKwkJCQkJICAg IHVuc2lnbmVkIGluZGV4KTsKKworLyoqCisgKiBjZ3Nfd3JpdGVfaW5kX3JlZ2lzdGVyKCkgLSBX cml0ZSBhbiBpbmRpcmVjdCByZWdpc3RlcgorICogQGNnc19kZXZpY2U6CW9wYXF1ZSBkZXZpY2Ug aGFuZGxlCisgKiBAb2Zmc2V0OglyZWdpc3RlciBvZmZzZXQKKyAqIEB2YWx1ZToJcmVnaXN0ZXIg dmFsdWUKKyAqLwordHlwZWRlZiB2b2lkICgqY2dzX3dyaXRlX2luZF9yZWdpc3Rlcl90KSh2b2lk ICpjZ3NfZGV2aWNlLCBlbnVtIGNnc19pbmRfcmVnIHNwYWNlLAorCQkJCQkgdW5zaWduZWQgaW5k ZXgsIHVpbnQzMl90IHZhbHVlKTsKKworLyoqCisgKiBjZ3NfcmVhZF9wY2lfY29uZmlnX2J5dGUo KSAtIFJlYWQgYnl0ZSBmcm9tIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlCisgKiBAY2dzX2Rldmlj ZToJb3BhcXVlIGRldmljZSBoYW5kbGUKKyAqIEBhZGRyOglhZGRyZXNzCisgKgorICogUmV0dXJu OiAgVmFsdWUgcmVhZAorICovCit0eXBlZGVmIHVpbnQ4X3QgKCpjZ3NfcmVhZF9wY2lfY29uZmln X2J5dGVfdCkodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgYWRkcik7CisKKy8qKgorICogY2dz X3JlYWRfcGNpX2NvbmZpZ193b3JkKCkgLSBSZWFkIHdvcmQgZnJvbSBQQ0kgY29uZmlndXJhdGlv biBzcGFjZQorICogQGNnc19kZXZpY2U6CW9wYXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAYWRkcjoJ YWRkcmVzcywgbXVzdCBiZSB3b3JkLWFsaWduZWQKKyAqCisgKiBSZXR1cm46ICBWYWx1ZSByZWFk CisgKi8KK3R5cGVkZWYgdWludDE2X3QgKCpjZ3NfcmVhZF9wY2lfY29uZmlnX3dvcmRfdCkodm9p ZCAqY2dzX2RldmljZSwgdW5zaWduZWQgYWRkcik7CisKKy8qKgorICogY2dzX3JlYWRfcGNpX2Nv bmZpZ19kd29yZCgpIC0gUmVhZCBkd29yZCBmcm9tIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlCisg KiBAY2dzX2RldmljZToJb3BhcXVlIGRldmljZSBoYW5kbGUKKyAqIEBhZGRyOglhZGRyZXNzLCBt dXN0IGJlIGR3b3JkLWFsaWduZWQKKyAqCisgKiBSZXR1cm46ICBWYWx1ZSByZWFkCisgKi8KK3R5 cGVkZWYgdWludDMyX3QgKCpjZ3NfcmVhZF9wY2lfY29uZmlnX2R3b3JkX3QpKHZvaWQgKmNnc19k ZXZpY2UsCisJCQkJCQl1bnNpZ25lZCBhZGRyKTsKKworLyoqCisgKiBjZ3Nfd3JpdGVfcGNpX2Nv bmZpZ19ieXRlKCkgLSBXcml0ZSBieXRlIHRvIFBDSSBjb25maWd1cmF0aW9uIHNwYWNlCisgKiBA Y2dzX2RldmljZToJb3BhcXVlIGRldmljZSBoYW5kbGUKKyAqIEBhZGRyOglhZGRyZXNzCisgKiBA dmFsdWU6CXZhbHVlIHRvIHdyaXRlCisgKi8KK3R5cGVkZWYgdm9pZCAoKmNnc193cml0ZV9wY2lf Y29uZmlnX2J5dGVfdCkodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgYWRkciwKKwkJCQkJICAg IHVpbnQ4X3QgdmFsdWUpOworCisvKioKKyAqIGNnc193cml0ZV9wY2lfY29uZmlnX3dvcmQoKSAt IFdyaXRlIGJ5dGUgdG8gUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UKKyAqIEBjZ3NfZGV2aWNlOglv cGFxdWUgZGV2aWNlIGhhbmRsZQorICogQGFkZHI6CWFkZHJlc3MsIG11c3QgYmUgd29yZC1hbGln bmVkCisgKiBAdmFsdWU6CXZhbHVlIHRvIHdyaXRlCisgKi8KK3R5cGVkZWYgdm9pZCAoKmNnc193 cml0ZV9wY2lfY29uZmlnX3dvcmRfdCkodm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgYWRkciwK KwkJCQkJICAgIHVpbnQxNl90IHZhbHVlKTsKKworLyoqCisgKiBjZ3Nfd3JpdGVfcGNpX2NvbmZp Z19kd29yZCgpIC0gV3JpdGUgYnl0ZSB0byBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZQorICogQGNn c19kZXZpY2U6CW9wYXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAYWRkcjoJYWRkcmVzcywgbXVzdCBi ZSBkd29yZC1hbGlnbmVkCisgKiBAdmFsdWU6CXZhbHVlIHRvIHdyaXRlCisgKi8KK3R5cGVkZWYg dm9pZCAoKmNnc193cml0ZV9wY2lfY29uZmlnX2R3b3JkX3QpKHZvaWQgKmNnc19kZXZpY2UsIHVu c2lnbmVkIGFkZHIsCisJCQkJCSAgICAgdWludDMyX3QgdmFsdWUpOworCisvKioKKyAqIGNnc19h dG9tX2dldF9kYXRhX3RhYmxlKCkgLSBHZXQgYSBwb2ludGVyIHRvIGFuIEFUT00gQklPUyBkYXRh IHRhYmxlCisgKiBAY2dzX2RldmljZToJb3BhcXVlIGRldmljZSBoYW5kbGUKKyAqIEB0YWJsZToJ ZGF0YSB0YWJsZSBpbmRleAorICogQHNpemU6CXNpemUgb2YgdGhlIHRhYmxlIChvdXRwdXQsIG1h eSBiZSBOVUxMKQorICogQGZyZXY6CXRhYmxlIGZvcm1hdCByZXZpc2lvbiAob3V0cHV0LCBtYXkg YmUgTlVMTCkKKyAqIEBjcmV2Ogl0YWJsZSBjb250ZW50IHJldmlzaW9uIChvdXRwdXQsIG1heSBi ZSBOVUxMKQorICoKKyAqIFJldHVybjogUG9pbnRlciB0byBzdGFydCBvZiB0aGUgdGFibGUsIG9y IE5VTEwgb24gZmFpbHVyZQorICovCit0eXBlZGVmIGNvbnN0IHZvaWQgKigqY2dzX2F0b21fZ2V0 X2RhdGFfdGFibGVfdCkoCisJdm9pZCAqY2dzX2RldmljZSwgdW5zaWduZWQgdGFibGUsCisJdWlu dDE2X3QgKnNpemUsIHVpbnQ4X3QgKmZyZXYsIHVpbnQ4X3QgKmNyZXYpOworCisvKioKKyAqIGNn c19hdG9tX2dldF9jbWRfdGFibGVfcmV2cygpIC0gR2V0IEFUT00gQklPUyBjb21tYW5kIHRhYmxl IHJldmlzaW9ucworICogQGNnc19kZXZpY2U6CW9wYXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAdGFi bGU6CWRhdGEgdGFibGUgaW5kZXgKKyAqIEBmcmV2Ogl0YWJsZSBmb3JtYXQgcmV2aXNpb24gKG91 dHB1dCwgbWF5IGJlIE5VTEwpCisgKiBAY3JldjoJdGFibGUgY29udGVudCByZXZpc2lvbiAob3V0 cHV0LCBtYXkgYmUgTlVMTCkKKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLWVycm5vIG90 aGVyd2lzZQorICovCit0eXBlZGVmIGludCAoKmNnc19hdG9tX2dldF9jbWRfdGFibGVfcmV2c190 KSh2b2lkICpjZ3NfZGV2aWNlLCB1bnNpZ25lZCB0YWJsZSwKKwkJCQkJICAgICB1aW50OF90ICpm cmV2LCB1aW50OF90ICpjcmV2KTsKKworLyoqCisgKiBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZSgp IC0gRXhlY3V0ZSBhbiBBVE9NIEJJT1MgY29tbWFuZCB0YWJsZQorICogQGNnc19kZXZpY2U6IG9w YXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAdGFibGU6CWNvbW1hbmQgdGFibGUgaW5kZXgKKyAqIEBh cmdzOglhcmd1bWVudHMKKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLWVycm5vIG90aGVy d2lzZQorICovCit0eXBlZGVmIGludCAoKmNnc19hdG9tX2V4ZWNfY21kX3RhYmxlX3QpKHZvaWQg KmNnc19kZXZpY2UsCisJCQkJCSB1bnNpZ25lZCB0YWJsZSwgdm9pZCAqYXJncyk7CisKKy8qKgor ICogY2dzX2NyZWF0ZV9wbV9yZXF1ZXN0KCkgLSBDcmVhdGUgYSBwb3dlciBtYW5hZ2VtZW50IHJl cXVlc3QKKyAqIEBjZ3NfZGV2aWNlOglvcGFxdWUgZGV2aWNlIGhhbmRsZQorICogQHJlcXVlc3Q6 CWhhbmRsZSBvZiBjcmVhdGVkIFBNIHJlcXVlc3QgKG91dHB1dCkKKyAqCisgKiBSZXR1cm46ICAw IG9uIHN1Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UKKyAqLwordHlwZWRlZiBpbnQgKCpjZ3NfY3Jl YXRlX3BtX3JlcXVlc3RfdCkodm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90ICpyZXF1ZXN0 KTsKKworLyoqCisgKiBjZ3NfZGVzdHJveV9wbV9yZXF1ZXN0KCkgLSBEZXN0cm95IGEgcG93ZXIg bWFuYWdlbWVudCByZXF1ZXN0CisgKiBAY2dzX2RldmljZToJb3BhcXVlIGRldmljZSBoYW5kbGUK KyAqIEByZXF1ZXN0OgloYW5kbGUgb2YgY3JlYXRlZCBQTSByZXF1ZXN0CisgKgorICogUmV0dXJu OiAgMCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlCisgKi8KK3R5cGVkZWYgaW50ICgqY2dz X2Rlc3Ryb3lfcG1fcmVxdWVzdF90KSh2b2lkICpjZ3NfZGV2aWNlLCBjZ3NfaGFuZGxlX3QgcmVx dWVzdCk7CisKKy8qKgorICogY2dzX3NldF9wbV9yZXF1ZXN0KCkgLSBBY3RpdmF0ZSBvciBkZWFj dGl2ZWF0ZSBhIFBNIHJlcXVlc3QKKyAqIEBjZ3NfZGV2aWNlOglvcGFxdWUgZGV2aWNlIGhhbmRs ZQorICogQHJlcXVlc3Q6CVBNIHJlcXVlc3QgaGFuZGxlCisgKiBAYWN0aXZlOgkwID0gZGVhY3Rp dmF0ZSwgbm9uLTAgPSBhY3RpdmF0ZQorICoKKyAqIFdoaWxlIGEgUE0gcmVxdWVzdCBpcyBhY3Rp dmUsIGl0cyBtaW5pbXVtIGNsb2NrIHJlcXVlc3RzIGFyZSB0YWtlbgorICogaW50byBhY2NvdW50 IGFzIHRoZSByZXF1ZXN0ZWQgZW5naW5lcyBhcmUgcG93ZXJlZCB1cC4gV2hlbiB0aGUKKyAqIHJl cXVlc3QgaXMgaW5hY3RpdmUsIHRoZSBlbmdpbmVzIG1heSBiZSBwb3dlcmVkIGRvd24gYW5kIGNs b2NrcyBtYXkKKyAqIGJlIGxvd2VyLCBkZXBlbmRpbmcgb24gb3RoZXIgUE0gcmVxdWVzdHMgYnkg b3RoZXIgZHJpdmVyCisgKiBjb21wb25lbnRzLgorICoKKyAqIFJldHVybjogIDAgb24gc3VjY2Vz cywgLWVycm5vIG90aGVyd2lzZQorICovCit0eXBlZGVmIGludCAoKmNnc19zZXRfcG1fcmVxdWVz dF90KSh2b2lkICpjZ3NfZGV2aWNlLCBjZ3NfaGFuZGxlX3QgcmVxdWVzdCwKKwkJCQkgICAgaW50 IGFjdGl2ZSk7CisKKy8qKgorICogY2dzX3BtX3JlcXVlc3RfY2xvY2soKSAtIFJlcXVlc3QgYSBt aW5pbXVtIGZyZXF1ZW5jeSBmb3IgYSBzcGVjaWZpYyBjbG9jaworICogQGNnc19kZXZpY2U6CW9w YXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAcmVxdWVzdDoJUE0gcmVxdWVzdCBoYW5kbGUKKyAqIEBj bG9jazoJd2hpY2ggY2xvY2s/CisgKiBAZnJlcToJcmVxdWVzdGVkIG1pbi4gZnJlcXVlbmN5IGlu IDEwS0h6IHVuaXRzICgwIHRvIGNsZWFyIHJlcXVlc3QpCisgKgorICogUmV0dXJuOiAgMCBvbiBz dWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlCisgKi8KK3R5cGVkZWYgaW50ICgqY2dzX3BtX3JlcXVl c3RfY2xvY2tfdCkodm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90IHJlcXVlc3QsCisJCQkJ ICAgICAgZW51bSBjZ3NfY2xvY2sgY2xvY2ssIHVuc2lnbmVkIGZyZXEpOworCisvKioKKyAqIGNn c19wbV9yZXF1ZXN0X2VuZ2luZSgpIC0gUmVxdWVzdCBhbiBlbmdpbmUgdG8gYmUgcG93ZXJlZCB1 cAorICogQGNnc19kZXZpY2U6CW9wYXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAcmVxdWVzdDoJUE0g cmVxdWVzdCBoYW5kbGUKKyAqIEBlbmdpbmU6CXdoaWNoIGVuZ2luZT8KKyAqIEBwb3dlcmVkOgkw ID0gcG93ZXJlZCBkb3duLCBub24tMCA9IHBvd2VyZWQgdXAKKyAqCisgKiBSZXR1cm46ICAwIG9u IHN1Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UKKyAqLwordHlwZWRlZiBpbnQgKCpjZ3NfcG1fcmVx dWVzdF9lbmdpbmVfdCkodm9pZCAqY2dzX2RldmljZSwgY2dzX2hhbmRsZV90IHJlcXVlc3QsCisJ CQkJICAgICAgIGVudW0gY2dzX2VuZ2luZSBlbmdpbmUsIGludCBwb3dlcmVkKTsKKworLyoqCisg KiBjZ3NfcG1fcXVlcnlfY2xvY2tfbGltaXRzKCkgLSBRdWVyeSBjbG9jayBmcmVxdWVuY3kgbGlt aXRzCisgKiBAY2dzX2RldmljZToJb3BhcXVlIGRldmljZSBoYW5kbGUKKyAqIEBjbG9jazoJd2hp Y2ggY2xvY2s/CisgKiBAbGltaXRzOgljbG9jayBsaW1pdHMKKyAqCisgKiBSZXR1cm46ICAwIG9u IHN1Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UKKyAqLwordHlwZWRlZiBpbnQgKCpjZ3NfcG1fcXVl cnlfY2xvY2tfbGltaXRzX3QpKHZvaWQgKmNnc19kZXZpY2UsCisJCQkJCSAgIGVudW0gY2dzX2Ns b2NrIGNsb2NrLAorCQkJCQkgICBzdHJ1Y3QgY2dzX2Nsb2NrX2xpbWl0cyAqbGltaXRzKTsKKwor LyoqCisgKiBjZ3Nfc2V0X2NhbWVyYV92b2x0YWdlcygpIC0gQXBwbHkgc3BlY2lmaWMgdm9sdGFn ZXMgdG8gUE1JQyB2b2x0YWdlIHBsYW5lcworICogQGNnc19kZXZpY2U6CW9wYXF1ZSBkZXZpY2Ug aGFuZGxlCisgKiBAbWFzazoJYml0bWFzayBvZiB2b2x0YWdlcyB0byBjaGFuZ2UgKDE8PENHU19W T0xUQUdFX1BMQU5FX194eXp8Li4uKQorICogQHZvbHRhZ2VzOglwb2ludGVyIHRvIGFycmF5IG9m IHZvbHRhZ2UgdmFsdWVzIGluIDFtViB1bml0cworICoKKyAqIFJldHVybjogMCBvbiBzdWNjZXNz LCAtZXJybm8gb3RoZXJ3aXNlCisgKi8KK3R5cGVkZWYgaW50ICgqY2dzX3NldF9jYW1lcmFfdm9s dGFnZXNfdCkodm9pZCAqY2dzX2RldmljZSwgdWludDMyX3QgbWFzaywKKwkJCQkJIGNvbnN0IHVp bnQzMl90ICp2b2x0YWdlcyk7CisKK3N0cnVjdCBjZ3Nfb3BzIHsKKwkvKiBtZW1vcnkgbWFuYWdl bWVudCBjYWxscyAoc2ltaWxhciB0byBLRkQgaW50ZXJmYWNlKSAqLworCWNnc19ncHVfbWVtX2lu Zm9fdCBncHVfbWVtX2luZm87CisJY2dzX2dtYXBfa21lbV90IGdtYXBfa21lbTsKKwljZ3NfZ3Vu bWFwX2ttZW1fdCBndW5tYXBfa21lbTsKKwljZ3NfYWxsb2NfZ3B1X21lbV90IGFsbG9jX2dwdV9t ZW07CisJY2dzX2ZyZWVfZ3B1X21lbV90IGZyZWVfZ3B1X21lbTsKKwljZ3NfZ21hcF9ncHVfbWVt X3QgZ21hcF9ncHVfbWVtOworCWNnc19ndW5tYXBfZ3B1X21lbV90IGd1bm1hcF9ncHVfbWVtOwor CWNnc19rbWFwX2dwdV9tZW1fdCBrbWFwX2dwdV9tZW07CisJY2dzX2t1bm1hcF9ncHVfbWVtX3Qg a3VubWFwX2dwdV9tZW07CisJLyogTU1JTyBhY2Nlc3MgKi8KKwljZ3NfcmVhZF9yZWdpc3Rlcl90 IHJlYWRfcmVnaXN0ZXI7CisJY2dzX3dyaXRlX3JlZ2lzdGVyX3Qgd3JpdGVfcmVnaXN0ZXI7CisJ Y2dzX3JlYWRfaW5kX3JlZ2lzdGVyX3QgcmVhZF9pbmRfcmVnaXN0ZXI7CisJY2dzX3dyaXRlX2lu ZF9yZWdpc3Rlcl90IHdyaXRlX2luZF9yZWdpc3RlcjsKKwkvKiBQQ0kgY29uZmlndXJhdGlvbiBz cGFjZSBhY2Nlc3MgKi8KKwljZ3NfcmVhZF9wY2lfY29uZmlnX2J5dGVfdCByZWFkX3BjaV9jb25m aWdfYnl0ZTsKKwljZ3NfcmVhZF9wY2lfY29uZmlnX3dvcmRfdCByZWFkX3BjaV9jb25maWdfd29y ZDsKKwljZ3NfcmVhZF9wY2lfY29uZmlnX2R3b3JkX3QgcmVhZF9wY2lfY29uZmlnX2R3b3JkOwor CWNnc193cml0ZV9wY2lfY29uZmlnX2J5dGVfdCB3cml0ZV9wY2lfY29uZmlnX2J5dGU7CisJY2dz X3dyaXRlX3BjaV9jb25maWdfd29yZF90IHdyaXRlX3BjaV9jb25maWdfd29yZDsKKwljZ3Nfd3Jp dGVfcGNpX2NvbmZpZ19kd29yZF90IHdyaXRlX3BjaV9jb25maWdfZHdvcmQ7CisJLyogQVRPTSBC SU9TICovCisJY2dzX2F0b21fZ2V0X2RhdGFfdGFibGVfdCBhdG9tX2dldF9kYXRhX3RhYmxlOwor CWNnc19hdG9tX2dldF9jbWRfdGFibGVfcmV2c190IGF0b21fZ2V0X2NtZF90YWJsZV9yZXZzOwor CWNnc19hdG9tX2V4ZWNfY21kX3RhYmxlX3QgYXRvbV9leGVjX2NtZF90YWJsZTsKKwkvKiBQb3dl ciBtYW5hZ2VtZW50ICovCisJY2dzX2NyZWF0ZV9wbV9yZXF1ZXN0X3QgY3JlYXRlX3BtX3JlcXVl c3Q7CisJY2dzX2Rlc3Ryb3lfcG1fcmVxdWVzdF90IGRlc3Ryb3lfcG1fcmVxdWVzdDsKKwljZ3Nf c2V0X3BtX3JlcXVlc3RfdCBzZXRfcG1fcmVxdWVzdDsKKwljZ3NfcG1fcmVxdWVzdF9jbG9ja190 IHBtX3JlcXVlc3RfY2xvY2s7CisJY2dzX3BtX3JlcXVlc3RfZW5naW5lX3QgcG1fcmVxdWVzdF9l bmdpbmU7CisJY2dzX3BtX3F1ZXJ5X2Nsb2NrX2xpbWl0c190IHBtX3F1ZXJ5X2Nsb2NrX2xpbWl0 czsKKwljZ3Nfc2V0X2NhbWVyYV92b2x0YWdlc190IHNldF9jYW1lcmFfdm9sdGFnZXM7CisJLyog QUNQSSAoVE9ETykgKi8KK307CisKK3N0cnVjdCBjZ3Nfb3Nfb3BzOyAvKiBUbyBiZSBkZWZpbmUg aW4gT1Mtc3BlY2lmaWMgQ0dTIGhlYWRlciAqLworCitzdHJ1Y3QgY2dzX2RldmljZQoreworCWNv bnN0IHN0cnVjdCBjZ3Nfb3BzICpvcHM7CisJY29uc3Qgc3RydWN0IGNnc19vc19vcHMgKm9zX29w czsKKwkvKiB0byBiZSBlbWJlZGRlZCBhdCB0aGUgc3RhcnQgb2YgZHJpdmVyIHByaXZhdGUgc3Ry dWN0dXJlICovCit9OworCisvKiBDb252ZW5pZW5jZSBtYWNyb3MgdGhhdCBtYWtlIENHUyBpbmRp cmVjdCBmdW5jdGlvbiBjYWxscyBsb29rIGxpa2UKKyAqIG5vcm1hbCBmdW5jdGlvbiBjYWxscyAq LworI2RlZmluZSBDR1NfQ0FMTChmdW5jLGRldiwuLi4pIFwKKwkoKChzdHJ1Y3QgY2dzX2Rldmlj ZSAqKWRldiktPm9wcy0+ZnVuYyhkZXYsICMjX19WQV9BUkdTX18pKQorI2RlZmluZSBDR1NfT1Nf Q0FMTChmdW5jLGRldiwuLi4pIFwKKwkoKChzdHJ1Y3QgY2dzX2RldmljZSAqKWRldiktPm9zX29w cy0+ZnVuYyhkZXYsICMjX19WQV9BUkdTX18pKQorCisjZGVmaW5lIGNnc19ncHVfbWVtX2luZm8o ZGV2LHR5cGUsbWNfc3RhcnQsbWNfc2l6ZSxtZW1fc2l6ZSkJCVwKKwlDR1NfQ0FMTChncHVfbWVt X2luZm8sZGV2LHR5cGUsbWNfc3RhcnQsbWNfc2l6ZSxtZW1fc2l6ZSkKKyNkZWZpbmUgY2dzX2dt YXBfa21lbShkZXYsa21lbSxzaXplLG1pbl9vZmYsbWF4X29mZixrbWVtX2hhbmRsZSxtY2FkZHIp CVwKKwlDR1NfQ0FMTChnbWFwX2ttZW0sZGV2LGttZW0sc2l6ZSxtaW5fb2ZmLG1heF9vZmYsa21l bV9oYW5kbGUsbWNhZGRyKQorI2RlZmluZSBjZ3NfZ3VtbWFwX2ttZW0oZGV2LGttZW1faGFuZGxl KQlcCisJQ0dTX0NBTEwoZ3VubWFwX2ttZW0sZGV2LGtlbWVfaGFuZGxlKQorI2RlZmluZSBjZ3Nf YWxsb2NfZ3B1X21lbShkZXYsdHlwZSxzaXplLGFsaWduLG1pbl9vZmYsbWF4X29mZixoYW5kbGUp CVwKKwlDR1NfQ0FMTChhbGxvY19ncHVfbWVtLGRldix0eXBlLHNpemUsYWxpZ24sbWluX29mZixt YXhfb2ZmLGhhbmRsZSkKKyNkZWZpbmUgY2dzX2ZyZWVfZ3B1X21lbShkZXYsaGFuZGxlKQkJXAor CUNHU19DQUxMKGZyZWVfZ3B1X21lbSxkZXYsaGFuZGxlKQorI2RlZmluZSBjZ3NfZ21hcF9ncHVf bWVtKGRldixoYW5kbGUsbWNhZGRyKQlcCisJQ0dTX0NBTEwoZ21hcF9ncHVfbWVtLGRldixoYW5k bGUsbWNhZGRyKQorI2RlZmluZSBjZ3NfZ3VtbWFwX2dwdV9tZW0oZGV2LGhhbmRsZSkJCVwKKwlD R1NfQ0FMTChndW5tYXBfZ3B1X21lbSxkZXYsaGFuZGxlKQorI2RlZmluZSBjZ3Nfa21hcF9ncHVf bWVtKGRldixoYW5kbGUsbWFwKQlcCisJQ0dTX0NBTEwoa21hcF9ncHVfbWVtLGRldixoYW5kbGUs bWFwKQorI2RlZmluZSBjZ3Nfa3VubWFwX2dwdV9tZW0oZGV2LGhhbmRsZSkJCVwKKwlDR1NfQ0FM TChrdW5tYXBfZ3B1X21lbSxkZXYsaGFuZGxlKQorCisjZGVmaW5lIGNnc19yZWFkX3JlZ2lzdGVy KGRldixvZmZzZXQpCQlcCisJQ0dTX0NBTEwocmVhZF9yZWdpc3RlcixkZXYsb2Zmc2V0KQorI2Rl ZmluZSBjZ3Nfd3JpdGVfcmVnaXN0ZXIoZGV2LG9mZnNldCx2YWx1ZSkJCVwKKwlDR1NfQ0FMTCh3 cml0ZV9yZWdpc3RlcixkZXYsb2Zmc2V0LHZhbHVlKQorI2RlZmluZSBjZ3NfcmVhZF9pbmRfcmVn aXN0ZXIoZGV2LHNwYWNlLGluZGV4KQkJXAorCUNHU19DQUxMKHJlYWRfaW5kX3JlZ2lzdGVyLGRl dixzcGFjZSxpbmRleCkKKyNkZWZpbmUgY2dzX3dyaXRlX2luZF9yZWdpc3RlcihkZXYsc3BhY2Us aW5kZXgsdmFsdWUpCQlcCisJQ0dTX0NBTEwod3JpdGVfaW5kX3JlZ2lzdGVyLGRldixzcGFjZSxp bmRleCx2YWx1ZSkKKworI2RlZmluZSBjZ3NfcmVhZF9wY2lfY29uZmlnX2J5dGUoZGV2LGFkZHIp CVwKKwlDR1NfQ0FMTChyZWFkX3BjaV9jb25maWdfYnl0ZSxkZXYsYWRkcikKKyNkZWZpbmUgY2dz X3JlYWRfcGNpX2NvbmZpZ193b3JkKGRldixhZGRyKQlcCisJQ0dTX0NBTEwocmVhZF9wY2lfY29u ZmlnX3dvcmQsZGV2LGFkZHIpCisjZGVmaW5lIGNnc19yZWFkX3BjaV9jb25maWdfZHdvcmQoZGV2 LGFkZHIpCQlcCisJQ0dTX0NBTEwocmVhZF9wY2lfY29uZmlnX2R3b3JkLGRldixhZGRyKQorI2Rl ZmluZSBjZ3Nfd3JpdGVfcGNpX2NvbmZpZ19ieXRlKGRldixhZGRyLHZhbHVlKQlcCisJQ0dTX0NB TEwod3JpdGVfcGNpX2NvbmZpZ19ieXRlLGRldixhZGRyLHZhbHVlKQorI2RlZmluZSBjZ3Nfd3Jp dGVfcGNpX2NvbmZpZ193b3JkKGRldixhZGRyLHZhbHVlKQlcCisJQ0dTX0NBTEwod3JpdGVfcGNp X2NvbmZpZ193b3JkLGRldixhZGRyLHZhbHVlKQorI2RlZmluZSBjZ3Nfd3JpdGVfcGNpX2NvbmZp Z19kd29yZChkZXYsYWRkcix2YWx1ZSkJXAorCUNHU19DQUxMKHdyaXRlX3BjaV9jb25maWdfZHdv cmQsZGV2LGFkZHIsdmFsdWUpCisKKyNkZWZpbmUgY2dzX2F0b21fZ2V0X2RhdGFfdGFibGUoZGV2 LHRhYmxlLHNpemUsZnJldixjcmV2KQlcCisJQ0dTX0NBTEwoYXRvbV9nZXRfZGF0YV90YWJsZSxk ZXYsdGFibGUsc2l6ZSxmcmV2LGNyZXYpCisjZGVmaW5lIGNnc19hdG9tX2dldF9jbWRfdGFibGVf cmV2cyhkZXYsdGFibGUsZnJldixjcmV2KQlcCisJQ0dTX0NBTEwoYXRvbV9nZXRfY21kX3RhYmxl X3JldnMsZGV2LHRhYmxlLGZyZXYsY3JldikKKyNkZWZpbmUgY2dzX2F0b21fZXhlY19jbWRfdGFi bGUoZGV2LHRhYmxlLGFyZ3MpCQlcCisJQ0dTX0NBTEwoYXRvbV9leGVjX2NtZF90YWJsZSxkZXYs dGFibGUsYXJncykKKworI2RlZmluZSBjZ3NfY3JlYXRlX3BtX3JlcXVlc3QoZGV2LHJlcXVlc3Qp CVwKKwlDR1NfQ0FMTChjcmVhdGVfcG1fcmVxdWVzdCxkZXYscmVxdWVzdCkKKyNkZWZpbmUgY2dz X2Rlc3Ryb3lfcG1fcmVxdWVzdChkZXYscmVxdWVzdCkJCVwKKwlDR1NfQ0FMTChkZXN0cm95X3Bt X3JlcXVlc3QsZGV2LHJlcXVlc3QpCisjZGVmaW5lIGNnc19zZXRfcG1fcmVxdWVzdChkZXYscmVx dWVzdCxhY3RpdmUpCQlcCisJQ0dTX0NBTEwoc2V0X3BtX3JlcXVlc3QsZGV2LHJlcXVlc3QsYWN0 aXZlKQorI2RlZmluZSBjZ3NfcG1fcmVxdWVzdF9jbG9jayhkZXYscmVxdWVzdCxjbG9jayxmcmVx KQkJXAorCUNHU19DQUxMKHBtX3JlcXVlc3RfY2xvY2ssZGV2LHJlcXVlc3QsY2xvY2ssZnJlcSkK KyNkZWZpbmUgY2dzX3BtX3JlcXVlc3RfZW5naW5lKGRldixyZXF1ZXN0LGVuZ2luZSxwb3dlcmVk KQlcCisJQ0dTX0NBTEwocG1fcmVxdWVzdF9lbmdpbmUsZGV2LHJlcXVlc3QsZW5naW5lLHBvd2Vy ZWQpCisjZGVmaW5lIGNnc19wbV9xdWVyeV9jbG9ja19saW1pdHMoZGV2LGNsb2NrLGxpbWl0cykJ CVwKKwlDR1NfQ0FMTChwbV9xdWVyeV9jbG9ja19saW1pdHMsZGV2LGNsb2NrLGxpbWl0cykKKyNk ZWZpbmUgY2dzX3NldF9jYW1lcmFfdm9sdGFnZXMoZGV2LG1hc2ssdm9sdGFnZXMpCVwKKwlDR1Nf Q0FMTChzZXRfY2FtZXJhX3ZvbHRhZ2VzLGRldixtYXNrLHZvbHRhZ2VzKQorCisjZW5kaWYgLyog X0NHU19DT01NT05fSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRl L2Nnc19saW51eC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9pbmNsdWRlL2Nnc19saW51eC5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ODY0MmYKLS0tIC9kZXYvbnVsbAor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2luY2x1ZGUvY2dzX2xpbnV4LmgKQEAgLTAsMCArMSwx MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAxNSBBZHZhbmNlZCBNaWNybyBEZXZpY2VzLCBJbmMu CisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRv IGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNz b2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0 aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorICogYWxsIGNvcGllcyBvciBzdWJzdGFu dGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hU IEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IKKyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1Qs IFRPUlQgT1IgT1RIRVJXSVNFLAorICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCisgKiBPVEhFUiBERUFMSU5HUyBJ TiBUSEUgU09GVFdBUkUuCisgKgorICoKKyAqLworI2lmbmRlZiBfQ0dTX0xJTlVYX0gKKyNkZWZp bmUgX0NHU19MSU5VWF9ICisKKyNpbmNsdWRlICJjZ3NfY29tbW9uLmgiCisKKy8qKgorICogY2dz X2ltcG9ydF9ncHVfbWVtKCkgLSBJbXBvcnQgZG1hYnVmIGhhbmRsZQorICogQGNnc19kZXZpY2U6 ICBvcGFxdWUgZGV2aWNlIGhhbmRsZQorICogQGRtYWJ1Zl9mZDogICBETUFCdWYgZmlsZSBkZXNj cmlwdG9yCisgKiBAaGFuZGxlOiAgICAgIG1lbW9yeSBoYW5kbGUgKG91dHB1dCkKKyAqCisgKiBN dXN0IGJlIGNhbGxlZCBpbiB0aGUgcHJvY2VzcyBjb250ZXh0IHRoYXQgZG1hYnVmX2ZkIGJlbG9u Z3MgdG8uCisgKgorICogUmV0dXJuOiAgMCBvbiBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlCisg Ki8KK3R5cGVkZWYgaW50ICgqY2dzX2ltcG9ydF9ncHVfbWVtX3QpKHZvaWQgKmNnc19kZXZpY2Us IGludCBkbWFidWZfZmQsCisJCQkJICAgIGNnc19oYW5kbGVfdCAqaGFuZGxlKTsKKworLyoqCisg KiBjZ3NfaXJxX3NvdXJjZV9zZXRfZnVuYygpIC0gQ2FsbGJhY2sgZm9yIGVuYWJsaW5nL2Rpc2Fi bGluZyBpbnRlcnJ1cHQgc291cmNlcworICogQHByaXZhdGVfZGF0YTogIHByaXZhdGUgZGF0YSBw cm92aWRlZCB0byBjZ3NfYWRkX2lycV9zb3VyY2UKKyAqIEBzcmNfaWQ6ICAgICAgICBpbnRlcnJ1 cHQgc291cmNlIElECisgKiBAdHlwZTogICAgICAgICAgaW50ZXJydXB0IHR5cGUKKyAqIEBlbmFi bGVkOiAgICAgICAwID0gZGlzYWJsZSBzb3VyY2UsIG5vbi0wID0gZW5hYmxlIHNvdXJjZQorICoK KyAqIFJldHVybjogIDAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZQorICovCit0eXBlZGVm IGludCAoKmNnc19pcnFfc291cmNlX3NldF9mdW5jX3QpKHZvaWQgKnByaXZhdGVfZGF0YSwKKwkJ CQkJIHVuc2lnbmVkIHNyY19pZCwgdW5zaWduZWQgdHlwZSwKKwkJCQkJIGludCBlbmFibGVkKTsK KworLyoqCisgKiBjZ3NfaXJxX2hhbmRsZXJfZnVuYygpIC0gSW50ZXJydXB0IGhhbmRsZXIgY2Fs bGJhY2sKKyAqIEBwcml2YXRlX2RhdGE6ICBwcml2YXRlIGRhdGEgcHJvdmlkZWQgdG8gY2dzX2Fk ZF9pcnFfc291cmNlCisgKiBAc3JjX2lkOiAgICAgICAgaW50ZXJydXB0IHNvdXJjZSBJRAorICog QGl2X2VudHJ5OiAgICAgIHBvaW50ZXIgdG8gcmF3IGloIHJpbmcgZW50cnkKKyAqCisgKiBUaGlz IGNhbGxiYWNrIHJ1bnMgaW4gaW50ZXJydXB0IGNvbnRleHQuCisgKgorICogUmV0dXJuOiAgMCBv biBzdWNjZXNzLCAtZXJybm8gb3RoZXJ3aXNlCisgKi8KK3R5cGVkZWYgaW50ICgqY2dzX2lycV9o YW5kbGVyX2Z1bmNfdCkodm9pZCAqcHJpdmF0ZV9kYXRhLAorCQkJCSAgICAgIHVuc2lnbmVkIHNy Y19pZCwgY29uc3QgdWludDMyX3QgKml2X2VudHJ5KTsKKworLyoqCisgKiBjZ3NfYWRkX2lycV9z b3VyY2UoKSAtIEFkZCBhbiBJUlEgc291cmNlCisgKiBAY2dzX2RldmljZTogICAgb3BhcXVlIGRl dmljZSBoYW5kbGUKKyAqIEBzcmNfaWQ6ICAgICAgICBpbnRlcnJ1cHQgc291cmNlIElECisgKiBA bnVtX3R5cGVzOiAgICAgbnVtYmVyIG9mIGludGVycnVwdCB0eXBlcyB0aGF0IGNhbiBiZSBpbmRl cGVuZGVudGx5IGVuYWJsZWQKKyAqIEBzZXQ6ICAgICAgICAgICBjYWxsYmFjayBmdW5jdGlvbiB0 byBlbmFibGUvZGlzYWJsZSBhbiBpbnRlcnJ1cHQgdHlwZQorICogQGhhbmRsZXI6ICAgICAgIGlu dGVycnVwdCBoYW5kbGVyIGNhbGxiYWNrCisgKiBAcHJpdmF0ZV9kYXRhOiAgcHJpdmF0ZSBkYXRh IHRvIHBhc3MgdG8gY2FsbGJhY2sgZnVuY3Rpb25zCisgKgorICogVGhlIHNhbWUgSVJRIHNvdXJj ZSBjYW4gYmUgYWRkZWQgb25seSBvbmNlLiBBZGRpbmcgYW4gSVJRIHNvdXJjZQorICogaW5kaWNh dGVzIG93bmVyc2hpcCBvZiB0aGF0IElSUSBzb3VyY2UgYW5kIGFsbCBpdHMgSVJRIHR5cGVzLgor ICoKKyAqIFJldHVybjogIDAgb24gc3VjY2VzcywgLWVycm5vIG90aGVyd2lzZQorICovCit0eXBl ZGVmIGludCAoKmNnc19hZGRfaXJxX3NvdXJjZV90KSh2b2lkICpjZ3NfZGV2aWNlLCB1bnNpZ25l ZCBzcmNfaWQsCisJCQkJICAgIHVuc2lnbmVkIG51bV90eXBlcywKKwkJCQkgICAgY2dzX2lycV9z b3VyY2Vfc2V0X2Z1bmNfdCBzZXQsCisJCQkJICAgIGNnc19pcnFfaGFuZGxlcl9mdW5jX3QgaGFu ZGxlciwKKwkJCQkgICAgdm9pZCAqcHJpdmF0ZV9kYXRhKTsKKworLyoqCisgKiBjZ3NfaXJxX2dl dCgpIC0gUmVxdWVzdCBlbmFibGluZyBhbiBJUlEgc291cmNlIGFuZCB0eXBlCisgKiBAY2dzX2Rl dmljZTogIG9wYXF1ZSBkZXZpY2UgaGFuZGxlCisgKiBAc3JjX2lkOiAgICAgIGludGVycnVwdCBz b3VyY2UgSUQKKyAqIEB0eXBlOiAgICAgICAgaW50ZXJydXB0IHR5cGUKKyAqCisgKiBjZ3NfaXJx X2dldCBhbmQgY2dzX2lycV9wdXQgY2FsbHMgbXVzdCBiZSBiYWxhbmNlZC4gVGhleSBjb3VudAor ICogInJlZmVyZW5jZXMiIHRvIElSUSBzb3VyY2VzLgorICoKKyAqIFJldHVybjogIDAgb24gc3Vj Y2VzcywgLWVycm5vIG90aGVyd2lzZQorICovCit0eXBlZGVmIGludCAoKmNnc19pcnFfZ2V0X3Qp KHZvaWQgKmNnc19kZXZpY2UsIHVuc2lnbmVkIHNyY19pZCwgdW5zaWduZWQgdHlwZSk7CisKKy8q KgorICogY2dzX2lycV9wdXQoKSAtIEluZGljYXRlIElSUSBzb3VyY2UgaXMgbm8gbG9uZ2VyIG5l ZWRlZAorICogQGNnc19kZXZpY2U6ICBvcGFxdWUgZGV2aWNlIGhhbmRsZQorICogQHNyY19pZDog ICAgICBpbnRlcnJ1cHQgc291cmNlIElECisgKiBAdHlwZTogICAgICAgIGludGVycnVwdCB0eXBl CisgKgorICogY2dzX2lycV9nZXQgYW5kIGNnc19pcnFfcHV0IGNhbGxzIG11c3QgYmUgYmFsYW5j ZWQuIFRoZXkgY291bnQKKyAqICJyZWZlcmVuY2VzIiB0byBJUlEgc291cmNlcy4gRXZlbiBhZnRl ciBjZ3NfaXJxX3B1dCBpcyBjYWxsZWQsIHRoZQorICogSVJRIGhhbmRsZXIgbWF5IHN0aWxsIGJl IGNhbGxlZCBpZiB0aGVyZSBhcmUgbW9yZSByZWZlY2VuY2VzIHRvCisgKiB0aGUgSVJRIHNvdXJj ZS4KKyAqCisgKiBSZXR1cm46ICAwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvdGhlcndpc2UKKyAqLwor dHlwZWRlZiBpbnQgKCpjZ3NfaXJxX3B1dF90KSh2b2lkICpjZ3NfZGV2aWNlLCB1bnNpZ25lZCBz cmNfaWQsIHVuc2lnbmVkIHR5cGUpOworCitzdHJ1Y3QgY2dzX29zX29wcyB7CisJY2dzX2ltcG9y dF9ncHVfbWVtX3QgaW1wb3J0X2dwdV9tZW07CisKKwkvKiBJUlEgaGFuZGxpbmcgKi8KKwljZ3Nf YWRkX2lycV9zb3VyY2VfdCBhZGRfaXJxX3NvdXJjZTsKKwljZ3NfaXJxX2dldF90IGlycV9nZXQ7 CisJY2dzX2lycV9wdXRfdCBpcnFfcHV0OworfTsKKworI2RlZmluZSBjZ3NfaW1wb3J0X2dwdV9t ZW0oZGV2LGRtYWJ1Zl9mZCxoYW5kbGUpCQlcCisJQ0dTX09TX0NBTEwoaW1wb3J0X2dwdV9tZW0s ZGV2LGRtYWJ1Zl9mZCxoYW5kbGUpCisjZGVmaW5lIGNnc19hZGRfaXJxX3NvdXJjZShkZXYsc3Jj X2lkLG51bV90eXBlcyxzZXQsaGFuZGxlcixwcml2YXRlX2RhdGEpIFwKKwlDR1NfT1NfQ0FMTChh ZGRfaXJxX3NvdXJjZSxkZXYsc3JjX2lkLG51bV90eXBlcyxzZXQsaGFuZGxlciwJXAorCQkgICAg cHJpdmF0ZV9kYXRhKQorI2RlZmluZSBjZ3NfaXJxX2dldChkZXYsc3JjX2lkLHR5cGUpCQlcCisJ Q0dTX09TX0NBTEwoaXJxX2dldCxkZXYsc3JjX2lkLHR5cGUpCisjZGVmaW5lIGNnc19pcnFfcHV0 KGRldixzcmNfaWQsdHlwZSkJCVwKKwlDR1NfT1NfQ0FMTChpcnFfcHV0LGRldixzcmNfaWQsdHlw ZSkKKworI2VuZGlmIC8qIF9DR1NfTElOVVhfSCAqLwotLSAKMS44LjMuMQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK