From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/5] drm/amdgpu: Wait for end of last waited-for vblank before programming flip Date: Tue, 14 Jun 2016 10:06:04 +0200 Message-ID: <20160614080604.GO1338@phenom.ffwll.local> References: <1465549033-16561-1-git-send-email-michel@daenzer.net> <1465549033-16561-5-git-send-email-michel@daenzer.net> <20160610144312.GF3363@phenom.ffwll.local> <20160613080618.GR3363@phenom.ffwll.local> <20160613140632.GU3363@phenom.ffwll.local> <20160614055341.GM1338@phenom.ffwll.local> <92c76068-94b6-864b-96b5-7b36b32127e5@daenzer.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x233.google.com (mail-wm0-x233.google.com [IPv6:2a00:1450:400c:c09::233]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3C74F6E240 for ; Tue, 14 Jun 2016 08:06:09 +0000 (UTC) Received: by mail-wm0-x233.google.com with SMTP id v199so109014639wmv.0 for ; Tue, 14 Jun 2016 01:06:09 -0700 (PDT) Content-Disposition: inline In-Reply-To: <92c76068-94b6-864b-96b5-7b36b32127e5@daenzer.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Michel =?iso-8859-1?Q?D=E4nzer?= Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdW4gMTQsIDIwMTYgYXQgMDQ6MjU6MjhQTSArMDkwMCwgTWljaGVsIETDpG56ZXIg d3JvdGU6Cj4gT24gMTQuMDYuMjAxNiAxNDo1MywgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+IE9u IFR1ZSwgSnVuIDE0LCAyMDE2IGF0IDExOjA5OjEwQU0gKzA5MDAsIE1pY2hlbCBEw6RuemVyIHdy b3RlOgo+ID4+IE9uIDA2LzEzLzE2IDIzOjA2LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+PiBP biBNb24sIEp1biAxMywgMjAxNiBhdCAwNTo1ODoyOVBNICswOTAwLCBNaWNoZWwgRMOkbnplciB3 cm90ZToKPiA+Pj4+IE9uIDA2LzEzLzE2IDE3OjA2LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+ Pj4+IE9uIE1vbiwgSnVuIDEzLCAyMDE2IGF0IDEwOjU0OjM3QU0gKzA5MDAsIE1pY2hlbCBEw6Ru emVyIHdyb3RlOgo+ID4+Pj4+PiBPbiAxMC4wNi4yMDE2IDIzOjQzLCBEYW5pZWwgVmV0dGVyIHdy b3RlOgo+ID4+Pj4+Pj4gT24gRnJpLCBKdW4gMTAsIDIwMTYgYXQgMDU6NTc6MTJQTSArMDkwMCwg TWljaGVsIETDpG56ZXIgd3JvdGU6Cj4gPj4+Pj4+Pj4gRnJvbTogTWljaGVsIETDpG56ZXIgPG1p Y2hlbC5kYWVuemVyQGFtZC5jb20+Cj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBJZiB1c2Vyc3BhY2Ug d2FudHMgYSBwYWdlIGZsaXAgdG8gdGFrZSBlZmZlY3QgZHVyaW5nIHZibGFuayBzZXF1ZW5jZSBu LAo+ID4+Pj4+Pj4+IGl0IGhhcyB0byB3YWl0IGZvciB2Ymxhbmsgc2Vxbm8gbi0xIGJlZm9yZSBj YWxsaW5nIHRoZQo+ID4+Pj4+Pj4+IERSTV9JT0NUTF9NT0RFX1BBR0VfRkxJUCBpb2N0bC4KPiA+ Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IFRoaXMgY2hhbmdlIG1ha2VzIHN1cmUgdGhhdCB3ZSBkbyBub3Qg cHJvZ3JhbSB0aGUgZmxpcCB0byB0aGUgaGFyZHdhcmUKPiA+Pj4+Pj4+PiBiZWZvcmUgdGhlIGVu ZCBvZiB2Ymxhbmsgc2Vxbm8gbi0xIGluIHRoaXMgY2FzZSwgdG8gcHJldmVudCB0aGUgZmxpcAo+ ID4+Pj4+Pj4+IGZyb20gdGFraW5nIGVmZmVjdCB0b28gZWFybHkuCj4gPj4+Pj4+Pj4KPiA+Pj4+ Pj4+PiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlIERSTV9JT0NUTF9NT0RFX1BBR0VfRkxJUCBp b2N0bCBpcyBjYWxsZWQKPiA+Pj4+Pj4+PiBkdXJpbmcgdmJsYW5rLCBidXQgdXNlcnNwYWNlIGRp ZG4ndCB3YWl0IGZvciB0aGUgY3VycmVudCB2Ymxhbmsgc2Vxbm8KPiA+Pj4+Pj4+PiBiZWZvcmUs IHRoaXMgY2hhbmdlIHdvdWxkIHN0aWxsIGFsbG93IHRoZSBmbGlwIHRvIGJlIHByb2dyYW1tZWQg ZHVyaW5nCj4gPj4+Pj4+Pj4gdGhlIGN1cnJlbnQgdmJsYW5rIHNlcW5vLgo+ID4+Pj4+Pj4KPiA+ Pj4+Pj4+IFRoaXMganVzdCBzb3VuZHMgbGlrZSB5b3UncmUgc2VuZGluZyB2YmxhbmsgZXZlbnRz IG91dCBhIGJpdCB0b28gZWFybHkuCj4gPj4+Pj4+PiBBbmQgd2F0Y2hpbmcgdmJsYW5rIHdhaXRz IHRoYXQgdXNlcnNwYWNlIGRvZXMgd29ya3MsIGJ1dCBpdCdzIGZyYWdpbGUsCj4gPj4+Pj4+PiBh ZGQtaG9jIGFuZCBJIGRvbid0IHJlYWxseSBqdW1wIGluIGpveSBhYm91dCBhZGRpbmcgdGhhdCB0 byB0aGUgdmJsYW5rCj4gPj4+Pj4+PiBjb3JlLiBJcyB0aGVyZSBubyB3YXkgeW91IGNhbiBhZGp1 c3Qgc2VuZGluZyBvdXQgdGhlIHZibGFuayBldmVudHMKPiA+Pj4+Pj4+IHNpbWlsYXJseSwgdG8g bWFrZSBzdXJlIHVzZXJzcGFjZSBjYW4gbmV2ZXIgc25lYWsgaW4gYSBwYWdlZmxpcCB0b28gZWFy bHk/Cj4gPj4+Pj4+Cj4gPj4+Pj4+IFdoYXQgeW91IGNhbGwgInRvbyBlYXJseSIgaXMgYWN0dWFs bHkgImR1cmluZyB0aGUgdmVydGljYWwgYmxhbmsgcGVyaW9kCj4gPj4+Pj4+IHdhaXRlZCBmb3Ii LiBJTUhPIG9ubHkgbm90aWZ5aW5nIHVzZXJzcGFjZSBvZiBhIHZlcnRpY2FsIGJsYW5rIHBlcmlv ZAo+ID4+Pj4+PiB3aGVuIGl0J3MgYWxyZWFkeSBvdmVyIHdvdWxkIGRlZmVhdCB0aGUgcHVycG9z ZS4KPiA+Pj4+Pgo+ID4+Pj4+IEFmYWl1aSB0aGUgcnVsZXMgYXJlOgo+ID4+Pj4+IC0gVGhlIHRp bWVzdGFtcCBmb3IgdmJsYW5rIGV2ZW50IG5lZWRzIHRvIGFncmVlIHdpdGggd2hhdGV2ZXIgb21s X3N5bmMKPiA+Pj4+PiAgIHJlcXVyaWVzLgo+ID4+Pj4+IC0gVGhlIGV2ZW50IGRlbGl2ZXJ5IGl0 c2VsZiBuZWVkcyB0byBiZSBjb25zaXN0ZW50IHdpdGggd2hhdCBwYWdlX2ZsaXAKPiA+Pj4+PiAg IHRha2VzLCBpLmUuIGlmIHVzZXJzcGFjZSBzZWVzIGFuIGV2ZW50IGFuZCBpbW1lZGlhdGVseSBp c3N1ZXMgYQo+ID4+Pj4+ICAgcGFnZV9mbGlwIHRoZW4gaXQgc2hvdWxkIG5vdCBiZSBhYmxlIHRv IGhpdCB0aGUgc2FtZSB2Ymxhbmsgd2l0aCB0aGF0Cj4gPj4+Pj4gICBwYWdlZmxpcC4KPiA+Pj4+ PiAtIFRoZSBldmVudCBuZWVkcyB0byBiZSBhZnRlciB0aGUgb2xkIGJ1ZmZlcnMgYXJlIG5vdCBs b25nZXIgdXNlZCBhbmQgY2FuCj4gPj4+Pj4gICBiZSByZXVzZWQgZm9yIHJlbmRlcmluZy4KPiA+ Pj4+Cj4gPj4+PiBUaGF0J3Mgb25seSByZWxldmFudCBmb3IgRFJNX0lPQ1RMX01PREVfUEFHRV9G TElQLCBub3QKPiA+Pj4+IERSTV9JT0NUTF9XQUlUX1ZCTEFOSy4KPiA+Pj4KPiA+Pj4gWXVwLCBt aXhlZCB0aGF0IHVwLgo+ID4+Pgo+ID4+Pj4+IC0gVGhlcmUncyBubyByZXF1aXJlbWVudCBhdCBh bGwgdGhhdCB0aGUgZXZlbnQgZ2V0cyBkZWxpdmVyZWQgYXQgYQo+ID4+Pj4+ICAgc3BlY2lmaWMg cG9pbnQgaW4gdGhlIHZibGFuaywgaGFyZHdhcmUgaXMgdG9vIGRpZmZlcmVudCBmb3IgdGhhdCB0 byB3b3JrCj4gPj4+Pgo+ID4+Pj4gQXMgdGhlIG5hbWUgaW1wbGllcywgdGhlIHB1cnBvc2Ugb2Yg RFJNX0lPQ1RMX1dBSVRfVkJMQU5LIGlzIHRvIHdhaXQgZm9yCj4gPj4+PiBhIHZlcnRpY2FsIGJs YW5rIHBlcmlvZC4gSWYgdGhhdCBkb2Vzbid0IHdvcmsgYXMgaW50ZW5kZWQgd2l0aCBzb21lCj4g Pj4+PiBoYXJkd2FyZSwgdGhhdCdzIHRvdWdoIGx1Y2sgYnV0IG5vdCByZWFsbHkgbXkgcHJvYmxl bS4gOikKPiA+Pj4+Cj4gPj4+Pj4gICAtIHRoYXQga2luZCBvZiBwcmVjaXNpb24gaXMgd2h5IHdl IGhhdmUgYSBzZXBhcmF0ZSB0aW1lc3RhbXAuCj4gPj4+Pgo+ID4+Pj4gSSdtIGFmcmFpZCB0aGlz IGxhc3QgaXRlbSBnaXZlcyBhd2F5IHRoYXQgeW91J3JlIHJlbGF0aXZlbHkgbmV3IHRvIHRoaXMK PiA+Pj4+IGNvZGUuIDspIFRoZSB0aW1lc3RhbXAgd2FzIG9yaWdpbmFsbHkgbGl0ZXJhbGx5IGp1 c3QgdGhlIGN1cnJlbnQKPiA+Pj4+IGdldHRpbWVvZmRheSB3aGVuIHRoZSB3YWl0IGZpbmlzaGVk ICh0aGUgb3JpZ2luYWwgRFJNX0lPQ1RMX1dBSVRfVkJMQU5LCj4gPj4+PiBpb2N0bCBkaWRuJ3Qg aGF2ZSBhbnkgYXN5bmNocm9ub3VzIG5vdGlmaWNhdGlvbiBmdW5jdGlvbmFsaXR5KS4gSXQgd2Fz Cj4gPj4+PiByZWxhdGl2ZWx5IHJlY2VudGx5IHRoYXQgTWFyaW8gY2hhbmdlZCB0aGUgdGltZXN0 YW1wIHRvIGNvcnJlc3BvbmQgdG8KPiA+Pj4+IHRoZSBlbmQgb2YgdGhlIHZlcnRpY2FsIGJsYW5r IHBlcmlvZCAvIHN0YXJ0IG9mIHNjYW5vdXQgb2YgdGhlIG5leHQKPiA+Pj4+IGZyYW1lLCBwcmVz dW1hYmx5IGR1ZSB0byB5b3VyIGZpcnN0IHJ1bGUgYWJvdmUuCj4gPj4+Cj4gPj4+IE1vc3QgaHcg anVzdCBzZWVtcyB0byBnaXZlIHlvdSBhIHZibGFuayBpbnRlcnJ1cHQgc29tZXdoZXJlIGluIHRo ZSB2YmxhbmsKPiA+Pj4gYXJlLCBvciBzb21ldGltZXMgZXZlbiBzbGlnaHRseSBiZWZvcmUgdGhh dC4KPiA+Pgo+ID4+IE91ciBoYXJkd2FyZSB0ZW5kcyB0byB0cmlnZ2VyIHRoZSB2YmxhbmsgaW50 ZXJydXB0IGVhcmx5LCBidXQgaXQncyBzdGlsbAo+ID4+IHVzZWZ1bCBpbiB0aGF0IGRyYXdpbmcg b3BlcmF0aW9ucyBzdWJtaXR0ZWQgYWZ0ZXIgaXQgY2Fubm90IGFmZmVjdCB0aGUKPiA+PiBwcmV2 aW91c2x5IHNjYW5uZWQgb3V0IGZyYW1lLgo+ID4+Cj4gPj4+IEFsc28gdGhlcmUncyBzY2hlZHVs aW5nIGppdHRlci4KPiA+Pgo+ID4+IFN1cmUsIGJ1dCB0aGVyZSdzIGEgYmlnIGRpZmZlcmVuY2Ug YmV0d2VlbiAibm8gZ3VhcmFudGVlIHRoYXQgd2UncmUKPiA+PiBzdGlsbCBpbiB2YmxhbmsiIHZz ICJndWFyYW50ZWUgdGhhdCB3ZSdyZSBubyBsb25nZXIgaW4gdmJsYW5rIi4KPiA+Pgo+ID4+Cj4g Pj4+Pj4gSSBhc3N1bWUgeW91J3JlIGdvYWwgaXMgdG8gbm90IGRlbGF5IHBhZ2VfZmxpcHMgdW5l Y2Vzc2FyaWx5LCB3aXRob3V0Cj4gPj4+Pj4gYnJlYWtpbmcgcmVxdWlyZW1lbnQgMiBoZXJlLiBJ bW8gYSBzaW1wbGVyIGZpeCB3b3VsZCBiZSB0byBkZWxheSB0aGUKPiA+Pj4+PiB2YmxhbmsgaGFu ZGxpbmcgdG8gZW5kIG9mIHZibGFuay4gRml4ZXMgZXZlcnl0aGluZyB3aXRob3V0IGhhY2tzLCBb Li4uXQo+ID4+Pj4KPiA+Pj4+IEV4Y2VwdCBpdCBicmVha3MgdGhlIG9yaWdpbmFsIHB1cnBvc2Ug b2YgdGhlIHdhaXQgZm9yIHZibGFuawo+ID4+Pj4gZnVuY3Rpb25hbGl0eSwgd2hpY2ggaXMgdG8g d2FpdCBmb3IgdGhlIGJlZ2lubmluZyBvZiBhIHZlcnRpY2FsIGJsYW5rCj4gPj4+PiBwZXJpb2Qu IFswXSBZb3UncmUgZm9jdXNpbmcgdG9vIG11Y2ggb24gcGFnZSBmbGlwcyBhbmQgc3VnZ2VzdGlu ZyB0bwo+ID4+Pj4gdGhyb3cgb3V0IHRoZSB2YmxhbmsgYmFieSB3aXRoIHRoZSBiYXRod2F0ZXIu IEkgcmVhbGx5IGRvbid0IHNlZSB0aGUgYmlnCj4gPj4+PiBpc3N1ZSB3aGljaCB3b3VsZCBqdXN0 aWZ5IHRoYXQuCj4gPj4+Pgo+ID4+Pj4KPiA+Pj4+IFswXSBBcyBhbiBhbmFsb2d5LCBob3cgdXNl ZnVsIHdvdWxkIGUuZy4gY2FsZW5kYXIgbm90aWZpY2F0aW9ucyBiZSBpZgo+ID4+Pj4gdGhleSBh cnJpdmVkIGF0IHRoZSBlbmQgb2YgdGhlIGV2ZW50cyB0aGV5J3JlIGFib3V0PyAiSGV5LCB0aGF0 IG1lZXRpbmcKPiA+Pj4+IHlvdSB3ZXJlIHN1cHBvc2VkIHRvIGF0dGVuZD8gSXQganVzdCBmaW5p c2hlZCEiCj4gPj4+Cj4gPj4+IE9rLCB3aGF0IGV4YWN0bHkgaXMgdGhlIHVzZS1jYXNlIGZvciB3 YWl0aW5nIGZvciB2YmxhbmtzIF93aXRob3V0Xwo+ID4+PiBzY2hlZHVsaW5nIGEgZmxpcCBhZnRl cndhcmRzPyBBdCBsZWFzdCBpbiBkcm0gdGhlIHJ1bGUgaXMgdGhhdCBBQkkgaXMgd2hhdAo+ID4+ PiB1c2Vyc3BhY2Ugb2JzZXJ2ZXMgYW5kIGFjdHVhbGx5IGNhcmVzIGFib3V0Lgo+ID4+Cj4gPj4g RS5nLjogSW4gY2FzZXMgd2hlcmUgcGFnZSBmbGlwcGluZyBjYW5ub3QgYmUgdXNlZCwgWG9yZyAv IHRoZSBERFggZHJpdmVyCj4gPj4gd2FpdHMgZm9yIHRoZSB0YXJnZXQgdmVydGljYWwgYmxhbmsg cGVyaW9kIGJlZm9yZSBlbWl0dGluZyB0aGUgZHJhd2luZwo+ID4+IGNvbW1hbmRzIGZvciBhIGJ1 ZmZlciBzd2FwIG9wZXJhdGlvbi4gSWYgdGhlIHZibGFuayBub3RpZmljYXRpb24gb25seQo+ID4+ IGFycml2ZXMgd2hlbiB0aGUgdmVydGljYWwgYmxhbmsgcGVyaW9kIGlzIGFscmVhZHkgb3Zlciwg dGhpcyBpcyB2ZXJ5Cj4gPj4gbGlrZWx5IHRvIHJlc3VsdCBpbiB0ZWFyaW5nLgo+ID4+Cj4gPj4g U29tZSBYIGNvbXBvc2l0b3JzIGFuZCBBRkFJSyBldmVuIGFwcGxpY2F0aW9ucyBzdWNoIGFzIG1l ZGlhIHBsYXllcnMgY2FuCj4gPj4gdXNlIERSTV9JT0NUTF9XQUlUX1ZCTEFOSyBzaW1pbGFybHku IE9idmlvdXNseSBpdCdzIG5vdCBpbnRlbmRlZCB0byBiZQo+ID4+IHVzZWQgZGlyZWN0bHkgbGlr ZSB0aGF0LCBidXQgbm9uZXRoZWxlc3MgaXQgaXMuCj4gPiAKPiA+IElzIHRoZXJlIHJlYWxseSBh bnl0aGluZyB1c2luZyBpdCBsaWtlIHRoYXQgb3V0c2lkZSBvZiAtYXRpPwo+IAo+IFllcy4gV2l0 aCBEUkkzL1ByZXNlbnQsIGl0J3MgZHJpdmVyIGluZGVwZW5kZW50IGNvZGUgaW4KPiB4c2VydmVy L3ByZXNlbnQvLiBXaXRoIERSSTIsIGl0J3MgdGhlb3JldGljYWxseSB1cCB0byB0aGUgRERYIGRy aXZlciwKPiBidXQgYWxsIGRyaXZlcnMgc2VlbSB0byBoYXZlIGJhc2ljYWxseSB0aGUgc2FtZSBs b2dpYzsgdGhlIG1vZGVzZXR0aW5nCj4gZHJpdmVyIGNlcnRhaW5seSBkb2VzLgoKSG0sIGRpZG4n dCBrbm93IHRoYXQgZXZlcnlvbmUgZG9lcyB0aGF0LiBTZWVtZWQgdG8gc2lsbHkgYW4gaWRlYSB0 byB3YXN0ZQphbGwgdGhhdCBncHUgYmFuZHdpZHRoIGJ5IHdhaXRpbmcgZm9yIHZibGFuayAuLi4K Cj4gPiBJIGRpZG4ndCBrbm93IHRoYXQgd2UgcGFzcyB2Ymxhbmsgd2FpdHMgdG8gWCBjbGllbnRz LiBFaXRoZXIgd2F5IGFubm95aW5nLAo+ID4gc2luY2UgaXQgbWVhbnMgeW91IG5lZWQgdG8ga2Vl cCB0aGluZ3Mgd29ya2luZyBsaWtlIHRoaXMgZm9yIGFtZCBkcml2ZXJzCj4gPiBmb3JldmVyLgo+ IAo+IFBsZWFzZSBkb24ndCB0cnkgdG8gc2luZ2xlIG91dCBvdXIgZHJpdmVycywgaXQgc2VlbXMg bGlrZSByYXRoZXIgeW91cgo+IGRyaXZlciBpcyB0aGUgb2RkIG1hbiBvdXQgaW4gdGhpcyBjYXNl LgoKSG0sIHdoeS93aGVyZSBpcyBpOTE1IHNwZWNpYWw/IEl0IHNvdW5kcyBsaWtlIGl0J3MgdmVy eSBtdWNoIG5vdCwgaXQncwpqdXN0IHRoYXQgbm9ybWFsIHBhZ2VfZmxpcHMgKGkuZS4gbmVpdGhl ciBhc3luYyBub3IgdmFyaWFibGUgcmVmcmVzaCByYXRlKQpnZXQgY29tbWl0dGVkIGF0b21pY2Fs bHkgYnkgdGhlIGh3IGF0IHRoZSBleGFjdCBzYW1lIHRpbWUgdGhlIHZibGFuayBpcnEKZmlyZXMu IEFuZCBpZiB5b3UgbG9vayBhdCB0aGUgbWV0cmljIHBpbGUgb2YgYXRvbWljIGRyaXZlcnMgd2Ug bm93IGhhdmUsCnRoZXkgYXQgbGVhc3Qgc2VlbSB0byBhbGwgd29yayBsaWtlIHRoYXQuIEFmYWlr IGFtZCBodyBzZWVtcyB0byBiZSB0aGUKZXhjZXB0aW9uIHdpdGggYmVpbmcgYWJsZSB0byBtYWtl IGEgZmxpcCBzdGlsbCBoYXBwZW4gYWZ0ZXIgdGhlIHZibGFuawpmaXJlZC4gSSBkaWRuJ3QgY2hl Y2sgbm91dmVhdSwgbWF5YmUgdGhhdCBvbmUgaXMgc2ltaWxhci4KCj4gPiBBZmFpayBvdGhlcnMg ZG9uJ3QgdXNlIGl0IGxpa2UgdGhhdCwgYXQgbGVhc3Qgbm90IG9uIGludGVsLgo+IAo+IFVYQSBo YXMgdGhlIHNhbWUgRFJJMiBsb2dpYywgbm90IHN1cmUgYWJvdXQgU05BLgo+IAo+IAo+ID4gQW55 d2F5LCBJIHN0aWxsIGRvbid0IGxpa2UgYWRkaW5nIGhhY2tzIHRvIGRybSBjb3JlIGxpa2UgdGhp cyBmb3IKPiA+IHNpbmdsZS11c2UgaW4ganVzdCBvbmUgZHJpdmVyLgo+IAo+IFRoZSBkcml2ZXIg Y2hhbmdlcyB3aWxsIGJlIHBvcnRlZCB0byByYWRlb24gb2YgY291cnNlLCBhbmQgd2h5IGNvdWxk bid0Cj4gaXQgYmUgdXNlZCBieSBvdGhlciBkcml2ZXJzIGZvciB0aGUgc2FtZSBwdXJwb3NlPwoK QmVjYXVzZSBvdGhlciBkcml2ZXJzIHdvcmsgYWxyZWFkeSwgc2VlIGFib3ZlLiBBdCBsZWFzdCBh bGwgdGhlIGF0b21pYwpkcml2ZXJzIHdpbGwgd29yayBsaWtlIHRoYXQsIG9yIGF0IGxlYXN0IHNl ZW0gdG8gYmUgd3JpdHRlbiB0byB3b3JrIGxpa2UKdGhhdC4gU28gYWZhaWNzIGl0J3MgYW1kIGRy aXZlcnMgb25seS4KCj4gPiBkcm1faXJxLmMgaXMgYWxyZWFkeSByZWFsbHkgY29tcGxleCBhbmQg c3VmZmVyaW5nIGJhZGx5IGZyb20gdGhpcywgYW5kCj4gPiB3ZSdyZSBwcmV0dHkgY2xvc2UgdG8g YWx3YXlzIGFjY2lkZW50YWxseSBicmVha2luZyBzb21ldGhpbmcgd2hlbiB0b3VjaGluZyBpdC4K PiAKPiBJIGp1c3QgZG9uJ3Qgc2VlIGhvdyBteSBjaGFuZ2UgbWFrZXMgdGhpcyBhbnkgd29yc2Uu CgpJdCdzIGRlYXRoIGJ5IGEgdGhvdXNhbmQgY3V0cy4gT2YgY291cnNlIG5vbmUgb2YgdGhlIGlu ZGl2aWR1YWwgb25lcyBhcmUKYmFkIGFsb25lLgoKPiA+IEhvdyBiYWQgd291bGQgaXQgcmVhbGx5 IGJlIHRvIGp1c3QgYWx3YXlzIGRlbGF5IHRoZSBwYWdlX2ZsaXAgcGFzdCB2Ymxhbms/Cj4gCj4g SW4gdGhlIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSBjYXNlIGl0IGNvdWxkIGJlIHByZXR0eSBiYWQs IGJhc2ljYWxseQo+IGRyb3BwaW5nIHRvIHRoZSBtaW5pbXVtIHJlZnJlc2ggcmF0ZS4KClZhcmlh YmxlIHJlZnJlc2ggcmF0ZSBpcyBlbnRpcmVseSB1bmRlZmluZWQgcmlnaHQgbm93IGluIGttcy4g V2UgcHJvYmFibHkKbmVlZCBhbiBlbnRpcmVseSBuZXcgc2V0IG9mIGZsYWdzIHRvIG1ha2UgdGhh dCB3b3JrIHNtb290aGx5LiBBbmQgSSB0aGluawpldmVuIGZvciB2YXJpYWJsZSByYXRlIHJlZnJl c2ggeW91IHdhbnQgdGhlIGN1cnJlbnQgdmJsYW5rIHN0dWZmIHRvIHRpY2sKYXMgcmVndWxhcmx5 IGFzIHBvc3NpYmxlLiBBbmQgdGhlbiB5b3VyIHBhZ2VfZmxpcCAod2l0aG91dCBzcGVjaWFsIGZs YWdzCndvdWxkIG9ubHkgbmVlZCB0byBtYWtlIHN1cmUgaXQncyBub3QgZmFzdGVyIHRoYW4gdGhh dCkuIFZhcmlhYmxlIHJlZnJlc2gKcmF0ZSBwYWdlX2ZsaXBzIHByb2JhYmx5IG5lZWQgYSBzcGVj aWFsIGZsYWcsIG1heWJlIGV2ZW4gdGhlIHNhbWUKZG9udC10ZWFyLWJ1dC1mbGlwLWFzYXAgZmxh Zy4KCj4gPiBJZiB0aGF0J3Mgbm90IGdvb2QgZW5vdWdoIEknZCBzYXkgd2Ugc2hvdWxkIGFkZCBh Cj4gPiBmYXN0ZXItdGhhbi12YmxhbmstYnV0LXN0aWxsLXN5bmNlZCBwYWdlX2ZsaXAgZmxhZy4g VGhlbiB1c2Vyc3BhY2UgY291bGQKPiA+IHRlbGwgeW91IGV4YWN0bHkgd2hldGhlciB5b3Ugc2hv dWxkIGFsd2F5cyB3YWl0IChubyBmbGFncyksIG9yIG5ldmVyIHdhaXQKPiA+ICh3aXRoIHRoaXMg bmV3IGZsYWcpLgo+IAo+IFRoYXQgd291bGQgYmUgYW4gaW5mZXJpb3Igc29sdXRpb24gY29tcGFy ZWQgdG8gbXkgc2VyaWVzLCBlLmcuOiBJZgo+IHVzZXJzcGFjZSBjYWxscyBEUk1fSU9DVExfTU9E RV9QQUdFX0ZMSVAgYmVmb3JlIHRoZSB0YXJnZXQgdmJsYW5rIHNlcW5vCj4gaXMgcmVhY2hlZCwg aXQgY2Fubm90IHVzZSB0aGUgbmV3IGZsYWcsIG90aGVyd2lzZSB0aGUgZmxpcCBtaWdodCB0YWtl Cj4gZWZmZWN0IHRvbyBlYXJseS4gSG93ZXZlciwgaWYgd2UgYXJlIHRoZW4gYWxyZWFkeSBpbiB0 aGUgdGFyZ2V0IHZibGFuawo+IHBlcmlvZCB3aGVuIHRoZSBmZW5jZXMgaGF2ZSBzaWduYWxsZWQg YW5kIHdlIGFyZSByZWFkeSB0byBwcm9ncmFtIHRoZQo+IGZsaXAsIHdlIGhhdmUgdG8gd2FpdCBm b3IgdGhlIGVuZCBvZiB2YmxhbmsgZmlyc3QsIGFuZCB0aGUgZmxpcCB3aWxsIGJlCj4gZGVsYXll ZCBieSBvbmUgZnJhbWUuCj4gCj4gSWYgd2UncmUgZ29pbmcgdG8gY2hhbmdlIHRoZSB1c2Vyc3Bh Y2UgaW50ZXJmYWNlLCBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8KPiByZS1wdXJwb3NlIHRoZSByZXNl cnZlZCBmaWVsZCBvZiBzdHJ1Y3QgZHJtX21vZGVfY3J0Y19wYWdlX2ZsaXAgZm9yCj4gZXhwbGlj aXRseSBzcGVjaWZ5aW5nIHRoZSB0YXJnZXQgdmJsYW5rIHNlcW5vICh2aWEgYSBuZXcgY2FwIGFu ZCBmbGFnKS4KPiBUaGVuIHRoZSBrZXJuZWwgYW5kIHVzZXJzcGFjZSB3b3VsZCBubyBsb25nZXIg bmVlZCB0byBzZWNvbmQtZ3Vlc3MgZWFjaAo+IG90aGVyLgo+IAo+IEJ1dCBldmVuIGlmIHdlIHRh a2UgdGhhdCByb3V0ZSwgdGhpcyBzZXJpZXMgd291bGQgYmUgZGVzaXJhYmxlIGZvcgo+IGdldHRp bmcgdXMgbW9zdCBvZiB0aGUgd2F5IHRoZXJlIGZvciBleGlzdGluZyB1c2Vyc3BhY2UuCgpXZWxs IHRoYXQncyB3aGF0IEkgbWVhbi4gWW91J3IgcGF0Y2hlcyBoZXJlIHNob2Vob3JuIHdoYXQgeW91 IHdhbnQgaW50bwpleGlzdGluZyBhcGksIHRyeWluZyB0byBzZWNvbmQtZ3Vlc3MgdXNlcnNwYWNl cyBpbnRlbnRpb25zIGluZmVycmVkIGZyb20Kd2hhdCBpdCBkb2VzLiBJbWUgdGhhdCB0ZW5kcyB0 byBlbmQgaW4gdHJvdWJsZS4gSXQgd291bGQgYmUgbXVjaCBiZXR0ZXIgdG8KaGF2ZSBhIGNsZWFy IHVhYmkgZm9yIHRoaXMuIEFuZCBteSBmbGFnIHdhcyBqdXN0IGEgc3VnZ2VzdGlvbi4KCkkganVz dCBoYWQgYSBkaXNjdXNzaW9uIG9uIGlyYyB3aXRoIERhdmUgYWJvdXQgYW5vdGhlciB0b3BpYyB3 ZXJlIERhdmUKY29tcGxhaW5lZCBhYm91dCBzb21lIG9mIHRoZSBpbmZlcnJlZCBhYmkgcnVsZXMg U05BIHVzZXMgKGVudGlyZWx5CmRpZmZlcmVudGx5LCBpbiBwcm9iZSBjb2RlKS4gQW5kIEkgdGhv dWdodCBpdCB3YXMgYSBuaWNlIGlkZWEsIHNpbmNlIGhleQppdCB3b3JrcyBhbmQgaXRzIGVhc2ll ci4gQnV0IHJlYWxseSBpdCdzIG5vdCwgc2luY2UgaW4gdGhlIGVuZCBrbXMgaXMKc3VwcG9zZWQg dG8gYmUgc29tZXdoYXQgZ2VuZXJpYy4gQW5kIHVzdWFsbHkgeW91ciBuaWNlIGlkZWEgZm9yIGlu ZmVycmluZwpiZWhhdmlvdXIgdGhlbiB0ZW5kcyB0byBicmVhayBkb3duIHNvbWV3aGVyZS4gQXQg bGVhc3QgSSB0aGluayB0aGUgZ2VuZXJpYwprbXMgcnVsZXMgYXJlOgoKLSB2YmxhbmsgZXZlbnRz IGZpcmUgYXQgbG9ja3N0ZXAgKG5vdCBldmVyeW9uZSBnZXRzIHRoaXMgcmlnaHQsIGJ1dCB5b3UK ICBlbmQgdXAgd2l0aCBlaXRoZXIgbGFnZ2luZyBkZXNrdG9wIG9yIDEwMCUgY3B1IHVzdWFnZSBv biB3ZXN0b24gaWYgeW91CiAgZG9uJ3QpLiBXaGljaCBhbHNvIG1lYW5zIGZvciB2YXJpYWJsZSBy ZWZyZXNoIHJhdGUgeW91IG5lZWQgdG8ga2VlcCB0aGlzCiAgdmJsYW5rIHJ1bm5pbmcgYXQgZnVs bCByZWZyZXNoIHJhdGUgKHdoaWNoIGlzIGFubm95aW5nLCBidXQganVzdCBtZWFucwogIHdlIG5l ZWQgYSBmbGFnIGZvciB2Ymxhbmsgd2FpdHMpLgotIHBhZ2VmbGlwIGltbWVkaWF0ZWx5IGFmdGVy IGEgdmJsYW5rIHdhaXQgbmVlZHMgdG8gaGl0IHRoZSBuZXh0IHZibGFuay4KLSBwYWdlZmxpcCBp biBhIGxvb3AgbmVlZHMgdG8gcmVzdWx0IGluIGF0IG1vc3QgMSBmbGlwIHBlciB2YmxhbmssIGFu ZCBpZgogIHlvdSdyZSB0b28gZmFzdCB0aGVuIHRoZSBrZXJuZWwgc2hvdWxkIHJldHVybiAtRUJV U1kuIExhdGVzdCBhdG9taWMKICBoZWxlcHJzIGV2ZW4gZW5mb3JjZSB0aGlzLCB0byBzdGFuZGFy ZGl6ZWQgdGhlIHVhYmkgbW9yZS4KCkltbyBldmVyeXRoaW5nIGVsc2UgKGluIHRoaXMgY2FzZTog bWFrZSB0aGUgZmxpcCBjb21wbGV0ZSBvbiB0aGUgc2FtZQpmcmFtZSBhcyB0aGUgdmJsYW5rLCBp ZiB5b3UgaGl0IHRoZSB2Ymxhbmsgd2luZG93KSBuZWVkcyBzcGVjaWFsIGZsYWdzLAp3aXRoIGNs ZWFyIG1lYW5pbmcgb2Ygd2hhdCB0aGV5IGRvLiBUaGUgc3BlY2lmaWMgZmxpcCB0YXJnZXQgc291 bmRzIGxpa2UgYQpnb29kIGlkZWEsIGV4Y2VwdCB0aGF0IGN1cnJlbnQgdXNlcnNwYWNlIGNhbid0 IGJlIGZpeGVkLCBzbyB3ZSBuZWVkIHRvCm1ha2UgaXQgd29yayB3aXRob3V0IGFueSBmbGFnLiBB bmQgdGhlIG5ldyBmbGFnIHdvdWxkIGJlIGZvciBmbGlwLWFzYXAsIG9yCmZsaXAtdmFyaWFibGUt cmVmcmVzaCBvciBzb21ldGhpbmcgbGlrZSB0aGF0LgotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK