From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/2] drm/i915: Refactor common ringbuffer allocation code Date: Fri, 4 Sep 2015 10:17:34 +0200 Message-ID: <20150904081734.GM22430@phenom.ffwll.local> References: <1441281700-17814-1-git-send-email-chris@chris-wilson.co.uk> <1441288909.29227.26.camel@intel.com> <87mvx3a6wb.fsf@gaia.fi.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f173.google.com (mail-wi0-f173.google.com [209.85.212.173]) by gabe.freedesktop.org (Postfix) with ESMTPS id E4E3A6EB6D for ; Fri, 4 Sep 2015 01:14:52 -0700 (PDT) Received: by wiclk2 with SMTP id lk2so9395663wic.1 for ; Fri, 04 Sep 2015 01:14:51 -0700 (PDT) Content-Disposition: inline In-Reply-To: <87mvx3a6wb.fsf@gaia.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kuoppala Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBTZXAgMDMsIDIwMTUgYXQgMDU6NTY6MjBQTSArMDMwMCwgTWlrYSBLdW9wcGFsYSB3 cm90ZToKPiAiWmFub25pLCBQYXVsbyBSIiA8cGF1bG8uci56YW5vbmlAaW50ZWwuY29tPiB3cml0 ZXM6Cj4gCj4gPiBFbSBRdWksIDIwMTUtMDktMDMgw6BzIDEzOjAxICswMTAwLCBDaHJpcyBXaWxz b24gZXNjcmV2ZXU6Cj4gPj4gQSBzbWFsbCwgdmVyeSBzbWFsbCwgc3RlcCB0byBzaGFyaW5nIHRo ZSBkdXBsaWNhdGUgY29kZSBiZXR3ZWVuCj4gPj4gZXhlY2xpc3RzIGFuZCBsZWdhY3kgc3VibWlz c2lvbiBlbmdpbmVzLCBzdGFydGluZyB3aXRoIHRoZSByaW5nYnVmZmVyCj4gPj4gYWxsb2NhdGlv biBjb2RlLgo+ID4+IAo+ID4+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hy aXMtd2lsc29uLmNvLnVrPgo+ID4+IENjOiBBcnVuIFNpbHV2ZXJ5IDxhcnVuLnNpbHV2ZXJ5QGxp bnV4LmludGVsLmNvbT4KPiA+PiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRl bC5jb20+Cj4gPj4gQ2M6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRlbC5jb20+Cj4g Pj4gLS0tCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8IDQ5 ICsrKysrLS0tLS0tLS0tLS0tLQo+ID4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMgfCA4OSArKysrKysrKysrKysrKysrKysrKy0tLQo+ID4+IC0tLS0tLS0tLS0KPiA+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgIDggKy0tCj4gPj4g IDMgZmlsZXMgY2hhbmdlZCwgNzAgaW5zZXJ0aW9ucygrKSwgNzYgZGVsZXRpb25zKC0pCj4gPj4g Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIAo+ID4+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiA+PiBpbmRleCA0MGNiYmE0ZWE0 YmEuLjI4YTcxMmU3ZDJkMCAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+ID4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g Pj4gQEAgLTIzNDAsOCArMjM0MCw3IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF9mcmVlKHN0cnVj dCBpbnRlbF9jb250ZXh0IAo+ID4+ICpjdHgpCj4gPj4gIAkJCQlpOTE1X2dlbV9vYmplY3RfZ2d0 dF91bnBpbihjdHhfb2JqKTsKPiA+PiAgCQkJfQo+ID4+ICAJCQlXQVJOX09OKGN0eC0+ZW5naW5l W3JpbmctPmlkXS5waW5fY291bnQpOwo+ID4+IC0JCQlpbnRlbF9kZXN0cm95X3JpbmdidWZmZXJf b2JqKHJpbmdidWYpOwo+ID4+IC0JCQlrZnJlZShyaW5nYnVmKTsKPiA+PiArCQkJaW50ZWxfcmlu Z2J1ZmZlcl9mcmVlKHJpbmdidWYpOwo+ID4+ICAJCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5j ZSgmY3R4X29iai0+YmFzZSk7Cj4gPj4gIAkJfQo+ID4+ICAJfQo+ID4+IEBAIC0yNDQyLDQyICsy NDQxLDIwIEBAIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgCj4g Pj4gaW50ZWxfY29udGV4dCAqY3R4LAo+ID4+ICAJCQlJOTE1X1dSSVRFKEdFTjhfR1RDUiwgR0VO OF9HVENSX0lOVkFMSURBVEUpOwo+ID4+ICAJfQo+ID4+ICAKPiA+PiAtCXJpbmdidWYgPSBremFs bG9jKHNpemVvZigqcmluZ2J1ZiksIEdGUF9LRVJORUwpOwo+ID4+IC0JaWYgKCFyaW5nYnVmKSB7 Cj4gPj4gLQkJRFJNX0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIGFsbG9jYXRlIHJpbmdidWZmZXIg Cj4gPj4gJXNcbiIsCj4gPgo+ID4gV2UgZ290IHJpZCBvZiB0aGlzIG1lc3NhZ2UsIGJ1dCBJIHN1 cHBvc2UgaXQncyBub3QgYSBwcm9ibGVtLCBzaW5jZSBpdAo+ID4gd2FzIG5vdCBhIGxvdWQgZXJy b3IgbWVzc2FnZS4KPiA+Cj4gPgo+ID4+IC0JCQkJcmluZy0+bmFtZSk7Cj4gPj4gLQkJcmV0ID0g LUVOT01FTTsKPiA+PiArCXJpbmdidWYgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmdidWZmZXIo cmluZywgNCAqIAo+ID4+IFBBR0VfU0laRSk7Cj4gPj4gKwlpZiAoSVNfRVJSKHJpbmdidWYpKSB7 Cj4gPj4gKwkJcmV0ID0gUFRSX0VSUihyaW5nYnVmKTsKPiA+PiAgCQlnb3RvIGVycm9yX3VucGlu X2N0eDsKPiA+PiAgCX0KPiA+PiAgCj4gPj4gLQlyaW5nYnVmLT5yaW5nID0gcmluZzsKPiA+PiAt Cj4gPj4gLQlyaW5nYnVmLT5zaXplID0gNCAqIFBBR0VfU0laRTsKPiA+PiAtCXJpbmdidWYtPmVm ZmVjdGl2ZV9zaXplID0gcmluZ2J1Zi0+c2l6ZTsKPiA+PiAtCXJpbmdidWYtPmhlYWQgPSAwOwo+ ID4+IC0JcmluZ2J1Zi0+dGFpbCA9IDA7Cj4gPj4gLQlyaW5nYnVmLT5sYXN0X3JldGlyZWRfaGVh ZCA9IC0xOwo+ID4+IC0JaW50ZWxfcmluZ191cGRhdGVfc3BhY2UocmluZ2J1Zik7Cj4gPj4gLQo+ ID4+IC0JaWYgKHJpbmdidWYtPm9iaiA9PSBOVUxMKSB7Cj4gPj4gLQkJcmV0ID0gaW50ZWxfYWxs b2NfcmluZ2J1ZmZlcl9vYmooZGV2LCByaW5nYnVmKTsKPiA+PiArCWlmIChpc19nbG9iYWxfZGVm YXVsdF9jdHgpIHsKPiA+PiArCQlyZXQgPSBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29i aihkZXYsIAo+ID4+IHJpbmdidWYpOwo+ID4+ICAJCWlmIChyZXQpIHsKPiA+PiAtCQkJRFJNX0RF QlVHX0RSSVZFUigKPiA+PiAtCQkJCSJGYWlsZWQgdG8gYWxsb2NhdGUgcmluZ2J1ZmZlciBvYmog Cj4gPj4gJXM6ICVkXG4iLAo+ID4+IC0JCQkJcmluZy0+bmFtZSwgcmV0KTsKPiA+PiAtCQkJZ290 byBlcnJvcl9mcmVlX3JidWY7Cj4gPj4gKwkJCURSTV9FUlJPUigKPiA+PiArCQkJCSAgIkZhaWxl ZCB0byBwaW4gYW5kIG1hcCByaW5nYnVmZmVyIAo+ID4+ICVzOiAlZFxuIiwKPiA+PiArCQkJCSAg cmluZy0+bmFtZSwgcmV0KTsKPiA+PiArCQkJZ290byBlcnJvcl9yaW5nYnVmOwo+ID4+ICAJCX0K PiA+PiAtCj4gPj4gLQkJaWYgKGlzX2dsb2JhbF9kZWZhdWx0X2N0eCkgewo+ID4+IC0JCQlyZXQg PSBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihkZXYsIAo+ID4+IHJpbmdidWYpOwo+ ID4+IC0JCQlpZiAocmV0KSB7Cj4gPj4gLQkJCQlEUk1fRVJST1IoCj4gPj4gLQkJCQkJIkZhaWxl ZCB0byBwaW4gYW5kIG1hcCAKPiA+PiByaW5nYnVmZmVyICVzOiAlZFxuIiwKPiA+PiAtCQkJCQly aW5nLT5uYW1lLCByZXQpOwo+ID4+IC0JCQkJZ290byBlcnJvcl9kZXN0cm95X3JidWY7Cj4gPj4g LQkJCX0KPiA+PiAtCQl9Cj4gPj4gLQo+ID4+ICAJfQo+ID4+ICAKPiA+PiAgCXJldCA9IHBvcHVs YXRlX2xyX2NvbnRleHQoY3R4LCBjdHhfb2JqLCByaW5nLCByaW5nYnVmKTsKPiA+PiBAQCAtMjUx OSwxMCArMjQ5Niw4IEBAIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1 Y3QgCj4gPj4gaW50ZWxfY29udGV4dCAqY3R4LAo+ID4+ICBlcnJvcjoKPiA+PiAgCWlmIChpc19n bG9iYWxfZGVmYXVsdF9jdHgpCj4gPj4gIAkJaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmoocmlu Z2J1Zik7Cj4gPj4gLWVycm9yX2Rlc3Ryb3lfcmJ1ZjoKPiA+PiAtCWludGVsX2Rlc3Ryb3lfcmlu Z2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4gPj4gLWVycm9yX2ZyZWVfcmJ1ZjoKPiA+PiAtCWtmcmVl KHJpbmdidWYpOwo+ID4+ICtlcnJvcl9yaW5nYnVmOgo+ID4+ICsJaW50ZWxfcmluZ2J1ZmZlcl9m cmVlKHJpbmdidWYpOwo+ID4+ICBlcnJvcl91bnBpbl9jdHg6Cj4gPj4gIAlpZiAoaXNfZ2xvYmFs X2RlZmF1bHRfY3R4KQo+ID4+ICAJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGN0eF9vYmop Owo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMgCj4gPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiA+PiBp bmRleCA2ZTZiOGRiOTk2ZWYuLjIwYTc1YmI1MTZhYyAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiA+PiBAQCAtMTk5NiwxNCArMTk5NiwxNCBAQCBp bnQgaW50ZWxfcGluX2FuZF9tYXBfcmluZ2J1ZmZlcl9vYmooc3RydWN0IAo+ID4+IGRybV9kZXZp Y2UgKmRldiwKPiA+PiAgCXJldHVybiAwOwo+ID4+ICB9Cj4gPj4gIAo+ID4+IC12b2lkIGludGVs X2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmooc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYp Cj4gPj4gK3N0YXRpYyB2b2lkIGludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmooc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgCj4gPj4gKnJpbmdidWYpCj4gPj4gIHsKPiA+PiAgCWRybV9nZW1fb2Jq ZWN0X3VucmVmZXJlbmNlKCZyaW5nYnVmLT5vYmotPmJhc2UpOwo+ID4+ICAJcmluZ2J1Zi0+b2Jq ID0gTlVMTDsKPiA+PiAgfQo+ID4+ICAKPiA+PiAtaW50IGludGVsX2FsbG9jX3JpbmdidWZmZXJf b2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPj4gLQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1ZikKPiA+PiArc3RhdGljIGludCBpbnRlbF9hbGxvY19yaW5nYnVm ZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+ICsJCQkJICAgICAgc3RydWN0IGlu dGVsX3JpbmdidWZmZXIgCj4gPj4gKnJpbmdidWYpCj4gPj4gIHsKPiA+PiAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPj4gIAo+ID4+IEBAIC0yMDIzLDYgKzIwMjMsNDggQEAg aW50IGludGVsX2FsbG9jX3JpbmdidWZmZXJfb2JqKHN0cnVjdCAKPiA+PiBkcm1fZGV2aWNlICpk ZXYsCj4gPj4gIAlyZXR1cm4gMDsKPiA+PiAgfQo+ID4+ICAKPiA+PiArc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKgo+ID4+ICtpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmdidWZmZXIoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgCj4gPj4gc2l6ZSkKPiA+PiArewo+ID4+ICsJc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmc7Cj4gPj4gKwlpbnQgcmV0Owo+ID4+ICsKPiA+PiAr CXJpbmcgPSBremFsbG9jKHNpemVvZigqcmluZyksIEdGUF9LRVJORUwpOwo+ID4+ICsJaWYgKHJp bmcgPT0gTlVMTCkKPiA+Cj4gPiBUaGUgZXJyb3IgbWVzc2FnZSByZWZlcmVuY2VkIGFib3ZlIHNo b3VsZCBwcm9iYWJseSBiZSBoZXJlLgo+ID4KPiA+Cj4gPj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVO T01FTSk7Cj4gPj4gKwo+ID4+ICsJcmluZy0+cmluZyA9IGVuZ2luZTsKPiA+PiArCj4gPj4gKwly aW5nLT5zaXplID0gc2l6ZTsKPiA+PiArCS8qIFdvcmthcm91bmQgYW4gZXJyYXR1bSBvbiB0aGUg aTgzMCB3aGljaCBjYXVzZXMgYSBoYW5nIGlmCj4gPj4gKwkgKiB0aGUgVEFJTCBwb2ludGVyIHBv aW50cyB0byB3aXRoaW4gdGhlIGxhc3QgMiBjYWNoZWxpbmVzCj4gPj4gKwkgKiBvZiB0aGUgYnVm ZmVyLgo+ID4+ICsJICovCj4gPj4gKwlyaW5nLT5lZmZlY3RpdmVfc2l6ZSA9IHNpemU7Cj4gPj4g KwlpZiAoSVNfSTgzMChlbmdpbmUtPmRldikgfHwgSVNfODQ1RyhlbmdpbmUtPmRldikpCj4gPj4g KwkJcmluZy0+ZWZmZWN0aXZlX3NpemUgLT0gMiAqIENBQ0hFTElORV9CWVRFUzsKPiA+PiArCj4g Pj4gKwlyaW5nLT5sYXN0X3JldGlyZWRfaGVhZCA9IC0xOwo+ID4+ICsJaW50ZWxfcmluZ191cGRh dGVfc3BhY2UocmluZyk7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gaW50ZWxfYWxsb2NfcmluZ2J1ZmZl cl9vYmooZW5naW5lLT5kZXYsIHJpbmcpOwo+ID4+ICsJaWYgKHJldCkgewo+ID4+ICsJCURSTV9F UlJPUigiRmFpbGVkIHRvIGFsbG9jYXRlIHJpbmdidWZmZXIgJXM6ICVkXG4iLAo+ID4KPiA+IFNo b3VsZG4ndCB0aGlzIGJlICJGYWlsZWQgdG8gYWxsb2NhdGUgcmluZ2J1ZmZlciBvYmogJXM6ICVk IiA/Cj4gPgo+ID4+ICsJCQkgIGVuZ2luZS0+bmFtZSwgcmV0KTsKPiA+PiArCQlrZnJlZShyaW5n KTsKPiA+PiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCXJl dHVybiByaW5nOwo+ID4+ICt9Cj4gPj4gKwo+ID4+ICt2b2lkCj4gPj4gK2ludGVsX3JpbmdidWZm ZXJfZnJlZShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZykKPiA+PiArewo+ID4+ICsJaW50 ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihyaW5nKTsKPiA+PiArCWtmcmVlKHJpbmcpOwo+ID4+ ICt9Cj4gPj4gKwo+ID4+ICBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwKPiA+PiAgCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZykKPiA+PiAgewo+ID4+IEBAIC0yMDMxLDIyICsyMDczLDIwIEBAIHN0YXRpYyBpbnQgaW50ZWxf aW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgCj4gPj4gZHJtX2RldmljZSAqZGV2LAo+ID4+ICAKPiA+ PiAgCVdBUk5fT04ocmluZy0+YnVmZmVyKTsKPiA+PiAgCj4gPj4gLQlyaW5nYnVmID0ga3phbGxv YyhzaXplb2YoKnJpbmdidWYpLCBHRlBfS0VSTkVMKTsKPiA+PiAtCWlmICghcmluZ2J1ZikKPiA+ PiAtCQlyZXR1cm4gLUVOT01FTTsKPiA+PiAtCXJpbmctPmJ1ZmZlciA9IHJpbmdidWY7Cj4gPj4g LQo+ID4+ICAJcmluZy0+ZGV2ID0gZGV2Owo+ID4+ICAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmFj dGl2ZV9saXN0KTsKPiA+PiAgCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xpc3QpOwo+ ID4+ICAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlKTsKPiA+PiAgCWk5MTVf Z2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYsICZyaW5nLT5iYXRjaF9wb29sKTsKPiA+PiAtCXJpbmdi dWYtPnNpemUgPSAzMiAqIFBBR0VfU0laRTsKPiA+PiAtCXJpbmdidWYtPnJpbmcgPSByaW5nOwo+ ID4+ICAJbWVtc2V0KHJpbmctPnNlbWFwaG9yZS5zeW5jX3NlcW5vLCAwLCBzaXplb2YocmluZwo+ ID4+IC0+c2VtYXBob3JlLnN5bmNfc2Vxbm8pKTsKPiA+PiAgCj4gPj4gIAlpbml0X3dhaXRxdWV1 ZV9oZWFkKCZyaW5nLT5pcnFfcXVldWUpOwo+ID4+ICAKPiA+PiArCXJpbmdidWYgPSBpbnRlbF9l bmdpbmVfY3JlYXRlX3JpbmdidWZmZXIocmluZywgMzIgKiAKPiA+PiBQQUdFX1NJWkUpOwo+ID4+ ICsJaWYgKElTX0VSUihyaW5nYnVmKSkKPiA+PiArCQlyZXR1cm4gUFRSX0VSUihyaW5nYnVmKTsK PiA+PiArCXJpbmctPmJ1ZmZlciA9IHJpbmdidWY7Cj4gPj4gKwo+ID4+ICAJaWYgKEk5MTVfTkVF RF9HRlhfSFdTKGRldikpIHsKPiA+PiAgCQlyZXQgPSBpbml0X3N0YXR1c19wYWdlKHJpbmcpOwo+ ID4+ICAJCWlmIChyZXQpCj4gPj4gQEAgLTIwNTgsMTUgKzIwOTgsNiBAQCBzdGF0aWMgaW50IGlu dGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IAo+ID4+IGRybV9kZXZpY2UgKmRldiwKPiA+PiAg CQkJZ290byBlcnJvcjsKPiA+PiAgCX0KPiA+PiAgCj4gPj4gLQlXQVJOX09OKHJpbmdidWYtPm9i aik7Cj4gPj4gLQo+ID4+IC0JcmV0ID0gaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooZGV2LCBy aW5nYnVmKTsKPiA+PiAtCWlmIChyZXQpIHsKPiA+PiAtCQlEUk1fRVJST1IoIkZhaWxlZCB0byBh bGxvY2F0ZSByaW5nYnVmZmVyICVzOiAlZFxuIiwKPiA+PiAtCQkJCXJpbmctPm5hbWUsIHJldCk7 Cj4gPj4gLQkJZ290byBlcnJvcjsKPiA+PiAtCX0KPiA+PiAtCj4gPj4gIAlyZXQgPSBpbnRlbF9w aW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYpOwo+ID4+ICAJaWYgKHJldCkg ewo+ID4+ICAJCURSTV9FUlJPUigiRmFpbGVkIHRvIHBpbiBhbmQgbWFwIHJpbmdidWZmZXIgJXM6 IAo+ID4+ICVkXG4iLAo+ID4+IEBAIC0yMDc1LDE0ICsyMTA2LDYgQEAgc3RhdGljIGludCBpbnRl bF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCAKPiA+PiBkcm1fZGV2aWNlICpkZXYsCj4gPj4gIAkJ Z290byBlcnJvcjsKPiA+PiAgCX0KPiA+PiAgCj4gPj4gLQkvKiBXb3JrYXJvdW5kIGFuIGVycmF0 dW0gb24gdGhlIGk4MzAgd2hpY2ggY2F1c2VzIGEgaGFuZyBpZgo+ID4+IC0JICogdGhlIFRBSUwg cG9pbnRlciBwb2ludHMgdG8gd2l0aGluIHRoZSBsYXN0IDIgY2FjaGVsaW5lcwo+ID4+IC0JICog b2YgdGhlIGJ1ZmZlci4KPiA+PiAtCSAqLwo+ID4+IC0JcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUg PSByaW5nYnVmLT5zaXplOwo+ID4+IC0JaWYgKElTX0k4MzAoZGV2KSB8fCBJU184NDVHKGRldikp Cj4gPj4gLQkJcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUgLT0gMiAqIENBQ0hFTElORV9CWVRFUzsK PiA+PiAtCj4gPj4gIAlyZXQgPSBpOTE1X2NtZF9wYXJzZXJfaW5pdF9yaW5nKHJpbmcpOwo+ID4+ ICAJaWYgKHJldCkKPiA+PiAgCQlnb3RvIGVycm9yOwo+ID4+IEBAIC0yMDkwLDcgKzIxMTMsNyBA QCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IAo+ID4+IGRybV9kZXZp Y2UgKmRldiwKPiA+PiAgCXJldHVybiAwOwo+ID4KPiA+IFRoZSAiZ290byBlcnJvciIgcmlnaHQg YWJvdmUgdGhlIHJldHVybiAwIGNoYW5nZXMgaXRzIGJlaGF2aW9yOiBpdAo+ID4gd2Fzbid0IGNh bGxpbmcgaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaigpLCBidXQgSSBzdXBwb3NlIHRoaXMg aXMgYQo+ID4gZml4LiBJJ20ganVzdCBwb2ludGluZyBpdCBzaW5jZSBJJ20gbm90IDEwMCUgc3Vy ZS4KPiA+Cj4gCj4gSSB3b3VsZCBzYXkgaXRzIGEgZml4IGJlY2F1c2Ugd2UgbG9zdCB0aGUgcmVm IGF0IHRoYXQgcG9pbnQuCj4gCj4gUmV2aWV3ZWQtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3Vv cHBhbGFAaW50ZWwuY29tPgo+IAo+ID4gRXZlcnl0aGluZyBzZWVtcyBjb3JyZWN0LCBzbyB3aXRo IG9yIHdpdGhvdXQgY2hhbmdlczoKPiA+IFJldmlld2VkLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxv LnIuemFub25pQGludGVsLmNvbT4KClF1ZXVlZCBmb3IgLW5leHQsIHRoYW5rcyBmb3IgdGhlIHBh dGNoLgotRGFuaWVsCgo+ID4KPiA+Cj4gPj4gIAo+ID4+ICBlcnJvcjoKPiA+PiAtCWtmcmVlKHJp bmdidWYpOwo+ID4+ICsJaW50ZWxfcmluZ2J1ZmZlcl9mcmVlKHJpbmdidWYpOwo+ID4+ICAJcmlu Zy0+YnVmZmVyID0gTlVMTDsKPiA+PiAgCXJldHVybiByZXQ7Cj4gPj4gIH0KPiA+PiBAQCAtMjA5 OCwxOSArMjEyMSwxOCBAQCBlcnJvcjoKPiA+PiAgdm9pZCBpbnRlbF9jbGVhbnVwX3JpbmdfYnVm ZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gPj4gIHsKPiA+PiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKPiA+PiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVy ICpyaW5nYnVmOwo+ID4+ICAKPiA+PiAgCWlmICghaW50ZWxfcmluZ19pbml0aWFsaXplZChyaW5n KSkKPiA+PiAgCQlyZXR1cm47Cj4gPj4gIAo+ID4+ICAJZGV2X3ByaXYgPSB0b19pOTE1KHJpbmct PmRldik7Cj4gPj4gLQlyaW5nYnVmID0gcmluZy0+YnVmZmVyOwo+ID4+ICAKPiA+PiAgCWludGVs X3N0b3BfcmluZ19idWZmZXIocmluZyk7Cj4gPj4gIAlXQVJOX09OKCFJU19HRU4yKHJpbmctPmRl dikgJiYgKEk5MTVfUkVBRF9NT0RFKHJpbmcpICYgCj4gPj4gTU9ERV9JRExFKSA9PSAwKTsKPiA+ PiAgCj4gPj4gLQlpbnRlbF91bnBpbl9yaW5nYnVmZmVyX29iaihyaW5nYnVmKTsKPiA+PiAtCWlu dGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmoocmluZ2J1Zik7Cj4gPj4gKwlpbnRlbF91bnBpbl9y aW5nYnVmZmVyX29iaihyaW5nLT5idWZmZXIpOwo+ID4+ICsJaW50ZWxfcmluZ2J1ZmZlcl9mcmVl KHJpbmctPmJ1ZmZlcik7Cj4gPj4gKwlyaW5nLT5idWZmZXIgPSBOVUxMOwo+ID4+ICAKPiA+PiAg CWlmIChyaW5nLT5jbGVhbnVwKQo+ID4+ICAJCXJpbmctPmNsZWFudXAocmluZyk7Cj4gPj4gQEAg LTIxMTksOSArMjE0MSw2IEBAIHZvaWQgaW50ZWxfY2xlYW51cF9yaW5nX2J1ZmZlcihzdHJ1Y3Qg Cj4gPj4gaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ID4+ICAKPiA+PiAgCWk5MTVfY21kX3BhcnNl cl9maW5pX3JpbmcocmluZyk7Cj4gPj4gIAlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJnJpbmct PmJhdGNoX3Bvb2wpOwo+ID4+IC0KPiA+PiAtCWtmcmVlKHJpbmdidWYpOwo+ID4+IC0JcmluZy0+ YnVmZmVyID0gTlVMTDsKPiA+PiAgfQo+ID4+ICAKPiA+PiAgc3RhdGljIGludCByaW5nX3dhaXRf Zm9yX3NwYWNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBuKQo+ID4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggCj4gPj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiA+PiBpbmRleCA5NWIwYjRi NTVmYTYuLjQ5ZmE0MWRjMGViNiAxMDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKPiA+PiBAQCAtNDIwLDEyICs0MjAsMTIgQEAgaW50ZWxfd3JpdGVfc3Rh dHVzX3BhZ2Uoc3RydWN0IGludGVsX2VuZ2luZV9jcyAKPiA+PiAqcmluZywKPiA+PiAgI2RlZmlu ZSBJOTE1X0dFTV9IV1NfU0NSQVRDSF9JTkRFWAkweDQwCj4gPj4gICNkZWZpbmUgSTkxNV9HRU1f SFdTX1NDUkFUQ0hfQUREUiAoSTkxNV9HRU1fSFdTX1NDUkFUQ0hfSU5ERVggPDwgCj4gPj4gTUlf U1RPUkVfRFdPUkRfSU5ERVhfU0hJRlQpCj4gPj4gIAo+ID4+IC12b2lkIGludGVsX3VucGluX3Jp bmdidWZmZXJfb2JqKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPiA+PiArc3Ry dWN0IGludGVsX3JpbmdidWZmZXIgKgo+ID4+ICtpbnRlbF9lbmdpbmVfY3JlYXRlX3JpbmdidWZm ZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBpbnQgCj4gPj4gc2l6ZSk7Cj4gPj4g IGludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ID4+ICAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAKPiA+PiAqcmluZ2J1 Zik7Cj4gPj4gLXZvaWQgaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgaW50ZWxf cmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4gPj4gLWludCBpbnRlbF9hbGxvY19yaW5nYnVmZmVyX29i aihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4+IC0JCQkgICAgICAgc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYpOwo+ID4+ICt2b2lkIGludGVsX3VucGluX3JpbmdidWZmZXJfb2Jq KHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmKTsKPiA+PiArdm9pZCBpbnRlbF9yaW5n YnVmZmVyX2ZyZWUoc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmcpOwo+ID4+ICAKPiA+PiAg dm9pZCBpbnRlbF9zdG9wX3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp Owo+ID4+ICB2b2lkIGludGVsX2NsZWFudXBfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZyk7Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=