From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerome Glisse Subject: Re: about mmap dma-buf and sync Date: Fri, 21 Aug 2015 12:00:25 -0400 Message-ID: <20150821160024.GC3244@gmail.com> References: <55D50442.5080102@intel.com> <55D57837.4080301@vmware.com> <20150820145340.GA2309@gmail.com> <55D62CE0.5060904@shipmail.org> <20150820203437.GA3973@gmail.com> <55D6B633.2070103@vmware.com> <20150821133221.GA3244@gmail.com> <55D73299.3000704@vmware.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qg0-f41.google.com (mail-qg0-f41.google.com [209.85.192.41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7DB5C6E4B6 for ; Fri, 21 Aug 2015 09:00:29 -0700 (PDT) Received: by qged69 with SMTP id d69so49275808qge.0 for ; Fri, 21 Aug 2015 09:00:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: <55D73299.3000704@vmware.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thomas Hellstrom Cc: "dri-devel@lists.freedesktop.org" List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBdWcgMjEsIDIwMTUgYXQgMDQ6MTU6NTNQTSArMDIwMCwgVGhvbWFzIEhlbGxzdHJv bSB3cm90ZToKPiBPbiAwOC8yMS8yMDE1IDAzOjMyIFBNLCBKZXJvbWUgR2xpc3NlIHdyb3RlOgo+ ID4gT24gRnJpLCBBdWcgMjEsIDIwMTUgYXQgMDc6MjU6MDdBTSArMDIwMCwgVGhvbWFzIEhlbGxz dHJvbSB3cm90ZToKPiA+PiBPbiAwOC8yMC8yMDE1IDEwOjM0IFBNLCBKZXJvbWUgR2xpc3NlIHdy b3RlOgo+ID4+PiBPbiBUaHUsIEF1ZyAyMCwgMjAxNSBhdCAwOTozOToxMlBNICswMjAwLCBUaG9t YXMgSGVsbHN0cm9tIHdyb3RlOgo+ID4+Pj4gT24gMDgvMjAvMjAxNSAwNDo1MyBQTSwgSmVyb21l IEdsaXNzZSB3cm90ZToKPiA+Pj4+PiBPbiBUaHUsIEF1ZyAyMCwgMjAxNSBhdCAwODo0ODoyM0FN ICswMjAwLCBUaG9tYXMgSGVsbHN0cm9tIHdyb3RlOgo+ID4+Pj4+PiBIaSwgVGlhZ28hCj4gPj4+ Pj4+Cj4gPj4+Pj4+IE9uIDA4LzIwLzIwMTUgMTI6MzMgQU0sIFRpYWdvIFZpZ25hdHRpIHdyb3Rl Ogo+ID4+Pj4+Pj4gSGV5IFRob21hcywgeW91IGhhdmVuJ3QgYW5zd2VyZWQgbXkgZW1haWwgYWJv dXQgbWFraW5nIFNZTkNfKiBtYW5kYXRvcnk6Cj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gaHR0cHM6Ly91 cmxkZWZlbnNlLnByb29mcG9pbnQuY29tL3YyL3VybD91PWh0dHAtM0FfX2xpc3RzLmZyZWVkZXNr dG9wLm9yZ19hcmNoaXZlc19kcmktMkRkZXZlbF8yMDE1LTJEQXVndXN0XzA4ODM3Ni5odG1sJmQ9 QlFJREF3JmM9U3FjbDBFejZNMFg4YWVNNjdMS0lpREpBWFZlQXctWWloVk1OdFh0LXVFcyZyPXZw dWtQa0J0cG9OUXAySVVLdUZ2aU9tUE5ZV1ZLbWVuM0plZXU1NXptRUEmbT1FWDN3OFBNNzlONXFM ZVh5b2dlU1BOOUo1cEl2QlY2SUtyaEJqendKREVNJnM9UzNOcUYwa1BOdEJLUTMtV2lmZkwyVDlO Rks5NlhCcDU2dmtiM3VqZi1pbyZlPSAKPiA+Pj4+Pj4gSG1tLCBmb3Igc29tZSByZWFzb24gaXQg ZG9lc24ndCBzaG93IHVwIGluIG15IG1haWwgYXBwLCBidXQgSSBmb3VuZCBpdAo+ID4+Pj4+PiBp biB0aGUgYXJjaGl2ZXMuIEFuIGF0dGVtcHQgdG8gZXhwbGFpbiB0aGUgc2l0dWF0aW9uIGZyb20g dGhlIHZtd2dmeAo+ID4+Pj4+PiBwZXJzcGVjdGl2ZS4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gVGhlIGZh Y3QgdGhhdCB0aGUgaW50ZXJmYWNlIGlzIGdlbmVyaWMgbWVhbnMgdGhhdCBwZW9wbGUgd2lsbCBz dGFydAo+ID4+Pj4+PiB1c2luZyBpdCBmb3IgdGhlIHplcm8tY29weSBjYXNlLiBUaGVyZSBoYXMg YmVlbiBhIGNvdXBsZSBvZiBtb3JlIG9yIGxlc3MKPiA+Pj4+Pj4gaGFja2lzaCBhdHRlbXB0cyB0 byBkbyB0aGlzIGJlZm9yZSwgYW5kIGlmIGl0J3MgYSBfZHJpdmVyXyBpbnRlcmZhY2Ugd2UKPiA+ Pj4+Pj4gZG9uJ3QgbmVlZCB0byBiZSB0aGF0IGNhcmVmdWwgYnV0IGlmIGl0IGlzIGEgX2dlbmVy aWNfIGludGVyZmFjZSB3ZSBuZWVkCj4gPj4+Pj4+IHRvIGJlIHZlcnkgY2FyZWZ1bCB0byBtYWtl IGl0IGZpdCAqYWxsKiB0aGUgaGFyZHdhcmUgb3V0IHRoZXJlIGFuZCB0aGF0Cj4gPj4+Pj4+IHdl IG1ha2UgYWxsIHBvdGVudGlhbCB1c2VycyB1c2UgdGhlIGludGVyZmFjZSBpbiBhIHdheSB0aGF0 IGNvbmZvcm1zCj4gPj4+Pj4+IHdpdGggdGhlIGludGVyZmFjZSBzcGVjaWZpY2F0aW9uLgo+ID4+ Pj4+Pgo+ID4+Pj4+PiBXaGF0IHdpbGwgaGFwcGVuIG90aGVyd2lzZSBpcyB0aGF0IGFwcHMgd3Jp dHRlbiBmb3IgY29oZXJlbnQgZmFzdAo+ID4+Pj4+PiBoYXJkd2FyZSBtaWdodCwgZm9yIGV4YW1w bGUsIGlnbm9yZSBjYWxsaW5nIHRoZSBTWU5DIGFwaSwganVzdCBiZWNhdXNlCj4gPj4+Pj4+IHRo ZSBhcHAgd3JpdGVyIG9ubHkgY2FyZWQgYWJvdXQgaGlzIG93biBoYXJkd2FyZSBvbiB3aGljaCB0 aGUgYXBwIHdvcmtzCj4gPj4+Pj4+IGZpbmUuIFRoYXQgd291bGQgZmFpbCBtaXNlcmFibHkgaWYg dGhlIHNhbWUgYXBwIHdhcyBydW4gb24gaW5jb2hlcmVudAo+ID4+Pj4+PiBoYXJkd2FyZSwgb3Ig dGhlIGluY29oZXJlbnQgaGFyZHdhcmUgZHJpdmVyIG1haW50YWluZXJzIHdvdWxkIGJlIGZvcmNl ZAo+ID4+Pj4+PiB0byBiYXNlIGFuIGltcGxlbWVudGF0aW9uIG9uIHBhZ2UtZmF1bHRzIHdoaWNo IHdvdWxkIGJlIHZlcnkgc2xvdy4KPiA+Pj4+Pj4KPiA+Pj4+Pj4gU28gYXNzdW1lIHRoZSBmb2xs b3dpbmcgdXNlIGNhc2U6IEFuIGFwcCB1cGRhdGVzIGEgMTB4MTAgYXJlYSB1c2luZyB0aGUKPiA+ Pj4+Pj4gQ1BVIG9uIGEgMTYwMHgxMjAwIGRtYS1idWYsIGFuZCBpdCB3aWxsIHRoZW4gdXNlIHRo ZSBkbWEtYnVmIGZvcgo+ID4+Pj4+PiB0ZXh0dXJpbmcuIE9uIHNvbWUgaGFyZHdhcmUgdGhlIGRt YS1idWYgbWlnaHQgYmUgdGlsZWQgaW4gYSB2ZXJ5Cj4gPj4+Pj4+IHNwZWNpZmljIHdheSwgb24g dm13Z2Z4IHRoZSBkbWEtYnVmIGlzIGEgR1BVIGJ1ZmZlciBvbiB0aGUgaG9zdCwgb25seQo+ID4+ Pj4+PiBhY2Nlc3NpYmxlIHVzaW5nIERNQS4gT24gdm13Z2Z4IHRoZSBTWU5DIG9wZXJhdGlvbiBt dXN0IGNhcnJ5IG91dCBhCj4gPj4+Pj4+IDEweDEwIERNQSBmcm9tIHRoZSBob3N0IEdQVSBidWZm ZXIgdG8gYSBndWVzdCBDUFUgYnVmZmVyIGJlZm9yZSB0aGUgQ1BVCj4gPj4+Pj4+IHdyaXRlIGFu ZCBhIERNQSBiYWNrIGFnYWluIGFmdGVyIHRoZSB3cml0ZSwgYmVmb3JlIEdQVSB1c2FnZS4gT24g dGhlCj4gPj4+Pj4+IHRpbGVkIGFyY2hpdGVjdHVyZSB0aGUgU1lOQyBvcGVyYXRpb24gbXVzdCB1 bnRpbGUgYmVmb3JlIENQVSBhY2Nlc3MgYW5kCj4gPj4+Pj4+IHByb2JhYmx5IHRpbGUgYWdhaW4g YmVmb3JlIEdQVSBhY2Nlc3MuCj4gPj4+Pj4+Cj4gPj4+Pj4+IElmIHdlIG5vdyBoYXZlIGEgb25l LWRpbWVuc2lvbmFsIFNZTkMgYXBpLCBpbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSB3ZSdkCj4gPj4+ Pj4+IGVpdGhlciBuZWVkIHRvIHN5bmMgYSBmYXIgdG9vIGxhcmdlIGFyZWEgKDE2MDB4MTApIG9y IGNhbGwgU1lOQyAxMCB0aW1lcwo+ID4+Pj4+PiBiZWZvcmUgd3JpdGluZywgYW5kIHRoZW4gYWdh aW4gYWZ0ZXIgd3JpdGluZy4gSWYgdGhlIGFwcCBmb3Jnb3QgdG8gY2FsbAo+ID4+Pj4+PiBTWU5D IHdlIG11c3QgZXJyb3IuCj4gPj4+Pj4+Cj4gPj4+Pj4+IFNvIHRvIHN1bW1hcml6ZSwgdGhlIGZh Y3QgdGhhdCB0aGUgaW50ZXJmYWNlIGlzIGdlbmVyaWMgSU1PIG1lYW5zOgo+ID4+Pj4+Pgo+ID4+ Pj4+PiAxKSBBbnkgdXNlciBtdXN0IGJlIGFibGUgdG8gbWFrZSB2YWxpZCBhc3N1bXB0aW9ucyBh Ym91dCB0aGUgaW50ZXJuYWwKPiA+Pj4+Pj4gZm9ybWF0IG9mIHRoZSBkbWEtYnVmLiAodW50aWxl ZCwgY29sb3IgZm9ybWF0LCBzdHJpZGUgZXRjLikKPiA+Pj4+Pj4gMikgQW55IHVzZXIgKm11c3Qq IGNhbGwgU1lOQyBiZWZvcmUgYW5kIGFmdGVyIENQVSBhY2Nlc3MuIE9uIGNvaGVyZW50Cj4gPj4+ Pj4+IGFyY2hpdGVjdHVyZXMsIHRoZSBTWU5DIGlzIGEgTlVMTCBvcGVyYXRpb24gYW55d2F5LCBh bmQgdGhhdCBzaG91bGQgYmUKPiA+Pj4+Pj4gZG9jdW1lbnRlZCBzb21ld2hlcmUgc28gdGhhdCBt YWludGFpbmVycyBvZiBkcml2ZXJzIG9mIHVuY29oZXJlbnQKPiA+Pj4+Pj4gYXJjaGl0ZWN0dXJl cyBoYXZlIHNvbWV3aGVyZSB0byBwb2ludCB0aGVpciBmaW5nZXJzLgo+ID4+Pj4+PiAzKSBEcml2 ZXItc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIG11c3QgYmUgYWxsb3dlZCB0byBlcnJvciAoc2Vn ZmF1bHQpCj4gPj4+Pj4+IGlmIFNZTkMgaGFzIG5vdCBiZWVuIHVzZWQuCj4gPj4+Pj4gSSB0aGlu ayBoZXJlIHlvdSBhcmUgdG9vIGxheCwgdGhlIGNvbW1vbiBjb2RlIG11c3Qgc2VnZmF1bHQgb3IK PiA+Pj4+PiBlcnJvciBiYWRseSBpZiBTWU5DIGhhcyBub3QgYmVlbiB1c2UgaW4gYWxsIGNhc2Vz IGV2ZW4gb24gY2FjaGUKPiA+Pj4+PiBjb2hlcmVudCBhcmNoLiBUaGUgZGV2aWNlIGRyaXZlciBz eW5jIGNhbGxiYWNrIGNhbiBzdGlsbCBiZSBhCj4gPj4+Pj4gbm8gb3BlcmF0aW9uLiBCdXQgaSB0 aGluayB0aGF0IHdlIG5lZWQgdG8gaW5zaXN0IHN0cm9uZ2x5IG9uIGEKPiA+Pj4+PiBwcm9wZXIg c3luYyBjYWxsIGJlaW5nIG1hZGUgKGFuZCB3ZSBzaG91bGQgZm9yYmlkIGVtcHR5IGFyZWEKPiA+ Pj4+PiBzeW5jIGNhbGwpLiBUaGlzIHdvdWxkIGJlIHRoZSBvbmx5IHdheSB0byBtYWtlIHN1cmUg dXNlcnNwYWNlCj4gPj4+Pj4gYmVoYXZlIHByb3Blcmx5IGFzIG90aGVyd2lzZSB3ZSBlbmR1cCBp biB0aGUgc2l0dWF0aW9uIHlvdSB3ZXJlCj4gPj4+Pj4gZGVzY3JpYmluZyBhYm92ZSwgd2hlcmUg dGhlIGFwcCBpcyBkZXNpZ24gb24gYSBjYWNoZSBjb2hlcmVudAo+ID4+Pj4+IGFyY2ggYW5kIHdv cmtzIGZpbmUgdGhlcmUgYnV0IGJyb2tlIGluIHN1YnRsZSB3YXkgb24gbm9uIGNhY2hlCj4gPj4+ Pj4gY29oZXJlbnQgYXJjaCBhbmQgYXBwIGRldmVsb3BlciBpcyBjbHVlbGVzcyBvZiB3aHkuCj4g Pj4+Pj4KPiA+Pj4+PiBJIGp1c3QgZG8gbm90IHRydXN0IHVzZXJzcGFjZS4KPiA+Pj4+IEkgYWdy ZWUgYW5kIGlkZWFsbHkgaSdkIHdhbnQgaXQgdGhpcyB3YXkgYXMgd2VsbC4gVGhlIHF1ZXN0aW9u IGlzLCBpcyBpdAo+ID4+Pj4gcG9zc2libGU/IENhbiB0aGlzIGJlIGRvbmUgd2l0aG91dCBhIGZh dWx0KCkgaGFuZGxlciBpbiB0aGUgZ2VuZXJpYwo+ID4+Pj4ga2VybmVsIGNvZGU/Cj4gPj4+Pgo+ ID4+Pj4+PiA0KSBUaGUgdXNlLWNhc2Ugc3RhdGVkIGFib3ZlIGNsZWFybHkgc2hvd3MgdGhlIGJl bmVmaXQgb2YgYQo+ID4+Pj4+PiAyLWRpbWVuc2lvbmFsIHN5bmMgaW50ZXJmYWNlICh3ZSB3YW50 IHRvIHN5bmMgdGhlIDEweDEwIHJlZ2lvbiksIGJ1dAo+ID4+Pj4+PiB3aGF0IGlmIHNvbWVvbmUg aW4gdGhlIGZ1dHVyZSB3YW50cyB0byB1c2UgdGhpcyBpbnRlcmZhY2UgZm9yIGEgM0QKPiA+Pj4+ Pj4gdGV4dHVyZT8gV2lsbCBhIDJEIHN5bmMgc3VmZmljZT8gQ2FuIHdlIG1ha2UgdGhlIFNZTkMg aW50ZXJmYWNlCj4gPj4+Pj4+IGV4dGVuZGFibGUgaW4gYSB3YXkgdGhhdCBhbiBlbnVtIHN5bmNf dHlwZSBtZW1iZXIgZGVmaW5lcyB0aGUgbGF5b3V0IG9mCj4gPj4+Pj4+IHRoZSBhcmd1bWVudCwg YW5kIGluaXRpYWxseSB3ZSBpbXBsZW1lbnQgb25seSAxZCwgMmQgc3luYywgbGVhdmluZyAzZAo+ ID4+Pj4+PiBmb3IgdGhlIGZ1dHVyZT8KPiA+Pj4+Pj4KPiA+Pj4+Pj4gQWxzbywgSSBhZ3JlZSB0 aGVyZSBpcyBwcm9iYWJseSBubyBnb29kIHdheSB0byBnZW5lcmljYWxseSBpbXBsZW1lbnQgYW4K PiA+Pj4+Pj4gZXJyb3IgaWYgU1lOQyBoYXMgbm90IGJlZW4gY2FsbGVkLiBUaGF0IG5lZWRzIHRv IGJlIGxlZnQgYXMgYW4gb3B0aW9uIHRvCj4gPj4+Pj4+IGRyaXZlcnMuCj4gPj4+Pj4gSSB0aGlu ayB0aGVyZSBpcywganVzdCBmb3JiaWQgYW55IGZ1cnRoZXIgdXNlIG9mIHRoZSBkbWEgYnVmZmVy LCBtYXJrCj4gPj4+Pj4gaXQgYXMgaW52YWxpZCBhbmQgcHJpbnRrIGEgYmlnIGVycm9yLiBVc2Vy c3BhY2UgYXBwIGRldmVsb3BlciB3aWxsCj4gPj4+Pj4gcXVpY2tseSBzZWUgdGhhdCBzb21ldGhp bmcgaXMgd3JvbmcgYW5kIGxvb2tpbmcgYXQga2VybmVsIGxvZyBzaG91bGQKPiA+Pj4+PiBleHBs YWluIHdoeS4KPiA+Pj4+IFRoZSBwcm9ibGVtIGlzIGlmIHNvbWVvbmUgY2FsbHMgbW1hcCgpIGFu ZCB0aGVuIGRlY2lkZXMgdG8gbm90IGFjY2Vzcwo+ID4+Pj4gdGhlIGJ1ZmZlciBiZWZvcmUgbXVu bWFwKCkgb3IgR1BVIHVzYWdlLiBIb3cgZG8gd2UgcmVjb2duaXplIHRoYXQgY2FzZQo+ID4+Pj4g YW5kIHNlcGFyYXRlIGl0IGZyb20gYSBDUFUgYWNjZXNzIG9jY3VyZWQgb3V0c2lkZSBhIHN5bmM/ IFdlIGNvdWxkLCBhcwo+ID4+Pj4gbWVudGlvbmVkIGFib3ZlIGhhdmUgYSBmYXVsdCgpIGhhbmRs ZXIgaW4gdGhlIGdlbmVyaWMga2VybmVsIGNvZGUgYW5kCj4gPj4+PiBtYWtlIHN1cmUgZHJpdmVy cyBkb24ndCBwb3B1bGF0ZSBQVEVzIHVudGlsIHRoZSBmaXJzdCBmYXVsdCgpLiBBbm90aGVyCj4g Pj4+PiBvcHRpb24gd291bGQgYmUgdG8gc2NhbiBhbGwgUFRFcyBmb3IgYW4gImFjY2Vzc2VkIiBm bGFnLCBidXQgSSdtIG5vdAo+ID4+Pj4gZXZlbiBzdXJlIGFsbCBDUFUgYXJjaGl0ZWN0dXJlcyBo YXZlIHN1Y2ggYSBmbGFnPwo+ID4+Pj4KPiA+Pj4+IEJ1dCB0aGVyZSBtaWdodCBiZSBhIHNpbXBs ZXIgc29sdXRpb24gdGhhdCBJIGhhdmUgb3Zlcmxvb2tlZD8KPiA+Pj4gQWxsIGFyY2ggaGF2ZSBh IGRpcnR5IGZsYWcsIHNvIHlvdSBjb3VsZCBjaGVjayB0aGF0LCBhcyBhbGwgd2UKPiA+Pj4gcmVh bGx5IGNhcmUgYWJvdXQgaXMgQ1BVIHdyaXRlIGFjY2Vzcy4gU28gYWxsIHlvdSBuZWVkIGlzIGNs ZWFyaW5nCj4gPj4+IHRoZSBkaXJ0eSBiaXQgYWZ0ZXIgZWFjaCBzdWNjZXNzZnVsbCBHUFUgY29t bWFuZCBzdHJlYW0gaW9jdGwKPiA+Pj4gYW5kIGNoZWNraW5nIHRoYXQgbm8gZGlydHkgYml0IGlz IHNldCBpbiBhIHJlZ2lvbiBub3QgY292ZXIgYnkKPiA+Pj4gYSBmbHVzaCgpLiBOb3RlIHRoYXQg dGhlIGNsZWFyIGFuZCBjaGVjayBjYW4gaGFwcGVuIGluIHRoZSBzYW1lCj4gPj4+IGZ1bmN0aW9u IGFzIHBhcnQgb2YgYnVmZmVyIHZhbGlkYXRpb24gZm9yIHRoZSBHUFUgY29tbWFuZCBzdHJlYW0u Cj4gPj4gQWN0dWFsbHksIEkgZG8gdGhpbmsgd2UgY2FyZSBhYm91dCByZWFkaW5nIGFzIHdlbGws IHNpbmNlIHJlYWRpbmcKPiA+PiB3aXRob3V0IGZsdXNoaW5nIGFueXRoaW5nIHdyaXR0ZW4gYnkg dGhlIEdQVSB3aWxsCj4gPj4geWllbGQgZ2FyYmFnZSBvbiBhIG5vbi1jb2hlcmVudCBhcmNoaXRl Y3R1cmUuIEluc3RlYWQgd2UgbWlnaHQgY2hlY2sgZm9yCj4gPj4gdGhlIFBBR0VfQUNDRVNTRUQg Yml0Lgo+ID4gSSBkbyBub3QgdGhpbmsgdGhlIHJlYWQgYWNjZXNzIGFmdGVyIEdQVSBtYXR0ZXIu IElmIHBlb3BsZSB0aGluayBpdCBkb2VzCj4gPiB0aGVuIGl0IGlzIHNpbXBsZSwgYXQgYnVmZmVy IHZhbGlkYXRpb24gaW4gYnVmZmVyIG1hcHBpbmcgd2UgaW52YWxpZGF0ZQo+ID4gQ1BVIHBhZ2Ug dGFibGUgbWFwcGluZyBhbmQgdGhlIHByZXBhcmUgYWNjZXNzIGlvY3RsIHBvcHVsYXRlIHRoZW0g YWZ0ZXIKPiA+IGNoZWNraW5nIHRoYXQgR1BVIGlzIGZsdXNoLgo+ID4KPiA+PiBTbyB0aGUgZnVs bCB2ZXJzaW9uIG9mIHRoaXMgd291bGQga2VlcCB0cmFjayBvZiBhbGwgc3luY2VkIHJlZ2lvbnMg YW5kCj4gPj4gYXQgYnVmZmVyIHZhbGlkYXRpb24gdGltZSwgb3IgdW5tYXAgdGltZSBlcnJvciBp ZiB0aGVyZQo+ID4+IGlzIGEgcGFnZSBjb21wbGV0ZWx5IG91dHNpZGUgdGhlIHVuaW9uIG9mIGFs bCBzeW5jZWQgcmVnaW9ucyBpbiBhbnkgVk1BCj4gPj4gYmVsb25naW5nIHRvIHRoZSBkbWEtYnVm IGFkZHJlc3Mgc3BhY2UsIHRoZW4gdW5tYXJrIGFsbCBhY2Nlc3NlZCBQVEVzCj4gPj4gYW5kIGlu dmFsaWRhdGUgVExCcyBhY2NvcmRpbmdseSwgdHlwaWNhbGx5IGNhdXNpbmcgYSBnbG9iYWwgVExC IGZsdXNoLgo+ID4+IFllYWgsIHdlIGNvdWxkIHByb2JhYmx5IHB1dCB0b2dldGhlciBhIGhlbHBl ciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhpcywKPiA+PiBidXQgaXQgd2lsbCBiZSBleHBlbnNpdmUg dG8gcnVuIGFuZCB0aGUgd2hvbGUgcG9pbnQgb2YgdGhpcyBBUEkgaXMgdG8gYmUKPiA+PiBhYmxl IHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCj4gPiBObyBuZWVkIGZvciBzdWNoIGNvbXBsZXhpdHks IHRoZSBzeW5jIGlvY3RsIHdvdWxkIGdvIG92ZXIgdGhlIHBhZ2UgdGFibGUKPiA+IGFuZCBjbGVh ciBkaXJ0eSBiaXQgZm9yIGFsbCBwYWdlIGluIHJhbmdlIHRoYXQgaXMgc3luY2hyb25pemVkLiBT byBvbmNlCj4gPiB5b3UgZ2V0IHRvIHRoZSBjb21tYW5kIGlvY3RsIHlvdSBrbm93IHRoYXQgYWxs IGRpcnR5IGJpdCBtdXN0IGJlIGNsZWFyLgo+ID4gTm90ZSB0aGlzIGlzIG9ubHkgYSBwYWdlIHRh YmxlIHdhbGsgaW4gYWxsIGNhc2UuIEkgZG8gbm90IGNvbnNpZGVyIHRoaXMKPiA+IHRvIGJlIHRo YXQgZXhwZW5zaXZlLgo+ID4KPiA+Cj4gVGhlIGV4cGVuc2l2ZSBwYXJ0IGlzIHRoZSBUTEIgZmx1 c2hpbmcgYWZ0ZXIgdGhlIFBURSB1cGRhdGUsIHdoaWNoCj4gdHlwaWNhbGx5IG5lZWRzIHRvIGJl IHBlcmZvcm1lZCBvbiBhbGwgY29yZXMuIEFsdGhvdWdoIHdpdGhvdXQgYQo+IGJlbmNobWFyayBJ J20gbm90IHN1cmUgaG93IGV4cGVuc2l2ZS4gSXQgbWlnaHQgYmUgdGhhdCBpdCBkb2Vzbid0Cj4g bWF0dGVyLiBBZnRlciBhbGwsIHRoZSB2bXdnZngtIGFuZCBJIGJlbGlldmUgdGhlIHF4bCBkcml2 ZXIgYm90aCB1c2UgYQo+IHNpbWlsYXIgYXBwcm9hY2ggZm9yIGZiZGV2IHVzZXItc3BhY2UgYWNj ZXNzLCBidXQgdGhhdCBoYXMgbmV2ZXIgYmVlbgo+IGNvc2lkZXJlZCBwZXJmb3JtYW5jZS1jcml0 aWNhbC4uLgoKVGhlcmUgaXMgbm8gbmVlZCB0byBmbHVzaCB0aGUgVExCICEgQXQgbGVhc3Qgbm90 IGZvciB0aGUgd3JpdGUgY2FzZS4KQ2xlYXJpbmcgdGhlIGRpcnR5IGJpdCBpcyBjYWNoZSBjb2hl cmVudC4gVExCIGFyZSBhYm91dCBjYWNoaW5nIHBhZ2UKdGFibGUgZGlyZWN0b3J5IHRyZWUuIFRv IGNvbnZpbmNlIHlvdXJzZWxmIGxvb2sgYXQgcGFnZV9ta2NsZWFuX29uZSgpCmluIG1tL3JtYXAu YyB3aGljaCwgYnkgdGhlIHdheSwgaXMgYWxtb3N0IHdoYXQgd2Ugd2FudCAocmVtb3ZlIHRoZSBt bXUKbm90aWZpZXIgcGFydCBhbmQgdGhlIHdyaXRlIHByb3RlY3Rpb24gcGFydCBhbmQgZm9yY2Ug cmVhbCBDUFUgY2FjaGUKZmx1c2ggaWYgbmVlZGVkIGJhc2Ugb24gZGV2aWNlIGZsYWcpLgoKVGhv dWdodCB0aGlzIGhhdmUgYmVlbiB0aGUgdG9waWMgb2YgbnVtZXJvdXMgZGlzY3Vzc2lvbiBvbiBo b3cgaGFyZHdhcmUKZXhhY3RseSBpbXBsZW1lbnQgdGhlIGRpcnR5IGJpdC4gU28gZmFyIGZvciB4 ODYgaW1wcmVzc2lvbiBpcyB0aGF0IGl0CmlzIGxpa2UgYW4gYXRvbWljIGJpdCBvcGVyYXRpb24u IFNvIGF0b21pY2FseSB0ZXN0aW5nIGFuZCBjbGVhcmluZyB0aGUKYml0IHdvdWxkIGJlIGdvb2Qg ZW5vdWdoLiBJIGFtIG5vdCBzdXJlIGFib3V0IEFSTSBidXQgd291bGQgYXNzdW1lIHRoZXkKZG8g dGhlIHNhbWUgdGhpbmcuCgpOb3RlLCBubyBtYXR0ZXIgd2hhdCB0aGVyZSBpcyBhIHJhY2Ugd2lu ZG93IGJ0dyB0aGUgdGltZSB0aGUgR1BVIGlvY3RsCnZhbGlkIGEgYnVmZmVyIChjaGVja2luZyBh bmQgY2xlYXJpbmcgZGlydHkgYml0KSBhbmQgdGhlIHRpbWUgaXQgaXMKZWZmZWN0aXZlbHkgdXNl IGJ5IHRoZSBHUFUuIER1cmluZyB0aGF0IHdpbmRvdyB1c2Vyc3BhY2UgcHJvZ3JhbSBjYW4Ka2Vl cCB3cml0dGluZyB0byB0aGUgYnVmZmVyIGFuZCBiYWQgdGhpbmcgd2lsbCBoYXBwZW4uIEJ1dCBi YWQgdGhpbmcKd2lsbCBoYXBwZW4gb24gYWxsIGFyY2ggYmVjYXVzZSBldmVuIG9uIGNhY2hlIGNv aGVyZW50IGFyY2ggeW91IG1pZ2h0CnNlZSBHUFUgdXNlIHRoaW5nIHRoYXQgYXJlIGluIGEgbWlk ZGxlIG9mIGEgd3JpdGUuCgpOb3cgaSBhZ3JlZSB0aGF0IGlmIHdlIGNhcmUgYWJvdXQgdGhlIHJl YWQgY2FzZSB0aGVuIHdlIG5lZWQgYSBUTEIKZmx1c2guIEJ1dCB0aGlzIGlzIG9wdGltaXplZCBi eSB0aGUga2VybmVsIGluIHNvbWUgd2F5LiBGb3IgaW5zdGFuY2UKaWYgdGhlIGJ1ZmZlciBpcyBv bmx5IENQVSBtYXAgaW5zaWRlIHRoZSB1bnByaXZpbGVnZSBwcm9jZXNzIGFuZCB0aGF0CnRoZSB1 bnByaXZpbGVnZSBwcm9jZXNzIGlzIG5vdCBydW5uaW5nIGF0IHRpbWUgb2YgR1BVIGlvY3RsIHRo ZW4gdGhlCnRsYiBmbHVzaCBpcyBhIG5vb3AuCgpDaGVlcnMsCkrDqXLDtG1lCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==