From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v4 4/4] drm/i915: set proper N/CTS in modeset Date: Wed, 12 Aug 2015 16:23:12 +0300 Message-ID: <87bnectzcv.fsf@intel.com> References: <1439191931-25705-1-git-send-email-libin.yang@intel.com> <1439191931-25705-4-git-send-email-libin.yang@intel.com> <871tfb8hu8.fsf@intel.com> <96A12704CE18D347B625EE2D4A099D196E1E2C@SHSMSX103.ccr.corp.intel.com> <87oaie70wz.fsf@intel.com> <96A12704CE18D347B625EE2D4A099D196E30C8@SHSMSX103.ccr.corp.intel.com> <87egjautrh.fsf@intel.com> <96A12704CE18D347B625EE2D4A099D196E34F4@SHSMSX103.ccr.corp.intel.com> <87mvxxt4da.fsf@intel.com> <20150812131056.GP17734@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 00D4F6E1C1 for ; Wed, 12 Aug 2015 06:20:16 -0700 (PDT) In-Reply-To: <20150812131056.GP17734@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: "tiwai@suse.de" , "alsa-devel@alsa-project.org" , "intel-gfx@lists.freedesktop.org" , "daniel.vetter@ffwll.ch" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAxMiBBdWcgMjAxNSwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPiB3cm90 ZToKPiBPbiBXZWQsIEF1ZyAxMiwgMjAxNSBhdCAwOToyMDoxN0FNICswMzAwLCBKYW5pIE5pa3Vs YSB3cm90ZToKPj4gT24gV2VkLCAxMiBBdWcgMjAxNSwgIllhbmcsIExpYmluIiA8bGliaW4ueWFu Z0BpbnRlbC5jb20+IHdyb3RlOgo+PiA+IEhpIEphbmksCj4+ID4KPj4gPj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0KPj4gPj4gRnJvbTogSmFuaSBOaWt1bGEgW21haWx0bzpqYW5pLm5pa3Vs YUBsaW51eC5pbnRlbC5jb21dCj4+ID4+IFNlbnQ6IFR1ZXNkYXksIEF1Z3VzdCAxMSwgMjAxNSA0 OjE0IFBNCj4+ID4+IFRvOiBZYW5nLCBMaWJpbjsgYWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3Jn OyB0aXdhaUBzdXNlLmRlOyBpbnRlbC0KPj4gPj4gZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsg ZGFuaWVsLnZldHRlckBmZndsbC5jaAo+PiA+PiBTdWJqZWN0OiBSRTogW0ludGVsLWdmeF0gW1BB VENIIHY0IDQvNF0gZHJtL2k5MTU6IHNldCBwcm9wZXIgTi9DVFMgaW4KPj4gPj4gbW9kZXNldAo+ PiA+PiAKPj4gPj4gT24gVHVlLCAxMSBBdWcgMjAxNSwgIllhbmcsIExpYmluIiA8bGliaW4ueWFu Z0BpbnRlbC5jb20+IHdyb3RlOgo+PiA+PiA+IEhpIEphbmksCj4+ID4+ID4KPj4gPj4gPj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4gPj4gPj4gRnJvbTogSmFuaSBOaWt1bGEgW21haWx0 bzpqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb21dCj4+ID4+ID4+IFNlbnQ6IFR1ZXNkYXksIEF1 Z3VzdCAxMSwgMjAxNSAzOjE0IFBNCj4+ID4+ID4+IFRvOiBZYW5nLCBMaWJpbjsgYWxzYS1kZXZl bEBhbHNhLXByb2plY3Qub3JnOyB0aXdhaUBzdXNlLmRlOyBpbnRlbC0KPj4gPj4gPj4gZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsgZGFuaWVsLnZldHRlckBmZndsbC5jaAo+PiA+PiA+PiBTdWJq ZWN0OiBSRTogW0ludGVsLWdmeF0gW1BBVENIIHY0IDQvNF0gZHJtL2k5MTU6IHNldCBwcm9wZXIg Ti9DVFMgaW4KPj4gPj4gPj4gbW9kZXNldAo+PiA+PiA+Pgo+PiA+PiA+PiBPbiBUdWUsIDExIEF1 ZyAyMDE1LCAiWWFuZywgTGliaW4iIDxsaWJpbi55YW5nQGludGVsLmNvbT4gd3JvdGU6Cj4+ID4+ ID4+ID4gSGkgSmFuaSwKPj4gPj4gPj4gPgo+PiA+PiA+PiA+IFRoYW5rcyBmb3IgY2FyZWZ1bCBy ZXZpZXdpbmcgZm9yIGFsbCB0aGUgcGF0Y2hlcywgcGxlYXNlCj4+ID4+ID4+ID4gc2VlIG15IGNv bW1lbnRzLgo+PiA+PiA+PiA+Cj4+ID4+ID4+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t Cj4+ID4+ID4+ID4+IEZyb206IEphbmkgTmlrdWxhIFttYWlsdG86amFuaS5uaWt1bGFAbGludXgu aW50ZWwuY29tXQo+PiA+PiA+PiA+PiBTZW50OiBNb25kYXksIEF1Z3VzdCAxMCwgMjAxNSA4OjEw IFBNCj4+ID4+ID4+ID4+IFRvOiBZYW5nLCBMaWJpbjsgYWxzYS1kZXZlbEBhbHNhLXByb2plY3Qu b3JnOyB0aXdhaUBzdXNlLmRlOyBpbnRlbC0KPj4gPj4gPj4gPj4gZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZzsgZGFuaWVsLnZldHRlckBmZndsbC5jaAo+PiA+PiA+PiA+PiBTdWJqZWN0OiBSZTog W0ludGVsLWdmeF0gW1BBVENIIHY0IDQvNF0gZHJtL2k5MTU6IHNldCBwcm9wZXIgTi9DVFMKPj4g Pj4gaW4KPj4gPj4gPj4gPj4gbW9kZXNldAo+PiA+PiA+PiA+Pgo+PiA+PiA+PiA+PiBPbiBNb24s IDEwIEF1ZyAyMDE1LCBsaWJpbi55YW5nQGludGVsLmNvbSB3cm90ZToKPj4gPj4gPj4gPj4gPiBG cm9tOiBMaWJpbiBZYW5nIDxsaWJpbi55YW5nQGludGVsLmNvbT4KPj4gPj4gPj4gPj4gPgo+PiA+ PiA+PiA+PiA+IFdoZW4gbW9kZXNldCBvY2N1cnMgYW5kIHRoZSBUTURTIGZyZXF1ZW5jeSBpcyBz ZXQgdG8gc29tZQo+PiA+PiA+PiA+PiA+IHNwZWljYWwgdmFsdWUsIHRoZSBOL0NUUyBuZWVkIHRv IGJlIHNldCBtYW51YWxseSBpZiBhdWRpbwo+PiA+PiA+PiA+PiA+IGlzIHBsYXlpbmcuCj4+ID4+ ID4+ID4+Cj4+ID4+ID4+ID4+IFdoZW4gbW9kZXNldCBvY2N1cnMsIHdlIGRpc2FibGUgZXZlcnl0 aGluZywgYW5kIHRoZW4gcmUtZW5hYmxlCj4+ID4+ID4+ID4+IGV2ZXJ5dGhpbmcsIGFuZCBub3Rp ZnkgdGhlIGF1ZGlvIGRyaXZlciBldmVyeSBzdGVwIG9mIHRoZSB3YXkuIElJVUMKPj4gPj4gPj4g Pj4gdGhlcmUgc2hvdWxkIGJlIG5vIGF1ZGlvIHBsYXlpbmcgYWNyb3NzIHRoZSBtb2Rlc2V0LCBh bmQgd2hlbgo+PiA+PiB0aGUKPj4gPj4gPj4gPj4gbW9kZXNldCBpcyBjb21wbGV0ZSBhbmQgd2Un dmUgc2V0IHRoZSB2YWxpZCBFTEQsIHRoZSBhdWRpbyBkcml2ZXIKPj4gPj4gPj4gPj4gc2hvdWxk Cj4+ID4+ID4+ID4+IGNhbGwgdGhlIGNhbGxiYWNrIGZyb20gdGhlIGVhcmxpZXIgcGF0Y2hlcyB0 byBzZXQgdGhlIGNvcnJlY3QgYXVkaW8KPj4gPj4gPj4gPj4gcmF0ZS4KPj4gPj4gPj4gPj4KPj4g Pj4gPj4gPj4gV2h5IGlzIHRoaXMgcGF0Y2ggbmVlZGVkPyBQbGVhc2UgZW5saWdodGVuIG1lLgo+ PiA+PiA+PiA+Cj4+ID4+ID4+ID4gUGxlYXNlIGltYWdlIHRoaXMgc2NlbmFyaW86IHdoZW4gYXVk aW8gaXMgcGxheWluZywgdGhlIGdmeCBkcml2ZXIKPj4gPj4gPj4gPiBkb2VzIHRoZSBtb2Rlc2V0 LiBJbiB0aGlzIHNpdHVhdGlvbiwgYWZ0ZXIgbW9kZXNldCwgYXVkaW8gZHJpdmVyCj4+ID4+ID4+ ID4gd2lsbCBkbyBub3RoaW5nIGFuZCBjb250aW51ZSBwbGF5aW5nLiBBbmQgYXVkaW8gZHJpdmVy IHdpbGwgbm90IGNhbGwKPj4gPj4gPj4gPiBzZXRfbmN0cy4KPj4gPj4gPj4KPj4gPj4gPj4gV2h5 IGRvZXMgdGhlIGF1ZGlvIGRyaXZlciBub3QgZG8gYW55dGhpbmcgaGVyZT8gV2hlbmV2ZXIgdGhl cmUncwo+PiA+PiBhCj4+ID4+ID4+IG1vZGVzZXQsIHRoZSBncmFwaGljcyBkcml2ZXIgd2lsbCBk aXNhYmxlIGF1ZGlvIGFuZCBpbnZhbGlkYXRlIHRoZQo+PiA+PiBFTEQsCj4+ID4+ID4+IHdoaWNo IHNob3VsZCBjYXVzZSBhbiBpbnRlcnJ1cHQgdG8gbm90aWZ5IHRoZSBhdWRpbyBkcml2ZXIgYWJv dXQKPj4gPj4gPj4gdGhpcy4gVGhpcyBpcyBubyBkaWZmZXJlbnQgZnJvbSBhIGhvdC11bnBsdWcs IGluIGZhY3QgSSBjYW4ndCBzZWUgaG93Cj4+ID4+ID4+IHRoZSBhdWRpbyBkcml2ZXIgY291bGQg ZXZlbiBkZXRlY3Qgd2hldGhlciB0aGVyZSdzIGJlZW4gYSBob3RwbHVnCj4+ID4+IG9yCj4+ID4+ ID4+IG5vdAo+PiA+PiA+PiB3aGVuIHRoZXJlJ3MgYSBjb2RlYyBkaXNhYmxlL2VuYWJsZS4KPj4g Pj4gPgo+PiA+PiA+IFllcywgaXQgd2lsbCB0cmlnZ2VyIGFuIGludGVycnVwdCB0byBhdWRpbyBk cml2ZXIgd2hlbiB1bnBsdWcKPj4gPj4gPiBhbmQgYW5vdGhlciBpbnRlcnJ1cHQgZm9yIGhvdHBs dWcuIEJ1dCBmcm9tIGF1ZGlvIGRyaXZlciwKPj4gPj4gPiB3ZSB3aWxsIG5vdCBzdG9wIHRoZSBw bGF5aW5nIGFuZCByZXN1bWUgdGhlIHBsYXlpbmcgYmFzZWQKPj4gPj4gPiBvbiB0aGUgaG90cGx1 ZyBvciBtb2Rlc2V0LiBUaGUgYXVkaW8gaXMgYWx3YXlzIHBsYXlpbmcgZHVyaW5nCj4+ID4+ID4g dGhlIGhvdHBsdWcvbW9kZXNldC4KPj4gPj4gCj4+ID4+IEJ1dCB0aGUgd2hvbGUgZGlzcGxheSwg YW5kIGNvbnNlcXVlbnRseSBFTEQsIG1pZ2h0IGhhdmUgY2hhbmdlZAo+PiA+PiBkdXJpbmcKPj4g Pj4gdGhlIGhvdHBsdWcsIHdoeSBkbyB5b3UgYXNzdW1lIHlvdSBjYW4ganVzdCBrZWVwIHBsYXlp bmc/ISBUaGUKPj4gPj4gZGlzcGxheQo+PiA+PiBtaWdodCBldmVuIGhhdmUgY2hhbmdlZCBmcm9t IEhETUkgdG8gRFAgb3IgdmljZSB2ZXJzYS4KPj4gPgo+PiA+IFRoZSBlbGQgaW5mbyBjaGFuZ2lu ZyB3aWxsIG5vdCBpbXBhY3QgdGhlIGF1ZGlvIHBsYXlpbmcuCj4+ID4gQWN0dWFsbHksIHlvdSBj YW4gaW1hZ2UgdGhlIG1vbml0b3IgYXMgYSBkaWdpdGFsIHNwZWFrZXIsIGp1c3QKPj4gPiBsaWtl IHRoZSBoZWFkcGhvbmUgdG8gdGhlIGFuYWxvZyBhdWRpby4gVW5wbHVnIHRoZSBzcGVha2VyCj4+ ID4gd2lsbCBub3QgaW1wYWN0IG9uIHRoZSBhdWRpbyBwbGF5aW5nLiBPZiBjb3Vyc2UgLCB0aGVy ZSBpcyBhCj4+ID4gbGl0dGxlIGRpZmZlcmVuY2UsIHdoZW4gbW9uaXRvciBob3RwbHVnLCBpbiB0 aGUgaW50ZXJydXB0LAo+PiA+IHdlIG1heSBjaGFuZ2UgdGhlIGNvZGVjIGNvbmZpZ3VyYXRpb24g ZHluYW1pY2FsbHkuIAo+PiA+Cj4+ID4gQW5kIGF1ZGlvIGRyaXZlciBzdXBwbHkgdGhlIG1lY2hh bmlzbSB0byBzdG9wIHRoZQo+PiA+IGF1ZGlvIHBsYXlpbmcgd2hlbiBob3RwbHVnIGlmIHRoZSBI VyByZXF1aXJlcy4KPj4gPgo+PiA+PiAKPj4gPj4gV2UndmUgYWxzbyBiZWVuIHB1dHRpbmcgYSBs b3Qgb2YgZWZmb3J0IGludG8gbm90IGRlcGVuZGluZyBvbiBwcmV2aW91cwo+PiA+PiBzdGF0ZSB3 aGVuIGVuYWJsaW5nIHRoZSBvdXRwdXRzLCBmb3IgbW9yZSByZWxpYWJpbGl0eS4gV2UgZ2VuZXJh bGx5Cj4+ID4+IGRvbid0IGRvIHBhcnRpYWwgY2hhbmdlcywgd2UgZGlzYWJsZSBldmVyeXRoaW5n IGFuZCB0aGVuIGVuYWJsZQo+PiA+PiBhZ2Fpbi4gQW5kIG5vdyB5b3UncmUgc3VnZ2VzdGluZyB3 ZSBsb29rIGF0IHNvbWUgcmVnaXN0ZXIgd2hpY2ggZm9yIGFsbAo+PiA+PiB3ZSBrbm93IG1heSBo YXZlIGJlZW4gdmFsaWQgZm9yIHNvbWUgb3RoZXIgZGlzcGxheT8KPj4gPgo+PiA+IEluIHRoZSBw YXRjaCwgaXQgd2lsbCBub3QgZGVwZW5kIG9uIHByZXZpb3VzIHN0YXRlLCBJIHRoaW5rLiBXZQo+ PiA+IHJlYWQgdGhlIHJlZ2lzdGVyIHZhbHVlIHdoaWNoIGlzIGJhc2VkIG9uIHRoZSBzdGF0ZSBh ZnRlciBtb2Rlc2V0Lgo+PiAKPj4gT2theSwgbGV0J3MgaGF2ZSB0aGUgcGF0Y2hlcyBjbGVhbmVk IHVwIGFuZCBzZWUuIEl0J2xsIGJlIGVhc2llciBhbmQKPj4gcXVpY2tlciB0byBzb2xpY2l0IG1v cmUgcmV2aWV3IG9uIHRoYXQgdGhhbiB0aGlzIGV4cGFuZGluZyB0aHJlYWQuCj4KPiBJdCBzb3Vu ZHMgbGlrZSB3ZSBhY3R1YWxseSBuZWVkIHRvIHBpbmcgdGhlIGF1ZGlvIHNpZGUgX2JlZm9yZV8g d2UgZG8gdGhlCgpEbyB5b3UgbWVhbiAicmVhZCBfSFNXX0FVRF9TVFJfREVTQ18qIiBieSAicGlu ZyB0aGUgYXVkaW8gc2lkZSIgYWJvdmU/CgpKYW5pLgoKPiBodyBtb2Rlc2V0IHdoaWxlIGNvbXB1 dGluZyB0aGUgcGlwZV9jb25maWcuIFRoYXQgd291bGQgcHJvYmFibHkgdGFrZSBjYXJlCj4gb2Yg bXkgcndtIGNvbmNlcm5zLCBnaXZlIHRoaXMgdGhpbmcgcHJvcGVyIHN0cnVjdHVyZSBhbmQgYWxz byBtYWtlIHN1cmUKPiBOL0NUUyBuZXZlciBnZXQgb3V0IG9mIHN5bmMuIEFsc28gdGhlbiB3ZSBj YW4gdHJhY2sgdGhpcyBzdHVmZiBpbiB0aGUKPiBwaXBlX2NvbmZpZyBhbmQgdGhyb3cgdGhlIHN0 YXRlIGNoZWNrZXIgYXQgaXQgdG8gbWFrZSBzdXJlIGl0J3MgYWxsIGZpbmUuCj4gLURhbmllbAo+ Cj4+IAo+PiBQbGVhc2UgZmluZCBvbmUgbW9yZSBjb2RlIGNvbW1lbnQgYmVsb3cuCj4+IAo+PiA+ Cj4+ID4+IAo+PiA+PiBUaW1lb3V0Lgo+PiA+PiAKPj4gPj4gCj4+ID4+IEJSLAo+PiA+PiBKYW5p Lgo+PiA+PiAKPj4gPj4gCj4+ID4+ID4KPj4gPj4gPj4KPj4gPj4gPj4gQlIsCj4+ID4+ID4+IEph bmkuCj4+ID4+ID4+Cj4+ID4+ID4+Cj4+ID4+ID4+ID4KPj4gPj4gPj4gPj4KPj4gPj4gPj4gPj4g QWxzbyBzb21lIGNvbW1lbnRzIGluLWxpbmUsIHByb3ZpZGVkIHlvdSd2ZSBjb252aW5jZWQgbWUg Zmlyc3QuIDspCj4+ID4+ID4+ID4+Cj4+ID4+ID4+ID4+ID4gU2lnbmVkLW9mZi1ieTogTGliaW4g WWFuZyA8bGliaW4ueWFuZ0BpbnRlbC5jb20+Cj4+ID4+ID4+ID4+ID4gLS0tCj4+ID4+ID4+ID4+ ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgfCAgNiArKysrKysKPj4gPj4g Pj4gPj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyB8IDQyCj4+ID4+ID4+ ID4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ID4+ID4+ID4+ID4g IDIgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKQo+PiA+PiA+PiA+PiA+Cj4+ID4+ID4+ ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gPj4g Pj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ID4+ID4+ID4+ID4gaW5k ZXggZGEyZDEyOC4uODVmM2JlYiAxMDA2NDQKPj4gPj4gPj4gPj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ID4+ID4+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+PiA+PiA+PiA+PiA+IEBAIC03MDMwLDYgKzcwMzAsMTIgQEAgZW51 bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4+ID4+ID4+ID4+ID4KPj4gPj4gCV9IU1dfQVVEX0RJ R19DTlZUXzIpCj4+ID4+ID4+ID4+ID4gICNkZWZpbmUgRElQX1BPUlRfU0VMX01BU0sJCTB4Mwo+ PiA+PiA+PiA+PiA+Cj4+ID4+ID4+ID4+ID4gKyNkZWZpbmUgX0hTV19BVURfU1RSX0RFU0NfMQkJ MHg2NTA4NAo+PiA+PiA+PiA+PiA+ICsjZGVmaW5lIF9IU1dfQVVEX1NUUl9ERVNDXzIJCTB4NjUx ODQKPj4gPj4gPj4gPj4gPiArI2RlZmluZSBBVURfU1RSX0RFU0MocGlwZSkJX1BJUEUocGlwZSwg XAo+PiA+PiA+PiA+PiA+ICsKPj4gPj4gX0hTV19BVURfU1RSX0RFU0NfMSwKPj4gPj4gPj4gPj4g CVwKPj4gPj4gPj4gPj4gPiArCj4+ID4+IF9IU1dfQVVEX1NUUl9ERVNDXzIpCj4+ID4+ID4+ID4+ ID4gKwo+PiA+PiA+PiA+PiA+ICAjZGVmaW5lIF9IU1dfQVVEX0VESURfREFUQV9BCQkweDY1MDUw Cj4+ID4+ID4+ID4+ID4gICNkZWZpbmUgX0hTV19BVURfRURJRF9EQVRBX0IJCTB4NjUxNTAKPj4g Pj4gPj4gPj4gPiAgI2RlZmluZSBIU1dfQVVEX0VESURfREFUQShwaXBlKSBfUElQRShwaXBlLCBc Cj4+ID4+ID4+ID4+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1 ZGlvLmMKPj4gPj4gPj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+ ID4+ID4+ID4+ID4gaW5kZXggZWRkZjM3Zi4uMDgyZjk2ZCAxMDA2NDQKPj4gPj4gPj4gPj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4+ID4+ID4+ID4+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+PiA+PiA+PiA+PiA+IEBAIC0y MzUsNiArMjM1LDkgQEAgc3RhdGljIHZvaWQKPj4gPj4gPj4gaHN3X2F1ZGlvX2NvZGVjX2VuYWJs ZShzdHJ1Y3QKPj4gPj4gPj4gPj4gZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiA+PiA+PiA+ PiA+ICAJY29uc3QgdWludDhfdCAqZWxkID0gY29ubmVjdG9yLT5lbGQ7Cj4+ID4+ID4+ID4+ID4g IAl1aW50MzJfdCB0bXA7Cj4+ID4+ID4+ID4+ID4gIAlpbnQgbGVuLCBpOwo+PiA+PiA+PiA+PiA+ ICsJaW50IGN2dF9pZHg7Cj4+ID4+ID4+ID4+ID4gKwlpbnQgbl9sb3csIG5fdXAsIG47Cj4+ID4+ ID4+ID4+ID4gKwlpbnQgYmFzZV9yYXRlLCBtdWwsIGRpdiwgcmF0ZTsKPj4gPj4gPj4gPj4gPgo+ PiA+PiA+PiA+PiA+ICAJRFJNX0RFQlVHX0tNUygiRW5hYmxlIGF1ZGlvIGNvZGVjIG9uIHBpcGUg JWMsICV1Cj4+ID4+IGJ5dGVzCj4+ID4+ID4+ID4+IEVMRFxuIiwKPj4gPj4gPj4gPj4gPiAgCQkg ICAgICBwaXBlX25hbWUocGlwZSksIGRybV9lbGRfc2l6ZShlbGQpKTsKPj4gPj4gPj4gPj4gPiBA QCAtMjY3LDYgKzI3MCwyMSBAQCBzdGF0aWMgdm9pZAo+PiA+PiA+PiBoc3dfYXVkaW9fY29kZWNf ZW5hYmxlKHN0cnVjdAo+PiA+PiA+PiA+PiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ID4+ ID4+ID4+ID4gIAl0bXAgfD0gQVVESU9fRUxEX1ZBTElEKHBpcGUpOwo+PiA+PiA+PiA+PiA+ICAJ STkxNV9XUklURShIU1dfQVVEX1BJTl9FTERfQ1BfVkxELCB0bXApOwo+PiA+PiA+PiA+PiA+Cj4+ ID4+ID4+ID4+ID4gKwlpZiAoKG1vZGUtPmNsb2NrID09IDI5NzAwMCkgfHwKPj4gPj4gPj4gPj4g PiArCQkobW9kZS0+Y2xvY2sgPT0gRElWX1JPVU5EX1VQKDI5NzAwMCAqIDEwMDAsCj4+ID4+ID4+ ID4+IDEwMDEpKSkgewo+PiAKPj4gUGxlYXNlIGFic3RyYWN0IHRoYXQgY29uZGl0aW9uIGludG8g YSBoZWxwZXIgYW5kIGdpdmUgaXQgYSBoZWxwZnVsCj4+IG5hbWUuIFRoYXQncyByZXBlYXRlZCBt YW55IHRpbWVzIG5vdywgaW4gdGhpcyBhbmQgbmVnYXRlZCBmb3JtcywgYW5kIEkKPj4gd2FudCB0 aGUgY29tcGlsZXIgdG8gZW5zdXJlIGl0J3MgdGhlIHNhbWUgaW4gZWFjaCBwbGFjZS4KPj4gCj4+ IFRoYW5rcywKPj4gSmFuaS4KPj4gCj4+ID4+ID4+ID4+ID4gKwkJdG1wID0KPj4gPj4gSTkxNV9S RUFEKEhTV19BVURfUElQRV9DT05OX1NFTF9DVFJMKTsKPj4gPj4gPj4gPj4gPiArCQljdnRfaWR4 ID0gKHRtcCA+PiBwaXBlKjgpICYgMHhmZjsKPj4gPj4gPj4gPj4gPiArCQl0bXAgPSBJOTE1X1JF QUQoQVVEX1NUUl9ERVNDKGN2dF9pZHgpKTsKPj4gPj4gPj4gPj4gPiArCQliYXNlX3JhdGUgPSB0 bXAgJiAoMSA8PCAxNCk7Cj4+ID4+ID4+ID4+ID4gKwkJaWYgKGJhc2VfcmF0ZSA9PSAwKQo+PiA+ PiA+PiA+PiA+ICsJCQlyYXRlID0gNDgwMDA7Cj4+ID4+ID4+ID4+ID4gKwkJZWxzZQo+PiA+PiA+ PiA+PiA+ICsJCQlyYXRlID0gNDQxMDA7Cj4+ID4+ID4+ID4+ID4gKwkJbXVsID0gKHRtcCAmICgw eDcgPDwgMTEpKSArIDE7Cj4+ID4+ID4+ID4+ID4gKwkJZGl2ID0gKHRtcCAmICgweDcgPDwgOCkp ICsgMTsKPj4gPj4gPj4gPj4gPiArCQlyYXRlID0gcmF0ZSAqIG11bCAvIGRpdjsKPj4gPj4gPj4g Pj4gPiArCX0KPj4gPj4gPj4gPj4KPj4gPj4gPj4gPj4gVGhpcyBzaG91bGQgYmUgYWJzdHJhY3Rl ZCB0byBhIHNlcGFyYXRlIGZ1bmN0aW9uLgo+PiA+PiA+PiA+Cj4+ID4+ID4+ID4gWWVzLiBJIHdp bGwgZG8gaXQuCj4+ID4+ID4+ID4KPj4gPj4gPj4gPj4KPj4gPj4gPj4gPj4gPiArCj4+ID4+ID4+ ID4+ID4gIAkvKiBFbmFibGUgdGltZXN0YW1wcyAqLwo+PiA+PiA+PiA+PiA+ICAJdG1wID0gSTkx NV9SRUFEKEhTV19BVURfQ0ZHKHBpcGUpKTsKPj4gPj4gPj4gPj4gPiAgCXRtcCAmPSB+QVVEX0NP TkZJR19OX1ZBTFVFX0lOREVYOwo+PiA+PiA+PiA+PiA+IEBAIC0yNzYsNiArMjk0LDMwIEBAIHN0 YXRpYyB2b2lkCj4+ID4+ID4+IGhzd19hdWRpb19jb2RlY19lbmFibGUoc3RydWN0Cj4+ID4+ID4+ ID4+IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gPj4gPj4gPj4gPiAgCQl0bXAgfD0gQVVE X0NPTkZJR19OX1ZBTFVFX0lOREVYOwo+PiA+PiA+PiA+PiA+ICAJZWxzZQo+PiA+PiA+PiA+PiA+ ICAJCXRtcCB8PSBhdWRpb19jb25maWdfaGRtaV9waXhlbF9jbG9jayhtb2RlKTsKPj4gPj4gPj4g Pj4gPiArCj4+ID4+ID4+ID4+ID4gKwlpZiAoKG1vZGUtPmNsb2NrICE9IDI5NzAwMCkgJiYKPj4g Pj4gPj4gPj4gPiArCQkobW9kZS0+Y2xvY2sgIT0gRElWX1JPVU5EX1VQKDI5NzAwMCAqIDEwMDAs Cj4+ID4+ID4+ID4+IDEwMDEpKSkgewo+PiA+PiA+PiA+PiA+ICsJCXRtcCAmPSB+QVVEX0NPTkZJ R19OX1BST0dfRU5BQkxFOwo+PiA+PiA+PiA+PiA+ICsJfSBlbHNlIHsKPj4gPj4gPj4gPj4gPiAr CQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShhdWRfbmN0cyk7IGkrKykgewo+PiA+PiA+PiA+ PiA+ICsJCQlpZiAoKHJhdGUgPT0gYXVkX25jdHNbaV0uc2FtcGxlX3JhdGUpICYmCj4+ID4+ID4+ ID4+ID4gKwkJCQkobW9kZS0+Y2xvY2sgPT0KPj4gPj4gYXVkX25jdHNbaV0uY2xvY2spKSB7Cj4+ ID4+ID4+ID4+ID4gKwkJCQluID0gYXVkX25jdHNbaV0ubjsKPj4gPj4gPj4gPj4gPiArCQkJCWJy ZWFrOwo+PiA+PiA+PiA+PiA+ICsJCQl9Cj4+ID4+ID4+ID4+ID4gKwkJfQo+PiA+PiA+PiA+PiA+ ICsJCWlmIChuICE9IDApIHsKPj4gPj4gPj4gPj4gPiArCQkJdG1wIHw9IEFVRF9DT05GSUdfTl9Q Uk9HX0VOQUJMRTsKPj4gPj4gPj4gPj4gPiArCQkJbl9sb3cgPSBuICYgMHhmZmY7Cj4+ID4+ID4+ ID4+ID4gKwkJCW5fdXAgPSAobiA+PiAxMikgJiAweGZmOwo+PiA+PiA+PiA+PiA+ICsJCQl0bXAg fD0gQVVEX0NPTkZJR19OX1BST0dfRU5BQkxFOwo+PiA+PiA+PiA+PiA+ICsJCQl0bXAgJj0gfkFV RF9DT05GSUdfVVBQRVJfTl9NQVNLOwo+PiA+PiA+PiA+PiA+ICsJCQl0bXAgfD0gKG5fdXAgPDwK Pj4gPj4gPj4gPj4gQVVEX0NPTkZJR19VUFBFUl9OX1NISUZUKTsKPj4gPj4gPj4gPj4gPiArCQkJ dG1wICY9Cj4+ID4+IH5BVURfQ09ORklHX0xPV0VSX05fTUFTSzsKPj4gPj4gPj4gPj4gPiArCQkJ dG1wIHw9IChuX2xvdyA8PAo+PiA+PiA+PiA+PiBBVURfQ09ORklHX0xPV0VSX05fU0hJRlQpOwo+ PiA+PiA+PiA+PiA+ICsJCX0KPj4gPj4gPj4gPj4gPiArCX0KPj4gPj4gPj4gPj4KPj4gPj4gPj4g Pj4gUGxlYXNlIGRlLWR1cGxpY2F0ZSB0aGUgY29weS1wYXN0ZSBmcm9tIHBhdGNoIDIuIEF0IHRo ZSB2ZXJ5IGxlYXN0Cj4+ID4+ID4+IHlvdQo+PiA+PiA+PiA+PiBzaG91bGQgdXNlIGEgaGVscGVy IGZvciBmaW5kaW5nIHRoZSBwYXJhbWV0ZXJzIGZyb20gdGhlIHRhYmxlLgo+PiA+PiA+PiA+Cj4+ ID4+ID4+ID4gT0suIEkgc2VlLgo+PiA+PiA+PiA+Cj4+ID4+ID4+ID4gUmVnYXJkcywKPj4gPj4g Pj4gPiBMaWJpbgo+PiA+PiA+PiA+Cj4+ID4+ID4+ID4+Cj4+ID4+ID4+ID4+ID4gKwo+PiA+PiA+ PiA+PiA+ICAJSTkxNV9XUklURShIU1dfQVVEX0NGRyhwaXBlKSwgdG1wKTsKPj4gPj4gPj4gPj4g PiAgfQo+PiA+PiA+PiA+PiA+Cj4+ID4+ID4+ID4+ID4gLS0KPj4gPj4gPj4gPj4gPiAxLjkuMQo+ PiA+PiA+PiA+PiA+Cj4+ID4+ID4+ID4+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPj4gPj4gPj4gPj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4+ ID4+ID4+ID4+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiA+PiA+PiA+PiA+ IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK Pj4gPj4gPj4gPj4KPj4gPj4gPj4gPj4gLS0KPj4gPj4gPj4gPj4gSmFuaSBOaWt1bGEsIEludGVs IE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCj4+ID4+ID4+Cj4+ID4+ID4+IC0tCj4+ID4+ ID4+IEphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgo+PiA+ PiAKPj4gPj4gLS0KPj4gPj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xv Z3kgQ2VudGVyCj4+IAo+PiAtLSAKPj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRl Y2hub2xvZ3kgQ2VudGVyCj4KPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4gU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKCi0tIApKYW5pIE5p a3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK