From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v99 2/4] drm/i915: Refactor duplicate object vmap functions Date: Wed, 21 Oct 2015 11:44:02 +0200 Message-ID: <20151021094402.GR13786@phenom.ffwll.local> References: <1445419281-28521-1-git-send-email-chris@chris-wilson.co.uk> <1445419281-28521-2-git-send-email-chris@chris-wilson.co.uk> 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 3DDE96ED91 for ; Wed, 21 Oct 2015 02:44:07 -0700 (PDT) Received: by wicfx6 with SMTP id fx6so82677219wic.1 for ; Wed, 21 Oct 2015 02:44:05 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1445419281-28521-2-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMjEsIDIwMTUgYXQgMTA6MjE6MTlBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFdlIG5vdyBoYXZlIHR3byBpbXBsZW1lbnRhdGlvbnMgZm9yIHZtYXBwaW5nIGEgd2hv bGUgb2JqZWN0LCBvbmUgZm9yCj4gZG1hLWJ1ZiBhbmQgb25lIGZvciB0aGUgcmluZ2J1ZmZlci4g SWYgd2UgY291cGxlIHRoZSB2bWFwcGluZyBpbnRvIHRoZQo+IG9iai0+cGFnZXMgbGlmZXRpbWUs IHRoZW4gd2UgY2FuIHJldXNlIGFuIG9iai0+dm1hcHBpbmcgZm9yIGJvdGggYW5kIGF0Cj4gdGhl IHNhbWUgdGltZSBjb3VwbGUgaXQgaW50byB0aGUgc2hyaW5rZXIuCj4gCj4gdjI6IE1hcmsgdGhl IGZhaWxhYmxlIGttYWxsb2MoKSBhcyBfX0dGUF9OT1dBUk4gKHZzeXJqYWxhKQo+IAo+IFNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgfCAxMiArKysrLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDQxICsrKysrKysrKysr KysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyAg fCA1NSArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgNTMgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDcyIGluc2VydGlvbnMoKyksIDg5IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDQwOTNlZWRmZDY2NC4uMzQzYTBh NzIzZDJjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTIwODksMTAgKzIwODks NyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gIAkJc3RydWN0IHNjYXR0ZXJsaXN0 ICpzZzsKPiAgCQlpbnQgbGFzdDsKPiAgCX0gZ2V0X3BhZ2U7Cj4gLQo+IC0JLyogcHJpbWUgZG1h LWJ1ZiBzdXBwb3J0ICovCj4gLQl2b2lkICpkbWFfYnVmX3ZtYXBwaW5nOwo+IC0JaW50IHZtYXBw aW5nX2NvdW50Owo+ICsJdm9pZCAqdm1hcHBpbmc7Cj4gIAo+ICAJLyoqIEJyZWFkY3J1bWIgb2Yg bGFzdCByZW5kZXJpbmcgdG8gdGhlIGJ1ZmZlci4KPiAgCSAqIFRoZXJlIGNhbiBvbmx5IGJlIG9u ZSB3cml0ZXIsIGJ1dCB3ZSBhbGxvdyBmb3IgbXVsdGlwbGUgcmVhZGVycy4KPiBAQCAtMjg0MCwx MiArMjgzNywxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJQlVHX09OKG9iai0+cGFnZXMg PT0gTlVMTCk7Cj4gIAlvYmotPnBhZ2VzX3Bpbl9jb3VudCsrOwo+ICB9Cj4gKwo+ICBzdGF0aWMg aW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAgCUJVR19PTihvYmotPnBhZ2VzX3Bpbl9jb3VudCA9PSAw KTsKPiAgCW9iai0+cGFnZXNfcGluX2NvdW50LS07Cj4gIH0KPiAgCj4gK3ZvaWQgKl9fbXVzdF9j aGVjayBpOTE1X2dlbV9vYmplY3RfcGluX3ZtYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaik7Cgplcm0sIHRoYXQgc2hvdWxkIGJlIGluIGEgaGVhZGVyLgoKPiArc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl92bWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCj4gK3sKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICt9 CgpBbmQgdGhpcyBvbmUgbWF5YmUgcmlnaHQgbmV4dCB0byBpdC4gQWxzbywga2VybmVsZG9jIGlz IG1pc3NpbmcgZm9yIGJvdGgKb2YgdGhlbS4KCldpdGggdGhhdCBwb2xpc2ggYXBwbGllZCB0aGlz IGlzIFJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoK UGxlYXNlIHB1c2ggdGhlIGVudGlyZSBwaWxlIG9uY2UgRGF2ZSBBaXJsaWUgaGFzIGFja2VkIHRo ZSBkcm0gcGFydCBmb3IKZHJtX21hbGxvY19hYl9nZnAuCi1EYW5pZWwKCgo+ICsKPiAgaW50IF9f bXVzdF9jaGVjayBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPiAgaW50IGk5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gIAkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0bywKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAyOTdkNmJiYmUwZjIuLjg3MjcxMmM0YjBhYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yMTg3LDYgKzIxODcsMTEgQEAgaTkxNV9nZW1f b2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJb3Bz LT5wdXRfcGFnZXMob2JqKTsKPiAgCW9iai0+cGFnZXMgPSBOVUxMOwo+ICAKPiArCWlmIChvYmot PnZtYXBwaW5nKSB7Cj4gKwkJdnVubWFwKG9iai0+dm1hcHBpbmcpOwo+ICsJCW9iai0+dm1hcHBp bmcgPSBOVUxMOwo+ICsJfQo+ICsKPiAgCWk5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRlKG9iaik7 Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTIzNTMsNiArMjM1OCw0MiBAQCBpOTE1X2dlbV9vYmpl Y3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAlyZXR1cm4g MDsKPiAgfQo+ICAKPiArdm9pZCAqaTkxNV9nZW1fb2JqZWN0X3Bpbl92bWFwKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X2dldF9wYWdlcyhvYmopOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gRVJS X1BUUihyZXQpOwo+ICsKPiArCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPiArCj4g KwlpZiAob2JqLT52bWFwcGluZyA9PSBOVUxMKSB7Cj4gKwkJc3RydWN0IHNnX3BhZ2VfaXRlciBz Z19pdGVyOwo+ICsJCXN0cnVjdCBwYWdlICoqcGFnZXM7Cj4gKwkJaW50IG47Cj4gKwo+ICsJCW4g PSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwo+ICsJCXBhZ2VzID0ga21hbGxvYyhuKnNp emVvZigqcGFnZXMpLCBHRlBfVEVNUE9SQVJZIHwgX19HRlBfTk9XQVJOKTsKPiArCQlpZiAocGFn ZXMgPT0gTlVMTCkKPiArCQkJcGFnZXMgPSBkcm1fbWFsbG9jX2FiKG4sIHNpemVvZigqcGFnZXMp KTsKPiArCQlpZiAocGFnZXMgIT0gTlVMTCkgewo+ICsJCQluID0gMDsKPiArCQkJZm9yX2VhY2hf c2dfcGFnZShvYmotPnBhZ2VzLT5zZ2wsICZzZ19pdGVyLCBvYmotPnBhZ2VzLT5uZW50cywgMCkK PiArCQkJCXBhZ2VzW24rK10gPSBzZ19wYWdlX2l0ZXJfcGFnZSgmc2dfaXRlcik7Cj4gKwo+ICsJ CQlvYmotPnZtYXBwaW5nID0gdm1hcChwYWdlcywgbiwgMCwgUEFHRV9LRVJORUwpOwo+ICsJCQlk cm1fZnJlZV9sYXJnZShwYWdlcyk7Cj4gKwkJfQo+ICsJCWlmIChvYmotPnZtYXBwaW5nID09IE5V TEwpIHsKPiArCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gKwkJCXJldHVy biBFUlJfUFRSKC1FTk9NRU0pOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gb2JqLT52bWFw cGluZzsKPiArfQo+ICsKPiAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkx NV92bWEgKnZtYSwKPiAgCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkK PiAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4gaW5kZXggZTljMmJm ZDg1YjUyLi41YzQxNjNkMzg0NWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZG1hYnVmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9k bWFidWYuYwo+IEBAIC05NSwxNCArOTUsMTIgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fdW5tYXBf ZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50LAo+ICB7Cj4gIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gZG1hX2J1Zl90b19vYmooYXR0YWNobWVu dC0+ZG1hYnVmKTsKPiAgCj4gLQltdXRleF9sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0 ZXgpOwo+IC0KPiAgCWRtYV91bm1hcF9zZyhhdHRhY2htZW50LT5kZXYsIHNnLT5zZ2wsIHNnLT5u ZW50cywgZGlyKTsKPiAgCXNnX2ZyZWVfdGFibGUoc2cpOwo+ICAJa2ZyZWUoc2cpOwo+ICAKPiAt CWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+IC0KPiArCW11dGV4X2xvY2soJm9i ai0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCk7Cj4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fdm1h cChvYmopOwo+ICAJbXV0ZXhfdW5sb2NrKCZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ ICB9Cj4gIAo+IEBAIC0xMTAsNTEgKzEwOCwxNyBAQCBzdGF0aWMgdm9pZCAqaTkxNV9nZW1fZG1h YnVmX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmX3RvX29iaihkbWFfYnVmKTsKPiAgCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+IC0Jc3RydWN0IHNnX3BhZ2VfaXRlciBz Z19pdGVyOwo+IC0Jc3RydWN0IHBhZ2UgKipwYWdlczsKPiAtCWludCByZXQsIGk7Cj4gKwl2b2lk ICphZGRyOwo+ICsJaW50IHJldDsKPiAgCj4gIAlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJy dXB0aWJsZShkZXYpOwo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAK PiAtCWlmIChvYmotPmRtYV9idWZfdm1hcHBpbmcpIHsKPiAtCQlvYmotPnZtYXBwaW5nX2NvdW50 Kys7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+IC0JfQo+IC0KPiAtCXJldCA9IGk5MTVfZ2VtX29i amVjdF9nZXRfcGFnZXMob2JqKTsKPiAtCWlmIChyZXQpCj4gLQkJZ290byBlcnI7Cj4gLQo+IC0J aTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+IC0KPiAtCXJldCA9IC1FTk9NRU07Cj4g LQo+IC0JcGFnZXMgPSBkcm1fbWFsbG9jX2FiKG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQs IHNpemVvZigqcGFnZXMpKTsKPiAtCWlmIChwYWdlcyA9PSBOVUxMKQo+IC0JCWdvdG8gZXJyX3Vu cGluOwo+IC0KPiAtCWkgPSAwOwo+IC0JZm9yX2VhY2hfc2dfcGFnZShvYmotPnBhZ2VzLT5zZ2ws ICZzZ19pdGVyLCBvYmotPnBhZ2VzLT5uZW50cywgMCkKPiAtCQlwYWdlc1tpKytdID0gc2dfcGFn ZV9pdGVyX3BhZ2UoJnNnX2l0ZXIpOwo+IC0KPiAtCW9iai0+ZG1hX2J1Zl92bWFwcGluZyA9IHZt YXAocGFnZXMsIGksIDAsIFBBR0VfS0VSTkVMKTsKPiAtCWRybV9mcmVlX2xhcmdlKHBhZ2VzKTsK PiAtCj4gLQlpZiAoIW9iai0+ZG1hX2J1Zl92bWFwcGluZykKPiAtCQlnb3RvIGVycl91bnBpbjsK PiAtCj4gLQlvYmotPnZtYXBwaW5nX2NvdW50ID0gMTsKPiAtb3V0X3VubG9jazoKPiArCWFkZHIg PSBpOTE1X2dlbV9vYmplY3RfcGluX3ZtYXAob2JqKTsKPiAgCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+IC0JcmV0dXJuIG9iai0+ZG1hX2J1Zl92bWFwcGluZzsKPiAgCj4gLWVy cl91bnBpbjoKPiAtCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+IC1lcnI6Cj4g LQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCXJldHVybiBFUlJfUFRSKHJl dCk7Cj4gKwlyZXR1cm4gYWRkcjsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaTkxNV9nZW1fZG1h YnVmX3Z1bm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Ziwgdm9pZCAqdmFkZHIpCj4gQEAgLTE2 MywxMiArMTI3LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fZG1hYnVmX3Z1bm1hcChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hX2J1Ziwgdm9pZCAqdmFkZHIpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gb2JqLT5iYXNlLmRldjsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 Cj4gLQlpZiAoLS1vYmotPnZtYXBwaW5nX2NvdW50ID09IDApIHsKPiAtCQl2dW5tYXAob2JqLT5k bWFfYnVmX3ZtYXBwaW5nKTsKPiAtCQlvYmotPmRtYV9idWZfdm1hcHBpbmcgPSBOVUxMOwo+IC0K PiAtCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiAtCX0KPiArCWk5MTVfZ2Vt X29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ IGluZGV4IGY4MWVjNzc4NWZhYy4uNDlhYTUyNDQwZGIyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0xOTY3LDM0ICsxOTY3LDEyIEBAIHN0YXRpYyBp bnQgaW5pdF9waHlzX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4g IHZvaWQgaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmdidWYpCj4gIHsKPiAgCWlmIChIQVNfTExDKHJpbmdidWYtPm9iai0+YmFzZS5kZXYpICYm ICFyaW5nYnVmLT5vYmotPnN0b2xlbikKPiAtCQl2dW5tYXAocmluZ2J1Zi0+dmlydHVhbF9zdGFy dCk7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3ZtYXAocmluZ2J1Zi0+b2JqKTsKPiAgCWVs c2UKPiAgCQlpb3VubWFwKHJpbmdidWYtPnZpcnR1YWxfc3RhcnQpOwo+IC0JcmluZ2J1Zi0+dmly dHVhbF9zdGFydCA9IE5VTEw7Cj4gIAlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihyaW5nYnVm LT5vYmopOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdTMyICp2bWFwX29iaihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQo+IC17Cj4gLQlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7Cj4g LQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+IC0Jdm9pZCAqYWRkcjsKPiAtCWludCBpOwo+IC0KPiAt CXBhZ2VzID0gZHJtX21hbGxvY19hYihvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZULCBzaXpl b2YoKnBhZ2VzKSk7Cj4gLQlpZiAocGFnZXMgPT0gTlVMTCkKPiAtCQlyZXR1cm4gTlVMTDsKPiAt Cj4gLQlpID0gMDsKPiAtCWZvcl9lYWNoX3NnX3BhZ2Uob2JqLT5wYWdlcy0+c2dsLCAmc2dfaXRl ciwgb2JqLT5wYWdlcy0+bmVudHMsIDApCj4gLQkJcGFnZXNbaSsrXSA9IHNnX3BhZ2VfaXRlcl9w YWdlKCZzZ19pdGVyKTsKPiAtCj4gLQlhZGRyID0gdm1hcChwYWdlcywgaSwgMCwgUEFHRV9LRVJO RUwpOwo+IC0JZHJtX2ZyZWVfbGFyZ2UocGFnZXMpOwo+IC0KPiAtCXJldHVybiBhZGRyOwo+IC19 Cj4gLQo+ICBpbnQgaW50ZWxfcGluX2FuZF9tYXBfcmluZ2J1ZmZlcl9vYmooc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiAgCQkJCSAgICAgc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYp Cj4gIHsKPiBAQCAtMjAwOCwxNSArMTk4NiwxNCBAQCBpbnQgaW50ZWxfcGluX2FuZF9tYXBfcmlu Z2J1ZmZlcl9vYmooc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJcmV0dXJuIHJldDsKPiAg Cj4gIAkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgdHJ1ZSk7 Cj4gLQkJaWYgKHJldCkgewo+IC0JCQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihvYmopOwo+ IC0JCQlyZXR1cm4gcmV0Owo+IC0JCX0KPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIHVucGluOwo+ ICAKPiAtCQlyaW5nYnVmLT52aXJ0dWFsX3N0YXJ0ID0gdm1hcF9vYmoob2JqKTsKPiAtCQlpZiAo cmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9PSBOVUxMKSB7Cj4gLQkJCWk5MTVfZ2VtX29iamVjdF9n Z3R0X3VucGluKG9iaik7Cj4gLQkJCXJldHVybiAtRU5PTUVNOwo+ICsJCXJpbmdidWYtPnZpcnR1 YWxfc3RhcnQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3ZtYXAob2JqKTsKPiArCQlpZiAoSVNfRVJS KHJpbmdidWYtPnZpcnR1YWxfc3RhcnQpKSB7Cj4gKwkJCXJldCA9IFBUUl9FUlIocmluZ2J1Zi0+ dmlydHVhbF9zdGFydCk7Cj4gKwkJCXJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPSBOVUxMOwo+ICsJ CQlnb3RvIHVucGluOwo+ICAJCX0KPiAgCX0gZWxzZSB7Cj4gIAkJcmV0ID0gaTkxNV9nZW1fb2Jq X2dndHRfcGluKG9iaiwgUEFHRV9TSVpFLCBQSU5fTUFQUEFCTEUpOwo+IEBAIC0yMDI0LDIwICsy MDAxLDIyIEBAIGludCBpbnRlbF9waW5fYW5kX21hcF9yaW5nYnVmZmVyX29iaihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICAJCQlyZXR1cm4gcmV0Owo+ICAKPiAgCQlyZXQgPSBpOTE1X2dlbV9v YmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCB0cnVlKTsKPiAtCQlpZiAocmV0KSB7Cj4gLQkJ CWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7Cj4gLQkJCXJldHVybiByZXQ7Cj4gLQkJ fQo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gdW5waW47Cj4gIAo+ICAJCXJpbmdidWYtPnZpcnR1 YWxfc3RhcnQgPSBpb3JlbWFwX3djKGRldl9wcml2LT5ndHQubWFwcGFibGVfYmFzZSArCj4gIAkJ CQkJCSAgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSwgcmluZ2J1Zi0+c2l6ZSk7Cj4g IAkJaWYgKHJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPT0gTlVMTCkgewo+IC0JCQlpOTE1X2dlbV9v YmplY3RfZ2d0dF91bnBpbihvYmopOwo+IC0JCQlyZXR1cm4gLUVJTlZBTDsKPiArCQkJcmV0ID0g LUVOT01FTTsKPiArCQkJZ290byB1bnBpbjsKPiAgCQl9Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIDA7 Cj4gKwo+ICt1bnBpbjoKPiArCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKG9iaik7Cj4gKwly ZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmoo c3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYpCj4gLS0gCj4gMi42LjEKPiAKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=