From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 34D55891AD for ; Tue, 30 Apr 2019 11:29:51 +0000 (UTC) From: Janusz Krzysztofik Date: Tue, 30 Apr 2019 13:29:15 +0200 Message-Id: <20190430112915.16889-2-janusz.krzysztofik@linux.intel.com> In-Reply-To: <20190430112915.16889-1-janusz.krzysztofik@linux.intel.com> References: <20190430112915.16889-1-janusz.krzysztofik@linux.intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v8 1/1 i-g-t] tests: Add a new test for driver/device hot reload List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Arkadiusz Hiler , Petri Latvala Cc: janusz.krzysztofik@intel.com, igt-dev@lists.freedesktop.org, Daniel Vetter List-ID: RnJvbTogSmFudXN6IEtyenlzenRvZmlrIDxqYW51c3oua3J6eXN6dG9maWtAaW50ZWwuY29tPgoK UHV0IHNvbWUgd29ya2xvYWQgb24gYSBkZXZpY2UsIHRoZW4gdHJ5IHRvIGVpdGhlciByZW1vdmUg KHVucGx1ZykgdGhlCmRldmljZSBmcm9tIGl0cyBidXMsIG9yIHVuYmluZCB0aGUgZGV2aWNlJ3Mg ZHJpdmVyIGZyb20gaXQsIHBvc3NpYmx5CmZvbGxvd2VkIGJ5IG1vZHVsZSB1bmxvYWQsIGRlcGVu ZGluZyBvbiB3aGljaCBzcGVjaWZpYyBzdWJ0ZXN0IGhhcyBiZWVuCnNlbGVjdGVkLiAgSWYgc3Vj Y2VlZGVkLCByZXNjYW4gdGhlIGRldmljZSdzIGJ1cyBpZiBuZWVkZWQgYW5kIHBlcmZvcm0KaGVh bHRoIGNoZWNrcyBvbiB0aGUgZGV2aWNlIHdpdGggdGhlIGRyaXZlciBwb3NzaWJseSBsb2FkZWQg YmFjay4KCklmIG1vZHVsZSB1bmxvYWQgaXMgcmVxdWVzdGVkLCB0aGUgd29ya2xvYWQgaXMgcnVu IGluIGEgc3ViLXByb2Nlc3MsCm5vdCBkaXJlY3RseSBmcm9tIHRoZSB0ZXN0LCBhcyBpdCBpcyBl eHBlY3RlZCB0byBjcmFzaCB3aGlsZSBzdGlsbAprZWVwaW5nIHRoZSBkZXZpY2Ugb3BlbiBmb3Ig YXMgbG9uZyBhcyBpdHMgcHJvY2VzcyBoYXMgbm90IGV4aXRlZC4KClRoZSBkcml2ZXIgaG90IHVu YmluZCAvIGRldmljZSBob3QgdW5wbHVnIG9wZXJhdGlvbiBpcyBleHBlY3RlZCB0bwpzdWNjZWVk IGFuZCB0aGUgYmFja2dyb3VuZCB3b3JrbG9hZCBzdWItcHJvY2VzcyB0byBjcmFzaCBpbiBhCnJl YXNvbmFibGUgdGltZSwgaG93ZXZlciBsb25nIHRpbWVvdXRzIGFyZSB1c2VkIHRvIGxldCBrZXJu ZWwgbGV2ZWwKdGltZW91dHMgcG9wIHVwIGZpcnN0IGlmIGhpdCBieSBhIGJ1Zy4KClRoZSBkcml2 ZXIgaXMgcmVhZHkgZm9yIGV4dGVuZGluZyBpdCB3aXRoIGFuIGFyYml0cmFyeSB3b3JrbG9hZApm dW5jdGlvbnMgYXMgbmVlZGVkLiAgRm9yIG5vdywgYSB3b3JrbG9hZCBiYXNlZCBvbiBpZ3RfZHVt bXlsb2FkIGlzCmltcGxlbWVudGVkLCBoZW5jZSBzdWJ0ZXN0cyB3b3JrIG9ubHkgb24gaTkxNSBk cml2ZXIgYW5kIGFyZSBza2lwcGVkIG9uCm90aGVyIGhhcmR3YXJlLCB1bmxlc3MgdGhleSBwcm92 aWRlIHRoZWlyIGltcGxlbWVudGF0aW9uIG9mCmlndF9zcGluX25ldygpIGFuZCBmcmllbmRzLCBv ciBvdGhlciB3b3JrbG9hZHMgYXJlIGltcGxlbWVudGVkLgoKU2lnbmVkLW9mZi1ieTogSmFudXN6 IEtyenlzenRvZmlrIDxqYW51c3oua3J6eXN6dG9maWtAaW50ZWwuY29tPgotLS0KIHRlc3RzL01h a2VmaWxlLnNvdXJjZXMgIHwgICAxICsKIHRlc3RzL2NvcmVfaG90X3JlbG9hZC5jIHwgNDA4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHRlc3RzL21lc29uLmJ1aWxk ICAgICAgIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDEwIGluc2VydGlvbnMoKykKIGNyZWF0 ZSBtb2RlIDEwMDY0NCB0ZXN0cy9jb3JlX2hvdF9yZWxvYWQuYwoKZGlmZiAtLWdpdCBhL3Rlc3Rz L01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IDdmOTIxZjZj Li40NTJkOGVkNyAxMDA2NDQKLS0tIGEvdGVzdHMvTWFrZWZpbGUuc291cmNlcworKysgYi90ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzCkBAIC0xNiw2ICsxNiw3IEBAIFRFU1RTX3Byb2dzID0gXAogCWNv cmVfZ2V0Y2xpZW50IFwKIAljb3JlX2dldHN0YXRzIFwKIAljb3JlX2dldHZlcnNpb24gXAorCWNv cmVfaG90X3JlbG9hZCBcCiAJY29yZV9zZXRtYXN0ZXJfdnNfYXV0aCBcCiAJZGVidWdmc190ZXN0 IFwKIAlkcm1faW1wb3J0X2V4cG9ydCBcCmRpZmYgLS1naXQgYS90ZXN0cy9jb3JlX2hvdF9yZWxv YWQuYyBiL3Rlc3RzL2NvcmVfaG90X3JlbG9hZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi42NjczZjU1YwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NvcmVfaG90X3Jl bG9hZC5jCkBAIC0wLDAgKzEsNDA4IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwg Q29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl CisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUu CisgKi8KKworI2luY2x1ZGUgImlndC5oIgorI2luY2x1ZGUgImlndF9kZXZpY2UuaCIKKyNpbmNs dWRlICJpZ3RfZHVtbXlsb2FkLmgiCisjaW5jbHVkZSAiaWd0X2ttb2QuaCIKKyNpbmNsdWRlICJp Z3Rfc3lzZnMuaCIKKworI2luY2x1ZGUgPGdldG9wdC5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgor I2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSA8c3lz L3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3dhaXQuaD4KKworLyoqCisgKiBBIHBvc3QtYWN0aW9u IGRldmljZSByZWNvdmVyeSBmdW5jdGlvbjoKKyAqIEBwcml2OiBhIHBvaW50ZXIgdG8gcHJpdmF0 ZSBkYXRhIHJlcXVpcmVkIGZvciBkZXZpY2UgcmVjb3ZlcnkKKyAqCisgKiBNYWtlIHRoZSBkZXZp Y2UgcmUtYXBwZWFyCisgKi8KK3R5cGVkZWYgdm9pZCAoKnJlY292ZXJfdCkoY29uc3Qgdm9pZCAq cHJpdik7CisKKy8qKgorICogQSB0ZXN0IGFjdGlvbiBmdW5jdGlvbjoKKyAqIEBkaXI6IGZpbGUg ZGVzY3JpcHRvciBvZiBhbiBvcGVuIGRldmljZSBzeXNmcyBkaXJlY3RvcnkKKyAqIEBtb2R1bGU6 IG1vZHVsZSBuYW1lLCBub24tTlVMTCBpbmRpY2F0ZXMgcG9zdC1hY3Rpb24gbW9kdWxlIHVubG9h ZCByZXF1ZXN0ZWQKKyAqIEByZWNvdmVyOiBmb3IgcmV0dXJuaW5nIGEgcG9pbnRlciB0byBhIHBv c3QtYWN0aW9uIGRldmljZSByZWNvdmVyeSBmdW5jdGlvbgorICogQHByaXY6IGZvciByZXR1cm5p bmcgYSBwb2ludGVyIHRvIGRhdGEgdG8gYmUgcGFzc2VkIHRvIEByZWNvdmVyCisgKgorICogTWFr ZSB0aGUgZGV2aWNlIGRpc2FwcGVhcgorICovCit0eXBlZGVmIHZvaWQgKCphY3Rpb25fdCkoaW50 IGRldmljZSwgY29uc3QgY2hhciAqbW9kdWxlLAorCQkJIHJlY292ZXJfdCAqcmVjb3ZlciwgY29u c3Qgdm9pZCAqKnByaXYpOworCisvKioKKyAqIEEgd29ya2xvYWQgY29tcGxldGlvbiB3YWl0IGZ1 bmN0aW9uOgorICogQGRldmljZTogb3BlbiBkZXZpY2UgZmlsZSBkZXNjcmlwdG9yCisgKiBAcHJp djogYSBwb2ludGVyIHRvIHByaXZhdGUgZGF0YSByZXF1aXJlZCBieSB0aGUgd2FpdCBmdW5jdGlv bgorICoKKyAqIFdhaXQgZm9yIGNvbXBsZXRpb24gb2YgYmFja2dyb3VuZCB3b3JrbG9hZAorICov Cit0eXBlZGVmIHZvaWQgKCp3b3JrbG9hZF93YWl0X3QpKGludCBkZXZpY2UsIHZvaWQgKnByaXYp OworCisvKioKKyAqIEEgd29ya2xvYWQgZnVuY3Rpb246CisgKiBAZGV2aWNlOiBvcGVuIGRldmlj ZSBmaWxlIGRlc2NyaXB0b3IKKyAqIEBhcmc6IGEgb3B0aW9uYWwgc3RyaW5nIGFyZ3VtZW50IHBh c3NlZCB0byB0aGUgd29ya2xvYWQgZnVuY3Rpb24KKyAqIEB3b3JrbG9hZF93YWl0OiBmb3IgcmV0 dXJuaW5nIGEgcG9pbnRlciB0byB3b3JrbG9hZCBjb21wbGV0aW9uIHdhaXQgZnVuY3Rpb24KKyAq IEBwcml2OiBmb3IgcmV0dXJuaW5nIGEgcG9pbnRlciB0byBkYXRhIHRvIGJlIHBhc3NlZCB0byBA d29ya2xvYWRfd2FpdAorICoKKyAqIFB1dCBzb21lIGxvbmcgbGFzdGluZyBsb2FkIG9uIHRoZSBk ZXZpY2UKKyAqLwordHlwZWRlZiB2b2lkICgqd29ya2xvYWRfdCkoaW50IGRldmljZSwgY29uc3Qg Y2hhciAqYXJnLAorCQkJICAgd29ya2xvYWRfd2FpdF90ICp3b3JrbG9hZF93YWl0LCB2b2lkICoq cHJpdik7CisKKy8qKgorICogUGFpcnMgb2YgdGVzdCBhY3Rpb24gLyBkZXZpY2UgcmVjb3Zlcnkg ZnVuY3Rpb25zCisgKi8KKworLyogVW5iaW5kIC8gcmUtYmluZCAqLworCitzdHJ1Y3QgcmViaW5k X2RhdGEgeworCWludCBkcml2ZXI7CS8qIG9wZW4gZmlsZSBkZXNjcmlwdG9yIG9mIGRyaXZlciBz eXNmcyBkaXJlY3RvcnkgKi8KKwljaGFyICpkZXZpY2U7CS8qIGJ1cyBzcGVjaWZpYyBkZXZpY2Ug YWRkcmVzcyBhcyBzdHJpbmcgKi8KK307CisKKy8qIFJlLWJpbmQgdGhlIGRyaXZlciB0byB0aGUg ZGV2aWNlICovCitzdGF0aWMgdm9pZCBkcml2ZXJfYmluZChjb25zdCB2b2lkICpwcml2KQorewor CWNvbnN0IHN0cnVjdCByZWJpbmRfZGF0YSAqZGF0YSA9IHByaXY7CisKKwlpZ3Rfc2V0X3RpbWVv dXQoNjAsICJEcml2ZXIgcmUtYmluZCB0aW1lb3V0ISIpOworCWlndF9zeXNmc19zZXQoZGF0YS0+ ZHJpdmVyLCAiYmluZCIsIGRhdGEtPmRldmljZSk7CisKKwljbG9zZShkYXRhLT5kcml2ZXIpOwor fQorCisvKiBVbmJpbmQgdGhlIGRyaXZlciBmcm9tIHRoZSBkZXZpY2UgKi8KK3N0YXRpYyB2b2lk IGRyaXZlcl91bmJpbmQoaW50IGRldmljZSwgY29uc3QgY2hhciAqbW9kdWxlLAorCQkJICByZWNv dmVyX3QgKnJlY292ZXIsIGNvbnN0IHZvaWQgKipwcml2KQoreworCXN0YXRpYyBjaGFyIHBhdGhb UEFUSF9NQVhdOworCXN0YXRpYyBzdHJ1Y3QgcmViaW5kX2RhdGEgZGF0YTsKKwlpbnQgbGVuOwor CisJLyogY29sbGVjdCBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgZHJpdmVyIGJpbmQvdW5iaW5k ICovCisJZGF0YS5kcml2ZXIgPSBvcGVuYXQoZGV2aWNlLCAiZGV2aWNlL2RyaXZlciIsIE9fRElS RUNUT1JZKTsKKwlpZ3RfYXNzZXJ0KGRhdGEuZHJpdmVyID49IDApOworCisJbGVuID0gcmVhZGxp bmthdChkZXZpY2UsICJkZXZpY2UiLCBwYXRoLCBzaXplb2YocGF0aCkgLSAxKTsKKwlwYXRoW2xl bl0gPSAnXDAnOworCWRhdGEuZGV2aWNlID0gc3RycmNocihwYXRoLCAnLycpICsgMTsKKworCS8q IHVuYmluZCB0aGUgZHJpdmVyICovCisJaWd0X3NldF90aW1lb3V0KDYwLCAiRHJpdmVyIHVuYmlu ZCB0aW1lb3V0ISIpOworCWlndF9zeXNmc19zZXQoZGF0YS5kcml2ZXIsICJ1bmJpbmQiLCBkYXRh LmRldmljZSk7CisKKwkvKiBwYXNzIGJhY2sgaW5mbyBvbiBob3cgdG8gcmVjb3ZlciB0aGUgZGV2 aWNlICovCisJaWYgKG1vZHVsZSkgeworCQkvKiBkb24ndCB0cnkgdG8gcmViaW5kIGlmIG1vZHVs ZSB3aWxsIGJlIHVubG9hZGVkICovCisJCSpyZWNvdmVyID0gTlVMTDsKKwl9IGVsc2UgeworCQkq cmVjb3ZlciA9IGRyaXZlcl9iaW5kOworCQkqcHJpdiA9ICZkYXRhOworCX0KK30KKworLyogVW5w bHVnIC8gcmUtcGx1ZyAqLworCisvKiBSZS1kaXNjb3ZlciB0aGUgZGV2aWNlIGJ5IHJlc2Nhbm5p bmcgaXRzIGJ1cyAqLworc3RhdGljIHZvaWQgYnVzX3Jlc2Nhbihjb25zdCB2b2lkICpwcml2KQor eworCWNvbnN0IGludCAqYnVzID0gcHJpdjsKKworCWlndF9zZXRfdGltZW91dCg2MCwgIkJ1cyBy ZXNjYW4gdGltZW91dCEiKTsKKwlpZ3Rfc3lzZnNfc2V0KCpidXMsICJyZXNjYW4iLCAiMSIpOwor CisJY2xvc2UoKmJ1cyk7Cit9CisKKy8qIFJlbW92ZSAodmlydHVhbGx5IHVucGx1ZykgdGhlIGRl dmljZSBmcm9tIGl0cyBidXMgKi8KK3N0YXRpYyB2b2lkIGRldmljZV91bnBsdWcoaW50IGRldmlj ZSwgY29uc3QgY2hhciAqbW9kdWxlLAorCQkJICByZWNvdmVyX3QgKnJlY292ZXIsIGNvbnN0IHZv aWQgKipwcml2KQoreworCXN0YXRpYyBpbnQgYnVzOworCisJLyogY29sbGVjdCBpbmZvcm1hdGlv biByZXF1aXJlZCBmb3IgYnVzIHJlc2NhbiAqLworCWJ1cyA9IG9wZW5hdChkZXZpY2UsICJkZXZp Y2Uvc3Vic3lzdGVtIiwgT19ESVJFQ1RPUlkpOworCWlndF9hc3NlcnQoYnVzID49IDApOworCisJ LyogcmVtb3ZlIHRoZSBkZXZpY2UgKi8KKwlpZ3Rfc2V0X3RpbWVvdXQoNjAsICJEZXZpY2UgdW5w bHVnIHRpbWVvdXQhIik7CisJaWd0X3N5c2ZzX3NldChkZXZpY2UsICJkZXZpY2UvcmVtb3ZlIiwg IjEiKTsKKworCS8qIHBhc3MgYmFjayBpbmZvIG9uIGhvdyB0byByZWNvdmVyIHRoZSBkZXZpY2Ug Ki8KKwkqcmVjb3ZlciA9IGJ1c19yZXNjYW47CisJKnByaXYgPSAmYnVzOworfQorCisvKiBFYWNo IHRlc3QgYWN0aW9uIGZ1bmN0aW9uIG11c3QgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgZm9sbG93aW5n IHRhYmxlICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwljb25zdCBjaGFyICpuYW1lOwkvKiB1 bmlxdWUgdGVzdCBhY3Rpb24gbmFtZSB1c2VkIGluIHRlc3QgbmFtZXMgKi8KKwlhY3Rpb25fdCBm dW5jdGlvbjsJLyogdGVzdCBhY3Rpb24gZnVuY3Rpb24gcG9pbnRlciAqLworfSBhY3Rpb25zW10g PSB7CisJeyAidW5iaW5kIiwgZHJpdmVyX3VuYmluZCwgfSwKKwl7ICJ1bnBsdWciLCBkZXZpY2Vf dW5wbHVnLCB9LAorfTsKKworLyoqCisgKiBQYWlycyBvZiB3b3JrbG9hZCAvIHdhaXQgY29tcGxl dGlvbiBmdW5jdGlvbnMKKyAqLworCisvKiBBIHdvcmtsb2FkIHVzaW5nIGlndF9zcGluX3J1bigp ICovCisKKy8qIFdhaXQgZm9yIGNvbXBsZXRhaW9uIG9mIGR1bW15IGxvYWQgKi8KK3N0YXRpYyB2 b2lkIGR1bW15X3dhaXQoaW50IGRldmljZSwgdm9pZCAqcHJpdikKK3sKKwlpZ3Rfc3Bpbl90ICpz cGluID0gcHJpdjsKKworCS8qIHdhaXQgdW50aWwgdGhlIHNwaW4gbm8gbG9uZ2VyIHJ1bnMsIGRv bid0IGZhaWwgb24gZXJyb3IgKi8KKwlpZiAoZ2VtX3dhaXQoZGV2aWNlLCBzcGluLT5oYW5kbGUs IE5VTEwpKQorCQlfX2dlbV9zZXRfZG9tYWluKGRldmljZSwgc3Bpbi0+aGFuZGxlLAorCQkJCSBJ OTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKK30KKworLyogUnVuIGR1 bW15IGxvYWQgKi8KK3N0YXRpYyB2b2lkIGR1bW15X2xvYWQoaW50IGRldmljZSwgY29uc3QgY2hh ciAqYXJnLAorCQkgICAgICAgd29ya2xvYWRfd2FpdF90ICp3b3JrbG9hZF93YWl0LCB2b2lkICoq cHJpdikKK3sKKwlpZ3Rfc3Bpbl90ICpzcGluOworCisJLyogc3VibWl0IGEgam9iICovCisJc3Bp biA9IGlndF9zcGluX25ldyhkZXZpY2UpOworCisJKndvcmtsb2FkX3dhaXQgPSBkdW1teV93YWl0 OworCSpwcml2ID0gc3BpbjsKK30KKworLyoqCisgKiBFYWNoIHdvcmtsb2FkIGZ1bmN0aW9uIG11 c3QgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgZm9sbG93aW5nIHRhYmxlLgorICogQSBmdW5jdGlvbiBt YXkgYmUgcmVnaXN0ZXJlZCBtb3JlIHRoYW4gb25jZSB1bmRlciBkaWZmZXJlbnQgd29ya2xvYWQg bmFtZXMsCisgKiB0aGF0IG1ha2VzIHNlbnNlIGFzIGxvbmcgYXMgYSBkaWZmZXJlbnQgYXJndW1l bnQgaXMgc3BlY2lmaWVkIGZvciBlYWNoIG5hbWUuCisgKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg eworCWNvbnN0IGNoYXIgKm5hbWU7CS8qIHVuaXF1ZSB3b3JrbG9hZCBuYW1lIHVzZWQgaW4gdGVz dCBuYW1lcyAqLworCXdvcmtsb2FkX3QgZnVuY3Rpb247CS8qIHdvcmtsb2FkIGZ1bmN0aW9uIHBv aW50ZXIgKi8KKwljb25zdCBjaGFyICphcmc7CS8qIG9wdGlvbmFsIGNvbnN0YW50IHN0cmluZyBh cmd1bWVudCAqLworfSB3b3JrbG9hZHNbXSA9IHsKKwl7ICJzcGluIiwgZHVtbXlfbG9hZCwgTlVM TCwgfSwKK307CisKKy8qKgorICogRnJhbWV3b3JrCisgKi8KKworc3RhdGljIHZvaWQgaGVhbHRo Y2hlY2soaW50IGNoaXBzZXQpCit7CisJaW50IGRldmljZTsKKworCWRldmljZSA9IF9fZHJtX29w ZW5fZHJpdmVyKGNoaXBzZXQpOworCWlndF9hc3NlcnQoZGV2aWNlID49IDApOworCisJaWYgKGNo aXBzZXQgPT0gRFJJVkVSX0lOVEVMKQorCQlnZW1fdGVzdF9lbmdpbmUoZGV2aWNlLCBBTExfRU5H SU5FUyk7CisKKwljbG9zZShkZXZpY2UpOworfQorCitzdGF0aWMgdm9pZCBtb2R1bGVfdW5sb2Fk KGludCBjaGlwc2V0LCBjb25zdCBjaGFyICptb2R1bGUpCit7CisJaWYgKGNoaXBzZXQgPT0gRFJJ VkVSX0lOVEVMKQorCQlpZ3RfYXNzZXJ0KGlndF9pOTE1X2RyaXZlcl91bmxvYWQoKSA9PSBJR1Rf RVhJVF9TVUNDRVNTKTsKKwllbHNlCisJCWlndF9hc3NlcnQoaWd0X2ttb2RfdW5sb2FkKG1vZHVs ZSwgMCkgPT0gMCk7Cit9CisKK3N0YXRpYyB2b2lkIHJ1bl9hY3Rpb24oaW50IGRldmljZSwgYWN0 aW9uX3QgYWN0aW9uLCBjb25zdCBjaGFyICptb2R1bGUsCisJCSAgICAgIHJlY292ZXJfdCAqcmVj b3ZlciwgY29uc3Qgdm9pZCAqKnByaXYpCit7CisJaW50IGRpcjsKKworCWRpciA9IGlndF9zeXNm c19vcGVuKGRldmljZSk7CisJaWd0X2Fzc2VydChkaXIgPj0gMCk7CisKKwlhY3Rpb24oZGlyLCBt b2R1bGUsIHJlY292ZXIsIHByaXYpOworCisJY2xvc2UoZGlyKTsKK30KKworc3RhdGljIHZvaWQg d2FpdF9oZWxwZXIoaW50IGRldmljZSwgdm9pZCAqcHJpdikKK3sKKwlzdHJ1Y3QgaWd0X2hlbHBl cl9wcm9jZXNzICpwcm9jID0gcHJpdjsKKworCS8qIHdhaXQgdW50aWwgdGhlIHdvcmtsb2FkIHN1 YnByb2Nlc3MgaGFzIGNvbXBsZXRlZCAqLworCWlndF9pZ25vcmVfd2FybihpZ3Rfd2FpdF9oZWxw ZXIocHJvYykpOworfQorCitzdGF0aWMgdm9pZCBydW5fd29ya2xvYWQoaW50IGRldmljZSwgd29y a2xvYWRfdCB3b3JrbG9hZCwgY29uc3QgY2hhciAqYXJnLAorCQkJIGNvbnN0IGNoYXIgKm1vZHVs ZSwgd29ya2xvYWRfd2FpdF90ICp3b3JrbG9hZF93YWl0LAorCQkJIHZvaWQgKipwcml2KQorewor CWlmIChtb2R1bGUpIHsKKwkJLyogcnVuIHdvcmtsb2FkIGluIGEgc3VicHJvY2VzcyBzbyB0aGUg bW9kdWxlIGlzIHB1dCBvbiBjcmFzaCAqLworCQlzdGF0aWMgc3RydWN0IGlndF9oZWxwZXJfcHJv Y2VzcyBwcm9jOworCQlpbnQgd3N0YXR1cywgcmV0OworCisJCWJ6ZXJvKCZwcm9jLCBzaXplb2Yo cHJvYykpOworCisJCWlndF9mb3JrX2hlbHBlcigmcHJvYykgeworCQkJLyogc3VwcHJlc3MgaWd0 X2xvZyBtZXNzYWdlcyAqLworCQkJaWd0X2xvZ19sZXZlbCA9IElHVF9MT0dfTk9ORTsKKworCQkJ LyogaW50ZXJjZXB0IGlndF9mYWlsL3NraXAoKSBsb25nIGp1bXBzICovCisJCQlpZiAoc2lnc2V0 am1wKGlndF9zdWJ0ZXN0X2ptcGJ1ZiwgMSkgPT0gMCkgeworCQkJCXdvcmtsb2FkKGRldmljZSwg YXJnLCB3b3JrbG9hZF93YWl0LCBwcml2KTsKKworCQkJCSgqd29ya2xvYWRfd2FpdCkoZGV2aWNl LCAqcHJpdik7CisKKwkJCQkvKiBzdWNjZXNzIGlmIG5vdCBkaXZlcnRlZCBieSBpZ3RfZmFpbC9z a2lwKCkgKi8KKwkJCQlpZ3Rfc3VjY2VzcygpOworCQkJfQorCisJCQkvKiBwYXNzIGV4aXQgY29k ZSBiYWNrIHRvIHRoZSBjYWxsZXIgKi8KKwkJCWlndF9leGl0KCk7CisJCX0KKwkJLyogbGV0IHRo ZSBiYWNrZ3JvdW5kIHByb2Nlc3Mgc3RhcnQgZG9pbmcgaXRzIGpvYiBvciBmYWlsICovCisJCXNs ZWVwKDIpOworCQkvKiBmYWlsIG9yIHNraXAgb24gd29ya2xvYWQgcHJlbWF0dXJlIGNvbXBsZXRp b24gKi8KKwkJcmV0ID0gd2FpdHBpZChwcm9jLnBpZCwgJndzdGF0dXMsIFdOT0hBTkcpOworCQlp ZiAocmV0IDwgMCkKKwkJCWlndF9mYWlsKElHVF9FWElUX0lOVkFMSUQpOworCQlpZiAocmV0KSB7 CisJCQlpZiAoIVdJRkVYSVRFRCh3c3RhdHVzKSkKKwkJCQlpZ3RfZmFpbChJR1RfRVhJVF9JTlZB TElEKTsKKwkJCWlmIChXRVhJVFNUQVRVUyh3c3RhdHVzKSA9PSBJR1RfRVhJVF9TVUNDRVNTKQor CQkJCWlndF9mYWlsKElHVF9FWElUX0lOVkFMSUQpOworCQkJaWYgKFdFWElUU1RBVFVTKHdzdGF0 dXMpID09IElHVF9FWElUX1NLSVApCisJCQkJaWd0X3NraXAoTlVMTCk7CisJCQlpZ3RfZmFpbChX RVhJVFNUQVRVUyh3c3RhdHVzKSk7CisJCX0KKworCQkvKiBwYXNzIGJhY2sgaW5mbyBvbiBob3cg dG8gd2FpdCBmb3IgaGVscGVyIGNvbXBsZXRpb24gKi8KKwkJKndvcmtsb2FkX3dhaXQgPSB3YWl0 X2hlbHBlcjsKKwkJKnByaXYgPSAmcHJvYzsKKwl9IGVsc2UgeworCQkvKiBydW4gdGhlIHJlcXVl c3RlZCB3b3JrbG9hZCBkaXJlY3RseSAqLworCQl3b3JrbG9hZChkZXZpY2UsIGFyZywgd29ya2xv YWRfd2FpdCwgcHJpdik7CisJfQorfQorCitzdGF0aWMgdm9pZCBydW5fc3VidGVzdChpbnQgY2hp cHNldCwgaW50IHdvcmtsb2FkLCBpbnQgYWN0aW9uLAorCQkJY29uc3QgY2hhciAqbW9kdWxlKQor eworCXdvcmtsb2FkX3dhaXRfdCB3b3JrbG9hZF93YWl0OworCXZvaWQgKndvcmtsb2FkX3ByaXY7 CisJcmVjb3Zlcl90IHJlY292ZXI7CisJY29uc3Qgdm9pZCAqcmVjb3Zlcl9wcml2OworCWludCBk ZXZpY2U7CisKKwlpZ3Rfc3VidGVzdF9mKCIlcy0lcyVzIiwgd29ya2xvYWRzW3dvcmtsb2FkXS5u YW1lLCBhY3Rpb25zW2FjdGlvbl0ubmFtZSwKKwkJICAgICAgbW9kdWxlID8gIi11bmxvYWQiIDog IiIpIHsKKwkJZGV2aWNlID0gX19kcm1fb3Blbl9kcml2ZXIoY2hpcHNldCk7CisJCWlndF9hc3Nl cnQoZGV2aWNlID49IDApOworCisJCS8qIHNwYXduIHRoZSByZXF1ZXN0ZWQgd29ya2xvYWQgKi8K KwkJaWd0X2RlYnVnKCJzcGF3bmluZyBiYWNrZ3JvdW5kIHdvcmtsb2FkXG4iKTsKKwkJcnVuX3dv cmtsb2FkKGRldmljZSwgd29ya2xvYWRzW3dvcmtsb2FkXS5mdW5jdGlvbiwKKwkJCSAgICAgd29y a2xvYWRzW3dvcmtsb2FkXS5hcmcsIG1vZHVsZSwKKwkJCSAgICAgJndvcmtsb2FkX3dhaXQsICZ3 b3JrbG9hZF9wcml2KTsKKworCQkvKiBydW4gdGhlIHJlcXVlc3RlZCB0ZXN0IGFjdGlvbiAqLwor CQlpZ3RfZGVidWcoInJ1bm5pbmcgdGVzdCBhY3Rpb25cbiIpOworCQlydW5fYWN0aW9uKGRldmlj ZSwgYWN0aW9uc1thY3Rpb25dLmZ1bmN0aW9uLCBtb2R1bGUsCisJCQkgICAmcmVjb3ZlciwgJnJl Y292ZXJfcHJpdik7CisKKwkJaWYgKHdvcmtsb2FkX3dhaXQpIHsKKwkJCWlndF9kZWJ1Zygid2Fp dGluZyBmb3Igd29ya2xvYWQgY29tcGxldGlvblxuIik7CisJCQl3b3JrbG9hZF93YWl0KGRldmlj ZSwgd29ya2xvYWRfcHJpdik7CisJCX0KKworCQljbG9zZShkZXZpY2UpOworCisJCWlmIChtb2R1 bGUpIHsKKwkJCWlndF9kZWJ1ZygidW5sb2FkaW5nICVzXG4iLCBtb2R1bGUpOworCQkJbW9kdWxl X3VubG9hZChjaGlwc2V0LCBtb2R1bGUpOworCQl9CisKKwkJaWYgKHJlY292ZXIpIHsKKwkJCWln dF9kZWJ1ZygicmVjb3ZlcmluZyBkZXZpY2VcbiIpOworCQkJcmVjb3ZlcihyZWNvdmVyX3ByaXYp OworCQkJaWd0X3Jlc2V0X3RpbWVvdXQoKTsKKwkJfQorCisJCWlndF9kZWJ1ZygicnVubmluZyBo ZWFsdGhjaGVja1xuIik7CisJCWhlYWx0aGNoZWNrKGNoaXBzZXQpOworCX0KK30KKworaWd0X21h aW4geworCWludCBkZXZpY2UsIGNoaXBzZXQ7CisJY2hhciAqbW9kdWxlOworCWludCBpLCBqOwor CisJaWd0X2ZpeHR1cmUgeworCQljaGFyIHBhdGhbUEFUSF9NQVhdOworCQlpbnQgZGlyLCBsZW47 CisKKwkJLyoqCisJCSAqIFNpbmNlIHNvbWUgc3VidGVzdHMgZGVwZW5kIG9uIHN1Y2Nlc3NmdWwg dW5sb2FkIG9mIGEgZHJpdmVyCisJCSAqIG1vZHVsZSwgZG9uJ3QgdXNlIGRybV9vcGVuX2RyaXZl cigpIGFzIGl0IGtlZXBzIGEgZGV2aWNlIGZpbGUKKwkJICogZGVzY3JpcHRvciBvcGVuIGZvciBl eGl0IGhhbmRsZXIgdXNlIGFuZCB0aGF0IGVmZmVjdGl2ZWx5CisJCSAqIHByZXZlbnRzIHRoZSBt b2R1bGUgZnJvbSBiZWluZyB1bmxvYWRlZC4KKwkJICovCisJCWRldmljZSA9IF9fZHJtX29wZW5f ZHJpdmVyKERSSVZFUl9BTlkpOworCQlpZ3RfYXNzZXJ0KGRldmljZSA+PSAwKTsKKworCQlpZiAo aXNfaTkxNV9kZXZpY2UoZGV2aWNlKSkgeworCQkJY2hpcHNldCA9IERSSVZFUl9JTlRFTDsKKwkJ CW1vZHVsZSA9IHN0cmR1cCgiaTkxNSIpOworCQl9IGVsc2UgeworCQkJY2hpcHNldCA9IERSSVZF Ul9BTlk7CisKKwkJCS8qIENhcHR1cmUgbW9kdWxlIG5hbWUgdG8gYmUgdW5sb2FkZWQgKi8KKwkJ CWRpciA9IGlndF9zeXNmc19vcGVuKGRldmljZSk7CisJCQlsZW4gPSByZWFkbGlua2F0KGRpciwg ImRldmljZS9kcml2ZXIvbW9kdWxlIiwgcGF0aCwKKwkJCQkJIHNpemVvZihwYXRoKSAtIDEpOwor CQkJY2xvc2UoZGlyKTsKKwkJCXBhdGhbbGVuXSA9ICdcMCc7CisJCQltb2R1bGUgPSBzdHJkdXAo c3RycmNocihwYXRoLCAnLycpICsgMSk7CisJCX0KKwkJY2xvc2UoZGV2aWNlKTsKKworCQlpZ3Rf aW5mbygiUnVubmluZyB0aGUgdGVzdCBvbiBkcml2ZXIgXCIlc1wiLCBjaGlwc2V0IG1hc2sgJSMw eFxuIiwKKwkJCSBtb2R1bGUsIGNoaXBzZXQpOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBzaXpl b2Yod29ya2xvYWRzKSAvIHNpemVvZigqd29ya2xvYWRzKTsgaSsrKSB7CisJCWZvciAoaiA9IDA7 IGogPCBzaXplb2YoYWN0aW9ucykgLyBzaXplb2YoKmFjdGlvbnMpOyBqKyspIHsKKwkJCS8qIHdp dGggbW9kdWxlIHVubG9hZCAqLworCQkJcnVuX3N1YnRlc3QoY2hpcHNldCwgaSwgaiwgbW9kdWxl KTsKKwkJCS8qIHdpdGhvdXQgbW9kdWxlIHVubG9hZCAqLworCQkJcnVuX3N1YnRlc3QoY2hpcHNl dCwgaSwgaiwgTlVMTCk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWls ZCBiL3Rlc3RzL21lc29uLmJ1aWxkCmluZGV4IDcxMTk3OWI0Li4wZDQxODAzNSAxMDA2NDQKLS0t IGEvdGVzdHMvbWVzb24uYnVpbGQKKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKQEAgLTMsNiArMyw3 IEBAIHRlc3RfcHJvZ3MgPSBbCiAJJ2NvcmVfZ2V0Y2xpZW50JywKIAknY29yZV9nZXRzdGF0cycs CiAJJ2NvcmVfZ2V0dmVyc2lvbicsCisJJ2NvcmVfaG90X3JlbG9hZCcsCiAJJ2NvcmVfc2V0bWFz dGVyX3ZzX2F1dGgnLAogCSdkZWJ1Z2ZzX3Rlc3QnLAogCSdkcm1faW1wb3J0X2V4cG9ydCcsCi0t IAoyLjIwLjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldg==