From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 02/55] drm/i915: Reserve ring buffer space for i915_add_request() commands Date: Wed, 24 Jun 2015 14:45:33 +0200 Message-ID: <20150624124533.GG25769@phenom.ffwll.local> References: <1432917856-12261-3-git-send-email-John.C.Harrison@Intel.com> <1434731652-15672-1-git-send-email-John.C.Harrison@Intel.com> <20150622201233.GK25769@phenom.ffwll.local> <55894519.5010906@Intel.com> <20150623132406.GA25769@phenom.ffwll.local> <55897E9C.2060604@Intel.com> <20150623200015.GJ25769@phenom.ffwll.local> <558AA028.4090908@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f51.google.com (mail-wg0-f51.google.com [74.125.82.51]) by gabe.freedesktop.org (Postfix) with ESMTP id 92EC16E33C for ; Wed, 24 Jun 2015 05:42:46 -0700 (PDT) Received: by wgck11 with SMTP id k11so35341425wgc.0 for ; Wed, 24 Jun 2015 05:42:45 -0700 (PDT) Content-Disposition: inline In-Reply-To: <558AA028.4090908@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John Harrison Cc: Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdW4gMjQsIDIwMTUgYXQgMDE6MTg6NDhQTSArMDEwMCwgSm9obiBIYXJyaXNvbiB3 cm90ZToKPiBPbiAyMy8wNi8yMDE1IDIxOjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID5PbiBU dWUsIEp1biAyMywgMjAxNSBhdCAwNDo0MzoyNFBNICswMTAwLCBKb2huIEhhcnJpc29uIHdyb3Rl Ogo+ID4+T24gMjMvMDYvMjAxNSAxNDoyNCwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+Pj5PbiBU dWUsIEp1biAyMywgMjAxNSBhdCAxMjozODowMVBNICswMTAwLCBKb2huIEhhcnJpc29uIHdyb3Rl Ogo+ID4+Pj5PbiAyMi8wNi8yMDE1IDIxOjEyLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+ T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDU6MzQ6MTJQTSArMDEwMCwgSm9obi5DLkhhcnJpc29u QEludGVsLmNvbSB3cm90ZToKPiA+Pj4+Pj5Gcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFy cmlzb25ASW50ZWwuY29tPgo+ID4+Pj4+Pgo+ID4+Pj4+Pkl0IGlzIGEgYmFkIGlkZWEgZm9yIGk5 MTVfYWRkX3JlcXVlc3QoKSB0byBmYWlsLiBUaGUgd29yayB3aWxsIGFscmVhZHkgaGF2ZSBiZWVu Cj4gPj4+Pj4+c2VuZCB0byB0aGUgcmluZyBhbmQgd2lsbCBiZSBwcm9jZXNzZWQsIGJ1dCB0aGVy ZSB3aWxsIG5vdCBiZSBhbnkgdHJhY2tpbmcgb3IKPiA+Pj4+Pj5tYW5hZ2VtZW50IG9mIHRoYXQg d29yay4KPiA+Pj4+Pj4KPiA+Pj4+Pj5UaGUgb25seSB3YXkgdGhlIGFkZCByZXF1ZXN0IGNhbGwg Y2FuIGZhaWwgaXMgaWYgaXQgY2FuJ3Qgd3JpdGUgaXRzIGVwaWxvZ3VlCj4gPj4+Pj4+Y29tbWFu ZHMgdG8gdGhlIHJpbmcgKGNhY2hlIGZsdXNoaW5nLCBzZXFubyB1cGRhdGVzLCBpbnRlcnJ1cHQg c2lnbmFsbGluZykuIFRoZQo+ID4+Pj4+PnJlYXNvbnMgZm9yIHRoYXQgYXJlIG1vc3RseSBkb3du IHRvIHJ1bm5pbmcgb3V0IG9mIHJpbmcgYnVmZmVyIHNwYWNlIGFuZCB0aGUKPiA+Pj4+Pj5wcm9i bGVtcyBhc3NvY2lhdGVkIHdpdGggdHJ5aW5nIHRvIGdldCBzb21lIG1vcmUuIFRoaXMgcGF0Y2gg cHJldmVudHMgdGhhdAo+ID4+Pj4+PnNpdHVhdGlvbiBmcm9tIGhhcHBlbmluZyBpbiB0aGUgZmly c3QgcGxhY2UuCj4gPj4+Pj4+Cj4gPj4+Pj4+V2hlbiBhIHJlcXVlc3QgaXMgY3JlYXRlZCwgaXQg bWFya3Mgc3VmZmljaWVudCBzcGFjZSBhcyByZXNlcnZlZCBmb3IgdGhlCj4gPj4+Pj4+ZXBpbG9n dWUgY29tbWFuZHMuIFRodXMgZ3VhcmFudGVlaW5nIHRoYXQgYnkgdGhlIHRpbWUgdGhlIGVwaWxv Z3VlIGlzIHdyaXR0ZW4sCj4gPj4+Pj4+dGhlcmUgd2lsbCBiZSBwbGVudHkgb2Ygc3BhY2UgZm9y IGl0LiBOb3RlIHRoYXQgYSByaW5nX2JlZ2luKCkgY2FsbCBpcyByZXF1aXJlZAo+ID4+Pj4+PnRv IGFjdHVhbGx5IHJlc2VydmUgdGhlIHNwYWNlIChhbmQgZG8gYW55IHBvdGVudGlhbCB3YWl0aW5n KS4gSG93ZXZlciwgdGhhdCBpcwo+ID4+Pj4+Pm5vdCBjdXJyZW50bHkgZG9uZSBhdCByZXF1ZXN0 IGNyZWF0aW9uIHRpbWUuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcmluZ19iZWdpbigpCj4gPj4+Pj4+ Y29kZSBjYW4gYWxsb2NhdGUgYSByZXF1ZXN0LiBIZW5jZSBjYWxsaW5nIGJlZ2luKCkgZnJvbSB0 aGUgcmVxdWVzdCBhbGxvY2F0aW9uCj4gPj4+Pj4+Y29kZSB3b3VsZCBsZWFkIHRvIGluZmluaXRl IHJlY3Vyc2lvbiEgTGF0ZXIgcGF0Y2hlcyBpbiB0aGlzIHNlcmllcyByZW1vdmUgdGhlCj4gPj4+ Pj4+bmVlZCBmb3IgYmVnaW4oKSB0byBkbyB0aGUgYWxsb2NhdGUuIEF0IHRoYXQgcG9pbnQsIGl0 IGJlY29tZXMgc2FmZSBmb3IgdGhlCj4gPj4+Pj4+YWxsb2NhdGUgdG8gY2FsbCBiZWdpbigpIGFu ZCByZWFsbHkgcmVzZXJ2ZSB0aGUgc3BhY2UuCj4gPj4+Pj4+Cj4gPj4+Pj4+VW50aWwgdGhlbiwg dGhlcmUgaXMgYSBwb3RlbnRpYWwgZm9yIGluc3VmZmljaWVudCBzcGFjZSB0byBiZSBhdmFpbGFi bGUgYXQgdGhlCj4gPj4+Pj4+cG9pbnQgb2YgY2FsbGluZyBpOTE1X2FkZF9yZXF1ZXN0KCkuIEhv d2V2ZXIsIHRoYXQgd291bGQgb25seSBiZSBpbiB0aGUgY2FzZQo+ID4+Pj4+PndoZXJlIHRoZSBy ZXF1ZXN0IHdhcyBjcmVhdGVkIGFuZCBpbW1lZGlhdGVseSBzdWJtaXR0ZWQgd2l0aG91dCBldmVy IGNhbGxpbmcKPiA+Pj4+Pj5yaW5nX2JlZ2luKCkgYW5kIGFkZGluZyBhbnkgd29yayB0byB0aGF0 IHJlcXVlc3QuIFdoaWNoIHNob3VsZCBuZXZlciBoYXBwZW4uIEFuZAo+ID4+Pj4+PmV2ZW4gaWYg aXQgZG9lcywgYW5kIGlmIHRoYXQgcmVxdWVzdCBoYXBwZW5zIHRvIGZhbGwgZG93biB0aGUgdGlu eSB3aW5kb3cgb2YKPiA+Pj4+Pj5vcHBvcnR1bml0eSBmb3IgZmFpbGluZyBkdWUgdG8gYmVpbmcg b3V0IG9mIHJpbmcgc3BhY2UgdGhlbiBkb2VzIGl0IHJlYWxseQo+ID4+Pj4+Pm1hdHRlciBiZWNh dXNlIHRoZSByZXF1ZXN0IHdhc24ndCBkb2luZyBhbnl0aGluZyBpbiB0aGUgZmlyc3QgcGxhY2U/ Cj4gPj4+Pj4+Cj4gPj4+Pj4+djI6IFVwZGF0ZWQgdGhlICdyZXNlcnZlZCBzcGFjZSB0b28gc21h bGwnIHdhcm5pbmcgdG8gaW5jbHVkZSB0aGUgb2ZmZW5kaW5nCj4gPj4+Pj4+c2l6ZXMuIEFkZGVk IGEgJ2NhbmNlbCcgb3BlcmF0aW9uIHRvIGNsZWFuIHVwIHdoZW4gYSByZXF1ZXN0IGlzIGFiYW5k b25lZC4gQWRkZWQKPiA+Pj4+Pj5yZS1pbml0aWFsaXNhdGlvbiBvZiB0cmFja2luZyBzdGF0ZSBh ZnRlciBhIGJ1ZmZlciB3cmFwIHRvIGtlZXAgdGhlIHNhbml0eQo+ID4+Pj4+PmNoZWNrcyBhY2N1 cmF0ZS4KPiA+Pj4+Pj4KPiA+Pj4+Pj52MzogSW5jcmVtZW50ZWQgdGhlIHJlc2VydmVkIHNpemUg dG8gYWNjb21tb2RhdGUgSXJvbmxha2UgKGFmdGVyIGZpbmFsbHkKPiA+Pj4+Pj5tYW5hZ2luZyB0 byBydW4gb24gYW4gSUxLIHN5c3RlbSkuIEFsc28gZml4ZWQgbWlzc2luZyB3cmFwIGNvZGUgaW4g TFJDIG1vZGUuCj4gPj4+Pj4+Cj4gPj4+Pj4+djQ6IEFkZGVkIGV4dHJhIGNvbW1lbnQgYW5kIHJl bW92ZWQgZHVwbGljYXRlIFdBUk4gKGZlZWRiYWNrIGZyb20gVG9tYXMpLgo+ID4+Pj4+Pgo+ID4+ Pj4+PnY1OiBSZS13cml0ZSBvZiB3cmFwIGhhbmRsaW5nIHRvIHByZXZlbnQgdW5uZWNlc3Nhcnkg ZWFybHkgd3JhcHMgKGZlZWRiYWNrIGZyb20KPiA+Pj4+Pj5EYW5pZWwgVmV0dGVyKS4KPiA+Pj4+ PlRoaXMgZGlkbid0IGFjdHVhbGx5IGltcGxlbWVudCB3aGF0IEkgc3VnZ2VzdGVkICh3cmFwcGlu ZyBpcyB0aGUgd29yc3QKPiA+Pj4+PmNhc2UsIGhlbmNlIHNraXBwaW5nIHRoZSBjaGVjayBmb3Ig dGhhdCBpcyBicmVha2luZyB0aGUgc2FuaXR5IGNoZWNrKSBhbmQKPiA+Pj4+PnNvIGNoYW5nZWQg dGhlIHBhdGNoIGZyb20gImNvcnJlY3QsIGJ1dCBhIGJpdCBmcmFnaWxlIiB0byBicm9rZW4uIEkn dmUKPiA+Pj4+Pm1lcmdlZCB0aGUgcHJldmlvdXMgdmVyc2lvbiBpbnN0ZWFkLgo+ID4+Pj4+LURh bmllbAo+ID4+Pj5JJ20gY29uZnVzZWQuIEkgdGhvdWdodCB5b3VyIG1haW4gaXNzdWUgd2FzIHRo ZSBlYXJseSB3cmFwcGluZyBub3QgdGhlCj4gPj4+PnNhbml0eSBjaGVjay4gVGhlIGNoZWNrIGlz IHRvIGVuc3VyZSB0aGF0IHRoZSByZXNlcnZhdGlvbiBpcyBsYXJnZSBlbm91Z2ggdG8KPiA+Pj4+ Y292ZXIgYWxsIHRoZSBjb21tYW5kcyB3cml0dGVuIGR1cmluZyByZXF1ZXN0IHN1Ym1pc3Npb24u IFRoYXQgc2hvdWxkIG5vdCBiZQo+ID4+Pj5hZmZlY3RlZCBieSB3aGV0aGVyIGEgd3JhcCBvY2N1 cnMgb3Igbm90LiBXcmFwcGluZyBkb2VzIG5vdCBtYWdpY2FsbHkgYWRkIGFuCj4gPj4+PmV4dHJh IGJ1bmNoIG9mIGR3b3JkcyB0byB0aGUgZW1pdF9yZXF1ZXN0KCkgY2FsbC4gV2hlcmVhcyBtYWtp bmcgdGhlIGNoZWNrCj4gPj4+Pndvcmsgd2l0aCB0aGUgd3JhcCBjb25kaXRpb24gcmVxdWlyZXMg YWRkaW5nIGluIGV4dHJhIHRyYWNraW5nIHN0YXRlIG9mCj4gPj4+PmV4YWN0bHkgd2hlcmUgdGhl IHdyYXAgb2NjdXJyZWQuIFRoYXQgaXMgZXh0cmEgY29kZSB0aGF0IG9ubHkgZXhpc3RzIHRvCj4g Pj4+PmNhdGNoIHNvbWV0aGluZyBpbiB0aGUgdmVyeSByYXJlIGNhc2Ugd2hpY2ggc2hvdWxkIGFs cmVhZHkgaGF2ZSBiZWVuIGNhdWdodAo+ID4+Pj5pbiB0aGUgdmVyeSBjb21tb24gY2FzZS4gSS5l LiBpZiB5b3VyIHJlc2VydmVkIHNpemUgaXMgdG9vIHNtYWxsIHRoZW4geW91Cj4gPj4+PndpbGwg aGl0IHRoZSB3YXJuaW5nIG9uIGV2ZXJ5IGJhdGNoIGJ1ZmZlciBzdWJtaXNzaW9uLgo+ID4+PlRo ZSBwcm9ibGVtIGlzIHRoYXQgaWYgeW91IGFsbG93IGEgd3JhcCBpbiB0aGUgcmVzZXJ2ZSBzaXpl IHRoZW4gdGhlCj4gPj4+cmluZ3NwYWNlIHJlcXVpcmVtZW50cyBhcmUgYmlnZ2VyIHRoYW4gaWYg eW91IGRvbid0IHdyYXAuIEFuZCBzaW5jZSB0aGUKPiA+Pj5hZGQgcmVxdWVzdCBpcyBzcGxpdCB1 cCBpbnRvIG1hbnkgaW50ZWxfcmluZ19iZWdpbiB0aGF0J3MgcG9zc2libGUuIEhlbmNlCj4gPj4+ aWYgeW91IGFsbG93IHdyYXBwaW5nIGluIHRoZSByZXNlcnZlZCBzcGFjZSwgdGhlbiB0aGUgbW9z dCBpbXBvcnRhbnQgY2FzZQo+ID4+PmZvciB0aGUgZGVidWcgY2hlY2sgaXMgdG8gbWFrZSBzdXJl IHRoYXQgaXQgY2F0Y2hlcyBhbnkga2luZCBvZgo+ID4+PnJlc2VydmF0aW9uIG92ZXJmbG93IHdo aWxlIHdyYXBwaW5nLiBUaGUgbm90LXdyYXBwZWQgY2FzZSBpcyBwcm9iYWJseSB0aGUKPiA+Pj5i b3Jpbmcgb25lLgo+ID4+Pgo+ID4+PkFuZCBpbmRlZWQgZXZlbnR1YWxseSB3ZSBzaG91bGQgb3Zl cmZsb3cgc2luY2UgYWNjb3JkaW5nIHRvIHlvdXIgY29tbWVudAo+ID4+PnRoZSB3b3JzdCBjYXNl IGFkZCByZXF1ZXN0IG9uIGlsayBpcyAxMzYgZHdvcmRzLiBBbmQgdGhlIGxhcmdlc3QKPiA+Pj5p bnRlbF9yaW5nX2JlZ2luIGluIHRoZXJlIGlzIDMyIGR3b3Jkcywgd2hpY2ggbWVhbnMgYXQgbW9z dCB3ZSdsbCB0aHJvdwo+ID4+PmF3YXkgMzEgZHdvcmRzIHdoZW4gd3JhcHBpbmcuIFdoaWNoIG1l YW5zIHRoZSAxNjAgZHdvcmRzIG9mIHJlc2VydmF0aW9uCj4gPj4+YXJlIG5vdCBlbm91Z2ggc2lu Y2Ugd2UnZCBuZWVkIDE2NyBkd29yZHMgb2Ygc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlLiBCdXQK PiA+Pj5zaW5jZSB0aGUgc3BhY2VfZW5kIGRlYnVnIGNoZWNrIHdhcyBhIG5vLW9wIGZvciB0aGUg d3JhcHBlZCBjYXNlIHlvdSB3b24ndAo+ID4+PmNhdGNoIHRoaXMgb25lLgo+ID4+VGhlIG1pbmlt dW0gcmVzZXJ2YXRpb24gc2l6ZSBpbiB0aGlzIGNhc2UgaXMgc3RpbGwgb25seSAxMzYuIFRoZSBw cmVwYXJlCj4gPj5jb2RlIGNoZWNrcyBmb3IgdGhlIDMyIHdvcmRzIGFjdHVhbGx5IHJlcXVlc3Rl ZCBhbmQgd3JhcHMgaWYgbmVjZXNzYXJ5LiBJdAo+ID4+dGhlbiBjaGVja3MgZm9yIDEzNiszMiB3 b3JkcyBvZiBzcGFjZS4gSWYgdGhhdCB3b3VsZCBjYXVzZSBhIHdyYXAgaXQgd2lsbAo+ID4+dGhl biBhZGQgb24gdGhlIGFtb3VudCBvZiBzcGFjZSBhY3R1YWxseSBsZWZ0IGluIHRoZSByaW5nIGFu ZCB3YWl0IGZvciB0aGF0Cj4gPj5iaWdnZXIgdG90YWwuIFRoYXQgZ3VhcmFudGVlcyB0aGF0IGl0 IGhhcyB3YWl0ZWQgZm9yIHRoZSAxMzYgYXQgdGhlIHN0YXJ0IG9mCj4gPj50aGUgcmluZy4gVGhl IGNhbGxlciBpcyB0aGVuIGZyZWUgdG8gZmlsbCBpbiB0aGUgMzIgd29yZHMgYW5kIHRoZXJlIGlz IHN0aWxsCj4gPj5ndWFyYW50ZWVkIHRvIGJlIGEgbWluaW11bSBvZiAxMzYgd29yZHMgYXZhaWxh YmxlICh3aXRoIG9yIHdpdGhvdXQgd3JhcHBpbmcpCj4gPj5iZWZvcmUgYW55IGZ1cnRoZXIgd2Fp dCBmb3Igc3BhY2UgaXMgbmVjZXNzYXJ5LiBUaHVzIHRoZSBhZGRfcmVxdWVzdCgpIGNvZGUKPiA+ PmlzIHNhZmUgZnJvbSBmZWFyIG9mIGZhaWx1cmUgaXJyZXNwZWN0aXZlIG9mIHdoZXJlIGFueSB3 cmFwIG1pZ2h0IG9jY3VyLgo+ID4+Cj4gPj4KPiA+Pj5XcnQga2VlcGluZyB0cmFjayBvZiB3cmFw cGluZyB3aGlsZSB0aGUgcmVzZXJ2YXRpb24gaXMgaW4gdXNlLCB0aGUKPiA+Pj5mb2xsb3dpbmcg c2hvdWxkIGRvIHRoYXQgd2l0aG91dCBhbnkgbmVlZCBvZiBhZGRpdGlvbmFsIHRyYWNraW5nOgo+ ID4+Pgo+ID4+Pgo+ID4+PglpbnQgdXNlZF9zaXplID0gcmluZ2J1Zi0+dGFpbCAtIHJpbmdidWYt PnJlc2VydmVkX3RhaWw7Cj4gPj4+Cj4gPj4+CWlmICh1c2VkX3NpemUgPCAwKQo+ID4+PgkJdXNl ZF9zaXplICs9IHJpbmdidWYtPnNpemU7Cj4gPj4+Cj4gPj4+CVdBUk4odXNlZF9zaXplIDwgcmlu Z2J1Zi0+cmVzZXJ2ZWRfc2l6ZSwKPiA+Pj4JICAgICAicmVxdWVzdCByZXNlcnZlZCBzaXplIHRv byBzbWFsbDogJWQgdnMgJWQhXG4iLAo+ID4+PgkgICAgIHVzZWRfc2l6ZSwgcmluZ2J1Zi0+cmVz ZXJ2ZWRfc2l6ZSk7Cj4gPj4+Cj4gPj4+SSB3YXMgbWlzdGFrZW4gdGhhdCB5b3UgY2FuIHJldXNl IF9faW50ZWxfcmluZ19zcGFjZSAoc2luY2UgdGhhdCBoYXMKPiA+Pj5zbGlnaHRseSBkaWZmZXJl bnQgcmVxdWlyZW1lbnRzKSwgYnV0IHRoaXMgZ2l2ZXMgeW91IGEgbmljZWx5IGxvY2FsaXplZAo+ ID4+PmNoZWNrIGZvciByZXNlcnZhdGlvbiBvdmVyZmxvdyB3aGljaCB3b3JrcyBldmVuIHdoZW4g eW91IHdyYXAuIE9mYyBpdAo+ID4+Pndvbid0IHdvcmsgaWYgYW4gYWRkX3JlcXVlc3QgaXMgYmln Z2VyIHRoYW4gdGhlIGVudGlyZSByaW5nLCBidXQgdGhhdCdzCj4gPj4+aW1wb3NzaWJsZSBhbnl3 YXkgc2luY2Ugd2UgY2FuIGF0IG1vc3QgcmVzZXJ2ZSByaW5nYnVmLT5zaXplIC0KPiA+Pj5JOTE1 X1JJTkdfRlJFRV9TUEFDRS4KPiA+PlRoZSBwcm9ibGVtIHdpdGggdGhlIGFib3ZlIGNhbGN1bGF0 aW9uIGlzIHRoYXQgaXQgaW5jbHVkZXMgdGhlIHdhc3RlZCBzcGFjZQo+ID4+YXQgdGhlIGVuZCBv ZiB0aGUgcmluZy4gVGh1cyBpdCB3aWxsIGNvbXBsYWluIHRoZSByZXNlcnZlZCBzaXplIHdhcyB0 b28KPiA+PnNtYWxsIHdoZW4gaW4gZmFjdCBpdCB3YXMganVzdCBmaW5lLgo+ID5PayBJIGFnYWlu IG1pc3VuZGVyc3Rvb2QgeW91ciBwYXRjaCBhIGJpdCBzaW5jZSBpdCBkaWRuJ3QgcXVpdGUgZG8g d2hhdCBJCj4gPmV4cGVjdCwgYW5kIEkgc3RhbmQgY29ycmVjdGVkIHRoYXQgdjUgd29ya3MgdG9v LiBCdXQgSSBzdGlsbCBzZWVtIHRvIGZhaWwKPiA+dG8gZ2V0IG15IG1haW4gY29uY2VybiBhY3Jv c3MuIEknbGwgc2VlIHdoZXRoZXIgSSBjYW4gd2hpcCB1cCBhIHBhdGNoIGFzIGEKPiA+c2hvcnQg ZGVtb25zdHJhdGlvbiwgbWF5YmUgdGhhdCBoZWxwcyB0byB1bmNvbmZ1c2UgdGhpcyBkaWN1c3Np b24uCj4gPgo+ID5Gb3Igbm93IEkgdGhpbmsgd2UncmUgY292ZXJlZCB3aXRoIGVpdGhlciB2NCBv ciB2NSBzbyBzdGlja2luZyB3aXRoIGVpdGhlcgo+ID5pcyBvayB3aXRoIG1lLgo+ID4tRGFuaWVs Cj4gCj4gSSB0aGluayB2NSBpcyBtdWNoIGJldHRlci4gSXQgcmVkdWNlcyB0aGUgcmluZyBzcGFj ZSB3YXN0YWdlIHdoaWNoIEkgdGhvdWdodAo+IHdhcyB5b3VyIG1haW4gY29uY2Vybi4KCk9rIHdp dGggbWUgdG9vIC0gSSBzaW1wbHkgZGlkbid0IHBpY2sgaXQgdXAgd2hlbiBtZXJnaW5nIHllc3Rl cmRheSBiZWNhdXNlCkkgY291bGRuJ3QgaW1tZWRpYXRlbHkgY29udmluY2UgbXlzZWxmIGl0J3Mg Y29ycmVjdCwgYnV0IHJlYWxseSB3YW50ZWQgdG8KcHVsbCBpbiB5b3VyIHNlcmllcy4gVW5mb3J0 dW5hdGVseSBpdCdzIG5vdyBidXJyaWVkIGJlbG93IHBpbGVzIG9mCnBhdGNoZXMsIHNvIGNhbiB5 b3UgcGxlYXNlIGRvIGEgZGVsdGEgcGF0Y2g/Cgo+IFRoZSBwcm9ibGVtIHdpdGggYSBtb3JlIHNp bXBsaXN0aWMgYXBwcm9hY2ggdGhhdCBqdXN0IGRvdWJsZXMgdGhlIG1pbmltdW0KPiByZXNlcnZl IHNpemUgdG8gZW5zdXJlIHRoYXQgaXQgd2lsbCBmaXQgYmVmb3JlIG9yIGFmdGVyIGEgd3JhcCBp cyB0aGF0IHlvdQo+IGFyZSBkb3VibGluZyB0aGUgcmVzZXJ2ZSBzaXplLiBUaGF0IHRvbyBpcyBy YXRoZXIgd2FzdGVmdWwgb2YgcmluZyBzcGFjZS4gSXQKPiBhbHNvIG1lYW5zIHRoYXQgeW91IG9u bHkgZmluZCBvdXQgd2hlbiB0aGUgcmVzZXJ2ZSBzaXplIGlzIHRvbyBzbWFsbCB3aGVuCj4geW91 IGhpdCB0aGUgbWF4aW11bSB1c2FnZSBjb2luY2lkZW50IHdpdGggYSB3b3JzdCBjYXNlIHdyYXAg cG9pbnQuIFdoZXJlYXMKPiB0aGUgdjUgbWV0aG9kIG1lYW5zIHRoYXQgeW91IG5vdGljZSBhIHRv byBzbWFsbCByZXNlcnZlIHdoZXRoZXIgd3JhcHBpbmcgb3IKPiBub3QuCgpXZSBkb24ndCBuZWVk IHRvIGRvdWJsZSB0aGUgcmVzZXJ2YXRpb24gc2luY2UgdGhlIGFkZF9yZXF1ZXN0IHRhaWwgaXMK c3BsaXQgdXAgaW50byBtYW55IGluZGl2aWR1YWwgaW50ZWxfcmluZ19iZWdpbi4gQW5kIHdlJ2Qg b25seSBuZWVkIHRvIHdyYXAKZm9yIHRoZSBsYXJnZXN0IG9mIHRob3NlLCB3aGljaCBpcyBzdWJz dGFudGlhbGx5IGxlc3MgdGhhbiB0aGUgZW50aXJlCnJlc2VydmF0aW9uLiBGdXJ0aGVybW9yZSB3 aXRoIHRoZSByZXNlcnZhdGlvbiB0aGVzZSBjb21tYW5kcyBjYW4ndCBldmVyCmZhaWwsIHNvIGZv ciB0aG9zZSB3ZSBrbm93IGFyZSBvbmx5IHVzZWQgaW4gdGhlIGFkZF9yZXF1ZXN0IHRhaWwgd2Ug Y291bGQKZ28gdG8gYSB3cmFwLW9ubHkgaW50ZWxfcmluZ19iZWdpbiB3aGljaCBuZXZlciB3YWl0 cyBhbmQgaGF2ZSBvbmUgYXQgYQpkd29yZCBjbWQgYm91bmRhcnkuIFRoYXQgbWVhbnMgd2UnZCBu ZWVkIHRvIG92ZXJlc3RpbWF0ZSB0aGUgbmVlZGVkCnJpbmdidWZmZXIgc3BhY2UgYnkganVzdCBh IGZldyBkd29yZHMgKG5hbWVseSB0aGUgc2l6ZSBvZiB0aGUgbG9uZ2VzdCBDUwpjbWQgd2UgZW1p dCB1bmRlciByZXNlcnZhdGlvbikuIFdoaWNoIGlzIGFyb3VuZCA2IGR3b3JkcyBvciBzbyBpaXJj LiBBbmQKdG8gYXZvaWQgY2hhbmdpbmcgaWxrIHdlIGNvdWxkIGp1c3Qgc3BlY2lhbCBjYXNlIHRo YXQgaW4gcmVzZXJ2ZV9zcGFjZSgpLgoKSW4gcHJhY3RpY2UgSSBkb24ndCB0aGluayB0aGVyZSB3 b3VsZCBiZSBhbnkgZGlmZmVyZW5jZSB3aXRoIHlvdXIgdjUgc2luY2UKZXNwZWNpYWxseSB3aXRo IHRoZSBzY2hlZHVsZXIgd2Ugc2hvdWxkbid0IGV2ZXIgb3ZlcmZpbGwgcmluZ3MgcmVhbGx5LiBC dXQKdGhlIGNsZWFyIHVwc2lkZSBpcyB0aGF0IHRoZSByZXNlcnZlX3NwYWNlX2VuZCBjaGVjayB3 b3VsZCBiZSBpbmRlcGVuZGVudApvZiBhbnkgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBob3cg cmVzZXJ2YXRpb24gdnMuIHdyYXBwaW5nIGlzIGRvbmUKZXhhY3RseS4gQW5kIGhlbmNlIHJvYnVz dCBhZ2FpbnN0IGFueSBmdXR1cmUgZnVtYmxlcyBpbiB0aGlzIGFyZWEuIExvb2tpbmcKYXQgb3Vy IGhpc3Rvcnkgb2YgdGhlIHJlbGV2YW50IGNvZGUgd2UgY2FuIGV4cGVjdCBhIGxvdCBvZiB0aG9z ZS4KLURhbmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29y cG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK