From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v7 1/6] drm/i915: Fallback to lower link rate and lane count during link training Date: Thu, 29 Sep 2016 14:26:16 +0300 Message-ID: <8737kjlzfr.fsf@intel.com> References: <1473984244-4349-2-git-send-email-manasi.d.navare@intel.com> <1474051514-5811-1-git-send-email-manasi.d.navare@intel.com> <87twd2kcfd.fsf@intel.com> <20160927152502.GA18889@intel.com> <8737klp8zu.fsf@intel.com> <20160929064150.GA13161@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 060626E21C for ; Thu, 29 Sep 2016 11:26:18 +0000 (UTC) In-Reply-To: <20160929064150.GA13161@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyOSBTZXAgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gT24gVHVlLCBTZXAgMjcsIDIwMTYgYXQgMDg6MDc6MDFQTSArMDMwMCwg SmFuaSBOaWt1bGEgd3JvdGU6Cj4+IE9uIFR1ZSwgMjcgU2VwIDIwMTYsIE1hbmFzaSBOYXZhcmUg PG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+IHdyb3RlOgo+PiA+IE9uIE1vbiwgU2VwIDI2LCAy MDE2IGF0IDA0OjM5OjM0UE0gKzAzMDAsIEphbmkgTmlrdWxhIHdyb3RlOgo+PiA+PiBPbiBGcmks IDE2IFNlcCAyMDE2LCBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPiB3 cm90ZToKPj4gPj4gPiBBY2NvcmRpbmcgdG8gdGhlIERpc3BsYXlQb3J0IFNwZWMsIGluIGNhc2Ug b2YgQ2xvY2sgUmVjb3ZlcnkgZmFpbHVyZQo+PiA+PiA+IHRoZSBsaW5rIHRyYWluaW5nIHNlcXVl bmNlIHNob3VsZCBmYWxsIGJhY2sgdG8gdGhlIGxvd2VyIGxpbmsgcmF0ZQo+PiA+PiA+IGZvbGxv d2VkIGJ5IGxvd2VyIGxhbmUgY291bnQgdW50aWwgQ1Igc3VjY2VlZHMuCj4+ID4+ID4gT24gQ1Ig c3VjY2VzcywgdGhlIHNlcXVlbmNlIHByb2NlZWRzIHdpdGggQ2hhbm5lbCBFUS4KPj4gPj4gPiBJ biBjYXNlIG9mIENoYW5uZWwgRVEgZmFpbHVyZXMsIGl0IHNob3VsZCBmYWxsYmFjayB0bwo+PiA+ PiA+IGxvd2VyIGxpbmsgcmF0ZSBhbmQgbGFuZSBjb3VudCBhbmQgc3RhcnQgdGhlIENSIHBoYXNl IGFnYWluLgo+PiA+PiAKPj4gPj4gVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIGxpbmsgdHJhaW5pbmcg c3RhcnQgYXQgdGhlIG1heCBsYW5lIGNvdW50IGFuZCBtYXgKPj4gPj4gbGluayByYXRlLiBUaGlz IGlzIG5vdCBpZGVhbCwgYXMgaXQgd2FzdGVzIHRoZSBsaW5rLiBBbmQgaXQgaXMgbm90IGEKPj4g Pj4gc3BlYyByZXF1aXJlbWVudC4gIlRoZSBMaW5rIFBvbGljeSBNYWtlciBvZiB0aGUgdXBzdHJl YW0gZGV2aWNlIG1heQo+PiA+PiBjaG9vc2UgYW55IGxpbmsgY291bnQgYW5kIGxpbmsgcmF0ZSBh cyBsb25nIGFzIHRoZXkgZG8gbm90IGV4Y2VlZCB0aGUKPj4gPj4gY2FwYWJpbGl0aWVzIG9mIHRo ZSBEUCByZWNlaXZlci4iCj4+ID4+IAo+PiA+PiBPdXIgY3VycmVudCBjb2RlIHN0YXJ0cyBhdCB0 aGUgbWluaW11bSByZXF1aXJlZCBiYW5kd2lkdGggZm9yIHRoZSBtb2RlLAo+PiA+PiB0aGVyZWZv cmUgd2UgY2FuJ3QgZmFsbCBiYWNrIHRvIGxvd2VyIGxpbmsgcmF0ZSBhbmQgbGFuZSBjb3VudCB3 aXRob3V0Cj4+ID4+IHJlZHVjaW5nIHRoZSBtb2RlLgo+PiA+PiAKPj4gPj4gQUZBSUNUIHRoaXMg cGF0Y2ggaGVyZSBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdGhlIGxpbmsgYmFuZHdpZHRoIHRvIGRy b3AKPj4gPj4gYmVsb3cgd2hhdCBpcyByZXF1aXJlZCBmb3IgdGhlIG1vZGUuIFRoaXMgaXMgdW5h Y2NlcHRhYmxlLgo+PiA+PiAKPj4gPj4gQlIsCj4+ID4+IEphbmkuCj4+ID4+IAo+PiA+Pgo+PiA+ Cj4+ID4gVGhhbmtzIEphbmkgZm9yIHlvdXIgcmV2aWV3IGNvbW1lbnRzLgo+PiA+IFllcyBpbiB0 aGlzIGNoYW5nZSB3ZSBzdGFydCBhdCB0aGUgbWF4IGxpbmsgcmF0ZSBhbmQgbGFuZSBjb3VudC4g VGhpcwo+PiA+IGNoYW5nZSB3YXMgbWFkZSBhY2NvcmRpbmcgdG8gdGhlIGRlc2lnbiBkb2N1bWVu dCBkaXNjdXNzaW9ucyB3ZSBoYWQKPj4gPiBiZWZvcmUgc3RyYXRpbmcgdGhpcyBEUCBSZWRlc2ln biBwcm9qZWN0LiBUaGUgbWFpbiByZWFzb24gZm9yIHN0YXJ0aW5nCj4+ID4gYXQgdGhlIG1heGxp bmsgcmF0ZSBhbmQgbWF4IGxhbmUgY291bnQgd2FzIGZvciBlbnN1cmluZyBwcm9wZXIKPj4gPiBi ZWhhdmlvciBvZiBEUCBNU1QuIEluIGNhc2Ugb2YgRFAgTVNULCB3ZSB3YW50IHRvIHRyYWluIHRo ZSBsaW5rIGF0Cj4+ID4gdGhlIG1heGltdW0gc3VwcG9ydGVkIGxpbmsgcmF0ZS9sYW5lIGNvdW50 IGJhc2VkIG9uIGFuIGVhcmx5LyB1cGZyb250Cj4+ID4gbGluayB0cmFpbmluZyByZXN1bHQgc28g dGhhdCB3ZSBkb250IGZhaWwgd2hlbiB3ZSB0cnkgdG8gY29ubmVjdCBhCj4+ID4gaGlnaGVyIHJl c29sdXRpb24gbW9uaXRvciBhcyBhIHNlY29uZCBtb25pdG9yLiBUaGlzIGEgdHJhZGUgb2ZmCj4+ ID4gYmV0d2VlbiB3c3RpbmcgdGhlIGxpbmsgb3IgaGlnaGVyIHBvd2VyIHZzLiBuZWVkaW5nIHRv IHJldHJhaW4gZm9yCj4+ID4gZXZlcnkgbW9uaXRvciB0aGF0IHJlcXVlc3RzIGEgaGlnaGVyIEJX IGluIGNhc2Ugb2YgRFAgTVNULgo+PiAKPj4gV2UgYWxyZWFkeSB0cmFpbiBhdCBtYXggYmFuZHdp ZHRoIGZvciBEUCBNU1QsIHdoaWNoIHNlZW1zIHRvIGJlIHRoZQo+PiBzZW5zaWJsZSB0aGluZyB0 byBkby4KPj4gCj4+ID4gQWN0dWFsbHkgdGhpcyBpcyBhbHNvIHRoZSByZWFzb24gZm9yIGVuYWJs aW5nIHVwZnJvbnQgbGluayB0cmFpbmluZyBpbgo+PiA+IHRoZSBmb2xsb3dpbmcgcGF0Y2ggd2hl cmUgd2UgdHJhaW4gdGhlIGxpbmsgbXVjaCBhaGVhZCBpbiB0aGUgbW9kZXNldAo+PiA+IHNlcXVl bmNlIHRvIHVuZGVyc3RhbmQgdGhlIGxpbmsgcmF0ZSBhbmQgbGFuZSBjb3VudCB2YWx1ZXMgYXQg d2hpY2gKPj4gPiB0aGUgbGluayBjYW4gYmUgc3VjY2Vzc2Z1bGx5IHRyYWluZWQgYW5kIHRoZW4g dGhlIGxpbmsgdHJhaW5pbmcKPj4gPiB0aHJvdWdoIG1vZGVzZXQgd2lsbCBhbHdheXMgc3RhcnQg YXQgdGhlIHVwZnJvbnQgdmFsdWVzIChtYXhpbXVtCj4+ID4gc3VwcG9ydGVkIHZhbHVlcyBvZiBs YW5lIGNvdW50IGFuZCBsaW5rIHJhdGUgYmFzZWQgb24gdXBmcm9udCBsaW5rCj4+ID4gdHJhaW5p bmcpLgo+PiAKPj4gSSBkb24ndCBzZWUgYSBuZWVkIHRvIGRvIHRoaXMgZm9yIERQIFNTVC4KPj4g Cj4+ID4gQXMgcGVyIHRoZSBDVFMsIGFsbCB0aGUgdGVzdCA0LjMuMS40IHJlcXVpcmVzIHRoYXQg eW91IGZhbGwgYmFjayB0bwo+PiA+IHRoZSBsb3dlciBsaW5rIHJhdGUgYWZ0ZXIgdHJ5aW5nIHRv IHRyYWluIGF0IHRoZSBtYXhpbXVtIGxpbmsgcmF0ZQo+PiA+IGFkdmVydGlzZWQgdGhyb3VnaCB0 aGUgRFBDRCByZWdpc3RlcnMuCj4+IAo+PiBUaGF0IHRlc3QgZG9lcyBub3QgcmVxdWlyZSB0aGUg c291cmNlIERVVCB0byBkZWZhdWx0IHRvIG1heGltdW0gbGFuZQo+PiBjb3VudCBvciBsaW5rIHJh dGUgb2YgdGhlIHNpbmsuIFRoZSBzb3VyY2UgbWF5IGZyZWVseSBjaG9vc2UgdGhlIGxhbmUKPj4g Y291bnQgYW5kIGxpbmsgcmF0ZSBhcyBsb25nIGFzIHRoZXkgZG9uJ3QgZXhjZWVkIHNpbmsgY2Fw YWJpbGl0aWVzLgo+PiAKPj4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgdGVzdCwgdGhlIHRlc3Qg c2V0dXAgY2FuIHJlcXVlc3Qgc3BlY2lmaWMKPj4gcGFyYW1ldGVycyB0byBiZSB1c2VkLCBidXQg dGhhdCBkb2VzIG5vdCBtZWFuIHVzaW5nIG1heGltdW0gYnkKPj4gKmRlZmF1bHQqLgo+PiAKPj4g V2UgY3VycmVudGx5IGxhY2sgdGhlIGZlYXR1cmUgdG8gcmVkdWNlIGxhbmUgY291bnQgYW5kIGxp bmsgcmF0ZS4gVGhlCj4+IGtleSB0byB1bmRlcnN0YW5kIGhlcmUgaXMgdGhhdCBzdGFydGluZyBh dCBtYXggYW5kIHJlZHVjaW5nIGRvd24gdG8gdGhlCj4+IHN1ZmZpY2llbnQgcGFyYW1ldGVycyBm b3IgdGhlIG1vZGUgKHdoaWNoIGlzIHdoZXJlIHdlIHN0YXJ0IG5vdykgb2ZmZXJzCj4+IG5vIHJl YWwgYmVuZWZpdCBmb3IgYW55IHVzZSBjYXNlLiBXaGF0IHdlJ3JlIGxhY2tpbmcgaXMgYSBmZWF0 dXJlIHRvCj4+IHJlZHVjZSB0aGUgbGluayBwYXJhbWV0ZXJzICpiZWxvdyogd2hhdCdzIHJlcXVp cmVkIGJ5IHRoZSBtb2RlIHRoZQo+PiB1c2Vyc3BhY2Ugd2FudHMuIFRoaXMgY2FuIG9ubHkgYmUg YWNoaWV2ZWQgdGhyb3VnaCBjb29wZXJhdGlvbiB3aXRoCj4+IHVzZXJzcGFjZS4KPj4gCj4KPiBX ZSBjYW4gdHJhaW4gYXQgdGhlIG9wdGltYWwgbGluayByYXRlIHJlcXVpcmVkIGZvciB0aGUgcmVx dWVzdGVkIG1vZGUgYXMKPiBkb25lIGluIHRoZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBhbmQg cmV0cmFpbiB3aGVuZXZlciB0aGUgbGluayB0cmFpbmluZwo+IHRlc3QgcmVxdWVzdCBpcyBzZW50 LiAKPiBGb3IgdGhlIHRlc3QgNC4zLjEuNCBpbiBDVFMsIGl0IGRvZXMgZm9yY2UgYSBmYWlsdXJl IGluIENSIGFuZCBleHBlY3RzIHRoZQo+IGRyaXZlciB0byBmYWxsIGJhY2sgdG8gZXZlbiBsb3dl ciBsaW5rIHJhdGUuIFdlIGRvIG5vdCBpbXBsZW1lbnQgdGhpcyBpbiB0aGUKPiBjdXJyZW50IGRy aXZlciBhbmQgc28gdGhpcyB0ZXN0IGZhaWxzLiBDb3VsZCB5b3UgZWxhYm9yYXRlIG9uIGhvdyB0 aGlzIGNhbgo+IGJlIGFjaGlldmVkIHdpdGggdGhlIHRoZSBjb29wZXJhdGlvbiB3aXRoIHVzZXJz cGFjZT8KPiBTaG91bGQgd2Ugc2VuZCBhIHVldmVudCB0byB0aGUgdXNlcnNwYWNlIGFza2luZyB0 byByZXRyeSBhdCBhIGxvd2VyIHJlc29sdXRpb24KPiBhZnRlciByZXRyYWluaW5nIGF0IHRoZSBs b3dlciBsaW5rIHJhdGU/Cj4gVGhpcyBpcyBwZXJ0dHkgbXVjaCB0aGUgcGxhY2Ugd2hlcmUgbWFq b3JpdHkgb2YgdGhlIGNvbXBsaWFuY2UgdGVzdHMgYXJlIGZhaWxpbmcuCj4gSG93IGNhbiB3ZSBw YXNzIGNvbXBsaWFuY2Ugd2l0aCByZWdhcmRzIHRvIHRoaXMgZmVhdHVyZT8KClNvIGhlcmUncyBh biBpZGVhIFZpbGxlIGFuZCBJIGNhbWUgdXAgd2l0aC4gSXQncyBub3QgY29tcGxldGVseSB0aG91 Z2h0Cm91dCB5ZXQsIHByb2JhYmx5IGhhcyBzb21lIHdyaW5rbGVzIHN0aWxsLCBidXQgdGhlbiB0 aGVyZSBhcmUgd3JpbmtsZXMKd2l0aCB0aGUgdXBmcm9udCBsaW5rIHRyYWluaW5nIHRvbyAoSSds bCBnZXQgYmFjayB0byB0aG9zZSBzZXBhcmF0ZWx5KS4KCklmIGxpbmsgdHJhaW5pbmcgZmFpbHMg ZHVyaW5nIG1vZGVzZXQgKGVpdGhlciBmb3IgcmVhbCBvciBiZWNhdXNlIGl0J3MgYQp0ZXN0IHNp bmsgdGhhdCB3YW50cyB0byB0ZXN0IGZhaWx1cmVzKSwgd2UgMSkgc3RvcmUgdGhlIGxpbmsgcGFy YW1ldGVycwphcyBmYWlsaW5nLCAyKSBzZW5kIGEgdWV2ZW50IHRvIHVzZXJzcGFjZSwgaG9wZWZ1 bGx5IGdldHRpbmcgdGhlCnVzZXJzcGFjZSB0byBkbyBhbm90aGVyIGdldCBtb2RlcyBhbmQgdHJ5 IGFnYWluLCAzKSBwcm9wYWdlIGVycm9ycyBmcm9tCm1vZGVzZXQuIFdoZW4gdGhlIHVzZXJzcGFj ZSBhc2tzIGZvciB0aGUgbW9kZXMgYWdhaW4sIHdlIGNhbiBwcnVuZSB0aGUKbW9kZXMgdGhhdCBy ZXF1aXJlIHVzaW5nIHRoZSBwYXJhbWV0ZXJzIHRoYXQgZmFpbGVkLiBJZiB0aGUgbGluawp0cmFp bmluZyBmYWlscyBhZ2Fpbiwgd2UgcmVwZWF0IHRoZSBzdGVwcy4gV2hlbiB3ZSBkZXRlY3QgbG9u ZyBocGQsIHdlCmRyb3AgdGhlIGxpc3Qgb2YgZmFpbGluZyBtb2Rlcywgc28gd2UgY2FuIHN0YXJ0 IGZyb20gc2NyYXRjaCAoaXQgY291bGQKYmUgYW5vdGhlciBkaXNwbGF5IG9yIGFub3RoZXIgY2Fi bGUsIGV0Yy4pLiBUaGlzIHNhbWUgYXBwcm9hY2ggY291bGQgYmUKdXNlZCB3aXRoIHNpbmsgaXNz dWVkIGxpbmsgc3RhdHVzIGNoZWNrcyB3aGVuIHRoZSBsaW5rIGhhcyBkZWdyYWRlZApkdXJpbmcg b3BlcmF0aW9uLgoKVmlsbGUsIGFueXRoaW5nIHRvIGFkZCB0byB0aGF0PwoKQlIsCkphbmkuCgoK Cgo+Cj4gUmVnYXJkcwo+IE1hbmFzaSAKPj4gPiBUaGlzIHdpbGwgbm90IGRyb3AgdGhlIGxpbmsg QlcgdG8gYSBudW1iZXIgYmVsb3cgd2hhdCBpcyByZXF1aXJlZCBmb3IKPj4gPiB0aGUgbW9kZSBi ZWNhdXNlIHRoZSByZXF1ZXN0ZWQgbW9kZXMgYXJlIHBydW5lZCBvciB2YWxpZGF0ZWQgaW4KPj4g PiBpbnRlbF9kcF9tb2RlX3ZhbGlkIGJhc2VkIG9uIHRoZSB1cGZyb250IGxpbmsgdHJhaW5pbmcg cmVzdWx0cyBpbiB0aGUKPj4gPiBmb2xsb3dpbmcgcGF0Y2guIEFuZCB0aGVzZSB2YWx1ZXMgYXJl IHVzZWQgaGVyZSBhcyB0aGUgc3RhcnRpbmcgdmFsdWVzCj4+ID4gb2YgbGluayByYXRlIGFuZCBs YW5lIGNvdW50Lgo+PiAKPj4gRWFjaCBwYXRjaCBtdXN0IGJlIGEgd29ydGh3aGlsZSBjaGFuZ2Ug b24gaXRzIG93bi4gQnkgbXkgcmVhZGluZyBvZiB0aGlzCj4+IHBhdGNoLCB3ZSBjYW4gZ28gdW5k ZXIgdGhlIHJlcXVpcmVkIGJhbmR3aWR0aC4gWW91IGNhbid0IGp1c3RpZnkgdGhhdCBieQo+PiBz YXlpbmcgdGhlIGZvbGxvdy11cCBwYXRjaCBmaXhlcyBpdC4KPj4gCj4+ID4gSSBhbG1vc3QgZmVl bCB0aGF0IHRoZSB1cGZyb250IGxpbmsgdHJhaW5pbmcgcGF0Y2ggYW5kIHRoaXMgcGF0Y2ggc2hv dWxkIGJlIAo+PiA+IGNvbWJpbmVkIHNvIHRoYXQgaW5zZWFkIG9mIHN0YXJ0aW5nIGZyb20gdGhl IG1heCBsaW5rIHJhdGUgYW5kIGxhbmUgY291bnQgaXQKPj4gPiBpcyBjbGVhciB0aGF0IHdlIGFy ZSBzdGFydGluZyBmcm9tIHRoZSB1cGZyb250IHZhbHVlcy4KPj4gCj4+IEkgYW0gc3RpbGwgcmVh ZGluZyBhbmQgZ2F0aGVyaW5nIG1vcmUgZmVlZGJhY2sgb24gdGhlIHVwZnJvbnQgbGluawo+PiB0 cmFpbmluZyBwYXRjaC4gSSB3aWxsIGdldCBiYWNrIHRvIHlvdS4gQnV0IHRoZSBpbXByZXNzaW9u IEknbSBjdXJyZW50bHkKPj4gZ2V0dGluZyBpcyB0aGF0IHdlIGNhbid0IGRvIHRoaXMuIFRoZSB1 cGZyb250IGxpbmsgdHJhaW5pbmcgcGF0Y2ggd2FzCj4+IG9yaWdpbmFsbHkgd3JpdHRlbiBmb3Ig VVNCIHR5cGUgQy4gQnV0IGlmIERQIGNvbXBsaWFuY2UgaGFzIHByaW9yaXR5LAo+PiB0aGUgb3Jk ZXIgb2YgYnVzaW5lc3Mgc2hvdWxkIGJlIGdldHRpbmcgY29tcGxpYW5jZSB3aXRob3V0IHVwZnJv bnQgbGluawo+PiB0cmFpbmluZy4gSSBhbSBhbHNvIHN0aWxsIG5vdCBjb252aW5jZWQgdXBmcm9u dCBsaW5rIHRyYWluaW5nIGlzCj4+IHJlcXVpcmVkIGZvciBjb21wbGlhbmNlLgo+PiAKPj4gVG8g YmUgY29udGludWVkLi4uCj4+IAo+PiBCUiwKPj4gSmFuaS4KPj4gCj4+IAo+PiAKPj4gPgo+PiA+ IFJlZ2FyZHMsCj4+ID4gTWFuYXNpIAo+PiA+PiA+Cj4+ID4+ID4gdjc6Cj4+ID4+ID4gKiBBZGRy ZXNzIHJlYWRhYmlsaXR5IGNvbmNlcm5zIChNaWthIEthaG9sYSkKPj4gPj4gPiB2NjoKPj4gPj4g PiAqIERvIG5vdCBzcGxpdCBxdW90ZWQgc3RyaW5nIGFjcm9zcyBsaW5lIChNaWthIEthaG9sYSkK Pj4gPj4gPiB2NToKPj4gPj4gPiAqIFJlc2V0IHRoZSBsaW5rIHJhdGUgaW5kZXggdG8gdGhlIG1h eCBsaW5rIHJhdGUgaW5kZXgKPj4gPj4gPiBiZWZvcmUgbG93ZXJpbmcgdGhlIGxhbmUgY291bnQg KEphbmkgTmlrdWxhKQo+PiA+PiA+ICogVXNlIHRoZSBwYXJhZGlnbSBmb3IgbG9vcCBpbiBpbnRl bF9kcF9saW5rX3JhdGVfaW5kZXgKPj4gPj4gPiB2NDoKPj4gPj4gPiAqIEZpeGVkIHRoZSBsaW5r IHJhdGUgZmFsbGJhY2sgbG9vcCAoTWFuYXNpIE5hdmFyZSkKPj4gPj4gPiB2MzoKPj4gPj4gPiAq IEZpeGVkIHNvbWUgcmViYXNlIGlzc3VlcyAoTWlrYSBLYWhvbGEpCj4+ID4+ID4gdjI6Cj4+ID4+ ID4gKiBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuIGluZGV4IG9mIHJlcXVlc3RlZCBs aW5rIHJhdGUKPj4gPj4gPiBpbnRvIGNvbW1vbl9yYXRlcyBhcnJheQo+PiA+PiA+ICogQ2hhbmdl ZCB0aGUgbGluayByYXRlIGZhbGxiYWNrIGxvb3AgdG8gbWFrZSB1c2UKPj4gPj4gPiBvZiBjb21t b25fcmF0ZXMgYXJyYXkgKE1pa2EgS2Fob2xhKQo+PiA+PiA+ICogQ2hhbmdlZCBJTlRFTF9JTkZP IHRvIElOVEVMX0dFTiAoRGF2aWQgV2VpbmVoYWxsKQo+PiA+PiA+Cj4+ID4+ID4gU2lnbmVkLW9m Zi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPj4gPj4gPiAt LS0KPj4gPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICAgICAgICAg IHwgMTEzICsrKysrKysrKysrKysrKysrKysrKysrLS0tCj4+ID4+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICB8ICAxNSArKysrCj4+ID4+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyB8ICAxMyArKy0KPj4gPj4g PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgICAgIHwgICA2ICst Cj4+ID4+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMTMzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9u cygtKQo+PiA+PiA+Cj4+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPj4gPj4gPiBpbmRl eCA4MDY1YTVmLi4wOTMwMzhjIDEwMDY0NAo+PiA+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jCj4+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMKPj4gPj4gPiBAQCAtMTYzNywxOSArMTYzNywxOCBAQCB2b2lkIGludGVsX2RkaV9jbGtf c2VsZWN0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiA+PiA+ICAJfQo+PiA+PiA+ ICB9Cj4+ID4+ID4gIAo+PiA+PiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9k cChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4gPj4gPiArc3RhdGljIHZvaWQgaW50 ZWxfZGRpX3ByZV9lbmFibGVfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+PiA+ PiA+ICAJCQkJICAgIGludCBsaW5rX3JhdGUsIHVpbnQzMl90IGxhbmVfY291bnQsCj4+ID4+ID4g LQkJCQkgICAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwsCj4+ID4+ID4gLQkJCQkgICAg Ym9vbCBsaW5rX21zdCkKPj4gPj4gPiArCQkJCSAgICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwg KnBsbCkKPj4gPj4gPiAgewo+PiA+PiA+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVu Y190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4+ID4+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPj4gPj4gPiAg CWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoZW5jb2Rlcik7Cj4+ ID4+ID4gIAo+PiA+PiA+ICAJaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLCBsaW5r X3JhdGUsIGxhbmVfY291bnQsCj4+ID4+ID4gLQkJCQkgbGlua19tc3QpOwo+PiA+PiA+IC0JaWYg KGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPj4gPj4gPiAtCQlpbnRlbF9lZHBf cGFuZWxfb24oaW50ZWxfZHApOwo+PiA+PiA+ICsJCQkJIGZhbHNlKTsKPj4gPj4gPiArCj4+ID4+ ID4gKwlpbnRlbF9lZHBfcGFuZWxfb24oaW50ZWxfZHApOwo+PiA+PiA+ICAKPj4gPj4gPiAgCWlu dGVsX2RkaV9jbGtfc2VsZWN0KGVuY29kZXIsIHBsbCk7Cj4+ID4+ID4gIAlpbnRlbF9wcmVwYXJl X2RwX2RkaV9idWZmZXJzKGVuY29kZXIpOwo+PiA+PiA+IEBAIC0xNjYwLDYgKzE2NTksMjggQEAg c3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXIsCj4+ID4+ID4gIAkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsK Pj4gPj4gPiAgfQo+PiA+PiA+ICAKPj4gPj4gPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9l bmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4+ID4+ID4gKwkJCQkgICAg aW50IGxpbmtfcmF0ZSwgdWludDMyX3QgbGFuZV9jb3VudCwKPj4gPj4gPiArCQkJCSAgICBzdHJ1 Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPj4gPj4gPiArCQkJCSAgICBib29sIGxpbmtfbXN0 KQo+PiA+PiA+ICt7Cj4+ID4+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPj4gPj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+PiA+PiA+ICsJc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsKPj4gPj4gPiArCj4+ ID4+ID4gKwkvKiBEaXNhYmxlIHRoZSBQTEwgYW5kIG9idGFpbiB0aGUgUExMIGZvciBMaW5rIFRy YWluaW5nCj4+ID4+ID4gKwkgKiB0aGF0IHN0YXJ0cyB3aXRoIGhpZ2hlc3QgbGluayByYXRlIGFu ZCBsYW5lIGNvdW50Lgo+PiA+PiA+ICsJICovCj4+ID4+ID4gKwl0bXBfcGxsX2NvbmZpZyA9IHBs bC0+Y29uZmlnOwo+PiA+PiA+ICsJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ PiA+PiA+ICsJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKPj4gPj4gPiArCj4+ID4+ID4gKwkv KiBJZiBMaW5rIFRyYWluaW5nIGZhaWxzLCBzZW5kIGEgdWV2ZW50IHRvIGdlbmVyYXRlIGEgaG90 cGx1ZyAqLwo+PiA+PiA+ICsJaWYgKCFpbnRlbF9kZGlfbGlua190cmFpbihpbnRlbF9kcCwgbGlu a19yYXRlLCBsYW5lX2NvdW50LCBsaW5rX21zdCkpCj4+ID4+ID4gKwkJZHJtX2ttc19oZWxwZXJf aG90cGx1Z19ldmVudChlbmNvZGVyLT5iYXNlLmRldik7Cj4+ID4+ID4gKwlwbGwtPmNvbmZpZyA9 IHRtcF9wbGxfY29uZmlnOwo+PiA+PiA+ICt9Cj4+ID4+ID4gKwo+PiA+PiA+ICBzdGF0aWMgdm9p ZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+PiA+PiA+ICAJCQkJICAgICAgYm9vbCBoYXNfaGRtaV9zaW5rLAo+PiA+PiA+ICAJCQkJICAg ICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUsCj4+ID4+ID4gQEAgLTE2 OTMsMjAgKzE3MTQsMjYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4+ID4+ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7Cj4+ID4+ID4gIAlpbnQgdHlw ZSA9IGludGVsX2VuY29kZXItPnR5cGU7Cj4+ID4+ID4gIAo+PiA+PiA+IC0JaWYgKHR5cGUgPT0g SU5URUxfT1VUUFVUX0RQIHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+PiA+PiA+ICsJ aWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPj4gPj4gPiArCQlpbnRlbF9kZGlfcHJlX2Vu YWJsZV9lZHAoaW50ZWxfZW5jb2RlciwKPj4gPj4gPiArCQkJCQljcnRjLT5jb25maWctPnBvcnRf Y2xvY2ssCj4+ID4+ID4gKwkJCQkJY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50LAo+PiA+PiA+ICsJ CQkJCWNydGMtPmNvbmZpZy0+c2hhcmVkX2RwbGwpOwo+PiA+PiA+ICsKPj4gPj4gPiArCWlmICh0 eXBlID09IElOVEVMX09VVFBVVF9EUCkKPj4gPj4gPiAgCQlpbnRlbF9kZGlfcHJlX2VuYWJsZV9k cChpbnRlbF9lbmNvZGVyLAo+PiA+PiA+ICAJCQkJCWNydGMtPmNvbmZpZy0+cG9ydF9jbG9jaywK Pj4gPj4gPiAgCQkJCQljcnRjLT5jb25maWctPmxhbmVfY291bnQsCj4+ID4+ID4gIAkJCQkJY3J0 Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCwKPj4gPj4gPiAgCQkJCQlpbnRlbF9jcnRjX2hhc190eXBl KGNydGMtPmNvbmZpZywKPj4gPj4gPiAgCQkJCQkJCSAgICBJTlRFTF9PVVRQVVRfRFBfTVNUKSk7 Cj4+ID4+ID4gLQl9Cj4+ID4+ID4gLQlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgewo+ PiA+PiA+ICsKPj4gPj4gPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKQo+PiA+PiA+ ICAJCWludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoaW50ZWxfZW5jb2RlciwKPj4gPj4gPiAgCQkJ CQkgIGNydGMtPmNvbmZpZy0+aGFzX2hkbWlfc2luaywKPj4gPj4gPiAgCQkJCQkgICZjcnRjLT5j b25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSwKPj4gPj4gPiAgCQkJCQkgIGNydGMtPmNvbmZpZy0+ c2hhcmVkX2RwbGwpOwo+PiA+PiA+IC0JfQo+PiA+PiA+ICsKPj4gPj4gPiAgfQo+PiA+PiA+ICAK Pj4gPj4gPiAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPj4gPj4gPiBAQCAtMjQzNSw2ICsyNDYyLDcyIEBAIGlu dGVsX2RkaV9nZXRfbGlua19kcGxsKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBjbG9j aykKPj4gPj4gPiAgCXJldHVybiBwbGw7Cj4+ID4+ID4gIH0KPj4gPj4gPiAgCj4+ID4+ID4gK2Jv b2wKPj4gPj4gPiAraW50ZWxfZGRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgaW50IG1heF9saW5rX3JhdGUsCj4+ID4+ID4gKwkJICAgICB1aW50OF90IG1heF9sYW5lX2Nv dW50LCBib29sIGxpbmtfbXN0KQo+PiA+PiA+ICt7Cj4+ID4+ID4gKwlzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+PiA+PiA+ ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4+ ID4+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKPj4gPj4gPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ PiA+PiA+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsK Pj4gPj4gPiArCWludCBsaW5rX3JhdGUsIG1heF9saW5rX3JhdGVfaW5kZXgsIGxpbmtfcmF0ZV9p bmRleDsKPj4gPj4gPiArCXVpbnQ4X3QgbGFuZV9jb3VudDsKPj4gPj4gPiArCWludCBjb21tb25f cmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7fTsKPj4gPj4gPiArCWJvb2wgcmV0ID0g ZmFsc2U7Cj4+ID4+ID4gKwo+PiA+PiA+ICsJbWF4X2xpbmtfcmF0ZV9pbmRleCA9IGludGVsX2Rw X2xpbmtfcmF0ZV9pbmRleChpbnRlbF9kcCwgY29tbW9uX3JhdGVzLAo+PiA+PiA+ICsJCQkJCQkg ICAgICAgbWF4X2xpbmtfcmF0ZSk7Cj4+ID4+ID4gKwlpZiAobWF4X2xpbmtfcmF0ZV9pbmRleCA8 IDApIHsKPj4gPj4gPiArCQlEUk1fRVJST1IoIkludmFsaWQgTGluayBSYXRlXG4iKTsKPj4gPj4g PiArCQlyZXR1cm4gZmFsc2U7Cj4+ID4+ID4gKwl9Cj4+ID4+ID4gKwo+PiA+PiA+ICsJZm9yIChs YW5lX2NvdW50ID0gbWF4X2xhbmVfY291bnQ7IGxhbmVfY291bnQgPiAwOyBsYW5lX2NvdW50ID4+ PSAxKSB7Cj4+ID4+ID4gKwkJZm9yIChsaW5rX3JhdGVfaW5kZXggPSBtYXhfbGlua19yYXRlX2lu ZGV4Owo+PiA+PiA+ICsJCSAgICAgbGlua19yYXRlX2luZGV4ID49IDA7IGxpbmtfcmF0ZV9pbmRl eC0tKSB7Cj4+ID4+ID4gKwkJCWxpbmtfcmF0ZSA9IGNvbW1vbl9yYXRlc1tsaW5rX3JhdGVfaW5k ZXhdOwo+PiA+PiA+ICsJCQlwbGwgPSBpbnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChpbnRlbF9kcCwg bGlua19yYXRlKTsKPj4gPj4gPiArCQkJaWYgKHBsbCA9PSBOVUxMKSB7Cj4+ID4+ID4gKwkJCQlE Uk1fRVJST1IoIkNvdWxkIG5vdCBmaW5kIERQTEwgZm9yIGxpbmsgdHJhaW5pbmcuXG4iKTsKPj4g Pj4gPiArCQkJCXJldHVybiBmYWxzZTsKPj4gPj4gPiArCQkJfQo+PiA+PiA+ICsJCQl0bXBfcGxs X2NvbmZpZyA9IHBsbC0+Y29uZmlnOwo+PiA+PiA+ICsJCQlwbGwtPmZ1bmNzLmVuYWJsZShkZXZf cHJpdiwgcGxsKTsKPj4gPj4gPiArCj4+ID4+ID4gKwkJCWludGVsX2RwX3NldF9saW5rX3BhcmFt cyhpbnRlbF9kcCwgbGlua19yYXRlLAo+PiA+PiA+ICsJCQkJCQkgbGFuZV9jb3VudCwgbGlua19t c3QpOwo+PiA+PiA+ICsKPj4gPj4gPiArCQkJaW50ZWxfZGRpX2Nsa19zZWxlY3QoZW5jb2Rlciwg cGxsKTsKPj4gPj4gPiArCQkJaW50ZWxfcHJlcGFyZV9kcF9kZGlfYnVmZmVycyhlbmNvZGVyKTsK Pj4gPj4gPiArCQkJaW50ZWxfZGRpX2luaXRfZHBfYnVmX3JlZyhlbmNvZGVyKTsKPj4gPj4gPiAr CQkJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1TX09OKTsKPj4gPj4g PiArCQkJcmV0ID0gaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCk7Cj4+ID4+ID4g KwkJCWlmIChyZXQpCj4+ID4+ID4gKwkJCQlicmVhazsKPj4gPj4gPiArCj4+ID4+ID4gKwkJCS8q IERpc2FibGUgcG9ydCBmb2xsb3dlZCBieSBQTEwgZm9yIG5leHQKPj4gPj4gPiArCQkJICpyZXRy eS9jbGVhbiB1cAo+PiA+PiA+ICsJCQkgKi8KPj4gPj4gPiArCQkJaW50ZWxfZGRpX3Bvc3RfZGlz YWJsZShlbmNvZGVyLCBOVUxMLCBOVUxMKTsKPj4gPj4gPiArCQkJcGxsLT5mdW5jcy5kaXNhYmxl KGRldl9wcml2LCBwbGwpOwo+PiA+PiA+ICsJCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmln Owo+PiA+PiA+ICsJCX0KPj4gPj4gPiArCQlpZiAocmV0KSB7Cj4+ID4+ID4gKwkJCURSTV9ERUJV R19LTVMoIkxpbmsgVHJhaW5pbmcgc3VjY2Vzc2Z1bCBhdCBsaW5rIHJhdGU6ICVkIGxhbmU6ICVk XG4iLAo+PiA+PiA+ICsJCQkJICAgICAgbGlua19yYXRlLCBsYW5lX2NvdW50KTsKPj4gPj4gPiAr CQkJYnJlYWs7Cj4+ID4+ID4gKwkJfQo+PiA+PiA+ICsJfQo+PiA+PiA+ICsKPj4gPj4gPiArCWlu dGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4+ID4+ID4gKwo+PiA+PiA+ICsJaWYg KCFsYW5lX2NvdW50KQo+PiA+PiA+ICsJCURSTV9FUlJPUigiTGluayBUcmFpbmluZyBGYWlsZWRc biIpOwo+PiA+PiA+ICsKPj4gPj4gPiArCXJldHVybiByZXQ7Cj4+ID4+ID4gK30KPj4gPj4gPiAr Cj4+ID4+ID4gIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51 bSBwb3J0IHBvcnQpCj4+ID4+ID4gIHsKPj4gPj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPj4gPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK Pj4gPj4gPiBpbmRleCA2OWNlZTliLi5kODFjNjdjYiAxMDA2NDQKPj4gPj4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+PiA+PiA+IEBAIC0xNTA2LDYgKzE1MDYsMjEgQEAgaW50ZWxfZHBf bWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+PiA+PiA+ICAJcmV0dXJu IHJhdGVzW2xlbiAtIDFdOwo+PiA+PiA+ICB9Cj4+ID4+ID4gIAo+PiA+PiA+ICtpbnQgaW50ZWxf ZHBfbGlua19yYXRlX2luZGV4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCAqY29tbW9u X3JhdGVzLAo+PiA+PiA+ICsJCQkgICAgIGludCBsaW5rX3JhdGUpCj4+ID4+ID4gK3sKPj4gPj4g PiArCWludCBjb21tb25fbGVuOwo+PiA+PiA+ICsJaW50IGluZGV4Owo+PiA+PiA+ICsKPj4gPj4g PiArCWNvbW1vbl9sZW4gPSBpbnRlbF9kcF9jb21tb25fcmF0ZXMoaW50ZWxfZHAsIGNvbW1vbl9y YXRlcyk7Cj4+ID4+ID4gKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBjb21tb25fbGVuOyBpbmRl eCsrKSB7Cj4+ID4+ID4gKwkJaWYgKGxpbmtfcmF0ZSA9PSBjb21tb25fcmF0ZXNbY29tbW9uX2xl biAtIGluZGV4IC0gMV0pCj4+ID4+ID4gKwkJCXJldHVybiBjb21tb25fbGVuIC0gaW5kZXggLSAx Owo+PiA+PiA+ICsJfQo+PiA+PiA+ICsKPj4gPj4gPiArCXJldHVybiAtMTsKPj4gPj4gPiArfQo+ PiA+PiA+ICsKPj4gPj4gPiAgaW50IGludGVsX2RwX3JhdGVfc2VsZWN0KHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsIGludCByYXRlKQo+PiA+PiA+ICB7Cj4+ID4+ID4gIAlyZXR1cm4gcmF0ZV90 b19pbmRleChyYXRlLCBpbnRlbF9kcC0+c2lua19yYXRlcyk7Cj4+ID4+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+PiA+PiA+IGluZGV4IGM0Mzhi MDIuLjZlYjVlYjYgMTAwNjQ0Cj4+ID4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHBfbGlua190cmFpbmluZy5jCj4+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4+ID4+ID4gQEAgLTMxMyw5ICszMTMsMTYgQEAgdm9p ZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4g Pj4gPiAgCQkJCURQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSk7Cj4+ID4+ID4gIH0KPj4gPj4g PiAgCj4+ID4+ID4gLXZvaWQKPj4gPj4gPiArYm9vbAo+PiA+PiA+ICBpbnRlbF9kcF9zdGFydF9s aW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+ID4+ID4gIHsKPj4gPj4gPiAt CWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApOwo+PiA+PiA+ IC0JaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihpbnRlbF9kcCk7 Cj4+ID4+ID4gKwlib29sIHJldDsKPj4gPj4gPiArCj4+ID4+ID4gKwlpZiAoaW50ZWxfZHBfbGlu a190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCkpIHsKPj4gPj4gPiArCQlyZXQgPSBp bnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKGludGVsX2RwKTsKPj4g Pj4gPiArCQlpZiAocmV0KQo+PiA+PiA+ICsJCQlyZXR1cm4gdHJ1ZTsKPj4gPj4gPiArCX0KPj4g Pj4gPiArCj4+ID4+ID4gKwlyZXR1cm4gZmFsc2U7Cj4+ID4+ID4gIH0KPj4gPj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+PiA+PiA+IGluZGV4IDhmZDE2YWQuLjA4Y2I1NzEgMTAwNjQ0Cj4+ ID4+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gPj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiA+PiA+IEBAIC0xMTY0LDYgKzEx NjQsOCBAQCB2b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4+ID4+ID4gIAkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Owo+PiA+PiA+ICB2b2lkIGludGVsX2RkaV9zZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMsIGJvb2wgc3RhdGUpOwo+PiA+PiA+ICB1aW50MzJfdCBkZGlfc2lnbmFsX2xl dmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPj4gPj4gPiArYm9vbCBpbnRlbF9kZGlf bGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbWF4X2xpbmtfcmF0ZSwK Pj4gPj4gPiArCQkJICB1aW50OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxpbmtfbXN0KTsKPj4g Pj4gPiAgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+PiA+PiA+ICAJCQkJCQkgIGludCBjbG9jayk7Cj4+ ID4+ID4gIHVuc2lnbmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPj4gPj4gPiBAQCAtMTM4NSw3ICsxMzg3LDcgQEAgYm9vbCBpbnRlbF9kcF9pbml0 X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4g Pj4gPiAgdm9pZCBpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKPj4gPj4gPiAgCQkJICAgICAgaW50IGxpbmtfcmF0ZSwgdWludDhfdCBsYW5lX2NvdW50 LAo+PiA+PiA+ICAJCQkgICAgICBib29sIGxpbmtfbXN0KTsKPj4gPj4gPiAtdm9pZCBpbnRlbF9k cF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+PiA+PiA+ICti b29sIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7 Cj4+ID4+ID4gIHZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApOwo+PiA+PiA+ICB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLCBpbnQgbW9kZSk7Cj4+ID4+ID4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9y ZXNldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+PiA+PiA+IEBAIC0xNDA3LDYgKzE0 MDksOCBAQCB2b2lkIGludGVsX2RwX2FkZF9wcm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjbwo+PiA+PiA+ICB2b2lkIGludGVsX2RwX21z dF9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+PiA+PiA+ICB2b2lkIGludGVsX2Rw X21zdF9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4+ID4+ID4gIGludCBpbnRlbF9k cF9tYXhfbGlua19yYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+PiA+PiA+ICtpbnQg aW50ZWxfZHBfbGlua19yYXRlX2luZGV4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCAq Y29tbW9uX3JhdGVzLAo+PiA+PiA+ICsJCQkgICAgIGludCBsaW5rX3JhdGUpOwo+PiA+PiA+ICBp bnQgaW50ZWxfZHBfcmF0ZV9zZWxlY3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHJh dGUpOwo+PiA+PiA+ICB2b2lkIGludGVsX2RwX2hvdF9wbHVnKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyKTsKPj4gPj4gPiAgdm9pZCBpbnRlbF9wb3dlcl9zZXF1ZW5jZXJfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPj4gPj4gCj4+ID4+IC0tIAo+ PiA+PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKPj4g Cj4+IC0tIAo+PiBKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50 ZXIKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==