From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v7 1/6] drm/i915: Fallback to lower link rate and lane count during link training Date: Mon, 3 Oct 2016 16:29:06 -0700 Message-ID: <20161003232906.GA5059@intel.com> References: <87twd2kcfd.fsf@intel.com> <20160927152502.GA18889@intel.com> <8737klp8zu.fsf@intel.com> <20160929064150.GA13161@intel.com> <8737kjlzfr.fsf@intel.com> <20160929114419.GG28107@nuc-i3427.alporthouse.com> <20160929151054.GP4329@intel.com> <87eg42671g.fsf@intel.com> <20160929160501.GA14141@intel.com> <20160929231706.GE19006@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 14DF56E5B2 for ; Mon, 3 Oct 2016 23:28:16 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20160929231706.GE19006@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBTZXAgMjksIDIwMTYgYXQgMDQ6MTc6MDZQTSAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBPbiBUaHUsIFNlcCAyOSwgMjAxNiBhdCAwOTowNTowMUFNIC0wNzAwLCBNYW5hc2kg TmF2YXJlIHdyb3RlOgo+ID4gT24gVGh1LCBTZXAgMjksIDIwMTYgYXQgMDY6NDg6NDNQTSArMDMw MCwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4gPiA+IE9uIFRodSwgMjkgU2VwIDIwMTYsIFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+IHdyb3RlOgo+ID4gPiA+IE9u IFRodSwgU2VwIDI5LCAyMDE2IGF0IDEyOjQ0OjE5UE0gKzAxMDAsIENocmlzIFdpbHNvbiB3cm90 ZToKPiA+ID4gPj4gT24gVGh1LCBTZXAgMjksIDIwMTYgYXQgMDI6MjY6MTZQTSArMDMwMCwgSmFu aSBOaWt1bGEgd3JvdGU6Cj4gPiA+ID4+ID4gT24gVGh1LCAyOSBTZXAgMjAxNiwgTWFuYXNpIE5h dmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4gd3JvdGU6Cj4gPiA+ID4+ID4gPiBPbiBU dWUsIFNlcCAyNywgMjAxNiBhdCAwODowNzowMVBNICswMzAwLCBKYW5pIE5pa3VsYSB3cm90ZToK PiA+ID4gPj4gPiA+PiBPbiBUdWUsIDI3IFNlcCAyMDE2LCBNYW5hc2kgTmF2YXJlIDxtYW5hc2ku ZC5uYXZhcmVAaW50ZWwuY29tPiB3cm90ZToKPiA+ID4gPj4gPiA+PiA+IE9uIE1vbiwgU2VwIDI2 LCAyMDE2IGF0IDA0OjM5OjM0UE0gKzAzMDAsIEphbmkgTmlrdWxhIHdyb3RlOgo+ID4gPiA+PiA+ ID4+ID4+IE9uIEZyaSwgMTYgU2VwIDIwMTYsIE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFy ZUBpbnRlbC5jb20+IHdyb3RlOgo+ID4gPiA+PiA+ID4+ID4+ID4gQWNjb3JkaW5nIHRvIHRoZSBE aXNwbGF5UG9ydCBTcGVjLCBpbiBjYXNlIG9mIENsb2NrIFJlY292ZXJ5IGZhaWx1cmUKPiA+ID4g Pj4gPiA+PiA+PiA+IHRoZSBsaW5rIHRyYWluaW5nIHNlcXVlbmNlIHNob3VsZCBmYWxsIGJhY2sg dG8gdGhlIGxvd2VyIGxpbmsgcmF0ZQo+ID4gPiA+PiA+ID4+ID4+ID4gZm9sbG93ZWQgYnkgbG93 ZXIgbGFuZSBjb3VudCB1bnRpbCBDUiBzdWNjZWVkcy4KPiA+ID4gPj4gPiA+PiA+PiA+IE9uIENS IHN1Y2Nlc3MsIHRoZSBzZXF1ZW5jZSBwcm9jZWVkcyB3aXRoIENoYW5uZWwgRVEuCj4gPiA+ID4+ ID4gPj4gPj4gPiBJbiBjYXNlIG9mIENoYW5uZWwgRVEgZmFpbHVyZXMsIGl0IHNob3VsZCBmYWxs YmFjayB0bwo+ID4gPiA+PiA+ID4+ID4+ID4gbG93ZXIgbGluayByYXRlIGFuZCBsYW5lIGNvdW50 IGFuZCBzdGFydCB0aGUgQ1IgcGhhc2UgYWdhaW4uCj4gPiA+ID4+ID4gPj4gPj4gCj4gPiA+ID4+ ID4gPj4gPj4gVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIGxpbmsgdHJhaW5pbmcgc3RhcnQgYXQgdGhl IG1heCBsYW5lIGNvdW50IGFuZCBtYXgKPiA+ID4gPj4gPiA+PiA+PiBsaW5rIHJhdGUuIFRoaXMg aXMgbm90IGlkZWFsLCBhcyBpdCB3YXN0ZXMgdGhlIGxpbmsuIEFuZCBpdCBpcyBub3QgYQo+ID4g PiA+PiA+ID4+ID4+IHNwZWMgcmVxdWlyZW1lbnQuICJUaGUgTGluayBQb2xpY3kgTWFrZXIgb2Yg dGhlIHVwc3RyZWFtIGRldmljZSBtYXkKPiA+ID4gPj4gPiA+PiA+PiBjaG9vc2UgYW55IGxpbmsg Y291bnQgYW5kIGxpbmsgcmF0ZSBhcyBsb25nIGFzIHRoZXkgZG8gbm90IGV4Y2VlZCB0aGUKPiA+ ID4gPj4gPiA+PiA+PiBjYXBhYmlsaXRpZXMgb2YgdGhlIERQIHJlY2VpdmVyLiIKPiA+ID4gPj4g PiA+PiA+PiAKPiA+ID4gPj4gPiA+PiA+PiBPdXIgY3VycmVudCBjb2RlIHN0YXJ0cyBhdCB0aGUg bWluaW11bSByZXF1aXJlZCBiYW5kd2lkdGggZm9yIHRoZSBtb2RlLAo+ID4gPiA+PiA+ID4+ID4+ IHRoZXJlZm9yZSB3ZSBjYW4ndCBmYWxsIGJhY2sgdG8gbG93ZXIgbGluayByYXRlIGFuZCBsYW5l IGNvdW50IHdpdGhvdXQKPiA+ID4gPj4gPiA+PiA+PiByZWR1Y2luZyB0aGUgbW9kZS4KPiA+ID4g Pj4gPiA+PiA+PiAKPiA+ID4gPj4gPiA+PiA+PiBBRkFJQ1QgdGhpcyBwYXRjaCBoZXJlIG1ha2Vz IGl0IHBvc3NpYmxlIGZvciB0aGUgbGluayBiYW5kd2lkdGggdG8gZHJvcAo+ID4gPiA+PiA+ID4+ ID4+IGJlbG93IHdoYXQgaXMgcmVxdWlyZWQgZm9yIHRoZSBtb2RlLiBUaGlzIGlzIHVuYWNjZXB0 YWJsZS4KPiA+ID4gPj4gPiA+PiA+PiAKPiA+ID4gPj4gPiA+PiA+PiBCUiwKPiA+ID4gPj4gPiA+ PiA+PiBKYW5pLgo+ID4gPiA+PiA+ID4+ID4+IAo+ID4gPiA+PiA+ID4+ID4+Cj4gPiA+ID4+ID4g Pj4gPgo+ID4gPiA+PiA+ID4+ID4gVGhhbmtzIEphbmkgZm9yIHlvdXIgcmV2aWV3IGNvbW1lbnRz Lgo+ID4gPiA+PiA+ID4+ID4gWWVzIGluIHRoaXMgY2hhbmdlIHdlIHN0YXJ0IGF0IHRoZSBtYXgg bGluayByYXRlIGFuZCBsYW5lIGNvdW50LiBUaGlzCj4gPiA+ID4+ID4gPj4gPiBjaGFuZ2Ugd2Fz IG1hZGUgYWNjb3JkaW5nIHRvIHRoZSBkZXNpZ24gZG9jdW1lbnQgZGlzY3Vzc2lvbnMgd2UgaGFk Cj4gPiA+ID4+ID4gPj4gPiBiZWZvcmUgc3RyYXRpbmcgdGhpcyBEUCBSZWRlc2lnbiBwcm9qZWN0 LiBUaGUgbWFpbiByZWFzb24gZm9yIHN0YXJ0aW5nCj4gPiA+ID4+ID4gPj4gPiBhdCB0aGUgbWF4 bGluayByYXRlIGFuZCBtYXggbGFuZSBjb3VudCB3YXMgZm9yIGVuc3VyaW5nIHByb3Blcgo+ID4g PiA+PiA+ID4+ID4gYmVoYXZpb3Igb2YgRFAgTVNULiBJbiBjYXNlIG9mIERQIE1TVCwgd2Ugd2Fu dCB0byB0cmFpbiB0aGUgbGluayBhdAo+ID4gPiA+PiA+ID4+ID4gdGhlIG1heGltdW0gc3VwcG9y dGVkIGxpbmsgcmF0ZS9sYW5lIGNvdW50IGJhc2VkIG9uIGFuIGVhcmx5LyB1cGZyb250Cj4gPiA+ ID4+ID4gPj4gPiBsaW5rIHRyYWluaW5nIHJlc3VsdCBzbyB0aGF0IHdlIGRvbnQgZmFpbCB3aGVu IHdlIHRyeSB0byBjb25uZWN0IGEKPiA+ID4gPj4gPiA+PiA+IGhpZ2hlciByZXNvbHV0aW9uIG1v bml0b3IgYXMgYSBzZWNvbmQgbW9uaXRvci4gVGhpcyBhIHRyYWRlIG9mZgo+ID4gPiA+PiA+ID4+ ID4gYmV0d2VlbiB3c3RpbmcgdGhlIGxpbmsgb3IgaGlnaGVyIHBvd2VyIHZzLiBuZWVkaW5nIHRv IHJldHJhaW4gZm9yCj4gPiA+ID4+ID4gPj4gPiBldmVyeSBtb25pdG9yIHRoYXQgcmVxdWVzdHMg YSBoaWdoZXIgQlcgaW4gY2FzZSBvZiBEUCBNU1QuCj4gPiA+ID4+ID4gPj4gCj4gPiA+ID4+ID4g Pj4gV2UgYWxyZWFkeSB0cmFpbiBhdCBtYXggYmFuZHdpZHRoIGZvciBEUCBNU1QsIHdoaWNoIHNl ZW1zIHRvIGJlIHRoZQo+ID4gPiA+PiA+ID4+IHNlbnNpYmxlIHRoaW5nIHRvIGRvLgo+ID4gPiA+ PiA+ID4+IAo+ID4gPiA+PiA+ID4+ID4gQWN0dWFsbHkgdGhpcyBpcyBhbHNvIHRoZSByZWFzb24g Zm9yIGVuYWJsaW5nIHVwZnJvbnQgbGluayB0cmFpbmluZyBpbgo+ID4gPiA+PiA+ID4+ID4gdGhl IGZvbGxvd2luZyBwYXRjaCB3aGVyZSB3ZSB0cmFpbiB0aGUgbGluayBtdWNoIGFoZWFkIGluIHRo ZSBtb2Rlc2V0Cj4gPiA+ID4+ID4gPj4gPiBzZXF1ZW5jZSB0byB1bmRlcnN0YW5kIHRoZSBsaW5r IHJhdGUgYW5kIGxhbmUgY291bnQgdmFsdWVzIGF0IHdoaWNoCj4gPiA+ID4+ID4gPj4gPiB0aGUg bGluayBjYW4gYmUgc3VjY2Vzc2Z1bGx5IHRyYWluZWQgYW5kIHRoZW4gdGhlIGxpbmsgdHJhaW5p bmcKPiA+ID4gPj4gPiA+PiA+IHRocm91Z2ggbW9kZXNldCB3aWxsIGFsd2F5cyBzdGFydCBhdCB0 aGUgdXBmcm9udCB2YWx1ZXMgKG1heGltdW0KPiA+ID4gPj4gPiA+PiA+IHN1cHBvcnRlZCB2YWx1 ZXMgb2YgbGFuZSBjb3VudCBhbmQgbGluayByYXRlIGJhc2VkIG9uIHVwZnJvbnQgbGluawo+ID4g PiA+PiA+ID4+ID4gdHJhaW5pbmcpLgo+ID4gPiA+PiA+ID4+IAo+ID4gPiA+PiA+ID4+IEkgZG9u J3Qgc2VlIGEgbmVlZCB0byBkbyB0aGlzIGZvciBEUCBTU1QuCj4gPiA+ID4+ID4gPj4gCj4gPiA+ ID4+ID4gPj4gPiBBcyBwZXIgdGhlIENUUywgYWxsIHRoZSB0ZXN0IDQuMy4xLjQgcmVxdWlyZXMg dGhhdCB5b3UgZmFsbCBiYWNrIHRvCj4gPiA+ID4+ID4gPj4gPiB0aGUgbG93ZXIgbGluayByYXRl IGFmdGVyIHRyeWluZyB0byB0cmFpbiBhdCB0aGUgbWF4aW11bSBsaW5rIHJhdGUKPiA+ID4gPj4g PiA+PiA+IGFkdmVydGlzZWQgdGhyb3VnaCB0aGUgRFBDRCByZWdpc3RlcnMuCj4gPiA+ID4+ID4g Pj4gCj4gPiA+ID4+ID4gPj4gVGhhdCB0ZXN0IGRvZXMgbm90IHJlcXVpcmUgdGhlIHNvdXJjZSBE VVQgdG8gZGVmYXVsdCB0byBtYXhpbXVtIGxhbmUKPiA+ID4gPj4gPiA+PiBjb3VudCBvciBsaW5r IHJhdGUgb2YgdGhlIHNpbmsuIFRoZSBzb3VyY2UgbWF5IGZyZWVseSBjaG9vc2UgdGhlIGxhbmUK PiA+ID4gPj4gPiA+PiBjb3VudCBhbmQgbGluayByYXRlIGFzIGxvbmcgYXMgdGhleSBkb24ndCBl eGNlZWQgc2luayBjYXBhYmlsaXRpZXMuCj4gPiA+ID4+ID4gPj4gCj4gPiA+ID4+ID4gPj4gRm9y IHRoZSBwdXJwb3NlcyBvZiB0aGUgdGVzdCwgdGhlIHRlc3Qgc2V0dXAgY2FuIHJlcXVlc3Qgc3Bl Y2lmaWMKPiA+ID4gPj4gPiA+PiBwYXJhbWV0ZXJzIHRvIGJlIHVzZWQsIGJ1dCB0aGF0IGRvZXMg bm90IG1lYW4gdXNpbmcgbWF4aW11bSBieQo+ID4gPiA+PiA+ID4+ICpkZWZhdWx0Ki4KPiA+ID4g Pj4gPiA+PiAKPiA+ID4gPj4gPiA+PiBXZSBjdXJyZW50bHkgbGFjayB0aGUgZmVhdHVyZSB0byBy ZWR1Y2UgbGFuZSBjb3VudCBhbmQgbGluayByYXRlLiBUaGUKPiA+ID4gPj4gPiA+PiBrZXkgdG8g dW5kZXJzdGFuZCBoZXJlIGlzIHRoYXQgc3RhcnRpbmcgYXQgbWF4IGFuZCByZWR1Y2luZyBkb3du IHRvIHRoZQo+ID4gPiA+PiA+ID4+IHN1ZmZpY2llbnQgcGFyYW1ldGVycyBmb3IgdGhlIG1vZGUg KHdoaWNoIGlzIHdoZXJlIHdlIHN0YXJ0IG5vdykgb2ZmZXJzCj4gPiA+ID4+ID4gPj4gbm8gcmVh bCBiZW5lZml0IGZvciBhbnkgdXNlIGNhc2UuIFdoYXQgd2UncmUgbGFja2luZyBpcyBhIGZlYXR1 cmUgdG8KPiA+ID4gPj4gPiA+PiByZWR1Y2UgdGhlIGxpbmsgcGFyYW1ldGVycyAqYmVsb3cqIHdo YXQncyByZXF1aXJlZCBieSB0aGUgbW9kZSB0aGUKPiA+ID4gPj4gPiA+PiB1c2Vyc3BhY2Ugd2Fu dHMuIFRoaXMgY2FuIG9ubHkgYmUgYWNoaWV2ZWQgdGhyb3VnaCBjb29wZXJhdGlvbiB3aXRoCj4g PiA+ID4+ID4gPj4gdXNlcnNwYWNlLgo+ID4gPiA+PiA+ID4+IAo+ID4gPiA+PiA+ID4KPiA+ID4g Pj4gPiA+IFdlIGNhbiB0cmFpbiBhdCB0aGUgb3B0aW1hbCBsaW5rIHJhdGUgcmVxdWlyZWQgZm9y IHRoZSByZXF1ZXN0ZWQgbW9kZSBhcwo+ID4gPiA+PiA+ID4gZG9uZSBpbiB0aGUgZXhpc3Rpbmcg aW1wbGVtZW50YXRpb24gYW5kIHJldHJhaW4gd2hlbmV2ZXIgdGhlIGxpbmsgdHJhaW5pbmcKPiA+ ID4gPj4gPiA+IHRlc3QgcmVxdWVzdCBpcyBzZW50LiAKPiA+ID4gPj4gPiA+IEZvciB0aGUgdGVz dCA0LjMuMS40IGluIENUUywgaXQgZG9lcyBmb3JjZSBhIGZhaWx1cmUgaW4gQ1IgYW5kIGV4cGVj dHMgdGhlCj4gPiA+ID4+ID4gPiBkcml2ZXIgdG8gZmFsbCBiYWNrIHRvIGV2ZW4gbG93ZXIgbGlu ayByYXRlLiBXZSBkbyBub3QgaW1wbGVtZW50IHRoaXMgaW4gdGhlCj4gPiA+ID4+ID4gPiBjdXJy ZW50IGRyaXZlciBhbmQgc28gdGhpcyB0ZXN0IGZhaWxzLiBDb3VsZCB5b3UgZWxhYm9yYXRlIG9u IGhvdyB0aGlzIGNhbgo+ID4gPiA+PiA+ID4gYmUgYWNoaWV2ZWQgd2l0aCB0aGUgdGhlIGNvb3Bl cmF0aW9uIHdpdGggdXNlcnNwYWNlPwo+ID4gPiA+PiA+ID4gU2hvdWxkIHdlIHNlbmQgYSB1ZXZl bnQgdG8gdGhlIHVzZXJzcGFjZSBhc2tpbmcgdG8gcmV0cnkgYXQgYSBsb3dlciByZXNvbHV0aW9u Cj4gPiA+ID4+ID4gPiBhZnRlciByZXRyYWluaW5nIGF0IHRoZSBsb3dlciBsaW5rIHJhdGU/Cj4g PiA+ID4+ID4gPiBUaGlzIGlzIHBlcnR0eSBtdWNoIHRoZSBwbGFjZSB3aGVyZSBtYWpvcml0eSBv ZiB0aGUgY29tcGxpYW5jZSB0ZXN0cyBhcmUgZmFpbGluZy4KPiA+ID4gPj4gPiA+IEhvdyBjYW4g d2UgcGFzcyBjb21wbGlhbmNlIHdpdGggcmVnYXJkcyB0byB0aGlzIGZlYXR1cmU/Cj4gPiA+ID4+ ID4gCj4gPiA+ID4+ID4gU28gaGVyZSdzIGFuIGlkZWEgVmlsbGUgYW5kIEkgY2FtZSB1cCB3aXRo LiBJdCdzIG5vdCBjb21wbGV0ZWx5IHRob3VnaHQKPiA+ID4gPj4gPiBvdXQgeWV0LCBwcm9iYWJs eSBoYXMgc29tZSB3cmlua2xlcyBzdGlsbCwgYnV0IHRoZW4gdGhlcmUgYXJlIHdyaW5rbGVzCj4g PiA+ID4+ID4gd2l0aCB0aGUgdXBmcm9udCBsaW5rIHRyYWluaW5nIHRvbyAoSSdsbCBnZXQgYmFj ayB0byB0aG9zZSBzZXBhcmF0ZWx5KS4KPiA+ID4gPj4gPiAKPiA+ID4gPj4gPiBJZiBsaW5rIHRy YWluaW5nIGZhaWxzIGR1cmluZyBtb2Rlc2V0IChlaXRoZXIgZm9yIHJlYWwgb3IgYmVjYXVzZSBp dCdzIGEKPiA+ID4gPj4gPiB0ZXN0IHNpbmsgdGhhdCB3YW50cyB0byB0ZXN0IGZhaWx1cmVzKSwg d2UgMSkgc3RvcmUgdGhlIGxpbmsgcGFyYW1ldGVycwo+ID4gPiA+PiA+IGFzIGZhaWxpbmcsIDIp IHNlbmQgYSB1ZXZlbnQgdG8gdXNlcnNwYWNlLCBob3BlZnVsbHkgZ2V0dGluZyB0aGUKPiA+ID4g Pj4gPiB1c2Vyc3BhY2UgdG8gZG8gYW5vdGhlciBnZXQgbW9kZXMgYW5kIHRyeSBhZ2FpbiwgMykg cHJvcGFnZSBlcnJvcnMgZnJvbQo+ID4gPiA+PiA+IG1vZGVzZXQuCj4gPiA+ID4+IAo+ID4gPiA+ PiB1c2Vyc3BhY2UgYWxyZWFkeSB0cmllcyB0byBkbyBhIHJlcHJvYmUgYWZ0ZXIgYSBzZXRjcnRj IGZhaWxzLCB0byB0cnkKPiA+ID4gPj4gYW5kIGdyYWNlZnVsbHkgaGFuZGxlIHRoZSByYWNlIGJl dHdlZW4gaG90cGx1ZyBiZWluZyBpbiBpdHMgZXZlbnQgcXVldWUKPiA+ID4gPj4gYW5kIHBlcmZv cm1pbmcgc2V0Y3J0YywgaS5lLiBJIHRoaW5rIHRoZSBlcnJvciBpcyBlbm91Z2guCj4gPiA+ID4K PiA+ID4gPiBJIHByZXN1bWUgd2Ugd2FudCB0aGUgbW9kZXNldCB0byBiZSBhc3luYywgc28gYnkg dGhlIHRpbWUgd2Ugbm90aWNlIHRoZQo+ID4gPiA+IHByb2JsZW0gd2UncmUgbm8gbG9uZ2VyIGlu IHRoZSBpb2N0bC4KPiA+ID4gCj4gPiA+IElPVywgd2UnbGwganVzdCBuZWVkIHRvIHNlbmQgdGhl IGhvdHBsdWcgdWV2ZW50IGFueXdheS4KPiA+ID4gCj4gPiA+IEJSLAo+ID4gPiBKYW5pLgo+ID4g PgoKV2hlbiB0aGUgdGVzdCBzaW5rIGlzIHRlc3RpbmcgdGhlIGZhaWx1cmUsIGxpbmsgdHJhaW5p bmcgZmFpbHMgaW4gZGRpX3ByZV9lbmFibGUoKS4KVGhpcyBpcyBzdGlsbCB3aGlsZSB3ZSBhcmUg aG9sZGluZyB0aGUgbW9kZXNldCBsb2NrcyBoZW5jZSB3ZSBjYW5ub3Qgc2VuZCBhIGhvdHBsdWcK dWV2ZW50IGhlcmUuIElmIGkgdHJ5IHRvIHNlbmQgdGhlIGhvdHBsdWcgdWV2ZW50IGhlcmUgaXQg anVzdCBmcmVlemVzIGR1ZSB0byBkZWFkbG9jay4KSSBhbSByZWFkaW5nIHVwIG9uIGhvdyB0byBz ZXQgdXAgYSB3b3JrIHF1ZXVlIGFuZCBjYWxsIHRoZSB1ZXZlbnQgaW4gYSBzZXBhcmF0ZSB0aHJl YWQuCklzIHRoaXMgYSByaWdodCBhcHByb2FjaCBvciB5b3UgaGF2ZSBhbnkgb3RoZXIgc3VnZ2Vz dGlvbiBmb3Igc2VuZGluZyBhIGhvdHBsdWcgdWV2ZW50IG9uIGxpbmsKdHJhaW4gZmFpbHVyZSBk dXJpbmcgYXRvbWljIGNvbW1pdCBwaGFzZS4KCk1hbmFzaQo+ID4gCj4gPiBJIGFtIGdvaW5nIHRv IHRyeSB0byBpbXBsZW1lbnQgYSB0aGUgY29kZSB3aGVyZSBpZiB3ZWZhaWwgbGluayB0cmFpbmlu ZyBhdCBhIAo+ID4gcGFydGljdWxhciBsaW5rIHJhdGUgdGhlbiBpIHNlbmQgdGhlIHVldmVudCB0 byB0aGUgdXNlcnNwYWNlIHNhdmluZyBvZmYgdGhlCj4gPiB2YWx1ZXMgYXQgd2hpY2ggdGhlbGlu ayB0cmFpbmluZyBmYWlsZWQgc28gdGhhdCB0aGVzZSB2YWx1ZXMgY2FuIGJlIHVzZWQgaW4gdGhl IG5leHQKPiA+IGF0dGVtcHQgb2YgdGhlIG1vZGVzZXQgdG8gcHJ1bmUgdGhlIG1vZGVzIGFjY29y ZGluZ2x5IGFuZCBsaW5rIHRyYWluaW5nIHNob3VsZCBiZQo+ID4gdHJpZWQgaW4gdGhhdCBhdHRl bXB0IHdpdGggdGhlIGxvd2VyIGxpbmsgcmF0ZS4gVGhlIGhvcGUgaXMgdGhhdCB0aGlzIHdpbGwg bWFrZSB0aGUKPiA+IGNvbXBsaWFuY2UgdGVzdCA0LjMuMS40IGhhcHB5Lgo+ID4gCj4gPiBSZWdh cmRzCj4gPiBNYW5hc2kKPiAKPiBUaGlzIGlzIHdoYXQgSSBhbSBkb2luZyB3aGVuIHdlIGdldCBh IHRlc3QgcmVxdWVzdCB0byB0cmFpbiBhdCBhIHBhcnRpY3VsYXIgcmF0ZToKPiBpZiAoKGludGVs X2RwLT5jb21wbGlhbmNlX3Rlc3RfdHlwZSA9PSBEUF9URVNUX0xJTktfVFJBSU5JTkcpKSB7Cj4g ICAgICAgICAgICAgICAgICAgICAgICAgaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKGludGVsX2Rw LAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcm1f ZHBfYndfY29kZV90b19saW5rX3JhdGUoaW50ZWxfZHAtPgo+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29tcGxpYW5jZV90ZXN0X2xpbmtfcmF0ZSksCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludGVsX2RwLT5jb21wbGlhbmNlX3Rlc3RfbGFuZV9jb3Vu dCwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFs c2UpOwo+ICAgICAgICAgICAgICAgICAJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudChpbnRl bF9lbmNvZGVyLT5iYXNlLmRldik7IAo+IAl9Cj4gCj4gSSBzZWUgaW4gdGhlIGRtZXNnIHRoYXQg aXQgc2VuZHMgYSBob3RwbHVnIHVldmVudCB0byB0aGUgdXNlcnNwYWNlIHRoYXQgdHJpZ2dlcnMg YSBkcm1fc2V0dXBfY3J0Y3MoKQo+IEJ1dCBpdCBmaW5kcyB0aGF0IHRoZSBjb25uZWN0b3IgaXMg YWxyZWFkeSBlbmFibGVkIGFuZCBoYXMgYSBDUlRDIHNvIGl0IGRvZXMgbm90IGdvIGFoZWFkIHdp dGggCj4gY29tcHV0ZV9jb25maWcuIERvIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgY3J0YyBhbmQg dXBkYXRlIHRoZSBhdG9taWMgc3RhdGUgYmVmb3JlIGdlbmVyYXRpbmcKPiB0aGlzIHVldmVudD8g SG93IGNhbiB0aGlzIGJlIGRvbmU/Cj4gCj4gTWFuYXNpCj4gCj4gPiA+IC0tIAo+ID4gPiBKYW5p IE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKPiA+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFp bGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK