From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/6] drm/i915: Refactor duplicate object vmap functions Date: Wed, 6 Apr 2016 10:30:15 +0100 Message-ID: <5704D727.5010104@linux.intel.com> References: <1459861057-25931-1-git-send-email-chris@chris-wilson.co.uk> <1459861057-25931-4-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 4A7A26E8B7 for ; Wed, 6 Apr 2016 09:31:36 +0000 (UTC) In-Reply-To: <1459861057-25931-4-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDA1LzA0LzE2IDEzOjU3LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gV2Ugbm93IGhhdmUgdHdv IGltcGxlbWVudGF0aW9ucyBmb3Igdm1hcHBpbmcgYSB3aG9sZSBvYmplY3QsIG9uZSBmb3IKPiBk bWEtYnVmIGFuZCBvbmUgZm9yIHRoZSByaW5nYnVmZmVyLiBJZiB3ZSBjb3VwbGUgdGhlIHZtYXBw aW5nIGludG8gdGhlCj4gb2JqLT5wYWdlcyBsaWZldGltZSwgdGhlbiB3ZSBjYW4gcmV1c2UgYW4g b2JqLT52bWFwcGluZyBmb3IgYm90aCBhbmQgYXQKPiB0aGUgc2FtZSB0aW1lIGNvdXBsZSBpdCBp bnRvIHRoZSBzaHJpbmtlci4KCkkgc3VwcG9zZSBEYXZlIGNvdWxkIHJlc3BpbiB0aGUgInZtYXBf cmFuZ2UiIGhlbHBlciBvbiB0b3Agb2YgdGhpcyAKc2VyaWVzIHRvIGZ1cnRoZXIgY29uc29saWRh dGUgY21kIHBhcnNlciBhbmQgaTkxNV9nZW1fb2JqZWN0X3Bpbl92bWFwLgoKPiB2MjogTWFyayB0 aGUgZmFpbGFibGUga21hbGxvYygpIGFzIF9fR0ZQX05PV0FSTiAodnN5cmphbGEpCj4gdjM6IENh bGwgdW5waW5fdm1hcCBmcm9tIHRoZSByaWdodCBkbWFidWYgdW5tYXBwZXIKPgo+IFNpZ25lZC1v ZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgMTIgKysrKystLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDQ1ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZG1h YnVmLmMgIHwgNDkgKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgfCAyNiArKy0tLS0tLS0tLS0tLS0tLQo+ ICAgNCBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCA3MiBkZWxldGlvbnMoLSkKPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDY0NDM3NDVkNDE4Mi4uNWZlZGIxYjdkOGQz IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTIxNjcsMTAgKzIxNjcsNyBAQCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCB7Cj4gICAJCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7 Cj4gICAJCWludCBsYXN0Owo+ICAgCX0gZ2V0X3BhZ2U7Cj4gLQo+IC0JLyogcHJpbWUgZG1hLWJ1 ZiBzdXBwb3J0ICovCj4gLQl2b2lkICpkbWFfYnVmX3ZtYXBwaW5nOwo+IC0JaW50IHZtYXBwaW5n X2NvdW50Owo+ICsJdm9pZCAqdm1hcHBpbmc7Cj4KPiAgIAkvKiogQnJlYWRjcnVtYiBvZiBsYXN0 IHJlbmRlcmluZyB0byB0aGUgYnVmZmVyLgo+ICAgCSAqIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSB3 cml0ZXIsIGJ1dCB3ZSBhbGxvdyBmb3IgbXVsdGlwbGUgcmVhZGVycy4KPiBAQCAtMjk4NSwxMiAr Mjk4MiwxOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCUJVR19PTihvYmotPnBhZ2VzID09 IE5VTEwpOwo+ICAgCW9iai0+cGFnZXNfcGluX2NvdW50Kys7Cj4gICB9Cj4gKwo+ICAgc3RhdGlj IGlubGluZSB2b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKQo+ICAgewo+ICAgCUJVR19PTihvYmotPnBhZ2VzX3Bpbl9jb3VudCA9 PSAwKTsKPiAgIAlvYmotPnBhZ2VzX3Bpbl9jb3VudC0tOwo+ICAgfQo+Cj4gK3ZvaWQgKl9fbXVz dF9jaGVjayBpOTE1X2dlbV9vYmplY3RfcGluX3ZtYXAoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaik7Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmplY3RfdW5waW5fdm1h cChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fcGFnZXMob2JqKTsKPiArfQo+ICsKPiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9t dXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gICBpbnQg aTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAg IAkJCSBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0bywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiBpbmRleCA0MGY5MGM3ZTcxOGEuLmJlNGNmMTMzNDNkNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IEBAIC0yMjMyLDYgKzIyMzIsMTEgQEAgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdl cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgCSAqIGxpc3RzIGVhcmx5LiAq Lwo+ICAgCWxpc3RfZGVsKCZvYmotPmdsb2JhbF9saXN0KTsKPgo+ICsJaWYgKG9iai0+dm1hcHBp bmcpIHsKPiArCQl2dW5tYXAob2JqLT52bWFwcGluZyk7Cj4gKwkJb2JqLT52bWFwcGluZyA9IE5V TEw7Cj4gKwl9Cj4gKwo+ICAgCW9wcy0+cHV0X3BhZ2VzKG9iaik7Cj4gICAJb2JqLT5wYWdlcyA9 IE5VTEw7Cj4KPiBAQCAtMjQwMCw2ICsyNDA1LDQ2IEBAIGk5MTVfZ2VtX29iamVjdF9nZXRfcGFn ZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAlyZXR1cm4gMDsKPiAgIH0K Pgo+ICt2b2lkICppOTE1X2dlbV9vYmplY3RfcGluX3ZtYXAoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKCktlcm5lbGRvYyB3b3VsZCBiZSBjb29sLCBpZiBmb3Igbm90aGluZyB0aGVu IGZvciB0aGUgcmV0dXJuIHZhbHVlLgoKPiArewo+ICsJaW50IHJldDsKPiArCgpsb2NrZGVwX2Fz c2VydF9oZWxkIG1heWJlPwoKPiArCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2Jq KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArCj4gKwlpOTE1X2dl bV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gKwo+ICsJaWYgKG9iai0+dm1hcHBpbmcgPT0gTlVM TCkgewo+ICsJCXN0cnVjdCBzZ19wYWdlX2l0ZXIgc2dfaXRlcjsKPiArCQlzdHJ1Y3QgcGFnZSAq KnBhZ2VzOwo+ICsJCWludCBuOwo+ICsKPiArCQluID0gb2JqLT5iYXNlLnNpemUgPj4gUEFHRV9T SElGVDsKPiArCQlwYWdlcyA9IGttYWxsb2MobipzaXplb2YoKnBhZ2VzKSwgR0ZQX1RFTVBPUkFS WSB8IF9fR0ZQX05PV0FSTik7Cj4gKwkJaWYgKHBhZ2VzID09IE5VTEwpCj4gKwkJCXBhZ2VzID0g ZHJtX21hbGxvY19hYihuLCBzaXplb2YoKnBhZ2VzKSk7Cj4gKwkJaWYgKHBhZ2VzICE9IE5VTEwp IHsKPiArCQkJbiA9IDA7Cj4gKwkJCWZvcl9lYWNoX3NnX3BhZ2Uob2JqLT5wYWdlcy0+c2dsLCAm c2dfaXRlciwgb2JqLT5wYWdlcy0+bmVudHMsIDApCj4gKwkJCQlwYWdlc1tuKytdID0gc2dfcGFn ZV9pdGVyX3BhZ2UoJnNnX2l0ZXIpOwo+ICsKPiArCQkJb2JqLT52bWFwcGluZyA9IHZtYXAocGFn ZXMsIG4sIDAsIFBBR0VfS0VSTkVMKTsKPiArCQkJaWYgKG9iai0+dm1hcHBpbmcgPT0gTlVMTCkg ewo+ICsJCQkJaTkxNV9nZW1fc2hyaW5rX2FsbCh0b19pOTE1KG9iai0+YmFzZS5kZXYpKTsKCldv bid0IHRoZSBzaHJpbmtlciBhbHJlYWR5IHJ1biB2aWEgdGhlIG5ldyBub3RpZmllcj8gV2h5IGNh bGwgaXQgYWdhaW4gCmFuZCBmb3IgYWxsIG9iamVjdHMgdGhpcyB0aW1lPwoKQWxzbywgYWN0IG9u IHRoZSByZXR1cm4gdmFsdWUgYmVmb3JlIHJldHJ5aW5nIHZtYXA/Cgo+ICsJCQkJb2JqLT52bWFw cGluZyA9IHZtYXAocGFnZXMsIG4sIDAsIFBBR0VfS0VSTkVMKTsKPiArCQkJfQo+ICsJCQlkcm1f ZnJlZV9sYXJnZShwYWdlcyk7Cj4gKwkJfQo+ICsJCWlmIChvYmotPnZtYXBwaW5nID09IE5VTEwp IHsKPiArCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gKwkJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gb2JqLT52bWFwcGlu ZzsKPiArfQo+ICsKPiAgIHZvaWQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVf dm1hICp2bWEsCj4gICAJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ ICAgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4gaW5kZXggYjdkNDY4 MDBjNDlmLi44ZDhmZWFkZWUxOGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZG1hYnVmLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9k bWFidWYuYwo+IEBAIC0xMDgsNTEgKzEwOCwxNyBAQCBzdGF0aWMgdm9pZCAqaTkxNV9nZW1fZG1h YnVmX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYpCj4gICB7Cj4gICAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiA9IGRtYV9idWZfdG9fb2JqKGRtYV9idWYpOwo+ICAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+IC0Jc3RydWN0IHNnX3BhZ2VfaXRl ciBzZ19pdGVyOwo+IC0Jc3RydWN0IHBhZ2UgKipwYWdlczsKPiAtCWludCByZXQsIGk7Cj4gKwl2 b2lkICphZGRyOwo+ICsJaW50IHJldDsKPgo+ICAgCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKGRldik7Cj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsK Pgo+IC0JaWYgKG9iai0+ZG1hX2J1Zl92bWFwcGluZykgewo+IC0JCW9iai0+dm1hcHBpbmdfY291 bnQrKzsKPiAtCQlnb3RvIG91dF91bmxvY2s7Cj4gLQl9Cj4gLQo+IC0JcmV0ID0gaTkxNV9nZW1f b2JqZWN0X2dldF9wYWdlcyhvYmopOwo+IC0JaWYgKHJldCkKPiAtCQlnb3RvIGVycjsKPiAtCj4g LQlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gLQo+IC0JcmV0ID0gLUVOT01FTTsK PiAtCj4gLQlwYWdlcyA9IGRybV9tYWxsb2NfYWIob2JqLT5iYXNlLnNpemUgPj4gUEFHRV9TSElG VCwgc2l6ZW9mKCpwYWdlcykpOwo+IC0JaWYgKHBhZ2VzID09IE5VTEwpCj4gLQkJZ290byBlcnJf dW5waW47Cj4gLQo+IC0JaSA9IDA7Cj4gLQlmb3JfZWFjaF9zZ19wYWdlKG9iai0+cGFnZXMtPnNn bCwgJnNnX2l0ZXIsIG9iai0+cGFnZXMtPm5lbnRzLCAwKQo+IC0JCXBhZ2VzW2krK10gPSBzZ19w YWdlX2l0ZXJfcGFnZSgmc2dfaXRlcik7Cj4gLQo+IC0Jb2JqLT5kbWFfYnVmX3ZtYXBwaW5nID0g dm1hcChwYWdlcywgaSwgMCwgUEFHRV9LRVJORUwpOwo+IC0JZHJtX2ZyZWVfbGFyZ2UocGFnZXMp Owo+IC0KPiAtCWlmICghb2JqLT5kbWFfYnVmX3ZtYXBwaW5nKQo+IC0JCWdvdG8gZXJyX3VucGlu Owo+IC0KPiAtCW9iai0+dm1hcHBpbmdfY291bnQgPSAxOwo+IC1vdXRfdW5sb2NrOgo+ICsJYWRk ciA9IGk5MTVfZ2VtX29iamVjdF9waW5fdm1hcChvYmopOwo+ICAgCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JcmV0dXJuIG9iai0+ZG1hX2J1Zl92bWFwcGluZzsKPgo+IC1l cnJfdW5waW46Cj4gLQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiAtZXJyOgo+ IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlyZXR1cm4gRVJSX1BUUihy ZXQpOwo+ICsJcmV0dXJuIGFkZHI7Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2Rt YWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHZvaWQgKnZhZGRyKQo+IEBAIC0x NjEsMTIgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0 IGRtYV9idWYgKmRtYV9idWYsIHZvaWQgKnZhZGRyKQo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBvYmotPmJhc2UuZGV2Owo+Cj4gICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp Owo+IC0JaWYgKC0tb2JqLT52bWFwcGluZ19jb3VudCA9PSAwKSB7Cj4gLQkJdnVubWFwKG9iai0+ ZG1hX2J1Zl92bWFwcGluZyk7Cj4gLQkJb2JqLT5kbWFfYnVmX3ZtYXBwaW5nID0gTlVMTDsKPiAt Cj4gLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gLQl9Cj4gKwlpOTE1X2dl bV9vYmplY3RfdW5waW5fdm1hcChvYmopOwo+ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwo+ICAgfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ IGluZGV4IGM2YWU5MjUyOWZkYy4uNDJkYjY5OWNmMzI2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0yMDc4LDM1ICsyMDc4LDEzIEBAIHN0YXRpYyBp bnQgaW5pdF9waHlzX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIHZvaWQgaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooc3RydWN0IGludGVsX3JpbmdidWZm ZXIgKnJpbmdidWYpCj4gICB7Cj4gICAJaWYgKEhBU19MTEMocmluZ2J1Zi0+b2JqLT5iYXNlLmRl dikgJiYgIXJpbmdidWYtPm9iai0+c3RvbGVuKQo+IC0JCXZ1bm1hcChyaW5nYnVmLT52aXJ0dWFs X3N0YXJ0KTsKPiArCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fdm1hcChyaW5nYnVmLT5vYmopOwo+ ICAgCWVsc2UKPiAgIAkJaW91bm1hcChyaW5nYnVmLT52aXJ0dWFsX3N0YXJ0KTsKPiAtCXJpbmdi dWYtPnZpcnR1YWxfc3RhcnQgPSBOVUxMOwo+ICAgCXJpbmdidWYtPnZtYSA9IE5VTEw7Cj4gICAJ aTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4ocmluZ2J1Zi0+b2JqKTsKPiAgIH0KPgo+IC1zdGF0 aWMgdTMyICp2bWFwX29iaihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+IC17Cj4g LQlzdHJ1Y3Qgc2dfcGFnZV9pdGVyIHNnX2l0ZXI7Cj4gLQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwo+ IC0Jdm9pZCAqYWRkcjsKPiAtCWludCBpOwo+IC0KPiAtCXBhZ2VzID0gZHJtX21hbGxvY19hYihv YmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZULCBzaXplb2YoKnBhZ2VzKSk7Cj4gLQlpZiAocGFn ZXMgPT0gTlVMTCkKPiAtCQlyZXR1cm4gTlVMTDsKPiAtCj4gLQlpID0gMDsKPiAtCWZvcl9lYWNo X3NnX3BhZ2Uob2JqLT5wYWdlcy0+c2dsLCAmc2dfaXRlciwgb2JqLT5wYWdlcy0+bmVudHMsIDAp Cj4gLQkJcGFnZXNbaSsrXSA9IHNnX3BhZ2VfaXRlcl9wYWdlKCZzZ19pdGVyKTsKPiAtCj4gLQlh ZGRyID0gdm1hcChwYWdlcywgaSwgMCwgUEFHRV9LRVJORUwpOwo+IC0JZHJtX2ZyZWVfbGFyZ2Uo cGFnZXMpOwo+IC0KPiAtCXJldHVybiBhZGRyOwo+IC19Cj4gLQo+ICAgaW50IGludGVsX3Bpbl9h bmRfbWFwX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJCQkJICAg ICBzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKPiAgIHsKPiBAQCAtMjEyNCw3ICsy MTAyLDcgQEAgaW50IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gICAJCWlmIChyZXQpCj4gICAJCQlnb3RvIGVycl91bnBpbjsKPgo+IC0J CXJpbmdidWYtPnZpcnR1YWxfc3RhcnQgPSB2bWFwX29iaihvYmopOwo+ICsJCXJpbmdidWYtPnZp cnR1YWxfc3RhcnQgPSBpOTE1X2dlbV9vYmplY3RfcGluX3ZtYXAob2JqKTsKPiAgIAkJaWYgKHJp bmdidWYtPnZpcnR1YWxfc3RhcnQgPT0gTlVMTCkgewo+ICAgCQkJcmV0ID0gLUVOT01FTTsKPiAg IAkJCWdvdG8gZXJyX3VucGluOwo+CgpNaW51cyB0aGUgcXVlc3Rpb25zIGFib3ZlIGxvb2tzIGdv b2QuCgpSZWdhcmRzLAoKVHZydGtvCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK