From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Jones Subject: Re: [Mesa-dev] Allocator Nouveau driver, Mesa EXT_external_objects, and DRM metadata import interfaces Date: Wed, 3 Jan 2018 11:26:33 -0800 Message-ID: References: <20171220085151.6327051e@nvidia.com> <20171228102438.115a4e64@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171228102438.115a4e64@nvidia.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Miguel Angel Vico , Rob Clark Cc: Rob Clark , =?UTF-8?Q?Nicolai_H=c3=a4hnle?= , dri-devel , Jason Ekstrand , "Kristian H. Kristensen" , Ben Skeggs , Chad Versace , "mesa-dev@lists.freedesktop.org" , Lyude Paul List-Id: dri-devel@lists.freedesktop.org T24gMTIvMjgvMjAxNyAxMDoyNCBBTSwgTWlndWVsIEFuZ2VsIFZpY28gd3JvdGU6Cj4gKEFkZGlu ZyBkcmktZGV2ZWwgYmFjaywgYW5kIHRyeWluZyB0byByZXNwb25kIHRvIHNvbWUgY29tbWVudHMg ZnJvbQo+IHRoZSBkaWZmZXJlbnQgZm9ya3MpCj4gCj4gSmFtZXMgSm9uZXMgd3JvdGU6Cj4gCj4+ IFlvdXIgd29yc3QgY2FzZSBhbmFseXNpcyBhYm92ZSBpc24ndCBmYXIgb2ZmIGZyb20gb3VyIEhX LCBnaXZlIG9yIHRha2UKPj4gc29tZSBiaXRzIGFuZCBheGVzIGhlcmUgYW5kIHRoZXJlLiAgV2Un dmUgc3RhcnRlZCBhbiBpbnRlcm5hbCBkaXNjdXNzaW9uCj4+IGFib3V0IGhvdyB0byBsYXkgb3V0 IGFsbCB0aGUgYml0cyB3ZSBuZWVkLiAgSXQncyBoYXJkIHRvIGV2ZW4gZW51bWVyYXRlCj4+IHRo ZW0gYWxsIHdpdGhvdXQgaGF2aW5nIGEgY29tcGxldGUgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGNh cGFiaWxpdHkgc2V0cwo+PiBhcmUgZ29pbmcgdG8gaW5jbHVkZSwgYSBmdWxseS1vcHRpbWl6ZWQg aW1wbGVtZW50YXRpb24gb2YgdGhlIG1lY2hhbmlzbQo+PiBvbiBvdXIgSFcsIGFuZCBsb3QncyBv ZiB0ZXN0IHNjZW5hcmlvcyB0aG91Z2guCj4gCj4gKHRoYW5rcyBKYW1lcyBmb3IgbW9zdCBvZiB0 aGUgaW5mbyBiZWxvdykKPiAKPiBUbyBlbGFib3JhdGUgYSBiaXQsIGlmIHdlIHdhbnQgdG8gc2hh cmUgYW4gYWxsb2NhdGlvbiBhY3Jvc3MgR1BVcyBmb3IgM0QKPiByZW5kZXJpbmcsIGl0IHNlZW1z IHdlIHdvdWxkIG5lZWQgMTIgYml0cyB0byBleHByZXNzIG91cgo+IHN3aXp6bGluZy90aWxpbmcg bWVtb3J5IGxheW91dHMgZm9yIGZlcm1pKy4gSW4gYWRkaXRpb24gdG8gdGhhdCwKPiBtYXh3ZWxs IHVzZXMgMyBtb3JlIGJpdHMgZm9yIHRoaXMsIGFuZCB3ZSBuZWVkIGFuIGV4dHJhIGJpdCB0byBp ZGVudGlmeQo+IHByZS1mZXJtaSByZXByZXNlbnRhdGlvbnMuCj4gCj4gV2UgYWxzbyBuZWVkIG9u ZSBiaXQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIFRlZ3JhIGFuZCBkZXNrdG9wLCBhbmQKPiBh bm90aGVyIG9uZSB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoZSBsYXlvdXQgaXMgb3RoZXJ3aXNlIGxp bmVhci4KPiAKPiBUaGVuIHRoaW5ncyBsaWtlIHdoZXRoZXIgY29tcHJlc3Npb24gaXMgdXNlZCAo b25lIG1vcmUgYml0KSwgYW5kIHdlIGNhbgo+IHByb2JhYmx5IGdldCBieSB3aXRoIDMgYml0cyBm b3IgdGhlIHR5cGUgb2YgY29tcHJlc3Npb24gaWYgd2UgYXJlCj4gY3JlYXRpdmUuIEhvd2V2ZXIs IGl0J2QgYmUgd2F5IGVhc2llciB0byBqdXN0IHRyYWNrIGFyY2ggKyBwYWdlIGtpbmQsCj4gd2hp Y2ggd291bGQgYmUgbGlrZSAzMiBiaXRzIG9uIGl0cyBvd24uCgpOb3QgY2xlYXIgaWYgdGhpcyBp cyBhbiBOVi1vbmx5IHRlcm0sIHNvIGZvciB0aG9zZSBub3QgZmFtaWxpYXIsIHBhZ2UgCmtpbmQg aXMgdmVyeSBsb29zZWx5IHRoZSBlcXVpdmFsZW50IG9mIGEgZm9ybWF0IG1vZGlmaWVyIG91ciBI VyB1c2VzIAppbnRlcm5hbGx5IGluIGl0cyBtZW1vcnkgbWFuYWdlbWVudCBzdWJzeXN0ZW0uICBU aGUgdmFsdWUgbWFwcGluZ3MgdmFyeSAKYSBiaXQgZm9yIGVhY2ggSFcgZ2VuZXJhdGlvbi4KCj4g V2hldGhlciBaLWN1bGxpbmcgYW5kL29yIHplcm8tYmFuZHdpZHRoLWNsZWFycyBhcmUgdXNlZCBt YXkgYmUgYW5vdGhlciAzCj4gYml0cy4KPiAKPiBJZiBkZXZpY2UtbG9jYWwgcHJvcGVydGllcyBh cmUgaW5jbHVkZWQsIHdlIG1pZ2h0IG5lZWQgYSBjb3VwbGUgbW9yZQo+IGJpdHMgZm9yIGNhY2hp bmcuCj4gCj4gV2UgbWF5IGFsc28gbmVlZCB0byBleHByZXNzIGxvY2FsaXR5IGluZm9ybWF0aW9u LCB3aGljaCBtYXkgdGFrZSBhdAo+IGxlYXN0IGFub3RoZXIgMiBvciAzIGJpdHMuCj4gCj4gSWYg d2Ugd2FudCB0byBzaGFyZSBhcnJheSB0ZXh0dXJlcyB0b28sIHlvdSBhbHNvIG5lZWQgdG8gcGFz cyB0aGUgYXJyYXkKPiBwaXRjaC4gSXMgaXQgc3VwcG9zZWQgdG8gYmUgZW5jb2RlZCBpbiBhIG1v ZGlmaWVyIHRvbz8gVGhhdCdzIDY0IGJpdHMgb24KPiBpdHMgb3duLgo+IAo+IFNvIHllcywgYXMg SmFtZXMgbWVudGlvbmVkLCB3aXRoIHNvbWUgZWZmb3J0LCB3ZSBjb3VsZCB0ZWNobmljYWxseSBm aXQKPiBvdXIgY3VycmVudCBhbGxvY2F0aW9uIHBhcmFtZXRlcnMgaW4gYSBtb2RpZmllciwgYnV0 IEknbSBzdGlsbCBub3QKPiBjb252aW5jZWQgdGhpcyBpcyBhcyBmdXR1cmUgcHJvb2YgYXMgaXQg Y291bGQgYmUgYXMgb3VyIGhhcmR3YXJlIGdyb3dzCj4gaW4gY2FwYWJpbGl0aWVzLgo+IAo+IAo+ IERhbmllbCBTdG9uZSB3cm90ZToKPiAKPj4gU28gSSByZWZsZXhpdmVseQo+PiBnZXQgYSBiaXQg aXRjaHkgd2hlbiBJIHNlZSB0aGUga2VybmVsIGJlaW5nIHVzZWQgdG8gdHJhbnNpdCBtYWdpYwo+ PiBibG9icyBvZiBkYXRhIHdoaWNoIGFyZSBzdXBwbGllZCBieSB1c2Vyc3BhY2UsIGFuZCBvbmx5 IGludGVycHJldGVkIGJ5Cj4+IGRpZmZlcmVudCB1c2Vyc3BhY2UuIEhhdmluZyB0aWxpbmcgZm9y bWF0cyBoaWRkZW4gYXdheSBtZWFucyB0aGF0Cj4+IHdlJ3ZlIGhhZCByZWFsLXdvcmxkIGJ1Z3Mg aW4gQU1EIGhhcmR3YXJlLCB3aGVyZSB3ZSBlbmQgdXAgZGlzcGxheWluZwo+PiBnYXJiYWdlIGJl Y2F1c2Ugd2UgY2Fubm90IGdlbmVyaWNhbGx5IHJlYXNvbiBhYm91dCB0aGUgYnVmZmVyCj4+IGF0 dHJpYnV0ZXMuCj4gCj4gSSdtIGEgYml0IGNvbmZ1c2VkLiBDYW4ndCBtb2RpZmllcnMgYmUgc3Bl Y2lmaWVkIGJ5IHZlbmRvcnMgYW5kIG9ubHkKPiBpbnRlcnByZXRlZCBieSBkcml2ZXJzPyBNeSB1 bmRlcnN0YW5kaW5nIHdhcyB0aGF0IG1vZGlmaWVycyBjb3VsZAo+IGFjdHVhbGx5IGJlIHRyZWF0 ZWQgYXMgb3BhcXVlIDY0LWJpdCBkYXRhLCBpbiB3aGljaCBjYXNlIHRoZXkgd291bGQKPiBxdWFs aWZ5IGFzICJtYWdpYyBibG9icyBvZiBkYXRhIi4gT3RoZXJ3aXNlLCBpdCBzZWVtcyB0aGlzIHdv dWxkbid0IGJlCj4gc2NhbGFibGUuIFdoYXQgYW0gSSBtaXNzaW5nPwo+IAo+IAo+IERhbmllbCBW ZXR0ZXIgd3JvdGU6Cj4gCj4+IEkgdGhpbmsgaW4gdGhlIGludGVyaW0gZmlndXJpbmcgb3V0IGhv dyB0byBleHBvc2Uga21zIGNhcGFiaWxpdGllcwo+PiBiZXR0ZXIgKGFuZCBuZWNlc3NhcmlseSBz dGFuZGFyZGl6aW5nIGF0IGxlYXN0IHNvbWUgb2YgdGhlbSB3aGljaAo+PiBtYXR0ZXIgYXQgdGhl IGNvbXBvc2l0b3IgbGV2ZWwsIGxpa2Ugc2l6ZSBsaW1pdHMgb2YgZnJhbWVidWZmZXJzKQo+PiBm ZWVscyBsaWtlIHRoZSBwbGFjZSB0byBwdXNoIHRoZSBlY29zeXN0ZW0gZm9yd2FyZC4gSW4gc29t ZSB3YXkKPj4gTWlndWVsJ3MgcHJvcG9zYWwgbG9va3MgYSBiaXQgYmFja3dhcmRzLCBzaW5jZSBp dCBhZGRzIHRoZSBwaXRjaAo+PiBjYXBhYmlsaXRpZXMgdG8gYWRkZmIsIGJ1dCBhdCBhZGRmYiB0 aW1lIHlvdSd2ZSBhbGxvY2F0ZWQgZXZlcnl0aGluZwo+PiBhbHJlYWR5LCBzbyB3YXkgdG9vIGxh dGUgdG8gZml4IHRoaW5ncyB1cC4gV2l0aCBtb2RpZmllcnMgd2UndmUgYWRkZWQKPj4gYSB2ZXJ5 IHNpbXBsZSBwZXItcGxhbmUgcHJvcGVydHkgdG8gbGlzdCB3aGljaCBtb2RpZmllcnMgY2FuIGJl Cj4+IGNvbWJpbmVkIHdpdGggd2hpY2ggcGl4ZWwgZm9ybWF0cy4gVGlueSBzdGFydCwgYnV0IG9i dmlvdXNseSB2ZXJ5IGZhcgo+PiBmcm9tIGFsbCB0aGF0IHdlJ2xsIG5lZWQuCj4gCj4gTm90IHN1 cmUgd2hldGhlciBJIG1pZ2h0IGJlIG1pc3VuZGVyc3RhbmRpbmcgeW91ciBzdGF0ZW1lbnQsIGJ1 dCBvbmUgb2YKPiB0aGUgYWxsb2NhdG9yIG1haW4gZmVhdHVyZXMgaXMgbmVnb3RpYXRpb24gb2Yg bmVhcmx5IG9wdGltYWwgYWxsb2NhdGlvbgo+IHBhcmFtZXRlcnMgZ2l2ZW4gYSBzZXQgb2YgdXNl cyBvbiBkaWZmZXJlbnQgZGV2aWNlcy9lbmdpbmVzIGJ5IHRoZQo+IGNhcGFiaWxpdHkgbWVyZ2Ug b3BlcmF0aW9uLiBBIGNsaWVudCBzaG91bGQgaGF2ZSBxdWVyaWVkIHdoYXQgZXZlcnkKPiBkZXZp Y2UvZW5naW5lIGlzIGNhcGFibGUgb2YgZm9yIHRoZSBnaXZlbiB1c2VzLCBmaW5kIHRoZSBvcHRp bWFsIHNldCBvZgo+IGNhcGFiaWxpdGllcywgYW5kIHVzZSBpdCBmb3IgYWxsb2NhdGluZyBhIGJ1 ZmZlci4gQXQgdGhlIG1vbWVudCB0aGVzZQo+IHBhcmFtZXRlcnMgYXJlIGdpdmVuIHRvIEtNUywg dGhleSBhcmUgZXhwZWN0ZWQgdG8gYmUgZ29vZC4gSWYgdGhleQo+IGFyZW4ndCwgdGhlIGNsaWVu dCBkaWRuJ3QgZG8gdGhpbmdzIHJpZ2h0Lgo+IAo+IAo+IFJvYiBDbGFyayB3cm90ZToKPiAKPj4g SXQgZG9lcyBzZWVtIGxpa2UsIGlmIHBvc3NpYmxlLCBzdGFydGluZyBvdXQgd2l0aCBtb2RpZmll cnMgZm9yIG5vdyBhdAo+PiB0aGUga2VybmVsIGludGVyZmFjZSB3b3VsZCBtYWtlIGxpZmUgZWFz aWVyLCB2cyB0cnlpbmcgdG8gcmVpbnZlbnQKPj4gYm90aCBrZXJuZWwgYW5kIHVzZXJzcGFjZSBB UElzIGF0IHRoZSBzYW1lIHRpbWUuICBVc2Vyc3BhY2UgQVBJcyBhcmUKPj4gZWFzaWVyIHRvIGNo YW5nZSBvciB0aHJvdyBhd2F5LiAgUHJlc3VtYWJseSBieSB0aGUgdGltZSB3ZSBnZXQgdG8gdGhl Cj4+IHBvaW50IG9mIGNoYW5naW5nIGtlcm5lbCB1YWJpLCB3ZSBhcmUgYWxyZWFkeSB1c2luZywg YW5kIHByZXR0eSBoYXBweQo+PiB3aXRoLCBzZXJpYWxpemVkIGxpYmFsbG9jIGRhdGEgb3ZlciB0 aGUgd2lyZSBpbiB1c2Vyc3BhY2Ugc28gaXQgaXMKPj4gb25seSBhIG1hdHRlciBvZiBjaGFuZ2lu ZyB0aGUga2VybmVsIGludGVyZmFjZS4KPiAKPiBJIGd1ZXNzIHdlIGNhbiBpbmRlZWQgc3RhcnQg d2l0aCBtb2RpZmllcnMgZm9yIG5vdywgaWYgdGhhdCdzIHdoYXQgaXQKPiB0YWtlcyB0byBnZXQg dGhlIGFsbG9jYXRvciBtZWNoYW5pc21zIHJvbGxpbmcuIEhvd2V2ZXIsIGl0IHNlZW1zIHRvIG1l Cj4gdGhhdCB3ZSB3b24ndCBiZSBhYmxlIHRvIGVuY29kZSB0aGUgc2FtZSB0eXBlIG9mIGluZm9y bWF0aW9uIGluY2x1ZGVkCj4gaW4gY2FwYWJpbGl0eSBzZXRzIHdpdGggbW9kaWZpZXJzIGluIGFs bCBjYXNlcy4gRm9yIGluc3RhbmNlLCBpZiB3ZSBlbmQKPiB1cCBlbmNvZGluZyB1c2FnZSB0cmFu c2l0aW9uIGluZm9ybWF0aW9uIGluIGNhcGFiaWxpdHkgc2V0cywgaG93IHRoYXQKPiB3b3VsZCB0 cmFuc2xhdGUgdG8gbW9kaWZpZXJzPwo+IAo+IEkgYXNzdW1lIGRpc3BsYXkgZG9lc24ndCByZWFs bHkgY2FyZSBhYm91dCBhIGxvdCBvZiB0aGUgZGF0YSBjYXBhYmlsaXR5Cj4gc2V0cyBtYXkgZW5j b2RlLCBidXQgaXMgaXQgY29ycmVjdCB0byB0aGluayBvZiBtb2RpZmllcnMgYXMgdGhpbmdzIG9u bHkKPiBkaXNwbGF5IG5lZWRzPyBJZiB3ZSBhcmUgdG8gdHJlYXQgbW9kaWZpZXJzIGFzIGEgZmly c3QtY2xhc3MgY2l0aXplbiwgSQo+IHdvdWxkIGV4cGVjdCB0byB1c2UgdGhlbSBiZXlvbmQgdGhh dC4KClJpZ2h0LCB0aGlzIGJlY29tZXMgYSBsb3QgbW9yZSBpbnRlcmVzdGluZyB3aGVuIG1vZGlm aWVycyBvciBjYXBhYmlsaXR5IApzZXRzIHN0YXJ0IGdldHRpbmcgdXNlZCB0byBzaGFyZSB0aGlu Z3MgZnJvbSBWdWxrYW48LT5WdWxrYW4sIGZvciAKZXhhbXBsZS4gIE9mIGNvdXJzZSwgd2UgZG9u J3QgbmVlZCB0byBjaGFuZ2Uga2VybmVsIEFCSXMgZm9yIHRoYXQsIGJ1dCAKd2F5bGFuZCBwcm90 b2NvbHMsIFZ1bGthbiBleHRlbnNpb25zLCBldGMuIG1pZ2h0IG5lZWQgbW9kaWZpY2F0aW9uLiAK UmVnYXJkbGVzcywgSSBhZ3JlZSB3aXRoIE1pZ3VlbCdzIHNlbnRpbWVudC4gIExldCdzIGF0IGxl YXN0IGRlZmVyIHRoaXMgCmRlYmF0ZSBhIGJpdCB1bnRpbCB3ZSBrbm93IG1vcmUgYWJvdXQgd2hh dCBjYXBhYmlsaXR5IHNldHMgbG9vayBsaWtlLiAKSWYgbW9kaWZpZXJzIGFsb25lIHN0aWxsIHNl ZW0gc3VmZmljaWVudCwgc28gYmUgaXQuCgo+IAo+IEtyaXN0aWFuIEtyaXN0ZW5zZW4gd3JvdGU6 Cj4gCj4+IEkgYWdyZWUgYW5kIGxldCBtZSBlbGFib3JhdGUgYSBiaXQuIFRoZSBwcm9ibGVtIHdl J3JlIHNlZWluZyBpc24ndCB0aGF0IHdlCj4+IG5lZWQgbW9yZSB0aGF0IDJeNTYgbW9kaWZpZXJz IGZvciBhIGZ1dHVyZSBHUFUuIFRoZSBwcm9ibGVtIGlzIHRoYXQgZmxhZ3MKPj4gbGlrZSBVU0Vf U0NBTk9VVCAod2hpY2ggeW91ciBhbGxvY2F0b3IgcHJvcG9zYWwgZXNzZW50aWFsbHkga2VlcHMp IGlzCj4+IGluYWRlcXVhdGUuIFRoZSBhdmFpbGFibGUgdGlsaW5nIGFuZCBjb21wcmVzc2lvbiBm b3JtYXRzIHZhcnkgd2l0aCB3aGljaAo+PiAoaW4gS01TIHRlcm1zKSBDUlRDIHlvdSB3YW50IHRv IHVzZSwgd2hpY2ggcGxhbmUgeW91J3JlIG9uIHdoZXRoZXIgeW91IHdhbnQKPj4gcm90YXRpb24g b3Igbm8gYW5kIGhvdyBtdWNoIHlvdSB3YW50IHRvIHNjYWxlIGV0Yy4gSXQncyBub3QgcmVhbGlz dGljIHRvCj4+IHRoaW5rIHRoYXQgd2UgY291bGQgbW9kZWwgdGhpcyBpbiBhIGNlbnRyYWxpemVk IGFsbG9jYXRvciBsaWJyYXJ5IHRoYXQncwo+PiBkZXRhY2hlZCBmcm9tIHRoZSBkaXNwbGF5IGRy aXZlci4gVG8gYmUgZmFpciwgdGhpcyBpcyBub3QgYSBwb2ludCBhYm91dAo+PiBibG9icyB2cyBt b2RpZmllcnMsIGl0J3Mgc2F5aW5nIHRoYXQgdGhlIHVzZSBmbGFncyBkb24ndCBiZWxvbmcgaW4g dGhlCj4+IGFsbG9jYXRvciwgdGhleSBiZWxvbmcgaW4gdGhlIEFQSXMgdGhhdCB3aWxsIGJlIHVz aW5nIHRoZSBidWZmZXIgLSBhbmQgbm90Cj4+IGFzIGxpdGVyYWwgdXNlIGZsYWdzLCBidXQgYXMg YSB3YXkgdG8gZGlzY292ZXIgc3VwcG9ydGVkIG1vZGlmaWVycyBmb3IgYQo+PiBnaXZlbiB1c2Ug Y2FzZS4KPiAKPiBXaHkgZGV0YWNoZWQgZnJvbSB0aGUgZGlzcGxheSBkcml2ZXI/IEkgZG9uJ3Qg c2VlIHdoeSB0aGVyZSBjb3VsZG4ndCBiZQo+IGFuIGFsbG9jYXRvciBkcml2ZXIgd2l0aCBhY2Nl c3MgdG8gZGlzcGxheSBjYXBhYmlsaXRpZXMgdGhhdCBjYW4gYmUKPiB1c2VkIGluIHRoZSBuZWdv dGlhdGlvbiBzdGVwIHRvIGZpbmQgdGhlIG9wdGltYWwgc2V0IG9mIGFsbG9jYXRpb24KPiBwYXJh bWV0ZXJzLgoKSW4gYWRkaXRpb24sIHNwZWFraW5nIHRvIHNvbWUgb3RoZXIgcG9ydGlvbnMgb2Yg eW91ciByZXNwb25zZSwgbW9zdCBvZiAKdGhlIHVzYWdlIGluIHRoZSBwcm90b3R5cGUgaXMgcGxh Y2Vob2xkZXIgc3R1ZmYgZm9yIHRlc3RpbmcuIApVU0VfU0NBTk5PVVQgaXMgcGFydGlhbGx5IGV4 cGFuZGVkIHRvIGluY2x1ZGUgb3JpZW50YXRpb24gYXMgd2VsbCwgd2hpY2ggCmhlbHBzIGluIHNv bWUgY2FzZXMgb24gb3VyIGhhcmR3YXJlLiAgSWYgdGhlcmUncyBtb3JlIGNvbXBsZXggc3R1ZmYg Zm9yIApvdGhlciBkaXNwbGF5IGhhcmR3YXJlLCBpdCBuZWVkcyB0byBiZSBleHBhbmRlZCBmdXJ0 aGVyLCBvciB0aGF0IEhXIGlzIApmcmVlIHRvIGV4cG9zZSBhIHZlbmRvci1zcGVjaWZpYyB1c2Fn ZSwgc2luY2UgdXNhZ2UgaXMgZXh0ZW5zaWJsZS4gIEl0J3MgCmVhc3kgdG8gbWlycm9yIGluIGFs bCB0aGUgcmVsZXZhbnQgdXNhZ2UgZmxhZ3MgZnJvbSBvdGhlciBBUElzIG9yIAplbmdpbmVzIHRv by4gIFRoYXQncyBhIHJhdGhlciBzbWFsbCBhbW91bnQgb2YgZHVwbGljYXRpb24uCgpUaGUgaW1w b3J0YW50IHBhcnQgaXMgdGhlIGxvZ2ljIHRoYXQgc2VsZWN0cyBvcHRpbWFsIHVzYWdlLiAgSSBk b24ndCAKdGhpbmsgaXQncyBwb3NzaWJsZSB0byBzZWxlY3Qgb3B0aW1hbCB1c2FnZSB3aXRoIHRo ZSBxdWVyaWVzIHNwcmVhZCAKYXJvdW5kIGFsbCB0aGUgQVBJcy4gIFZ1bGthbiBpc24ndCBnb2lu ZyB0byBrbm93IGFib3V0IHZpZGVvIGVuY29kZSAKdXNhZ2UuICBJbiBtYW55IHNpdHVhdGlvbnMg aXQgd29uJ3Qga25vdyBhYm91dCBkaXNwbGF5IHVzYWdlLiAgSXQganVzdCAKa25vd3Mgb3B0aW1h bCB0ZXh0dXJlL3JlbmRlciB1c2FnZS4gIFRoZXJlZm9yZSBpdCBjYW4ndCBvcHRpbWl6ZSAKcGFy YW1ldGVycyBmb3IgdXNhZ2UgaXQgZG9lc24ndCBrbm93IGFib3V0IGl0LiAgQSBjZW50cmFsaXpl ZCBhbGxvY2F0b3IgCmNhbiwgZXNwZWNpYWxseSB3aGVuIGFsbCB0aGUgdXNhZ2UgZW5kcyB1cCBk ZWxlZ2F0ZWQgdG8gYSBzaW5nbGUgCmRldmljZS9HUFUuICBJdCB3aWxsIGhhdmUgYWxsIHRoZSBz YW1lIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB0byBpdCBvbiAKdGhlIGJhY2sgZW5kIGJlY2F1c2Ug aXQgY2FuIGFjY2VzcyBEUk0gZGV2aWNlcywgdjRsIGRldmljZXMsIGV0Yy4gdG8gCnF1ZXJ5IHRo ZWlyIGNhcGFiaWxpdGllcyB2aWEgYWxsb2NhdG9yIGJhY2tlbmRzLCBidXQgaXQgY2FuIGhhdmUg bW9yZSAKaW5mb3JtYXRpb24gYXZhaWxhYmxlIG9uIHRoZSBmcm9udCBlbmQgZnJvbSB0aGUgYXBw LCBhbmQgYSBtb3JlIGNvbXBsZXRlIApzb2x1dGlvbiByZXR1cm5lZCBmcm9tIGEgZHJpdmVyIHRo YXQgaXMgYWJsZSB0byBwYXJzZSBhbmQgY29uc2lkZXIgdGhhdCAKYWRkaXRpb25hbCBpbmZvcm1h dGlvbi4KCkFkZGl0aW9uYWxseSwgSSBhZ2FpbiBvZmZlciB0aGUgZ29hbCBvZiBhbiBvcHRpbWFs IGdyYWxsb2MgCmltcGxlbWVudGF0aW9uIGJ1aWx0IG9uIHRvcCBvZiB0aGUgYWxsb2NhdG9yIG1l Y2hhbmlzbS4gIEkgZmluZCBpdCAKZGlmZmljdWx0IHRvIGltYWdpbmUgYnVpbGRpbmcgZ3JhbGxv YyBvbiB0b3Agb2YgVnVsa2FuIG9yIEVHTCBhbmQgRFJNLiAKRG9lcyBzdWNoIGEgc29sdXRpb24g c2VlbSBmZWFzaWJsZSB0byB5b3U/ICBJJ3ZlIG5vdCByZXNlYXJjaGVkIHRoaXMgCnNpZ25pZmlj YW50bHkgbXlzZWxmLCBidXQgR29vZ2xlIEFuZHJvaWQgZW5naW5lZXJzIHNoYXJlZCB0aGF0IGNv bmNlcm4gCndoZW4gd2UgaGFkIHRoZSBpbml0aWFsIGRpc2N1c3Npb25zIGF0IFhEQyAyMDE2LgoK PiBLcmlzdGlhbiBLcmlzdGVuc2VuIHdyb3RlOgo+IAo+PiBJIHVuZGVyc3RhbmQgdGhhdCB5b3Ug bWF5IGhhdmUgbiBrbm9icyB3aXRoIGEgdG90YWwgb2YgbW9yZSB0aGFuIGEgdG90YWwgb2YKPj4g NTYgYml0cyB0aGF0IGNvbmZpZ3VyZSB5b3VyIHRpbGluZy9zd2l6emxpbmcgZm9yIGNvbG9yIGJ1 ZmZlcnMuIFdoYXQgSSBkb24ndAo+PiBidXkgaXMgdGhhdCB5b3UgbmVlZCBhbGwgdGhvc2UgY29t YmluYXRpb25zIHdoZW4gcGFzc2luZyBidWZmZXJzIGFyb3VuZAo+PiBiZXR3ZWVuIGNvZGVjcywg Y2FtZXJhcyBhbmQgZGlzcGxheSBjb250cm9sbGVycy4gRXZlbiBpZiB5b3UncmUgc2hhcmluZwo+ PiBiZXR3ZWVuIHRoZSBzYW1lIDNEIGRyaXZlcnMgaW4gZGlmZmVyZW50IHByb2Nlc3NlcywgSSBl eHBlY3QganVzdCBsb2NraW5nCj4+IGRvd24sIHNheSwgNjQgZGlmZmVyZW50IGNvbWJpbmF0aW9u cyAoeW91IGNhbiBhZGQgbW9yZSBvdmVyIHRpbWUpIGFuZAo+PiBhc3NpZ25pbmcgZWFjaCBhIG1v ZGlmaWVyIHdvdWxkIGJlIHN1ZmZpY2llbnQuIEkgZG91YnQgeW91J2QgZXh0cmFjdAo+PiBtZWFu aW5nZnVsIHBlcmZvcm1hbmNlIGdhaW5zIGZyb20gZ29pbmcgYWxsIHRoZSB3YXkgdG8gYSBibG9i Lgo+IAo+IElmIHNvbWVvbmUgaGFzIE4ga25vYnMgYXZhaWxhYmxlLCBJIGRvbid0IHVuZGVyc3Rh bmQgd2h5IHRoZXJlCj4gc2hvdWxkbid0IGJlIGEgbWVjaGFuaXNtIHRoYXQgYWxsb3dzIG1ha2lu ZyB1c2Ugb2YgdGhlbSBhbGwsIHJlZ2FyZGxlc3MKPiBvZiBwZXJmb3JtYW5jZSBudW1iZXJzLgo+ IAo+IAo+IERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gCj4+IFllYWgsIHRoYXQgcGFydCB3YXMgYWxs IGNsZWFyLiBJJ2Qgd2FudCBtb3JlIGRldGFpbHMgb2Ygd2hhdCBleGFjdAo+PiBraW5kIG9mIG1l dGFkYXRhLiBmYXN0LWNsZWFyIGNvbG9ycz8gdGlsaW5nIGxheW91dHM/IGF1eCBkYXRhIGZvciB0 aGUKPj4gY29tcHJlc3Nvcj8gaGl6IChvciB3aGF0ZXZlciB5b3UgZm9sa3MgY2FsbCBpdCkgdHJl ZT8KPj4KPj4gQXMgeW91IHNheSwgd2UndmUgZGlzY3Vzc2VkIG1hc3NpdmUgYW1vdW50cyBvZiBk aWZmZXJlbnQgdmFyaWFudHMgb24KPj4gdGhpcywgYW5kIHRoZXJlJ3MgZGlmZmVyZW50IGFuc3dl cnMgZm9yIGRpZmZlcmVudCBxdWVzdGlvbnMuIENvbnNlbnN1cwo+PiBzZWVtcyB0byBiZSB0aGF0 IGJpZ2dlciBzdHVmZiAoY29tcHJlc3Npb24gZGF0YSwgaGl6LCBjbGVhciBjb2xvcnMsCj4+IC4u Likgc2hvdWxkIGJlIHN0b3JlZCBpbiBhdXggcGxhbmVzLCB3aGlsZSB0aGUgZXhhY3QgbGF5b3V0 IGFuZCB3aGF0Cj4+IGtpbmQgb2YgYXV4IHBsYW5lcyB5b3UgaGF2ZSBhcmUgZW5jb2RlZCBpbiB0 aGUgbW9kaWZpZXIuCj4gCj4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGNhcGFiaWxpdHkgc2V0 cyBtYXkgaW5jbHVkZSBhbGwgbWV0YWRhdGEgeW91Cj4gbWVudGlvbmVkLiBCZXNpZGVzIHRpbGlu Zy9zd2l6emxpbmcgbGF5b3V0IGFuZCBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzLAo+IHRoaW5ncyBs aWtlIHplcm8tYmFuZHdpZHRoLWNsZWFycyAoSSBndWVzcyB0aGUgc2FtZSBvciBzaW1pbGFyIHRv Cj4gZmFzdC1jbGVhciBjb2xvcnM/KSwgaGl6LWxpa2UgZGF0YSwgZGV2aWNlLWxvY2FsIHByb3Bl cnRpZXMgc3VjaCBhcwo+IGNhY2hlcywgb3IgbG9jYWxpdHkgaW5mb3JtYXRpb24gY291bGQvd2ls bCBiZSBhbHNvIGluY2x1ZGVkIGluIGEKPiBjYXBhYmlsaXR5IHNldC4gV2UgYXJlIGV2ZW4gY29u c2lkZXJpbmcgZW5jb2Rpbmcgc29tZSBzb3J0IG9mIHVzYWdlCj4gdHJhbnNpdGlvbiBpbmZvcm1h dGlvbiBpbiB0aGUgY2FwYWJpbGl0eSBzZXQgaXRzZWxmLgoKSSB0aGluayB0aGVyZSdzIHNvbWUg bnVhbmNlIGhlcmUuICBUaGUgZm9ybWF0IG9mIGNvbXByZXNzaW9uIG1ldGFkYXRhIAp3b3VsZCBj bGVhcmx5IGJlIGEgY2FwYWJpbGl0eSBzZXQgdGhpbmcuICBUaGUgY29tcHJlc3Npb24gZGF0YSBp dHNlbGYgCndvdWxkIGluZGVlZCBiZSBpbiBzb21lIGF1eGlsaWFyeSBzdXJmYWNlIG9uIG1vc3Qv YWxsIGhhcmR3YXJlLiAgVGhpbmdzIApsaWtlIGZhc3QgY2xlYXJzIGFyZSBoYXJkZXIgdG8gbmFp bCBkb3duIGJlY2F1c2UgaW1wbGVtZW50YXRpb25zIHNlZW0gCm1vcmUgdmFyaWVkIHRoZXJlLiAg SXQgbWlnaHQgYmUgdmVyeSBhd2t3YXJkIG9uIHNvbWUgaGFyZHdhcmUgdG8gcHV0IHRoZSAKbmVj ZXNzYXJ5IG1ldGEtZGF0YSBpbiBhIERSTSBGQiBwbGFuZSwgd2hpbGUgdGhhdCBtaWdodCBiZSB0 aGUgb25seSAKcmVhc29uYWJsZSB3YXkgdG8gYWNjb21wbGlzaCBpdCBvbiBvdGhlciBoYXJkd2Fy ZS4gIEkgdGhpbmsgd2UnbGwgaGF2ZSAKdG8gd29yayB0aHJvdWdoIHNvbWUgY29ybmVyIGNhc2Vz IGFjcm9zcyBsb3RzIG9mIGhhcmR3YXJlIGJlZm9yZSB0aGlzIApib3R0b21zIG91dC4KClRoYW5r cywKLUphbWVzCgo+IFRoYW5rcywKPiBNaWd1ZWwuCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBtZXNhLWRldiBtYWlsaW5nIGxpc3QKPiBtZXNhLWRl dkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL21lc2EtZGV2Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=