From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v5 7/7] drm/i915: refactor duplicate object vmap functions (reworked some more) Date: Mon, 29 Feb 2016 12:36:44 +0000 Message-ID: <56D43B5C.3020608@linux.intel.com> References: <1456744394-29831-1-git-send-email-david.s.gordon@intel.com> <1456744394-29831-8-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 0B1C36E2A3 for ; Mon, 29 Feb 2016 12:36:46 +0000 (UTC) In-Reply-To: <1456744394-29831-8-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 Ck9uIDI5LzAyLzE2IDExOjEzLCBEYXZlIEdvcmRvbiB3cm90ZToKPiBUaGlzIGlzIGVzc2VudGlh bGx5IENocmlzIFdpbHNvbidzIHBhdGNoIG9mIGEgc2ltaWxhciBuYW1lLCByZXdvcmtlZCBvbgo+ IHRvcCBvZiBBbGV4IERhaSdzIHJlY2VudCBwYXRjaDoKPj4gZHJtL2k5MTU6IEFkZCBpOTE1X2dl bV9vYmplY3Rfdm1hcCB0byBtYXAgR0VNIG9iamVjdCB0byB2aXJ0dWFsIHNwYWNlCj4gQ2hyaXMn IG9yaWdpbmFsIGNvbW1lbnRhcnkgc2FpZDoKPgo+PiBXZSBub3cgaGF2ZSB0d28gaW1wbGVtZW50 YXRpb25zIGZvciB2bWFwcGluZyBhIHdob2xlIG9iamVjdCwgb25lIGZvcgo+PiBkbWEtYnVmIGFu ZCBvbmUgZm9yIHRoZSByaW5nYnVmZmVyLiBJZiB3ZSBjb3VwbGUgdGhlIHZtYXBwaW5nIGludG8K Pj4gdGhlIG9iai0+cGFnZXMgbGlmZXRpbWUsIHRoZW4gd2UgY2FuIHJldXNlIGFuIG9iai0+dm1h cHBpbmcgZm9yIGJvdGgKPj4gYW5kIGF0IHRoZSBzYW1lIHRpbWUgY291cGxlIGl0IGludG8gdGhl IHNocmlua2VyLgo+Pgo+PiB2MjogTWFyayB0aGUgZmFpbGFibGUga21hbGxvYygpIGFzIF9fR0ZQ X05PV0FSTiAodnN5cmphbGEpCj4+IHYzOiBDYWxsIHVucGluX3ZtYXAgZnJvbSB0aGUgcmlnaHQg ZG1hYnVmIHVubWFwcGVyCj4KPiB2NDogcmVpbXBsZW1lbnRzIHRoZSBzYW1lIGZ1bmN0aW9uYWxp dHksIGJ1dCBub3cgYXMgd3JhcHBlcnMgcm91bmQgdGhlCj4gICAgICByZWNlbnRseS1pbnRyb2R1 Y2VkIGk5MTVfZ2VtX29iamVjdF92bWFwX3JhbmdlKCkgZnJvbSBBbGV4J3MgcGF0Y2gKPiAgICAg IG1lbnRpb25lZCBhYm92ZS4KPgo+IHY1OiBzZXBhcmF0ZWQgZnJvbSB0d28gbWlub3IgYnV0IHVu cmVsYXRlZCBjaGFuZ2VzIFtUdnJ0a28gVXJzdWxpbl07Cj4gICAgICB0aGlzIGlzIHRoZSB0aGly ZCBhbmQgbW9zdCBzdWJzdGFudGlhbCBwb3J0aW9uLgo+Cj4gICAgICBEZWNpZGVkIG5vdCB0byBo b2xkIG9udG8gdm1hcHBpbmdzIGFmdGVyIHRoZSBwaW4gY291bnQgZ29lcyB0byB6ZXJvLgo+ICAg ICAgVGhpcyBtYXkgcmVkdWNlIHRoZSBiZW5lZml0IG9mIENocmlzJyBzY2hlbWUgYSBiaXQsIGJ1 dCBkb2VzIGF2b2lkCj4gICAgICBhbnkgaW5jcmVhc2VkIHJpc2sgb2YgZXhoYXVzdGluZyBrZXJu ZWwgdm1hcCBzcGFjZSBvbiAzMi1iaXQga2VybmVscwo+ICAgICAgW1R2cnRrbyBVcnN1bGluXS4g UG90ZW50aWFsbHksIHRoZSB2dW5tYXAoKSBjb3VsZCBiZSBkZWZlcnJlZCB1bnRpbAo+ICAgICAg dGhlIHB1dF9wYWdlcygpIHN0YWdlIGlmIGEgc3VpdGFibGUgbm90aWZpZXIgd2VyZSB3cml0dGVu LCBidXQgd2UncmUKPiAgICAgIG5vdCBkb2luZyB0aGF0IGhlcmUuIE5vbmV0aGVsZXNzLCB0aGUg c2ltcGxpZmljYXRpb24gb2YgYm90aCBkbWFidWYKPiAgICAgIGFuZCByaW5nYnVmZmVyIGNvZGUg bWFrZXMgaXQgd29ydGh3aGlsZSBpbiBpdHMgb3duIHJpZ2h0Lgo+Cj4gV2l0aCB0aGlzIGNoYW5n ZSwgd2UgaGF2ZSBvbmx5IG9uZSB2bWFwKCkgaW4gdGhlIHdob2xlIGRyaXZlciA6KQoKVGhlIGFi b3ZlIGxpbmUgZG9lcyBub3QgYXBwbHkgdG8gdGhpcyBwYXRjaCBhZnRlciB0aGUgc3BsaXQgYW55 IG1vcmUuIDopCgo+Cj4gU2lnbmVkLW9mZi1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9u QGludGVsLmNvbT4KPiBDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gQ2M6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8 dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrLS0tLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyAg fCAzNyArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8IDEwICsrKystLS0tLQo+ICAgNCBmaWxlcyBjaGFu Z2VkLCA2MiBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+IGluZGV4IDkxOGIwYmIuLjdmYWNkYjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBAQCAtMjE3MiwxMCArMjE3Miw3IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 IHsKPiAgIAkJc3RydWN0IHNjYXR0ZXJsaXN0ICpzZzsKPiAgIAkJaW50IGxhc3Q7Cj4gICAJfSBn ZXRfcGFnZTsKPiAtCj4gLQkvKiBwcmltZSBkbWEtYnVmIHN1cHBvcnQgKi8KPiAtCXZvaWQgKmRt YV9idWZfdm1hcHBpbmc7Cj4gLQlpbnQgdm1hcHBpbmdfY291bnQ7Cj4gKwl2b2lkICp2bWFwcGlu ZzsKPgo+ICAgCS8qKiBCcmVhZGNydW1iIG9mIGxhc3QgcmVuZGVyaW5nIHRvIHRoZSBidWZmZXIu Cj4gICAJICogVGhlcmUgY2FuIG9ubHkgYmUgb25lIHdyaXRlciwgYnV0IHdlIGFsbG93IGZvciBt dWx0aXBsZSByZWFkZXJzLgo+IEBAIC0yOTgwLDcgKzI5NzcsMjIgQEAgc3RhdGljIGlubGluZSB2 b2lkIGk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPiAgIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIHsKPiAgIAlCVUdfT04ob2JqLT5w YWdlc19waW5fY291bnQgPT0gMCk7Cj4gLQlvYmotPnBhZ2VzX3Bpbl9jb3VudC0tOwo+ICsJaWYg KC0tb2JqLT5wYWdlc19waW5fY291bnQgPT0gMCAmJiBvYmotPnZtYXBwaW5nKSB7Cj4gKwkJLyoK PiArCQkgKiBSZWxlYXNpbmcgdGhlIHZtYXBwaW5nIGhlcmUgbWF5IHlpZWxkIGxlc3MgYmVuZWZp dCB0aGFuCj4gKwkJICogaWYgd2Uga2VwdCBpdCB1bnRpbCBwdXRfcGFnZXMoKSwgYnV0IG9uIHRo ZSBvdGhlciBoYW5kCj4gKwkJICogYXZvaWRzIGlzc3VlcyBvZiBleGhhdXN0aW5nIGtlcm5lbCB2 bWFwcGFibGUgYWRkcmVzcwo+ICsJCSAqIHNwYWNlIG9uIDMyLWJpdCBrZXJuZWxzLgo+ICsJCSAq Lwo+ICsJCXZ1bm1hcChvYmotPnZtYXBwaW5nKTsKPiArCQlvYmotPnZtYXBwaW5nID0gTlVMTDsK PiArCX0KPiArfQo+ICsKPiArdm9pZCAqX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29iamVjdF9waW5f dm1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiArc3RhdGljIGlubGluZSB2 b2lkIGk5MTVfZ2VtX29iamVjdF91bnBpbl92bWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCj4gK3sKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9wYWdlcyhvYmopOwo+ICAgfQo+ Cj4gICB2b2lkICpfX211c3RfY2hlY2sgaTkxNV9nZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRl eCBjMTI2MjExLi43OWQzZDViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTIy MzUsNiArMjIzNSw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9mcmVlX21tYXBfb2Zm c2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJb3BzLT5wdXRfcGFnZXMo b2JqKTsKPiAgIAlvYmotPnBhZ2VzID0gTlVMTDsKPgo+ICsJQlVHX09OKG9iai0+dm1hcHBpbmcp Owo+ICsKCkRvIHdlIGtub3cgZm9yIGNlcnRhaW4ga2VybmVsIHdpbGwgY3Jhc2ggYW5kIG5vdCBq dXN0IG1heWJlIGxlYWsgYSAKdm1hcHBpbmc/IEkgdGhpbmsgbm90IHNvIHdvdWxkIGJlIGJldHRl ciB0byBqdXN0IFdBUk4uCgpNYXliZSBldmVuIFdBUk5fT04gYW5kIHJldHVybiAtRUJVU1kgaGln aGVyIHVwLCBhcyB0aGUgZnVuY3Rpb24gYWxyZWFkeSAKZG9lcyBmb3Igb2JqLT5wYWdlc19waW5f Y291bnQ/Cgo+ICAgCWk5MTVfZ2VtX29iamVjdF9pbnZhbGlkYXRlKG9iaik7Cj4KPiAgIAlyZXR1 cm4gMDsKPiBAQCAtMjQ1Miw2ICsyNDU0LDQwIEBAIHZvaWQgKmk5MTVfZ2VtX29iamVjdF92bWFw X3JhbmdlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJcmV0dXJuIGFkZHI7 Cj4gICB9Cj4KPiArLyoqCj4gKyAqIGk5MTVfZ2VtX29iamVjdF9waW5fdm1hcCAtIHBpbiBhIEdF TSBvYmplY3QgYW5kIG1hcCBpdCBpbnRvIGtlcm5lbCBzcGFjZQo+ICsgKiBAb2JqOiB0aGUgR0VN IG9iamVjdCB0byBiZSBtYXBwZWQKPiArICoKPiArICogQ29tYmluZXMgdGhlIGZ1bmN0aW9ucyBv ZiBnZXRfcGFnZXMoKSwgcGluX3BhZ2VzKCkgYW5kIHZtYXBfcmFuZ2UoKSBvbgo+ICsgKiB0aGUg d2hvbGUgb2JqZWN0LiAgVGhlIGNhbGxlciBzaG91bGQgcmVsZWFzZSB0aGUgbWFwcGluZyBieSBj YWxsaW5nCj4gKyAqIGk5MTVfZ2VtX29iamVjdF91bnBpbl92bWFwKCkgd2hlbiBpdCBpcyBubyBs b25nZXIgcmVxdWlyZWQuCj4gKyAqCj4gKyAqIFJldHVybnMgdGhlIGFkZHJlc3MgYXQgd2hpY2gg dGhlIG9iamVjdCBoYXMgYmVlbiBtYXBwZWQsIG9yIGFuIEVSUl9QVFIKPiArICogb24gZmFpbHVy ZS4KPiArICovCj4gK3ZvaWQgKmk5MTVfZ2VtX29iamVjdF9waW5fdm1hcChzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IGk5MTVf Z2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPiArCj4gKwlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gKwo+ICsJ aWYgKG9iai0+dm1hcHBpbmcgPT0gTlVMTCkgewo+ICsJCW9iai0+dm1hcHBpbmcgPSBpOTE1X2dl bV9vYmplY3Rfdm1hcF9yYW5nZShvYmosIDAsCj4gKwkJCQkJb2JqLT5iYXNlLnNpemUgPj4gUEFH RV9TSElGVCk7Cj4gKwo+ICsJCWlmIChvYmotPnZtYXBwaW5nID09IE5VTEwpIHsKPiArCQkJaTkx NV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gKwkJCXJldHVybiBFUlJfUFRSKC1FTk9N RU0pOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1cm4gb2JqLT52bWFwcGluZzsKPiArfQo+ICsK PiAgIHZvaWQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4g ICAJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4gaW5kZXggNjhlMjFkMS4uYWRjN2I1ZSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kbWFidWYuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RtYWJ1Zi5jCj4gQEAgLTEwOCw0MSAr MTA4LDE3IEBAIHN0YXRpYyB2b2lkICppOTE1X2dlbV9kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hX2J1ZikKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0g ZG1hX2J1Zl90b19vYmooZG1hX2J1Zik7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9i ai0+YmFzZS5kZXY7Cj4gKwl2b2lkICphZGRyOwo+ICAgCWludCByZXQ7Cj4KPiAgIAlyZXQgPSBp OTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOwo+ICAgCWlmIChyZXQpCj4gICAJCXJl dHVybiBFUlJfUFRSKHJldCk7Cj4KPiAtCWlmIChvYmotPmRtYV9idWZfdm1hcHBpbmcpIHsKPiAt CQlvYmotPnZtYXBwaW5nX2NvdW50Kys7Cj4gLQkJZ290byBvdXRfdW5sb2NrOwo+IC0JfQo+IC0K PiAtCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXMob2JqKTsKPiAtCWlmIChyZXQpCj4g LQkJZ290byBlcnI7Cj4gLQo+IC0JaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+IC0K PiAtCXJldCA9IC1FTk9NRU07Cj4gLQo+IC0Jb2JqLT5kbWFfYnVmX3ZtYXBwaW5nID0gaTkxNV9n ZW1fb2JqZWN0X3ZtYXBfcmFuZ2Uob2JqLCAwLAo+IC0JCQkJCQlkbWFfYnVmLT5zaXplID4+IFBB R0VfU0hJRlQpOwo+IC0KPiAtCWlmICghb2JqLT5kbWFfYnVmX3ZtYXBwaW5nKQo+IC0JCWdvdG8g ZXJyX3VucGluOwo+IC0KPiAtCW9iai0+dm1hcHBpbmdfY291bnQgPSAxOwo+IC1vdXRfdW5sb2Nr Ogo+ICsJYWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fdm1hcChvYmopOwo+ICAgCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JcmV0dXJuIG9iai0+ZG1hX2J1Zl92bWFwcGlu ZzsKPgo+IC1lcnJfdW5waW46Cj4gLQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsK PiAtZXJyOgo+IC0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gLQlyZXR1cm4g RVJSX1BUUihyZXQpOwo+ICsJcmV0dXJuIGFkZHI7Cj4gICB9Cj4KPiAgIHN0YXRpYyB2b2lkIGk5 MTVfZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHZvaWQgKnZhZGRy KQo+IEBAIC0xNTEsMTIgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2RtYWJ1Zl92dW5t YXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHZvaWQgKnZhZGRyKQo+ICAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+Cj4gICAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+IC0JaWYgKC0tb2JqLT52bWFwcGluZ19jb3VudCA9PSAwKSB7Cj4gLQkJdnVu bWFwKG9iai0+ZG1hX2J1Zl92bWFwcGluZyk7Cj4gLQkJb2JqLT5kbWFfYnVmX3ZtYXBwaW5nID0g TlVMTDsKPiAtCj4gLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gLQl9Cj4g KwlpOTE1X2dlbV9vYmplY3RfdW5waW5fdm1hcChvYmopOwo+ICAgCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYwo+IGluZGV4IDE1ZTJkMjkuLjQ3ZjE4NmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTIwNTYsNyArMjA1Niw3IEBAIHN0YXRpYyBpbnQg aW5pdF9waHlzX3N0YXR1c19wYWdlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICB2 b2lkIGludGVsX3VucGluX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmKQo+ICAgewo+ICAgCWlmIChIQVNfTExDKHJpbmdidWYtPm9iai0+YmFzZS5kZXYpICYm ICFyaW5nYnVmLT5vYmotPnN0b2xlbikKPiAtCQl2dW5tYXAocmluZ2J1Zi0+dmlydHVhbF9zdGFy dCk7Cj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3ZtYXAocmluZ2J1Zi0+b2JqKTsKPiAgIAll bHNlCj4gICAJCWlvdW5tYXAocmluZ2J1Zi0+dmlydHVhbF9zdGFydCk7Cj4gICAJcmluZ2J1Zi0+ dmlydHVhbF9zdGFydCA9IE5VTEw7Cj4gQEAgLTIwODAsMTAgKzIwODAsMTAgQEAgaW50IGludGVs X3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJfb2JqKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJ CWlmIChyZXQpCj4gICAJCQlnb3RvIHVucGluOwo+Cj4gLQkJcmluZ2J1Zi0+dmlydHVhbF9zdGFy dCA9IGk5MTVfZ2VtX29iamVjdF92bWFwX3JhbmdlKG9iaiwgMCwKPiAtCQkJCQkJcmluZ2J1Zi0+ c2l6ZSA+PiBQQUdFX1NISUZUKTsKPiAtCQlpZiAocmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9PSBO VUxMKSB7Cj4gLQkJCXJldCA9IC1FTk9NRU07Cj4gKwkJcmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9 IGk5MTVfZ2VtX29iamVjdF9waW5fdm1hcChvYmopOwo+ICsJCWlmIChJU19FUlIocmluZ2J1Zi0+ dmlydHVhbF9zdGFydCkpIHsKPiArCQkJcmV0ID0gUFRSX0VSUihyaW5nYnVmLT52aXJ0dWFsX3N0 YXJ0KTsKPiArCQkJcmluZ2J1Zi0+dmlydHVhbF9zdGFydCA9IE5VTEw7Cj4gICAJCQlnb3RvIHVu cGluOwo+ICAgCQl9Cj4gICAJfSBlbHNlIHsKPgoKTG9va3MgT0sgdG8gbWUuIEV2ZW4gdGhlIEJV R19PTiBpcyBub3QgY3JpdGljYWwgc2luY2UgaXQgY2FuJ3QgaGFwcGVuIAp3aGVuIHVzaW5nIHRo ZSBBUEkgYWx0aG91Z2ggSSBkb24ndCBsaWtlIHRvIHNlZSB0aGVtLiBFaXRoZXIgd2F5OgoKUmV2 aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdh cmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=