From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v4 1/3] drm/i915: simplify allocation of driver-internal requests Date: Fri, 22 Jan 2016 11:12:00 +0000 Message-ID: <56A20E80.7050209@linux.intel.com> References: <1453230175-19330-1-git-send-email-david.s.gordon@intel.com> <1453230175-19330-2-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id EA4236E2B1 for ; Fri, 22 Jan 2016 03:12:01 -0800 (PST) In-Reply-To: <1453230175-19330-2-git-send-email-david.s.gordon@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Gordon , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE5LzAxLzE2IDE5OjAyLCBEYXZlIEdvcmRvbiB3cm90ZToKPiBUaGVyZSBhcmUgYSBudW1i ZXIgb2YgcGxhY2VzIHdoZXJlIHRoZSBkcml2ZXIgbmVlZHMgYSByZXF1ZXN0LCBidXQgaXNuJ3QK PiB3b3JraW5nIG9uIGJlaGFsZiBvZiBhbnkgc3BlY2lmaWMgdXNlciBvciBpbiBhIHNwZWNpZmlj IGNvbnRleHQuIEF0Cj4gcHJlc2VudCwgd2UgYXNzb2NpYXRlIHRoZW0gd2l0aCB0aGUgcGVyLWVu Z2luZSBkZWZhdWx0IGNvbnRleHQuIEEgZnV0dXJlCj4gcGF0Y2ggd2lsbCBhYm9saXNoIHRob3Nl IHBlci1lbmdpbmUgY29udGV4dCBwb2ludGVyczsgYnV0IHdlIGNhbiBhbHJlYWR5Cj4gZWxpbWlu YXRlIGEgbG90IG9mIHRoZSByZWZlcmVuY2VzIHRvIHRoZW0sIGp1c3QgYnkgbWFraW5nIHRoZSBh bGxvY2F0b3IKPiBhbGxvdyBOVUxMIGFzIGEgc2hvcnRoYW5kIGZvciAiYW4gYXBwcm9wcmlhdGUg Y29udGV4dCBmb3IgdGhpcyByaW5nIiwKPiB3aGljaCB3aWxsIG1lYW4gdGhhdCB0aGUgY2FsbGVy cyBkb24ndCBuZWVkIHRvIGtub3cgYW55dGhpbmcgYWJvdXQgaG93Cj4gdGhlICJhcHByb3ByaWF0 ZSBjb250ZXh0IiBpcyBmb3VuZCAoZS5nLiBwZXItcmluZyB2cyBwZXItZGV2aWNlLCBldGMpLgo+ IAo+IFNvIHRoaXMgcGF0Y2ggcmVuYW1lcyB0aGUgZXhpc3RpbmcgaTkxNV9nZW1fcmVxdWVzdF9h bGxvYygpLCBhbmQgbWFrZXMKPiBpdCBsb2NhbCAoc3RhdGljIGlubGluZSksIGFuZCByZXBsYWNl cyBpdCB3aXRoIGEgd3JhcHBlciB0aGF0IHByb3ZpZGVzCj4gYSBkZWZhdWx0IGlmIHRoZSBjb250 ZXh0IGlzIE5VTEwsIGFuZCBhbHNvIGhhcyBhIG5pY2VyIGNhbGxpbmcKPiBjb252ZW50aW9uIChk b2Vzbid0IHJlcXVpcmUgYSBwb2ludGVyIHRvIGFuIG91dHB1dCBwYXJhbWV0ZXIpLiBUaGVuIHdl Cj4gY2hhbmdlIGFsbCBjYWxsZXJzIHRvIHVzZSB0aGUgbmV3IGNvbnZlbnRpb246Cj4gT0xEOgo+ IAllcnIgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIHVzZXJfY3R4LCAmcmVxKTsKPiAJ aWYgKGVycikgLi4uCj4gTkVXOgo+IAlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcs IHVzZXJfY3R4KTsKPiAJaWYgKElTX0VSUihyZXEpKSAuLi4KPiBPTEQ6Cj4gCWVyciA9IGk5MTVf Z2VtX3JlcXVlc3RfYWxsb2MocmluZywgcmluZy0+ZGVmYXVsdF9jb250ZXh0LCAmcmVxKTsKPiAJ aWYgKGVycikgLi4uCj4gTkVXOgo+IAlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcs IE5VTEwpOwo+IAlpZiAoSVNfRVJSKHJlcSkpIC4uLgo+IAo+IHY0OglSZWJhc2VkCj4gCj4gU2ln bmVkLW9mZi1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KPiBSZXZp ZXdlZC1ieTogTmljayBIb2F0aCA8bmljaG9sYXMuaG9hdGhAaW50ZWwuY29tPgo+IC0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDYgKystLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgNTUgKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMgfCAxNCArKysrKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jICAgICAgIHwgIDYgKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgICAgICAgICAgIHwgIDkgKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X292ZXJsYXkuYyAgICAgICB8IDI0ICsrKysrKy0tLS0tLS0KPiAgIDYgZmlsZXMgY2hhbmdlZCwg NzQgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gaW5kZXggYWYzMDE0OC4uZGZlYmY5ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+IEBAIC0yMjc5LDkgKzIyNzksOSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+ ICAgCj4gICB9Owo+ICAgCj4gLWludCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKnJpbmcsCj4gLQkJCSAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCj4g LQkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnJlcV9vdXQpOwo+ICtzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKiBfX211c3RfY2hlY2sKPiAraTkxNV9nZW1fcmVxdWVzdF9h bGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gKwkJICAgICAgIHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjdHgpOwo+ICAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gICB2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rf ZnJlZShzdHJ1Y3Qga3JlZiAqcmVxX3JlZik7Cj4gICBpbnQgaTkxNV9nZW1fcmVxdWVzdF9hZGRf dG9fY2xpZW50KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+IGluZGV4IDZiMDEwMmQuLjhlNzE2YjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBAQCAtMjY5MCw5ICsyNjkwLDEwIEBAIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9m cmVlKHN0cnVjdCBrcmVmICpyZXFfcmVmKQo+ICAgCWttZW1fY2FjaGVfZnJlZShyZXEtPmk5MTUt PnJlcXVlc3RzLCByZXEpOwo+ICAgfQo+ICAgCj4gLWludCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9j KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gLQkJCSAgIHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsCj4gLQkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnJlcV9vdXQp Cj4gK3N0YXRpYyBpbmxpbmUgaW50Cj4gK19faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJCQkgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwK PiArCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnJlcV9vdXQpCj4gICB7Cj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShyaW5nLT5kZXYpOwo+ ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+IEBAIC0yNzU1LDYgKzI3NTYs MzEgQEAgaW50IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAq cmluZywKPiAgIAlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gKy8qKgo+ICsgKiBpOTE1X2dlbV9y ZXF1ZXN0X2FsbG9jIC0gYWxsb2NhdGUgYSByZXF1ZXN0IHN0cnVjdHVyZQo+ICsgKgo+ICsgKiBA ZW5naW5lOiBlbmdpbmUgdGhhdCB3ZSB3aXNoIHRvIGlzc3VlIHRoZSByZXF1ZXN0IG9uLgo+ICsg KiBAY3R4OiBjb250ZXh0IHRoYXQgdGhlIHJlcXVlc3Qgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGgu Cj4gKyAqICAgICAgIFRoaXMgY2FuIGJlIE5VTEwgaWYgdGhlIHJlcXVlc3QgaXMgbm90IGRpcmVj dGx5IHJlbGF0ZWQgdG8KPiArICogICAgICAgYW55IHNwZWNpZmljIHVzZXIgY29udGV4dCwgaW4g d2hpY2ggY2FzZSB0aGlzIGZ1bmN0aW9uIHdpbGwKPiArICogICAgICAgY2hvb3NlIGFuIGFwcHJv cHJpYXRlIGNvbnRleHQgdG8gdXNlLgo+ICsgKgo+ICsgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0 aGUgYWxsb2NhdGVkIHJlcXVlc3QgaWYgc3VjY2Vzc2Z1bCwKPiArICogb3IgYW4gZXJyb3IgY29k ZSBpZiBub3QuCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgo+ICtpOTE1 X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiArCQkg ICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCWlmIChjdHggPT0gTlVMTCkK PiArCQljdHggPSBlbmdpbmUtPmRlZmF1bHRfY29udGV4dDsKPiArCWVyciA9IF9faTkxNV9nZW1f cmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCwgJnJlcSk7Cj4gKwlyZXR1cm4gZXJyID8gRVJSX1BU UihlcnIpIDogcmVxOwo+ICt9Cj4gKwo+ICAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIHsKPiAgIAlpbnRlbF9yaW5nX3Jl c2VydmVkX3NwYWNlX2NhbmNlbChyZXEtPnJpbmdidWYpOwo+IEBAIC0zMTcyLDkgKzMxOTgsMTMg QEAgdm9pZCBpOTE1X2dlbV9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQkJcmV0 dXJuIDA7Cj4gICAKPiAgIAkJaWYgKCp0b19yZXEgPT0gTlVMTCkgewo+IC0JCQlyZXQgPSBpOTE1 X2dlbV9yZXF1ZXN0X2FsbG9jKHRvLCB0by0+ZGVmYXVsdF9jb250ZXh0LCB0b19yZXEpOwo+IC0J CQlpZiAocmV0KQo+IC0JCQkJcmV0dXJuIHJldDsKPiArCQkJc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXE7Cj4gKwo+ICsJCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHRvLCBO VUxMKTsKPiArCQkJaWYgKElTX0VSUihyZXEpKQo+ICsJCQkJcmV0dXJuIFBUUl9FUlIocmVxKTsK PiArCj4gKwkJCSp0b19yZXEgPSByZXE7Cj4gICAJCX0KPiAgIAo+ICAgCQl0cmFjZV9pOTE1X2dl bV9yaW5nX3N5bmNfdG8oKnRvX3JlcSwgZnJvbSwgZnJvbV9yZXEpOwo+IEBAIC0zMzc0LDkgKzM0 MDQsOSBAQCBpbnQgaTkxNV9ncHVfaWRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCQlp ZiAoIWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+ICAgCQkJc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXE7Cj4gICAKPiAtCQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5n LCByaW5nLT5kZWZhdWx0X2NvbnRleHQsICZyZXEpOwo+IC0JCQlpZiAocmV0KQo+IC0JCQkJcmV0 dXJuIHJldDsKPiArCQkJcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBOVUxMKTsK PiArCQkJaWYgKElTX0VSUihyZXEpKQo+ICsJCQkJcmV0dXJuIFBUUl9FUlIocmVxKTsKPiAgIAo+ ICAgCQkJcmV0ID0gaTkxNV9zd2l0Y2hfY29udGV4dChyZXEpOwo+ICAgCQkJaWYgKHJldCkgewo+ IEBAIC00ODcxLDEwICs0OTAxLDkgQEAgaW50IGk5MTVfZ2VtX2luaXRfcmluZ3Moc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKSB7Cj4g ICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+ICAgCj4gLQkJV0FSTl9PTigh cmluZy0+ZGVmYXVsdF9jb250ZXh0KTsKPiAtCj4gLQkJcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9h bGxvYyhyaW5nLCByaW5nLT5kZWZhdWx0X2NvbnRleHQsICZyZXEpOwo+IC0JCWlmIChyZXQpIHsK PiArCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHJpbmcsIE5VTEwpOwo+ICsJCWlmIChJ U19FUlIocmVxKSkgewo+ICsJCQlyZXQgPSBQVFJfRVJSKHJlcSk7Cj4gICAJCQlpOTE1X2dlbV9j bGVhbnVwX3JpbmdidWZmZXIoZGV2KTsKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCQl9Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDRlZGYxYzAuLmRj MzIwMTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1 ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5j Cj4gQEAgLTEzODEsNiArMTM4MSw3IEBAIHN0YXRpYyBpbnQgZ2VuOF9kaXNwYXRjaF9ic2Rfcmlu ZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dl bV9leGVjX29iamVjdDIgKmV4ZWMpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxID0gTlVMTDsKPiAgIAlzdHJ1Y3QgZWJfdm1hcyAqZWI7Cj4gICAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29iajsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNfb2JqZWN0MiBzaGFkb3dfZXhlY19lbnRyeTsKPiBAQCAtMTYwMiwxMSArMTYwMywxMyBAQCBz dGF0aWMgaW50IGdlbjhfZGlzcGF0Y2hfYnNkX3Jpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgIAkJcGFyYW1zLT5iYXRjaF9vYmpfdm1fb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX29mZnNldChi YXRjaF9vYmosIHZtKTsKPiAgIAo+ICAgCS8qIEFsbG9jYXRlIGEgcmVxdWVzdCBmb3IgdGhpcyBi YXRjaCBidWZmZXIgbmljZSBhbmQgZWFybHkuICovCj4gLQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0 X2FsbG9jKHJpbmcsIGN0eCwgJnBhcmFtcy0+cmVxdWVzdCk7Cj4gLQlpZiAocmV0KQo+ICsJcmVx ID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhyaW5nLCBjdHgpOwo+ICsJaWYgKElTX0VSUihyZXEp KSB7Cj4gKwkJcmV0ID0gUFRSX0VSUihyZXEpOwo+ICAgCQlnb3RvIGVycl9iYXRjaF91bnBpbjsK PiArCX0KCkp1bXAgZG93bi4uCgo+ICAgCj4gLQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2FkZF90 b19jbGllbnQocGFyYW1zLT5yZXF1ZXN0LCBmaWxlKTsKPiArCXJldCA9IGk5MTVfZ2VtX3JlcXVl c3RfYWRkX3RvX2NsaWVudChyZXEsIGZpbGUpOwo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gZXJy X2JhdGNoX3VucGluOwo+ICAgCj4gQEAgLTE2MjIsNiArMTYyNSw3IEBAIHN0YXRpYyBpbnQgZ2Vu OF9kaXNwYXRjaF9ic2RfcmluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCXBhcmFtcy0+ ZGlzcGF0Y2hfZmxhZ3MgICAgICAgICAgPSBkaXNwYXRjaF9mbGFnczsKPiAgIAlwYXJhbXMtPmJh dGNoX29iaiAgICAgICAgICAgICAgID0gYmF0Y2hfb2JqOwo+ICAgCXBhcmFtcy0+Y3R4ICAgICAg ICAgICAgICAgICAgICAgPSBjdHg7Cj4gKwlwYXJhbXMtPnJlcXVlc3QgICAgICAgICAgICAgICAg ID0gcmVxOwo+ICAgCj4gICAJcmV0ID0gZGV2X3ByaXYtPmd0LmV4ZWNidWZfc3VibWl0KHBhcmFt cywgYXJncywgJmViLT52bWFzKTsKPiAgIAo+IEBAIC0xNjQ1LDggKzE2NDksOCBAQCBzdGF0aWMg aW50IGdlbjhfZGlzcGF0Y2hfYnNkX3Jpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkg KiBtdXN0IGJlIGZyZWVkIGFnYWluLiBJZiBpdCB3YXMgc3VibWl0dGVkIHRoZW4gaXQgaXMgYmVp bmcgdHJhY2tlZAo+ICAgCSAqIG9uIHRoZSBhY3RpdmUgcmVxdWVzdCBsaXN0IGFuZCBubyBjbGVh biB1cCBpcyByZXF1aXJlZCBoZXJlLgo+ICAgCSAqLwo+IC0JaWYgKHJldCAmJiBwYXJhbXMtPnJl cXVlc3QpCj4gLQkJaTkxNV9nZW1fcmVxdWVzdF9jYW5jZWwocGFyYW1zLT5yZXF1ZXN0KTsKPiAr CWlmIChyZXQgJiYgcmVxKQo+ICsJCWk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHJlcSk7CgouLiB0 byBoZXJlLCB3aGVyZSByZXEgaXMgYW4gRVJSX1BUUiBhbmQgeW91IGNhbGwgaTkxNV9nZW1fcmVx dWVzdF9jYW5jZWwKb24gaXQgYW5kIGVuZCB1cCB3aXRoOgoKWyAgIDMzLjAwOTk0Ml0gQlVHOiB1 bmFibGUgdG8gaGFuZGxlIGtlcm5lbCBwYWdpbmcgcmVxdWVzdCBhdCBmZmZmZmZmZmZmZmZmZmNh ClsgICAzMy4wMTgwMDNdIElQOiBbPGZmZmZmZmZmYTAxZDk0Mjg+XSBpOTE1X2dlbV9yZXF1ZXN0 X2NhbmNlbCsweDgvMHg2MCBbaTkxNV0KWyAgIDMzLjAyNjE5MV0gUEdEIDJhMGIwNjcgUFVEIDJh MGQwNjcgUE1EIDAgClsgICAzMy4wMzEwMTddIE9vcHM6IDAwMDAgWyMxXSBQUkVFTVBUIFNNUCAK WyAgIDMzLjAzNTY2Nl0gTW9kdWxlcyBsaW5rZWQgaW46IGhpZF9nZW5lcmljIHVzYmhpZCBpOTE1 IGkyY19hbGdvX2JpdCBkcm1fa21zX2hlbHBlciBhc2l4IHVzYm5ldCBsaWJwaHkgY2ZiZmlsbHJl Y3Qgc3lzY29weWFyZWEgbWlpIGNmYmltZ2JsdCBzeXNmaWxscmVjdCBzeXNpbWdibHQgZmJfc3lz X2ZvcHMgY2ZiY29weWFyZWEgZHJtIGNvcmV0ZW1wIGkyY19oaWQgaGlkIHBpbmN0cmxfc3Vucmlz ZXBvaW50IHBpbmN0cmxfaW50ZWwgdmlkZW8gYWNwaV9wYWQgbmxzX2lzbzg4NTlfMSBlMTAwMGUg cHRwIHBzbW91c2UgcHBzX2NvcmUgYWhjaSBsaWJhaGNpClsgICAzMy4wNjgwMDddIENQVTogMCBQ SUQ6IDE4OTEgQ29tbTogZ2VtX2Nsb3NlX3JhY2UgVGFpbnRlZDogRyAgICAgVSAgICAgICAgICA0 LjQuMC0xNjAxMjErICMxMjMKWyAgIDMzLjA3ODAwMF0gSGFyZHdhcmUgbmFtZTogSW50ZWwgQ29y cG9yYXRpb24gU2t5bGFrZSBDbGllbnQgcGxhdGZvcm0vU2t5bGFrZSBBSU8gRERSM0wgUlZQMTAs IEJJT1MgU0tMU0UyUjEuUjAwLlgxMDAuQjAxLjE1MDkyMjA1NTEgMDkvMjIvMjAxNQpbICAgMzMu MDkyNzQ1XSB0YXNrOiBmZmZmODgwMTZiNzUwMDAwIHRpOiBmZmZmODgwMTZjOTgwMDAwIHRhc2su dGk6IGZmZmY4ODAxNmM5ODAwMDAKWyAgIDMzLjEwMTQ5N10gUklQOiAwMDEwOls8ZmZmZmZmZmZh MDFkOTQyOD5dICBbPGZmZmZmZmZmYTAxZDk0Mjg+XSBpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbCsw eDgvMHg2MCBbaTkxNV0KWyAgIDMzLjExMjU0OV0gUlNQOiAwMDE4OmZmZmY4ODAxNmM5ODNjMTAg IEVGTEFHUzogMDAwMTAyMDIKWyAgIDMzLjExODg1OF0gUkFYOiAwMDAwMDAwMDAwMDAwMDAxIFJC WDogZmZmZmZmZmZmZmZmZmY5MiBSQ1g6IDAwMDAwMDAxODA0MDAwM2UKWyAgIDMzLjEyNzI0Nl0g UkRYOiAwMDAwMDAwMTgwNDAwMDNmIFJTSTogZmZmZmVhMDAwMWYxMDA4MCBSREk6IGZmZmZmZmZm ZmZmZmZmOTIKWyAgIDMzLjEzNTY1MF0gUkJQOiBmZmZmODgwMTZjOTgzYzE4IFIwODogZmZmZjg4 MDA3YzQwMmYwMCBSMDk6IDAwMDAwMDAwN2M0MDIwMDEKWyAgIDMzLjE0NDA1MV0gUjEwOiBmZmZm ODgwMTcyYzE3MGMwIFIxMTogZmZmZmVhMDAwMWYxMDA4MCBSMTI6IGZmZmY4ODAwN2M0MDJmMDAK WyAgIDMzLjE1MjQ3NF0gUjEzOiAwMDAwMDAwMGZmZmZmZjkyIFIxNDogZmZmZmZmZmZmZmZmZmY5 MiBSMTU6IGZmZmY4ODAxNmI5MTQzZDAKWyAgIDMzLjE2MDg4OF0gRlM6ICAwMDAwN2ZlMGM0YjA5 NzAwKDAwMDApIEdTOmZmZmY4ODAxNzJjMDAwMDAoMDAwMCkga25sR1M6MDAwMDAwMDAwMDAwMDAw MApbICAgMzMuMTcwMzk4XSBDUzogIDAwMTAgRFM6IDAwMDAgRVM6IDAwMDAgQ1IwOiAwMDAwMDAw MDgwMDUwMDMzClsgICAzMy4xNzcyNTRdIENSMjogZmZmZmZmZmZmZmZmZmZjYSBDUjM6IDAwMDAw MDAwODZmNDEwMDAgQ1I0OiAwMDAwMDAwMDAwMzQwNmYwClsgICAzMy4xODU3MDRdIERSMDogMDAw MDAwMDAwMDAwMDAwMCBEUjE6IDAwMDAwMDAwMDAwMDAwMDAgRFIyOiAwMDAwMDAwMDAwMDAwMDAw ClsgICAzMy4xOTQxNTVdIERSMzogMDAwMDAwMDAwMDAwMDAwMCBEUjY6IDAwMDAwMDAwZmZmZTBm ZjAgRFI3OiAwMDAwMDAwMDAwMDAwNDAwClsgICAzMy4yMDI2MDNdIFN0YWNrOgpbICAgMzMuMjA1 MjQ0XSAgZmZmZjg4MDA3YzQwMmYwMCBmZmZmODgwMTZjOTgzZDY4IGZmZmZmZmZmYTAxY2UxMGIg ZmZmZmVhMDAwNTk4MGNjMApbICAgMzMuMjE0MDY3XSAgZmZmZjg4MDE2Yzk4M2NiOCBmZmZmZmZm ZmEwMWQ3Nzg1IGZmZmY4ODAxNmM5ODNjODggZmZmZjg4MDA4NzA1ZTIxOApbICAgMzMuMjIyODky XSAgZmZmZjg4MDE2Yzk4M2UxMCBmZmZmODgwMDdkODA4MDAwIGZmZmY4ODAxNmM5ODNkZjAgZmZm Zjg4MDA3ZmY3NTc0MApbICAgMzMuMjMxNzE3XSBDYWxsIFRyYWNlOgpbICAgMzMuMjM0ODg5XSAg WzxmZmZmZmZmZmEwMWNlMTBiPl0gaTkxNV9nZW1fZG9fZXhlY2J1ZmZlci5pc3JhLjI1KzB4MTBj Yi8weDEyYTAgW2k5MTVdClsgICAzMy4yNDQxODRdICBbPGZmZmZmZmZmYTAxZDc3ODU+XSA/IGk5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0KzB4MjI1LzB4M2MwIFtpOTE1XQpbICAgMzMuMjUz Mzg5XSAgWzxmZmZmZmZmZmEwMWRkZmI2Pl0gPyBpOTE1X2dlbV9wd3JpdGVfaW9jdGwrMHhkNi8w eDlmMCBbaTkxNV0KWyAgIDMzLjI2MTcwNF0gIFs8ZmZmZmZmZmZhMDFjZWU2OD5dIGk5MTVfZ2Vt X2V4ZWNidWZmZXIyKzB4YTgvMHgyNTAgW2k5MTVdClsgICAzMy4yNjk3MzhdICBbPGZmZmZmZmZm YTAwZjY1ZDg+XSBkcm1faW9jdGwrMHgyNTgvMHg0ZjAgW2RybV0KWyAgIDMzLjI3NjY5MV0gIFs8 ZmZmZmZmZmY4MTBkM2E5Nz5dID8gc2htZW1fZGVzdHJveV9pbm9kZSsweDE3LzB4MjAKWyAgIDMz LjI4NDA0N10gIFs8ZmZmZmZmZmZhMDFjZWRjMD5dID8gaTkxNV9nZW1fZXhlY2J1ZmZlcisweDM0 MC8weDM0MCBbaTkxNV0KWyAgIDMzLjI5MjI5M10gIFs8ZmZmZmZmZmY4MTExOTIxYz5dID8gX19k ZW50cnlfa2lsbCsweDE0Yy8weDFkMApbICAgMzMuMjk5Mjc1XSAgWzxmZmZmZmZmZjgxMTIxNTg3 Pl0gPyBtbnRwdXRfbm9fZXhwaXJlKzB4MjcvMHgxYTAKWyAgIDMzLjMwNjQ1OV0gIFs8ZmZmZmZm ZmY4MTExNTkwZD5dIGRvX3Zmc19pb2N0bCsweDJjZC8weDRhMApbICAgMzMuMzEzMTU3XSAgWzxm ZmZmZmZmZjgxMTFlYWMyPl0gPyBfX2ZnZXQrMHg3Mi8weGIwClsgICAzMy4zMTkyNzRdICBbPGZm ZmZmZmZmODExMTViMWM+XSBTeVNfaW9jdGwrMHgzYy8weDcwClsgICAzMy4zMjU0OTZdICBbPGZm ZmZmZmZmODE0ZWZmZDc+XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MTIvMHg2YQpbICAg MzMuMzMzMjg5XSBDb2RlOiAwMCA0OCBjNyBjNyBkOCA2OSAyNyBhMCAzMSBjMCBlOCBkNCAwOCBl NyBlMCBlOSBiOCBmZSBmZiBmZiA2NiA2NiA2NiA2NiA2NiA2NiAyZSAwZiAxZiA4NCAwMCAwMCAw MCAwMCAwMCA1NSA0OCA4OSBlNSA1MyA0OCA4OSBmYiA8NDg+IDhiIDdmIDM4IGU4IDVmIDJhIDAx IDAwIDQ4IDhiIDQzIDEwIDQ4IDhiIDQwIDEwIDhiIDQwIDYwIDgzIApbICAgMzMuMzU2MDQxXSBS SVAgIFs8ZmZmZmZmZmZhMDFkOTQyOD5dIGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKzB4OC8weDYw IFtpOTE1XQpbICAgMzMuMzY0NzAwXSAgUlNQIDxmZmZmODgwMTZjOTgzYzEwPgpbICAgMzMuMzY5 MjA4XSBDUjI6IGZmZmZmZmZmZmZmZmZmY2EKWyAgIDMzLjM3MzUyN10gLS0tWyBlbmQgdHJhY2Ug ZDM4ZmU5MzgyMDY0ZTM1MyBdLS0tCgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==