From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/9] drm/i915: Make derived plane state correct after crtc_enable Date: Wed, 11 Mar 2015 17:23:27 +0100 Message-ID: <20150311162327.GM3800@phenom.ffwll.local> References: <1425986129-15547-1-git-send-email-ville.syrjala@linux.intel.com> <1425986129-15547-5-git-send-email-ville.syrjala@linux.intel.com> <20150310170151.GH27526@intel.com> <20150310175713.GJ11371@intel.com> <20150311095229.GZ3800@phenom.ffwll.local> <20150311100539.GO11371@intel.com> <20150311102434.GH3800@phenom.ffwll.local> <20150311121938.GQ11371@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-we0-f174.google.com (mail-we0-f174.google.com [74.125.82.174]) by gabe.freedesktop.org (Postfix) with ESMTP id 4EBAF6E7C3 for ; Wed, 11 Mar 2015 09:21:48 -0700 (PDT) Received: by wesw55 with SMTP id w55so10430095wes.2 for ; Wed, 11 Mar 2015 09:21:47 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150311121938.GQ11371@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBNYXIgMTEsIDIwMTUgYXQgMDI6MTk6MzhQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFdlZCwgTWFyIDExLCAyMDE1IGF0IDExOjI0OjM0QU0gKzAxMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBXZWQsIE1hciAxMSwgMjAxNSBhdCAxMjowNTozOVBNICsw MjAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+IE9uIFdlZCwgTWFyIDExLCAyMDE1IGF0 IDEwOjUyOjI5QU0gKzAxMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPiA+ID4gT24gVHVlLCBN YXIgMTAsIDIwMTUgYXQgMDc6NTc6MTNQTSArMDIwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ ID4gPiA+ID4gT24gVHVlLCBNYXIgMTAsIDIwMTUgYXQgMTA6MDE6NTFBTSAtMDcwMCwgTWF0dCBS b3BlciB3cm90ZToKPiA+ID4gPiA+ID4gT24gVHVlLCBNYXIgMTAsIDIwMTUgYXQgMDE6MTU6MjRQ TSArMDIwMCwgdmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20gd3JvdGU6Cj4gPiA+ID4gPiA+ ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K PiA+ID4gPiA+ID4gPiAtc3RhdGljIHZvaWQgZGlzYWJsZV9wbGFuZV9pbnRlcm5hbChzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSkKPiA+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQgX2ludGVsX2NydGNf ZW5hYmxlX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+ID4gPiA+ID4gPiAgewo+ ID4gPiA+ID4gPiA+IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVs X3BsYW5lKHBsYW5lKTsKPiA+ID4gPiA+ID4gPiAtCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0 YXRlID0KPiA+ID4gPiA+ID4gPiAtCQlwbGFuZS0+ZnVuY3MtPmF0b21pY19kdXBsaWNhdGVfc3Rh dGUocGxhbmUpOwo+ID4gPiA+ID4gPiA+IC0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRl bF9zdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHN0YXRlKTsKPiA+ID4gPiA+ID4gPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiA+ID4gPiA+ID4gPiArCWVu dW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiA+ID4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmU7Cj4gPiA+ID4gPiA+ID4gKwljb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVy X2Z1bmNzICpjcnRjX2Z1bmNzID0KPiA+ID4gPiA+ID4gPiArCQljcnRjLT5iYXNlLmhlbHBlcl9w cml2YXRlOwo+ID4gPiA+ID4gPiA+ICAKPiA+ID4gPiA+ID4gPiAtCWludGVsX3N0YXRlLT52aXNp YmxlID0gZmFsc2U7Cj4gPiA+ID4gPiA+ID4gLQlpbnRlbF9wbGFuZS0+Y29tbWl0X3BsYW5lKHBs YW5lLCBpbnRlbF9zdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gKwlmb3JfZWFjaF9pbnRlbF9wbGFuZShk ZXYsIHBsYW5lKSB7Cj4gPiA+ID4gPiA+ID4gKwkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxw ZXJfZnVuY3MgKmZ1bmNzID0KPiA+ID4gPiA+ID4gPiArCQkJcGxhbmUtPmJhc2UuaGVscGVyX3By aXZhdGU7Cj4gPiA+ID4gPiA+ID4gKwkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSA9 Cj4gPiA+ID4gPiA+ID4gKwkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5iYXNlLnN0YXRl KTsKPiA+ID4gPiA+ID4gPiAgCj4gPiA+ID4gPiA+ID4gLQlpbnRlbF9wbGFuZV9kZXN0cm95X3N0 YXRlKHBsYW5lLCBzdGF0ZSk7Cj4gPiA+ID4gPiA+ID4gKwkJaWYgKHBsYW5lLT5waXBlICE9IHBp cGUpCj4gPiA+ID4gPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gPiArCQlpZiAoZnVuY3MtPmF0b21pY19jaGVjaygmcGxhbmUtPmJhc2UsICZzdGF0ZS0+YmFz ZSkpCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBNYXliZSBhZGQgYSBXQVJOX09OKCkgaGVyZT8g IEknbSBhc3N1bWluZyB0aGF0IHRoaXMgc2hvdWxkbid0IHJlYWxseSBiZQo+ID4gPiA+ID4gPiBw b3NzaWJsZSBzaW5jZSBpZiB0aGlzIGZhaWxzIGl0IG1lYW5zIHdlJ3ZlIGFscmVhZHkgcHJldmlv dXNseSBkb25lIGEKPiA+ID4gPiA+ID4gY29tbWl0IG9mIGludmFsaWQgc3RhdGUgb24gYSBwcmV2 aW91cyBhdG9taWMgdHJhbnNhY3Rpb24uICBCdXQgaWYgaXQKPiA+ID4gPiA+ID4gZG9lcyBzb21l aG93IGhhcHBlbiwgdGhlIFdBUk4gd2lsbCBnaXZlIHVzIGEgY2x1ZSB3aHkgdGhlIHBsYW5lIGNv bnRlbnRzCj4gPiA+ID4gPiA+IHNpbXBseSBkaWRuJ3Qgc2hvdyB1cC4KPiA+ID4gPiA+IAo+ID4g PiA+ID4gSSBjYW4gdGhpbmsgb2Ygb25lIHdheSB0byBtYWtlIGl0IGZhaWwuIFRoYXQgaXMsIGZp cnN0IHNldCBhIHNtYWxsZXIKPiA+ID4gPiA+IG1vZGUgd2l0aCB0aGUgcHJpbWFyeSBwbGFuZSAo YW5kIGZiKSBjb25maWd1cmVkIHRvIGNvdmVyIHRoYXQgZnVsbHksIGFuZAo+ID4gPiA+ID4gdGhl biBzd2l0Y2ggdG8gYSBsYXJnZXIgbW9kZSB3aXRob3V0IHJlY29uZmlndXJpbmcgdGhlIHByaW1h cnkgcGxhbmUuIElmCj4gPiA+ID4gPiB0aGUgaGFyZHdhcmUgcmVxdWlyZXMgdGhlIHByaW1hcnkg cGxhbmUgdG8gYmUgZnVsbHNjcmVlbiBpdCdsbCBmYWlsLiBCdXQKPiA+ID4gPiA+IHRoYXQgc2hv dWxkIGFjdGF1bGx5IG5vdCBiZSBwb3NzaWJsZSB1c2luZyB0aGUgbGVnYWN5IG1vZGVzZXQgQVBJ IGFzIGl0Cj4gPiA+ID4gPiBhbHdheXMgcmVjb25maWd1cmVzIHRoZSBwcmltYXJ5LCBzbyB3ZSdk IG9ubHkgaGF2ZSB0byB3b3JyeSBhYm91dCB0aGF0Cj4gPiA+ID4gPiB3aXRoIGZ1bGwgYXRvbWlj IG1vZGVzZXQsIGFuZCBmb3IgdGhhdCB3ZSBhbnl3YXkgbmVlZCB0byBjaGFuZ2UgdGhlIGNvZGUK PiA+ID4gPiA+IHRvIGRvIHRoZSBjaGVjayBzdHVmZiB1cCBmcm9udC4KPiA+ID4gPiA+IAo+ID4g PiA+ID4gU28geWVhaCwgd2l0aCB0aGUgd2F5IHRoaW5ncyBhcmUgdGhpcyBzaG91bGQgbm90IGJl IGFibGUgdG8gZmFpbC4gSSdsbAo+ID4gPiA+ID4gcmVzcGluIHdpdGggdGhlIFdBUk4uCj4gPiA+ ID4gCj4gPiA+ID4gSSBoYXZlbid0IGZ1bGx5IGR1ZyBpbnRvIHRoZSBkZXRhaWxzIGhlcmUsIGJ1 dCBhIGZldyByYW5kb21lIGNvbW1lbnRzOgo+ID4gPiA+IC0gV2hpbGUgdHJhbnNpdGlvbmluZyB3 ZSdyZSBjYWxsaW5nIHRoZSB0cmFuc2l0aW9uYWwgcGxhbmUgaGVscGVycywgd2hpY2gKPiA+ID4g PiAgIHNob3VsZCBjYWxsIHRoZSBhdG9taWNfY2hlY2sgc3R1ZmYgZm9yIHVzIG9uIHRoZSBwcmlt YXJ5IHBsYW5lLiBJZiB3ZQo+ID4gPiA+ICAgbmVlZCB0byBjYWxsIGF0b21pY19jaGVjayBvbiBv dGhlciBwbGFuZXMgdG9vICh3aHk/KQo+ID4gPiAKPiA+ID4gQmVjYXVzZSB3ZSB3YW50IHRoZSBk ZXJpdmVkIHN0YXRlIHRvIGJlIHVwZGF0ZWQgdG8gbWF0Y2ggdGhlIChwb3RlbnRpYWxseQo+ID4g PiBjaGFuZ2VkKSBjcnRjIGNvbmZpZy4gV2UgZG8gY2FsbCB0aGUgLnVwZGF0ZV9wbGFuZSgpIGhv b2sgZnJvbSB0aGUKPiA+ID4gbW9kZXNldCBwYXRoLCBidXQgdGhhdCBoYXBwZW5zIGF0IGEgdGlt ZSB3aGVuIHRoZSBwaXBlIGlzIG9mZiwgc28gb3VyCj4gPiA+IGNsaXBwaW5nIGNhbGN1bGF0aW9u cyBlbmQgdXAgc2F5aW5nIHRoZSBwbGFuZSBpcyBpbnZpc2libGUuIEkgdGhpbmsgZml4aW5nCj4g PiA+IHRoYXQgdGhlIHJpZ2h0IHdheSBwcmV0dHkgbXVjaCBpbnZvbHZlcyB0aGUgYXRvbWljIGNv bnZlcnNpb24gb2YgdGhlCj4gPiA+IG1vZGVzZXQgcGF0aC4KPiA+IAo+ID4gV2h5IGRvIHdlIGNv bmNsdWRlIGl0J3MgaW52aXNpYmxlPwo+IAo+IEJlY2F1c2UgY3J0Yy0+YWN0aXZlLiBTbyBmb3Ig dGhpcyB3ZSdsbCBiZSB3YW50aW5nIGNydGNfc3RhdGUtPmFjdGl2ZQo+IG9yIHNvbWVzdWNoIHdo aWNoIHRlbGxzIHVzIHVwZnJvbnQgd2hldGhlciB0aGUgcGlwZSBpcyBnb2luZyB0byBiZQo+IGFj dGl2ZSBvciBub3QuCj4gCj4gQnV0IHRoYXQncyBhbHNvIGJlc2lkZSB0aGUgcG9pbnQgYSBiaXQg c2luY2Ugd2Ugc3RpbGwgd2FudCB0byBtYWtlIGNhbGwKPiB0aGUgLmF0b21pY19jaGVjaygpIGZv ciBhbGwgcGxhbmVzLiBSaWdodCBub3cgd2UnZCBjYWxsIGl0IGZvciBwcmltYXJ5Cj4gKGF0IHRo ZSB3cm9uZyBwb2ludCB3cnQuIGNydGMtPmFjdGl2ZSkgYW5kIHdlIGNhbGwgaXQgZm9yIHNwcml0 ZXMgbGF0ZXIKPiB3aGVuIGNydGMtPmFjdGl2ZSBpcyBzaG93aW5nIHRoZSByaWdodCBzdGF0ZSwg YnV0IHdlIGRvbid0IGNhbGwgaXQgYXQKPiBhbGwgZm9yIGN1cnNvcnMuIFRoYXQncyB3aHkgd2Ug c3RpbGwgaGF2ZSB0aGF0IGFkLWhvYyBleHRyYSBjdXJzb3IKPiBjbGlwcGluZyBjb2RlIGluIGlu dGVsX3VwZGF0ZV9jdXJzb3IoKS4gSWYgd2UgY291bGQgbWFrZSB0aGUgZGVyaXZlZAo+IHBsYW5l IHN0YXRlIGNvcnJlY3QsIHdlIGNvdWxkIHRocm93IHRoYXQgc3R1ZmYgb3V0IGFzIHdlbGwgYW5k IHRydXN0IHRoZQo+IHJlZ3VsYXIgcGxhbmUgY2xpcHBpbmcgY2FsY3VsYXRpb25zIHRvIHRlbGwg dXMgd2hlbiB0aGUgY3Vyc29yIGhhcyBnb25lCj4gb2Zmc2NyZWVuLgo+IAo+IEl0J2xsIGFsc28g bWFrZSB0aGUgcGxhbmUgc3RhdGUgYmVoYXZlIGluIGEgY29uc2l0ZW50IG1hbm5lciB3cnQuCj4g Y3J0Yy0+YWN0aXZlLiBBcyBpdCBzdGFuZHMgeW91IHNpbXBseSBjYW4ndCB0cnVzdCB0aGUgcGxh bmUgc3RhdGUgZm9yCj4gcHJpbWFyeS9jdXJzb3IgcGxhbmVzLgo+IAo+IFNvIHRvIGZpeCBhbGwg b2YgdGhhdCwgSSBqdXN0IHdlbnQgYWhlYWQgYW5kIGNhbGxlZCBpdCBmb3IgYWxsIHBsYW5lcyBh dAo+IHRoZSBwb2ludCB3aGVyZSB3ZSBjdXJyZW50bHkgY2FsbCBpdCBmb3Igc3ByaXRlcy4gSSBj b3VsZCBoYXZlIGp1c3QgZ29uZQo+IGFoZWFkIGFuZCBjYWxsZWQgdGhlIGhpZ2hlciBsZXZlbCAu dXBkYXRlX3BsYW5lKCkgZnVuYyBmb3IgYWxsIG9mIHRoZW0KPiAoYXMgd2UgZGlkIGZvciBzcHJp dGVzIGFscmVhZHkpIGJ1dCBnb2luZyBvbmUgbGV2ZWwgbG93ZXIgYWxsb3dlZCBtZSB0bwo+IGdl dCB0aGUgcGxhbmVzIHRvIHBvcCBpbi9vdXQgYXRvbWljYWxseS4KPiAKPiBJIHRoaW5rIGl0J3Mg dGhlIGJlc3Qgd2F5IHRvIG1vdmUgZm9yd2FyZCB3aXRoIGdldHRpbmcgdGhlIHBsYW5lIGFuZCB3 bQo+IGNvZGUgaW50byBzb21lIGtpbmQgb2Ygc2FuZSBzdGF0ZS4KPiAKPiA+IElmIHdlIGNhbiBm aXggdGhlIHN0YXRlIHRvIG5vdCBkZXBlbmQKPiA+IHVwb24gdGhlIGRwbXMgc3RhdGUgdGhlbiB0 aGluZ3Mgc2hvdWxkIHdvcmsgLi4uCj4gCj4gVGhhdCdzIGEgbW9yZSBkcmFzdGljIGNoYW5nZSBh bmQgbmVlZHMgd2F5IG1vcmUgdGhvdWdodC4KClllYWgsIGJ1dCB0aGF0J3Mgd2hhdCB3ZSBuZWVk IHRvIGFpbSBmb3IgZXZlbnR1YWxseS4gU28gSSB3YW50IHRvIG1ha2UKc3VyZSB3ZSdyZSBub3Qg cnVubmluZyBpbnRvIHRoZSB3cm9uZyBkaXJlY3Rpb24gYW5kIHRoZW4gaGF2ZSB0byBiYWNrdHJh Y2sKZXZlbiBtb3JlLgoKPiA+ID4gPiAgIHRoZW4gSSB0aGluayB0aGF0Cj4gPiA+ID4gICBzaG91 bGQgYmUgZG9uZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB3aGVyZSB3ZSBkbyB0aGF0IGZvciB0 aGUgcHJpbWFyeQo+ID4gPiA+ICAgb25lLiBTaW5jZSBldmVudHVhbGx5IHdlIG5lZWQgdG8gdW5i dXJ5IHRoYXQgY2FsbCBhZ2Fpbi4KPiA+ID4gCj4gPiA+IFdpdGggbXkgcGF0Y2ggX2FsbF8gcGxh bmVzIGdldCB0aGVpciAuYXRvbWljX2NoZWNrKCkgY2FsbGVkIGluIHRoZSBzYW1lCj4gPiA+IHBs YWNlIChkdXJpbmcgcGxhbmUgZW5hYmxlIHBoYXNlIG9mIC5jcnRjX2VuYWJsZSgpKS4KPiA+ID4g Cj4gPiA+ID4gCj4gPiA+ID4gLSBJIGRvbid0IGxpa2UgZnJvYmJpbmcgc3RhdGUgb2JqZWN0cyB3 aGljaCBhcmUgY29tbWl0dGVkIChpLmUuIHVwZGF0aW5nCj4gPiA+ID4gICB2aXNpYmxlIGxpa2Ug aGVyZSksIHRoZXkncmUgc3VwcG9zZWQgdG8gYmUgaW52YXJpYW50LiBXaXRoIHByb3BlciBhdG9t aWMKPiA+ID4gPiAgIHRoZSB3YXkgdG8gZGVhbCB3aXRoIHRoYXQgaXMgdG8gZ3JhYiBhbGwgdGhl IHJlcXVpcmVkIHBsYW5lIHN0YXRlcyBhbmQKPiA+ID4gPiAgIHB1dCB0aGVtIGludG8gdGhlIGRy bV9hdG9taWNfc3RhdGUgdXBkYXRlIHN0cnVjdHVyZS4KPiA+ID4gCj4gPiA+IFdlIHJlYWxseSB3 YW50IHRvIGZyb2IgaXQgc28gdGhhdCB0aGUgZGVyaXZlZCBzdGF0ZSB3aWxsIHJlZmxlY3QKPiA+ ID4gcmVhbGl0eS4gTW9zdCBpbXBvcnRhbnRseSBzdGF0ZS0+dmlzaWJsZSBzaG91bGQgYmUgZmFs c2Ugd2hlbmV2ZXIgdGhlCj4gPiA+IHBpcGUgaXMgb2ZmLCBvdGhlcndpc2Ugd2UgY2FuJ3QgdHJ1 c3Qgc3RhdGUtPnZpc2libGUgYW5kIHdvdWxkIGFsc28gbmVlZAo+ID4gPiBnbyBsb29rIGF0IHRo ZSBjcnRjIHN0YXRlIHdoZW5ldmVyIHdlJ3JlIHRyeWluZyB0byBkZWNpZGUgaWYgdGhlIHBsYW5l Cj4gPiA+IGlzIGFjdHVhbGx5IG9uIG9yIG5vdC4KPiA+IAo+ID4gSW1vIHRoYXQncyB0aGUgY29y cmVjdCB0aGluZyB0byBkby4gQ2FsbGluZyBwbGFuZSBob29rcyB3aGVuIHRoZSBwaXBlIGlzCj4g PiBvZmYganVzdCBkb2Vzbid0IHNlZW0gbGlrZSBhIGdvb2QgaWRlYSB0byBtZS4gVG9nZXRoZXIg d2l0aCBydW50aW1lIHBtIGF0Cj4gPiBsZWFzdCwgY3J0Yy9hdG9taWMgaGVscGVycyBoYXZlIHNv bWUgImludGVyZXN0aW5nIiBoZXJpdGFnZS4KPiA+IAo+ID4gQnV0IGV2ZW4gdGhlcmUgeW91IGNh biBmaXggaXQgYnkganVzdCByZW9yZGVyaW5nIHRoZSBjb21taXRfcGxhbmVzIGNhbGwgdG8KPiA+ IHRoZSBib3R0b20sIHdoZXJlIGV2ZXJ5dGhpbmcgc2hvdWxkIGJlIG9uLiBJaXJjIHRoYXQncyBo b3cgTGF1cmVudCBmaXhlZAo+ID4gdXAgcmNhciBydW50aW1lIHBtIGlzc3VlcyB0byBhdm9pZCB0 b3VjaGluZyBwbGFuZXMgd2hlbiB0aGUgaHcgaXMgb2ZmLgo+ID4gCj4gPiBUaGUgb3RoZXIgcmVh c29uIHdoeSAtPnZpc2libGUgbXVzdCB0YWtlIGludG8gYWNjb3VudCBkcG1zIHN0YXRlIGlzIHRo YXQKPiA+IHdlJ2xsIHNjcmV3IHVwIHRoZSB3YXRlcm1hcmsgY29tcHV0YXRpb24gb3RoZXJ3aXNl LiBXaGljaCBjb3VsZCByZXN1bHQKPiA+IGludG8gYSBmYWlsdXJlIG9uIGEgc3Vic2VxdWVudCBk cG1zIG9uLCB3aGljaCBpcyBhIGJpZyBuby1uby4KPiAKPiBIbW0sIHJpZ2h0LiBTbyBmb3IgbW9z dCBjYWxjdWxhdGlvbnMgd2UnbGwganVzdCB3YW50IHRvIGlnbm9yZSB0aGUKPiBEUE1TIHN0YXRl IGFuZCBjYWxjdWxhdGUgdGhpbmdzIGFzIGlmIHRoZSBwaXBlIHdhcyBhY3RpdmUgKHNvIG9ubHkK PiBsb29raW5nIGF0IGNydGNfc3RhdGUtPmVuYWJsZWQgSSBzdXBwb3NlKS4gQnV0IHdoZW4gaXQn cyBhY3R1YWxseQo+IHRpbWUgdG8gd3JpdGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBoYXJkd2FyZSB3 ZSBuZWVkIHRvbyBjb25zaWRlcgo+IHRoZSBhY3R1YWwgc3RhdGUgb2YgdGhlIHBpcGUgYXMgd2Vs bCAoc28gdGFraW5nIERQTVMgaW50byBhY2NvdW50KS4KPiAKPiBTbyB5ZWFoLCBpZiB3ZSBkZWNv dXBsZSBwbGFuZV9zdGF0ZS0+dmlzaWJsZSBmcm9tIGNydGMtPmFjdGl2ZSBhbmQganVzdAo+IG1h a2UgaXQgY2hlY2sgY3J0Y19zdGF0ZS0+ZW5hYmxlZCB0aGVuIHBsYW5lX3N0YXRlLT52aXNpYmxl IGNhbiBiZSB1c2VkCj4gdG8gZG8gYWxsIHRoZSBjbGlwcGluZywgYW5kIHVwZnJvbnQgcGVyLXBp cGUgd20gY2FsY3VsYXRpb25zLiBCdXQgd2hlbgo+IGl0IGNvbWVzIHRpbWUgdG8gYXBwbHkgdGhl IHBsYW5lIHN0YXRlIG9yIHdhdGVybWFya3MgdG8gdGhlIGhhcmR3YXJlIHdlCj4gbmVlZCB0byBj aGVjayB0aGUgYWN0dWFsIHBpcGUgc3RhdGUuCj4gCj4gU28gZ29vZCBwbGFuLCBidXQgbmVlZHMg cXVpdGUgYSBiaXQgb2Ygd29yayB0byBnZXQgdXMgdGhlcmUuCj4gCj4gPiA+IEFzIGZvciB0aGUg ZGlyZWN0IHN0YXRlIGZyb2JiaW5nLCB3ZSBjb3VsZCBtYWtlIGEgY29weSBJIGd1ZXNzIGFuZCBm cm9iCj4gPiA+IHRoYXQgaW5zdGVhZCwgYW5kIHRoZW4gY29tbWl0IGl0LiBCdXQgdGhhdCBzZWVt cyBhIGxvdCBvZiB3b3JrIGZvciBubyBnYWluLgo+ID4gCj4gPiBUaGF0J3MgaG93IGF0b21pYyBp cyBzdXBwb3NlZCB0byB3b3JrIHJlYWxseS4gQnV0IHdlIGNhbid0IG1ha2UgYSBjb3B5IGluCj4g PiB0aGUgY3J0Y19lbmFibGUgcmVhbGx5IHNpbmNlIHRoYXQgc2hvdWxkIG5ldmVyIGZhaWwsIGFu ZCB3ZSBjYW4ndCBwdXNoIGl0Cj4gPiBvdXQgc2luY2Ugd2UgbWlnaHQgbm90IGhvbGQgYWxsIHRo ZSBsb2Nrcy4gVGhhdCdzIGFsbCBvZmNvdXJzZSBmb3IgdGhlCj4gPiBhdG9taWMgZW5kLXN0YXRl LCBidXQgSSB0aGluayBldmVuIGFzIGFuIGludGVyaW0gZGV0b3VyIHRoaXMgYXBwcm9hY2ggaGVy ZQo+ID4gZG9lc24ndCBmZWVsIGxpa2UgYSBnb29kIGFwcHJvYWNoIHRvIG1lLgo+IAo+IFdlJ3Jl IGdvaW5nIHRvIG5lZWQgdGhlICJkZXRvdXIiLiBUaGF0IGlzLCB3ZSBkbyBuZWVkIHRvIGNhbGwg dGhlCj4gLmF0b21pY19jaGVjaygpIGZvciBhbGwgcGxhbmVzIGF0IG1vZGVzZXQgdGltZS4gQnV0 IHRyeWluZyB0byBkbyBpdAo+IGVhcmxpZXIgd2lsbCBtZWFuIGNoYW5naW5nIGFsbCB0aGUgcGxh bmUgdmlzaWJpbGl0eSBjYWxjdWxhdGlvbnMgdG8KPiBjb25zaWRlciB0aGUgcGlwZSBhY3RpdmUg d2hlbmV2ZXIgY3J0Y19zdGF0ZS0+ZW5hYmxlZD09dHJ1ZSwgYW5kCj4gdGhhdCdzIGdvaW5nIHRv IHJlcXVpcmUgY2FyZWZ1bCByZXZpZXcgb2YgdGhlIGNvZGUgdG8gbWFrZSBzdXJlIHdlCj4gZG9u J3QgdHJ1c3QgdGhlIHBsYW5lIHZpc2liaWxpdHkvY2xpcHBpbmcgaW5mb3JtYXRpb24gdG9vIG11 Y2guIEFuZAo+IHRoZSBzYW1lIGdvZXMgZm9yIHRoZSB3YXRlcm1hcmsgY29kZS4KPiAKPiBTbyBJ IHN0aWxsIHRoaW5rIHRoaXMgaXMgdGhlIHJpZ2h0IHN0ZXAgdG8gbW92ZSBmb3J3YXJkLiBJdCds bCBhbGxvdyB1cwo+IHRvIHVzZSB0aGUgZGVyaXZlZCBwbGFuZSBzdGF0ZSBjb3JyZWN0bHkgKGFu ZCBzaW5jZSBpdCBzdGlsbCBkZXBlbmRzIG9uCj4gY3J0Yy0+YWN0aXZlIHdlIHdvbid0IHJpc2sg ZW5hYmxpbmcgcGxhbmVzIHdoZW4gdGhlIHBpcGUgaXMgb2ZmKSwgd2hpY2gKPiBhbGxvd3MgdGhl IHBsYW5lIGFuZCB3bSBjb2RlIHRvIGV2b2x2ZSBpbiBzbWFsbCBzdGVwcywgcmF0aGVyIHRoYW4g c29tZQo+IG1hc3MgY29udmVyc2lvbi4gSSB0aGluayB0aGVyZSBoYXZlIGJlZW4gbW9yZSB0aGFu IGVub3VnaCByZWdyZXNzaW9ucwo+IHJlY2VudGx5LgoKT2ssIG1ha2VzIHNlbnNlLiBJdCdsbCBt ZWFuIHRoYXQgdGhlcmUncyBtb3JlIHN0ZXBzIG92ZXJhbGwgdGhvdWdoLCB3aGljaAptaWdodCBs ZWFkIHRvIG1vcmUgcmVncmVzc2lvbnMgb3ZlcmFsbCwganVzdCBzcHJlYWQgb3V0IGEgYml0LiBB bmQgd2UKZGVmaW5pdGVseSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSB1bndyYXAgdGhpcyBkZXRvdXIg YWdhaW4uIEFzIGxvbmcgYXMKQW5kZXIvTWF0dC95b3UgY2FuIHJvdWdobHkgYWdyZWUgb24gYSBw bGFuIGZvcndhcmQgSSdsbCBnbyBhbG9uZyB3aXRoIGl0LgoKRm9yIGF0b21pYyBpbiB0aGUgZW5k IEkgdGhpbmsgdGhlIGltcG9ydGFudCBiaXQgcmVhbGx5IGZyb20gbXkgcG92IGlzIHRoYXQKd2Ug bXVzdCBub3QgZGVwZW5kIGluIGFueSB3YXkgdXBvbiBuZWl0aGVyIGludGVsX2NydGMtPmFjdGl2 ZSBub3IKY3J0Y19zdGF0ZS0+YWN0aXZlIGluIHRoZSB3YXRlcm1hcmsgY29tcHV0YXRpb24gY29k ZS4gT2YgY291cnNlIHRoYXQgbWVhbnMKd2UgbmVlZCB0byBkbyBzb21lIHVudGFuZ2xpbmcgdG8g bWFrZSBzdXJlIHRoYXQgd2UgY2FuIGNvcnJlY3RseSBzaHV0IGRvd24KZXZlcnl0aGluZyBpZiBj cnRjX3N0YXRlLT5hY3RpdmUgaXNuJ3Qgc2V0LgoKQWxzbyBkbyB3ZSBoYXZlIGlndCB0ZXN0Y2Fz ZXMgZm9yIHRoZSByZWdyZXNzaW9ucyB0aGlzIHBhdGNoIHNlcmllcyBmaXhlcz8KYXRvbWljIGlz IHJlYWxseSBjb21wbGV4LCBJIHRoaW5rIHdlIHNob3VsZCBmaWxsIG91dCBnYXBzIGFzIHdlIGdv IGFsb25nLgpTbyBpZiB3ZSBoYXZlIHRoZW0gd2UgbmVlZCB0byBhZGQgdGhlbSB0byB0aGUgbGlz dCAtIERhbmllbCBTdG9uZSBpcwpzaW5nZWQgdXAgdG8gd29yayB0aGF0IG9uZSBkb3duIDstKQoK VGhhbmtzLCBEYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVs IENvcnBvcmF0aW9uCis0MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK