From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 2/5] drm/i915: Use batch pools with the command parser Date: Wed, 5 Nov 2014 10:50:24 +0100 Message-ID: <20141105095024.GY26941@phenom.ffwll.local> References: <1415042385-26445-1-git-send-email-bradley.d.volkin@intel.com> <1415042385-26445-3-git-send-email-bradley.d.volkin@intel.com> <20141104101759.GF26941@phenom.ffwll.local> <20141104163500.GA1064@bdvolkin-ubuntu-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f172.google.com (mail-wi0-f172.google.com [209.85.212.172]) by gabe.freedesktop.org (Postfix) with ESMTP id 400806E7F3 for ; Wed, 5 Nov 2014 01:50:10 -0800 (PST) Received: by mail-wi0-f172.google.com with SMTP id bs8so11843560wib.5 for ; Wed, 05 Nov 2014 01:50:09 -0800 (PST) Content-Disposition: inline In-Reply-To: <20141104163500.GA1064@bdvolkin-ubuntu-desktop> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Volkin, Bradley D" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBOb3YgMDQsIDIwMTQgYXQgMDg6MzU6MDBBTSAtMDgwMCwgVm9sa2luLCBCcmFkbGV5 IEQgd3JvdGU6Cj4gT24gVHVlLCBOb3YgMDQsIDIwMTQgYXQgMDI6MTc6NTlBTSAtMDgwMCwgRGFu aWVsIFZldHRlciB3cm90ZToKPiA+IE9uIE1vbiwgTm92IDAzLCAyMDE0IGF0IDExOjE5OjQyQU0g LTA4MDAsIGJyYWRsZXkuZC52b2xraW5AaW50ZWwuY29tIHdyb3RlOgoKPiA+IEhtLCBubyBpbi1s aW5lIGNsZmx1c2ggYW5kIGNhY2hlZCBjcHUgbW1hcHMuIEhvdyBzbG93IGlzIHRoaXMgb24gdmx2 Pwo+IAo+IE5vIHN5c3RlbSB0byB0ZXN0IG9uLiBNYXliZSB3ZSBjYW4gZ2V0IHNvbWUgcWEgcGVy ZiB0ZXN0aW5nIG9uIGFsbCByZWxldmFudAo+IHBsYXRmb3Jtcywgc2luY2Ugd2UnbGwgd2FudCBh biBvdmVyYWxsIHNlbnNlIG9mIHBlcmYgaW1wYWN0IGFueWhvdy4KPiAKPiBJcyB0aGVyZSBhIHNw ZWNpZmljIGNoYW5nZSB5b3Ugd291bGQgbWFrZSBoZXJlIHRvIGF2b2lkIHRoZSBpc3N1ZT8KClRo ZSBmYXN0ZXN0IHVwbG9hZCBwYXRoIGFmYWlrICh3aXRob3V0IGJpZyBzZXR1cCBjb3N0cyBsaWtl IG5ldwpwYWdldGFibGVzKSBpcyB3cml0ZSArIGltbWVkaWF0ZSBjbGZsdXNoaW5nLiBCdXQgdGhh dCBtZWFucyB0aGF0IHRoZSBjbWQKcGFyc2luZyBhbmQgd3JpdGUtb3V0IHRvIHRoZSBzaGFkb3cg YmF0Y2ggbmVlZHMgdG8gYmUgbWVyZ2VkIGZpcnN0LgoKVGhlIGRvd25zaWRlIG9mIHlvdXIgYXBw cm9hY2hlIGhlcmUgb2YgZmlyc3Qgc2V0dGluZyB0aGluZ3MgdG8gdGhlIGNwdQp3cml0ZSBkb21h aW4gaXMgdGhhdCB3ZSdsbCBpbmN1ciBhbiBhZGRpdGlvbmFsIGNsZmx1c2ggcGFzcyBiZWZvcmUg d2UgY29weQp0aGluZ3MuIFdoaWNoIGlzbid0IG5lZWRlZCBzaW5jZSB3ZSdsbCBvdmVyd3JpdGUg YWxsIHRoZSBjYWNoZWxpbmVzCmFueXdheS4gU28gYW4gaW50ZXJtZWRpYXRlIHdvdWxkIGJlIHRv IGxlYXZlIHRoZSBvYmplY3QgaW4gdGhlIEdUVAooZmx1c2hlZCBkb21haW4pIGFuZCBvbmx5IGNs Zmx1c2ggYWZ0ZXIgdGhlIGNvcHkgYW5kIGNtZCBwYXJzZXIgaXMgZG9uZS4KCkJ1dCBzaW5jZSBj bGZsdXNoIGlzIG9ubHkgcmVxdWlyZWQgb24gdmx2IChMTEMgbWFjaGluZXMgYXJlIGNvaGVyZW50 KSB5b3UKcmVhbGx5IG5lZWQgc3VjaCBhIGJveCB0byB0ZXN0L2RldmVsb3AgdGhpcy4gU28gSSBn dWVzcyB3ZSdsbCBqdXN0IHdhaXQKd2l0aCB0aGlzLgoKPiA+ID4gKwlpZiAoIXJldCkgewo+ID4g PiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oc2hhZG93X2JhdGNo X29iaiwKPiA+ID4gKwkJCQkJCQlmYWxzZSk7Cj4gPiAKPiA+IFRoaXMgc21lbGxzIGxpa2UgaGFj a2luZyBhcm91bmQgdGhlIGRvbWFpbiB0cmFja2luZyBzeXN0ZW0uIFRoZSBiYXRjaCBpcwo+ID4g ZXhlY3V0ZWQgYnkgdGhlIGdwdSwgZ3R0IGRvbWFpbiBpcyBmb3IgY3B1IGFjY2Vzcy4gVGhpcyBt aWdodCBhbHNvIGJlIGEKPiA+IHJlYXNvbiB3aHkgdGhlIHNocmlua2VyIHdyZWFrcyBoYXZvYyB3 aXRoIHlvdSBzaGFkb3cgcGF0Y2hlcy4gV2l0aCB0aGUKPiA+IGNvcnJlY3QgcGVuZGluZ19yZWFk X2RvbWFpbnMgbW92ZV90b19hY3RpdmUgc2hvdWxkIHRha2UgY2FyZSBvZiB0aGluZ3MKPiA+IG1v c3RseS4KPiAKPiBPaywgSSdsbCBsb29rIGF0IHRoaXMgYWdhaW4uIEkgd2FzIHVzaW5nIHRoZSBn b2xkZW4gY29udGV4dCBiYXRjaCBidWZmZXIgY29kZQo+IGFzIGEgcmVmZXJlbmNlIGZvciB0aGlz LCBzbyBwZXJoYXBzIHRoZXJlJ3Mgc29tZXRoaW5nIHRvIGZpeCB0aGVyZSBhcyB3ZWxsLgoKSG0s IGluZGVlZCB0aGF0J3MgYSBiaXQgaGFja2VkIHVwIHRvby4gU28gbGV0J3MgZG9jdW1lbnQgdGhl IHNlcXVlbmMgYXMKaXQncyB1c2VkIGJ5IGV4ZWNidWY6CgppOTE1X2dlbV9leGVjYnVmZmVyX21v dmVfdG9fZ3B1IHRha2VzIGNhcmUgb2YgYW55IGNwdSBhbmQgZ3B1IHNpZGUgY2FjaGUKZmx1c2hp bmcuIEZvciB0aGUgY21kIHBhcnNlciB5b3Ugc2hvdWxkIGJlIGFibGUgdG8gcmV1c2UgdGhhdCBq dXN0IGJ5CnB1dHRpbmcgdGhlIHRoZSBzaGFkb3cgYmF0Y2ggdm1hIG9udG8gdGhlIGV4ZWNidWYg bGlzdC4gcmVuZGVyIGN0eCBpbml0CndvdWxkIG5lZWQgdG8gc2VuZCBpbiBhIHNpbmdsZSBlbnRy eSB2bWEgbGlzdC4KCmk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19hY3RpdmUgdXBkYXRlcyB0 aGUgZG9tYWluIHRyYWNraW5nIGFuIHB1dHMgdGhlCnZtYSBvbnRvIHRoZSBhY3RpdmUgbGlzdC4g VGhhdCByZXF1aXJlcyBjb3JyZWN0bHkgYWRqdXN0ZWQKcGVuZGluZ19yZWFkX2RvbWFpbnMgdGhv dWdoLgoKV2l0aCB0aGVzZSB0d28gbm8gc2V0X3RvX2d0dCBkb21haW4gc2hvdWxkIGJlIHJlcXVp cmVkIGZvciBmbHVzaGluZyBkYXRhCm91dC4gTWlrYSwgY2FuIHlvdSBwZXJoYXBzIGxvb2sgaW50 byB0aGlzLCB0b2dldGhlciB3aXRoIGtlcm5lbGRvYyBmb3IgdGhlCnJlbmRlciBpbml0IGZ1bmN0 aW9ucz8KCj4gCj4gPiAKPiA+ID4gKwkJaWYgKHJldCkKPiA+ID4gKwkJCURSTV9ERUJVR19EUklW RVIoIkNNRDogRmFpbGVkIHRvIHNldCBiYXRjaCBHVFQgZG9tYWluXG4iKTsKPiA+ID4gKwl9Cj4g PiA+ICAKPiA+ID4gIAlyZXR1cm4gcmV0Owo+ID4gPiAgfQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZG1hLmMKPiA+ID4gaW5kZXggOWE3MzUzMy4uZGVhMGY0NSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jCj4gPiA+IEBAIC0xODkxLDYgKzE4OTEsNyBAQCBpbnQgaTkxNV9kcml2 ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPiA+ICAKPiA+ID4gIAkJbXV0ZXhf bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ID4gPiAgCQlpOTE1X2dlbV9jbGVhbnVwX3Jpbmdi dWZmZXIoZGV2KTsKPiA+ID4gKwkJaTkxNV9nZW1fYmF0Y2hfcG9vbF9maW5pKCZkZXZfcHJpdi0+ bW0uYmF0Y2hfcG9vbCk7Cj4gPiA+ICAJCWk5MTVfZ2VtX2NvbnRleHRfZmluaShkZXYpOwo+ID4g PiAgCQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiA+ID4gIAkJaTkxNV9nZW1f Y2xlYW51cF9zdG9sZW4oZGV2KTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+IGlu ZGV4IGZiZjEwY2MuLjUwZDk3NGQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+ID4gPiBAQCAtMTE0NSw2ICsxMTQ1LDEzIEBAIHN0cnVjdCBpOTE1X2dlbV9tbSB7Cj4gPiA+ ICAJICovCj4gPiA+ICAJc3RydWN0IGxpc3RfaGVhZCB1bmJvdW5kX2xpc3Q7Cj4gPiA+ICAKPiA+ ID4gKwkvKgo+ID4gPiArCSAqIEEgcG9vbCBvZiBvYmplY3RzIHRvIHVzZSBhcyBzaGFkb3cgY29w aWVzIG9mIGNsaWVudCBiYXRjaCBidWZmZXJzCj4gPiA+ICsJICogd2hlbiB0aGUgY29tbWFuZCBw YXJzZXIgaXMgZW5hYmxlZC4gUHJldmVudHMgdGhlIGNsaWVudCBmcm9tCj4gPiA+ICsJICogbW9k aWZ5aW5nIHRoZSBiYXRjaCBjb250ZW50cyBhZnRlciBzb2Z0d2FyZSBwYXJzaW5nLgo+ID4gPiAr CSAqLwo+ID4gPiArCXN0cnVjdCBpOTE1X2dlbV9iYXRjaF9wb29sIGJhdGNoX3Bvb2w7Cj4gPiA+ ICsKPiA+ID4gIAkvKiogVXNhYmxlIHBvcnRpb24gb2YgdGhlIEdUVCBmb3IgR0VNICovCj4gPiA+ ICAJdW5zaWduZWQgbG9uZyBzdG9sZW5fYmFzZTsgLyogbGltaXRlZCB0byBsb3cgbWVtb3J5ICgz Mi1iaXQpICovCj4gPiA+ICAKPiA+ID4gQEAgLTI3ODIsNiArMjc4OSw3IEBAIHZvaWQgaTkxNV9j bWRfcGFyc2VyX2ZpbmlfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKPiA+ID4g IGJvb2wgaTkxNV9uZWVkc19jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp Owo+ID4gPiAgaW50IGk5MTVfcGFyc2VfY21kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n LAo+ID4gPiAgCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29iaiwKPiA+ ID4gKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpzaGFkb3dfYmF0Y2hfb2JqLAo+ ID4gPiAgCQkgICAgdTMyIGJhdGNoX3N0YXJ0X29mZnNldCwKPiA+ID4gIAkJICAgIGJvb2wgaXNf bWFzdGVyKTsKPiA+ID4gIAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiA+ID4gaW5kZXgg NGRiZDdiOS4uYzU5MTAwZCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4g PiA+IEBAIC0yNTAwLDYgKzI1MDAsMTQgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fZnJlZV9yZXF1 ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiA+ID4gIAlpZiAocmVx dWVzdC0+Y3R4KQo+ID4gPiAgCQlpOTE1X2dlbV9jb250ZXh0X3VucmVmZXJlbmNlKHJlcXVlc3Qt PmN0eCk7Cj4gPiA+ICAKPiA+ID4gKwlpZiAocmVxdWVzdC0+YmF0Y2hfb2JqICYmCj4gPiA+ICsJ ICAgICFsaXN0X2VtcHR5KCZyZXF1ZXN0LT5iYXRjaF9vYmotPmJhdGNoX3Bvb2xfbGlzdCkpIHsK PiA+ID4gKwkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShyZXF1 ZXN0LT5yaW5nLT5kZXYpOwo+ID4gPiArCj4gPiA+ICsJCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfcHV0 KCZkZXZfcHJpdi0+bW0uYmF0Y2hfcG9vbCwKPiA+ID4gKwkJCQkJcmVxdWVzdC0+YmF0Y2hfb2Jq KTsKPiA+ID4gKwl9Cj4gPiAKPiA+IFRoaXMgbG9va3MgYSBiaXQgbGlrZSByZWludmVudGVkIGFj dGl2ZSB0cmFja2luZy4gSWYgd2UgY29weSB0aGUgbGliZHJtCj4gPiBjYWNoZSBkZXNpZ24gYSBi aXQgbW9yZSB0aGUgY2FjaGUgd291bGQgc2ltcGx5IHdhbGsgdGhlIGFjdGl2ZSBsaXN0IHdoZW4K PiA+IHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgaW5hY3RpdmUgbGlzdCBhbmQgc2hvdmVsIGFsbCB0 aGUgb2JqZWN0cyB3aXRoCj4gPiAtPmFjdGl2ZS4KPiA+IAo+ID4gVGhlIGFkdmFudGFnZSB3b3Vs ZCBiZSB0aGF0IHdlIHdvdWxkbid0IGxlYWsgc3BlY2lhbCBiYXRjaF9wb29sX3B1dCBjb2RlCj4g PiBhbGwgb3ZlciB0aGUgcGxhY2UsIGtlZXBpbmcgdGhpbmdzIG5pY2UmdGlkeS4KPiAKPiBDaHJp cyBoYWQgYWxzbyBzdWdnZXN0ZWQgbG9va2luZyBhdCB0aGUgbGliZHJtIGNhY2hlIHdpdGggcmVz cGVjdCB0byB0aGlzLAo+IGJ1dCBJIHdhcyBjb25jZXJuZWQgYWJvdXQgdGhlIGltcGFjdCBvZiB0 aGUgc2NoZWR1bGVyIHJlb3JkZXJpbmcgcmVxdWVzdHMuCj4gSSdkIGhhdmUgdG8gZ28gYmFjayBh bmQgbG9vayBhdCBsaWJkcm0sIGJ1dCBpdCBzb3VuZGVkIGxpa2UgaXQgd2FzIHJlbHlpbmcKPiBv biB0aGUgZmlmbyBuYXR1cmUgb2Ygc3VibWlzc2lvbnMuIENvdWxkIGJlIHdyb25nIHRob3VnaC4K Ckl0IGp1c3Qgd2Fsa3MgdGhlIGxpc3QgYW5kIG1vdmVzIGFsbCB0aGUgbm9uLWFjdGl2ZSBzdHVm ZiBvdmVyLiBOb3QKdGVycmlibHkgZWZmaWNpZW50IGluIHRoZSBmYWNlIG9mIGEgc2NoZWR1bGVy IChvciBtdWx0aXBsZSByaW5ncyBldmVuKSwKYnV0IEkgdGhpbmsgd2UgY291bGQgc3RhcnQgdG8g Y2FyZSBhYm91dCB0aGlzIGlmIGl0IHR1cm5zIG91dCB0byBiZSBhIHJlYWwKcHJvYmxlbS4KCj4g UGx1cywgd2UncmUgaGFyZGx5IGxlYWtpbmcgYmF0Y2hfcG9vbF9wdXQgImFsbCBvdmVyIHRoZSBw bGFjZSIgOikuIFRoZXJlJ3MKPiBleGFjdGx5IDMgY2FsbCBzaXRlcyAtIHRoaXMgb25lIGZvciBi YXRjaGVzIHRoYXQgZXhlY3V0ZSBhbmQgY29tcGxldGUsCj4gb25lIGZvciB0aGUgY2hhaW5lZCBi YXRjaCBmYWxsYmFjaywgYW5kIG9uZSBpbiB0aGUgZXhlY2J1ZiBlcnJvciBoYW5kbGluZwo+IHBh dGguIFNvIG15IGluY2xpbmF0aW9uIGlzIHJlYWxseSB0byBsZWF2ZSBpdCBhcyBpcy4KCk9oIEkg a25vdywgZXZlcnlvbmUncyBqdXN0IGFkZGluZyAzIGNhbGxzaXRlcyBvdmVyIHRoZSBkcml2ZXIg Oy0pIEdFTSBpcwphbHJlYWR5IHdheSB0b28gY29tcGxleCBmb3IgbWUgdG8gZnVsbHkgdW5kZXJz dGFuZCBhbGwgdGhlIGNvcm5lcnMsIHNvIEkKdGVuZCB0byBiZSBmYWlybHkgbmFzdHkgd2l0aCBz ZXBhcmF0aW9uIGFuZCBlbmNhcHN1bGF0aW9uLiBFLmcuIEkgdG90YWxseQphZ3JlZSB3aXRoIENo cmlzIHRoYXQgYWxsIHRoZSBleGVjbGlzdCBzcGVjaWFsIGNhc2VzIHdlJ3JlIHNwcmlua2xpbmcg YWxsCm92ZXIgdGhlIGRyaXZlciB3aWxsIGNvbWUgYmFjayBhbmQgYml0ZSB1cyBoYXJkLiBFc3Bl Y2lhbGx5IHNpbmNlIHRoZXkKc2VlbSB0byBiZSBncm93aW5nIHN0aWxsIHdpdGggcmVjZW50IHBh dGNoZXMuCgo+ID4gPiAgCQkJLyoKPiA+ID4gLQkJCSAqIFhYWDogQWN0dWFsbHkgZG8gdGhpcyB3 aGVuIGVuYWJsaW5nIGJhdGNoIGNvcHkuLi4KPiA+ID4gKwkJCSAqIFNldCB0aGUgRElTUEFUQ0hf U0VDVVJFIGJpdCB0byByZW1vdmUgdGhlIE5PTl9TRUNVUkUKPiA+ID4gKwkJCSAqIGJpdCBmcm9t IE1JX0JBVENIX0JVRkZFUl9TVEFSVCBjb21tYW5kcyBpc3N1ZWQgaW4gdGhlCj4gPiA+ICsJCQkg KiBkaXNwYXRjaF9leGVjYnVmZmVyIGltcGxlbWVudGF0aW9ucy4gV2Ugc3BlY2lmaWNhbGx5Cj4g PiA+ICsJCQkgKiBkb24ndCB3YW50IHRoYXQgc2V0IHdoZW4gdGhlIGNvbW1hbmQgcGFyc2VyIGlz Cj4gPiA+ICsJCQkgKiBlbmFibGVkLgo+ID4gPiAgCQkJICoKPiA+ID4gLQkJCSAqIFNldCB0aGUg RElTUEFUQ0hfU0VDVVJFIGJpdCB0byByZW1vdmUgdGhlIE5PTl9TRUNVUkUgYml0Cj4gPiA+IC0J CQkgKiBmcm9tIE1JX0JBVENIX0JVRkZFUl9TVEFSVCBjb21tYW5kcyBpc3N1ZWQgaW4gdGhlCj4g PiA+IC0JCQkgKiBkaXNwYXRjaF9leGVjYnVmZmVyIGltcGxlbWVudGF0aW9ucy4gV2Ugc3BlY2lm aWNhbGx5IGRvbid0Cj4gPiA+IC0JCQkgKiB3YW50IHRoYXQgc2V0IHdoZW4gdGhlIGNvbW1hbmQg cGFyc2VyIGlzIGVuYWJsZWQuCj4gPiA+ICsJCQkgKiBOQjogQnkgc2V0dGluZyB0aGlzIGZsYWcs IHdlJ3JlIGdvaW5nIHRvIGhpdCB0aGUKPiA+ID4gKwkJCSAqIG5vcm1hbCBzZWN1cmUgZGlzcGF0 Y2ggcGF0aCBiZWxvdy4gVGhhdCBwYXRoIHdpbGwKPiA+ID4gKwkJCSAqIGRvIGFuIGV4dHJhIHBp biBvZiB0aGUgc2hhZG93IGJhdGNoIG9iamVjdCBhbmQgdGhlbgo+ID4gPiArCQkJICogdW5waW4g YWZ0ZXIgLT5ndC5kb19leGVjYnVmKCkuIEF0IHRoYXQgcG9pbnQsIHRoZQo+ID4gPiArCQkJICog b2JqZWN0IHdpbGwgaGF2ZSB0aGUgc2luZ2xlIG91dHN0YW5kaW5nIHBpbiBmcm9tCj4gPiA+ICsJ CQkgKiBqdXN0IGJlZm9yZSBjYWxsaW5nIGk5MTVfcGFyc2VfY21kcygpLCBhbmQgd2lsbCBnZXQK PiA+ID4gKwkJCSAqIHVucGlubmVkIHZpYSBlYl9kZXN0cm95KCkgYW5kIF9fRVhFQ19PQkpFQ1Rf SEFTX1BJTi4KPiA+ID4gIAkJCSAqLwo+ID4gCj4gPiBUaGF0IHNvdW5kcyBsaWtlIHRoaXMgYWRk aXRpb25hbCBwaW4gc2hvdWxkIGJlIHB1dCBpbnRvIHRoZSBjbWQgcGFyc2VyLAo+ID4ganVzdCBh cm91bmQgdGhlIGNvcHkgZnVuY3Rpb24uCj4gCj4gSSBzdXBwb3NlIHdlIGNvdWxkIGRvIHRoYXQu IEkgaGFkIG9yaWdpbmFsbHkgYmVlbiB0cnlpbmcgdG8ga2VlcCBpOTE1X3BhcnNlX2NtZHMoKQo+ IHRvIG9ubHkgbWFwcGluZy9wYXJzaW5nIHRoZSBiYXRjaCwgYnV0IGl0J3MgZ3Jvd24gYmV5b25k IHRoYXQgYWxyZWFkeSBJIHRoaW5rLgoKWWVhaCBJIHRoaW5rIHRoYXQgc3BsaXQgd291bGQgbWFr ZSBzZW5zZSwgYnV0IG5vdyB3aXRoIHRoZSBiYXRjaCBjb3B5IGl0J3MKcHJvYmFibHkgYmV0dGVy IHRvIGhhdmUgaXQgd2l0aGluIGk5MTVfY21kX3BhcnNlci5jCj4gCj4gPiAKPiA+IEFsc28gZG9f ZXhlY2J1ZiBpcyBhbHJlYWR5IHdheSB0b28gYmlnIGEgZnVuY3Rpb24uIEkgdGhpbmsgaXQgd291 bGQgYmUKPiA+IGdvb2QgdG8gZXh0cmFjdCBhbGwgdGhlIFNFQ1VSRV9ESVNQQVRDSC9jbWQgcGFy c2VyL2JhdGNoX2JvIHNwZWNpYWwKPiA+IGhhbmRsaW5nIGNvZGUgaW50byBhIG5ldyBmdW5jdGlv biBmb3IgY2xhcml0eS4gQW5kIHRoZW4gaWYgcG9zc2libGUgbm90Cj4gPiBsZWFrIGFueSBvZiB0 aGUgY2xlYW51cCBjb2RlIG91dC4KPiAKPiBUaGUgaXNzdWUgaXMgYWxsIHRoZSBwb3RlbnRpYWwg ZmFpbHVyZSBwb2ludHMgYWZ0ZXIgdGhpcyBibG9jay4gSSdsbCBsb29rIGF0IGl0Cj4gYWdhaW4g YW5kIHNlZSBpZiB0aGVyZSdzIGEgd2F5IHRvIGtlZXAgaXQgY2xlYW4uCgpZZWFoLiBBbHRob3Vn aCBJIGhhdmUgdG8gYWdyZWUgdGhhdCB0aGUgb3RoZXIgbW90aXZhdGlvbiBmb3IgdGhpcyByZXF1 ZXN0CndhcyB0byBtYWtlIHN1cmUgeW91J2xsIGhhdmUgdG8gdGhpbmsgYWJvdXQgbm8gbGVha2lu ZyBzdWNoIGNsZWFudXBzIGZvcgplcnJvciBwYXRocywgbGlrZSB0aGUgdW5waW4gYmVsb3cgOy0p Cj4gCj4gPiAKPiA+IAo+ID4gPiArCQkJZmxhZ3MgfD0gSTkxNV9ESVNQQVRDSF9TRUNVUkU7Cj4g PiA+ICAJCX0KPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gQEAgLTE0MTgsNiArMTQ2MSwxNCBAQCBl cnI6Cj4gPiA+ICAJaTkxNV9nZW1fY29udGV4dF91bnJlZmVyZW5jZShjdHgpOwo+ID4gPiAgCWVi X2Rlc3Ryb3koZWIpOwo+ID4gPiAgCj4gPiA+ICsJaWYgKHJldCAmJiByaW5nICYmIHNoYWRvd19i YXRjaF9vYmopIHsKPiA+ID4gKwkJaWYgKGk5MTVfZ2VtX29ial9pc19waW5uZWQoc2hhZG93X2Jh dGNoX29iaikpCj4gPiA+ICsJCQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihzaGFkb3dfYmF0 Y2hfb2JqKTsKPiA+IAo+ID4gV2hpY2ggd291bGQgYWxzbyBjbGVhbiB1cCB0aGlzIGNvZGUsIHdo aWNoIGxvb2tzIG1vcmUgbGlrZSBhIGhhY2sgdG8gd29yawo+ID4gYXJvdW5kIHRoZSBwaW5fY291 bnQgY2hlY2sgb24gZmluYWwgdW5yZWYgdGhhbiBhbnl0aGluZyBzb2xpZCBhbmQKPiA+IGludGVu dGlvbmFsIDstKQo+IAo+IFRoaXMgaXMgZXJyb3IgcGF0aCBjbGVhbnVwLCBhdCBsZWFzdCBmb3Ig YSB3aW5kb3cgd2hlcmUgd2UndmUgYWxsb2NhdGVkIHRoZQo+IHNoYWRvdyBiYXRjaCwgcGlubmVk IGl0LCBidXQgaGF2ZW4ndCBob29rZWQgaXQgaW50byB0aGUgdm1hIGxpc3QuIEFnYWluLAo+IEkn bGwgc2VlIGlmIHRoZXJlJ3MgYSBjbGVhbmVyIHdheSB0byBkbyBpdCwgYnV0IEkgZG9uJ3QgdGhp bmsgaXQncyB0aGF0IGJhZC4KCkkgdGhpbmsgaWYgeW91IHB1dCB0aGUgcGlubmluZyBpbnRvIHRo ZSBjbWQgcGFyc2VyIGZ1bmN0aW9uIGl0IHNob3VsZCBqdXN0CnZhbmlzaC4KCkNoZWVycywgRGFu aWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgorNDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==