From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Goel, Akash" Subject: Re: [PATCH v9] drm/i915: Support to enable TRTT on GEN9 Date: Thu, 24 Mar 2016 22:06:38 +0530 Message-ID: <56F41796.2020804@intel.com> References: <1458296604-16781-1-git-send-email-akash.goel@intel.com> <1458636164-4905-1-git-send-email-akash.goel@intel.com> <8FCC70911F3E9548866CA0E51893BCC32FAF7032@irsmsx105.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id AF29E6E9FA for ; Thu, 24 Mar 2016 16:36:42 +0000 (UTC) In-Reply-To: <8FCC70911F3E9548866CA0E51893BCC32FAF7032@irsmsx105.ger.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Gore, Tim" , "intel-gfx@lists.freedesktop.org" Cc: akash.goel@intel.com List-Id: intel-gfx@lists.freedesktop.org CgpPbiAzLzI0LzIwMTYgOTo1OSBQTSwgR29yZSwgVGltIHdyb3RlOgo+Cj4gVGltIEdvcmUKPiBJ bnRlbCBDb3Jwb3JhdGlvbiAoVUspIEx0ZC4gLSBDby4gUmVnLiAjMTEzNDk0NSAtIFBpcGVycyBX YXksIFN3aW5kb24gU04zIDFSSgo+Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZy b206IEludGVsLWdmeCBbbWFpbHRvOmludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZ10gT24gQmVoYWxmCj4+IE9mIGFrYXNoLmdvZWxAaW50ZWwuY29tCj4+IFNlbnQ6IFR1ZXNk YXksIE1hcmNoIDIyLCAyMDE2IDg6NDMgQU0KPj4gVG86IGludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPj4gQ2M6IEdvZWwsIEFrYXNoCj4+IFN1YmplY3Q6IFtJbnRlbC1nZnhdIFtQQVRD SCB2OV0gZHJtL2k5MTU6IFN1cHBvcnQgdG8gZW5hYmxlIFRSVFQgb24gR0VOOQo+Pgo+PiBGcm9t OiBBa2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KPj4KPj4gR2VuOSBoYXMgYW4gYWRk aXRpb25hbCBhZGRyZXNzIHRyYW5zbGF0aW9uIGhhcmR3YXJlIHN1cHBvcnQgaW4gZm9ybSBvZiBU aWxlZAo+PiBSZXNvdXJjZSBUcmFuc2xhdGlvbiBUYWJsZSAoVFItVFQpIHdoaWNoIHByb3ZpZGVz IGFuIGV4dHJhIGxldmVsIG9mCj4+IGFic3RyYWN0aW9uIG92ZXIgUFBHVFQuCj4+IFRoaXMgaXMg dXNlZnVsIGZvciBtYXBwaW5nIFNwYXJzZS9UaWxlZCB0ZXh0dXJlIHJlc291cmNlcy4KPj4gU3Bh cnNlIHJlc291cmNlcyBhcmUgY3JlYXRlZCBhcyB2aXJ0dWFsLW9ubHkgYWxsb2NhdGlvbnMuIFJl Z2lvbnMgb2YgdGhlCj4+IHJlc291cmNlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGludGVuZHMgdG8g dXNlIGlzIGJvdW5kIHRvIHRoZSBwaHlzaWNhbCBtZW1vcnkKPj4gb24gdGhlIGZseSBhbmQgY2Fu IGJlIHJlLWJvdW5kIHRvIGRpZmZlcmVudCBtZW1vcnkgYWxsb2NhdGlvbnMgb3ZlciB0aGUKPj4g bGlmZXRpbWUgb2YgdGhlIHJlc291cmNlLgo+Pgo+PiBUUi1UVCBpcyB0aWdodGx5IGNvdXBsZWQg d2l0aCBQUEdUVCwgYSBuZXcgaW5zdGFuY2Ugb2YgVFItVFQgd2lsbCBiZSByZXF1aXJlZAo+PiBm b3IgYSBuZXcgUFBHVFQgaW5zdGFuY2UsIGJ1dCBUUi1UVCBtYXkgbm90IGVuYWJsZWQgZm9yIGV2 ZXJ5IGNvbnRleHQuCj4+IDEvMTZ0aCBvZiB0aGUgNDhiaXQgUFBHVFQgc3BhY2UgaXMgZWFybWFy a2VkIGZvciB0aGUgdHJhbnNsYXRpb24gYnkgVFItVFQsCj4+IHdoaWNoIHN1Y2ggY2h1bmsgdG8g dXNlIGlzIGNvbnZleWVkIHRvIEhXIHRocm91Z2ggYSByZWdpc3Rlci4KPj4gQW55IEdGWCBhZGRy ZXNzLCB3aGljaCBsaWVzIGluIHRoYXQgcmVzZXJ2ZWQgNDQgYml0IHJhbmdlIHdpbGwgYmUgdHJh bnNsYXRlZAo+PiB0aHJvdWdoIFRSLVRUIGZpcnN0IGFuZCB0aGVuIHRocm91Z2ggUFBHVFQgdG8g Z2V0IHRoZSBhY3R1YWwgcGh5c2ljYWwKPj4gYWRkcmVzcywgc28gdGhlIG91dHB1dCBvZiB0cmFu c2xhdGlvbiBmcm9tIFRSLVRUIHdpbGwgYmUgYSBQUEdUVCBvZmZzZXQuCj4+Cj4+IFRSVFQgaXMg Y29uc3RydWN0ZWQgYXMgYSAzIGxldmVsIHRpbGUgVGFibGUuIEVhY2ggdGlsZSBpcyA2NEtCIGlz IHNpemUgd2hpY2ggbGVhdmVzCj4+IGJlaGluZCA0NC0xNj0yOCBhZGRyZXNzIGJpdHMuIDI4Yml0 cyBhcmUgcGFydGl0aW9uZWQgYXMgOSs5KzEwLCBhbmQgZWFjaAo+PiBsZXZlbCBpcyBjb250YWlu ZWQgd2l0aGluIGEgNEtCIHBhZ2UgaGVuY2UgTDMgYW5kIEwyIGlzIGNvbXBvc2VkIG9mCj4+IDUx MiA2NGIgZW50cmllcyBhbmQgTDEgaXMgY29tcG9zZWQgb2YgMTAyNCAzMmIgZW50cmllcy4KPj4K Pj4gVGhlcmUgaXMgYSBwcm92aXNpb24gdG8ga2VlcCBUUi1UVCBUYWJsZXMgaW4gdmlydHVhbCBz cGFjZSwgd2hlcmUgdGhlIHBhZ2VzIG9mCj4+IFRSVFQgdGFibGVzIHdpbGwgYmUgbWFwcGVkIHRv IFBQR1RULgo+PiBDdXJyZW50bHkgdGhpcyBpcyB0aGUgc3VwcG9ydGVkIG1vZGUsIGluIHRoaXMg bW9kZSBVTUQgd2lsbCBoYXZlIGEgZnVsbAo+PiBjb250cm9sIG9uIFRSLVRUIG1hbmFnZW1lbnQs IHdpdGggYmFyZSBtaW5pbXVtIHN1cHBvcnQgZnJvbSBLTUQuCj4+IFNvIHRoZSBlbnRyaWVzIG9m IEwzIHRhYmxlIHdpbGwgY29udGFpbiB0aGUgUFBHVFQgb2Zmc2V0IG9mIEwyIFRhYmxlIHBhZ2Vz LAo+PiBzaW1pbGFybHkgZW50cmllcyBvZiBMMiB0YWJsZSB3aWxsIGNvbnRhaW4gdGhlIFBQR1RU IG9mZnNldCBvZiBMMSBUYWJsZSBwYWdlcy4KPj4gVGhlIGVudHJpZXMgb2YgTDEgdGFibGUgd2ls bCBjb250YWluIHRoZSBQUEdUVCBvZmZzZXQgb2YgQk9zIGFjdHVhbGx5IGJhY2tpbmcKPj4gdGhl IFNwYXJzZSByZXNvdXJjZXMuCj4+IFVNRCB3aWxsIGhhdmUgdG8gYWxsb2NhdGUgdGhlIEwzL0wy L0wxIHRhYmxlIHBhZ2VzIGFzIGEgcmVndWxhciBCTyBvbmx5ICYKPj4gYXNzaWduIHRoZW0gYSBQ UEdUVCBhZGRyZXNzIHRocm91Z2ggdGhlIFNvZnQgUGluIEFQSSAoZm9yIGV4YW1wbGUsIHVzZSBz b2Z0Cj4+IHBpbiB0byBhc3NpZ24gbDNfdGFibGVfYWRkcmVzcyB0byB0aGUgTDMgdGFibGUgQk8s IHdoZW4gdXNlZCkuCj4+IFVNRCB3aWxsIGFsc28gcHJvZ3JhbSB0aGUgZW50cmllcyBpbiB0aGUg VFItVFQgcGFnZSB0YWJsZXMgdXNpbmcgcmVndWxhcgo+PiBiYXRjaCBjb21tYW5kcyAoTUlfU1RP UkVfREFUQV9JTU0pLCBvciB2aWEgbW1hcHBpbmcgb2YgdGhlIHBhZ2UKPj4gdGFibGUgQk9zLgo+ PiBVTUQgbWF5IGRvIHRoZSBjb21wbGV0ZSBQUEdUVCBhZGRyZXNzIHNwYWNlIG1hbmFnZW1lbnQs IG9uIHRoZQo+PiBwcmV0ZXh0IHRoYXQgaXQgY291bGQgaGVscCBtaW5pbWl6ZSB0aGUgY29uZmxp Y3RzLgo+Pgo+PiBBbnkgc3BhY2UgaW4gVFItVFQgc2VnbWVudCBub3QgYm91bmQgdG8gYW55IFNw YXJzZSB0ZXh0dXJlLCB3aWxsIGJlIGhhbmRsZWQKPj4gdGhyb3VnaCBJbnZhbGlkIHRpbGUsIFVz ZXIgaXMgZXhwZWN0ZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZW50cmllcyBvZiBhIG5ldwo+PiBMMy9M Mi9MMSB0YWJsZSBwYWdlIHdpdGggdGhlIEludmFsaWQgdGlsZSBwYXR0ZXJuLiBUaGUgZW50cmll cyBjb3JyZXNwb25kaW5nIHRvCj4+IHRoZSBob2xlcyBpbiB0aGUgU3BhcnNlIHRleHR1cmUgcmVz b3VyY2Ugd2lsbCBiZSBzZXQgd2l0aCB0aGUgTnVsbCB0aWxlIHBhdHRlcm4KPj4gVGhlIGltcHJv cGVyIHByb2dyYW1taW5nIG9mIFRSVFQgc2hvdWxkIG9ubHkgbGVhZCB0byBhIHJlY292ZXJhYmxl IEdQVQo+PiBoYW5nLCBldmVudHVhbGx5IGxlYWRpbmcgdG8gYmFubmluZyBvZiB0aGUgY3VscHJp dCBjb250ZXh0IHdpdGhvdXQgdmljdGltaXppbmcKPj4gb3RoZXJzLgo+Pgo+PiBUaGUgYXNzb2Np YXRpb24gb2YgYW55IFNwYXJzZSByZXNvdXJjZSB3aXRoIHRoZSBCT3Mgd2lsbCBiZSBrbm93biBv bmx5IHRvCj4+IFVNRCwgYW5kIG9ubHkgdGhlIFNwYXJzZSByZXNvdXJjZXMgc2hhbGwgYmUgYXNz aWduZWQgYW4gb2Zmc2V0IGZyb20gdGhlIFRSLQo+PiBUVCBzZWdtZW50IGJ5IFVNRC4gVGhlIHVz ZSBvZiBUUi1UVCBzZWdtZW50IG9yIG1hcHBpbmcgb2YgU3BhcnNlCj4+IHJlc291cmNlcyB3aWxs IGJlIHRyYW5zcGFyZW50IHRvIHRoZSBLTUQsIFVNRCB3aWxsIGRvIHRoZSBhZGRyZXNzCj4+IGFz c2lnbm1lbnQgZnJvbSBUUi1UVCBzZWdtZW50IGF1dG9ub21vdXNseSBhbmQgS01EIHdpbGwgYmUg b2JsaXZpb3VzIG9mCj4+IGl0Lgo+PiBBbnkgb2JqZWN0IG11c3Qgbm90IGJlIGFzc2lnbmVkIGFu IGFkZHJlc3MgZnJvbSBUUi1UVCBzZWdtZW50LCB0aGV5IHdpbGwKPj4gYmUgbWFwcGVkIHRvIFBQ R1RUIGluIGEgcmVndWxhciB3YXkgYnkgS01ELgo+Pgo+PiBUaGlzIHBhdGNoIHByb3ZpZGVzIGFu IGludGVyZmFjZSB0aHJvdWdoIHdoaWNoIFVNRCBjYW4gY29udmV5IEtNRCB0bwo+PiBlbmFibGUg VFItVFQgZm9yIGEgZ2l2ZW4gY29udGV4dC4gQSBuZXcgSTkxNV9DT05URVhUX1BBUkFNX1RSVFQg cGFyYW0KPj4gaGFzIGJlZW4gYWRkZWQgdG8gSTkxNV9HRU1fQ09OVEVYVF9TRVRQQVJBTSBpb2N0 bCBmb3IgdGhhdCBwdXJwb3NlLgo+PiBVTUQgd2lsbCBoYXZlIHRvIHBhc3MgdGhlIEdGWCBhZGRy ZXNzIG9mIEwzIHRhYmxlIHBhZ2UsIHN0YXJ0IGxvY2F0aW9uIG9mIFRSLQo+PiBUVCBzZWdtZW50 IGFsb25nd2l0aCB0aGUgcGF0dGVybiB2YWx1ZSBmb3IgdGhlIE51bGwgJiBpbnZhbGlkIFRpbGUg cmVnaXN0ZXJzLgo+Pgo+PiB2MjoKPj4gICAtIFN1cHBvcnQgY29udGV4dF9nZXRwYXJhbSBmb3Ig VFJUVCBhbHNvIGFuZCBkaXNwZW5zZSB3aXRoIGEgc2VwYXJhdGUKPj4gICAgIEdFVFBBUkFNIGNh c2UgZm9yIFRSVFQgKENocmlzKS4KPj4gICAtIFVzZSBpOTE1X2RiZyB0byBsb2cgZXJyb3JzIGZv ciB0aGUgaW52YWxpZCBUUlRUIEFCSSBwYXJhbWV0ZXJzIHBhc3NlZAo+PiAgICAgZnJvbSB1c2Vy IHNwYWNlIChDaHJpcykuCj4+ICAgLSBNb3ZlIGFsbCB0aGUgYXJndW1lbnQgY2hlY2tpbmcgZm9y IFRSVFQgaW4gY29udGV4dF9zZXRwYXJhbSB0byB0aGUKPj4gICAgIHNldF90cnR0IGZ1bmN0aW9u IChDaHJpcykuCj4+ICAgLSBDaGFuZ2UgdGhlIHR5cGUgb2YgJ2ZsYWdzJyBmaWVsZCBpbnNpZGUg J2ludGVsX2NvbnRleHQnIHRvIHVuc2lnbmVkIChDaHJpcykKPj4gICAtIFJlbmFtZSBjZXJ0YWlu IGZ1bmN0aW9ucyB0byByaWdodGx5IHJlZmxlY3QgdGhlaXIgcHVycG9zZSwgcmVuYW1lCj4+ICAg ICB0aGUgbmV3IHBhcmFtIGZvciBUUlRUIGluIGdlbV9jb250ZXh0X3BhcmFtIHRvCj4+IEk5MTVf Q09OVEVYVF9QQVJBTV9UUlRULAo+PiAgICAgcmVwaHJhc2UgZmV3IGxpbmVzIGluIHRoZSBjb21t aXQgbWVzc2FnZSBib2R5LCBhZGQgbW9yZSBjb21tZW50cwo+PiAoQ2hyaXMpLgo+PiAgIC0gRXh0 ZW5kIEFCSSB0byBhbGxvdyBVc2VyIHNwZWNpZnkgVFJUVCBzZWdtZW50IGxvY2F0aW9uIGFsc28u Cj4+ICAgLSBGaXggZm9yIHNlbGVjdGl2ZSBlbmFibGluZyBvZiBUUlRUIG9uIHBlciBjb250ZXh0 IGJhc2lzLCBleHBsaWNpdGx5Cj4+ICAgICBkaXNhYmxlIFRSLVRUIGF0IHRoZSBzdGFydCBvZiBh IG5ldyBjb250ZXh0Lgo+Pgo+PiB2MzoKPj4gICAtIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Yg Z2VuOV9lbWl0X3RydHRfcmVncyAoQ2hyaXMpCj4+ICAgLSBVcGRhdGUgdGhlIGtlcm5lbCBkb2Mg Zm9yIGludGVsX2NvbnRleHQgc3RydWN0dXJlLgo+PiAgIC0gUmViYXNlZC4KPj4KPj4gdjQ6Cj4+ ICAgLSBGaXggdGhlIHdhcm5pbmdzIHJlcG9ydGVkIGJ5ICdjaGVja3BhdGNoLnBsIC0tc3RyaWN0 JyAoTWljaGVsKQo+PiAgIC0gRml4IHRoZSBjb250ZXh0X2dldHBhcmFtIGltcGxlbWVudGF0aW9u IGF2b2lkaW5nIHRoZSByZXNldCBvZiBzaXplIGZpZWxkLAo+PiAgICAgYWZmZWN0aW5nIHRoZSBU UlRUIGNhc2UuCj4+Cj4+IHY1Ogo+PiAgIC0gVXBkYXRlIHRoZSBUUi1UVCBwYXJhbXMgcmlnaHQg YXdheSBpbiBjb250ZXh0X3NldHBhcmFtLCBieSBjb25zdHJ1Y3RpbmcKPj4gICAgICYgc3VibWl0 dGluZyBhIHJlcXVlc3QgZW1pdHRpbmcgTFJJcywgaW5zdGVhZCBvZiBkZWZlcnJpbmcgaXQgYW5k Cj4+ICAgICBjb25mbGF0aW5nIHdpdGggdGhlIG5leHQgYmF0Y2ggc3VibWlzc2lvbiAoQ2hyaXMp Cj4+ICAgLSBGb2xsb3cgdGhlIHN0cnVjdF9tdXRleCBoYW5kbGluZyByZWxhdGVkIHByZXNjcmli ZWQgcnVsZXMsIHdoaWxlIGFjY2Vzc2luZwo+PiAgICAgVXNlciBzcGFjZSBidWZmZXIsIGJvdGgg aW4gY29udGV4dF9zZXRwYXJhbSAmIGdldHBhcmFtIGZ1bmN0aW9ucyAoQ2hyaXMpLgo+Pgo+PiB2 NjoKPj4gICAtIEZpeCB0aGUgd2FybmluZyBjYXVzZWQgZHVlIHRvIHJlbW92YWwgb2YgdW4tYWxs b2NhdGVkIHRydHQgdm1hIG5vZGUuCj4+Cj4+IHY3Ogo+PiAgIC0gTW92ZSBjb250ZXh0IHJlZi91 bnJlZiB0byBjb250ZXh0X3NldHBhcmFtX2lvY3RsIGZyb20gc2V0X3RydHQoKSAmCj4+IHJlbW92 ZQo+PiAgICAgdGhhdCBmcm9tIGdldF90cnR0KCkgYXMgbm90IHJlYWxseSBuZWVkZWQgdGhlcmUg KENocmlzKS4KPj4gICAtIEFkZCBhIGNoZWNrIGZvciBpbXByb3BlciB2YWx1ZXMgZm9yIE51bGwg JiBJbnZhbGlkIFRpbGVzLgo+PiAgIC0gUmVtb3ZlIHN1cGVyZmx1b3VzIERSTV9FUlJPUiBmcm9t IHRydHRfY29udGV4dF9hbGxvY2F0ZV92bWEgKENocmlzKS4KPj4gICAtIFJlYmFzZWQuCj4+Cj4+ IHY4Ogo+PiAgIC0gQWRkIGNvbnRleHQgcmVmL3VucmVmIHRvIGNvbnRleHRfZ2V0cGFyYW1faW9j dGwgYWxzbyBzbyBhcyB0byBiZQo+PiBjb25zaXN0ZW50Cj4+ICAgICBhbmQgZWFzZSB0aGUgZXh0 ZW5zaW9uIG9mIGlvY3RsIGluIGZ1dHVyZSAoQ2hyaXMpCj4+Cj4+IHY5Ogo+PiAgIC0gRml4IHRo ZSBoYW5kbGluZyBvZiByZXR1cm4gdmFsdWUgZnJvbSB0cnR0X2NvbnRleHRfYWxsb2NhdGVfdm1h KCkgZnVuY3Rpb24sCj4+ICAgICBjYXVzaW5nIGtlcm5lbCBwYW5pYyBhdCB0aGUgdGltZSBvZiBk ZXN0cm95aW5nIGNvbnRleHQsIGluIGNhc2Ugb2YKPj4gICAgIHVuc3VjY2Vzc2Z1bCBhbGxvY2F0 aW9uIG9mIHRydHQgdm1hLgo+PiAgIC0gUmViYXNlZC4KPj4KPj4gVGVzdGNhc2U6IGlndC9nZW1f dHJ0dAo+Pgo+PiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+ IENjOiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+PiBTaWduZWQt b2ZmLWJ5OiBBa2FzaCBHb2VsIDxha2FzaC5nb2VsQGludGVsLmNvbT4KPj4gUmV2aWV3ZWQtYnk6 IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+PiAtLS0KPj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAgMTYgKysrLQo+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDE1Nwo+PiArKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jICAgICB8ICA2NSArKysrKysrKysrKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZ3R0LmggICAgIHwgICA4ICsrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCAgICAgICAgIHwgIDE5ICsrKysKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYyAgICAgICAgfCAxMjQgKysrKysrKysrKysrKysrKysrKysrKysrLQo+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICB8ICAgMSArCj4+ICAgaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwgICA4ICsrCj4+ICAgOCBmaWxlcyBjaGFuZ2Vk LCAzOTMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGluZGV4IGVjYmQ0MTguLjI3MmQxZjggMTAwNjQ0Cgo+Pgo+PiBAQCAtMjY1Nyw2 ICsyNjY5LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7Cj4+ICAgCQkJCSAhSVNfVkFM TEVZVklFVyhkZXYpICYmCj4+ICFJU19DSEVSUllWSUVXKGRldikgJiYgXAo+PiAgIAkJCQkgIUlT X0JST1hUT04oZGV2KSkKPj4KPj4gKyNkZWZpbmUgSEFTX1RSVFQoZGV2KQkJKElTX0dFTjkoZGV2 KSkKPj4gKwo+Cj4gQSB2ZXJ5IG1pbm9yIHBvaW50LCBidXQgdGhlcmUgaXMgYSB3L2EgdG8gZGlz YWJsZSBUUlRUIGZvciBCWFRfUkVWSURfQTAvMS4gSSByZWFsaXNlIHRoaXMKPiBpcyBiYXNpY2Fs bHkgb2Jzb2xldGUgbm93LCBidXQgSSdtIHN0aWxsIHVzaW5nIG9uZSEKPgpUaGFua3MgZm9yIHJh aXNpbmcgdGhpcy4KTWljaGVsICYgVGhvbWFzIGFsc28gYXBwcmlzZWQgbWUgYWJvdXQgYSBzaW1p bGFyIFdBIGZvciBLQkwuCldhcyB0aGlua2luZyB0byBzdWJtaXQgdGhhdCBhcyBhIGZvbGxvdyB1 cCBwYXRjaC4KCkJlc3QgcmVnYXJkcwpBa2FzaAo+PiAgIAlyZXR1cm4gcmV0Owo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+PiBpbmRleCAwNzE1YmI3Li5jYmY4YTAzIDEwMDY0 NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+PiBAQCAtMjE2OSw2ICsyMTY5LDE3 IEBAIGludCBpOTE1X3BwZ3R0X2luaXRfaHcoc3RydWN0IGRybV9kZXZpY2UgKmRldikgIHsKPj4g ICAJZ3R0X3dyaXRlX3dvcmthcm91bmRzKGRldik7Cj4+Cj4+ICsJaWYgKEhBU19UUlRUKGRldikg JiYgVVNFU19GVUxMXzQ4QklUX1BQR1RUKGRldikpIHsKPj4gKwkJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwkJLyoKPj4gKwkJICogR2xv YmFsbHkgZW5hYmxlIFRSLVRUIHN1cHBvcnQgaW4gSHcuCj4+ICsJCSAqIFN0aWxsIFRSLVRUIGVu YWJsaW5nIG9uIHBlciBjb250ZXh0IGJhc2lzIGlzIHJlcXVpcmVkLgo+PiArCQkgKiBOb24tdHJ0 dCBjb250ZXh0cyBhcmUgbm90IGFmZmVjdGVkIGJ5IHRoaXMgc2V0dGluZy4KPj4gKwkJICovCj4+ ICsJCUk5MTVfV1JJVEUoR0VOOV9UUl9DSElDS0VOX0JJVF9WRUNUT1IsCj4+ICsJCQkgICBHRU45 X1RSVFRfQllQQVNTX0RJU0FCTEUpOwo+PiArCX0KPj4gKwo+PiAgIAkvKiBJbiB0aGUgY2FzZSBv ZiBleGVjbGlzdHMsIFBQR1RUIGlzIGVuYWJsZWQgYnkgdGhlIGNvbnRleHQKPj4gZGVzY3JpcHRv cgo+PiAgIAkgKiBhbmQgdGhlIFBEUHMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIGNvbnRleHQg aXRzZWxmLiAgV2UgZG9uJ3QKPj4gICAJICogbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlLiAqLwo+ PiBAQCAtMzM2Miw2ICszMzczLDYwIEBACj4+IGk5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRl X2dndHRfdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Cj4+ICpvYmosCj4+Cj4+ICAgfQo+ Pgo+PiArdm9pZCBpbnRlbF90cnR0X2NvbnRleHRfZGVzdHJveV92bWEoc3RydWN0IGk5MTVfdm1h ICp2bWEpIHsKPj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9IHZtYS0+dm07Cj4+ ICsKPj4gKwlXQVJOX09OKCFsaXN0X2VtcHR5KCZ2bWEtPm9ial9saW5rKSk7Cj4+ICsJV0FSTl9P TighbGlzdF9lbXB0eSgmdm1hLT52bV9saW5rKSk7Cj4+ICsJV0FSTl9PTighbGlzdF9lbXB0eSgm dm1hLT5leGVjX2xpc3QpKTsKPj4gKwo+PiArCVdBUk5fT04oIXZtYS0+cGluX2NvdW50KTsKPj4g Kwo+PiArCWlmIChkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCj4+ICsJCWRybV9t bV9yZW1vdmVfbm9kZSgmdm1hLT5ub2RlKTsKPj4gKwo+PiArCWk5MTVfcHBndHRfcHV0KGk5MTVf dm1fdG9fcHBndHQodm0pKTsKPj4gKwlrbWVtX2NhY2hlX2ZyZWUodG9faTkxNSh2bS0+ZGV2KS0+ dm1hcywgdm1hKTsgfQo+PiArCj4+ICtzdHJ1Y3QgaTkxNV92bWEgKgo+PiAraW50ZWxfdHJ0dF9j b250ZXh0X2FsbG9jYXRlX3ZtYShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPj4gKwkJ CQl1aW50NjRfdCBzZWdtZW50X2Jhc2VfYWRkcikKPj4gK3sKPj4gKwlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJdm1hID0ga21lbV9jYWNoZV96YWxsb2ModG9f aTkxNSh2bS0+ZGV2KS0+dm1hcywgR0ZQX0tFUk5FTCk7Cj4+ICsJaWYgKCF2bWEpCj4+ICsJCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+PiArCj4+ICsJSU5JVF9MSVNUX0hFQUQoJnZtYS0+b2Jq X2xpbmspOwo+PiArCUlOSVRfTElTVF9IRUFEKCZ2bWEtPnZtX2xpbmspOwo+PiArCUlOSVRfTElT VF9IRUFEKCZ2bWEtPmV4ZWNfbGlzdCk7Cj4+ICsJdm1hLT52bSA9IHZtOwo+PiArCWk5MTVfcHBn dHRfZ2V0KGk5MTVfdm1fdG9fcHBndHQodm0pKTsKPj4gKwo+PiArCS8qIE1hcmsgdGhlIHZtYSBh cyBwZXJtYW5lbnRseSBwaW5uZWQgKi8KPj4gKwl2bWEtPnBpbl9jb3VudCA9IDE7Cj4+ICsKPj4g KwkvKiBSZXNlcnZlIGZyb20gdGhlIDQ4IGJpdCBQUEdUVCBzcGFjZSAqLwo+PiArCXZtYS0+bm9k ZS5zdGFydCA9IHNlZ21lbnRfYmFzZV9hZGRyOwo+PiArCXZtYS0+bm9kZS5zaXplID0gR0VOOV9U UlRUX1NFR01FTlRfU0laRTsKPj4gKwlyZXQgPSBkcm1fbW1fcmVzZXJ2ZV9ub2RlKCZ2bS0+bW0s ICZ2bWEtPm5vZGUpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJcmV0ID0gaTkxNV9nZW1fZXZpY3Rf Zm9yX3ZtYSh2bWEpOwo+PiArCQlpZiAocmV0ID09IDApCj4+ICsJCQlyZXQgPSBkcm1fbW1fcmVz ZXJ2ZV9ub2RlKCZ2bS0+bW0sICZ2bWEtCj4+PiBub2RlKTsKPj4gKwl9Cj4+ICsJaWYgKHJldCkg ewo+PiArCQlpbnRlbF90cnR0X2NvbnRleHRfZGVzdHJveV92bWEodm1hKTsKPj4gKwkJcmV0dXJu IEVSUl9QVFIocmV0KTsKPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gdm1hOwo+PiArfQo+PiArCj4+ ICAgc3RhdGljIHN0cnVjdCBzY2F0dGVybGlzdCAqCj4+ICAgcm90YXRlX3BhZ2VzKGNvbnN0IGRt YV9hZGRyX3QgKmluLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+PiAgIAkgICAgIHVuc2lnbmVkIGlu dCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwgZGlmZiAtLWdpdAo+PiBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmgKPj4gaW5kZXggZDgwNGJlMC4uOGNiYWNhMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmgKPj4gQEAgLTEyOCw2ICsxMjgsMTAgQEAgdHlwZWRlZiB1aW50NjRf dCBnZW44X3BwZ3R0X3BtbDRlX3Q7Cj4+ICAgI2RlZmluZSBHRU44X1BQQVRfRUxMQ19PVkVSUklE RQkJKDA8PDIpCj4+ICAgI2RlZmluZSBHRU44X1BQQVQoaSwgeCkJCQkoKHVpbnQ2NF90KSAoeCkg PDwgKChpKSAqIDgpKQo+Pgo+PiArLyogRml4ZWQgc2l6ZSBzZWdtZW50ICovCj4+ICsjZGVmaW5l IEdFTjlfVFJUVF9TRUdfU0laRV9TSElGVAk0NAo+PiArI2RlZmluZSBHRU45X1RSVFRfU0VHTUVO VF9TSVpFCQkoMVVMTCA8PAo+PiBHRU45X1RSVFRfU0VHX1NJWkVfU0hJRlQpCj4+ICsKPj4gICBl bnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgewo+PiAgIAlJOTE1X0dHVFRfVklFV19OT1JNQUwgPSAw LAo+PiAgIAlJOTE1X0dHVFRfVklFV19ST1RBVEVELAo+PiBAQCAtNTYwLDQgKzU2NCw4IEBAIHNp emVfdAo+PiAgIGk5MTVfZ2d0dF92aWV3X3NpemUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPj4gICAJCSAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+Pgo+ PiArc3RydWN0IGk5MTVfdm1hICoKPj4gK2ludGVsX3RydHRfY29udGV4dF9hbGxvY2F0ZV92bWEo c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4+ICsJCQkJdWludDY0X3Qgc2VnbWVudF9i YXNlX2FkZHIpOwo+PiArdm9pZCBpbnRlbF90cnR0X2NvbnRleHRfZGVzdHJveV92bWEoc3RydWN0 IGk5MTVfdm1hICp2bWEpOwo+PiAgICNlbmRpZgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg aW5kZXggMjY0ODg1Zi4uMDc5MzZiNiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ IEBAIC0xODgsNiArMTg4LDI1IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X21taW9fcmVnX3Zh bGlkKGk5MTVfcmVnX3QKPj4gcmVnKQo+PiAgICNkZWZpbmUgICBHRU44X1JQQ1NfRVVfTUlOX1NI SUZUCTAKPj4gICAjZGVmaW5lICAgR0VOOF9SUENTX0VVX01JTl9NQVNLCQkoMHhmIDw8Cj4+IEdF TjhfUlBDU19FVV9NSU5fU0hJRlQpCj4+Cj4+ICsjZGVmaW5lIEdFTjlfVFJfQ0hJQ0tFTl9CSVRf VkVDVE9SCV9NTUlPKDB4NERGQykKPj4gKyNkZWZpbmUgICBHRU45X1RSVFRfQllQQVNTX0RJU0FC TEUJKDEgPDwgMCkKPj4gKwo+PiArLyogVFJUVCByZWdpc3RlcnMgaW4gdGhlIEgvVyBDb250ZXh0 ICovCj4+ICsjZGVmaW5lIEdFTjlfVFJUVF9MM19QT0lOVEVSX0RXMAlfTU1JTygweDRERTApCj4+ ICsjZGVmaW5lIEdFTjlfVFJUVF9MM19QT0lOVEVSX0RXMQlfTU1JTygweDRERTQpCj4+ICsjZGVm aW5lICAgR0VOOV9UUlRUX0wzX0dGWEFERFJfTUFTSwkweEZGRkZGRkZGMDAwMAo+PiArCj4+ICsj ZGVmaW5lIEdFTjlfVFJUVF9OVUxMX1RJTEVfUkVHCQlfTU1JTygweDRERTgpCj4+ICsjZGVmaW5l IEdFTjlfVFJUVF9JTlZEX1RJTEVfUkVHCQlfTU1JTygweDRERUMpCj4+ICsKPj4gKyNkZWZpbmUg R0VOOV9UUlRUX1ZBX01BU0tEQVRBCQlfTU1JTygweDRERjApCj4+ICsjZGVmaW5lICAgR0VOOV9U UlZBX01BU0tfVkFMVUUJCTB4RjAKPj4gKyNkZWZpbmUgICBHRU45X1RSVkFfREFUQV9NQVNLCQkw eEYKPj4gKwo+PiArI2RlZmluZSBHRU45X1RSVFRfVEFCTEVfQ09OVFJPTAkJX01NSU8oMHg0REY0 KQo+PiArI2RlZmluZSAgIEdFTjlfVFJUVF9JTl9HRlhfVkFfU1BBQ0UJKDEgPDwgMSkKPj4gKyNk ZWZpbmUgICBHRU45X1RSVFRfRU5BQkxFCQkoMSA8PCAwKQo+PiArCj4+ICAgI2RlZmluZSBHQU1f RUNPQ0hLCQkJX01NSU8oMHg0MDkwKQo+PiAgICNkZWZpbmUgICBCRFdfRElTQUJMRV9IRENfSU5W QUxJREFUSU9OCSgxPDwyNSkKPj4gICAjZGVmaW5lICAgRUNPQ0hLX1NOQl9CSVQJCSgxPDwxMCkK Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gaW5kZXggM2EyM2I5NS4uOGFmNDgwYiAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPj4gQEAgLTE2NDUsNiArMTY0NSw3NiBA QCBzdGF0aWMgaW50IGdlbjlfaW5pdF9yZW5kZXJfcmluZyhzdHJ1Y3QKPj4gaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4+ICAgCXJldHVybiBpbml0X3dvcmthcm91bmRzX3JpbmcoZW5naW5lKTsK Pj4gICB9Cj4+Cj4+ICtzdGF0aWMgaW50IGdlbjlfaW5pdF9yY3NfY29udGV4dF90cnR0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVmOwo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwly ZXQgPSBpbnRlbF9sb2dpY2FsX3JpbmdfYmVnaW4ocmVxLCAyICsgMik7Cj4+ICsJaWYgKHJldCkK Pj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdi dWYsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKPj4gKwo+PiArCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0X3JlZyhyaW5nYnVmLCBHRU45X1RSVFRfVEFCTEVfQ09OVFJPTCk7Cj4+ICsJaW50ZWxf bG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4+ICsKPj4gKwlpbnRlbF9sb2dpY2FsX3Jp bmdfZW1pdChyaW5nYnVmLCBNSV9OT09QKTsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfYWR2YW5j ZShyaW5nYnVmKTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50 IGdlbjlfZW1pdF90cnR0X3JlZ3Moc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpIHsK Pj4gKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4ID0gcmVxLT5jdHg7Cj4+ICsJc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPSByZXEtPnJpbmdidWY7Cj4+ICsJdTY0IG1hc2tlZF9s M19nZnhfYWRkcmVzcyA9Cj4+ICsJCWN0eC0+dHJ0dF9pbmZvLmwzX3RhYmxlX2FkZHJlc3MgJgo+ PiBHRU45X1RSVFRfTDNfR0ZYQUREUl9NQVNLOwo+PiArCXUzMiB0cnZhX2RhdGFfdmFsdWUgPQo+ PiArCQkoY3R4LT50cnR0X2luZm8uc2VnbWVudF9iYXNlX2FkZHIgPj4KPj4gR0VOOV9UUlRUX1NF R19TSVpFX1NISUZUKSAmCj4+ICsJCUdFTjlfVFJWQV9EQVRBX01BU0s7Cj4+ICsJY29uc3QgaW50 IG51bV9scmlfY21kcyA9IDY7Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCS8qCj4+ICsJICogRW1p dHRpbmcgTFJJcyB0byB1cGRhdGUgdGhlIFRSVFQgcmVnaXN0ZXJzIGlzIG1vc3QgcmVsaWFibGUs IGluc3RlYWQKPj4gKwkgKiBvZiBkaXJlY3RseSB1cGRhdGluZyB0aGUgY29udGV4dCBpbWFnZSwg YXMgdGhpcyB3aWxsIGVuc3VyZSB0aGF0Cj4+ICsJICogdXBkYXRlIGhhcHBlbnMgaW4gYSBzZXJp YWxpemVkIG1hbm5lciBmb3IgdGhlIGNvbnRleHQgYW5kIGFsc28KPj4gKwkgKiBsaXRlLXJlc3Rv cmUgc2NlbmFyaW8gd2lsbCBnZXQgaGFuZGxlZC4KPj4gKwkgKi8KPj4gKwlyZXQgPSBpbnRlbF9s b2dpY2FsX3JpbmdfYmVnaW4ocmVxLCBudW1fbHJpX2NtZHMgKiAyICsgMik7Cj4+ICsJaWYgKHJl dCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsCj4+IE1JX0xPQURfUkVHSVNURVJfSU1NKG51bV9scmlfY21kcykpOwo+PiArCj4+ICsJ aW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVnKHJpbmdidWYsCj4+IEdFTjlfVFJUVF9MM19QT0lO VEVSX0RXMCk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwKPj4gK2xvd2Vy XzMyX2JpdHMobWFza2VkX2wzX2dmeF9hZGRyZXNzKSk7Cj4+ICsKPj4gKwlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwKPj4gR0VOOV9UUlRUX0wzX1BPSU5URVJfRFcxKTsKPj4g KwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAo+PiArdXBwZXJfMzJfYml0cyhtYXNr ZWRfbDNfZ2Z4X2FkZHJlc3MpKTsKPj4gKwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0X3Jl ZyhyaW5nYnVmLCBHRU45X1RSVFRfTlVMTF9USUxFX1JFRyk7Cj4+ICsJaW50ZWxfbG9naWNhbF9y aW5nX2VtaXQocmluZ2J1ZiwgY3R4LT50cnR0X2luZm8ubnVsbF90aWxlX3ZhbCk7Cj4+ICsKPj4g KwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1ZiwgR0VOOV9UUlRUX0lOVkRfVElM RV9SRUcpOwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGN0eC0+dHJ0dF9p bmZvLmludmRfdGlsZV92YWwpOwo+PiArCj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXRfcmVn KHJpbmdidWYsIEdFTjlfVFJUVF9WQV9NQVNLREFUQSk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwKPj4gKwkJCQlHRU45X1RSVkFfTUFTS19WQUxVRSB8Cj4+IHRydmFfZGF0 YV92YWx1ZSk7Cj4+ICsKPj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdF9yZWcocmluZ2J1Ziwg R0VOOV9UUlRUX1RBQkxFX0NPTlRST0wpOwo+PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsCj4+ICsJCQkJR0VOOV9UUlRUX0lOX0dGWF9WQV9TUEFDRSB8Cj4+IEdFTjlfVFJUVF9F TkFCTEUpOwo+PiArCj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfTk9P UCk7Cj4+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFuY2UocmluZ2J1Zik7Cj4+ICsKPj4gKwly ZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBpbnQgaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXRfcGRwcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPj4gewo+PiAgIAlzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSByZXEtPmN0eC0+cHBndHQ7IEBAIC0yMDAzLDYKPj4g KzIwNzMsMjUgQEAgc3RhdGljIGludCBnZW44X2luaXRfcmNzX2NvbnRleHQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0Cj4+ICpyZXEpCj4+ICAgCXJldHVybiBpbnRlbF9scl9jb250ZXh0X3Jl bmRlcl9zdGF0ZV9pbml0KHJlcSk7Cj4+ICAgfQo+Pgo+PiArc3RhdGljIGludCBnZW45X2luaXRf cmNzX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpIHsKPj4gKwlpbnQg cmV0Owo+PiArCj4+ICsJLyoKPj4gKwkgKiBFeHBsaWN0aWx5IGRpc2FibGUgVFItVFQgYXQgdGhl IHN0YXJ0IG9mIGEgbmV3IGNvbnRleHQuCj4+ICsJICogT3RoZXJ3aXNlIG9uIHN3aXRjaGluZyBm cm9tIGEgVFItVFQgY29udGV4dCB0byBhIG5ldyBOb24gVFItVFQKPj4gKwkgKiBjb250ZXh0IHRo ZSBUUi1UVCBzZXR0aW5ncyBvZiB0aGUgb3V0Z29pbmcgY29udGV4dCBjb3VsZCBnZXQKPj4gKwkg KiBzcGlsbGVkIG9uIHRvIHRoZSBuZXcgaW5jb21pbmcgY29udGV4dCBhcyBvbmx5IHRoZSBSaW5n IENvbnRleHQKPj4gKwkgKiBwYXJ0IGlzIGxvYWRlZCBvbiB0aGUgZmlyc3Qgc3VibWlzc2lvbiBv ZiBhIG5ldyBjb250ZXh0LCBkdWUgdG8KPj4gKwkgKiB0aGUgc2V0dGluZyBvZiBFTkdJTkVfQ1RY X1JFU1RPUkVfSU5ISUJJVCBiaXQuCj4+ICsJICovCj4+ICsJcmV0ID0gZ2VuOV9pbml0X3Jjc19j b250ZXh0X3RydHQocmVxKTsKPj4gKwlpZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ ICsJcmV0dXJuIGdlbjhfaW5pdF9yY3NfY29udGV4dChyZXEpOwo+PiArfQo+PiArCj4+ICAgLyoq Cj4+ICAgICogaW50ZWxfbG9naWNhbF9yaW5nX2NsZWFudXAoKSAtIGRlYWxsb2NhdGUgdGhlIEVu Z2luZSBDb21tYW5kIFN0cmVhbWVyCj4+ICAgICoKPj4gQEAgLTIxMzQsMTEgKzIyMjMsMTQgQEAg c3RhdGljIGludCBsb2dpY2FsX3JlbmRlcl9yaW5nX2luaXQoc3RydWN0Cj4+IGRybV9kZXZpY2Ug KmRldikKPj4gICAJbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKGRldiwgZW5naW5lKTsKPj4K Pj4gICAJLyogT3ZlcnJpZGUgc29tZSBmb3IgcmVuZGVyIHJpbmcuICovCj4+IC0JaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDkpCj4+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkp IHsKPj4gICAJCWVuZ2luZS0+aW5pdF9odyA9IGdlbjlfaW5pdF9yZW5kZXJfcmluZzsKPj4gLQll bHNlCj4+ICsJCWVuZ2luZS0+aW5pdF9jb250ZXh0ID0gZ2VuOV9pbml0X3Jjc19jb250ZXh0Owo+ PiArCX0gZWxzZSB7Cj4+ICAgCQllbmdpbmUtPmluaXRfaHcgPSBnZW44X2luaXRfcmVuZGVyX3Jp bmc7Cj4+IC0JZW5naW5lLT5pbml0X2NvbnRleHQgPSBnZW44X2luaXRfcmNzX2NvbnRleHQ7Cj4+ ICsJCWVuZ2luZS0+aW5pdF9jb250ZXh0ID0gZ2VuOF9pbml0X3Jjc19jb250ZXh0Owo+PiArCX0K Pj4gKwo+PiAgIAllbmdpbmUtPmNsZWFudXAgPSBpbnRlbF9maW5pX3BpcGVfY29udHJvbDsKPj4g ICAJZW5naW5lLT5lbWl0X2ZsdXNoID0gZ2VuOF9lbWl0X2ZsdXNoX3JlbmRlcjsKPj4gICAJZW5n aW5lLT5lbWl0X3JlcXVlc3QgPSBnZW44X2VtaXRfcmVxdWVzdF9yZW5kZXI7IEBAIC0yNzAyLDMK Pj4gKzI3OTQsMjkgQEAgdm9pZCBpbnRlbF9scl9jb250ZXh0X3Jlc2V0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4+ICAgCQlyaW5nYnVmLT50YWlsID0gMDsKPj4gICAJfQo+PiAgIH0KPj4gKwo+ PiAraW50IGludGVsX2xyX3Jjc19jb250ZXh0X3NldHVwX3RydHQoc3RydWN0IGludGVsX2NvbnRl eHQgKmN0eCkgewo+PiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9ICYoY3R4LT5p OTE1LT5lbmdpbmVbUkNTXSk7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7 Cj4+ICsJaW50IHJldDsKPj4gKwo+PiArCWlmICghY3R4LT5lbmdpbmVbUkNTXS5zdGF0ZSkgewo+ PiArCQlyZXQgPSBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2FsbG9jKGN0eCwgZW5naW5lKTsK Pj4gKwkJaWYgKHJldCkKPj4gKwkJCXJldHVybiByZXQ7Cj4+ICsJfQo+PiArCj4+ICsJcmVxID0g aTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4+ICsJaWYgKElTX0VSUihyZXEp KQo+PiArCQlyZXR1cm4gUFRSX0VSUihyZXEpOwo+PiArCj4+ICsJcmV0ID0gZ2VuOV9lbWl0X3Ry dHRfcmVncyhyZXEpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJaTkxNV9nZW1fcmVxdWVzdF9jYW5j ZWwocmVxKTsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwlpOTE1X2FkZF9yZXF1 ZXN0KHJlcSk7Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuaAo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5oCj4+IGluZGV4IGExN2NiMTIuLmYzNjAwYjIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5oCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5oCj4+IEBAIC0xMDcsNiArMTA3LDcgQEAgdm9pZCBpbnRlbF9scl9jb250ZXh0X3Jlc2V0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICAgCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0 eCk7Cj4+ICAgdWludDY0X3QgaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjdHgsCj4+ICAgCQkJCSAgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKTsKPj4gK2ludCBpbnRlbF9scl9yY3NfY29udGV4dF9zZXR1cF90cnR0KHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjdHgpOwo+Pgo+PiAgIHUzMiBpbnRlbF9leGVjbGlzdHNfY3R4X2lkKHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjdHgsCj4+ICAgCQkJICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2lu Y2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+PiBpbmRleCBhNTUyNGNjLi42MDRkYTIzIDEwMDY0 NAo+PiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPj4gKysrIGIvaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oCj4+IEBAIC0xMTY3LDcgKzExNjcsMTUgQEAgc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtIHsKPj4gICAjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9C QU5fUEVSSU9ECTB4MQo+PiAgICNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX05PX1pFUk9NQVAJ MHgyCj4+ICAgI2RlZmluZSBJOTE1X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkUJMHgzCj4+ICsjZGVm aW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9UUlRUCQkweDQKPj4gICAJX191NjQgdmFsdWU7Cj4+ICAg fTsKPj4KPj4gK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF90cnR0X3BhcmFtIHsKPj4gKwlf X3U2NCBzZWdtZW50X2Jhc2VfYWRkcjsKPj4gKwlfX3U2NCBsM190YWJsZV9hZGRyZXNzOwo+PiAr CV9fdTMyIGludmRfdGlsZV92YWw7Cj4+ICsJX191MzIgbnVsbF90aWxlX3ZhbDsKPj4gK307Cj4+ ICsKPj4gICAjZW5kaWYgLyogX1VBUElfSTkxNV9EUk1fSF8gKi8KPj4gLS0KPj4gMS45LjIKPj4K Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=