From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v4 2/3] drm/i915: refactor duplicate object vmap functions (reworked) Date: Mon, 22 Feb 2016 16:06:39 +0000 Message-ID: <56CB320F.5050108@linux.intel.com> References: <1456154308-9342-1-git-send-email-david.s.gordon@intel.com> <1456154308-9342-3-git-send-email-david.s.gordon@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id D7EC76E0F1 for ; Mon, 22 Feb 2016 16:06:43 +0000 (UTC) In-Reply-To: <1456154308-9342-3-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 CltDYyBDaHJpcyBhcyB0aGUgYXV0aG9yIG9mIHRoZSBpZGVhLl0KCkhpLAoKT24gMjIvMDIvMTYg MTU6MTgsIERhdmUgR29yZG9uIHdyb3RlOgo+IFRoaXMgaXMgZXNzZW50aWFsbHkgQ2hyaXMgV2ls c29uJ3MgcGF0Y2ggb2YgYSBzaW1pbGFyIG5hbWUsIHJld29ya2VkIG9uCj4gdG9wIG9mIEFsZXgg RGFpJ3MgcmVjZW50IHBhdGNoOgo+ICAgIGRybS9pOTE1OiBBZGQgaTkxNV9nZW1fb2JqZWN0X3Zt YXAgdG8gbWFwIEdFTSBvYmplY3QgdG8gdmlydHVhbCBzcGFjZQo+IENocmlzJyBvcmlnaW5hbCBj b21tZW50YXJ5IHNhaWQ6Cj4KPiAgICBXZSBub3cgaGF2ZSB0d28gaW1wbGVtZW50YXRpb25zIGZv ciB2bWFwcGluZyBhIHdob2xlIG9iamVjdCwgb25lIGZvcgo+ICAgIGRtYS1idWYgYW5kIG9uZSBm b3IgdGhlIHJpbmdidWZmZXIuIElmIHdlIGNvdXBsZSB0aGUgdm1hcHBpbmcgaW50bwo+ICAgIHRo ZSBvYmotPnBhZ2VzIGxpZmV0aW1lLCB0aGVuIHdlIGNhbiByZXVzZSBhbiBvYmotPnZtYXBwaW5n IGZvciBib3RoCj4gICAgYW5kIGF0IHRoZSBzYW1lIHRpbWUgY291cGxlIGl0IGludG8gdGhlIHNo cmlua2VyLgoKQXMgYSBnZW5lcmFsIGNvbmNlcHQgbXkgd29ycnkgaXMgdGhhdCBieSBpbXBsZW1l bnRpbmcgdGhpcyBhcHByb2FjaCB3ZSAKdGllIHR3byB1bnJlbGF0ZWQgY29uY2VwdHMgdG9nZXRo ZXIuCgpTaHJpbmtlciBpcyBhYm91dCBiYWNraW5nIHN0b3JhZ2UgKHVzZWQvZnJlZSBwYWdlcyBp biBhIG1hY2hpbmUpLCB3aGlsZSAKdm1hcCBpcyBhYm91dCBrZXJuZWwgYWRkcmVzcyBzcGFjZS4g QW5kIHRoZW4gb24gMzItYml0IHdpdGggaXRzIGxpbWl0ZWQgCnZtYXAgc3BhY2UgKDEyOE1pQiwg cmlnaHQ/KSwgaXQgY2FuIGJlY29tZSBleGhhdXN0ZWQgbXVjaCBzb29uZXIgdGhhdCAKdGhlIHNo cmlua2VyIHdvdWxkIGJlIHRyaWdnZXJlZC4gQW5kIHdlIHdvdWxkIHJlbHkgb24gdGhlIHNocmlu a2VyIApydW5uaW5nIHRvIGZyZWUgdXAgYWRkcmVzcyBzcGFjZSBhcyB3ZWxsIG5vdywgcmlnaHQ/ CgpTbyB1bmxlc3MgSSBhbSBtaXNzaW5nIHNvbWV0aGluZyB0aGF0IGRvZXNuJ3QgZml0IHdlbGwu Cgo+Cj4gICAgdjI6IE1hcmsgdGhlIGZhaWxhYmxlIGttYWxsb2MoKSBhcyBfX0dGUF9OT1dBUk4g KHZzeXJqYWxhKQo+ICAgIHYzOiBDYWxsIHVucGluX3ZtYXAgZnJvbSB0aGUgcmlnaHQgZG1hYnVm IHVubWFwcGVyCj4KPiBUaGlzIHBhdGNoIFt2NF0gcmVpbXBsZW1lbnRzIHRoZSBzYW1lIGZ1bmN0 aW9uYWxpdHksIGJ1dCBub3cgYXMgd3JhcHBlcnMKPiByb3VuZCB0aGUgcmVjZW50bHktaW50cm9k dWNlZCBpOTE1X2dlbV9vYmplY3Rfdm1hcF9yYW5nZSgpIGZyb20gQWxleCdzCj4gcGF0Y2ggbWVu dGlvbmVkIGFib3ZlLgo+Cj4gV2l0aCB0aGlzIGNoYW5nZSwgd2UgaGF2ZSBvbmx5IG9uZSB2bWFw KCkgaW4gdGhlIHdob2xlIGRyaXZlciA6KQo+Cj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBHb3Jkb24g PGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRl bC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg fCAxMSArKysrKy0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAg ICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jICB8IDQxICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgMzIg KysrKysrKysrKysrLS0tLS0tLS0tLS0tLQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCA2NyBpbnNlcnRp b25zKCspLCA1NiBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4 IDhjZDQ3YzYuLmIyMzdlYmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjE2 OCwxMCArMjE2OCw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0IHsKPiAgIAkJc3RydWN0 IHNjYXR0ZXJsaXN0ICpzZzsKPiAgIAkJaW50IGxhc3Q7Cj4gICAJfSBnZXRfcGFnZTsKPiAtCj4g LQkvKiBwcmltZSBkbWEtYnVmIHN1cHBvcnQgKi8KPiAtCXZvaWQgKmRtYV9idWZfdm1hcHBpbmc7 Cj4gLQlpbnQgdm1hcHBpbmdfY291bnQ7Cj4gKwl2b2lkICp2bWFwcGluZzsKPgo+ICAgCS8qKiBC cmVhZGNydW1iIG9mIGxhc3QgcmVuZGVyaW5nIHRvIHRoZSBidWZmZXIuCj4gICAJICogVGhlcmUg Y2FuIG9ubHkgYmUgb25lIHdyaXRlciwgYnV0IHdlIGFsbG93IGZvciBtdWx0aXBsZSByZWFkZXJz Lgo+IEBAIC0yOTc5LDYgKzI5NzYsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29i amVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCW9i ai0+cGFnZXNfcGluX2NvdW50LS07Cj4gICB9Cj4KPiArdm9pZCAqX19tdXN0X2NoZWNrIGk5MTVf Z2VtX29iamVjdF9waW5fdm1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiAr c3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl92bWFwKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdl cyhvYmopOwo+ICt9Cj4gKwo+ICAgdm9pZCAqX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29iamVjdF92 bWFwX3JhbmdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCQkJCSAgICAg IHVuc2lnbmVkIGludCBmaXJzdCwKPiAgIAkJCQkJICAgICAgdW5zaWduZWQgaW50IG5wYWdlcyk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggMGQ1NzA5YS4uMTQ5NDJjZiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yMjM1LDYgKzIyMzUsMTEgQEAgc3RhdGljIHZv aWQgaTkxNV9nZW1fb2JqZWN0X2ZyZWVfbW1hcF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPiAgIAlvcHMtPnB1dF9wYWdlcyhvYmopOwo+ICAgCW9iai0+cGFnZXMgPSBO VUxMOwo+Cj4gKwlpZiAob2JqLT52bWFwcGluZykgewo+ICsJCXZ1bm1hcChvYmotPnZtYXBwaW5n KTsKPiArCQlvYmotPnZtYXBwaW5nID0gTlVMTDsKPiArCX0KPiArCj4gICAJaTkxNV9nZW1fb2Jq ZWN0X2ludmFsaWRhdGUob2JqKTsKPgo+ICAgCXJldHVybiAwOwo+IEBAIC0yNDQ3LDYgKzI0NTIs NDAgQEAgdm9pZCAqaTkxNV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiAgIAlyZXR1cm4gYWRkcjsKPiAgIH0KPgo+ICsvKioKPiArICogaTkx NV9nZW1fb2JqZWN0X3Bpbl92bWFwIC0gcGluIGEgR0VNIG9iamVjdCBhbmQgbWFwIGl0IGludG8g a2VybmVsIHNwYWNlCj4gKyAqIEBvYmo6IHRoZSBHRU0gb2JqZWN0IHRvIGJlIG1hcHBlZAo+ICsg Kgo+ICsgKiBDb25iaW5lcyB0aGUgZnVuY3Rpb25zIG9mIGdldF9wYWdlcygpLCBwaW5fcGFnZXMo KSBhbmQgdm1hcF9yYW5nZSgpIG9uCj4gKyAqIHRoZSB3aG9sZSBvYmplY3QuICBUaGUgY2FsbGVy IHNob3VsZCByZWxlYXNlIHRoZSBtYXBwb2luZyBieSBjYWxsaW5nCj4gKyAqIGk5MTVfZ2VtX29i amVjdF91bnBpbl92bWFwKCkgd2hlbiB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciByZXF1aXJlZC4K PiArICogZnVuY3Rpb24uCgoiQ29uYmluZXMiLCAibWFwcG9pbmciIGFuZCBhIGRhbmdsaW5nICJm dW5jdGlvbi4iIHNlbnRlbmNlIDopCgoid2hlbiB0aGUgbWFwcGluZyBpcyBubyBsb25nZXIgcmVx dWlyZWQuIiBwcm9iYWJseSB3b3VsZCBiZSBiZXR0ZXIuCgpSZXR1cm4gdmFsdWUgYWxzbyBuZWVk cyB0byBiZSBkb2N1bWVudGVkLgoKPiArICoKPiArICogUmV0dXJucyBhbiBFUlJfUFRSIG9uIGZh aWx1cmUuCj4gKyAqLwo+ICt2b2lkICppOTE1X2dlbV9vYmplY3RfcGluX3ZtYXAoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiArewo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBp OTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBF UlJfUFRSKHJldCk7Cj4gKwo+ICsJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+ICsK PiArCWlmIChvYmotPnZtYXBwaW5nID09IE5VTEwpIHsKPiArCQlvYmotPnZtYXBwaW5nID0gaTkx NV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uob2JqLCAwLAo+ICsJCQkJCW9iai0+YmFzZS5zaXplID4+ IFBBR0VfU0hJRlQpOwo+ICsKPiArCQlpZiAob2JqLT52bWFwcGluZyA9PSBOVUxMKSB7Cj4gKwkJ CWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICsJCQlyZXR1cm4gRVJSX1BUUigt RU5PTUVNKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIG9iai0+dm1hcHBpbmc7Cj4gK30K PiArCj4gICB2b2lkIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1h LAo+ICAgCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIHsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+IGluZGV4IGFlZTQxNDkuLmFkYzdi NWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1hYnVmLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+IEBAIC05NSwx NCArOTUsMTIgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fdW5tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50LAo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmX3RvX29iaihhdHRhY2htZW50LT5kbWFidWYpOwo+Cj4g LQltdXRleF9sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlkbWFf dW5tYXBfc2coYXR0YWNobWVudC0+ZGV2LCBzZy0+c2dsLCBzZy0+bmVudHMsIGRpcik7Cj4gICAJ c2dfZnJlZV90YWJsZShzZyk7Cj4gICAJa2ZyZWUoc2cpOwo+Cj4gKwltdXRleF9sb2NrKCZvYmot PmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdl cyhvYmopOwo+IC0KPiAgIAltdXRleF91bmxvY2soJm9iai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRl eCk7Cj4gICB9CgpVbnJlbGF0ZWQgaHVuayBsaWtlIHRoaXMgd291bGQgYmV0dGVyIGZpdCBhIHNl cGFyYXRlIHBhdGNoIHNvIGl0IGNhbiBiZSAKZXhwbGFpbmVkIHdoeSBpdCBpcyBPSywgb3IgYmV0 dGVyLgoKSSB3b3VsZCBzdWdnZXN0IGRyb3BwaW5nIGl0IGZyb20gdGhpcyBwYXRjaC4KCj4gQEAg LTExMCw0MSArMTA4LDE3IEBAIHN0YXRpYyB2b2lkICppOTE1X2dlbV9kbWFidWZfdm1hcChzdHJ1 Y3QgZG1hX2J1ZiAqZG1hX2J1ZikKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gZG1hX2J1Zl90b19vYmooZG1hX2J1Zik7Cj4gICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gKwl2b2lkICphZGRyOwo+ICAgCWludCByZXQ7Cj4KPiAg IAlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOwo+ICAgCWlmIChyZXQp Cj4gICAJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4KPiAtCWlmIChvYmotPmRtYV9idWZfdm1hcHBp bmcpIHsKPiAtCQlvYmotPnZtYXBwaW5nX2NvdW50Kys7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+ IC0JfQo+IC0KPiAtCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKPiAtCWlm IChyZXQpCj4gLQkJZ290byBlcnI7Cj4gLQo+IC0JaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhv YmopOwo+IC0KPiAtCXJldCA9IC1FTk9NRU07Cj4gLQo+IC0Jb2JqLT5kbWFfYnVmX3ZtYXBwaW5n ID0gaTkxNV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uob2JqLCAwLAo+IC0JCQkJCQlkbWFfYnVmLT5z aXplID4+IFBBR0VfU0hJRlQpOwo+IC0KPiAtCWlmICghb2JqLT5kbWFfYnVmX3ZtYXBwaW5nKQo+ IC0JCWdvdG8gZXJyX3VucGluOwo+IC0KPiAtCW9iai0+dm1hcHBpbmdfY291bnQgPSAxOwo+IC1v dXRfdW5sb2NrOgo+ICsJYWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fdm1hcChvYmopOwo+ICAg CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JcmV0dXJuIG9iai0+ZG1hX2J1 Zl92bWFwcGluZzsKPgo+IC1lcnJfdW5waW46Cj4gLQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFn ZXMob2JqKTsKPiAtZXJyOgo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4g LQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICsJcmV0dXJuIGFkZHI7Cj4gICB9Cj4KPiAgIHN0YXRp YyB2b2lkIGk5MTVfZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHZv aWQgKnZhZGRyKQo+IEBAIC0xNTMsMTIgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2Rt YWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHZvaWQgKnZhZGRyKQo+ICAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+Cj4gICAJbXV0ZXhfbG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKC0tb2JqLT52bWFwcGluZ19jb3VudCA9PSAwKSB7 Cj4gLQkJdnVubWFwKG9iai0+ZG1hX2J1Zl92bWFwcGluZyk7Cj4gLQkJb2JqLT5kbWFfYnVmX3Zt YXBwaW5nID0gTlVMTDsKPiAtCj4gLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7 Cj4gLQl9Cj4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fdm1hcChvYmopOwo+ICAgCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IDQzNGE0NTIuLjQ3ZjE4NmUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTIwNTYsNyArMjA1Niw3IEBAIHN0 YXRpYyBpbnQgaW5pdF9waHlzX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJp bmcpCj4gICB2b2lkIGludGVsX3VucGluX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBpbnRlbF9yaW5n YnVmZmVyICpyaW5nYnVmKQo+ICAgewo+ICAgCWlmIChIQVNfTExDKHJpbmdidWYtPm9iai0+YmFz ZS5kZXYpICYmICFyaW5nYnVmLT5vYmotPnN0b2xlbikKPiAtCQl2dW5tYXAocmluZ2J1Zi0+dmly dHVhbF9zdGFydCk7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3ZtYXAocmluZ2J1Zi0+b2Jq KTsKPiAgIAllbHNlCj4gICAJCWlvdW5tYXAocmluZ2J1Zi0+dmlydHVhbF9zdGFydCk7Cj4gICAJ cmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9IE5VTEw7Cj4gQEAgLTIwNzcsMTYgKzIwNzcsMTQgQEAg aW50IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gICAJCQlyZXR1cm4gcmV0Owo+Cj4gICAJCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRf dG9fY3B1X2RvbWFpbihvYmosIHRydWUpOwo+IC0JCWlmIChyZXQpIHsKPiAtCQkJaTkxNV9nZW1f b2JqZWN0X2dndHRfdW5waW4ob2JqKTsKPiAtCQkJcmV0dXJuIHJldDsKPiAtCQl9Cj4gKwkJaWYg KHJldCkKPiArCQkJZ290byB1bnBpbjsKPgo+IC0JCXJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPSBp OTE1X2dlbV9vYmplY3Rfdm1hcF9yYW5nZShvYmosIDAsCj4gLQkJCQkJCXJpbmdidWYtPnNpemUg Pj4gUEFHRV9TSElGVCk7Cj4gLQkJaWYgKHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPT0gTlVMTCkg ewo+IC0JCQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihvYmopOwo+IC0JCQlyZXR1cm4gLUVO T01FTTsKPiArCQlyaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl92 bWFwKG9iaik7Cj4gKwkJaWYgKElTX0VSUihyaW5nYnVmLT52aXJ0dWFsX3N0YXJ0KSkgewo+ICsJ CQlyZXQgPSBQVFJfRVJSKHJpbmdidWYtPnZpcnR1YWxfc3RhcnQpOwo+ICsJCQlyaW5nYnVmLT52 aXJ0dWFsX3N0YXJ0ID0gTlVMTDsKPiArCQkJZ290byB1bnBpbjsKPiAgIAkJfQo+ICAgCX0gZWxz ZSB7Cj4gICAJCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3BpbihvYmosIFBBR0VfU0laRSwgUElO X01BUFBBQkxFKTsKPiBAQCAtMjA5NCwxMCArMjA5Miw4IEBAIGludCBpbnRlbF9waW5fYW5kX21h cF9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJcmV0dXJuIHJl dDsKPgo+ICAgCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0 cnVlKTsKPiAtCQlpZiAocmV0KSB7Cj4gLQkJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9i aik7Cj4gLQkJCXJldHVybiByZXQ7Cj4gLQkJfQo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gdW5w aW47Cj4KPiAgIAkJLyogQWNjZXNzIHRocm91Z2ggdGhlIEdUVCByZXF1aXJlcyB0aGUgZGV2aWNl IHRvIGJlIGF3YWtlLiAqLwo+ICAgCQlhc3NlcnRfcnBtX3dha2Vsb2NrX2hlbGQoZGV2X3ByaXYp Owo+IEBAIC0yMTA1LDE0ICsyMTAxLDE4IEBAIGludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVm ZmVyX29iaihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQlyaW5nYnVmLT52aXJ0dWFsX3N0 YXJ0ID0gaW9yZW1hcF93YyhkZXZfcHJpdi0+Z3R0Lm1hcHBhYmxlX2Jhc2UgKwo+ICAgCQkJCQkJ ICAgIGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChvYmopLCByaW5nYnVmLT5zaXplKTsKPiAgIAkJ aWYgKHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPT0gTlVMTCkgewo+IC0JCQlpOTE1X2dlbV9vYmpl Y3RfZ2d0dF91bnBpbihvYmopOwo+IC0JCQlyZXR1cm4gLUVJTlZBTDsKPiArCQkJcmV0ID0gLUVO T01FTTsKPiArCQkJZ290byB1bnBpbjsKCkFub3RoZXIgcmVmYWN0b3Jpbmcgbm90IHJlYWxseSBi ZWxvbmdpbmcgdG8gdGhpcyBwYXRjaC4gSSBhbSBub3Qgc3VyZSBpdCAKaXMgdGhhdCBnb29kIHRv IHNoYXJlIHRoZSBjbGVhbnVwIHBhdGggZnJvbSB0aGUgdHdvIGxvZ2ljYWxseSBzcGxpdCAKYnJh bmNoZXMuIE1heSBiZSBmcmFnaWxlIGluIHRoZSBmdXR1cmUuIEJ1dCBpdCBpcyBzaG9ydCBlbm91 Z2ggc28gT0suCgpCdXQgYXMgYSByZWxhdGVkIHF1ZXN0aW9uLCBJIHdvbmRlciB3aHkgZG9lc24n dCB0aGUgTFJDIHJlcXVpcmUgdGhlIHNhbWUgCiFIQVNfTExDIGFwcHJvYWNoIHdoZW4gbWFwcGlu ZyBhcyByaW5nIGJ1ZmZlciBkb2VzIGhlcmU/Cgo+ICAgCQl9Cj4gICAJfQo+Cj4gICAJcmluZ2J1 Zi0+dm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHQob2JqKTsKPgo+ICAgCXJldHVybiAwOwo+ICsK PiArdW5waW46Cj4gKwlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihvYmopOwo+ICsJcmV0dXJu IHJldDsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQgaW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29i aihzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPgoKUmVnYXJkcywKClR2cnRrbwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK