From mboxrd@z Thu Jan 1 00:00:00 1970 From: swati.dhingra@intel.com Subject: [RFC 1/4] drm: Introduce drmfs pseudo filesystem interfaces Date: Mon, 19 Dec 2016 16:12:23 +0530 Message-ID: <1482144146-31605-2-git-send-email-swati.dhingra@intel.com> References: <1482144146-31605-1-git-send-email-swati.dhingra@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1482144146-31605-1-git-send-email-swati.dhingra@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Daniel Vetter , Swati Dhingra , dri-devel@lists.freedesktop.org, Alex Deucher , Sourab Gupta List-Id: dri-devel@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKVGhlIHBhdGNoIGlu dHJvZHVjZXMgYSBuZXcgcHNldWRvIGZpbGVzeXN0ZW0gdHlwZSwgbmFtZWQgJ2RybWZzJyB3aGlj aCBpcwppbnRlbmRlZCB0byBob3VzZSB0aGUgZmlsZXMgZm9yIHRoZSBkYXRhIGdlbmVyYXRlZCBi eSBkcm0gc3Vic3lzdGVtIHRoYXQKY2Fubm90IGJlIGFjY29tbW9kYXRlZCBieSBhbnkgb2YgdGhl IGV4aXN0aW5nIGZpbGVzeXN0ZW1zLgpUaGUgZmlsZXN5c3RlbSBpcyBtb2RlbGxlZCBvbiB0aGUg bGluZXMgb2YgZXhpc3RpbmcgcHNldWRvLWZpbGVzeXN0ZW1zIHN1Y2gKYXMgZGVidWdmcy90cmFj ZWZzLCBhbmQgYm9ycm93cyBpZGVhcyBmcm9tIHRoZWlyIGltcGxlbWVudGF0aW9uLgpUaGlzIGZp bGVzeXN0ZW0gd2lsbCBiZSBhcHBlYXJpbmcgYXQgc3lzL2tlcm5lbC9kcm0uCgpBIG5ldyBjb25m aWcgJ0NPTkZJR19EUk1GUycgaXMgaW50cm9kdWNlZCB0byBlbmFibGUvZGlzYWJsZSB0aGUgZmls ZXN5c3RlbSwKd2hpY2ggaXMgZGVwZW5kZW50IG9uIENPTkZJR19EUk0uClRoZSBmaWxlc3lzdGVt IHdpbGwgbm90IGJlIHJlZ2lzdGVyZWQgc3RhbmRhbG9uZSBkdXJpbmcga2VybmVsIGluaXQgdGlt ZSwKaW5zdGVhZCBpdCBpcyBpbnRlbmRlZCB0byBiZSBpbml0aWFsaXplZC9yZWdpc3RlcmVkIGR1 cmluZyBkcm0gaW5pdGlhbGl6YXRpb24uCgpUaGUgaW50ZW50IGZvciBpbnRyb2R1Y3Rpb24gb2Yg dGhlIGZpbGVzeXN0ZW0gaXMgdG8gYWN0IGFzIGEgbG9jYXRpb24gdG8gaG9sZAp2YXJpb3VzIGtp bmRzIG9mIGRhdGEgb3V0cHV0IGZyb20gTGludXggRFJNIHN1YnN5c3RlbXMsIHdoaWNoIGNhbid0 IHJlYWxseSBmaXQKYW55d2hlcmUgZWxzZSBpbnRvIHRoZSBleGlzdGluZyBmaWxlc3lzdGVtcyBz dWNoIGFzIGRlYnVnZnMvc3lzZnMgZXRjLiBBbGwgdGhlc2UKZmlsZXN5c3RlbXMgaGF2ZSB0aGVp ciBvd24gY29uc3RyYWludHMgYW5kIGFyZSBpbnRlbmRlZCB0byBvdXRwdXQgYSBwYXJ0aWN1bGFy CnR5cGUgb2YgZGF0YSBzdWNoIGFzIGF0dHJpYnV0ZXMgYW5kIHNtYWxsIGRlYnVnIHBhcmFtZXRl ciBkYXRhLiBEdWUgdG8gdGhlc2UKY29uc3RyYWludHMsIHRoZXJlIGlzIGEgbmVlZCBmb3IgYSBu ZXcgcHNldWRvIGZpbGVzeXRlbSwgY3VzdG9taXphYmxlIHRvIERSTQpzcGVjaWZpYyByZXF1aXJl bWVudHMgYW5kIGNhdGVyaW5nIHRvIHRoZSBuZWVkcyB0byBEUk0gc3Vic3lzdGVtIGNvbXBvbmVu dHMKClNpZ25lZC1vZmYtYnk6IFNvdXJhYiBHdXB0YSA8c291cmFiLmd1cHRhQGludGVsLmNvbT4K U2lnbmVkLW9mZi1ieTogU3dhdGkgRGhpbmdyYSA8c3dhdGkuZGhpbmdyYUBpbnRlbC5jb20+Ci0t LQogRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXVhcGkucnN0IHwgIDc2ICsrKysrKwogZHJpdmVycy9n cHUvZHJtL0tjb25maWcgICAgICAgIHwgICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAg ICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vZHJtZnMuYyAgICAgICAgfCA1NjYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvZHJtL2RybWZzLmgg ICAgICAgICAgICB8ICA3NyArKysrKysKIGluY2x1ZGUvdWFwaS9saW51eC9tYWdpYy5oICAgICB8 ICAgMyArCiA2IGZpbGVzIGNoYW5nZWQsIDczMiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL2RybWZzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl L2RybS9kcm1mcy5oCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXVhcGkucnN0 IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLXVhcGkucnN0CmluZGV4IGRlM2FjOWYuLmJlOTU0MGMg MTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS11YXBpLnJzdAorKysgYi9Eb2N1bWVu dGF0aW9uL2dwdS9kcm0tdWFwaS5yc3QKQEAgLTIyMiwzICsyMjIsNzkgQEAgVGVzdGluZyBhbmQg dmFsaWRhdGlvbgogCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9kZWJ1Z2Zz X2NyYy5jCiAgICA6ZG9jOiBDUkMgQUJJCisKK0RSTUZTCis9PT09PQorCitPdmVydmlldworLS0t LS0tLS0KKworRHJtZnMgaXMgc3RhYmxlIEFCSSBmb3IgaG91c2luZyBkYXRhIGdlbmVyYXRlZCBi eSBkcm0gc3Vic3lzdGVtIGNvbXBvbmVudHMuCisKK1RoZSBBQkkgaW4gY3VycmVudCB1c2UgKGRl YnVnZnMvc3lzZnMvaW9jdGxzKSBoYXZlIHRoZWlyIG93biBjb25zdHJhaW50cyBhbmQKK2FyZSBk ZXNpZ25lZCB0byBvdXRwdXQgdGhlaXIgb3duIHBhcnRpY3VsYXIgZGF0YSB0eXBlcy4KKworRmV3 IGNhc2VzIGluIHBvaW50OjoKKworICAgICAgIHN5c2ZzICAgLSBzdGFibGUgQUJJLCBidXQgY29u c3RyYWluZWQgdG8gb25lIHRleHR1YWwgdmFsdWUgcGVyIGZpbGUKKyAgICAgICBkZWJ1Z2ZzIC0g dW5zdGFibGUgQUJJLCBmcmVlLWZvci1hbGwKKyAgICAgICBpb2N0bHMgIC0gbm90IGFzIHN1aXRh YmxlIHRvIG1hbnkgc2luZ2xlIHB1cnBvc2UgY29udGludW91cyBkYXRhCisgICAgICAgICAgICAg ICAgIGR1bXBpbmcsIHdlIHdvdWxkIHZlcnkgcXVpY2tseSBydW4gb3V0IGlvY3RsIHNwYWNlOyBy ZXF1aXJlCisgICAgICAgICAgICAgICAgIG1vcmUgdXNlcnNwYWNlIHN1cHBvcnQgdGhhbiAiY2F0 IgorICAgICAgIGRldmljZSBub2RlcyAtICBhIHJlYWwgcG9zc2liaWx0eSwga2VybmVsIGluc3Rh bnRpYXRpb24gaXMgbW9yZSB0cmlja3ksCisgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVz IHVkZXYgKCt1ZGV2LnJ1bGVzKSBvciB1c2Vyc3BhY2UgZGlzY292ZXJ5IG9mCisgICAgICAgICAg ICAgICAgICAgICAgIHRoZSBkeW5hbWljIG1ham9yOm1pbm9yICh2aWEgc3lzZnMpIFttb3VudGlu ZyBhCisgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyZWQgZmlsZXN5c3RlbSBpcyBlYXN5 IGluIGNvbXBhcmlzb25dCisgICAgICAgbmV0bGluayAtIHN0cmVhbSBiYXNlZCwgdGhlcmVmb3Jl IGludm9sdmVzIG51bWVyb3VzIGNvcGllcworCitEZWJ1Z2ZzIGlzIHRoZSBsZXNzZXIgYW1vbmcg dGhlIGV2aWxzIGhlcmUsIHRoZXJlYnkgd2UgaGF2ZSBncm93biB1c2VkIHRvIHRoZQorY29udmVu aWVuY2UgYW5kIGZsZXhpYmlsaXR5IGluIHByZXNlbnRhdGlvbiB0aGF0IGRlYnVnZnMgZ2l2ZXMg dXMgKGluY2x1ZGluZworcmVsYXlmcyBpbm9kZXMpIHRoYXQgd2Ugd2FudCBzb21lIG9mIHRoYXQg aGllcmFyY2h5IGluIHN0YWJsZSB1c2VyIEFCSSBmb3JtLgorCitEdWUgdG8gdGhlc2UgbGltaXRh dGlvbnMsIGEgbmV3IHBzZXVkbyBmaWxlc3l0ZW0gaXMgbmVlZGVkIHRoYXQgd291bGQgYWN0IGFz IGEKK3N0YWJsZSDigJhmcmVlLWZvci1hbGzigJkgQUJJLCB3aXRoIHRoZSBoZWlyYXJjaGlhbCBz dHJ1Y3R1cmUgYW5kIHRodXMgcHJvdmlkZQorY29udmVuaWVuY2Ugb2YgZGVidWdmcy4gVGhpcyB0 byBiZSBtYW5hZ2VkIGJ5IGRybSwgdGh1cyBuYW1lZCAqKmRybWZzKiouIFRoZQorZmlsZXN5c3Rl bSBpcyBtb2RlbGxlZCBvbiB0aGUgbGluZXMgb2YgZXhpc3RpbmcgcHNldWRvLWZpbGVzeXN0ZW1z IHN1Y2ggYXMKK2RlYnVnZnMvdHJhY2VmcywgYW5kIGJvcnJvd3MgaWRlYXMgZnJvbSB0aGVpciBp bXBsZW1lbnRhdGlvbi4gRFJNIHdvdWxkIHJlZ2lzdGVyCit0aGlzIGZpbGVzeXN0ZW0gdG8gbWFu YWdlIGEgY2Fub25pY2FsIG1vdW50cG9pbnQsIGJ1dCB0aGlzIHdvdWxkbuKAmXQgbGltaXQKK2V2 ZXJ5b25lIHRvIG9ubHkgdXNlIHRoYXQgcHNldWRvZnMgdW5kZXJuZWF0aC4KKworT25lIG9mIHRo ZSB1c2VjYXNlIGlzIHRvIGhvbGQgdGhlIEd1QyAobWljcm8tY29udHJvbGxlcikgbG9ncy5DdXJy ZW50bHksIHJlbGF5ZnMKK2lzIGJlaW5nIHVzZWQgdG8gcHJvdmlkZSB0aGVzZSBsb2dzIHRvIHVz ZXJzcGFjZS4gUmVsYXlmcyBuZWVkcyBhIHBhcmVudCBkZW50cnkKK3RvIGJlIGFzc29jaWF0ZWQg d2l0aCBsb2cgZmlsZSwgYW5kIGFsc28gdGhlc2UgbG9ncyBzaG91bGQgYmUgYXZhaWxhYmxlIGlu IAorcHJvZHVjdGlvbiBrZXJuZWxzLiBJbiBhYnNlbmNlIG9mIGFueSBvdGhlciBzdWl0YWJsZSBj YW5kaWRhdGUsIGRlYnVnZnMgaXMgdXNlZCAKK2N1cnJlbnRseSwgc2luY2UgaXQgcHJvdmlkZXMg dGhlIGhpZXJhcmNoaWFsIFZGUyBzdHJ1Y3R1cmVzIGF2YWlsYWJsZSAoZGVudHJ5IGV0IGFsLiku CitJbnN0ZWFkLCBkcm1mcyBwcm92aWRlcyBhIHN1aXRhYmxlIHN0YWJsZSBBQkkgZm9yIEd1QyBs b2dzLCB3aGljaCBpcyBtb2RlbGxlZCBvbgordGhlIGxpbmVzIG9mIGRlYnVnZnMgYnV0IGNvbnRy b2xsZWQgZnVsbHkgYnkgZHJtLgorCitUaGlzIGNhbiBzZXJ2ZSB0byBob2xkIHZhcmlvdXMga2lu ZHMgb2Ygb3V0cHV0IGRhdGEgZnJvbSBMaW51eCBEUk0gc3Vic3lzdGVtcywKK2ZvciB0aGUgZmls ZXMgd2hpY2ggY2Fu4oCZdCB0cnVseSBmaXQgYW55d2hlcmUgZWxzZSB3aXRoIGV4aXN0aW5nIEFC SeKAmXMgYnV0IHByZXNlbnQKK3NvLCBmb3IgdGhlIGxhY2sgb2YgYSBiZXR0ZXIgcGxhY2UuIEZv ciBlLmcuIGk5MTUgR3VDIGxvZ3MsIHBpcGVfY3JjLCBlcnJvcgorc3RhdGVzLCBtZW1vcnkgc3Rh dHMuCisKK0ludGVyZmFjZXMKKy0tLS0tLS0tLS0KKworVGhpcyBzZWN0aW9uIGNvdmVycyB0aGUg aW5mcmFzdHJ1Y3R1cmUgb2YgZHJtZnMgcHNldWRvIGZpbGVzeXN0ZW0uIEl0IGludHJvZHVjZXMK K2ludGVyZmFjZXMgdG8gY3JlYXRlL3JlbW92ZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMuCisKKy4u IGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtZnMuYworICAgOmZ1bmN0aW9uczogZHJt ZnNfY3JlYXRlX2ZpbGUKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1mcy5j CisgICA6ZnVuY3Rpb25zOiBkcm1mc19jcmVhdGVfZGlyCisKKy4uIGtlcm5lbC1kb2M6OiBkcml2 ZXJzL2dwdS9kcm0vZHJtZnMuYworICAgOmZ1bmN0aW9uczogZHJtZnNfcmVtb3ZlCisKKy4uIGtl cm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtZnMuYworICAgOmZ1bmN0aW9uczo6IGRybWZz X3JlbW92ZV9yZWN1cnNpdmUKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1m cy5jCisgICA6ZnVuY3Rpb25zOjogZHJtZnNfaW5pdGlhbGl6ZWQKKworLi4ga2VybmVsLWRvYzo6 IGRyaXZlcnMvZ3B1L2RybS9kcm1mcy5jCisgICA6ZnVuY3Rpb25zOjogZHJtZnNfaW5pdAorCisu LiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybWZzLmMKKyAgIDpmdW5jdGlvbnM6OiBk cm1mc19maW5pCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMv Z3B1L2RybS9LY29uZmlnCmluZGV4IDk1ZmMwNDEuLjUwODI4NDAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9LY29uZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC0yNiw2 ICsyNiwxNSBAQCBjb25maWcgRFJNX01JUElfRFNJCiAJYm9vbAogCWRlcGVuZHMgb24gRFJNCiAK K2NvbmZpZyBEUk1GUworCWJvb2wgIkRybWZzIGZpbGUgc3lzdGVtIHN1cHBvcnQiCisJZGVwZW5k cyBvbiBEUk0KKwloZWxwCisJICBEcm1mcyBpcyBhIHBzZXVkbyBmaWxlIHN5c3RlbSBmb3IgZHJt IHN1YnN5c3RlbSBvdXRwdXQgZGF0YS4KKworCSAgZHJtZnMgaXMgYSBmaWxlc3lzdGVtIHdoaWNo IHNlcnZlcyBhcyBhIHN0YWJsZSBBQkkgdG8gaG9sZAorCSAgbWlzY2VsbGFuZW91cyBvdXRwdXQg ZGF0YSBmcm9tIGRybSBzdWJzeXN0ZW1zLgorCiBjb25maWcgRFJNX0RQX0FVWF9DSEFSREVWCiAJ Ym9vbCAiRFJNIERQIEFVWCBJbnRlcmZhY2UiCiAJZGVwZW5kcyBvbiBEUk0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRl eCA4ODNmM2U3Li41MDIxMjI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUK KysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC00Miw2ICs0Miw3IEBAIENGTEFHU19k cm1fdHJhY2VfcG9pbnRzLm8gOj0gLUkkKHNyYykKIAogb2JqLSQoQ09ORklHX0RSTSkJKz0gZHJt Lm8KIG9iai0kKENPTkZJR19EUk1fTUlQSV9EU0kpICs9IGRybV9taXBpX2RzaS5vCitvYmotJChD T05GSUdfRFJNRlMpCSs9IGRybWZzLm8KIG9iai0kKENPTkZJR19EUk1fQVJNKQkrPSBhcm0vCiBv YmotJChDT05GSUdfRFJNX1RUTSkJKz0gdHRtLwogb2JqLSQoQ09ORklHX0RSTV9UREZYKQkrPSB0 ZGZ4LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybWZzLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtZnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmNmNzYxCi0t LSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybWZzLmMKQEAgLTAsMCArMSw1NjYg QEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBl cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u IG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9j dW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgor ICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3Ry aWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5p c2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgor ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisg KgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJ TUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFO IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICoJ U3dhdGkgRGhpbmdyYSA8c3dhdGkuZGhpbmdyYUBpbnRlbC5jb20+CisgKglTb3VyYWIgR3VwdGEg PHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+CisgKglBa2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVs LmNvbT4KKyAqLworCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgv ZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9tb3VudC5oPgorI2luY2x1ZGUgPGxpbnV4L2tvYmplY3Qu aD4KKyNpbmNsdWRlIDxsaW51eC9uYW1laS5oPgorI2luY2x1ZGUgPGRybS9kcm1mcy5oPgorI2lu Y2x1ZGUgPGxpbnV4L2Zzbm90aWZ5Lmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNp bmNsdWRlIDxsaW51eC9wYXJzZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9tYWdpYy5oPgorI2luY2x1 ZGUgPGxpbnV4L3NsYWIuaD4KKworI2RlZmluZSBEUk1GU19ERUZBVUxUX01PREUJMDcwMAorCitz dGF0aWMgc3RydWN0IHZmc21vdW50ICpkcm1mc19tb3VudDsKK3N0YXRpYyBpbnQgZHJtZnNfbW91 bnRfY291bnQ7CitzdGF0aWMgYm9vbCBkcm1mc19yZWdpc3RlcmVkOworCitzdGF0aWMgc3NpemVf dCBkZWZhdWx0X3JlYWRfZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1ZiwK KwkJCQlzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcykKK3sKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHNzaXplX3QgZGVmYXVsdF93cml0ZV9maWxlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBj aGFyIF9fdXNlciAqYnVmLAorCQkJCXNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKQoreworCXJl dHVybiBjb3VudDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHJt ZnNfZGVmYXVsdF9maWxlX29wZXJhdGlvbnMgPSB7CisJLnJlYWQgPQkJZGVmYXVsdF9yZWFkX2Zp bGUsCisJLndyaXRlID0JZGVmYXVsdF93cml0ZV9maWxlLAorCS5vcGVuID0JCXNpbXBsZV9vcGVu LAorCS5sbHNlZWsgPQlub29wX2xsc2VlaywKK307CisKK3N0YXRpYyBzdHJ1Y3QgaW5vZGUgKmRy bWZzX2dldF9pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKQoreworCXN0cnVjdCBpbm9kZSAq aW5vZGUgPSBuZXdfaW5vZGUoc2IpOworCisJaWYgKGlub2RlKSB7CisJCWlub2RlLT5pX2lubyA9 IGdldF9uZXh0X2lubygpOworCQlpbm9kZS0+aV9hdGltZSA9IGlub2RlLT5pX210aW1lID0gaW5v ZGUtPmlfY3RpbWUgPSBDVVJSRU5UX1RJTUU7CisJfQorCXJldHVybiBpbm9kZTsKK30KKworc3Ry dWN0IGRybWZzX21vdW50X29wdHMgeworCWt1aWRfdCB1aWQ7CisJa2dpZF90IGdpZDsKKwl1bW9k ZV90IG1vZGU7Cit9OworCitlbnVtIHsKKwlPcHRfdWlkLAorCU9wdF9naWQsCisJT3B0X21vZGUs CisJT3B0X2VycgorfTsKKworc3RhdGljIGNvbnN0IG1hdGNoX3RhYmxlX3QgdG9rZW5zID0gewor CXtPcHRfdWlkLCAidWlkPSV1In0sCisJe09wdF9naWQsICJnaWQ9JXUifSwKKwl7T3B0X21vZGUs ICJtb2RlPSVvIn0sCisJe09wdF9lcnIsIE5VTEx9Cit9OworCitzdHJ1Y3QgZHJtZnNfZnNfaW5m byB7CisJc3RydWN0IGRybWZzX21vdW50X29wdHMgbW91bnRfb3B0czsKK307CisKK3N0YXRpYyBp bnQgZHJtZnNfcGFyc2Vfb3B0aW9ucyhjaGFyICpkYXRhLCBzdHJ1Y3QgZHJtZnNfbW91bnRfb3B0 cyAqb3B0cykKK3sKKwlzdWJzdHJpbmdfdCBhcmdzW01BWF9PUFRfQVJHU107CisJaW50IG9wdGlv bjsKKwlpbnQgdG9rZW47CisJa3VpZF90IHVpZDsKKwlrZ2lkX3QgZ2lkOworCWNoYXIgKnA7CisK KwlvcHRzLT5tb2RlID0gRFJNRlNfREVGQVVMVF9NT0RFOworCisJd2hpbGUgKChwID0gc3Ryc2Vw KCZkYXRhLCAiLCIpKSAhPSBOVUxMKSB7CisJCWlmICghKnApCisJCQljb250aW51ZTsKKworCQl0 b2tlbiA9IG1hdGNoX3Rva2VuKHAsIHRva2VucywgYXJncyk7CisJCXN3aXRjaCAodG9rZW4pIHsK KwkJY2FzZSBPcHRfdWlkOgorCQkJaWYgKG1hdGNoX2ludCgmYXJnc1swXSwgJm9wdGlvbikpCisJ CQkJcmV0dXJuIC1FSU5WQUw7CisJCQl1aWQgPSBtYWtlX2t1aWQoY3VycmVudF91c2VyX25zKCks IG9wdGlvbik7CisJCQlpZiAoIXVpZF92YWxpZCh1aWQpKQorCQkJCXJldHVybiAtRUlOVkFMOwor CQkJb3B0cy0+dWlkID0gdWlkOworCQkJYnJlYWs7CisJCWNhc2UgT3B0X2dpZDoKKwkJCWlmICht YXRjaF9pbnQoJmFyZ3NbMF0sICZvcHRpb24pKQorCQkJCXJldHVybiAtRUlOVkFMOworCQkJZ2lk ID0gbWFrZV9rZ2lkKGN1cnJlbnRfdXNlcl9ucygpLCBvcHRpb24pOworCQkJaWYgKCFnaWRfdmFs aWQoZ2lkKSkKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCW9wdHMtPmdpZCA9IGdpZDsKKwkJCWJy ZWFrOworCQljYXNlIE9wdF9tb2RlOgorCQkJaWYgKG1hdGNoX29jdGFsKCZhcmdzWzBdLCAmb3B0 aW9uKSkKKwkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCW9wdHMtPm1vZGUgPSBvcHRpb24gJiBTX0lB TExVR087CisJCQlicmVhazsKKwkJLyoKKwkJICogV2UgbWlnaHQgbGlrZSB0byByZXBvcnQgYmFk IG1vdW50IG9wdGlvbnMgaGVyZQorCQkgKi8KKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGRybWZzX2FwcGx5X29wdGlvbnMoc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKK3sK KwlzdHJ1Y3QgZHJtZnNfZnNfaW5mbyAqZnNpID0gc2ItPnNfZnNfaW5mbzsKKwlzdHJ1Y3QgaW5v ZGUgKmlub2RlID0gc2ItPnNfcm9vdC0+ZF9pbm9kZTsKKwlzdHJ1Y3QgZHJtZnNfbW91bnRfb3B0 cyAqb3B0cyA9ICZmc2ktPm1vdW50X29wdHM7CisKKwlpbm9kZS0+aV9tb2RlICY9IH5TX0lBTExV R087CisJaW5vZGUtPmlfbW9kZSB8PSBvcHRzLT5tb2RlOworCisJaW5vZGUtPmlfdWlkID0gb3B0 cy0+dWlkOworCWlub2RlLT5pX2dpZCA9IG9wdHMtPmdpZDsKKworCXJldHVybiAwOworfQorCitz dGF0aWMgaW50IGRybWZzX3JlbW91bnQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50ICpmbGFn cywgY2hhciAqZGF0YSkKK3sKKwlpbnQgZXJyOworCXN0cnVjdCBkcm1mc19mc19pbmZvICpmc2kg PSBzYi0+c19mc19pbmZvOworCisJc3luY19maWxlc3lzdGVtKHNiKTsKKwllcnIgPSBkcm1mc19w YXJzZV9vcHRpb25zKGRhdGEsICZmc2ktPm1vdW50X29wdHMpOworCWlmIChlcnIpCisJCWdvdG8g ZmFpbDsKKworCWRybWZzX2FwcGx5X29wdGlvbnMoc2IpOworCitmYWlsOgorCXJldHVybiBlcnI7 Cit9CisKK3N0YXRpYyBpbnQgZHJtZnNfc2hvd19vcHRpb25zKHN0cnVjdCBzZXFfZmlsZSAqbSwg c3RydWN0IGRlbnRyeSAqcm9vdCkKK3sKKwlzdHJ1Y3QgZHJtZnNfZnNfaW5mbyAqZnNpID0gcm9v dC0+ZF9zYi0+c19mc19pbmZvOworCXN0cnVjdCBkcm1mc19tb3VudF9vcHRzICpvcHRzID0gJmZz aS0+bW91bnRfb3B0czsKKworCWlmICghdWlkX2VxKG9wdHMtPnVpZCwgR0xPQkFMX1JPT1RfVUlE KSkKKwkJc2VxX3ByaW50ZihtLCAiLHVpZD0ldSIsCisJCQkgICBmcm9tX2t1aWRfbXVuZ2VkKCZp bml0X3VzZXJfbnMsIG9wdHMtPnVpZCkpOworCWlmICghZ2lkX2VxKG9wdHMtPmdpZCwgR0xPQkFM X1JPT1RfR0lEKSkKKwkJc2VxX3ByaW50ZihtLCAiLGdpZD0ldSIsCisJCQkgICBmcm9tX2tnaWRf bXVuZ2VkKCZpbml0X3VzZXJfbnMsIG9wdHMtPmdpZCkpOworCWlmIChvcHRzLT5tb2RlICE9IERS TUZTX0RFRkFVTFRfTU9ERSkKKwkJc2VxX3ByaW50ZihtLCAiLG1vZGU9JW8iLCBvcHRzLT5tb2Rl KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHN1cGVyX29wZXJhdGlv bnMgZHJtZnNfc3VwZXJfb3BlcmF0aW9ucyA9IHsKKwkuc3RhdGZzCQk9IHNpbXBsZV9zdGF0ZnMs CisJLnJlbW91bnRfZnMJPSBkcm1mc19yZW1vdW50LAorCS5zaG93X29wdGlvbnMJPSBkcm1mc19z aG93X29wdGlvbnMsCit9OworCitzdGF0aWMgaW50IGRybV9maWxsX3N1cGVyKHN0cnVjdCBzdXBl cl9ibG9jayAqc2IsIHZvaWQgKmRhdGEsIGludCBzaWxlbnQpCit7CisJc3RhdGljIHN0cnVjdCB0 cmVlX2Rlc2NyIGRybV9maWxlc1tdID0geyB7IiJ9IH07CisJc3RydWN0IGRybWZzX2ZzX2luZm8g KmZzaTsKKwlpbnQgZXJyOworCisJc2F2ZV9tb3VudF9vcHRpb25zKHNiLCBkYXRhKTsKKworCWZz aSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1mc19mc19pbmZvKSwgR0ZQX0tFUk5FTCk7CisJ c2ItPnNfZnNfaW5mbyA9IGZzaTsKKwlpZiAoIWZzaSkgeworCQllcnIgPSAtRU5PTUVNOworCQln b3RvIGZhaWw7CisJfQorCisJZXJyID0gZHJtZnNfcGFyc2Vfb3B0aW9ucyhkYXRhLCAmZnNpLT5t b3VudF9vcHRzKTsKKwlpZiAoZXJyKQorCQlnb3RvIGZhaWw7CisKKwllcnIgID0gIHNpbXBsZV9m aWxsX3N1cGVyKHNiLCBEUk1GU19NQUdJQywgZHJtX2ZpbGVzKTsKKwlpZiAoZXJyKQorCQlnb3Rv IGZhaWw7CisKKwlzYi0+c19vcCA9ICZkcm1mc19zdXBlcl9vcGVyYXRpb25zOworCisJZHJtZnNf YXBwbHlfb3B0aW9ucyhzYik7CisKKwlyZXR1cm4gMDsKKworZmFpbDoKKwlrZnJlZShmc2kpOwor CXNiLT5zX2ZzX2luZm8gPSBOVUxMOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg ZGVudHJ5ICpkcm1fbW91bnQoc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgKmZzX3R5cGUsCisJCQlp bnQgZmxhZ3MsIGNvbnN0IGNoYXIgKmRldl9uYW1lLAorCQkJdm9pZCAqZGF0YSkKK3sKKwlyZXR1 cm4gbW91bnRfc2luZ2xlKGZzX3R5cGUsIGZsYWdzLCBkYXRhLCBkcm1fZmlsbF9zdXBlcik7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBkcm1fZnNfdHlwZSA9IHsKKwkub3du ZXIgPQlUSElTX01PRFVMRSwKKwkubmFtZSA9CQkiZHJtZnMiLAorCS5tb3VudCA9CWRybV9tb3Vu dCwKKwkua2lsbF9zYiA9CWtpbGxfbGl0dGVyX3N1cGVyLAorfTsKK01PRFVMRV9BTElBU19GUygi ZHJtZnMiKTsKKworc3RhdGljIHN0cnVjdCBkZW50cnkgKnN0YXJ0X2NyZWF0aW5nKGNvbnN0IGNo YXIgKm5hbWUsIHN0cnVjdCBkZW50cnkgKnBhcmVudCkKK3sKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50 cnk7CisJaW50IGVycm9yOworCisJcHJfZGVidWcoImRybWZzOiBjcmVhdGluZyBmaWxlICclcydc biIsIG5hbWUpOworCisJZXJyb3IgPSBzaW1wbGVfcGluX2ZzKCZkcm1fZnNfdHlwZSwgJmRybWZz X21vdW50LAorCQkJICAgICAgJmRybWZzX21vdW50X2NvdW50KTsKKwlpZiAoZXJyb3IpCisJCXJl dHVybiBFUlJfUFRSKGVycm9yKTsKKworCS8qIElmIHRoZSBwYXJlbnQgaXMgbm90IHNwZWNpZmll ZCwgd2UgY3JlYXRlIGl0IGluIHRoZSByb290LgorCSAqIFdlIG5lZWQgdGhlIHJvb3QgZGVudHJ5 IHRvIGRvIHRoaXMsIHdoaWNoIGlzIGluIHRoZSBzdXBlcgorCSAqIGJsb2NrLiBBIHBvaW50ZXIg dG8gdGhhdCBpcyBpbiB0aGUgc3RydWN0IHZmc21vdW50IHRoYXQgd2UKKwkgKiBoYXZlIGFyb3Vu ZC4KKwkgKi8KKwlpZiAoIXBhcmVudCkKKwkJcGFyZW50ID0gZHJtZnNfbW91bnQtPm1udF9yb290 OworCisJaW5vZGVfbG9jayhwYXJlbnQtPmRfaW5vZGUpOworCWRlbnRyeSA9IGxvb2t1cF9vbmVf bGVuKG5hbWUsIHBhcmVudCwgc3RybGVuKG5hbWUpKTsKKwlpZiAoIUlTX0VSUihkZW50cnkpICYm IGRlbnRyeS0+ZF9pbm9kZSkgeworCQlkcHV0KGRlbnRyeSk7CisJCWRlbnRyeSA9IEVSUl9QVFIo LUVFWElTVCk7CisJfQorCisJaWYgKElTX0VSUihkZW50cnkpKSB7CisJCWlub2RlX3VubG9jayhw YXJlbnQtPmRfaW5vZGUpOworCQlzaW1wbGVfcmVsZWFzZV9mcygmZHJtZnNfbW91bnQsICZkcm1m c19tb3VudF9jb3VudCk7CisJfQorCisJcmV0dXJuIGRlbnRyeTsKK30KKworc3RhdGljIHN0cnVj dCBkZW50cnkgKmZhaWxlZF9jcmVhdGluZyhzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpCit7CisJaW5v ZGVfdW5sb2NrKGRlbnRyeS0+ZF9wYXJlbnQtPmRfaW5vZGUpOworCWRwdXQoZGVudHJ5KTsKKwlz aW1wbGVfcmVsZWFzZV9mcygmZHJtZnNfbW91bnQsICZkcm1mc19tb3VudF9jb3VudCk7CisJcmV0 dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICplbmRfY3JlYXRpbmcoc3RydWN0 IGRlbnRyeSAqZGVudHJ5KQoreworCWlub2RlX3VubG9jayhkZW50cnktPmRfcGFyZW50LT5kX2lu b2RlKTsKKwlyZXR1cm4gZGVudHJ5OworfQorCisvKioKKyAqIGRybWZzX2NyZWF0ZV9maWxlIC0g Y3JlYXRlIGEgZmlsZSBpbiB0aGUgZHJtZnMgZmlsZXN5c3RlbQorICogQG5hbWU6IGEgcG9pbnRl ciB0byBhIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIGNyZWF0ZS4K KyAqIEBtb2RlOiB0aGUgcGVybWlzc2lvbiB0aGF0IHRoZSBmaWxlIHNob3VsZCBoYXZlLgorICog QHBhcmVudDogYSBwb2ludGVyIHRvIHRoZSBwYXJlbnQgZGVudHJ5IGZvciB0aGlzIGZpbGUuICBU aGlzIHNob3VsZCBiZSBhCisgKiAgICAgICAgICBkaXJlY3RvcnkgZGVudHJ5IGlmIHNldC4gIElm IHRoaXMgcGFyYW1ldGVyIGlzIE5VTEwsIHRoZW4gdGhlCisgKiAgICAgICAgICBmaWxlIHdpbGwg YmUgY3JlYXRlZCBpbiB0aGUgcm9vdCBvZiB0aGUgZHJtZnMgZmlsZXN5c3RlbS4KKyAqIEBkYXRh OiBhIHBvaW50ZXIgdG8gc29tZXRoaW5nIHRoYXQgdGhlIGNhbGxlciB3aWxsIHdhbnQgdG8gZ2V0 IHRvIGxhdGVyCisgKiAgICAgICAgb24uICBUaGUgaW5vZGUuaV9wcml2YXRlIHBvaW50ZXIgd2ls bCBwb2ludCB0byB0aGlzIHZhbHVlIG9uCisgKiAgICAgICAgdGhlIG9wZW4oKSBjYWxsLgorICog QGZvcHM6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdGhhdCBzaG91bGQg YmUgdXNlZCBmb3IKKyAqICAgICAgICB0aGlzIGZpbGUuCisgKgorICogVGhpcyBpcyB0aGUgYmFz aWMgImNyZWF0ZSBhIGZpbGUiIGZ1bmN0aW9uIGZvciBkcm1mcy4gIEl0IGFsbG93cyBmb3IgYQor ICogd2lkZSByYW5nZSBvZiBmbGV4aWJpbGl0eSBpbiBjcmVhdGluZyBhIGZpbGUsIG9yIGEgZGly ZWN0b3J5IChpZiB5b3Ugd2FudAorICogdG8gY3JlYXRlIGEgZGlyZWN0b3J5LCB0aGUgZHJtZnNf Y3JlYXRlX2RpcigpIGZ1bmN0aW9uIGlzCisgKiByZWNvbW1lbmRlZCB0byBiZSB1c2VkIGluc3Rl YWQuKQorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYSBwb2ludGVyIHRvIGEgZGVu dHJ5IGlmIGl0IHN1Y2NlZWRzLiAgVGhpcworICogcG9pbnRlciBtdXN0IGJlIHBhc3NlZCB0byB0 aGUgZHJtZnNfcmVtb3ZlKCkgZnVuY3Rpb24gd2hlbiB0aGUgZmlsZSBpcworICogdG8gYmUgcmVt b3ZlZCAobm8gYXV0b21hdGljIGNsZWFudXAgaGFwcGVucyBpZiB5b3VyIG1vZHVsZSBpcyB1bmxv YWRlZCwKKyAqIHlvdSBhcmUgcmVzcG9uc2libGUgaGVyZS4pICBJZiBhbiBlcnJvciBvY2N1cnMs ICVOVUxMIHdpbGwgYmUgcmV0dXJuZWQuCisgKgorICovCitzdHJ1Y3QgZGVudHJ5ICpkcm1mc19j cmVhdGVfZmlsZShjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCisJCQkJICAgc3RydWN0 IGRlbnRyeSAqcGFyZW50LCB2b2lkICpkYXRhLAorCQkJCSAgIGNvbnN0IHN0cnVjdCBmaWxlX29w ZXJhdGlvbnMgKmZvcHMpCit7CisJc3RydWN0IGRlbnRyeSAqZGVudHJ5OworCXN0cnVjdCBpbm9k ZSAqaW5vZGU7CisKKwlpZiAoIShtb2RlICYgU19JRk1UKSkKKwkJbW9kZSB8PSBTX0lGUkVHOwor CisJaWYgKFdBUk5fT04oIVNfSVNSRUcobW9kZSkpKQorCQlyZXR1cm4gTlVMTDsKKworCWRlbnRy eSA9IHN0YXJ0X2NyZWF0aW5nKG5hbWUsIHBhcmVudCk7CisKKwlpZiAoSVNfRVJSKGRlbnRyeSkp CisJCXJldHVybiBOVUxMOworCisJaW5vZGUgPSBkcm1mc19nZXRfaW5vZGUoZGVudHJ5LT5kX3Ni KTsKKwlpZiAodW5saWtlbHkoIWlub2RlKSkKKwkJcmV0dXJuIGZhaWxlZF9jcmVhdGluZyhkZW50 cnkpOworCisJaW5vZGUtPmlfbW9kZSA9IG1vZGU7CisJaW5vZGUtPmlfZm9wID0gZm9wcyA/IGZv cHMgOiAmZHJtZnNfZGVmYXVsdF9maWxlX29wZXJhdGlvbnM7CisJaW5vZGUtPmlfcHJpdmF0ZSA9 IGRhdGE7CisJZF9pbnN0YW50aWF0ZShkZW50cnksIGlub2RlKTsKKwlmc25vdGlmeV9jcmVhdGUo ZGVudHJ5LT5kX3BhcmVudC0+ZF9pbm9kZSwgZGVudHJ5KTsKKwlyZXR1cm4gZW5kX2NyZWF0aW5n KGRlbnRyeSk7Cit9CitFWFBPUlRfU1lNQk9MKGRybWZzX2NyZWF0ZV9maWxlKTsKKworc3RhdGlj IHN0cnVjdCBkZW50cnkgKl9fY3JlYXRlX2Rpcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZGVu dHJ5ICpwYXJlbnQsCisJCQkJICAgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgKm9wcykK K3sKKwlzdHJ1Y3QgZGVudHJ5ICpkZW50cnkgPSBzdGFydF9jcmVhdGluZyhuYW1lLCBwYXJlbnQp OworCXN0cnVjdCBpbm9kZSAqaW5vZGU7CisKKwlpZiAoSVNfRVJSKGRlbnRyeSkpCisJCXJldHVy biBOVUxMOworCisJaW5vZGUgPSBkcm1mc19nZXRfaW5vZGUoZGVudHJ5LT5kX3NiKTsKKwlpZiAo dW5saWtlbHkoIWlub2RlKSkKKwkJcmV0dXJuIGZhaWxlZF9jcmVhdGluZyhkZW50cnkpOworCisJ aW5vZGUtPmlfbW9kZSA9IFNfSUZESVIgfCBTX0lSV1hVIHwgU19JUlVHTyB8IFNfSVhVR087CisJ aW5vZGUtPmlfb3AgPSBvcHM7CisJaW5vZGUtPmlfZm9wID0gJnNpbXBsZV9kaXJfb3BlcmF0aW9u czsKKworCS8qIGRpcmVjdG9yeSBpbm9kZXMgc3RhcnQgb2ZmIHdpdGggaV9ubGluayA9PSAyIChm b3IgIi4iIGVudHJ5KSAqLworCWluY19ubGluayhpbm9kZSk7CisJZF9pbnN0YW50aWF0ZShkZW50 cnksIGlub2RlKTsKKwlpbmNfbmxpbmsoZGVudHJ5LT5kX3BhcmVudC0+ZF9pbm9kZSk7CisJZnNu b3RpZnlfbWtkaXIoZGVudHJ5LT5kX3BhcmVudC0+ZF9pbm9kZSwgZGVudHJ5KTsKKwlyZXR1cm4g ZW5kX2NyZWF0aW5nKGRlbnRyeSk7Cit9CisKKy8qKgorICogZHJtZnNfY3JlYXRlX2RpciAtIGNy ZWF0ZSBhIGRpcmVjdG9yeSBpbiB0aGUgZHJtZnMgZmlsZXN5c3RlbQorICogQG5hbWU6IGEgcG9p bnRlciB0byBhIHN0cmluZyBjb250YWluaW5nIHRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdG8K KyAqICAgICAgICBjcmVhdGUuCisgKiBAcGFyZW50OiBhIHBvaW50ZXIgdG8gdGhlIHBhcmVudCBk ZW50cnkgZm9yIHRoaXMgZmlsZS4gIFRoaXMgc2hvdWxkIGJlIGEKKyAqICAgICAgICAgIGRpcmVj dG9yeSBkZW50cnkgaWYgc2V0LiAgSWYgdGhpcyBwYXJhbWV0ZXIgaXMgTlVMTCwgdGhlbiB0aGUK KyAqICAgICAgICAgIGRpcmVjdG9yeSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIHJvb3Qgb2YgdGhl IGRybWZzIGZpbGVzeXN0ZW0uCisgKgorICogVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGEgZGlyZWN0 b3J5IGluIGRybWZzIHdpdGggdGhlIGdpdmVuIG5hbWUuCisgKgorICogVGhpcyBmdW5jdGlvbiB3 aWxsIHJldHVybiBhIHBvaW50ZXIgdG8gYSBkZW50cnkgaWYgaXQgc3VjY2VlZHMuICBUaGlzCisg KiBwb2ludGVyIG11c3QgYmUgcGFzc2VkIHRvIHRoZSBkcm1mc19yZW1vdmUoKSBmdW5jdGlvbiB3 aGVuIHRoZSBmaWxlIGlzCisgKiB0byBiZSByZW1vdmVkLiBJZiBhbiBlcnJvciBvY2N1cnMsICVO VUxMIHdpbGwgYmUgcmV0dXJuZWQuCisgKgorICovCitzdHJ1Y3QgZGVudHJ5ICpkcm1mc19jcmVh dGVfZGlyKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBkZW50cnkgKnBhcmVudCkKK3sKKwlyZXR1 cm4gX19jcmVhdGVfZGlyKG5hbWUsIHBhcmVudCwgJnNpbXBsZV9kaXJfaW5vZGVfb3BlcmF0aW9u cyk7Cit9CitFWFBPUlRfU1lNQk9MKGRybWZzX2NyZWF0ZV9kaXIpOworCitzdGF0aWMgaW50IF9f ZHJtZnNfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGRlbnRyeSAqcGFyZW50 KQoreworCWludCByZXQgPSAwOworCisJaWYgKHNpbXBsZV9wb3NpdGl2ZShkZW50cnkpKSB7CisJ CWlmIChkZW50cnktPmRfaW5vZGUpIHsKKwkJCWRnZXQoZGVudHJ5KTsKKwkJCXN3aXRjaCAoZGVu dHJ5LT5kX2lub2RlLT5pX21vZGUgJiBTX0lGTVQpIHsKKwkJCWNhc2UgU19JRkRJUjoKKwkJCQly ZXQgPSBzaW1wbGVfcm1kaXIocGFyZW50LT5kX2lub2RlLCBkZW50cnkpOworCQkJCWJyZWFrOwor CQkJZGVmYXVsdDoKKwkJCQlzaW1wbGVfdW5saW5rKHBhcmVudC0+ZF9pbm9kZSwgZGVudHJ5KTsK KwkJCQlicmVhazsKKwkJCX0KKwkJCWlmICghcmV0KQorCQkJCWRfZGVsZXRlKGRlbnRyeSk7CisJ CQlkcHV0KGRlbnRyeSk7CisJCX0KKwl9CisJcmV0dXJuIHJldDsKK30KKworCisvKioKKyAqIGRy bWZzX3JlbW92ZSAtIHJlbW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBmcm9tIHRoZSBkcm1mcyBm aWxlc3lzdGVtCisgKiBAZGVudHJ5OiBhIHBvaW50ZXIgdG8gYSB0aGUgZGVudHJ5IG9mIHRoZSBm aWxlIG9yIGRpcmVjdG9yeSB0byBiZQorICogICAgICAgICAgcmVtb3ZlZC4KKyAqCisgKiBUaGlz IGZ1bmN0aW9uIHJlbW92ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeSBpbiBkcm1mcyB0aGF0IHdhcyBw cmV2aW91c2x5CisgKiBjcmVhdGVkIHdpdGggYSBjYWxsIHRvIGFub3RoZXIgZHJtZnMgZnVuY3Rp b24gKGxpa2UKKyAqIGRybWZzX2NyZWF0ZV9maWxlKCkgb3IgdmFyaWFudHMgdGhlcmVvZi4pCisg Ki8KK3ZvaWQgZHJtZnNfcmVtb3ZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSkKK3sKKwlzdHJ1Y3Qg ZGVudHJ5ICpwYXJlbnQ7CisJaW50IHJldDsKKworCWlmIChJU19FUlJfT1JfTlVMTChkZW50cnkp KQorCQlyZXR1cm47CisKKwlwYXJlbnQgPSBkZW50cnktPmRfcGFyZW50OworCWlub2RlX2xvY2so cGFyZW50LT5kX2lub2RlKTsKKwlyZXQgPSBfX2RybWZzX3JlbW92ZShkZW50cnksIHBhcmVudCk7 CisJaW5vZGVfdW5sb2NrKHBhcmVudC0+ZF9pbm9kZSk7CisJaWYgKCFyZXQpCisJCXNpbXBsZV9y ZWxlYXNlX2ZzKCZkcm1mc19tb3VudCwgJmRybWZzX21vdW50X2NvdW50KTsKK30KK0VYUE9SVF9T WU1CT0woZHJtZnNfcmVtb3ZlKTsKKworLyoqCisgKiBkcm1mc19yZW1vdmVfcmVjdXJzaXZlIC0g cmVjdXJzaXZlbHkgcmVtb3ZlcyBhIGRpcmVjdG9yeQorICogQGRlbnRyeTogYSBwb2ludGVyIHRv IGEgdGhlIGRlbnRyeSBvZiB0aGUgZGlyZWN0b3J5IHRvIGJlIHJlbW92ZWQuCisgKgorICogVGhp cyBmdW5jdGlvbiByZWN1cnNpdmVseSByZW1vdmVzIGEgZGlyZWN0b3J5IHRyZWUgaW4gZHJtZnMg dGhhdAorICogd2FzIHByZXZpb3VzbHkgY3JlYXRlZCB3aXRoIGEgY2FsbCB0byBhbm90aGVyIGRy bWZzIGZ1bmN0aW9uCisgKiAobGlrZSBkcm1mc19jcmVhdGVfZmlsZSgpIG9yIHZhcmlhbnRzIHRo ZXJlb2YuKQorICovCit2b2lkIGRybWZzX3JlbW92ZV9yZWN1cnNpdmUoc3RydWN0IGRlbnRyeSAq ZGVudHJ5KQoreworCXN0cnVjdCBkZW50cnkgKmNoaWxkLCAqcGFyZW50OworCisJaWYgKElTX0VS Ul9PUl9OVUxMKGRlbnRyeSkpCisJCXJldHVybjsKKworCXBhcmVudCA9IGRlbnRyeTsKKyBkb3du OgorCWlub2RlX2xvY2socGFyZW50LT5kX2lub2RlKTsKKyBsb29wOgorCS8qCisJICogVGhlIHBh cmVudC0+ZF9zdWJkaXJzIGlzIHByb3RlY3RlZCBieSB0aGUgZF9sb2NrLiBPdXRzaWRlIHRoYXQK KwkgKiBsb2NrLCB0aGUgY2hpbGQgY2FuIGJlIHVubGlua2VkIGFuZCBzZXQgdG8gYmUgZnJlZWQg d2hpY2ggY2FuCisJICogdXNlIHRoZSBkX3UuZF9jaGlsZCBhcyB0aGUgcmN1IGhlYWQgYW5kIGNv cnJ1cHQgdGhpcyBsaXN0LgorCSAqLworCXNwaW5fbG9jaygmcGFyZW50LT5kX2xvY2spOworCWxp c3RfZm9yX2VhY2hfZW50cnkoY2hpbGQsICZwYXJlbnQtPmRfc3ViZGlycywgZF9jaGlsZCkgewor CQlpZiAoIXNpbXBsZV9wb3NpdGl2ZShjaGlsZCkpCisJCQljb250aW51ZTsKKworCQkvKiBwZXJo YXBzIHNpbXBsZV9lbXB0eShjaGlsZCkgbWFrZXMgbW9yZSBzZW5zZSAqLworCQlpZiAoIWxpc3Rf ZW1wdHkoJmNoaWxkLT5kX3N1YmRpcnMpKSB7CisJCQlzcGluX3VubG9jaygmcGFyZW50LT5kX2xv Y2spOworCQkJaW5vZGVfdW5sb2NrKHBhcmVudC0+ZF9pbm9kZSk7CisJCQlwYXJlbnQgPSBjaGls ZDsKKwkJCWdvdG8gZG93bjsKKwkJfQorCisJCXNwaW5fdW5sb2NrKCZwYXJlbnQtPmRfbG9jayk7 CisKKwkJaWYgKCFfX2RybWZzX3JlbW92ZShjaGlsZCwgcGFyZW50KSkKKwkJCXNpbXBsZV9yZWxl YXNlX2ZzKCZkcm1mc19tb3VudCwgJmRybWZzX21vdW50X2NvdW50KTsKKworCQkvKgorCQkgKiBU aGUgcGFyZW50LT5kX2xvY2sgcHJvdGVjdHMgYWdhaW5zdCBjaGlsZCBmcm9tIHVubGlua2luZwor CQkgKiBmcm9tIGRfc3ViZGlycy4gV2hlbiByZWxlYXNpbmcgdGhlIHBhcmVudC0+ZF9sb2NrIHdl IGNhbgorCQkgKiBubyBsb25nZXIgdHJ1c3QgdGhhdCB0aGUgbmV4dCBwb2ludGVyIGlzIHZhbGlk LgorCQkgKiBSZXN0YXJ0IHRoZSBsb29wLiBXZSdsbCBza2lwIHRoaXMgb25lIHdpdGggdGhlCisJ CSAqIHNpbXBsZV9wb3NpdGl2ZSgpIGNoZWNrLgorCQkgKi8KKwkJZ290byBsb29wOworCX0KKwlz cGluX3VubG9jaygmcGFyZW50LT5kX2xvY2spOworCisJaW5vZGVfdW5sb2NrKHBhcmVudC0+ZF9p bm9kZSk7CisJY2hpbGQgPSBwYXJlbnQ7CisJcGFyZW50ID0gcGFyZW50LT5kX3BhcmVudDsKKwlp bm9kZV9sb2NrKHBhcmVudC0+ZF9pbm9kZSk7CisKKwlpZiAoY2hpbGQgIT0gZGVudHJ5KQorCQkv KiBnbyB1cCAqLworCQlnb3RvIGxvb3A7CisKKwlpZiAoIV9fZHJtZnNfcmVtb3ZlKGNoaWxkLCBw YXJlbnQpKQorCQlzaW1wbGVfcmVsZWFzZV9mcygmZHJtZnNfbW91bnQsICZkcm1mc19tb3VudF9j b3VudCk7CisJaW5vZGVfdW5sb2NrKHBhcmVudC0+ZF9pbm9kZSk7Cit9CitFWFBPUlRfU1lNQk9M KGRybWZzX3JlbW92ZV9yZWN1cnNpdmUpOworCisvKioKKyAqIGRybWZzX2luaXRpYWxpemVkIC0g VGVsbHMgd2hldGhlciBkcm1mcyBoYXMgYmVlbiByZWdpc3RlcmVkCisgKi8KK2Jvb2wgZHJtZnNf aW5pdGlhbGl6ZWQodm9pZCkKK3sKKwlyZXR1cm4gZHJtZnNfcmVnaXN0ZXJlZDsKK30KK0VYUE9S VF9TWU1CT0woZHJtZnNfaW5pdGlhbGl6ZWQpOworCisvKioKKyAqIGRybWZzX2luaXQgLSBJbml0 aWFsaXplcy9SZWdpc3RlcnMgZHJtZnMgZmlsZXN5c3RlbQorICoKKyAqIFRoaXMgZnVuY3Rpb24g aW5pdGlhbGl6ZXMgZHJtZnMgZmlsZXN5dGVtIGFuZCByZWdpc3RlcnMgaXQgd2l0aCBrZXJuZWwu CisgKiBBbHNvIGEgY2Fub25pY2FsIG1vdW50cG9pbnQgaXMgY3JlYXRlZCBmb3IgZmlsZXN5c3Rl bS4gCisgKiAKKyAqIFJFVFVSTlM6CisgKiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm9yIGNv ZGUgb24gZmFpbHVyZS4KKyAqLworaW50IGRybWZzX2luaXQodm9pZCkKK3sKKwlpbnQgcmV0dmFs OworCisJcmV0dmFsID0gc3lzZnNfY3JlYXRlX21vdW50X3BvaW50KGtlcm5lbF9rb2JqLCAiZHJt Iik7CisJaWYgKHJldHZhbCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR2YWwgPSByZWdpc3Rl cl9maWxlc3lzdGVtKCZkcm1fZnNfdHlwZSk7CisJaWYgKCFyZXR2YWwpCisJCWRybWZzX3JlZ2lz dGVyZWQgPSB0cnVlOworCisJcmV0dXJuIHJldHZhbDsKK30KKworLyoqCisgKiBkcm1mc19maW5p IC0gVW5yZWdpc3RlcnMvRGVpbml0aWFsaXplcyBkcm1mcyBmaWxlc3lzdGVtCisgKgorICogVGhp cyBmdW5jdGlvbiBkZXJlZ2lzdGVycyBkcm1mcyBhbmQgcmVtb3ZlcyBpdHMgY2Fub25pY2FsIG1v dW50cG9pbnQuCisgKi8KKwordm9pZCBkcm1mc19maW5pKHZvaWQpCit7CisJdW5yZWdpc3Rlcl9m aWxlc3lzdGVtKCZkcm1fZnNfdHlwZSk7CisKKwlkcm1mc19yZWdpc3RlcmVkID0gZmFsc2U7CisK KwlzeXNmc19yZW1vdmVfbW91bnRfcG9pbnQoa2VybmVsX2tvYmosICJkcm0iKTsKK30KZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybWZzLmggYi9pbmNsdWRlL2RybS9kcm1mcy5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkZjE2YmIKLS0tIC9kZXYvbnVsbAorKysgYi9p bmNsdWRlL2RybS9kcm1mcy5oCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkg MjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNv cHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0 byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBu b3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBS T1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IK KyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug QU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9O IFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICoJU3dhdGkgRGhpbmdyYSA8c3dhdGkuZGhp bmdyYUBpbnRlbC5jb20+CisgKglTb3VyYWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+ CisgKglBa2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KKyAqLworCisjaWZuZGVmIF9E Uk1GU19IXworI2RlZmluZSBfRFJNRlNfSF8KKworI2luY2x1ZGUgPGxpbnV4L2ZzLmg+CisjaW5j bHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CisKK3N0 cnVjdCBmaWxlX29wZXJhdGlvbnM7CisKKyNpZmRlZiBDT05GSUdfRFJNRlMKKworc3RydWN0IGRl bnRyeSAqZHJtZnNfY3JlYXRlX2ZpbGUoY29uc3QgY2hhciAqbmFtZSwgdW1vZGVfdCBtb2RlLAor CQkJCSAgIHN0cnVjdCBkZW50cnkgKnBhcmVudCwgdm9pZCAqZGF0YSwKKwkJCQkgICBjb25zdCBz dHJ1Y3QgZmlsZV9vcGVyYXRpb25zICpmb3BzKTsKKworc3RydWN0IGRlbnRyeSAqZHJtZnNfY3Jl YXRlX2Rpcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQpOworCit2b2lk IGRybWZzX3JlbW92ZShzdHJ1Y3QgZGVudHJ5ICpkZW50cnkpOwordm9pZCBkcm1mc19yZW1vdmVf cmVjdXJzaXZlKHN0cnVjdCBkZW50cnkgKmRlbnRyeSk7CisKK2Jvb2wgZHJtZnNfaW5pdGlhbGl6 ZWQodm9pZCk7CitpbnQgZHJtZnNfaW5pdCh2b2lkKTsKK3ZvaWQgZHJtZnNfZmluaSh2b2lkKTsK KworI2Vsc2UKKworc3RhdGljIGlubGluZSBzdHJ1Y3QgZGVudHJ5ICpkcm1mc19jcmVhdGVfZmls ZShjb25zdCBjaGFyICpuYW1lLCB1bW9kZV90IG1vZGUsCisJCQkJICAgc3RydWN0IGRlbnRyeSAq cGFyZW50LCB2b2lkICpkYXRhLAorCQkJCSAgIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMg KmZvcHMpCit7CisJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cit9CisKK3N0YXRpYyBpbmxpbmUg c3RydWN0IGRlbnRyeSAqZHJtZnNfY3JlYXRlX2Rpcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qg ZGVudHJ5ICpwYXJlbnQpCit7CisJcmV0dXJuIEVSUl9QVFIoLUVOT0RFVik7Cit9CisKK3N0YXRp YyBpbmxpbmUgdm9pZCBkcm1mc19yZW1vdmUoc3RydWN0IGRlbnRyeSAqZGVudHJ5KXt9CitzdGF0 aWMgaW5saW5lIHZvaWQgZHJtZnNfcmVtb3ZlX3JlY3Vyc2l2ZShzdHJ1Y3QgZGVudHJ5ICpkZW50 cnkpe30KKworc3RhdGljIGlubGluZSBib29sIGRybWZzX2luaXRpYWxpemVkKHZvaWQpe3JldHVy biBmYWxzZTt9CitzdGF0aWMgaW5saW5lIGludCBkcm1mc19pbml0KHZvaWQpe3JldHVybiAtRUlO VkFMO30KK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1mc19maW5pKHZvaWQpe30KKworI2VuZGlmIC8q IENPTkZJR19EUk1GUyAqLworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51 eC9tYWdpYy5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L21hZ2ljLmgKaW5kZXggOWJkNTU5NC4uZWYw MWViNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2xpbnV4L21hZ2ljLmgKKysrIGIvaW5jbHVk ZS91YXBpL2xpbnV4L21hZ2ljLmgKQEAgLTYxLDYgKzYxLDkgQEAKICNkZWZpbmUgU1RBQ0tfRU5E X01BR0lDCQkweDU3QUM2RTlECiAKICNkZWZpbmUgVFJBQ0VGU19NQUdJQyAgICAgICAgICAweDc0 NzI2MTYzCisjZGVmaW5lIERSTUZTX01BR0lDCSAgICAgICAweDg0NzI0MTQzICAgICAgLyogc29t ZSByYW5kb20gbnVtYmVyLgorCQkJCQkJKiBJcyB0aGVyZSBhIGJldHRlciB3YXk/CisJCQkJCQkq LwogCiAjZGVmaW5lIFY5RlNfTUFHSUMJCTB4MDEwMjE5OTcKIAotLSAKMi43LjQKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=