From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sagar Arun Kamble Subject: [PATCH v12 07/17] drm/i915/guc/slpc: Send RESET event to restart/enable SLPC tasks Date: Fri, 30 Mar 2018 14:01:52 +0530 Message-ID: <1522398722-12161-8-git-send-email-sagar.a.kamble@intel.com> References: <1522398722-12161-1-git-send-email-sagar.a.kamble@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 011986E85A for ; Fri, 30 Mar 2018 08:28:43 +0000 (UTC) In-Reply-To: <1522398722-12161-1-git-send-email-sagar.a.kamble@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: Sujaritha Sundaresan List-Id: intel-gfx@lists.freedesktop.org SG9zdCB0byBHdUMgYWN0aW9ucyBmb3IgU0xQQyByZWNlaXZlIGFkZGl0aW9uYWwgZGF0YSBhcyBv dXRwdXQgdGhyb3VnaApzY3JhdGNoIHJlZ2lzdGVycyBjdXJyZW50bHkuIGludGVsX2d1Y19zZW5k X2FuZF9yZWNlaXZlIGhhbmRsZXMgdGhpcy4KV2UgbmVlZCB0byBkZWZpbmUgU0xQQyBzcGVjaWZp YyBIb3N0IHRvIEd1QyBzZW5kIGFjdGlvbiAoc2xwY19zZW5kKSBhcwp3cmFwcGVyIG9uIHRvcCBv ZiBpdCB0byBwcm9jZXNzIHRoZSBTTFBDIHN0YXR1cyB0aGF0IGlzIHJlY2VpdmVkIGluClNPRlRf U0NSQVRDSCgxKS4KClNlbmQgaG9zdDJndWMgU0xQQyByZXNldCBldmVudCB0byBHdUMgcG9zdCBH dUMgbG9hZCBmb3IgZW5hYmxpbmcgU0xQQy4KUG9zdCB0aGlzLCBpOTE1IGNhbiBhc2NlcnRhaW4g aWYgU0xQQyBoYXMgc3RhcnRlZCBydW5uaW5nIHN1Y2Nlc3NmdWxseQp0aHJvdWdoIHNoYXJlZCBk YXRhLiBUaGlzIGNoZWNrIGlzIGRvbmUgYnkgd2FpdGluZyBmb3IgbWF4aW11bSA1bXMuClNMUEMg cmVzZXQgZXZlbnQgYWxzbyBuZWVkcyB0byBiZSBzZW50IHdoZW4gcGFyYW1ldGVycyBpbiBzaGFy ZWQgZGF0YQphcmUgdXBkYXRlZC4KCnYxOiBFeHRyYWN0IGhvc3QyZ3VjX3NscGMgdG8gaGFuZGxl IHNscGMgc3RhdHVzIGNvZGUgYW5kIHN0eWxlIGNoYW5nZXMuCiAgICAoUGF1bG8pLiBSZW1vdmVk IFdBUk5fT04gZm9yIGNoZWNraW5nIG1zYiBvZiBndHQgYWRkcmVzcyBvZiBzaGFyZWQKICAgICBn ZW0gb2JqLiAoQ2hyaXMpLiBob3N0Mmd1Y19hY3Rpb24gdG8gaTkxNV9ndWNfYWN0aW9uIGNoYW5n ZS4oU2FnYXIpCiAgICBVcGRhdGluZyBTTFBDIGVuYWJsZWQgc3RhdHVzLiAoU2FnYXIpCgp2Mjog Q29tbWl0IG1lc3NhZ2UgdXBkYXRlLiAoRGF2aWQpCgp2MzogUmViYXNlLgoKdjQ6IEFkZGVkIERS TV9JTkZPIG1lc3NhZ2Ugd2hlbiBTTFBDIGlzIGVuYWJsZWQuCgp2NTogVXBkYXRlZCBwYXRjaCBh cyBob3N0Mmd1Y19zbHBjIGlzIG1vdmVkIHRvIGVhcmxpZXIgcGF0Y2guIFNMUEMKICAgIGFjdGl2 YXRpb24gc3RhdHVzIG1lc3NhZ2UgcHV0IGFmdGVyIGNoZWNraW5nIHRoZSBzdGF0ZSBmcm9tIHNo YXJlZAogICAgZGF0YSBkdXJpbmcgaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUuCgp2NjogQWRkZWQg ZGVmaW5pdGlvbiBvZiBob3N0Mmd1Y19zbHBjIGFuZCBjbGZsdXNoIHRoZSBzaGFyZWQgZGF0YSBv bmx5CiAgICBmb3IgcmVxdWlyZWQgc2l6ZS4gU2V0dGluZyBzdGF0ZSB0byBOT1RfUlVOTklORyBi ZWZvcmUgc2VuZGluZyBSRVNFVAogICAgZXZlbnQuIE91dHB1dCBkYXRhIGZvciBTTFBDIGFjdGlv bnMgaXMgdG8gYmUgcmV0cmlldmVkIGR1cmluZwogICAgaW50ZWxfZ3VjX3NlbmQgd2l0aCBsb2Nr IHByb3RlY3Rpb24gc28gY3JlYXRlZCB3cmFwcGVyCiAgICBfX2ludGVsX2d1Y19zZW5kIHRoYXQg b3V0cHV0cyBHdUMgb3V0cHV0IGRhdGEgaWYgbmVlZGVkLiBDbGVhcmluZwogICAgcG1fcnBzX2V2 ZW50cyBvbiBjb25maXJtaW5nIFNMUEMgUlVOTklORyBzdGF0dXMgc28gdGhhdCBldmVuIGlmCiAg ICBob3N0IHRvdWNoZXMgYW55IG9mIHRoZSBQTSByZWdpc3RlcnMgYnkgbWlzdGFrZSBpdCBzaG91 bGQgbm90IGhhdmUKICAgIGFueSBlZmZlY3QuIChTYWdhcikKCnY3OiBBZGRlZCBzYXZlL3Jlc3Rv cmVfZGVmYXVsdF9ycHMgYXMgVW5jb3JlIHNhbml0aXplIHdpbGwgY2xlYXIgdGhlCiAgICBSUF9D T05UUk9MIHNldHVwIGJ5IEJJT1MuIHMvaTkxNV9nZ3R0X29mZnNldC9ndWNfZ2d0dF9vZmZzZXQu Cgp2ODogQWRkZWQgc3VwcG9ydCBmb3IgaGFuZGxpbmcgVERSIGJhc2VkIFNMUEMgcmVzZXQuIEFk ZGVkIGZ1bmN0aW9ucwogICAgaG9zdDJndWNfc2xwY190ZHJfcmVzZXQsIGludGVsX3NscGNfcmVz ZXRfcHJlcGFyZSBhbmQKICAgIGludGVsX3NscGNfdGRyX3Jlc2V0IHRvIGhhbmRsZSBURFIgYmFz ZWQgU0xQQyByZXNldC4KCnY5OiBNb3ZlZCBURFIgc3VwcG9ydCB0byBsYXRlciBwYXRjaC4gUmVt b3ZlZCBpbnRlbF9zbHBjX2dldF9zdGF0dXMKICAgIGFuZCB3YWl0aW5nIGZvciBtYXhpbXVtIG9m IDVtcyBmb3IgU0xQQyBzdGF0ZSB0byB0dXJuIFJVTk5JTkcgaW5zdGVhZAogICAgb2YgaGlkaW5n IHRoZSBsYXRlbmN5IGFjcm9zcyB1Y19pbml0X2h3IGFuZCBpbml0X2d0X3Bvd2Vyc2F2ZS4KICAg IHMvaWYuLmVsc2Uvc3dpdGNoLi5jYXNlIGluIGludGVsX2d1Y19zbHBjX2dldF9zdGF0ZV9zdHIu IFJlbW92ZWQgU0xQQwogICAgc2FuaXRpemF0aW9uIGZyb20gaW5pdF9ndF9wb3dlcnNhdmUuIChN aWNoYWwgV2FqZGVjemtvKQoKdjEwOiBSZWJhc2UuCgp2MTE6IFJlYmFzZS4gQ3JlYXRlZCBzbHBj X3NlbmQgZnVuYyBhcyB3cmFwcGVyIG9uIGd1Y19zZW5kX2FuZF9yZWNlaXZlLgoKU2lnbmVkLW9m Zi1ieTogU2FnYXIgQXJ1biBLYW1ibGUgPHNhZ2FyLmEua2FtYmxlQGludGVsLmNvbT4KQ2M6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSm9vbmFzIExhaHRpbmVu IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogUmFkb3NsYXcgU3p3aWNodGVu YmVyZyA8cmFkb3NsYXcuc3p3aWNodGVuYmVyZ0BpbnRlbC5jb20+CkNjOiBNaWNoYWwgV2FqZGVj emtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KQ2M6IFN1amFyaXRoYSBTdW5kYXJlc2Fu IDxzdWphcml0aGEuc3VuZGFyZXNhbkBpbnRlbC5jb20+CkNjOiBKZWZmIE1jR2VlIDxqZWZmLm1j Z2VlQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc2xwYy5j IHwgMjM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2Vk LCAyMzkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19zbHBjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc2xwYy5jCmlu ZGV4IDk3NGEzYzAuLmJjMmM3MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19zbHBjLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3NscGMu YwpAQCAtMTYzLDYgKzE2MywyMTEgQEAgc3RhdGljIHZvaWQgc2xwY19zaGFyZWRfZGF0YV9pbml0 KHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xwYykKIAlrdW5tYXBfYXRvbWljKGRhdGEpOwogfQog CitzdGF0aWMgY29uc3QgY2hhciAqc2xwY19zdGF0dXNfc3RyaW5naWZ5KGludCBzdGF0dXMpCit7 CisJY29uc3QgY2hhciAqc3RyID0gTlVMTDsKKworCXN3aXRjaChzdGF0dXMpIHsKKwljYXNlIFNM UENfU1RBVFVTX09LOgorCQlzdHIgPSAiT2siOworCQlicmVhazsKKwljYXNlIFNMUENfU1RBVFVT X0VSUk9SOgorCQlzdHIgPSAiRXJyb3IiOworCQlicmVhazsKKwljYXNlIFNMUENfU1RBVFVTX0lM TEVHQUxfQ09NTUFORDoKKwkJc3RyID0gIklsbGVnYWwgY29tbWFuZCI7CisJCWJyZWFrOworCWNh c2UgU0xQQ19TVEFUVVNfSU5WQUxJRF9BUkdTOgorCQlzdHIgPSAiSW52YWxpZCBhcmdzIjsKKwkJ YnJlYWs7CisJY2FzZSBTTFBDX1NUQVRVU19JTlZBTElEX1BBUkFNUzoKKwkJc3RyID0gIkludmFs aWQgcGFyYW1zIjsKKwkJYnJlYWs7CisJY2FzZSBTTFBDX1NUQVRVU19JTlZBTElEX0RBVEE6CisJ CXN0ciA9ICJJbnZhbGlkIGRhdGEiOworCQlicmVhazsKKwljYXNlIFNMUENfU1RBVFVTX09VVF9P Rl9SQU5HRToKKwkJc3RyID0gIk91dCBvZiByYW5nZSI7CisJCWJyZWFrOworCWNhc2UgU0xQQ19T VEFUVVNfTk9UX1NVUFBPUlRFRDoKKwkJc3RyID0gIk5vdCBzdXBwb3J0ZWQiOworCQlicmVhazsK KwljYXNlIFNMUENfU1RBVFVTX05PVF9JTVBMRU1FTlRFRDoKKwkJc3RyID0gIk5vdCBpbXBsZW1l bnRlZCI7CisJCWJyZWFrOworCWNhc2UgU0xQQ19TVEFUVVNfTk9fREFUQToKKwkJc3RyID0gIk5v IGRhdGEiOworCQlicmVhazsKKwljYXNlIFNMUENfU1RBVFVTX0VWRU5UX05PVF9SRUdJU1RFUkVE OgorCQlzdHIgPSAiRXZlbnQgbm90IHJlZ2lzdGVyZWQiOworCQlicmVhazsKKwljYXNlIFNMUENf U1RBVFVTX1JFR0lTVEVSX0xPQ0tFRDoKKwkJc3RyID0gIlJlZ2lzdGVyIGxvY2tlZCI7CisJCWJy ZWFrOworCWNhc2UgU0xQQ19TVEFUVVNfVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEU6CisJCXN0ciA9 ICJUZW1wb3JhcmlseSB1bmF2YWlsYWJsZSI7CisJCWJyZWFrOworCWNhc2UgU0xQQ19TVEFUVVNf VkFMVUVfQUxSRUFEWV9TRVQ6CisJCXN0ciA9ICJWYWx1ZSBhbHJlYWR5IHNldCI7CisJCWJyZWFr OworCWNhc2UgU0xQQ19TVEFUVVNfVkFMVUVfQUxSRUFEWV9VTlNFVDoKKwkJc3RyID0gIlZhbHVl IGFscmVhZHkgdW5zZXQiOworCQlicmVhazsKKwljYXNlIFNMUENfU1RBVFVTX1ZBTFVFX05PVF9D SEFOR0VEOgorCQlzdHIgPSAiVmFsdWUgbm90IGNoYW5nZWQiOworCQlicmVhazsKKwljYXNlIFNM UENfU1RBVFVTX01FTUlPX0VSUk9SOgorCQlzdHIgPSAiTU1JTyBlcnJvciI7CisJCWJyZWFrOwor CWNhc2UgU0xQQ19TVEFUVVNfRVZFTlRfUVVFVUVEX1JFUV9EUEM6CisJCXN0ciA9ICJFdmVudCBx dWV1ZWQsIERQQyByZXF1ZXN0ZWQiOworCQlicmVhazsKKwljYXNlIFNMUENfU1RBVFVTX0VWRU5U X1FVRVVFRF9OT1JFUV9EUEM6CisJCXN0ciA9ICJFdmVudCBxdWV1ZWQsIERQQyBub3QgcmVxdWVz dGVkIjsKKwkJYnJlYWs7CisJY2FzZSBTTFBDX1NUQVRVU19OT19FVkVOVF9RVUVVRUQ6CisJCXN0 ciA9ICJFdmVudCBub3QgcXVldWVkIjsKKwkJYnJlYWs7CisJY2FzZSBTTFBDX1NUQVRVU19PVVRf T0ZfU1BBQ0U6CisJCXN0ciA9ICJPdXQgb2Ygc3BhY2UiOworCQlicmVhazsKKwljYXNlIFNMUENf U1RBVFVTX1RJTUVPVVQ6CisJCXN0ciA9ICJUaW1lb3V0IjsKKwkJYnJlYWs7CisJY2FzZSBTTFBD X1NUQVRVU19OT19MT0NLOgorCQlzdHIgPSAiTm8gbG9jayI7CisJCWJyZWFrOworCX0KKworCXJl dHVybiBzdHI7Cit9CisKK3N0YXRpYyB2b2lkIHNscGNfc2VuZChzdHJ1Y3QgaW50ZWxfZ3VjX3Ns cGMgKnNscGMsCisJCSAgICAgIHN0cnVjdCBzbHBjX2V2ZW50X2lucHV0ICppbnB1dCwgdTMyIGlu X2xlbikKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBzbHBjX3RvX2d1YyhzbHBjKTsKKwlz dHJ1Y3Qgc2xwY19ldmVudF9vdXRwdXQgb3V0cHV0OworCXUzMiBvdXRfbGVuID0gMTsKKwl1MzIg KmFjdGlvbjsKKwlpbnQgcmV0OworCisJYWN0aW9uID0gKHUzMiAqKWlucHV0OworCWFjdGlvblsw XSA9IElOVEVMX0dVQ19BQ1RJT05fU0xQQ19SRVFVRVNUOworCisJcmV0ID0gaW50ZWxfZ3VjX3Nl bmRfYW5kX3JlY2VpdmUoZ3VjLCBhY3Rpb24sIGluX2xlbiwKKwkJCQkJICh1MzIgKikmb3V0cHV0 LmhlYWRlciwgb3V0X2xlbik7CisKKwkvKgorCSAqIEN1cnJlbnRseSBvdXRwdXQgZGF0YSBmcm9t IEhvc3QgdG8gR3VDIFNMUEMgYWN0aW9ucyBpcyBwb3B1bGF0ZWQKKwkgKiBpbiBzY3JhdGNoIHJl Z2lzdGVycyBTT0ZUX1NDUkFUQ0goMSkgdG8gU09GVF9TQ1JBVENIKDE0KSBiYXNlZAorCSAqIG9u IGV2ZW50LiBDdXJyZW50bHkgb25seSBTTFBDIGFjdGlvbiBzdGF0dXMgaW4gR3VDIGlzIG1lYW5p bmdmdWwKKwkgKiBhcyBIb3N0IGNhbiBxdWVyeSBvbmx5IG92ZXJyaWRkZW4gcGFyYW1ldGVycyBh bmQgdGhhdCBhcmUgZmV0Y2hlZAorCSAqIGZyb20gSG9zdC1HdUMgU0xQQyBzaGFyZWQgZGF0YS4g T3RoZXIgcGFyYW1ldGVycyBjYW4gYmUgcmVhZCB0aHJvdWdoCisJICogb3V0cHV0IGRhdGEgYnV0 IHRoYXQgaXMgYXZhaWxhYmxlIG9ubHkgZm9yIGRlYnVnIEd1QyBmaXJtd2FyZXMuCisJICovCisJ aWYgKCFyZXQpIHsKKwkJcmV0ID0gb3V0cHV0LmhlYWRlci5zdGF0dXM7CisJCWlmIChyZXQpIHsK KwkJCUdFTV9CVUdfT04ocmV0ID49IFNMUENfU1RBVFVTX01BWCk7CisJCQlEUk1fRVJST1IoImV2 ZW50IDB4JXggc3RhdHVzICVzXG4iLAorCQkJCSAgKChvdXRwdXQuaGVhZGVyLnZhbHVlICYgMHhG RjAwKSA+PiA4KSwKKwkJCQkgIHNscGNfc3RhdHVzX3N0cmluZ2lmeShyZXQpKTsKKwkJfQorCX0K K30KKworc3RhdGljIHZvaWQgaG9zdDJndWNfc2xwY19yZXNldChzdHJ1Y3QgaW50ZWxfZ3VjX3Ns cGMgKnNscGMpCit7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gc2xwY190b19ndWMoc2xwYyk7 CisJdTMyIHNoYXJlZF9kYXRhX2d0dF9vZmZzZXQgPSBpbnRlbF9ndWNfZ2d0dF9vZmZzZXQoZ3Vj LCBzbHBjLT52bWEpOworCXN0cnVjdCBzbHBjX2V2ZW50X2lucHV0IGRhdGEgPSB7MH07CisKKwlk YXRhLmhlYWRlci52YWx1ZSA9IFNMUENfRVZFTlQoU0xQQ19FVkVOVF9SRVNFVCwgMik7CisJZGF0 YS5hcmdzWzBdID0gc2hhcmVkX2RhdGFfZ3R0X29mZnNldDsKKwlkYXRhLmFyZ3NbMV0gPSAwOwor CisJc2xwY19zZW5kKHNscGMsICZkYXRhLCA0KTsKK30KKworc3RhdGljIHZvaWQgaG9zdDJndWNf c2xwY19xdWVyeV90YXNrX3N0YXRlKHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xwYykKK3sKKwlz dHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBzbHBjX3RvX2d1YyhzbHBjKTsKKwl1MzIgc2hhcmVkX2Rh dGFfZ3R0X29mZnNldCA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIHNscGMtPnZtYSk7CisJ c3RydWN0IHNscGNfZXZlbnRfaW5wdXQgZGF0YSA9IHswfTsKKworCWRhdGEuaGVhZGVyLnZhbHVl ID0gU0xQQ19FVkVOVChTTFBDX0VWRU5UX1FVRVJZX1RBU0tfU1RBVEUsIDIpOworCWRhdGEuYXJn c1swXSA9IHNoYXJlZF9kYXRhX2d0dF9vZmZzZXQ7CisJZGF0YS5hcmdzWzFdID0gMDsKKworCXNs cGNfc2VuZChzbHBjLCAmZGF0YSwgNCk7Cit9CisKK3N0YXRpYyB2b2lkIHNscGNfcmVhZF9zaGFy ZWRfZGF0YShzdHJ1Y3QgaW50ZWxfZ3VjX3NscGMgKnNscGMsCisJCQkJICBzdHJ1Y3Qgc2xwY19z aGFyZWRfZGF0YSAqZGF0YSkKK3sKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKwl2b2lkICpwdiA9IE5V TEw7CisKKwlob3N0Mmd1Y19zbHBjX3F1ZXJ5X3Rhc2tfc3RhdGUoc2xwYyk7CisKKwlwYWdlID0g aTkxNV92bWFfZmlyc3RfcGFnZShzbHBjLT52bWEpOworCXB2ID0ga21hcF9hdG9taWMocGFnZSk7 CisKKwlkcm1fY2xmbHVzaF92aXJ0X3JhbmdlKHB2LCBzaXplb2Yoc3RydWN0IHNscGNfc2hhcmVk X2RhdGEpKTsKKwltZW1jcHkoZGF0YSwgcHYsIHNpemVvZihzdHJ1Y3Qgc2xwY19zaGFyZWRfZGF0 YSkpOworCisJa3VubWFwX2F0b21pYyhwdik7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpzbHBj X3N0YXRlX3N0cmluZ2lmeShlbnVtIHNscGNfZ2xvYmFsX3N0YXRlIHN0YXRlKQoreworCWNvbnN0 IGNoYXIgKnN0ciA9IE5VTEw7CisKKwlzd2l0Y2ggKHN0YXRlKSB7CisJY2FzZSBTTFBDX0dMT0JB TF9TVEFURV9OT1RfUlVOTklORzoKKwkJc3RyID0gIm5vdCBydW5uaW5nIjsKKwkJYnJlYWs7CisJ Y2FzZSBTTFBDX0dMT0JBTF9TVEFURV9JTklUSUFMSVpJTkc6CisJCXN0ciA9ICJpbml0aWFsaXpp bmciOworCQlicmVhazsKKwljYXNlIFNMUENfR0xPQkFMX1NUQVRFX1JFU0VUVElORzoKKwkJc3Ry ID0gInJlc2V0dGluZyI7CisJCWJyZWFrOworCWNhc2UgU0xQQ19HTE9CQUxfU1RBVEVfUlVOTklO RzoKKwkJc3RyID0gInJ1bm5pbmciOworCQlicmVhazsKKwljYXNlIFNMUENfR0xPQkFMX1NUQVRF X1NIVVRUSU5HX0RPV046CisJCXN0ciA9ICJzaHV0dGluZyBkb3duIjsKKwkJYnJlYWs7CisJY2Fz ZSBTTFBDX0dMT0JBTF9TVEFURV9FUlJPUjoKKwkJc3RyID0gImVycm9yIjsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJc3RyID0gInVua25vd24iOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gc3Ry OworfQorCitzdGF0aWMgY29uc3QgY2hhciAqc2xwY19nZXRfc3RhdGUoc3RydWN0IGludGVsX2d1 Y19zbHBjICpzbHBjKQoreworCXN0cnVjdCBzbHBjX3NoYXJlZF9kYXRhIGRhdGE7CisKKwlzbHBj X3JlYWRfc2hhcmVkX2RhdGEoc2xwYywgJmRhdGEpOworCisJcmV0dXJuIHNscGNfc3RhdGVfc3Ry aW5naWZ5KGRhdGEuZ2xvYmFsX3N0YXRlKTsKK30KKworc3RhdGljIGJvb2wgc2xwY19ydW5uaW5n KHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xwYykKK3sKKwlzdHJ1Y3Qgc2xwY19zaGFyZWRfZGF0 YSBkYXRhOworCisJc2xwY19yZWFkX3NoYXJlZF9kYXRhKHNscGMsICZkYXRhKTsKKworCXJldHVy biAoZGF0YS5nbG9iYWxfc3RhdGUgPT0gU0xQQ19HTE9CQUxfU1RBVEVfUlVOTklORyk7Cit9CisK IC8qKgogICogaW50ZWxfZ3VjX3NscGNfaW5pdCgpIC0gSW5pdGlhbGl6ZSB0aGUgU0xQQyBzaGFy ZWQgZGF0YSBzdHJ1Y3R1cmUuCiAgKiBAc2xwYzogcG9pbnRlciB0byBpbnRlbF9ndWNfc2xwYy4K QEAgLTIwNCw4ICs0MDksNDIgQEAgaW50IGludGVsX2d1Y19zbHBjX2luaXQoc3RydWN0IGludGVs X2d1Y19zbHBjICpzbHBjKQogCXJldHVybiAwOwogfQogCisvKioKKyAqIGludGVsX2d1Y19zbHBj X2VuYWJsZSgpIC0gU3RhcnQgU0xQQy4KKyAqIEBzbHBjOiBwb2ludGVyIHRvIGludGVsX2d1Y19z bHBjLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBzdGFydCBHdUMgU0xQQyBieSBzZW5kaW5n IEhvc3QgdG8gR3VDIGFjdGlvbi4KKyAqIFNMUEMgc2hhcmVkIGRhdGEgaGFzIHRvIGJlIGluaXRp YWxpemVkIHByaW9yIHRvIHRoaXMgYnkKKyAqIGludGVsX2d1Y19zbHBjX2luaXQoKS4KKyAqCisg KiBSZXR1cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gZXJyb3IgY29kZSBvbiBmYWlsdXJlLgor ICovCiBpbnQgaW50ZWxfZ3VjX3NscGNfZW5hYmxlKHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xw YykKIHsKKwlzdHJ1Y3Qgc2xwY19zaGFyZWRfZGF0YSAqZGF0YTsKKwlzdHJ1Y3QgcGFnZSAqcGFn ZTsKKworCW11dGV4X2xvY2soJnNscGMtPmxvY2spOworCisJcGFnZSA9IGk5MTVfdm1hX2ZpcnN0 X3BhZ2Uoc2xwYy0+dm1hKTsKKwlkYXRhID0ga21hcF9hdG9taWMocGFnZSk7CisJZGF0YS0+Z2xv YmFsX3N0YXRlID0gU0xQQ19HTE9CQUxfU1RBVEVfTk9UX1JVTk5JTkc7CisJa3VubWFwX2F0b21p YyhkYXRhKTsKKworCWhvc3QyZ3VjX3NscGNfcmVzZXQoc2xwYyk7CisKKwkvKiBDaGVjayB3aGV0 aGVyIFNMUEMgaXMgcnVubmluZyAqLworCWlmICh3YWl0X2ZvcihzbHBjX3J1bm5pbmcoc2xwYyks IDUpKSB7CisJCURSTV9FUlJPUigiU0xQQyBub3QgZW5hYmxlZCEgU3RhdGUgPSAlc1xuIiwKKwkJ CSAgc2xwY19nZXRfc3RhdGUoc2xwYykpOworCQltdXRleF91bmxvY2soJnNscGMtPmxvY2spOwor CQlyZXR1cm4gLUVJTzsKKwl9CisKKwlEUk1fSU5GTygiU0xQQyBzdGF0ZTogJXNcbiIsIHNscGNf Z2V0X3N0YXRlKHNscGMpKTsKKworCW11dGV4X3VubG9jaygmc2xwYy0+bG9jayk7CisKIAlyZXR1 cm4gMDsKIH0KIAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=