From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-14.7 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HK_RANDOM_FROM,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A4BC9C19F31 for ; Tue, 27 Jul 2021 14:44:40 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7367B61B00 for ; Tue, 27 Jul 2021 14:44:40 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 7367B61B00 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AC3376E525; Tue, 27 Jul 2021 14:44:37 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id B66256E02E; Tue, 27 Jul 2021 14:44:36 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10057"; a="192051835" X-IronPort-AV: E=Sophos;i="5.84,273,1620716400"; d="scan'208";a="192051835" Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jul 2021 07:44:35 -0700 X-IronPort-AV: E=Sophos;i="5.84,273,1620716400"; d="scan'208";a="437336219" Received: from jrgrant-mobl.ger.corp.intel.com (HELO [10.213.245.158]) ([10.213.245.158]) by fmsmga007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Jul 2021 07:44:32 -0700 To: Daniel Vetter , DRI Development References: <20210727121037.2041102-1-daniel.vetter@ffwll.ch> <20210727121037.2041102-11-daniel.vetter@ffwll.ch> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: Date: Tue, 27 Jul 2021 15:44:30 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210727121037.2041102-11-daniel.vetter@ffwll.ch> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH v2 11/11] drm/i915: Extract i915_module.c X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Daniel Vetter , Intel Graphics Development Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDI3LzA3LzIwMjEgMTM6MTAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gVGhlIG1vZHVsZSBp bml0IGNvZGUgaXMgc29tZXdoYXQgbWlzcGxhY2VkIGluIGk5MTVfcGNpLmMsIHNpbmNlIGl0Cj4g bmVlZHMgdG8gcHVsbCBpbiBpbml0L2V4aXQgZnVuY3Rpb25zIGZyb20gZXZlcnkgcGFydCBvZiB0 aGUgZHJpdmVyIGFuZAo+IHBvbGx1dGVzIHRoZSBpbmNsdWRlIGxpc3QgYSBsb3QuCj4gCj4gRXh0 cmFjdCBhbiBpOTE1X21vZHVsZS5jIGZpbGUgd2hpY2ggcHVsbHMgYWxsIHRoZSBiaXRzIHRvZ2V0 aGVyLCBhbmQKPiBhbGxvd3MgdXMgdG8gbWFzc2l2ZWx5IHRyaW0gdGhlIGluY2x1ZGUgbGlzdCBv ZiBpOTE1X3BjaS5jLgo+IAo+IFRoZSBkb3duc2lkZSBpcyB0aGF0IGhhdmUgdG8gZHJvcCB0aGUg ZXJyb3IgcGF0aCBjaGVjayBKYXNvbiBhZGRlZCB0bwo+IGNhdGNoIHdoZW4gd2Ugc2V0IHVwIHRo ZSBwY2kgZHJpdmVyIHRvbyBlYXJseS4gSSB0aGluayB0aGF0IHJpc2sgaXMKPiBhY2NlcHRhYmxl IGZvciB0aGlzIHByZXR0eSBuaWNlIGluY2x1ZGUuCgppOTE1X21vZHVsZS5jIGlzIGFuIGltcHJv dmVtZW50IGFuZCB0aGUgcmVzdCBmb3IgbWUgaXMgbm90IGV4dHJlbWVseSAKb2JqZWN0aW9uYWJs ZSBieSB0aGUgZW5kIG9mIHRoaXMgaW5jYXJuYXRpb24sIGJ1dCBJIGFsc28gZG8gbm90IHNlZSBp dCAKYXMgYW4gaW1wcm92ZW1lbnQgcmVhbGx5LgoKVGhlcmUgd2FzIGEgYnVnIHRvIGZpeCByZWxh dGluZyB0byBtb2NrIHRlc3RzLCBidXQgdGhhdCBpcyB3aGVyZSB0aGUgCmV4ZXJjaXNlIHNob3Vs ZCBoYXZlIHN0b3BwZWQgZm9yIG5vdy4gQWZ0ZXIgdGhhdCBpdCBJTUhPIHNwaXJhbGVkIG91dCBv ZiAKY29udHJvbCwgbm90IGxlYXN0IHRoZSB1bmp1c3RpZmlhYmx5IGV4cGVkaXRlZCByZW1vdmFs IG9mIGNhY2hlIApzaHJpbmtpbmcuIE9uIGJhbGFuY2UgZm9yIG1lIGl0IGlzIHRvbyBjaHVybnkg YW5kIGJvaWxzIGRvd24gdG8gdHdvIApleHRyZW1lbHkgY2FwYWJsZSBwZW9wbGUgc3BlbmRpbmcg dGltZSBvbiBraW5kIG9mIHJlYWxseSB1bmltcG9ydGFudCAKc2lkZSBmaWRkbGVzLiBBbmQgSSBk byBub3QgaW50ZW5kIHRvIHByZXNjcmliZSB5b3Ugd2hhdCB0byBkbywganVzdCAKZXhwcmVzc2lu ZyBteSBiZXdpbGRlcm1lbnQuIEZXSVcuLi4gSSBjYW4gb25seSBzYXkgbXkgb3BpbmlvbiBhcyBp dCwgbm90IAp0aGF0IGl0IG1hdHRlcnMgYSBsb3QuCgpSZWdhcmRzLAoKVHZydGtvCgo+IENjOiBK YXNvbiBFa3N0cmFuZCA8amFzb25Aamxla3N0cmFuZC5uZXQ+Cj4gQ2M6IFR2cnRrbyBVcnN1bGlu IDx0dnJ0a28udXJzdWxpbkBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSAgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfbW9kdWxlLmMgfCAxMTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYyAgICB8IDExNyArLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuaCAgICB8ICAgOCArKwo+ ICAgNCBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKSwgMTE0IGRlbGV0aW9ucygtKQo+ ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfbW9kdWxlLmMK PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5oCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCA5MDIyZGM2MzhlZDYuLjRlYmQ5ZjQxN2RkYiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTM4LDYgKzM4LDcgQEAgaTkxNS15ICs9IGk5 MTVfZHJ2Lm8gXAo+ICAgCSAgaTkxNV9pcnEubyBcCj4gICAJICBpOTE1X2dldHBhcmFtLm8gXAo+ ICAgCSAgaTkxNV9taXRpZ2F0aW9ucy5vIFwKPiArCSAgaTkxNV9tb2R1bGUubyBcCj4gICAJICBp OTE1X3BhcmFtcy5vIFwKPiAgIAkgIGk5MTVfcGNpLm8gXAo+ICAgCSAgaTkxNV9zY2F0dGVybGlz dC5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9tb2R1bGUuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfbW9kdWxlLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzU3OGVhOGY1NmEwCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfbW9kdWxlLmMKPiBAQCAtMCwwICsxLDExMyBA QAo+ICsvKgo+ICsgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKyAqCj4gKyAqIENv cHlyaWdodCDCqSAyMDIxIEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUg PGxpbnV4L2NvbnNvbGUuaD4KPiArCj4gKyNpbmNsdWRlICJnZW0vaTkxNV9nZW1fY29udGV4dC5o Igo+ICsjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX29iamVjdC5oIgo+ICsjaW5jbHVkZSAiaTkxNV9h Y3RpdmUuaCIKPiArI2luY2x1ZGUgImk5MTVfYnVkZHkuaCIKPiArI2luY2x1ZGUgImk5MTVfcGFy YW1zLmgiCj4gKyNpbmNsdWRlICJpOTE1X3BjaS5oIgo+ICsjaW5jbHVkZSAiaTkxNV9wZXJmLmgi Cj4gKyNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIKPiArI2luY2x1ZGUgImk5MTVfc2NoZWR1bGVy LmgiCj4gKyNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCj4gKyNpbmNsdWRlICJpOTE1X3ZtYS5o Igo+ICsKPiArc3RhdGljIGludCBpOTE1X2NoZWNrX25vbW9kZXNldCh2b2lkKQo+ICt7Cj4gKwli b29sIHVzZV9rbXMgPSB0cnVlOwo+ICsKPiArCS8qCj4gKwkgKiBFbmFibGUgS01TIGJ5IGRlZmF1 bHQsIHVubGVzcyBleHBsaWNpdGx5IG92ZXJyaWRlbiBieQo+ICsJICogZWl0aGVyIHRoZSBpOTE1 Lm1vZGVzZXQgcHJhcmFtZXRlciBvciBieSB0aGUKPiArCSAqIHZnYV90ZXh0X21vZGVfZm9yY2Ug Ym9vdCBvcHRpb24uCj4gKwkgKi8KPiArCj4gKwlpZiAoaTkxNV9tb2RwYXJhbXMubW9kZXNldCA9 PSAwKQo+ICsJCXVzZV9rbXMgPSBmYWxzZTsKPiArCj4gKwlpZiAodmdhY29uX3RleHRfZm9yY2Uo KSAmJiBpOTE1X21vZHBhcmFtcy5tb2Rlc2V0ID09IC0xKQo+ICsJCXVzZV9rbXMgPSBmYWxzZTsK PiArCj4gKwlpZiAoIXVzZV9rbXMpIHsKPiArCQkvKiBTaWxlbnRseSBmYWlsIGxvYWRpbmcgdG8g bm90IHVwc2V0IHVzZXJzcGFjZS4gKi8KPiArCQlEUk1fREVCVUdfRFJJVkVSKCJLTVMgZGlzYWJs ZWQuXG4iKTsKPiArCQlyZXR1cm4gMTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4gKyAgIGludCAoKmluaXQpKHZvaWQpOwo+ICsgICB2 b2lkICgqZXhpdCkodm9pZCk7Cj4gK30gaW5pdF9mdW5jc1tdID0gewo+ICsJeyBpOTE1X2NoZWNr X25vbW9kZXNldCwgTlVMTCB9LAo+ICsJeyBpOTE1X2FjdGl2ZV9tb2R1bGVfaW5pdCwgaTkxNV9h Y3RpdmVfbW9kdWxlX2V4aXQgfSwKPiArCXsgaTkxNV9idWRkeV9tb2R1bGVfaW5pdCwgaTkxNV9i dWRkeV9tb2R1bGVfZXhpdCB9LAo+ICsJeyBpOTE1X2NvbnRleHRfbW9kdWxlX2luaXQsIGk5MTVf Y29udGV4dF9tb2R1bGVfZXhpdCB9LAo+ICsJeyBpOTE1X2dlbV9jb250ZXh0X21vZHVsZV9pbml0 LCBpOTE1X2dlbV9jb250ZXh0X21vZHVsZV9leGl0IH0sCj4gKwl7IGk5MTVfb2JqZWN0c19tb2R1 bGVfaW5pdCwgaTkxNV9vYmplY3RzX21vZHVsZV9leGl0IH0sCj4gKwl7IGk5MTVfcmVxdWVzdF9t b2R1bGVfaW5pdCwgaTkxNV9yZXF1ZXN0X21vZHVsZV9leGl0IH0sCj4gKwl7IGk5MTVfc2NoZWR1 bGVyX21vZHVsZV9pbml0LCBpOTE1X3NjaGVkdWxlcl9tb2R1bGVfZXhpdCB9LAo+ICsJeyBpOTE1 X3ZtYV9tb2R1bGVfaW5pdCwgaTkxNV92bWFfbW9kdWxlX2V4aXQgfSwKPiArCXsgaTkxNV9tb2Nr X3NlbGZ0ZXN0cywgTlVMTCB9LAo+ICsJeyBpOTE1X3BtdV9pbml0LCBpOTE1X3BtdV9leGl0IH0s Cj4gKwl7IGk5MTVfcmVnaXN0ZXJfcGNpX2RyaXZlciwgaTkxNV91bnJlZ2lzdGVyX3BjaV9kcml2 ZXIgfSwKPiArCXsgaTkxNV9wZXJmX3N5c2N0bF9yZWdpc3RlciwgaTkxNV9wZXJmX3N5c2N0bF91 bnJlZ2lzdGVyIH0sCj4gK307Cj4gK3N0YXRpYyBpbnQgaW5pdF9wcm9ncmVzczsKPiArCj4gK3N0 YXRpYyBpbnQgX19pbml0IGk5MTVfaW5pdCh2b2lkKQo+ICt7Cj4gKwlpbnQgZXJyLCBpOwo+ICsK PiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGluaXRfZnVuY3MpOyBpKyspIHsKPiArCQll cnIgPSBpbml0X2Z1bmNzW2ldLmluaXQoKTsKPiArCQlpZiAoZXJyIDwgMCkgewo+ICsJCQl3aGls ZSAoaS0tKSB7Cj4gKwkJCQlpZiAoaW5pdF9mdW5jc1tpXS5leGl0KQo+ICsJCQkJCWluaXRfZnVu Y3NbaV0uZXhpdCgpOwo+ICsJCQl9Cj4gKwkJCXJldHVybiBlcnI7Cj4gKwkJfSBlbHNlIGlmIChl cnIgPiAwKSB7Cj4gKwkJCS8qCj4gKwkJCSAqIEVhcmx5LWV4aXQgc3VjY2VzcyBpcyByZXNlcnZl ZCBmb3IgdGhpbmdzIHdoaWNoCj4gKwkJCSAqIGRvbid0IGhhdmUgYW4gZXhpdCgpIGZ1bmN0aW9u IGJlY2F1c2Ugd2UgaGF2ZSBubwo+ICsJCQkgKiBpZGVhIGhvdyBmYXIgdGhleSBnb3Qgb3IgaG93 IHRvIHBhcnRpYWxseSB0ZWFyCj4gKwkJCSAqIHRoZW0gZG93bi4KPiArCQkJICovCj4gKwkJCVdB Uk5fT04oaW5pdF9mdW5jc1tpXS5leGl0KTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsK PiArCWluaXRfcHJvZ3Jlc3MgPSBpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgdm9pZCBfX2V4aXQgaTkxNV9leGl0KHZvaWQpCj4gK3sKPiArCWludCBpOwo+ICsKPiArCWZv ciAoaSA9IGluaXRfcHJvZ3Jlc3MgLSAxOyBpID49IDA7IGktLSkgewo+ICsJCUdFTV9CVUdfT04o aSA+PSBBUlJBWV9TSVpFKGluaXRfZnVuY3MpKTsKPiArCQlpZiAoaW5pdF9mdW5jc1tpXS5leGl0 KQo+ICsJCQlpbml0X2Z1bmNzW2ldLmV4aXQoKTsKPiArCX0KPiArfQo+ICsKPiArbW9kdWxlX2lu aXQoaTkxNV9pbml0KTsKPiArbW9kdWxlX2V4aXQoaTkxNV9leGl0KTsKPiArCj4gK01PRFVMRV9B VVRIT1IoIlR1bmdzdGVuIEdyYXBoaWNzLCBJbmMuIik7Cj4gK01PRFVMRV9BVVRIT1IoIkludGVs IENvcnBvcmF0aW9uIik7Cj4gKwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oRFJJVkVSX0RFU0MpOwo+ ICtNT0RVTEVfTElDRU5TRSgiR1BMIGFuZCBhZGRpdGlvbmFsIHJpZ2h0cyIpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BjaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wY2kuYwo+IGluZGV4IGI0ZjVlODhhYWFlNi4uMDg2NTFjYTAzNDc4IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BjaS5jCj4gQEAgLTIyLDI0ICsyMiwxMyBAQAo+ICAgICoKPiAgICAq Lwo+ICAgCj4gLSNpbmNsdWRlIDxsaW51eC9jb25zb2xlLmg+Cj4gICAjaW5jbHVkZSA8bGludXgv dmdhX3N3aXRjaGVyb28uaD4KPiAgIAo+ICAgI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+Cj4gICAj aW5jbHVkZSA8ZHJtL2k5MTVfcGNpaWRzLmg+Cj4gICAKPiAtI2luY2x1ZGUgImRpc3BsYXkvaW50 ZWxfZmJkZXYuaCIKPiAtCj4gLSNpbmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+IC0jaW5jbHVkZSAi aTkxNV9idWRkeS5oIgo+ICAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gLSNpbmNsdWRlICJnZW0v aTkxNV9nZW1fY29udGV4dC5oIgo+IC0jaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX29iamVjdC5oIgo+ IC0jaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gLSNpbmNsdWRlICJpOTE1X3BlcmYuaCIKPiAt I2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiAtI2luY2x1ZGUgImk5MTVfc2NoZWR1bGVyLmgi Cj4gLSNpbmNsdWRlICJpOTE1X3ZtYS5oIgo+ICsjaW5jbHVkZSAiaTkxNV9wY2kuaCIKPiAgIAo+ ICAgI2RlZmluZSBQTEFURk9STSh4KSAucGxhdGZvcm0gPSAoeCkKPiAgICNkZWZpbmUgR0VOKHgp IFwKPiBAQCAtMTI1MSwzMSArMTI0MCw2IEBAIHN0YXRpYyB2b2lkIGk5MTVfcGNpX3NodXRkb3du KHN0cnVjdCBwY2lfZGV2ICpwZGV2KQo+ICAgCWk5MTVfZHJpdmVyX3NodXRkb3duKGk5MTUpOwo+ ICAgfQo+ICAgCj4gLXN0YXRpYyBpbnQgaTkxNV9jaGVja19ub21vZGVzZXQodm9pZCkKPiAtewo+ IC0JYm9vbCB1c2Vfa21zID0gdHJ1ZTsKPiAtCj4gLQkvKgo+IC0JICogRW5hYmxlIEtNUyBieSBk ZWZhdWx0LCB1bmxlc3MgZXhwbGljaXRseSBvdmVycmlkZW4gYnkKPiAtCSAqIGVpdGhlciB0aGUg aTkxNS5tb2Rlc2V0IHByYXJhbWV0ZXIgb3IgYnkgdGhlCj4gLQkgKiB2Z2FfdGV4dF9tb2RlX2Zv cmNlIGJvb3Qgb3B0aW9uLgo+IC0JICovCj4gLQo+IC0JaWYgKGk5MTVfbW9kcGFyYW1zLm1vZGVz ZXQgPT0gMCkKPiAtCQl1c2Vfa21zID0gZmFsc2U7Cj4gLQo+IC0JaWYgKHZnYWNvbl90ZXh0X2Zv cmNlKCkgJiYgaTkxNV9tb2RwYXJhbXMubW9kZXNldCA9PSAtMSkKPiAtCQl1c2Vfa21zID0gZmFs c2U7Cj4gLQo+IC0JaWYgKCF1c2Vfa21zKSB7Cj4gLQkJLyogU2lsZW50bHkgZmFpbCBsb2FkaW5n IHRvIG5vdCB1cHNldCB1c2Vyc3BhY2UuICovCj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiS01TIGRp c2FibGVkLlxuIik7Cj4gLQkJcmV0dXJuIDE7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0K PiAtCj4gICBzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgaTkxNV9wY2lfZHJpdmVyID0gewo+ICAg CS5uYW1lID0gRFJJVkVSX05BTUUsCj4gICAJLmlkX3RhYmxlID0gcGNpaWRsaXN0LAo+IEBAIC0x Mjg1LDg3ICsxMjQ5LDEyIEBAIHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBpOTE1X3BjaV9kcml2 ZXIgPSB7Cj4gICAJLmRyaXZlci5wbSA9ICZpOTE1X3BtX29wcywKPiAgIH07Cj4gICAKPiAtc3Rh dGljIGludCBpOTE1X3JlZ2lzdGVyX3BjaV9kcml2ZXIodm9pZCkKPiAraW50IGk5MTVfcmVnaXN0 ZXJfcGNpX2RyaXZlcih2b2lkKQo+ICAgewo+ICAgCXJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVy KCZpOTE1X3BjaV9kcml2ZXIpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIGk5MTVfdW5yZWdp c3Rlcl9wY2lfZHJpdmVyKHZvaWQpCj4gK3ZvaWQgaTkxNV91bnJlZ2lzdGVyX3BjaV9kcml2ZXIo dm9pZCkKPiAgIHsKPiAgIAlwY2lfdW5yZWdpc3Rlcl9kcml2ZXIoJmk5MTVfcGNpX2RyaXZlcik7 Cj4gICB9Cj4gLQo+IC1zdGF0aWMgY29uc3Qgc3RydWN0IHsKPiAtICAgaW50ICgqaW5pdCkodm9p ZCk7Cj4gLSAgIHZvaWQgKCpleGl0KSh2b2lkKTsKPiAtfSBpbml0X2Z1bmNzW10gPSB7Cj4gLQl7 IGk5MTVfY2hlY2tfbm9tb2Rlc2V0LCBOVUxMIH0sCj4gLQl7IGk5MTVfYWN0aXZlX21vZHVsZV9p bml0LCBpOTE1X2FjdGl2ZV9tb2R1bGVfZXhpdCB9LAo+IC0JeyBpOTE1X2J1ZGR5X21vZHVsZV9p bml0LCBpOTE1X2J1ZGR5X21vZHVsZV9leGl0IH0sCj4gLQl7IGk5MTVfY29udGV4dF9tb2R1bGVf aW5pdCwgaTkxNV9jb250ZXh0X21vZHVsZV9leGl0IH0sCj4gLQl7IGk5MTVfZ2VtX2NvbnRleHRf bW9kdWxlX2luaXQsIGk5MTVfZ2VtX2NvbnRleHRfbW9kdWxlX2V4aXQgfSwKPiAtCXsgaTkxNV9v YmplY3RzX21vZHVsZV9pbml0LCBpOTE1X29iamVjdHNfbW9kdWxlX2V4aXQgfSwKPiAtCXsgaTkx NV9yZXF1ZXN0X21vZHVsZV9pbml0LCBpOTE1X3JlcXVlc3RfbW9kdWxlX2V4aXQgfSwKPiAtCXsg aTkxNV9zY2hlZHVsZXJfbW9kdWxlX2luaXQsIGk5MTVfc2NoZWR1bGVyX21vZHVsZV9leGl0IH0s Cj4gLQl7IGk5MTVfdm1hX21vZHVsZV9pbml0LCBpOTE1X3ZtYV9tb2R1bGVfZXhpdCB9LAo+IC0J eyBpOTE1X21vY2tfc2VsZnRlc3RzLCBOVUxMIH0sCj4gLQl7IGk5MTVfcG11X2luaXQsIGk5MTVf cG11X2V4aXQgfSwKPiAtCXsgaTkxNV9yZWdpc3Rlcl9wY2lfZHJpdmVyLCBpOTE1X3VucmVnaXN0 ZXJfcGNpX2RyaXZlciB9LAo+IC0JeyBpOTE1X3BlcmZfc3lzY3RsX3JlZ2lzdGVyLCBpOTE1X3Bl cmZfc3lzY3RsX3VucmVnaXN0ZXIgfSwKPiAtfTsKPiAtc3RhdGljIGludCBpbml0X3Byb2dyZXNz Owo+IC0KPiAtc3RhdGljIGludCBfX2luaXQgaTkxNV9pbml0KHZvaWQpCj4gLXsKPiAtCWludCBl cnIsIGk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5pdF9mdW5jcyk7IGkr Kykgewo+IC0JCWVyciA9IGluaXRfZnVuY3NbaV0uaW5pdCgpOwo+IC0JCWlmIChlcnIgPCAwKSB7 Cj4gLQkJCXdoaWxlIChpLS0pIHsKPiAtCQkJCWlmIChpbml0X2Z1bmNzW2ldLmV4aXQpCj4gLQkJ CQkJaW5pdF9mdW5jc1tpXS5leGl0KCk7Cj4gLQkJCX0KPiAtCQkJcmV0dXJuIGVycjsKPiAtCQl9 IGVsc2UgaWYgKGVyciA+IDApIHsKPiAtCQkJLyoKPiAtCQkJICogRWFybHktZXhpdCBzdWNjZXNz IGlzIHJlc2VydmVkIGZvciB0aGluZ3Mgd2hpY2gKPiAtCQkJICogZG9uJ3QgaGF2ZSBhbiBleGl0 KCkgZnVuY3Rpb24gYmVjYXVzZSB3ZSBoYXZlIG5vCj4gLQkJCSAqIGlkZWEgaG93IGZhciB0aGV5 IGdvdCBvciBob3cgdG8gcGFydGlhbGx5IHRlYXIKPiAtCQkJICogdGhlbSBkb3duLgo+IC0JCQkg Ki8KPiAtCQkJV0FSTl9PTihpbml0X2Z1bmNzW2ldLmV4aXQpOwo+IC0KPiAtCQkJLyoKPiAtCQkJ ICogV2UgZG9uJ3Qgd2FudCB0byBhZHZlcnRpc2UgZGV2aWNlcyB3aXRoIGFuIG9ubHkKPiAtCQkJ ICogcGFydGlhbGx5IGluaXRpYWxpemVkIGRyaXZlci4KPiAtCQkJICovCj4gLQkJCVdBUk5fT04o aTkxNV9wY2lfZHJpdmVyLmRyaXZlci5vd25lcik7Cj4gLQkJCWJyZWFrOwo+IC0JCX0KPiAtCX0K PiAtCj4gLQlpbml0X3Byb2dyZXNzID0gaTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAt c3RhdGljIHZvaWQgX19leGl0IGk5MTVfZXhpdCh2b2lkKQo+IC17Cj4gLQlpbnQgaTsKPiAtCj4g LQlmb3IgKGkgPSBpbml0X3Byb2dyZXNzIC0gMTsgaSA+PSAwOyBpLS0pIHsKPiAtCQlHRU1fQlVH X09OKGkgPj0gQVJSQVlfU0laRShpbml0X2Z1bmNzKSk7Cj4gLQkJaWYgKGluaXRfZnVuY3NbaV0u ZXhpdCkKPiAtCQkJaW5pdF9mdW5jc1tpXS5leGl0KCk7Cj4gLQl9Cj4gLX0KPiAtCj4gLW1vZHVs ZV9pbml0KGk5MTVfaW5pdCk7Cj4gLW1vZHVsZV9leGl0KGk5MTVfZXhpdCk7Cj4gLQo+IC1NT0RV TEVfQVVUSE9SKCJUdW5nc3RlbiBHcmFwaGljcywgSW5jLiIpOwo+IC1NT0RVTEVfQVVUSE9SKCJJ bnRlbCBDb3Jwb3JhdGlvbiIpOwo+IC0KPiAtTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVND KTsKPiAtTU9EVUxFX0xJQ0VOU0UoIkdQTCBhbmQgYWRkaXRpb25hbCByaWdodHMiKTsKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGNpLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MDAwMC4uYjM4NmYzMTlmNTJlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGNpLmgKPiBAQCAtMCwwICsxLDggQEAKPiArLyoKPiArICogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAyMSBJbnRlbCBD b3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gK2ludCBpOTE1X3JlZ2lzdGVyX3BjaV9kcml2ZXIodm9p ZCk7Cj4gK3ZvaWQgaTkxNV91bnJlZ2lzdGVyX3BjaV9kcml2ZXIodm9pZCk7Cj4gCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=