From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 26/33] drm/i915: Track pinned VMA Date: Thu, 11 Aug 2016 15:18:44 +0300 Message-ID: <1470917924.4722.75.camel@linux.intel.com> References: <1470581141-14432-1-git-send-email-chris@chris-wilson.co.uk> <1470581141-14432-27-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 1869B6E160 for ; Thu, 11 Aug 2016 12:19:13 +0000 (UTC) In-Reply-To: <1470581141-14432-27-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 T24gc3UsIDIwMTYtMDgtMDcgYXQgMTU6NDUgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBA QCAtMTYxNiw3ICsxNjE4LDcgQEAgaTkxNV9nZW1fbW1hcF9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAo+IMKgCj4gwqAvKioKPiDCoCAqIGk5MTVfZ2VtX2ZhdWx0IC0g ZmF1bHQgYSBwYWdlIGludG8gdGhlIEdUVAo+IC0gKiBAdm1hOiBWTUEgaW4gcXVlc3Rpb24KPiAr ICogQG1tOiBWTUEgaW4gcXVlc3Rpb24KCnNob3VsZCBiZSBAdm0gb3Igd2hhdGV2ZXIgdGhlIGNv cnJlY3QgbmFtZS4KCj4gwqAgKiBAdm1mOiBmYXVsdCBpbmZvCj4gwqAgKgo+IMKgICogVGhlIGZh dWx0IGhhbmRsZXIgaXMgc2V0IHVwIGJ5IGRybV9nZW1fbW1hcCgpIHdoZW4gYSBvYmplY3QgaXMg R1RUIG1hcHBlZAo+IEBAIC0xNjMwLDIwICsxNjMyLDIxIEBAIGk5MTVfZ2VtX21tYXBfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiDCoCAqIHN1ZmZlciBpZiB0aGUg R1RUIHdvcmtpbmcgc2V0IGlzIGxhcmdlIG9yIHRoZXJlIGFyZSBmZXcgZmVuY2UgcmVnaXN0ZXJz Cj4gwqAgKiBsZWZ0Lgo+IMKgICovCj4gLWludCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fYXJl YV9zdHJ1Y3QgKnZtYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gK2ludCBpOTE1X2dlbV9mYXVs dChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtLCBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKCid2bScg aXMgdXNlZCBlbHNld2hlcmUgZm9yIHRoZSBhZGRyZXNzIHNwYWNlLCBtYXliZSAna3ZtYSc/IE9y ICdhcmVhJwoodXNlZCBpbiBsaW51eC9tbS5oIHRvbyBvY2Nhc2lvbmFsbHkpCgo+IEBAIC0xNzIy LDEzICsxNzI2LDEzIEBAIGludCBpOTE1X2dlbV9mYXVsdChzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSwgc3RydWN0IHZtX2ZhdWx0ICp2bWYpCj4gwqAJfSBlbHNlIHsKPiDCoAkJaWYgKCFvYmot PmZhdWx0X21hcHBhYmxlKSB7Cj4gwqAJCQl1bnNpZ25lZCBsb25nIHNpemUgPSBtaW5fdCh1bnNp Z25lZCBsb25nLAo+IC0JCQkJCQnCoMKgwqB2bWEtPnZtX2VuZCAtIHZtYS0+dm1fc3RhcnQsCj4g KwkJCQkJCcKgwqDCoHZtLT52bV9lbmQgLSB2bS0+dm1fc3RhcnQsCj4gwqAJCQkJCQnCoMKgwqBv YmotPmJhc2Uuc2l6ZSk7Cj4gwqAJCQlpbnQgaTsKPiDCoAo+IMKgCQkJZm9yIChpID0gMDsgaSA8 IHNpemUgPj4gUEFHRV9TSElGVDsgaSsrKSB7Cj4gLQkJCQlyZXQgPSB2bV9pbnNlcnRfcGZuKHZt YSwKPiAtCQkJCQkJwqDCoMKgwqAodW5zaWduZWQgbG9uZyl2bWEtPnZtX3N0YXJ0ICsgaSAqIFBB R0VfU0laRSwKPiArCQkJCXJldCA9IHZtX2luc2VydF9wZm4odm0sCj4gKwkJCQkJCcKgwqDCoMKg KHVuc2lnbmVkIGxvbmcpdm0tPnZtX3N0YXJ0ICsgaSAqIFBBR0VfU0laRSwKCkhtbSwgdm0tPnZt X3N0YXJ0IGlzIGFscmVhZHkgdW5zaWduZWQgbG9uZywgc28gY2FzdCBjb3VsZCBiZQplbGltaW5h dGVkLgoKPiDCoAkJCQkJCcKgwqDCoMKgcGZuICsgaSk7Cj4gwqAJCQkJaWYgKHJldCkKPiDCoAkJ CQkJYnJlYWs7Cj4gQEAgLTE3MzYsMTIgKzE3NDAsMTIgQEAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0 cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKPiDCoAo+IMKg CQkJb2JqLT5mYXVsdF9tYXBwYWJsZSA9IHRydWU7Cj4gwqAJCX0gZWxzZQo+IC0JCQlyZXQgPSB2 bV9pbnNlcnRfcGZuKHZtYSwKPiArCQkJcmV0ID0gdm1faW5zZXJ0X3Bmbih2bSwKPiDCoAkJCQkJ wqDCoMKgwqAodW5zaWduZWQgbG9uZyl2bWYtPnZpcnR1YWxfYWRkcmVzcywKPiDCoAkJCQkJwqDC oMKgwqBwZm4gKyBwYWdlX29mZnNldCk7Cj4gwqAJfQo+IMKgZXJyX3VucGluOgo+IC0JaTkxNV9n ZW1fb2JqZWN0X2dndHRfdW5waW5fdmlldyhvYmosICZ2aWV3KTsKPiArCV9faTkxNV92bWFfdW5w aW4odm1hKTsKPiDCoGVycl91bmxvY2s6Cj4gwqAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9t dXRleCk7Cj4gwqBlcnJfcnBtOgo+IEBAIC0zMTkwLDcgKzMxOTQsNyBAQCBpOTE1X2dlbV9vYmpl Y3Rfc2V0X3RvX2d0dF9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgYm9v bCB3cml0ZSkKPiDCoAkJCQkJwqDCoMKgwqBvbGRfd3JpdGVfZG9tYWluKTsKPiDCoAo+IMKgCS8q IEFuZCBidW1wIHRoZSBMUlUgZm9yIHRoaXMgYWNjZXNzICovCj4gLQl2bWEgPSBpOTE1X2dlbV9v YmpfdG9fZ2d0dChvYmopOwo+ICsJdm1hID0gaTkxNV9nZW1fb2JqZWN0X3RvX2dndHQob2JqLCBO VUxMKTsKPiDCoAlpZiAodm1hICYmCj4gwqAJwqDCoMKgwqBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQo JnZtYS0+bm9kZSkgJiYKPiDCoAnCoMKgwqDCoCFpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSkKPiBA QCAtMzQxNCwxMSArMzQxOCwxMiBAQCBycG1fcHV0Ogo+IMKgICogQ2FuIGJlIGNhbGxlZCBmcm9t IGFuIHVuaW50ZXJydXB0aWJsZSBwaGFzZSAobW9kZXNldHRpbmcpIGFuZCBhbGxvd3MKPiDCoCAq IGFueSBmbHVzaGVzIHRvIGJlIHBpcGVsaW5lZCAoZm9yIHBhZ2VmbGlwcykuCj4gwqAgKi8KPiAt aW50Cj4gK3N0cnVjdCBpOTE1X3ZtYSAqCj4gwqBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3Bs YXlfcGxhbmUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiDCoAkJCQnCoMKgwqDC oMKgdTMyIGFsaWdubWVudCwKPiDCoAkJCQnCoMKgwqDCoMKgY29uc3Qgc3RydWN0IGk5MTVfZ2d0 dF92aWV3ICp2aWV3KQo+IMKgewo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gwqAJdTMyIG9s ZF9yZWFkX2RvbWFpbnMsIG9sZF93cml0ZV9kb21haW47Cj4gwqAJaW50IHJldDsKPiDCoAo+IEBA IC0zNDM4LDE5ICszNDQzLDIzIEBAIGk5MTVfZ2VtX29iamVjdF9waW5fdG9fZGlzcGxheV9wbGFu ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IMKgCcKgKi8KPiDCoAlyZXQgPSBp OTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKG9iaiwKPiDCoAkJCQkJwqDCoMKgwqDCoMKg SEFTX1dUKG9iai0+YmFzZS5kZXYpID8gSTkxNV9DQUNIRV9XVCA6IEk5MTVfQ0FDSEVfTk9ORSk7 Cj4gLQlpZiAocmV0KQo+ICsJaWYgKHJldCkgewo+ICsJCXZtYSA9IEVSUl9QVFIocmV0KTsKPiDC oAkJZ290byBlcnJfdW5waW5fZGlzcGxheTsKPiArCX0KPiDCoAo+IMKgCS8qIEFzIHRoZSB1c2Vy IG1heSBtYXAgdGhlIGJ1ZmZlciBvbmNlIHBpbm5lZCBpbiB0aGUgZGlzcGxheSBwbGFuZQo+IMKg CcKgKiAoZS5nLiBsaWJrbXMgZm9yIHRoZSBib290dXAgc3BsYXNoKSwgd2UgaGF2ZSB0byBlbnN1 cmUgdGhhdCB3ZQo+IMKgCcKgKiBhbHdheXMgdXNlIG1hcF9hbmRfZmVuY2VhYmxlIGZvciBhbGwg c2Nhbm91dCBidWZmZXJzLgo+IMKgCcKgKi8KPiAtCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0 X3BpbihvYmosIHZpZXcsIDAsIGFsaWdubWVudCwKPiArCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9n Z3R0X3BpbihvYmosIHZpZXcsIDAsIGFsaWdubWVudCwKPiDCoAkJCQnCoMKgwqDCoMKgwqDCoHZp ZXctPnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMID8KPiDCoAkJCQnCoMKgwqDCoMKgwqDC oFBJTl9NQVBQQUJMRSA6IDApOwo+IC0JaWYgKHJldCkKPiArCWlmIChJU19FUlIodm1hKSkKPiDC oAkJZ290byBlcnJfdW5waW5fZGlzcGxheTsKPiDCoAo+ICsJV0FSTl9PTihvYmotPnBpbl9kaXNw bGF5ID4gaTkxNV92bWFfcGluX2NvdW50KHZtYSkpOwo+ICsKPiDCoAlpOTE1X2dlbV9vYmplY3Rf Zmx1c2hfY3B1X3dyaXRlX2RvbWFpbihvYmopOwo+IMKgCj4gwqAJb2xkX3dyaXRlX2RvbWFpbiA9 IG9iai0+YmFzZS53cml0ZV9kb21haW47Cj4gQEAgLTM0NjYsMjMgKzM0NzUsMjMgQEAgaTkxNV9n ZW1fb2JqZWN0X3Bpbl90b19kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCj4gwqAJCQkJCcKgwqDCoMKgb2xkX3JlYWRfZG9tYWlucywKPiDCoAkJCQkJwqDCoMKg wqBvbGRfd3JpdGVfZG9tYWluKTsKPiDCoAo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gdm1hOwo+ IMKgCj4gwqBlcnJfdW5waW5fZGlzcGxheToKPiDCoAlvYmotPnBpbl9kaXNwbGF5LS07Cj4gLQly ZXR1cm4gcmV0Owo+ICsJcmV0dXJuIHZtYTsKPiDCoH0KPiDCoAo+IMKgdm9pZAo+IC1pOTE1X2dl bV9vYmplY3RfdW5waW5fZnJvbV9kaXNwbGF5X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCj4gLQkJCQkJwqBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4g K2k5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUoc3RydWN0IGk5MTVfdm1h ICp2bWEpCj4gwqB7Cj4gLQlpZiAoV0FSTl9PTihvYmotPnBpbl9kaXNwbGF5ID09IDApKQo+ICsJ aWYgKFdBUk5fT04odm1hLT5vYmotPnBpbl9kaXNwbGF5ID09IDApKQo+IMKgCQlyZXR1cm47Cj4g wqAKPiAtCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluX3ZpZXcob2JqLCB2aWV3KTsKPiArCXZt YS0+b2JqLT5waW5fZGlzcGxheS0tOwo+IMKgCj4gLQlvYmotPnBpbl9kaXNwbGF5LS07Cj4gKwlp OTE1X3ZtYV91bnBpbih2bWEpOwo+ICsJV0FSTl9PTih2bWEtPm9iai0+cGluX2Rpc3BsYXkgPiBp OTE1X3ZtYV9waW5fY291bnQodm1hKSk7Cj4gwqB9Cj4gwqAKPiDCoC8qKgo+IEBAIC0zNjc5LDI3 ICszNjg4LDI1IEBAIGVycjoKPiDCoAlyZXR1cm4gcmV0Owo+IMKgfQo+IMKgCj4gLWludAo+ICtz dHJ1Y3QgaTkxNV92bWEgKgo+IMKgaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCcKgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3 ICp2aWV3LAo+ICsJCQnCoGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqZ2d0dF92aWV3LAoK SG1tLCB3aHkgZGlzdGluY3RpdmUgbmFtZSBjb21wYXJlZCB0byBvdGhlciBwbGFjZXM/IFRoaXMg ZnVuY3Rpb24gaGFzCl9nZ3R0XyBpbiB0aGUgbmFtZSwgc28gc2hvdWxkIGJlIGltcGxpY2l0LgoK PiDCoAkJCcKgdTY0IHNpemUsCj4gwqAJCQnCoHU2NCBhbGlnbm1lbnQsCj4gwqAJCQnCoHU2NCBm bGFncykKPiDCoHsKCjxTTklQPgoKPiAtLyogQWxsIHRoZSBuZXcgVk0gc3R1ZmYgKi8KCk9oIG5v ZXMsIHdlIGRlc3Ryb3kgYWxsIHRoZSBuZXcgc3R1ZmYgOlAKCj4gQEAgLTM0OSwzMCArMzQ5LDM0 IEBAIHJlbG9jYXRlX2VudHJ5X2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ IMKgCQnCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlbG9jYXRpb25fZW50cnkgKnJlbG9jLAo+ IMKgCQnCoMKgwqB1aW50NjRfdCB0YXJnZXRfb2Zmc2V0KQo+IMKgewo+IC0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+IMKgCXN0cnVjdCBpOTE1X2dndHQgKmdn dHQgPSAmZGV2X3ByaXYtPmdndHQ7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiDCoAl1aW50 NjRfdCBkZWx0YSA9IHJlbG9jYXRpb25fdGFyZ2V0KHJlbG9jLCB0YXJnZXRfb2Zmc2V0KTsKPiDC oAl1aW50NjRfdCBvZmZzZXQ7Cj4gwqAJdm9pZCBfX2lvbWVtICpyZWxvY19wYWdlOwo+IMKgCWlu dCByZXQ7Cj4gwqAKPiArCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEws IDAsIDAsIFBJTl9NQVBQQUJMRSk7Cj4gKwlpZiAoSVNfRVJSKHZtYSkpCj4gKwkJcmV0dXJuIFBU Ul9FUlIodm1hKTsKPiArCj4gwqAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9t YWluKG9iaiwgdHJ1ZSk7Cj4gwqAJaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJCWdvdG8g dW5waW47Cj4gwqAKPiDCoAlyZXQgPSBpOTE1X2dlbV9vYmplY3RfcHV0X2ZlbmNlKG9iaik7Cj4g wqAJaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJCWdvdG8gdW5waW47Cj4gwqAKPiDCoAkv KiBNYXAgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgcmVsb2NhdGlvbiB3ZSdyZSBnb2luZyB0byBw ZXJmb3JtLsKgwqAqLwo+IC0Jb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9iaik7 Cj4gKwlvZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQ7Cj4gwqAJb2Zmc2V0ICs9IHJlbG9jLT5vZmZz ZXQ7CgpDb3VsZCBjb25jYXRlbmF0ZSB0byBwcmV2aW91cyBsaW5lIG5vdzsKCm9mZnNldCA9IHZt YS0+bm9kZS5zdGFydCArwqByZWxvYy0+b2Zmc2V0OwoKPiAtc3RhdGljIHN0cnVjdCBpOTE1X3Zt YSoKPiArc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqCj4gwqBpOTE1X2dlbV9leGVjYnVmZmVyX3Bh cnNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiDCoAkJCcKgwqBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiAqc2hhZG93X2V4ZWNfZW50cnksCj4gwqAJCQnCoMKgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29iaiwKPiBAQCAtMTMwNSwzMSArMTMxMSwz MCBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX3BhcnNlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKPiDCoAkJCQnCoMKgwqDCoMKgwqBiYXRjaF9zdGFydF9vZmZzZXQsCj4gwqAJCQkJwqDC oMKgwqDCoMKgYmF0Y2hfbGVuLAo+IMKgCQkJCcKgwqDCoMKgwqDCoGlzX21hc3Rlcik7Cj4gLQlp ZiAocmV0KQo+ICsJaWYgKHJldCkgewo+ICsJCWlmIChyZXQgPT0gLUVBQ0NFUykgLyogdW5oYW5k bGVkIGNoYWluZWQgYmF0Y2ggKi8KPiArCQkJdm1hID0gTlVMTDsKPiArCQllbHNlCj4gKwkJCXZt YSA9IEVSUl9QVFIocmV0KTsKPiDCoAkJZ290byBlcnI7Cj4gKwl9Cj4gwqAKPiAtCXJldCA9IGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzaGFkb3dfYmF0Y2hfb2JqLCBOVUxMLCAwLCAwLCAwKTsK PiAtCWlmIChyZXQpCj4gKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oc2hhZG93X2Jh dGNoX29iaiwgTlVMTCwgMCwgMCwgMCk7Cj4gKwlpZiAoSVNfRVJSKHZtYSkpIHsKPiArCQlyZXQg PSBQVFJfRVJSKHZtYSk7CgpIbW0sICdlcnInIGxhYmVsIG5vIGxvbmdlciBjYXJlcyBhYm91dCBy ZXQsIHNvIHRoaXMgaXMgcmVkdW5kYW50LiBPcgpzaG91bGQgdGhlIHJldC10by12bWEgdHJhbnNs YXRpb24gYmVlbiBrZXB0IGF0IHRoZSBlbmQ/Cgo+IMKgCQlnb3RvIGVycjsKPiAtCj4gLQlpOTE1 X2dlbV9vYmplY3RfdW5waW5fcGFnZXMoc2hhZG93X2JhdGNoX29iaik7Cj4gKwl9Cj4gwqAKPiDC oAltZW1zZXQoc2hhZG93X2V4ZWNfZW50cnksIDAsIHNpemVvZigqc2hhZG93X2V4ZWNfZW50cnkp KTsKPiDCoAo+IC0Jdm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHQoc2hhZG93X2JhdGNoX29iaik7 Cj4gwqAJdm1hLT5leGVjX2VudHJ5ID0gc2hhZG93X2V4ZWNfZW50cnk7Cj4gwqAJdm1hLT5leGVj X2VudHJ5LT5mbGFncyA9IF9fRVhFQ19PQkpFQ1RfSEFTX1BJTjsKPiDCoAlpOTE1X2dlbV9vYmpl Y3RfZ2V0KHNoYWRvd19iYXRjaF9vYmopOwo+IMKgCWxpc3RfYWRkX3RhaWwoJnZtYS0+ZXhlY19s aXN0LCAmZWItPnZtYXMpOwo+IMKgCj4gLQlyZXR1cm4gdm1hOwo+IC0KPiDCoGVycjoKPiDCoAlp OTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMoc2hhZG93X2JhdGNoX29iaik7Cj4gLQlpZiAocmV0 ID09IC1FQUNDRVMpIC8qIHVuaGFuZGxlZCBjaGFpbmVkIGJhdGNoICovCj4gLQkJcmV0dXJuIE5V TEw7Cj4gLQllbHNlCj4gLQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArCXJldHVybiB2bWE7Cj4g wqB9Cj4gwqAKCjxTTklQPgoKPiBAQCAtNDMyLDEzICs0MzIsNyBAQCBib29sCj4gwqBpOTE1X2dl bV9vYmplY3RfcGluX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gwqB7 Cj4gwqAJaWYgKG9iai0+ZmVuY2VfcmVnICE9IEk5MTVfRkVOQ0VfUkVHX05PTkUpIHsKPiAtCQlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9iai0+YmFzZS5kZXYp Owo+IC0JCXN0cnVjdCBpOTE1X3ZtYSAqZ2d0dF92bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dChv YmopOwo+IC0KPiAtCQlXQVJOX09OKCFnZ3R0X3ZtYSB8fAo+IC0JCQlkZXZfcHJpdi0+ZmVuY2Vf cmVnc1tvYmotPmZlbmNlX3JlZ10ucGluX2NvdW50ID4KPiAtCQkJaTkxNV92bWFfcGluX2NvdW50 KGdndHRfdm1hKSk7CgpJcyB0aGlzIFdBUk5fT04gZGVsaWJlcmF0ZWx5IHJlbW92ZWQsIG5vdCB3 b3J0aHkgR0VNX0JVR19PTj8KCj4gLQkJZGV2X3ByaXYtPmZlbmNlX3JlZ3Nbb2JqLT5mZW5jZV9y ZWddLnBpbl9jb3VudCsrOwo+ICsJCXRvX2k5MTUob2JqLT5iYXNlLmRldiktPmZlbmNlX3JlZ3Nb b2JqLT5mZW5jZV9yZWddLnBpbl9jb3VudCsrOwoKVGhpcyBpcyBub3QgdGhlIG1vc3QgcmVhZGFi bGUgbGluZSBvZiBjb2RlIG9uZSBjYW4gaW1hZ2luZS4gZGV2X3ByaXYKYWxpYXMgZG9lcyBtYWtl IHJlYWRhYmlsaXR5IGJldHRlciBvY2Nhc2lvbmFsbHkuCgo+IEBAIC0zMzUxLDE0ICszMzUxLDEw IEBAIF9faTkxNV9nZW1fdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+IMKgCj4gwqAJR0VNX0JVR19PTih2bS0+Y2xvc2VkKTsKPiDCoAo+IC0JaWYgKFdBUk5fT04o aTkxNV9pc19nZ3R0KHZtKSAhPSAhIXZpZXcpKQo+IC0JCXJldHVybiBFUlJfUFRSKC1FSU5WQUwp Owo+IC0KPiDCoAl2bWEgPSBrbWVtX2NhY2hlX3phbGxvYyh0b19pOTE1KG9iai0+YmFzZS5kZXYp LT52bWFzLCBHRlBfS0VSTkVMKTsKPiDCoAlpZiAodm1hID09IE5VTEwpCj4gwqAJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+IMKgCj4gLQlJTklUX0xJU1RfSEVBRCgmdm1hLT5vYmpfbGluayk7 CgpUaGlzIGRpc2FwcGVhcnMgY29tcGxldGVseT8KCj4gQEAgLTMzNzgsNTYgKzMzNzMsNzYgQEAg X19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g K3N0YXRpYyBpbmxpbmUgYm9vbCB2bWFfbWF0Y2hlcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAr CQkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkJwqDC oMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCgpGdW5jdGlvbiBu YW1lIGlzIG5vdCBjbGVhcmVzdC4gQnV0IEkgY2FuIG5vdCBzdWdnZXN0IGEgYmV0dGVyIG9uZSBv ZmYKdGhlIHRvcCBvZiBteSBoZWFkLgrCoAo+IMKgc3RhdGljIHN0cnVjdCBkcm1faTkxNV9lcnJv cl9vYmplY3QgKgo+IMKgaTkxNV9lcnJvcl9vYmplY3RfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAtCQkJwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3Jj LAo+IC0JCQnCoHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICsJCQnCoHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQo+IMKgewo+IMKgCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3By aXYtPmdndHQ7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3JjOwo+IMKgCXN0cnVj dCBkcm1faTkxNV9lcnJvcl9vYmplY3QgKmRzdDsKPiAtCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0g TlVMTDsKPiDCoAlpbnQgbnVtX3BhZ2VzOwo+IMKgCWJvb2wgdXNlX2dndHQ7Cj4gwqAJaW50IGkg PSAwOwo+IMKgCXU2NCByZWxvY19vZmZzZXQ7Cj4gwqAKPiAtCWlmIChzcmMgPT0gTlVMTCB8fCBz cmMtPnBhZ2VzID09IE5VTEwpCj4gKwlpZiAoIXZtYSkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4g KwlzcmMgPSB2bWEtPm9iajsKPiArCWlmICghc3JjLT5wYWdlcykKPiDCoAkJcmV0dXJuIE5VTEw7 Cj4gwqAKPiDCoAludW1fcGFnZXMgPSBzcmMtPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwo+IMKg Cj4gwqAJZHN0ID0ga21hbGxvYyhzaXplb2YoKmRzdCkgKyBudW1fcGFnZXMgKiBzaXplb2YodTMy ICopLCBHRlBfQVRPTUlDKTsKPiAtCWlmIChkc3QgPT0gTlVMTCkKPiArCWlmICghZHN0KQo+IMKg CQlyZXR1cm4gTlVMTDsKPiDCoAo+IC0JaWYgKGk5MTVfZ2VtX29ial9ib3VuZChzcmMsIHZtKSkK PiAtCQlkc3QtPmd0dF9vZmZzZXQgPSBpOTE1X2dlbV9vYmpfb2Zmc2V0KHNyYywgdm0pOwo+IC0J ZWxzZQo+IC0JCWRzdC0+Z3R0X29mZnNldCA9IC0xOwoKV2hhdCB3YXMgdGhlIHB1cnBvc2Ugb2Yg dGhpcyBsaW5lIHByZXZpb3VzbHksIHRoZSBjYWxjdWxhdGlvbnMgd291bGQKZ2V0IG1hamVzdGlj YWxseSBtZXNzZWQgdXA/Cgo+IEBAIC0xMDM1LDExICsxMDI5LDggQEAgc3RhdGljIHZvaWQgaTkx NV9nZW1fcmVjb3JkX3JpbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiDC oAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gwqAJaW50IGksIGNvdW50 Owo+IMKgCj4gLQlpZiAoZGV2X3ByaXYtPnNlbWFwaG9yZSkgewo+IC0JCWVycm9yLT5zZW1hcGhv cmUgPQo+IC0JCQlpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwKPiAtCQkJ CQkJwqDCoMKgwqDCoMKgZGV2X3ByaXYtPnNlbWFwaG9yZS0+b2JqKTsKPiAtCX0KPiArCWVycm9y LT5zZW1hcGhvcmUgPQo+ICsJCWk5MTVfZXJyb3Jfb2JqZWN0X2NyZWF0ZShkZXZfcHJpdiwgZGV2 X3ByaXYtPnNlbWFwaG9yZSk7CgpOb3Qgc3VyZSBpZiBJIGxpa2UgaGlkaW5nIHRoZSBOVUxMIHRv bGVyYW5jeSBpbnNpZGUgdGhlIGZ1bmN0aW9uLgoKPiBAQCAtMjI0MCwxMCArMjI0MCwxMSBAQCBp bnRlbF9waW5fYW5kX2ZlbmNlX2ZiX29iaihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiDC oAnCoCovCj4gwqAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+IMKgCj4gLQlyZXQg PSBpOTE1X2dlbV9vYmplY3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUob2JqLCBhbGlnbm1lbnQsCj4g LQkJCQkJCcKgwqDCoCZ2aWV3KTsKPiAtCWlmIChyZXQpCj4gKwl2bWEgPSBpOTE1X2dlbV9vYmpl Y3RfcGluX3RvX2Rpc3BsYXlfcGxhbmUob2JqLCBhbGlnbm1lbnQsICZ2aWV3KTsKPiArCWlmIChJ U19FUlIodm1hKSkgewo+ICsJCXJldCA9IFBUUl9FUlIodm1hKTsKCk90aGVyIHBsYWNlcyB0aGVy ZSdzIHJldHVybiB2bWEgaW4gdGhlIGVycm9yIHBhdGggdG9vLCBtaWdodCBiZSBjbGVhbmVyCmhl cmUgdG9vIGFzIHRoZXJlJ3MgYWxyZWFkeSB0cmFuc2xhdGlvbiB0b8KgLUVCVVNZIGluIHRoZSBy ZXQgZXJyb3IgdXNlLgoKPiDCoAkJZ290byBlcnJfcG07Cj4gKwl9Cj4gwqAKPiDCoAkvKiBJbnN0 YWxsIGEgZmVuY2UgZm9yIHRpbGVkIHNjYW4tb3V0LiBQcmUtaTk2NSBhbHdheXMgbmVlZHMgYQo+ IMKgCcKgKiBmZW5jZSwgd2hlcmVhcyA5NjUrIG9ubHkgcmVxdWlyZXMgYSBmZW5jZSBpZiB1c2lu Zwo+IEBAIC0yMjcwLDE5ICsyMjcxLDIwIEBAIGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+IMKgCX0KPiDCoAo+IMKgCWludGVsX3J1bnRpbWVf cG1fcHV0KGRldl9wcml2KTsKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIHZtYTsKPiDCoAo+IMKg ZXJyX3VucGluOgo+IC0JaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxheV9wbGFuZShv YmosICZ2aWV3KTsKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9mcm9tX2Rpc3BsYXlfcGxhbmUo dm1hKTsKPiDCoGVycl9wbToKPiDCoAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4g LQlyZXR1cm4gcmV0Owo+ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiDCoH0KPiDCoAoKPFNOSVA+ Cgo+IEBAIC0yMjkxLDcgKzIyOTMsOCBAQCB2b2lkIGludGVsX3VucGluX2ZiX29iaihzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwgdW5zaWduZWQgaW50IHJvdGF0aW9uKQo+IMKgCWlmICh2aWV3 LnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+IMKgCQlpOTE1X2dlbV9vYmplY3RfdW5w aW5fZmVuY2Uob2JqKTsKPiDCoAo+IC0JaTkxNV9nZW1fb2JqZWN0X3VucGluX2Zyb21fZGlzcGxh eV9wbGFuZShvYmosICZ2aWV3KTsKPiArCXZtYSA9IGk5MTVfZ2VtX29iamVjdF90b19nZ3R0KG9i aiwgJnZpZXcpOwoKR0VNX0JVR19PTighdm1hKT8KCj4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5f ZnJvbV9kaXNwbGF5X3BsYW5lKHZtYSk7Cj4gwqB9Cj4gwqAKPiDCoC8qCj4gQEAgLTI1NTIsNyAr MjU1NSw3IEBAIGludGVsX2ZpbmRfaW5pdGlhbF9wbGFuZV9vYmooc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMsCj4gwqAJCQljb250aW51ZTsKPiDCoAo+IMKgCQlvYmogPSBpbnRlbF9mYl9v YmooZmIpOwo+IC0JCWlmIChpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSA9PSBwbGFuZV9j b25maWctPmJhc2UpIHsKPiArCQlpZiAoaTkxNV9nZW1fb2JqZWN0X2dndHRfb2Zmc2V0KG9iaiwg TlVMTCkgPT0gcGxhbmVfY29uZmlnLT5iYXNlKSB7Cj4gwqAJCQlkcm1fZnJhbWVidWZmZXJfcmVm ZXJlbmNlKGZiKTsKPiDCoAkJCWdvdG8gdmFsaWRfZmI7Cj4gwqAJCX0KPiBAQCAtMjcwOSwxMSAr MjcxMiwxMSBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnByaW1hcnksCj4gwqAJSTkxNV9XUklURShEU1BTVFJJREUocGxhbmUpLCBmYi0+ cGl0Y2hlc1swXSk7Cj4gwqAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiDCoAkJ STkxNV9XUklURShEU1BTVVJGKHBsYW5lKSwKPiAtCQkJwqDCoMKgaTkxNV9nZW1fb2JqX2dndHRf b2Zmc2V0KG9iaikgKyBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCk7Cj4gKwkJCcKgwqDCoGk5 MTVfZ2VtX29iamVjdF9nZ3R0X29mZnNldChvYmosIE5VTEwpICsgaW50ZWxfY3J0Yy0+ZHNwYWRk cl9vZmZzZXQpOwoKQXMgZGlzY3Vzc2VkIGluIElSQywgdGhpcyBmdW5jdGlvbiB0byBiZSByZW1v dmVkIGZ1cnRoZXIgZG93biB0aGUgcGF0aC4KCj4gQEAgLTIxNiwxNyArMjE1LDE3IEBAIHN0YXRp YyBpbnQgaW50ZWxmYl9jcmVhdGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciwKPiDCoAkJ c2l6ZXMtPmZiX2hlaWdodCA9IGludGVsX2ZiLT5iYXNlLmhlaWdodDsKPiDCoAl9Cj4gwqAKPiAt CW9iaiA9IGludGVsX2ZiLT5vYmo7Cj4gLQo+IMKgCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211 dGV4KTsKPiDCoAo+IMKgCS8qIFBpbiB0aGUgR0dUVCB2bWEgZm9yIG91ciBhY2Nlc3MgdmlhIGlu Zm8tPnNjcmVlbl9iYXNlLgo+IMKgCcKgKiBUaGlzIGFsc28gdmFsaWRhdGVzIHRoYXQgYW55IGV4 aXN0aW5nIGZiIGluaGVyaXRlZCBmcm9tIHRoZQo+IMKgCcKgKiBCSU9TIGlzIHN1aXRhYmxlIGZv ciBvd24gYWNjZXNzLgo+IMKgCcKgKi8KPiAtCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJf b2JqKCZpZmJkZXYtPmZiLT5iYXNlLCBCSVQoRFJNX1JPVEFURV8wKSk7Cj4gLQlpZiAocmV0KQo+ ICsJdm1hID0gaW50ZWxfcGluX2FuZF9mZW5jZV9mYl9vYmooJmlmYmRldi0+ZmItPmJhc2UsIEJJ VChEUk1fUk9UQVRFXzApKTsKCk5lZWRzIHJlYmFzaW5nLCBCSVQoRFJNX1JPVEFURV8wKSBpcyBu b3cganVzdCBEUk1fUk9UQVRFXzAuCgo+IEBAIC0xNDQzLDggKzE0NDMsOCBAQCB2b2lkIGludGVs X3NldHVwX292ZXJsYXkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IMKgCXJl dHVybjsKPiDCoAo+IMKgb3V0X3VucGluX2JvOgo+IC0JaWYgKCFPVkVSTEFZX05FRURTX1BIWVNJ Q0FMKGRldl9wcml2KSkKPiAtCQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihyZWdfYm8pOwo+ ICsJaWYgKHZtYSkKPiArCQlpOTE1X3ZtYV91bnBpbih2bWEpOwoKVGhpcyBtaWdodCBiZSB0aGUg b25seSBhY2NlcHRhYmxlIHVzZSBvZiBpZiAoKSBpbiB0ZWFyZG93biBwYXRoLgoKSSBob3BlIHRo ZXJlIGlzIGFuIGV4Y2VsbGVudCByZXZpc2lvbiBsaXN0aW5nIGluIHRoZSBuZXh0IGl0ZXJhdGlv bi4KVGhpcyB3YXMgYSBwYWluIHRvIGdvIHRocm91Z2guCgpSZWdhcmRzLCBKb29uYXMKLS0gCkpv b25hcyBMYWh0aW5lbgpPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpJbnRlbCBDb3Jwb3Jh dGlvbgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK