From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v8 04/35] drm/i915: Initialize HDCP2.2 Date: Mon, 10 Dec 2018 10:28:24 +0100 Message-ID: <20181210092824.GJ21184@phenom.ffwll.local> References: <1543315413-24302-1-git-send-email-ramalingam.c@intel.com> <1543315413-24302-5-git-send-email-ramalingam.c@intel.com> <20181206100317.GN21184@phenom.ffwll.local> <20181207141630.GC21184@phenom.ffwll.local> <5B8DA87D05A7694D9FA63FD143655C1B9DA489E4@hasmsx108.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 414736E948 for ; Mon, 10 Dec 2018 09:28:29 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id h15so8856526edb.4 for ; Mon, 10 Dec 2018 01:28:29 -0800 (PST) Content-Disposition: inline In-Reply-To: <5B8DA87D05A7694D9FA63FD143655C1B9DA489E4@hasmsx108.ger.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Winkler, Tomas" Cc: "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "Shankar, Uma" , "daniel.vetter@ffwll.ch" List-Id: dri-devel@lists.freedesktop.org T24gU2F0LCBEZWMgMDgsIDIwMTggYXQgMDY6NDc6NDBQTSArMDAwMCwgV2lua2xlciwgVG9tYXMg d3JvdGU6Cj4gCj4gCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogRGFu aWVsIFZldHRlciBbbWFpbHRvOmRhbmllbC52ZXR0ZXJAZmZ3bGwuY2hdIE9uIEJlaGFsZiBPZiBE YW5pZWwgVmV0dGVyCj4gPiBTZW50OiBGcmlkYXksIERlY2VtYmVyIDA3LCAyMDE4IDE2OjE3Cj4g PiBUbzogQywgUmFtYWxpbmdhbSA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiA+IENjOiBEYW5p ZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+OyBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnOyBkcmktCj4gPiBkZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g7IFdpbmtsZXIsIFRvbWFzCj4gPiA8dG9tYXMud2lua2xlckBpbnRlbC5jb20+OyBT aGFua2FyLCBVbWEgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiA+IFN1YmplY3Q6IFJlOiBbUEFU Q0ggdjggMDQvMzVdIGRybS9pOTE1OiBJbml0aWFsaXplIEhEQ1AyLjIKPiA+IAo+ID4gT24gRnJp LCBEZWMgMDcsIDIwMTggYXQgMTA6MjQ6MjZBTSArMDUzMCwgQywgUmFtYWxpbmdhbSB3cm90ZToK PiA+ID4KPiA+ID4gT24gMTIvNi8yMDE4IDM6MzMgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4g PiA+ID4gT24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMDQ6MTM6MDJQTSArMDUzMCwgUmFtYWxpbmdh bSBDIHdyb3RlOgo+ID4gPiA+ID4gQWRkIHRoZSBIRENQMi4yIGluaXRpYWxpemF0aW9uIHRvIHRo ZSBleGlzdGluZyBIRENQMS40IHN0YWNrLgo+ID4gPiA+IFdpdGggdGhlIGNvbW1lbnRzIGJlbG93 IGFkZHJlc3NlZCB0aGUgY29tbWl0IG1lc3NhZ2UgaXMgYSBiaXQKPiA+ID4gPiB1bnRydWUsIHNp bmNlIHRoaXMganVzdCB3aXJlcyB1cCBhIGJhc2ljIGhkY3AyX3N1cHBvcnRlZCBmbGFnIGluIGEg ZmV3Cj4gPiBwbGFjZXMuCj4gPiA+ID4gUGxlYXNlIG1ha2UgdGhhdCBjbGVhci4KPiA+ID4gPgo+ ID4gPiA+ID4gdjI6Cj4gPiA+ID4gPiAgICBtZWkgaW50ZXJmYWNlIGhhbmRsZSBpcyBwcm90ZWN0 ZWQgd2l0aCBtdXRleC4gW0NocmlzIFdpbHNvbl0KPiA+ID4gPiA+IHYzOgo+ID4gPiA+ID4gICAg Tm90aWZpZXJzIGFyZSB1c2VkIGZvciB0aGUgbWVpIGludGVyZmFjZSBzdGF0ZS4KPiA+ID4gPiA+ IHY0Ogo+ID4gPiA+ID4gICAgUG9sbCBmb3IgbWVpIGNsaWVudCBkZXZpY2Ugc3RhdGUKPiA+ID4g PiA+ICAgIEVycm9yIG1zZyBmb3Igb3V0IG9mIG1lbSBbVW1hXQo+ID4gPiA+ID4gICAgSW5saW5l IHJlcSBmb3IgaW5pdCBmdW5jdGlvbiByZW1vdmVkIFtVbWFdCj4gPiA+ID4gPiB2NToKPiA+ID4g PiA+ICAgIFJlYmFzZSBhcyBQYXJ0IG9mIHJlb3JkZXJpbmcuCj4gPiA+ID4gPiAgICBDb21wb25l bnQgaXMgdXNlZCBmb3IgdGhlIEk5MTUgYW5kIE1FSV9IRENQIGludGVyZmFjZSBbRGFuaWVsXQo+ ID4gPiA+ID4gdjY6Cj4gPiA+ID4gPiAgICBIRENQMi4yIHVzZXMgdGhlIEk5MTUgY29tcG9uZW50 IG1hc3RlciB0byBjb21tdW5pY2F0ZSB3aXRoCj4gPiBtZWlfaGRjcAo+ID4gPiA+ID4gCS0gW0Rh bmllbF0KPiA+ID4gPiA+ICAgIFJlcXVpcmVkIEhEQ1AyLjIgdmFyaWFibGVzIGRlZmluZWQgW1Nl YW4gUGF1bF0KPiA+ID4gPiA+IHY3Ogo+ID4gPiA+ID4gICAgaW50ZWxfaGRjcDIuMl9pbml0IHJl dHVybnMgdm9pZCBbVW1hXQo+ID4gPiA+ID4gICAgUmVhbGlnbmluZyB0aGUgY29kZXMuCj4gPiA+ ID4gPiB2ODoKPiA+ID4gPiA+ICAgIEF2b2lkIHVzaW5nIGJvb2wgc3RydWN0dXJlIG1lbWJlcnMu Cj4gPiA+ID4gPiAgICBNRUkgaW50ZXJmYWNlIHJlbGF0ZWQgY2hhbmdlcyBhcmUgbW92ZWQgaW50 byBzZXBhcmF0ZSBwYXRjaC4KPiA+ID4gPiA+ICAgIENvbW1pdCBtc2cgaXMgdXBkYXRlZCBhY2Nv cmRpbmdseS4KPiA+ID4gPiA+ICAgIGludGVsX2hkY3BfZXhpdCBpcyBkZWZpbmVkIGFuZCB1c2Vk IGZyb20gaTkxNV91bmxvYWQKPiA+ID4gPiA+Cj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBSYW1h bGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4gPiA+ID4gPiAtLS0KPiA+ID4gPiA+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgIHwgICAyICsKPiA+ID4gPiA+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgIHwgICAzICstCj4gPiA+ID4gPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAxNiArKystCj4gPiA+ID4gPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDE3MiArKysrKysrKysrKysrKysrKysr KysrKystLQo+ID4gLS0tLS0tLS0tLS0tCj4gPiA+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYyB8ICAgMiArLQo+ID4gPiA+ID4gICA1IGZpbGVzIGNoYW5nZWQsIDEzMCBp bnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkKPiA+ID4gPiA+Cj4gPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ID4gPiA+ID4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGluZGV4IGIxZDIzYzczYzE0Ny4uZmJlZGQ1MDI0YWZl Cj4gPiA+ID4gPiAxMDA2NDQKPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK PiA+ID4gPiA+IEBAIC0xNzU1LDYgKzE3NTUsOCBAQCB2b2lkIGk5MTVfZHJpdmVyX3VubG9hZChz dHJ1Y3QgZHJtX2RldmljZQo+ID4gKmRldikKPiA+ID4gPiA+ICAgCWRpc2FibGVfcnBtX3dha2Vy ZWZfYXNzZXJ0cyhkZXZfcHJpdik7Cj4gPiA+ID4gPiArCWludGVsX2hkY3BfZXhpdChkZXZfcHJp dik7Cj4gPiA+ID4gVGhpcyBzbWVsbHMgbGlrZSBhIHNlcGFyYXRlIHBhdGNoLiBOZWVkcyB0byBi ZSBzcGxpdCBvdXQuIExvb2tpbmcgYXQKPiA+ID4gPiB0aGUgaW1wbGVtZW50YXRpb24gb2YgaW50 ZWxfaGRjcF9leGl0IEkgdGhpbmsgaXQncyBwYXBlcmluZyBvdmVyCj4gPiA+ID4gc29tZSB1bmxv YWQgdHJvdWJsZS4gV2Ugc2hvdWxkIGJlIHNodXR0aW5nIGRvd24gYWxsIHRoZSBvdXRwdXRzIG9u Cj4gPiA+ID4gZHJpdmVyIHVubG9hZCwgd2hpY2ggbWVpIHNob3VsZCBiZSB0cmlnZ2VyaW5nICh3 aXRoIHRoZSBjb21wb25lbnQKPiA+ID4gPiBzdHVmZiksIHdoaWNoIG1lYW5zIHRoaXMgY29kZSBz aG91bGQgYmUgdW5lY2Vzc2FyeS4gQnV0IEknbSBub3Qgc3VyZS4KPiA+ID4gPgo+ID4gPiA+IEVp dGhlciB3YXkgbmVlZHMgdG8gYmUgc3BsaXQgb3V0LCBidXQgSSB0aGluayBwcm9wZXIgc29sdXRp b24gaXMgdG8KPiA+ID4gPiBkcm9wIGl0Lgo+ID4gPgo+ID4gPiBBcyB3ZSBkaXNjdXNzZWQsIGR1 cmluZyB2Ny0tPnY4IGkgY2hhbmdlZCB0aGUgY29tcG9uZW50IHVzYWdlIHN1Y2ggdGhhdCBpdAo+ ID4gd29udCBhZmZlY3QgaTkxNSBsb2FkL3VubG9hZC4KPiA+ID4gRHVyaW5nIHRoZSBmaXJzdCBj b25uZWN0b3IgaW5pdCwgY29tcG9uZW50IG1hc3RlciB3aWxsIGJlIGFkZGVkLiBBbmQKPiA+ID4g ZHVyaW5nIHRoZSBtZWlfY2xpZW50IGRldiBhbmQgZHJpdmVyIGJpbmRpbmcsIGNvbXBvbmVudCB3 aWxsIGJlIGFkZGVkIGhlbmNlCj4gPiB0aGUgYmluZGluZyB3aWxsIGhhcHBlbiB3aXRoIGludGVy ZmFjZSBpbml0aWFsaXphdGlvbiBmcm9tIG1laS4KPiA+ID4KPiA+ID4gVXBvbiBIRENQMi4yIHJl cXVlc3QsIGNvbXBvbmVudCBiaW5kaW5nIHdpbGwgYmUgY2hlY2tlZCBiZWZvcmUKPiA+IGF0dGVt cHRpbmcgZm9yIEhEQ1AyLjIgYXV0aC4KPiA+ID4gU28gY29tcG9uZW50IG1hc3RlciB1bmJpbmQg dHJpZ2dlcmVkIGR1ZSB0byBtZWkgY29tcG9uZW50X2RlbCwgd2lsbAo+ID4gdGVhcmRvd24gdGhl IEhEQ1AyLjIgY2FwYWJpbGl0eSBvZiB0aGUgSTkxNS4KPiA+ID4KPiA+ID4gU28gaW4gY2FzZSBv ZiBJOTE1IHVubG9hZCB0cmlnZ2VyLCBmcm9tIHdoYXRzb2V2ZXIgcmVhc29uLCB3ZSBuZWVkIHRv Cj4gPiA+IGNsZWFyIHRoZSBIRENQIGFjdGl2aXRpZXMgYW5kIGJyaW5nIGRvd24gdGhlIGk5MTVf aGRjcF9jb21wb25lbnRfbWFzdGVyCj4gPiBhbmQgdGhlIGludGVyZmFjZSB3aXRoIG1laS4gRm9y IHRoaXMgcHVycG9zZSBvbmx5IGludGVsX2hkY3BfZXhpdCBpcyB3cml0dGVuCj4gPiBoZXJlLgo+ ID4gCj4gPiBTdW1tYXJpemluZyBvdXIgaXJjIGRpc2N1c3Npb246Cj4gPiAKPiA+IC0gSSBsaWtl IHRoZSBjb21wb25lbnQgdXNhZ2Ugb2YgdjcgbXVjaCBtb3JlLgo+ID4gCj4gPiAtIEkgc3RpbGwg ZG9uJ3QgdGhpbmsgd2UgaGF2ZSBhIHVzZS1jYXNlIGZvciBsb2FkaW5nL3VubG9hZGluZyBtZWlf aGRjcCBvbgo+ID4gICBkZW1hbmQsIG9yIGF0IGxlYXN0IG5vdCBpbiBsb2Nrc3RlcCB3aXRoIGk5 MTUua286Cj4gV2UgYXJlIHRlc3RpbmcgYWxsIHRoZSBNRUkgbW9kdWxlcyAgcmVsb2FkaW5nLCB0 aGlzIHdvdWxkIGJlIHN1ZGRlbmx5IGFuIGV4Y2VwdGlvbi4gCgpXZSdyZSBkb2luZyB0aGUgc2Ft ZS4gQW5kIHdpdGggdGhlIGNvbXBvbmVudCBzdHVmZiB5b3UgY2FuIGRvIHRoYXQgdG9vIGluCmEg Y2xlYW4gd2F5LiBCdXQgdGhlcmUncyBhIGRpZmZlcmVuY2UgYmV0d2VlbiBhIHVzZWZ1bCBmZWF0 dXJlIGZvcgpkZXZlbG9wZXJzIGFuZCBzb21ldGhpbmcgd2UgbmVlZCBpbiBwcm9kdWN0aW9uLgoK V2hhdCBJIG1lYW4gaGVyZSBpcyB0aGF0IEkgZG9uJ3Qgc2VlIGEgdXNlLWNhc2UgZm9yIHVubG9h ZGluZyBtZWlfaGRjcCwKd2hpbGUgaTkxNSBzdGlsbCBuZWVkcyB0byBrZWVwIHdvcmtpbmcuIFRo YXQncyB0aGUgb25seSBkaWZmZXJlbmNlIGJldHdlZW4KdjcgYW5kIHY4IGluIGZlYXR1cmVzIHN1 cHBvcnQgd3J0IGRyaXZlciBsb2FkaW5nL3VubG9hZGluZy4KCj4gPiAgIC0gQ3JPUyB3b24ndCB1 c2UgTUUKPiBJJ20gbm90IHNvIHN1cmUsIHdlIGFyZSB3b3JraW5nIG9uIGl0LgoKSG0sIHRoYXQn cyBpbnRlcmVzdGluZy4gV2UgY2FuJ3Qgc3VwcG9ydCBIRENQMiBvbiBDck9TIGJlY2F1c2Ugb2Yg dGhlIE1FCnRoaW5nLCBhbmQgSSBoYXZlbid0IGhlYXJkIGFueXRoaW5nIG5ldyBmcm9tIENyT1Mg a2VybmVsIGVuZ2luZWVycy4KLURhbmllbAoKPiA+ICAgLSB1c3VhbCBsaW51eCBkaXN0cm9zIGRv bid0IGNhcmUgYWJvdXQgY29udGVudCBwcm90ZWN0aW9uLCBzbyB3b24ndCBldmVuCj4gPiAgICAg ZW5hYmxlIHRoZSBNRUlfSERDUCBkcml2ZXIKPiA+ICAgLSBpb3RnL2VtYmVkZGVkIGVpdGhlciB3 YW50cyBpdCAoYW5kIHRoZW4gcHJvYmFibHkgYWx3YXlzKSBvciBkb2Vzbid0Cj4gPiAgICAgd2Fu dCBpdCAoaW4gd2hpY2ggY2FzZSBpdCB3b24ndCBiZSBidWlsdCBpbikuIFBsdXMgZW1iZWRkZWQg dGVuZHMgdG8KPiA+ICAgICBoYXZlIGFsbCBidWlsdC1pbiBkcml2ZXJzIGFueXdheSwgc28gdGhl eSBhbGwgbG9hZCBpbiBvcmRlci4KPiBJdCByZWFsbHkgZGVwZW5kcywgdGhlcmUgcHJvZHVjdCBy YW5nZSBzaSByZWFsbHkgd2lkZS4gCj4gCj4gPiAgIEFuZCBJIGRvbid0IHdhbnQgdG8gcmV2aWV3 IHRoZSB2YWxpZGF0aW9uIGNvdmVyYWdlIGFuZCBsb2NraW5nIGFuZAo+ID4gICBydW50aW1lIGNv bnNlcXVlbmNlcyBvZiBtYWtpbmcgdGhpcyBwb3NzaWJsZSwgc2luY2UgSSdtIGxhenkgOi0pCj4g PiAKPiA+IC0gSSBsb29rZWQgbG9ja2RlcCBzcGxhdCBpbiB2NyBhZ2FpbiBpbiBtb3JlIGRldGFp bC4gSXQncyBub3QgYWN0dWFsbHkgYW4KPiA+ICAgaXNzdWUgd2l0aCBjb21wb25lbnQgdXNhZ2Us IGJ1dCBqdXN0IHVubHVja3kgdG8gbm93IHJ1biBpbnRvIGEKPiA+ICAgcHJlZXhpc3RpbmcgaXNz dWU6IEFueSBkcml2ZXIgeW91IHVuYmluZCB0aHJvdWdoIHRoZSBzeXNmcyBmaWxlIHdpbGwKPiA+ ICAgZ2VuZXJhdGUgYSBsb2NrZGVwIHNwbGF0IGlmIGl0IHJlbW92ZXMgYW55IHN5c2ZzIGZpbGVz IGl0c2VsZi4gVGhhdCdzIGEKPiA+ICAgcHJlLWV4aXN0aW5nIGJ1ZywgZWFzaWx5IHJlcHJvZHVj ZWQgYnkgdW5iaW5kaW5nIGk5MTUuCj4gPiAKPiA+ICAgT25seSB0aGluZyBuZXcgaXMgdGhhdCBj b21wb25lbnQgY29ubmVjdHMgdGhlIHNuZC1oZGEtaW50ZWwgYW5kIGk5MTUKPiA+ICAgdW5sb2Fk IHNlcXVlbmNlIHRocm91Z2ggdGhlIGNvbXBvbmVudCBsb2NrIChidXQgZG9lcyBfbm90XyBjcmVh dGUgYQo+ID4gICBsb29wKSwgYW5kIHNpbmNlIHdlIHVuYmluZCBzbmQtaGRhLWludGVsIHRocm91 Z2ggc3lzZnMgYW5kIGk5MTkKPiA+ICAgdW5yZWdpc3RlcnMgX2xvdHNfIG9mIHN5c2ZzIGZpbGVz IGxvY2tkZXAgbm93IHNlZXMgdGhlIGN5Y2xlLiBJdCdzCj4gPiAgIGFsd2F5cyBiZWVuIHRoZXJl Lgo+ID4gCj4gPiAgIEknbSB3b3JraW5nIG9uIGEgc2VwYXJhdGUgcGF0Y2ggdG8gZml4IHRoaXMu Cj4gPiAKPiA+IENoZWVycywgRGFuaWVsCj4gPiA+Cj4gPiA+ID4KPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICAgCWk5MTVfZHJpdmVyX3VucmVnaXN0ZXIoZGV2X3ByaXYpOwo+ID4gPiA+ID4gICAJaWYg KGk5MTVfZ2VtX3N1c3BlbmQoZGV2X3ByaXYpKSBkaWZmIC0tZ2l0Cj4gPiA+ID4gPiBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyBpbmRleCAxOGUzYTVhM2Q4NzMuLmFjNjJhZjA3MzY4OAo+ID4gPiA+ID4g MTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4g PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ID4gPiBA QCAtNjY3NSw3ICs2Njc1LDggQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0Cj4gPiBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gPiA+ID4gICAJaW50ZWxfZHBf YWRkX3Byb3BlcnRpZXMoaW50ZWxfZHAsIGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiAgIAlpZiAoaXNf aGRjcF9zdXBwb3J0ZWQoZGV2X3ByaXYsIHBvcnQpICYmICFpbnRlbF9kcF9pc19lZHAoaW50ZWxf ZHApKSB7Cj4gPiA+ID4gPiAtCQlpbnQgcmV0ID0gaW50ZWxfaGRjcF9pbml0KGludGVsX2Nvbm5l Y3RvciwKPiA+ICZpbnRlbF9kcF9oZGNwX3NoaW0pOwo+ID4gPiA+ID4gKwkJaW50IHJldCA9IGlu dGVsX2hkY3BfaW5pdChpbnRlbF9jb25uZWN0b3IsCj4gPiAmaW50ZWxfZHBfaGRjcF9zaGltLAo+ ID4gPiA+ID4gKwkJCQkJICBmYWxzZSk7Cj4gPiA+ID4gPiAgIAkJaWYgKHJldCkKPiA+ID4gPiA+ ICAgCQkJRFJNX0RFQlVHX0tNUygiSERDUCBpbml0IGZhaWxlZCwgc2tpcHBpbmcuXG4iKTsKPiA+ ID4gPiA+ICAgCX0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4gPiA+ID4gaW5kZXggYTYyZDc3Yjc2MjkxLi44NWE1MjY1OTgwOTYgMTAwNjQ0Cj4gPiA+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiA+IEBAIC0zODgsNiArMzg4 LDE3IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKPiA+ID4gPiA+ICAgCXU2NCB2YWx1ZTsKPiA+ID4g PiA+ICAgCXN0cnVjdCBkZWxheWVkX3dvcmsgY2hlY2tfd29yazsKPiA+ID4gPiA+ICAgCXN0cnVj dCB3b3JrX3N0cnVjdCBwcm9wX3dvcms7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qIEhEQ1Ay LjIgcmVsYXRlZCBkZWZpbml0aW9ucyAqLwo+ID4gPiA+ID4gKwkvKiBGbGFnIGluZGljYXRlcyB3 aGV0aGVyIHRoaXMgY29ubmVjdG9yIHN1cHBvcnRzIEhEQ1AyLjIgb3Igbm90LiAqLwo+ID4gPiA+ ID4gKwl1OCBoZGNwMl9zdXBwb3J0ZWQ7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCS8qCj4gPiA+ ID4gPiArCSAqIENvbnRlbnQgU3RyZWFtIFR5cGUgZGVmaW5lZCBieSBjb250ZW50IG93bmVyLiBU WVBFMCgweDApIGNvbnRlbnQKPiA+IGNhbgo+ID4gPiA+ID4gKwkgKiBmbG93IGluIHRoZSBsaW5r IHByb3RlY3RlZCBieSBIRENQMi4yIG9yIEhEQ1AxLjQsIHdoZXJlIGFzCj4gPiBUWVBFMSgweDEp Cj4gPiA+ID4gPiArCSAqIGNvbnRlbnQgY2FuIGZsb3cgb25seSB0aHJvdWdoIGEgbGluayBwcm90 ZWN0ZWQgYnkgSERDUDIuMi4KPiA+ID4gPiA+ICsJICovCj4gPiA+ID4gPiArCXU4IGNvbnRlbnRf dHlwZTsKPiA+ID4gPiA+ICAgfTsKPiA+ID4gPiA+ICAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7 Cj4gPiA+ID4gPiBAQCAtMjAxNiwxMiArMjAyNywxNSBAQCB2b2lkIGludGVsX2hkY3BfYXRvbWlj X2NoZWNrKHN0cnVjdAo+ID4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ID4gICAJ CQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpvbGRfc3RhdGUsCj4gPiA+ID4gPiAg IAkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm5ld19zdGF0ZSk7Cj4gPiA+ID4g PiAgIGludCBpbnRlbF9oZGNwX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y LAo+ID4gPiA+ID4gLQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKmhkY3Bfc2hp bSk7Cj4gPiA+ID4gPiArCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqaGRjcF9z aGltLAo+ID4gPiA+ID4gKwkJICAgIGJvb2wgaGRjcDJfc3VwcG9ydGVkKTsKPiA+ID4gPiA+ICAg aW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7 Cj4gPiA+ID4gPiAgIGludCBpbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKTsKPiA+ID4gPiA+ICAgaW50IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ID4gPiA+ID4gICBib29sIGlzX2hkY3Bf c3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0Cj4g PiBwb3J0KTsKPiA+ID4gPiA+ICAgYm9vbCBpbnRlbF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ID4gPiA+ICtib29sIGlzX2hkY3AyX3N1cHBvcnRl ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOyB2b2lkCj4gPiA+ID4gPiAraW50 ZWxfaGRjcF9leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiA+ID4g PiAgIC8qIGludGVsX3Bzci5jICovCj4gPiA+ID4gPiAgICNkZWZpbmUgQ0FOX1BTUihkZXZfcHJp dikgKEhBU19QU1IoZGV2X3ByaXYpICYmCj4gPiA+ID4gPiBkZXZfcHJpdi0+cHNyLnNpbmtfc3Vw cG9ydCkgZGlmZiAtLWdpdAo+ID4gPiA+ID4gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZGNwLmMKPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gPiA+ ID4gPiBpbmRleCAwNGJhNmMxM2U3MTUuLjk5ZGRkYjU0MDk1OCAxMDA2NDQKPiA+ID4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ID4gPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gPiA+ID4gPiBAQCAtNzMwLDYgKzczMCw2 NSBAQCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yCj4gPiAqaW50ZWxfaGRjcF90b19jb25uZWN0b3Io c3RydWN0IGludGVsX2hkY3AgKmhkY3ApCj4gPiA+ID4gPiAgIAlyZXR1cm4gY29udGFpbmVyX29m KGhkY3AsIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IsIGhkY3ApOwo+ID4gPiA+ID4gICB9Cj4gPiA+ ID4gPiArLyogSW1wbGVtZW50cyBQYXJ0IDMgb2YgdGhlIEhEQ1AgYXV0aG9yaXphdGlvbiBwcm9j ZWR1cmUgKi8gaW50Cj4gPiA+ID4gPiAraW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gPiBTcHVyaW91cyBtb3ZlbWVudCBvZiB0aGlz IGZ1bmN0aW9uLiBQbGVhc2UgZHJvcCwgb3IgaWYgeW91IG5lZWQgdGhpcwo+ID4gPiA+IGZ1bmN0 aW9uIG1vdmVkLCBzcGxpdCBpdCBvdXQgaW50byBhIHNlcGFyYXRlIHBhdGNoIHRoYXQgb25seSBt b3Zlcwo+ID4gPiA+IHRoZSBmdW5jdGlvbiBhcm91bmQuCj4gPiA+Cj4gPiA+IEludGVudGlvbiBp cyBnYXRoZXJpbmcgdGhlIGhkY3AxLjQgZnVuY3Rpb25zIHRvZ2V0aGVyIGJlZm9yZSBpbXBsZW1l bnRpbmcKPiA+IHRoZSBoZGNwMi4yIGNvZGUuCj4gPiA+IEJ1dCBhcyB5b3UgbWVudGlvbmVkIGkg d2lsbCBkbyBpdCBhcyBhIHNlcGFyYXRlIHBhdGNoLgo+ID4gCj4gPiBBaCB5ZWFoIHRoYXQgbWFr ZXMgc2Vuc2UsIGJ1dCBjb21taXQgbWVzc2FnZSBkaWRuJ3QgZXhwbGFpbiB0aGF0LiBTZXBhcmF0 ZQo+ID4gcGF0Y2ggc291bmRzIGdvb2QuCj4gPiAtRGFuaWVsCj4gPiAKPiA+ID4KPiA+ID4gLS1S YW0KPiA+ID4KPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNw ID0gJmNvbm5lY3Rvci0+aGRjcDsKPiA+ID4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gY29ubmVjdG9yLT5iYXNlLmRldi0KPiA+ID5kZXZfcHJpdmF0ZTsKPiA+ID4g PiA+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQo+ID4gY29u bl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ID4gPiA+ID4gKwllbnVtIHBvcnQgcG9ydCA9IGlu dGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4gPiA+ID4gPiArCWludCByZXQgPSAwOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwlpZiAoIWhkY3AtPnNoaW0pCj4gPiA+ID4gPiArCQlyZXR1cm4gLUVO T0VOVDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJbXV0ZXhfbG9jaygmaGRjcC0+bXV0ZXgpOwo+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlpZiAoaGRjcC0+dmFsdWUgPT0gRFJNX01PREVfQ09OVEVO VF9QUk9URUNUSU9OX1VOREVTSVJFRCkKPiA+ID4gPiA+ICsJCWdvdG8gb3V0Owo+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gKwlpZiAoIShJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkgJiBI RENQX1NUQVRVU19FTkMpKSB7Cj4gPiA+ID4gPiArCQlEUk1fRVJST1IoIiVzOiVkIEhEQ1AgY2hl Y2sgZmFpbGVkOiBsaW5rIGlzIG5vdAo+ID4gZW5jcnlwdGVkLCV4XG4iLAo+ID4gPiA+ID4gKwkJ CSAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+ID4gPiA+ ID4gKwkJCSAgSTkxNV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpKTsKPiA+ID4gPiA+ICsJ CXJldCA9IC1FTlhJTzsKPiA+ID4gPiA+ICsJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVO VF9QUk9URUNUSU9OX0RFU0lSRUQ7Cj4gPiA+ID4gPiArCQlzY2hlZHVsZV93b3JrKCZoZGNwLT5w cm9wX3dvcmspOwo+ID4gPiA+ID4gKwkJZ290byBvdXQ7Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsJaWYgKGhkY3AtPnNoaW0tPmNoZWNrX2xpbmsoaW50ZWxfZGlnX3BvcnQp KSB7Cj4gPiA+ID4gPiArCQlpZiAoaGRjcC0+dmFsdWUgIT0KPiA+IERSTV9NT0RFX0NPTlRFTlRf UFJPVEVDVElPTl9VTkRFU0lSRUQpIHsKPiA+ID4gPiA+ICsJCQloZGNwLT52YWx1ZSA9Cj4gPiBE Uk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fRU5BQkxFRDsKPiA+ID4gPiA+ICsJCQlzY2hlZHVs ZV93b3JrKCZoZGNwLT5wcm9wX3dvcmspOwo+ID4gPiA+ID4gKwkJfQo+ID4gPiA+ID4gKwkJZ290 byBvdXQ7Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJRFJNX0RFQlVHX0tN UygiWyVzOiVkXSBIRENQIGxpbmsgZmFpbGVkLCByZXRyeWluZwo+ID4gYXV0aGVudGljYXRpb25c biIsCj4gPiA+ID4gPiArCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5i YXNlLmJhc2UuaWQpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXQgPSBfaW50ZWxfaGRjcF9k aXNhYmxlKGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiArCWlmIChyZXQpIHsKPiA+ID4gPiA+ICsJCURS TV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUgaGRjcCAoJWQpXG4iLCByZXQpOwo+ID4gPiA+ID4g KwkJaGRjcC0+dmFsdWUgPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVTSVJFRDsKPiA+ ID4gPiA+ICsJCXNjaGVkdWxlX3dvcmsoJmhkY3AtPnByb3Bfd29yayk7Cj4gPiA+ID4gPiArCQln b3RvIG91dDsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlyZXQgPSBfaW50 ZWxfaGRjcF9lbmFibGUoY29ubmVjdG9yKTsKPiA+ID4gPiA+ICsJaWYgKHJldCkgewo+ID4gPiA+ ID4gKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIGhkY3AgKCVkKVxuIiwgcmV0KTsKPiA+ ID4gPiA+ICsJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lS RUQ7Cj4gPiA+ID4gPiArCQlzY2hlZHVsZV93b3JrKCZoZGNwLT5wcm9wX3dvcmspOwo+ID4gPiA+ ID4gKwkJZ290byBvdXQ7Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtvdXQ6 Cj4gPiA+ID4gPiArCW11dGV4X3VubG9jaygmaGRjcC0+bXV0ZXgpOwo+ID4gPiA+ID4gKwlyZXR1 cm4gcmV0Owo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICAgc3RhdGljIHZvaWQg aW50ZWxfaGRjcF9jaGVja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gPiA+ ICAgewo+ID4gPiA+ID4gICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBjb250YWluZXJfb2Yo dG9fZGVsYXllZF93b3JrKHdvcmspLAo+ID4gPiA+ID4gQEAgLTc3NCwxNCArODMzLDM0IEBAIGJv b2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0Cj4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgZW51bSBwb3J0IHBvcnQpCj4gPiA+ID4gPiAgIAkJIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYp ICYmIHBvcnQgPCBQT1JUX0UpOwo+ID4gPiA+ID4gICB9Cj4gPiA+ID4gPiArYm9vbCBpc19oZGNw Ml9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KSB7Cj4gPiA+ID4g PiArCXJldHVybiAoKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikgfHwKPiA+ID4gPiA+ICsJCSBJU19LQUJZTEFLRShkZXZfcHJpdikpICYmCj4gPiBJ U19FTkFCTEVEKENPTkZJR19JTlRFTF9NRUlfSERDUCkpOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9pbml0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3Rvcikgewo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gPiA+ID4gKwlz dHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArCVdBUk5fT04oIWlzX2hkY3AyX3N1cHBvcnRlZChkZXZfcHJpdikpOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwkvKiBUT0RPOiBNRUkgaW50ZXJmYWNlIG5lZWRzIHRvIGJlIGluaXRp YWxpemVkIGhlcmUgKi8KPiA+ID4gPiA+ICsJaGRjcC0+aGRjcDJfc3VwcG9ydGVkID0gMTsKPiA+ ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgIGludCBpbnRlbF9oZGNwX2luaXQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiA+ID4gLQkJICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0pCj4gPiA+ID4gPiArCQkgICAgY29uc3Qgc3RydWN0 IGludGVsX2hkY3Bfc2hpbSAqc2hpbSwKPiA+ID4gPiA+ICsJCSAgICBib29sIGhkY3AyX3N1cHBv cnRlZCkKPiA+ID4gPiA+ICAgewo+ID4gPiA+ID4gICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3Ag PSAmY29ubmVjdG9yLT5oZGNwOwo+ID4gPiA+ID4gICAJaW50IHJldDsKPiA+ID4gPiA+IC0JcmV0 ID0gZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfY29udGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5KAo+ID4g PiA+ID4gLQkJCSZjb25uZWN0b3ItPmJhc2UpOwo+ID4gPiA+ID4gKwlpZiAoIXNoaW0pCj4gPiA+ ID4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJcmV0ID0KPiA+ ID4gPiA+ICtkcm1fY29ubmVjdG9yX2F0dGFjaF9jb250ZW50X3Byb3RlY3Rpb25fcHJvcGVydHko JmNvbm5lY3Rvci0+YmFzZQo+ID4gPiA+ID4gKyk7Cj4gPiA+ID4gPiAgIAlpZiAocmV0KQo+ID4g PiA+ID4gICAJCXJldHVybiByZXQ7Cj4gPiA+ID4gPiBAQCAtNzg5LDkgKzg2OCwzNyBAQCBpbnQg aW50ZWxfaGRjcF9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiA+ICpjb25uZWN0b3IsCj4g PiA+ID4gPiAgIAltdXRleF9pbml0KCZoZGNwLT5tdXRleCk7Cj4gPiA+ID4gPiAgIAlJTklUX0RF TEFZRURfV09SSygmaGRjcC0+Y2hlY2tfd29yaywgaW50ZWxfaGRjcF9jaGVja193b3JrKTsKPiA+ ID4gPiA+ICAgCUlOSVRfV09SSygmaGRjcC0+cHJvcF93b3JrLCBpbnRlbF9oZGNwX3Byb3Bfd29y ayk7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWlmIChoZGNwMl9zdXBwb3J0ZWQpCj4gPiA+ID4g PiArCQlpbnRlbF9oZGNwMl9pbml0KGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiAg IAlyZXR1cm4gMDsKPiA+ID4gPiA+ICAgfQo+ID4gPiA+ID4gK3ZvaWQgaW50ZWxfaGRjcF9leGl0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikgewo+ID4gPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07Cj4gPiA+ID4gPiArCXN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPiA+ID4gPiA+ICsJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcjsKPiA+ID4gPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3JfbGlzdF9p dGVyIGNvbm5faXRlcjsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJZHJtX2Nvbm5lY3Rvcl9saXN0 X2l0ZXJfYmVnaW4oZGV2LCAmY29ubl9pdGVyKTsKPiA+ID4gPiA+ICsJZHJtX2Zvcl9lYWNoX2Nv bm5lY3Rvcl9pdGVyKGNvbm5lY3RvciwgJmNvbm5faXRlcikgewo+ID4gPiA+ID4gKwkJaW50ZWxf Y29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArCQlpZiAoIWludGVsX2Nvbm5lY3Rvci0+aGRjcC5zaGltKQo+ID4gPiA+ID4gKwkJ CWNvbnRpbnVlOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwkJaW50ZWxfaGRjcF9kaXNhYmxlKGlu dGVsX2Nvbm5lY3Rvcik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCQltdXRleF9sb2NrKCZpbnRl bF9jb25uZWN0b3ItPmhkY3AubXV0ZXgpOwo+ID4gPiA+ID4gKwkJaW50ZWxfY29ubmVjdG9yLT5o ZGNwLmhkY3AyX3N1cHBvcnRlZCA9IDA7Cj4gPiA+ID4gPiArCQlpbnRlbF9jb25uZWN0b3ItPmhk Y3Auc2hpbSA9IE5VTEw7Cj4gPiA+ID4gPiArCQltdXRleF91bmxvY2soJmludGVsX2Nvbm5lY3Rv ci0+aGRjcC5tdXRleCk7Cj4gPiA+ID4gPiArCX0KPiA+ID4gPiA+ICsJZHJtX2Nvbm5lY3Rvcl9s aXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4g PiA+ICAgaW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiA+ID4gPiA+ICAgewo+ID4gPiA+ID4gICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3Ag PSAmY29ubmVjdG9yLT5oZGNwOyBAQCAtODY3LDYyICs5NzQsMwo+ID4gPiA+ID4gQEAgdm9pZCBp bnRlbF9oZGNwX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ ID4gPiA+ID4gICAJCQkJCQkgICBuZXdfc3RhdGUtPmNydGMpOwo+ID4gPiA+ID4gICAJY3J0Y19z dGF0ZS0+bW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiA+ID4gPiA+ICAgfQo+ID4gPiA+ID4gLQo+ID4g PiA+ID4gLS8qIEltcGxlbWVudHMgUGFydCAzIG9mIHRoZSBIRENQIGF1dGhvcml6YXRpb24gcHJv Y2VkdXJlICovIC1pbnQKPiA+ID4gPiA+IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpIC17Cj4gPiA+ID4gPiAtCXN0cnVjdCBpbnRlbF9oZGNw ICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiA+ID4gPiA+IC0Jc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gY29ubmVjdG9yLT5iYXNlLmRldi0KPiA+ID5kZXZfcHJpdmF0ZTsK PiA+ID4gPiA+IC0Jc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQo+ ID4gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ID4gPiA+ID4gLQllbnVtIHBvcnQgcG9y dCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4gPiA+ID4gPiAtCWludCByZXQgPSAwOwo+ ID4gPiA+ID4gLQo+ID4gPiA+ID4gLQlpZiAoIWhkY3AtPnNoaW0pCj4gPiA+ID4gPiAtCQlyZXR1 cm4gLUVOT0VOVDsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0JbXV0ZXhfbG9jaygmaGRjcC0+bXV0 ZXgpOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLQlpZiAoaGRjcC0+dmFsdWUgPT0gRFJNX01PREVf Q09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRCkKPiA+ID4gPiA+IC0JCWdvdG8gb3V0Owo+ID4g PiA+ID4gLQo+ID4gPiA+ID4gLQlpZiAoIShJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0 KSkgJiBIRENQX1NUQVRVU19FTkMpKSB7Cj4gPiA+ID4gPiAtCQlEUk1fRVJST1IoIiVzOiVkIEhE Q1AgY2hlY2sgZmFpbGVkOiBsaW5rIGlzIG5vdAo+ID4gZW5jcnlwdGVkLCV4XG4iLAo+ID4gPiA+ ID4gLQkJCSAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+ ID4gPiA+ID4gLQkJCSAgSTkxNV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpKTsKPiA+ID4g PiA+IC0JCXJldCA9IC1FTlhJTzsKPiA+ID4gPiA+IC0JCWhkY3AtPnZhbHVlID0gRFJNX01PREVf Q09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7Cj4gPiA+ID4gPiAtCQlzY2hlZHVsZV93b3JrKCZo ZGNwLT5wcm9wX3dvcmspOwo+ID4gPiA+ID4gLQkJZ290byBvdXQ7Cj4gPiA+ID4gPiAtCX0KPiA+ ID4gPiA+IC0KPiA+ID4gPiA+IC0JaWYgKGhkY3AtPnNoaW0tPmNoZWNrX2xpbmsoaW50ZWxfZGln X3BvcnQpKSB7Cj4gPiA+ID4gPiAtCQlpZiAoaGRjcC0+dmFsdWUgIT0KPiA+IERSTV9NT0RFX0NP TlRFTlRfUFJPVEVDVElPTl9VTkRFU0lSRUQpIHsKPiA+ID4gPiA+IC0JCQloZGNwLT52YWx1ZSA9 Cj4gPiBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fRU5BQkxFRDsKPiA+ID4gPiA+IC0JCQlz Y2hlZHVsZV93b3JrKCZoZGNwLT5wcm9wX3dvcmspOwo+ID4gPiA+ID4gLQkJfQo+ID4gPiA+ID4g LQkJZ290byBvdXQ7Cj4gPiA+ID4gPiAtCX0KPiA+ID4gPiA+IC0KPiA+ID4gPiA+IC0JRFJNX0RF QlVHX0tNUygiWyVzOiVkXSBIRENQIGxpbmsgZmFpbGVkLCByZXRyeWluZwo+ID4gYXV0aGVudGlj YXRpb25cbiIsCj4gPiA+ID4gPiAtCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVj dG9yLT5iYXNlLmJhc2UuaWQpOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLQlyZXQgPSBfaW50ZWxf aGRjcF9kaXNhYmxlKGNvbm5lY3Rvcik7Cj4gPiA+ID4gPiAtCWlmIChyZXQpIHsKPiA+ID4gPiA+ IC0JCURSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUgaGRjcCAoJWQpXG4iLCByZXQpOwo+ID4g PiA+ID4gLQkJaGRjcC0+dmFsdWUgPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fREVTSVJF RDsKPiA+ID4gPiA+IC0JCXNjaGVkdWxlX3dvcmsoJmhkY3AtPnByb3Bfd29yayk7Cj4gPiA+ID4g PiAtCQlnb3RvIG91dDsKPiA+ID4gPiA+IC0JfQo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLQlyZXQg PSBfaW50ZWxfaGRjcF9lbmFibGUoY29ubmVjdG9yKTsKPiA+ID4gPiA+IC0JaWYgKHJldCkgewo+ ID4gPiA+ID4gLQkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIGVuYWJsZSBoZGNwICglZClcbiIs IHJldCk7Cj4gPiA+ID4gPiAtCQloZGNwLT52YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVD VElPTl9ERVNJUkVEOwo+ID4gPiA+ID4gLQkJc2NoZWR1bGVfd29yaygmaGRjcC0+cHJvcF93b3Jr KTsKPiA+ID4gPiA+IC0JCWdvdG8gb3V0Owo+ID4gPiA+ID4gLQl9Cj4gPiA+ID4gPiAtCj4gPiA+ ID4gPiAtb3V0Ogo+ID4gPiA+ID4gLQltdXRleF91bmxvY2soJmhkY3AtPm11dGV4KTsKPiA+ID4g PiA+IC0JcmV0dXJuIHJldDsKPiA+ID4gPiA+IC19Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gPiA+ID4gaW5kZXggZTJjNmEyYjNlOGYyLi5lNzU1YTMz NzBiY2EgMTAwNjQ0Cj4gPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZG1pLmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ ID4gPiA+ID4gQEAgLTI0MTcsNyArMjQxNyw3IEBAIHZvaWQgaW50ZWxfaGRtaV9pbml0X2Nvbm5l Y3RvcihzdHJ1Y3QKPiA+IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gPiA+ ID4gPiAgIAlpZiAoaXNfaGRjcF9zdXBwb3J0ZWQoZGV2X3ByaXYsIHBvcnQpKSB7Cj4gPiA+ID4g PiAgIAkJaW50IHJldCA9IGludGVsX2hkY3BfaW5pdChpbnRlbF9jb25uZWN0b3IsCj4gPiA+ID4g PiAtCQkJCQkgICZpbnRlbF9oZG1pX2hkY3Bfc2hpbSk7Cj4gPiA+ID4gPiArCQkJCQkgICZpbnRl bF9oZG1pX2hkY3Bfc2hpbSwgZmFsc2UpOwo+ID4gPiA+ID4gICAJCWlmIChyZXQpCj4gPiA+ID4g PiAgIAkJCURSTV9ERUJVR19LTVMoIkhEQ1AgaW5pdCBmYWlsZWQsIHNraXBwaW5nLlxuIik7Cj4g PiA+ID4gVGhlIGFjdHVhbCBjaGFuZ2UgbGVmdCB0byB3aXJlIGhkY3AyX3N1cHBvcnRlZCBzZWVt cyBvayB3aXRoIG1lLCBidXQKPiA+ID4gPiBoYXJkIHRvIHRlbGwgd2l0aG91dCBzZWVpbmcgbW9y ZSB5ZXQgOi0pIC1EYW5pZWwKPiA+ID4gPgo+ID4gPiA+ID4gICAJfQo+ID4gPiA+ID4gLS0KPiA+ ID4gPiA+IDIuNy40Cj4gPiA+ID4gPgo+ID4gCj4gPiAtLQo+ID4gRGFuaWVsIFZldHRlcgo+ID4g U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiBodHRwOi8vYmxvZy5mZnds bC5jaAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0 aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=