From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 15/19] drm/i915: HSW cdclk support Date: Mon, 13 Apr 2015 13:33:40 +0300 Message-ID: <20150413103340.GC11009@intel.com> References: <20150407092925.GA3027@sorvi> <20150407135238.GI6354@phenom.ffwll.local> <1428564264.7745.14.camel@sorvi> <20150409093200.GB12038@phenom.ffwll.local> <1428586886.3155.5.camel@sorvi> <20150409135127.GO12038@phenom.ffwll.local> <1428672459.3120.6.camel@sorvi> <1428918194.3012.2.camel@sorvi> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id BB8C66E0CF for ; Mon, 13 Apr 2015 03:33:45 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1428918194.3012.2.camel@sorvi> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kahola Cc: Takashi Iwai , intel-gfx@lists.freedesktop.org, alsa-devel@alsa-project.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBBcHIgMTMsIDIwMTUgYXQgMTI6NDM6MTRQTSArMDMwMCwgTWlrYSBLYWhvbGEgd3Jv dGU6Cj4gT24gRnJpLCAyMDE1LTA0LTEwIGF0IDE2OjEwICswMjAwLCBUYWthc2hpIEl3YWkgd3Jv dGU6Cj4gPiBBdCBGcmksIDEwIEFwciAyMDE1IDE2OjI3OjM5ICswMzAwLAo+ID4gTWlrYSBLYWhv bGEgd3JvdGU6Cj4gPiA+IAo+ID4gPiBPbiBUaHUsIDIwMTUtMDQtMDkgYXQgMTc6MTcgKzAyMDAs IFRha2FzaGkgSXdhaSB3cm90ZToKPiA+ID4gPiBBdCBUaHUsIDkgQXByIDIwMTUgMTU6NTE6Mjcg KzAyMDAsCj4gPiA+ID4gRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ID4gPiA+IAo+ID4gPiA+ID4g T24gVGh1LCBBcHIgMDksIDIwMTUgYXQgMDQ6NDE6MjZQTSArMDMwMCwgTWlrYSBLYWhvbGEgd3Jv dGU6Cj4gPiA+ID4gPiA+IE9uIFRodSwgMjAxNS0wNC0wOSBhdCAxMTozMiArMDIwMCwgRGFuaWVs IFZldHRlciB3cm90ZToKPiA+ID4gPiA+ID4gPiBPbiBUaHUsIEFwciAwOSwgMjAxNSBhdCAxMDoy NDoyNEFNICswMzAwLCBNaWthIEthaG9sYSB3cm90ZToKPiA+ID4gPiA+ID4gPiA+IEkgZGlkIHNv bWUgdGVzdGluZyBvbiBhdWRpbyBwYXJ0IHdpdGggSERNSS1IRE1JIGFuZCBEUC1IRE1JIGNhYmxl cwo+ID4gPiA+ID4gPiA+ID4gY29ubmVjdGVkIHRvIG15IEhhc3dlbGwgYm94LiBCZWZvcmUgYXBw bHlpbmcgdGhlIHBhdGNoIEkgdGVzdGVkIGFzIGEKPiA+ID4gPiA+ID4gPiA+IHJlZmVyZW5jZSB3 aXRoIHRoZSBsYXRlc3QgLW5pZ2h0bHkgKDA0LTA4LTIwMTUpLCA0LjAtcmM3LiBVbmZvcnR1bmF0 ZWx5LAo+ID4gPiA+ID4gPiA+ID4gSSBmYWlsZWQgdG8gZ2V0IGFueSBhdWRpbyBvdmVyIEhETUkg Y2FibGUuIEZvciBhIHJlZmVyZW5jZSBJIHRlc3RlZCB3aXRoCj4gPiA+ID4gPiA+ID4gPiB0aGUg dmVyeSBzYW1lIHNldHVwIHRoZSB2YW5pbGxsYSBrZXJuZWwgZnJvbSBMaW51cyB0cmVlIDQuMC1y YzcgYW5kIHdpdGgKPiA+ID4gPiA+ID4gPiA+IHRoYXQga2VybmVsIHRoZSBhdWRpbyB3b3JrZWQg b2suIFRoZW4gSSBkaWQgc29tZSBHSVQgYmlzZWN0aW5nIGFuZCBpdAo+ID4gPiA+ID4gPiA+ID4g dHVybmVkIG91dCB0aGF0IHRoZSBmaXJzdCBjb21taXQgdGhhdCBJIGZhaWxlZCB0byBnZXQgYXVk aW8gd29ya2luZyB3YXMKPiA+ID4gPiA+ID4gPiA+IGFhMmZlZTQyODZlNDNiNDc4NDk4MmIxNzY2 OWIwMmNjOTljMWFlNTUuCj4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IEkgcmVydW4gdGhlIGJp c2VjdGluZyBhbmQgdGhpcyB0aW1lIHRoZSByZXN1bHQgd2FzCj4gPiA+ID4gPiA+IAo+ID4gPiA+ ID4gPiBjb21taXQgMGE1OTk4Mzg3MzdhMjUyN2MzNWU0ZDk0Zjc5NGFlZmU1OWRmMTc4MQo+ID4g PiA+ID4gPiBNZXJnZTogMmQ4NDZjNyBhNTlkNzE5Cj4gPiA+ID4gPiA+IEF1dGhvcjogVGFrYXNo aSBJd2FpIDx0aXdhaUBzdXNlLmRlPgo+ID4gPiA+ID4gPiBEYXRlOiAgIFdlZCBBcHIgOCAxMToy OTo1NiAyMDE1ICswMjAwCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiAgICAgTWVyZ2UgYnJhbmNo ICdmb3ItbGludXMnIGludG8gZm9yLW5leHQKPiA+ID4gPiA+ID4gICAgIAo+ID4gPiA+ID4gPiAg ICAgQmFjayBtZXJnZSBIRC1hdWRpbyBxdWlya3MgdG8gZm9yLW5leHQgYnJhbmNoLCBzbyB0aGF0 IHdlIGNhbiBhcHBseQo+ID4gPiA+ID4gPiAgICAgYSBjb3VwbGUgb2YgbW9yZSBxdWlya3MuCj4g PiA+ID4gPiA+ICAgICAKPiA+ID4gPiA+ID4gICAgIFNpZ25lZC1vZmYtYnk6IFRha2FzaGkgSXdh aSA8dGl3YWlAc3VzZS5kZT4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gQWRkaW5nIFRha2FzaGkgYW5k IGludGVsIGF1ZGlvIGZvbGtzLgo+ID4gPiA+IAo+ID4gPiA+IFRoZSBiaXNlY3RpbmcgbG9va3Mg b2RkLiAgVGhlIGNvbW1pdCB5b3UgcG9pbnRlZCBpcyBhIGJhY2stbWVyZ2UgZnJvbQo+ID4gPiA+ IDQuMC1yYyB0byBuZXh0IGJyYW5jaCwgc28gdGhpcyBtZXJnZSBpdHNlbGYgc2hvdWxkbid0IGJy aW5nIHNvIG1hbnkKPiA+ID4gPiBzdHVmZiAtLSBhdCBsZWFzdCBhYm91dCB0aGUgc291bmQgcGFy dC4KPiA+ID4gPiAKPiA+ID4gPiBUaGUgZGlmZiBpbiBzb3VuZC8qIGlzIGZvdW5kIGJlbG93LiAg QXMgeW91IGNhbiBzZWUsIHRoZSBvbmx5IGNoYW5nZQo+ID4gPiA+IHJlbGV2YW50IHdpdGggSERN SSBpcyB0aGUgY2h1bmsgaW4gc291bmQvcGNpL2hkYS9oZGFfaW50ZWwuYyBmb3IKPiA+ID4gPiBI RC1hdWRpbyBjb250cm9sbGVyLCBidXQgaXQncyBzcGVjaWZpYyB0byBTa3lsYWtlLCB0aHVzIHRo aXMgbXVzdCBiZQo+ID4gPiA+IGlycmVsZXZhbnQgd2l0aCB5b3VyIGhhcmR3YXJlLgo+ID4gPiA+ IAo+ID4gPiA+IFBsZWFzZSBkb3VibGUtY2hlY2suCj4gPiA+IAo+ID4gPiBJIGRvdWJsZS1jaGVj a2VkIHRoZSBiaXNlY3RpbmcgYW5kIEkgZW5kZWQgdXAgd2l0aCB0aGUgc2FtZSByZXN1bHQuIFlv dSdyZQo+ID4gPiByaWdodCwgaXQgZG9lcyBzZWVtcyBvZGQgd2h5IGF1ZGlvIG9uIG15IEhhc3dl bGwgYm94IHN0b3BwZWQgd29ya2luZy4KPiA+ID4gCj4gPiA+IEFueSBpZGVhcyBob3cgdG8gcHJv Y2VlZCBmcm9tIGhlcmU/Cj4gPiAKPiA+IFRyeSB0byBjaGVjayB3aGV0aGVyIHRoZSByZXZlcnRp bmcgdGhlIGRpZmYgb2Ygc291bmQvKiBtYW51YWxseSBmaXhlcwo+ID4gdGhlIHByb2JsZW0uICAo aS5lLiBhcHBseSBkaWZmIC1SIGZvciB0aGUgZGlmZiBJIHNob3dlZCBpbiB0aGUKPiA+IHByZXZp b3VzIG1haWwuKQo+ID4gCj4gPiBJZiBpdCBkb2Vzbid0IGZpeCBidXQgc3RpbGwgcmV2ZXJ0aW5n IHRoZSB3aG9sZSBjb21taXQgZG9lcyBmaXgsIGl0Cj4gPiBtZWFucyB0aGF0IHNvbWV0aGluZyBl bHNlIGdvdCBicm9rZW4gYnkgdGhlIG1lcmdlLgo+ID4gCj4gPiAKPiA+IFRha2FzaGkKPiA+IAo+ IAo+IEkgcmV2ZXJ0ZWQgdGhlIGRpZmYgYnV0IHVuZm9ydHVuYXRlbHkgdGhlcmUgd2VyZSBubyBk aWZmZXJlbmNlLiAKPiAKPiBGb3IgY3VyaW9zaXR5LCBJIHRlc3RlZCB0aGUgYXVkaW8gd2l0aCB0 aGUgbGF0ZXN0IC1uaWdodGx5IGFuZCBJIGdvdAo+IHRoZSBhdWRpbyB3b3JraW5nIGFnYWluLiBJ IHdvbmRlciB3aGF0IGhhcyBjaGFuZ2VkIGJ1dCBpdCBzZWVtcyB0aGF0Cj4gdGhlIHByb2JsZW0g aXMgbm93IHNvbHZlZC4KCkJUVyB3ZSBub3cgaGF2ZSBhIFdBUk4gdHJpZ2dlcmluZyBvbiBCU1cg ZHVlIHRvIGhkYSB0cnlpbmcgdG8gcXVlcnkKdGhlIGN1cnJlbnQgY2RjbGsgZnJlcXVlbmN5Lgpo dHRwczovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnL3Nob3dfYnVnLmNnaT9pZD05MDAxMgoKSSdtIG5v dCBzdXJlIGlmIGhkYSByZWFsbHkgbmVlZHMgdG8ga25vdyB0aGUgY2RjbGsgZnJlcSBvbiBCU1cg b3Igbm90LgpCdXQgaW4gZWl0aGVyIGNhc2UgSSB0aGluayB3ZSBzaG91bGQganVzdCBraWxsIHRo ZSBIQVNfRERJIGNoZWNrLiBPbmNlCnRoZXNlIHBhdGNoZXMgbGFuZCB0aGUgY29kZSB3aWxsIGFu eXdheSB3b3JrIG9uIGFsbCBwbGF0Zm9ybXMuIE1pa2EsCmNhbiB5b3UgYWRkIHRoYXQgdG8geW91 ciBsaXN0IG9mIHRoaW5ncyB0byBkbyBvbiB0b3Agb2YgdGhlc2UgcGF0Y2hlcz8KCj4gCj4gLU1p a2EtCj4gCj4gPiAKPiA+ID4gCj4gPiA+IENoZWVycywKPiA+ID4gTWlrYQo+ID4gPiAKPiA+ID4g Cj4gPiA+ID4gdGhhbmtzLAo+ID4gPiA+IAo+ID4gPiA+IFRha2FzaGkKPiA+ID4gPiAKPiA+ID4g PiA9PT0KPiA+ID4gPiAlIGdpdCBkaWZmIDBhNTk5ODM4NzM3YTI1MjdjMzVlNGQ5NGY3OTRhZWZl NTlkZjE3ODFeLi4wYTU5OTgzODczN2EyNTI3YzM1ZTRkOTRmNzk0YWVmZTU5ZGYxNzgxIHNvdW5k Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvaGRhX2ludGVsLmMgYi9zb3VuZC9w Y2kvaGRhL2hkYV9pbnRlbC5jCj4gPiA+ID4gaW5kZXggOWJjYzU0NTdhODNlLi5lMWMyMTA1MTU1 ODEgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvc291bmQvcGNpL2hkYS9oZGFfaW50ZWwuYwo+ID4gPiA+ ICsrKyBiL3NvdW5kL3BjaS9oZGEvaGRhX2ludGVsLmMKPiA+ID4gPiBAQCAtMTk2Nyw3ICsxOTY3 LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGF6eF9pZHNbXSA9IHsKPiA+ ID4gPiAgCSAgLmRyaXZlcl9kYXRhID0gQVpYX0RSSVZFUl9QQ0ggfCBBWlhfRENBUFNfSU5URUxf UENIIH0sCj4gPiA+ID4gIAkvKiBTdW5yaXNlIFBvaW50ICovCj4gPiA+ID4gIAl7IFBDSV9ERVZJ Q0UoMHg4MDg2LCAweGExNzApLAo+ID4gPiA+IC0JICAuZHJpdmVyX2RhdGEgPSBBWlhfRFJJVkVS X1BDSCB8IEFaWF9EQ0FQU19JTlRFTF9QQ0ggfSwKPiA+ID4gPiArCSAgLmRyaXZlcl9kYXRhID0g QVpYX0RSSVZFUl9QQ0ggfCBBWlhfRENBUFNfSU5URUxfU0tZTEFLRSB9LAo+ID4gPiA+ICAJLyog U3VucmlzZSBQb2ludC1MUCAqLwo+ID4gPiA+ICAJeyBQQ0lfREVWSUNFKDB4ODA4NiwgMHg5ZDcw KSwKPiA+ID4gPiAgCSAgLmRyaXZlcl9kYXRhID0gQVpYX0RSSVZFUl9QQ0ggfCBBWlhfRENBUFNf SU5URUxfU0tZTEFLRSB9LAo+ID4gPiA+IGRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNo X3JlYWx0ZWsuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCj4gPiA+ID4gaW5kZXgg ZTBjMDZmOWEwZTgwLi43ZjQ2ZDA2M2FmNTcgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvc291bmQvcGNp L2hkYS9wYXRjaF9yZWFsdGVrLmMKPiA+ID4gPiArKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX3Jl YWx0ZWsuYwo+ID4gPiA+IEBAIC0zOTYsNyArMzk2LDcgQEAgc3RhdGljIHZvaWQgYWxjX2F1dG9f c2V0dXBfZWFwZChzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywgYm9vbCBvbikKPiA+ID4gPiAgewo+ ID4gPiA+ICAJLyogV2UgY3VycmVudGx5IG9ubHkgaGFuZGxlIGZyb250LCBIUCAqLwo+ID4gPiA+ ICAJc3RhdGljIGhkYV9uaWRfdCBwaW5zW10gPSB7Cj4gPiA+ID4gLQkJMHgwZiwgMHgxMCwgMHgx NCwgMHgxNSwgMAo+ID4gPiA+ICsJCTB4MGYsIDB4MTAsIDB4MTQsIDB4MTUsIDB4MTcsIDAKPiA+ ID4gPiAgCX07Cj4gPiA+ID4gIAloZGFfbmlkX3QgKnA7Cj4gPiA+ID4gIAlmb3IgKHAgPSBwaW5z OyAqcDsgcCsrKQo+ID4gPiA+IEBAIC0yODcwLDYgKzI4NzAsOCBAQCBzdGF0aWMgdm9pZCBhbGMy ODNfaW5pdChzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKPiA+ID4gPiAgCj4gPiA+ID4gIAlpZiAo IWhwX3BpbikKPiA+ID4gPiAgCQlyZXR1cm47Cj4gPiA+ID4gKwo+ID4gPiA+ICsJbXNsZWVwKDMw KTsKPiA+ID4gPiAgCWhwX3Bpbl9zZW5zZSA9IHNuZF9oZGFfamFja19kZXRlY3QoY29kZWMsIGhw X3Bpbik7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJLyogSW5kZXggMHg0MyBEaXJlY3QgRHJpdmUgSFAg QU1QIExQTSBDb250cm9sIDEgKi8KPiA+ID4gPiBAQCAtMzU2NCw2ICszNTY2LDcgQEAgc3RhdGlj IHZvaWQgYWxjX2hlYWRzZXRfbW9kZV91bnBsdWdnZWQoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMp Cj4gPiA+ID4gIAo+ID4gPiA+ICAJc3dpdGNoIChjb2RlYy0+Y29yZS52ZW5kb3JfaWQpIHsKPiA+ ID4gPiAgCWNhc2UgMHgxMGVjMDI1NToKPiA+ID4gPiArCWNhc2UgMHgxMGVjMDI1NjoKPiA+ID4g PiAgCQlhbGNfcHJvY2Vzc19jb2VmX2Z3KGNvZGVjLCBjb2VmMDI1NSk7Cj4gPiA+ID4gIAkJYnJl YWs7Cj4gPiA+ID4gIAljYXNlIDB4MTBlYzAyMzM6Cj4gPiA+ID4gQEAgLTM2MTksNiArMzYyMiw3 IEBAIHN0YXRpYyB2b2lkIGFsY19oZWFkc2V0X21vZGVfbWljX2luKHN0cnVjdCBoZGFfY29kZWMg KmNvZGVjLCBoZGFfbmlkX3QgaHBfcGluLAo+ID4gPiA+ICAKPiA+ID4gPiAgCXN3aXRjaCAoY29k ZWMtPmNvcmUudmVuZG9yX2lkKSB7Cj4gPiA+ID4gIAljYXNlIDB4MTBlYzAyNTU6Cj4gPiA+ID4g KwljYXNlIDB4MTBlYzAyNTY6Cj4gPiA+ID4gIAkJYWxjX3dyaXRlX2NvZWZfaWR4KGNvZGVjLCAw eDQ1LCAweGM0ODkpOwo+ID4gPiA+ICAJCXNuZF9oZGFfc2V0X3Bpbl9jdGxfY2FjaGUoY29kZWMs IGhwX3BpbiwgMCk7Cj4gPiA+ID4gIAkJYWxjX3Byb2Nlc3NfY29lZl9mdyhjb2RlYywgY29lZjAy NTUpOwo+ID4gPiA+IEBAIC0zNjg4LDYgKzM2OTIsNyBAQCBzdGF0aWMgdm9pZCBhbGNfaGVhZHNl dF9tb2RlX2RlZmF1bHQoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMpCj4gPiA+ID4gIAo+ID4gPiA+ ICAJc3dpdGNoIChjb2RlYy0+Y29yZS52ZW5kb3JfaWQpIHsKPiA+ID4gPiAgCWNhc2UgMHgxMGVj MDI1NToKPiA+ID4gPiArCWNhc2UgMHgxMGVjMDI1NjoKPiA+ID4gPiAgCQlhbGNfcHJvY2Vzc19j b2VmX2Z3KGNvZGVjLCBjb2VmMDI1NSk7Cj4gPiA+ID4gIAkJYnJlYWs7Cj4gPiA+ID4gIAljYXNl IDB4MTBlYzAyMzM6Cj4gPiA+ID4gQEAgLTM3NDIsNiArMzc0Nyw3IEBAIHN0YXRpYyB2b2lkIGFs Y19oZWFkc2V0X21vZGVfY3RpYShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykKPiA+ID4gPiAgCj4g PiA+ID4gIAlzd2l0Y2ggKGNvZGVjLT5jb3JlLnZlbmRvcl9pZCkgewo+ID4gPiA+ICAJY2FzZSAw eDEwZWMwMjU1Ogo+ID4gPiA+ICsJY2FzZSAweDEwZWMwMjU2Ogo+ID4gPiA+ICAJCWFsY19wcm9j ZXNzX2NvZWZfZncoY29kZWMsIGNvZWYwMjU1KTsKPiA+ID4gPiAgCQlicmVhazsKPiA+ID4gPiAg CWNhc2UgMHgxMGVjMDIzMzoKPiA+ID4gPiBAQCAtMzc5Niw2ICszODAyLDcgQEAgc3RhdGljIHZv aWQgYWxjX2hlYWRzZXRfbW9kZV9vbXRwKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQo+ID4gPiA+ ICAKPiA+ID4gPiAgCXN3aXRjaCAoY29kZWMtPmNvcmUudmVuZG9yX2lkKSB7Cj4gPiA+ID4gIAlj YXNlIDB4MTBlYzAyNTU6Cj4gPiA+ID4gKwljYXNlIDB4MTBlYzAyNTY6Cj4gPiA+ID4gIAkJYWxj X3Byb2Nlc3NfY29lZl9mdyhjb2RlYywgY29lZjAyNTUpOwo+ID4gPiA+ICAJCWJyZWFrOwo+ID4g PiA+ICAJY2FzZSAweDEwZWMwMjMzOgo+ID4gPiA+IEBAIC0zODQxLDYgKzM4NDgsNyBAQCBzdGF0 aWMgdm9pZCBhbGNfZGV0ZXJtaW5lX2hlYWRzZXRfdHlwZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2Rl YykKPiA+ID4gPiAgCj4gPiA+ID4gIAlzd2l0Y2ggKGNvZGVjLT5jb3JlLnZlbmRvcl9pZCkgewo+ ID4gPiA+ICAJY2FzZSAweDEwZWMwMjU1Ogo+ID4gPiA+ICsJY2FzZSAweDEwZWMwMjU2Ogo+ID4g PiA+ICAJCWFsY19wcm9jZXNzX2NvZWZfZncoY29kZWMsIGNvZWYwMjU1KTsKPiA+ID4gPiAgCQlt c2xlZXAoMzAwKTsKPiA+ID4gPiAgCQl2YWwgPSBhbGNfcmVhZF9jb2VmX2lkeChjb2RlYywgMHg0 Nik7Cj4gPiA+ID4gQEAgLTQ5OTMsNiArNTAwMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25k X3BjaV9xdWlyayBhbGMyNjlfZml4dXBfdGJsW10gPSB7Cj4gPiA+ID4gIAlTTkRfUENJX1FVSVJL KDB4MTdhYSwgMHg1MDFhLCAiVGhpbmtwYWQiLCBBTEMyODNfRklYVVBfSU5UX01JQyksCj4gPiA+ ID4gIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHg1MDFlLCAiVGhpbmtwYWQgTDQ0MCIsIEFMQzI5 Ml9GSVhVUF9UUFQ0NDBfRE9DSyksCj4gPiA+ID4gIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHg1 MDI2LCAiVGhpbmtwYWQiLCBBTEMyNjlfRklYVVBfTElNSVRfSU5UX01JQ19CT09TVCksCj4gPiA+ ID4gKwlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHg1MDM2LCAiVGhpbmtwYWQgVDQ1MHMiLCBBTEMy OTJfRklYVVBfVFBUNDQwX0RPQ0spLAo+ID4gPiA+ICAJU05EX1BDSV9RVUlSSygweDE3YWEsIDB4 NTEwOSwgIlRoaW5rcGFkIiwgQUxDMjY5X0ZJWFVQX0xJTUlUX0lOVF9NSUNfQk9PU1QpLAo+ID4g PiA+ICAJU05EX1BDSV9RVUlSSygweDE3YWEsIDB4M2JmOCwgIlF1YW50YSBGTDEiLCBBTEMyNjlf RklYVVBfUENNXzQ0SyksCj4gPiA+ID4gIAlTTkRfUENJX1FVSVJLKDB4MTdhYSwgMHg5ZTU0LCAi TEVOT1ZPIE5CIiwgQUxDMjY5X0ZJWFVQX0xFTk9WT19FQVBEKSwKPiA+ID4gPiBAQCAtNTE3Myw2 ICs1MTgyLDE2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2hkYV9waW5fcXVpcmsgYWxjMjY5 X3Bpbl9maXh1cF90YmxbXSA9IHsKPiA+ID4gPiAgCQl7MHgxNywgMHg0MDAwMDAwMH0sCj4gPiA+ ID4gIAkJezB4MWQsIDB4NDA3MDAwMDF9LAo+ID4gPiA+ICAJCXsweDIxLCAweDAyMjExMDUwfSks Cj4gPiA+ID4gKwlTTkRfSERBX1BJTl9RVUlSSygweDEwZWMwMjU2LCAweDEwMjgsICJEZWxsIiwg QUxDMjU1X0ZJWFVQX0RFTEwxX01JQ19OT19QUkVTRU5DRSwKPiA+ID4gPiArCQl7MHgxMiwgMHg5 MGE2MDE0MH0sCj4gPiA+ID4gKwkJezB4MTMsIDB4NDAwMDAwMDB9LAo+ID4gPiA+ICsJCXsweDE0 LCAweDkwMTcwMTEwfSwKPiA+ID4gPiArCQl7MHgxOSwgMHg0MTExMTFmMH0sCj4gPiA+ID4gKwkJ ezB4MWEsIDB4NDExMTExZjB9LAo+ID4gPiA+ICsJCXsweDFiLCAweDQxMTExMWYwfSwKPiA+ID4g PiArCQl7MHgxZCwgMHg0MDcwMDAwMX0sCj4gPiA+ID4gKwkJezB4MWUsIDB4NDExMTExZjB9LAo+ ID4gPiA+ICsJCXsweDIxLCAweDAyMjExMDIwfSksCj4gPiA+ID4gIAlTTkRfSERBX1BJTl9RVUlS SygweDEwZWMwMjgwLCAweDEwM2MsICJIUCIsIEFMQzI4MF9GSVhVUF9IUF9HUElPNCwKPiA+ID4g PiAgCQl7MHgxMiwgMHg5MGE2MDEzMH0sCj4gPiA+ID4gIAkJezB4MTMsIDB4NDAwMDAwMDB9LAo+ ID4gPiA+IGRpZmYgLS1naXQgYS9zb3VuZC91c2IvcXVpcmtzLmMgYi9zb3VuZC91c2IvcXVpcmtz LmMKPiA+ID4gPiBpbmRleCAzNTM1MzJiOGFlZTQuLjhmNjNlOGM4YjQ2YyAxMDA2NDQKPiA+ID4g PiAtLS0gYS9zb3VuZC91c2IvcXVpcmtzLmMKPiA+ID4gPiArKysgYi9zb3VuZC91c2IvcXVpcmtz LmMKPiA+ID4gPiBAQCAtMTExMyw4ICsxMTEzLDEzIEBAIHZvaWQgc25kX3VzYl9zZXRfZm9ybWF0 X3F1aXJrKHN0cnVjdCBzbmRfdXNiX3N1YnN0cmVhbSAqc3VicywKPiA+ID4gPiAgCj4gPiA+ID4g IGJvb2wgc25kX3VzYl9nZXRfc2FtcGxlX3JhdGVfcXVpcmsoc3RydWN0IHNuZF91c2JfYXVkaW8g KmNoaXApCj4gPiA+ID4gIHsKPiA+ID4gPiAtCS8qIE1TIExpZmVjYW0gSEQtNTAwMCBkb2Vzbid0 IHN1cHBvcnQgcmVhZGluZyB0aGUgc2FtcGxlIHJhdGUuICovCj4gPiA+ID4gLQlyZXR1cm4gY2hp cC0+dXNiX2lkID09IFVTQl9JRCgweDA0NUUsIDB4MDc2RCk7Cj4gPiA+ID4gKwkvKiBkZXZpY2Vz IHdoaWNoIGRvIG5vdCBzdXBwb3J0IHJlYWRpbmcgdGhlIHNhbXBsZSByYXRlLiAqLwo+ID4gPiA+ ICsJc3dpdGNoIChjaGlwLT51c2JfaWQpIHsKPiA+ID4gPiArCWNhc2UgVVNCX0lEKDB4MDQ1RSwg MHgwNzZEKTogLyogTVMgTGlmZWNhbSBIRC01MDAwICovCj4gPiA+ID4gKwljYXNlIFVTQl9JRCgw eDA0RDgsIDB4RkVFQSk6IC8qIEJlbmNobWFyayBEQUMxIFByZSAqLwo+ID4gPiA+ICsJCXJldHVy biB0cnVlOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsJcmV0dXJuIGZhbHNlOwo+ID4gPiA+ICB9Cj4g PiA+ID4gIAo+ID4gPiA+ICAvKiBNYXJhbnR6L0Rlbm9uIFVTQiBEQUNzIG5lZWQgYSB2ZW5kb3Ig Y21kIHRvIHN3aXRjaAo+ID4gPiA+IAo+ID4gPiAKPiA+ID4gCj4gCj4gCj4gX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBs aXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rs w6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==