From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 17/37] drm/i915: Track vma activity per fence.context, not per engine Date: Fri, 29 Jun 2018 15:54:02 +0100 Message-ID: <501aa91c-0b0a-9254-23cb-33db5c9f25c7@linux.intel.com> References: <20180629075348.27358-1-chris@chris-wilson.co.uk> <20180629075348.27358-17-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 091DF6F076 for ; Fri, 29 Jun 2018 14:54:05 +0000 (UTC) In-Reply-To: <20180629075348.27358-17-chris@chris-wilson.co.uk> Content-Language: en-GB 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 Ck9uIDI5LzA2LzIwMTggMDg6NTMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiB0aGUgbmV4dCBw YXRjaCwgd2Ugd2lsbCB3YW50IHRvIGJlIGFibGUgdG8gdXNlIG1vcmUgZmxleGlibGUgcmVxdWVz dAo+IHRpbWVsaW5lcyB0aGF0IGNhbiBob3AgYmV0d2VlbiBlbmdpbmVzLiBGcm9tIHRoZSB2bWEg cG92LCB3ZSBjYW4gdGhlbgo+IG5vdCByZWx5IG9uIHRoZSBiaW5kaW5nIG9mIHRoaXMgcmVxdWVz dCB0byBhbiBlbmdpbmUgYW5kIHNvIGNhbiBub3QKPiBlbnN1cmUgdGhhdCBkaWZmZXJlbnQgcmVx dWVzdHMgYXJlIG9yZGVyZWQgdGhyb3VnaCBhIHBlci1lbmdpbmUKPiB0aW1lbGluZSwgYW5kIHNv IHdlIG11c3QgdHJhY2sgYWN0aXZpdHkgb2YgYWxsIHRpbWVsaW5lcy4gKFdlIHRyYWNrCj4gYWN0 aXZpdHkgb24gdGhlIHZtYSBpdHNlbGYgdG8gcHJldmVudCB1bmJpbmRpbmcgZnJvbSBIVyBiZWZv cmUgdGhlIEhXCj4gaGFzIGZpbmlzaGVkIGFjY2Vzc2luZyBpdC4pCj4gCj4gRm9yIG5vdywgbGV0 J3MganVzdCBpZ25vcmUgdGhlIHBvdGVudGlhbCBpc3N1ZSB3aXRoIHRyeWluZyB0byB1c2UgNjRi Cj4gaW5kaWNlcyB3aXRoIHJhZGl4dHJlZXMgb24gMzJiIG1hY2hpbmVzLCBpdCdzIHVubGlrZWx5 IHRvIGJlIGEgcHJvYmxlbQo+IGluIHByYWN0aWNlLi4uCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hy aXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgfCAgIDMgLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDYxIC0tLS0tLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICB8ICAgNCArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgIHwgIDE0ICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oICAgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oICAgICAgICB8ICAgMSArCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZtYS5jICAgICAgICAgICAgfCAxODAgKysrKysrKysrKysrKysrKysrLS0t Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oICAgICAgICAgICAgfCAgNDIgKyst LS0KPiAgIDggZmlsZXMgY2hhbmdlZCwgMTczIGluc2VydGlvbnMoKyksIDEzNCBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCAzM2U1YWM4YmYwYjguLmE3ODZh M2I2Njg2ZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zMTA0LDkgKzMxMDQs NiBAQCBpOTE1X2dlbV9vYmpfZmluaXNoX3NobWVtX2FjY2VzcyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+ICAgfQo+ICAgCj4gICBpbnQgX19tdXN0X2NoZWNrIGk5MTVfbXV0ZXhf bG9ja19pbnRlcnJ1cHRpYmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IC1pbnQgX19tdXN0 X2NoZWNrIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+IC0J CQkJCSBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAtCQkJCQkgdW5zaWduZWQgaW50IGZsYWdz KTsKPiAgIGludCBpOTE1X2dlbV9kdW1iX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp diwKPiAgIAkJCSBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJIHN0cnVjdCBkcm1fbW9k ZV9jcmVhdGVfZHVtYiAqYXJncyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYwo+IGluZGV4IDk3MTM2ZTRjZTkxZC4uM2YwYzYxMmQ0MmU3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IEBAIC0xODY4LDY3ICsx ODY4LDYgQEAgc3RhdGljIGJvb2wgaTkxNV9nZW1fY2hlY2tfZXhlY2J1ZmZlcihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyICpleGVjKQo+ICAgCXJldHVybiB0cnVlOwo+ICAgfQo+ICAg Cj4gLXN0YXRpYyB2b2lkIGV4cG9ydF9mZW5jZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAtCQkJ IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAo+IC0JCQkgdW5zaWduZWQgaW50IGZsYWdzKQo+IC17 Cj4gLQlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2ID0gdm1hLT5yZXN2Owo+IC0KPiAt CS8qCj4gLQkgKiBJZ25vcmUgZXJyb3JzIGZyb20gZmFpbGluZyB0byBhbGxvY2F0ZSB0aGUgbmV3 IGZlbmNlLCB3ZSBjYW4ndAo+IC0JICogaGFuZGxlIGFuIGVycm9yIHJpZ2h0IG5vdy4gV29yc3Qg Y2FzZSBzaG91bGQgYmUgbWlzc2VkCj4gLQkgKiBzeW5jaHJvbmlzYXRpb24gbGVhZGluZyB0byBy ZW5kZXJpbmcgY29ycnVwdGlvbi4KPiAtCSAqLwo+IC0JcmVzZXJ2YXRpb25fb2JqZWN0X2xvY2so cmVzdiwgTlVMTCk7Cj4gLQlpZiAoZmxhZ3MgJiBFWEVDX09CSkVDVF9XUklURSkKPiAtCQlyZXNl cnZhdGlvbl9vYmplY3RfYWRkX2V4Y2xfZmVuY2UocmVzdiwgJnJxLT5mZW5jZSk7Cj4gLQllbHNl IGlmIChyZXNlcnZhdGlvbl9vYmplY3RfcmVzZXJ2ZV9zaGFyZWQocmVzdikgPT0gMCkKPiAtCQly ZXNlcnZhdGlvbl9vYmplY3RfYWRkX3NoYXJlZF9mZW5jZShyZXN2LCAmcnEtPmZlbmNlKTsKPiAt CXJlc2VydmF0aW9uX29iamVjdF91bmxvY2socmVzdik7Cj4gLX0KPiAtCj4gLWludCBpOTE1X3Zt YV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAtCQkJICAgIHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLAo+IC0JCQkgICAgdW5zaWduZWQgaW50IGZsYWdzKQo+IC17Cj4gLQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7Cj4gLQljb25zdCB1bnNp Z25lZCBpbnQgaWR4ID0gcnEtPmVuZ2luZS0+aWQ7Cj4gLQo+IC0JbG9ja2RlcF9hc3NlcnRfaGVs ZCgmcnEtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JR0VNX0JVR19PTighZHJtX21tX25v ZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsKPiAtCj4gLQkvKgo+IC0JICogQWRkIGEgcmVmZXJl bmNlIGlmIHdlJ3JlIG5ld2x5IGVudGVyaW5nIHRoZSBhY3RpdmUgbGlzdC4KPiAtCSAqIFRoZSBv cmRlciBpbiB3aGljaCB3ZSBhZGQgb3BlcmF0aW9ucyB0byB0aGUgcmV0aXJlbWVudCBxdWV1ZSBp cwo+IC0JICogdml0YWwgaGVyZTogbWFya19hY3RpdmUgYWRkcyB0byB0aGUgc3RhcnQgb2YgdGhl IGNhbGxiYWNrIGxpc3QsCj4gLQkgKiBzdWNoIHRoYXQgc3Vic2VxdWVudCBjYWxsYmFja3MgYXJl IGNhbGxlZCBmaXJzdC4gVGhlcmVmb3JlIHdlCj4gLQkgKiBhZGQgdGhlIGFjdGl2ZSByZWZlcmVu Y2UgZmlyc3QgYW5kIHF1ZXVlIGZvciBpdCB0byBiZSBkcm9wcGVkCj4gLQkgKiAqbGFzdCouCj4g LQkgKi8KPiAtCWlmICghaTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpCj4gLQkJb2JqLT5hY3RpdmVf Y291bnQrKzsKPiAtCWk5MTVfdm1hX3NldF9hY3RpdmUodm1hLCBpZHgpOwo+IC0JaTkxNV9nZW1f YWN0aXZlX3NldCgmdm1hLT5sYXN0X3JlYWRbaWR4XSwgcnEpOwo+IC0JbGlzdF9tb3ZlX3RhaWwo JnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmFjdGl2ZV9saXN0KTsKPiAtCj4gLQlvYmotPndyaXRl X2RvbWFpbiA9IDA7Cj4gLQlpZiAoZmxhZ3MgJiBFWEVDX09CSkVDVF9XUklURSkgewo+IC0JCW9i ai0+d3JpdGVfZG9tYWluID0gSTkxNV9HRU1fRE9NQUlOX1JFTkRFUjsKPiAtCj4gLQkJaWYgKGlu dGVsX2ZiX29ial9pbnZhbGlkYXRlKG9iaiwgT1JJR0lOX0NTKSkKPiAtCQkJaTkxNV9nZW1fYWN0 aXZlX3NldCgmb2JqLT5mcm9udGJ1ZmZlcl93cml0ZSwgcnEpOwo+IC0KPiAtCQlvYmotPnJlYWRf ZG9tYWlucyA9IDA7Cj4gLQl9Cj4gLQlvYmotPnJlYWRfZG9tYWlucyB8PSBJOTE1X0dFTV9HUFVf RE9NQUlOUzsKPiAtCj4gLQlpZiAoZmxhZ3MgJiBFWEVDX09CSkVDVF9ORUVEU19GRU5DRSkKPiAt CQlpOTE1X2dlbV9hY3RpdmVfc2V0KCZ2bWEtPmxhc3RfZmVuY2UsIHJxKTsKPiAtCj4gLQlleHBv cnRfZmVuY2Uodm1hLCBycSwgZmxhZ3MpOwo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gICBzdGF0 aWMgaW50IGk5MTVfcmVzZXRfZ2VuN19zb2xfb2Zmc2V0cyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSkKPiAgIHsKPiAgIAl1MzIgKmNzOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4g aW5kZXggZjQ2ZDg3M2E3NTMwLi5hY2M3Nzk3NzBlNDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwo+IEBAIC0yMDA2LDcgKzIwMDYsNiBAQCBzdGF0aWMgc3RydWN0IGk5MTVf dm1hICpwZF92bWFfY3JlYXRlKHN0cnVjdCBnZW42X2h3X3BwZ3R0ICpwcGd0dCwgaW50IHNpemUp Cj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBwcGd0dC0+YmFzZS52bS5pOTE1 Owo+ICAgCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmaTkxNS0+Z2d0dDsKPiAgIAlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKPiAtCWludCBpOwo+ICAgCj4gICAJR0VNX0JVR19PTighSVNfQUxJR05F RChzaXplLCBJOTE1X0dUVF9QQUdFX1NJWkUpKTsKPiAgIAlHRU1fQlVHX09OKHNpemUgPiBnZ3R0 LT52bS50b3RhbCk7Cj4gQEAgLTIwMTUsOCArMjAxNCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92 bWEgKnBkX3ZtYV9jcmVhdGUoc3RydWN0IGdlbjZfaHdfcHBndHQgKnBwZ3R0LCBpbnQgc2l6ZSkK PiAgIAlpZiAoIXZtYSkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gICAKPiAtCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZtYS0+bGFzdF9yZWFkKTsgaSsrKQo+IC0JCWluaXRf cmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFzdF9yZWFkW2ldLCBOVUxMKTsKPiArCUlOSVRfUkFESVhf VFJFRSgmdm1hLT5hY3RpdmVfcnQsIEdGUF9LRVJORUwpOwo+ICAgCWluaXRfcmVxdWVzdF9hY3Rp dmUoJnZtYS0+bGFzdF9mZW5jZSwgTlVMTCk7Cj4gICAKPiAgIAl2bWEtPnZtID0gJmdndHQtPnZt Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IGluZGV4IGRmNTI0YzljYWQ0 MC4uOGM4MWNmM2FhMTgyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5j Cj4gQEAgLTMzNSwyMSArMzM1LDE2IEBAIHN0YXRpYyB2b2lkIHByaW50X2Vycm9yX2J1ZmZlcnMo c3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAgIAkJCQlzdHJ1Y3QgZHJtX2k5 MTVfZXJyb3JfYnVmZmVyICplcnIsCj4gICAJCQkJaW50IGNvdW50KQo+ICAgewo+IC0JaW50IGk7 Cj4gLQo+ICAgCWVycl9wcmludGYobSwgIiVzIFslZF06XG4iLCBuYW1lLCBjb3VudCk7Cj4gICAK PiAgIAl3aGlsZSAoY291bnQtLSkgewo+IC0JCWVycl9wcmludGYobSwgIiAgICAlMDh4XyUwOHgg JTh1ICUwMnggJTAyeCBbICIsCj4gKwkJZXJyX3ByaW50ZihtLCAiICAgICUwOHhfJTA4eCAlOHUg JTAyeCAlMDJ4ICUwMngiLAo+ICAgCQkJICAgdXBwZXJfMzJfYml0cyhlcnItPmd0dF9vZmZzZXQp LAo+ICAgCQkJICAgbG93ZXJfMzJfYml0cyhlcnItPmd0dF9vZmZzZXQpLAo+ICAgCQkJICAgZXJy LT5zaXplLAo+ICAgCQkJICAgZXJyLT5yZWFkX2RvbWFpbnMsCj4gLQkJCSAgIGVyci0+d3JpdGVf ZG9tYWluKTsKPiAtCQlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fRU5HSU5FUzsgaSsrKQo+IC0J CQllcnJfcHJpbnRmKG0sICIlMDJ4ICIsIGVyci0+cnNlcW5vW2ldKTsKPiAtCj4gLQkJZXJyX3By aW50ZihtLCAiXSAlMDJ4IiwgZXJyLT53c2Vxbm8pOwo+ICsJCQkgICBlcnItPndyaXRlX2RvbWFp biwKPiArCQkJICAgZXJyLT53c2Vxbm8pOwo+ICAgCQllcnJfcHV0cyhtLCB0aWxpbmdfZmxhZyhl cnItPnRpbGluZykpOwo+ICAgCQllcnJfcHV0cyhtLCBkaXJ0eV9mbGFnKGVyci0+ZGlydHkpKTsK PiAgIAkJZXJyX3B1dHMobSwgcHVyZ2VhYmxlX2ZsYWcoZXJyLT5wdXJnZWFibGUpKTsKPiBAQCAt MTAyMSwxMyArMTAxNiwxMCBAQCBzdGF0aWMgdm9pZCBjYXB0dXJlX2JvKHN0cnVjdCBkcm1faTkx NV9lcnJvcl9idWZmZXIgKmVyciwKPiAgIAkJICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKPiAt CWludCBpOwo+ICAgCj4gICAJZXJyLT5zaXplID0gb2JqLT5iYXNlLnNpemU7Cj4gICAJZXJyLT5u YW1lID0gb2JqLT5iYXNlLm5hbWU7Cj4gICAKPiAtCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9F TkdJTkVTOyBpKyspCj4gLQkJZXJyLT5yc2Vxbm9baV0gPSBfX2FjdGl2ZV9nZXRfc2Vxbm8oJnZt YS0+bGFzdF9yZWFkW2ldKTsKPiAgIAllcnItPndzZXFubyA9IF9fYWN0aXZlX2dldF9zZXFubygm b2JqLT5mcm9udGJ1ZmZlcl93cml0ZSk7Cj4gICAJZXJyLT5lbmdpbmUgPSBfX2FjdGl2ZV9nZXRf ZW5naW5lX2lkKCZvYmotPmZyb250YnVmZmVyX3dyaXRlKTsKPiAgIAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuaAo+IGluZGV4IDU4OTEwZjFkYzY3Yy4uZjg5M2E0ZThiNzgzIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5oCj4gQEAgLTE3Nyw3ICsxNzcs NyBAQCBzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9i dWZmZXIgewo+ICAgCQl1MzIgc2l6ZTsKPiAgIAkJdTMyIG5hbWU7Cj4gLQkJdTMyIHJzZXFub1tJ OTE1X05VTV9FTkdJTkVTXSwgd3NlcW5vOwo+ICsJCXUzMiB3c2Vxbm87Cj4gICAJCXU2NCBndHRf b2Zmc2V0Owo+ICAgCQl1MzIgcmVhZF9kb21haW5zOwo+ICAgCQl1MzIgd3JpdGVfZG9tYWluOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gaW5kZXggYTM1NWEwODE0ODVmLi5lMWM5 MzY1ZGZlZmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0zODAs NiArMzgwLDcgQEAgc3RhdGljIGlubGluZSB2b2lkCj4gICBpbml0X3JlcXVlc3RfYWN0aXZlKHN0 cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKPiAgIAkJICAgIGk5MTVfZ2VtX3JldGlyZV9m biByZXRpcmUpCj4gICB7Cj4gKwlSQ1VfSU5JVF9QT0lOVEVSKGFjdGl2ZS0+cmVxdWVzdCwgTlVM TCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmFjdGl2ZS0+bGluayk7Cj4gICAJYWN0aXZlLT5yZXRp cmUgPSByZXRpcmUgPzogaTkxNV9nZW1fcmV0aXJlX25vb3A7Cj4gICB9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZtYS5jCj4gaW5kZXggZDBlNjA2ZTliMjdhLi4yMzg1MjQxN2RjYmQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdm1hLmMKPiBAQCAtNjMsMTggKzYzLDE4IEBAIHN0YXRpYyB2b2lkIHZtYV9w cmludF9hbGxvY2F0b3Ioc3RydWN0IGk5MTVfdm1hICp2bWEsIGNvbnN0IGNoYXIgKnJlYXNvbikK PiAgIAo+ICAgI2VuZGlmCj4gICAKPiArc3RydWN0IGk5MTVfdm1hX2FjdGl2ZSB7Cj4gKwlzdHJ1 Y3QgaTkxNV9nZW1fYWN0aXZlIGJhc2U7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArfTsK PiArCj4gICBzdGF0aWMgdm9pZAo+IC1pOTE1X3ZtYV9yZXRpcmUoc3RydWN0IGk5MTVfZ2VtX2Fj dGl2ZSAqYWN0aXZlLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArX19pOTE1X3ZtYV9yZXRp cmUoc3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgewo+ IC0JY29uc3QgdW5zaWduZWQgaW50IGlkeCA9IHJxLT5lbmdpbmUtPmlkOwo+IC0Jc3RydWN0IGk5 MTVfdm1hICp2bWEgPQo+IC0JCWNvbnRhaW5lcl9vZihhY3RpdmUsIHN0cnVjdCBpOTE1X3ZtYSwg bGFzdF9yZWFkW2lkeF0pOwo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2 bWEtPm9iajsKPiAgIAo+IC0JR0VNX0JVR19PTighaTkxNV92bWFfaGFzX2FjdGl2ZV9lbmdpbmUo dm1hLCBpZHgpKTsKPiAtCj4gLQlpOTE1X3ZtYV9jbGVhcl9hY3RpdmUodm1hLCBpZHgpOwo+IC0J aWYgKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKQo+ICsJR0VNX0JVR19PTighaTkxNV92bWFfaXNf YWN0aXZlKHZtYSkpOwo+ICsJaWYgKC0tdm1hLT5hY3RpdmVfY291bnQpCj4gICAJCXJldHVybjsK PiAgIAo+ICAgCUdFTV9CVUdfT04oIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7 Cj4gQEAgLTEwOCw2ICsxMDgsMTkgQEAgaTkxNV92bWFfcmV0aXJlKHN0cnVjdCBpOTE1X2dlbV9h Y3RpdmUgKmFjdGl2ZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJfQo+ICAgfQo+ICAg Cj4gK3N0YXRpYyB2b2lkCj4gK2k5MTVfdm1hX3JldGlyZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZl ICpiYXNlLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArewo+ICsJc3RydWN0IGk5MTVfdm1h X2FjdGl2ZSAqYWN0aXZlID0KPiArCQljb250YWluZXJfb2YoYmFzZSwgdHlwZW9mKCphY3RpdmUp LCBiYXNlKTsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gYWN0aXZlLT52bWE7Cj4gKwo+ICsJ R0VNX0JVR19PTihiYXNlICE9IHJhZGl4X3RyZWVfbG9va3VwKCZ2bWEtPmFjdGl2ZV9ydCwKPiAr CQkJCQkgICAgIHJxLT5mZW5jZS5jb250ZXh0KSk7Cj4gKwo+ICsJX19pOTE1X3ZtYV9yZXRpcmUo dm1hLCBycSk7Cj4gK30KPiArCj4gICBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICoKPiAgIHZtYV9j cmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkgICBzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKPiBAQCAtMTE1LDcgKzEyOCw2IEBAIHZtYV9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKPiAgIAlzdHJ1Y3QgcmJfbm9kZSAqcmIsICoqcDsKPiAtCWludCBpOwo+ICAgCj4gICAJ LyogVGhlIGFsaWFzaW5nX3BwZ3R0IHNob3VsZCBuZXZlciBiZSB1c2VkIGRpcmVjdGx5ISAqLwo+ ICAgCUdFTV9CVUdfT04odm0gPT0gJnZtLT5pOTE1LT5tbS5hbGlhc2luZ19wcGd0dC0+dm0pOwo+ IEBAIC0xMjQsOCArMTM2LDggQEAgdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICAgCWlmICh2bWEgPT0gTlVMTCkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Cj4gICAKPiAtCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZtYS0+bGFzdF9yZWFkKTsg aSsrKQo+IC0JCWluaXRfcmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFzdF9yZWFkW2ldLCBpOTE1X3Zt YV9yZXRpcmUpOwo+ICsJSU5JVF9SQURJWF9UUkVFKCZ2bWEtPmFjdGl2ZV9ydCwgR0ZQX0tFUk5F TCk7Cj4gKwo+ICAgCWluaXRfcmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFzdF9mZW5jZSwgTlVMTCk7 Cj4gICAJdm1hLT52bSA9IHZtOwo+ICAgCXZtYS0+b3BzID0gJnZtLT52bWFfb3BzOwo+IEBAIC03 NzgsMTMgKzc5MCwxMiBAQCB2b2lkIGk5MTVfdm1hX3Jlb3BlbihzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKPiAgIHN0YXRpYyB2b2lkIF9faTkxNV92bWFfZGVzdHJveShzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHZtYS0+dm0tPmk5 MTU7Cj4gLQlpbnQgaTsKPiArCXN0cnVjdCByYWRpeF90cmVlX2l0ZXIgaXRlcjsKPiArCXZvaWQg X19yY3UgKipzbG90Owo+ICAgCj4gICAJR0VNX0JVR19PTih2bWEtPm5vZGUuYWxsb2NhdGVkKTsK PiAgIAlHRU1fQlVHX09OKHZtYS0+ZmVuY2UpOwo+ICAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJS QVlfU0laRSh2bWEtPmxhc3RfcmVhZCk7IGkrKykKPiAtCQlHRU1fQlVHX09OKGk5MTVfZ2VtX2Fj dGl2ZV9pc3NldCgmdm1hLT5sYXN0X3JlYWRbaV0pKTsKPiAgIAlHRU1fQlVHX09OKGk5MTVfZ2Vt X2FjdGl2ZV9pc3NldCgmdm1hLT5sYXN0X2ZlbmNlKSk7Cj4gICAKPiAgIAlsaXN0X2RlbCgmdm1h LT5vYmpfbGluayk7Cj4gQEAgLTc5NSw2ICs4MDYsMTcgQEAgc3RhdGljIHZvaWQgX19pOTE1X3Zt YV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgCWlmICghaTkxNV92bWFfaXNfZ2d0 dCh2bWEpKQo+ICAgCQlpOTE1X3BwZ3R0X3B1dChpOTE1X3ZtX3RvX3BwZ3R0KHZtYS0+dm0pKTsK PiAgIAo+ICsJcmN1X3JlYWRfbG9jaygpOwo+ICsJcmFkaXhfdHJlZV9mb3JfZWFjaF9zbG90KHNs b3QsICZ2bWEtPmFjdGl2ZV9ydCwgJml0ZXIsIDApIHsKPiArCQlzdHJ1Y3QgaTkxNV92bWFfYWN0 aXZlICphY3RpdmUgPSByY3VfZGVyZWZlcmVuY2VfcmF3KCpzbG90KTsKPiArCj4gKwkJR0VNX0JV R19PTihpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJmFjdGl2ZS0+YmFzZSkpOwo+ICsJCWtmcmVlKGFj dGl2ZSk7Cj4gKwo+ICsJCXJhZGl4X3RyZWVfZGVsZXRlKCZ2bWEtPmFjdGl2ZV9ydCwgaXRlci5p bmRleCk7Cj4gKwl9Cj4gKwlyY3VfcmVhZF91bmxvY2soKTsKPiArCj4gICAJa21lbV9jYWNoZV9m cmVlKGk5MTUtPnZtYXMsIHZtYSk7Cj4gICB9Cj4gICAKPiBAQCAtODU5LDkgKzg4MSwxMTEgQEAg dm9pZCBpOTE1X3ZtYV9yZXZva2VfbW1hcChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgIAkJbGlz dF9kZWwoJnZtYS0+b2JqLT51c2VyZmF1bHRfbGluayk7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZv aWQgZXhwb3J0X2ZlbmNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICsJCQkgc3RydWN0IGk5MTVf cmVxdWVzdCAqcnEsCj4gKwkJCSB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sKPiArCXN0cnVjdCBy ZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YgPSB2bWEtPnJlc3Y7Cj4gKwo+ICsJLyoKPiArCSAqIEln bm9yZSBlcnJvcnMgZnJvbSBmYWlsaW5nIHRvIGFsbG9jYXRlIHRoZSBuZXcgZmVuY2UsIHdlIGNh bid0Cj4gKwkgKiBoYW5kbGUgYW4gZXJyb3IgcmlnaHQgbm93LiBXb3JzdCBjYXNlIHNob3VsZCBi ZSBtaXNzZWQKPiArCSAqIHN5bmNocm9uaXNhdGlvbiBsZWFkaW5nIHRvIHJlbmRlcmluZyBjb3Jy dXB0aW9uLgo+ICsJICovCj4gKwlyZXNlcnZhdGlvbl9vYmplY3RfbG9jayhyZXN2LCBOVUxMKTsK PiArCWlmIChmbGFncyAmIEVYRUNfT0JKRUNUX1dSSVRFKQo+ICsJCXJlc2VydmF0aW9uX29iamVj dF9hZGRfZXhjbF9mZW5jZShyZXN2LCAmcnEtPmZlbmNlKTsKPiArCWVsc2UgaWYgKHJlc2VydmF0 aW9uX29iamVjdF9yZXNlcnZlX3NoYXJlZChyZXN2KSA9PSAwKQo+ICsJCXJlc2VydmF0aW9uX29i amVjdF9hZGRfc2hhcmVkX2ZlbmNlKHJlc3YsICZycS0+ZmVuY2UpOwo+ICsJcmVzZXJ2YXRpb25f b2JqZWN0X3VubG9jayhyZXN2KTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9h Y3RpdmUgKmxvb2t1cF9hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsIHU2NCBpZHgpCj4gK3sK PiArCXN0cnVjdCBpOTE1X3ZtYV9hY3RpdmUgKmFjdGl2ZTsKPiArCWludCBlcnI7Cj4gKwo+ICsJ LyoKPiArCSAqIFhYWCBOb3RlIHRoYXQgdGhlIHJhZGl4X3RyZWUgdXNlcyB1bnNpZ25lZCBsb25n cyBmb3IgaXQgaW5kaWNlcywKPiArCSAqIGEgcHJvYmxlbSBmb3IgdXMgb24gaTM4NiB3aXRoIDMy Yml0IGxvbmdzLiBIb3dldmVyLCB0aGUgbGlrZWxpaG9vZAo+ICsJICogb2YgMiB0aW1lbGluZXMg YmVpbmcgdXNlZCBvbiB0aGUgc2FtZSBWTUEgYWxpYXNpbmcgaXMgbWluaW1hbCwKPiArCSAqIGFu ZCBmdXJ0aGVyIHJlZHVjZWQgYnkgdGhhdCBib3RoIHRpbWVsaW5lcyBtdXN0IGJlIGFjdGl2ZQo+ ICsJICogc2ltdWx0YW5lb3VzbHkgdG8gY29uZnVzZSB1cy4KPiArCSAqLwo+ICsJYWN0aXZlID0g cmFkaXhfdHJlZV9sb29rdXAoJnZtYS0+YWN0aXZlX3J0LCBpZHgpOwo+ICsJaWYgKGxpa2VseShh Y3RpdmUpKSB7Cj4gKwkJR0VNX0JVR19PTihpOTE1X2dlbV9hY3RpdmVfaXNzZXQoJmFjdGl2ZS0+ YmFzZSkgJiYKPiArCQkJICAgaWR4ICE9IGk5MTVfZ2VtX2FjdGl2ZV9wZWVrKCZhY3RpdmUtPmJh c2UsCj4gKwkJCQkJCSAgICAgICAmdm1hLT52bS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCktPmZl bmNlLmNvbnRleHQpOwo+ICsJCXJldHVybiAmYWN0aXZlLT5iYXNlOwo+ICsJfQo+ICsKPiArCWFj dGl2ZSA9IGttYWxsb2Moc2l6ZW9mKCphY3RpdmUpLCBHRlBfS0VSTkVMKTsKPiArCWlmICh1bmxp a2VseSghYWN0aXZlKSkKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwlpbml0 X3JlcXVlc3RfYWN0aXZlKCZhY3RpdmUtPmJhc2UsIGk5MTVfdm1hX3JldGlyZSk7Cj4gKwlhY3Rp dmUtPnZtYSA9IHZtYTsKPiArCj4gKwllcnIgPSByYWRpeF90cmVlX2luc2VydCgmdm1hLT5hY3Rp dmVfcnQsIGlkeCwgYWN0aXZlKTsKPiArCWlmICh1bmxpa2VseShlcnIpKSB7Cj4gKwkJa2ZyZWUo YWN0aXZlKTsKPiArCQlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ICsJfQo+ICsKPiArCXJldHVybiAm YWN0aXZlLT5iYXNlOwo+ICt9Cj4gKwo+ICtpbnQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3Ry dWN0IGk5MTVfdm1hICp2bWEsCj4gKwkJCSAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKPiAr CQkJICAgIHVuc2lnbmVkIGludCBmbGFncykKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+ICsJc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZl Owo+ICsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJxLT5pOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKPiArCUdFTV9CVUdfT04oIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7Cj4g Kwo+ICsJYWN0aXZlID0gbG9va3VwX2FjdGl2ZSh2bWEsIHJxLT5mZW5jZS5jb250ZXh0KTsKCk5l dmVyIG1pbmQgdGhlIHJhZGl4IHRyZWUsIGJ1dCBmZW5jZS5jb250ZXh0IGlzIHU2NCBhcyB3ZWxs LiBBbmQgCmFzc2lnbmVkIHZhbHVlcyBhcmUgY29udGludW91c2x5IGluY3JlbWVudGluZyBzbyBv bmNlID40RyBvZiBjb250ZXh0cyAKYXJlIGNyZWF0ZWQgYW5kIGRlc3Ryb3llZCBhbGlhc2luZyBp cyBndWFyYW50ZWVkIHdpdGggdGhlIGtlcm5lbCAKY29udGV4dCwgb3IgYW55IG9sZCBvbmUuCgpJ dCBpcyBwcm9iYWJseSBJR1QgYWJ1c2UgdGVycml0b3J5LCBidXQgYSkgY2FuIHdlIGJlIHN1cmUg aXQgd2lsbCBub3QgCm9wZW4gdXAgc29tZSBleHBsb2l0LCBhbmQgYikgY2FuIHdlIHN3YWxsb3cg dGhpcyBwcm9ibGVtIG91cnNlbHZlcz8KClJlZ2FyZHMsCgpUdnJ0a28KCj4gKwlpZiAoSVNfRVJS KGFjdGl2ZSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoYWN0aXZlKTsKPiArCj4gKwkvKgo+ICsJICog QWRkIGEgcmVmZXJlbmNlIGlmIHdlJ3JlIG5ld2x5IGVudGVyaW5nIHRoZSBhY3RpdmUgbGlzdC4K PiArCSAqIFRoZSBvcmRlciBpbiB3aGljaCB3ZSBhZGQgb3BlcmF0aW9ucyB0byB0aGUgcmV0aXJl bWVudCBxdWV1ZSBpcwo+ICsJICogdml0YWwgaGVyZTogbWFya19hY3RpdmUgYWRkcyB0byB0aGUg c3RhcnQgb2YgdGhlIGNhbGxiYWNrIGxpc3QsCj4gKwkgKiBzdWNoIHRoYXQgc3Vic2VxdWVudCBj YWxsYmFja3MgYXJlIGNhbGxlZCBmaXJzdC4gVGhlcmVmb3JlIHdlCj4gKwkgKiBhZGQgdGhlIGFj dGl2ZSByZWZlcmVuY2UgZmlyc3QgYW5kIHF1ZXVlIGZvciBpdCB0byBiZSBkcm9wcGVkCj4gKwkg KiAqbGFzdCouCj4gKwkgKi8KPiArCWlmICghaTkxNV9nZW1fYWN0aXZlX2lzc2V0KGFjdGl2ZSkg JiYgIXZtYS0+YWN0aXZlX2NvdW50KyspIHsKPiArCQlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9s aW5rLCAmdm1hLT52bS0+YWN0aXZlX2xpc3QpOwo+ICsJCW9iai0+YWN0aXZlX2NvdW50Kys7Cj4g Kwl9Cj4gKwlpOTE1X2dlbV9hY3RpdmVfc2V0KGFjdGl2ZSwgcnEpOwo+ICsJR0VNX0JVR19PTigh aTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpOwo+ICsJR0VNX0JVR19PTighb2JqLT5hY3RpdmVfY291 bnQpOwo+ICsKPiArCW9iai0+d3JpdGVfZG9tYWluID0gMDsKPiArCWlmIChmbGFncyAmIEVYRUNf T0JKRUNUX1dSSVRFKSB7Cj4gKwkJb2JqLT53cml0ZV9kb21haW4gPSBJOTE1X0dFTV9ET01BSU5f UkVOREVSOwo+ICsKPiArCQlpZiAoaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUob2JqLCBPUklHSU5f Q1MpKQo+ICsJCQlpOTE1X2dlbV9hY3RpdmVfc2V0KCZvYmotPmZyb250YnVmZmVyX3dyaXRlLCBy cSk7Cj4gKwo+ICsJCW9iai0+cmVhZF9kb21haW5zID0gMDsKPiArCX0KPiArCW9iai0+cmVhZF9k b21haW5zIHw9IEk5MTVfR0VNX0dQVV9ET01BSU5TOwo+ICsKPiArCWlmIChmbGFncyAmIEVYRUNf T0JKRUNUX05FRURTX0ZFTkNFKQo+ICsJCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoJnZtYS0+bGFzdF9m ZW5jZSwgcnEpOwo+ICsKPiArCWV4cG9ydF9mZW5jZSh2bWEsIHJxLCBmbGFncyk7Cj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiAgIGludCBpOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2 bWEpCj4gICB7Cj4gLQl1bnNpZ25lZCBsb25nIGFjdGl2ZTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4g ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm1hLT52bS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gQEAgLTg3MSw5ICs5OTUsOSBAQCBpbnQgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQo+ICAgCSAqIGhhdmUgc2lkZS1lZmZlY3RzIHN1Y2ggYXMgdW5waW5uaW5nIG9yIGV2 ZW4gdW5iaW5kaW5nIHRoaXMgdm1hLgo+ICAgCSAqLwo+ICAgCW1pZ2h0X3NsZWVwKCk7Cj4gLQlh Y3RpdmUgPSBpOTE1X3ZtYV9nZXRfYWN0aXZlKHZtYSk7Cj4gLQlpZiAoYWN0aXZlKSB7Cj4gLQkJ aW50IGlkeDsKPiArCWlmIChpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSkgewo+ICsJCXN0cnVjdCBy YWRpeF90cmVlX2l0ZXIgaXRlcjsKPiArCQl2b2lkIF9fcmN1ICoqc2xvdDsKPiAgIAo+ICAgCQkv Kgo+ICAgCQkgKiBXaGVuIGEgY2xvc2VkIFZNQSBpcyByZXRpcmVkLCBpdCBpcyB1bmJvdW5kIC0g ZWVrLgo+IEBAIC04OTAsMTggKzEwMTQsMjQgQEAgaW50IGk5MTVfdm1hX3VuYmluZChzdHJ1Y3Qg aTkxNV92bWEgKnZtYSkKPiAgIAkJICovCj4gICAJCV9faTkxNV92bWFfcGluKHZtYSk7Cj4gICAK PiAtCQlmb3JfZWFjaF9hY3RpdmUoYWN0aXZlLCBpZHgpIHsKPiAtCQkJcmV0ID0gaTkxNV9nZW1f YWN0aXZlX3JldGlyZSgmdm1hLT5sYXN0X3JlYWRbaWR4XSwKPiArCQlyY3VfcmVhZF9sb2NrKCk7 Cj4gKwkJcmFkaXhfdHJlZV9mb3JfZWFjaF9zbG90KHNsb3QsICZ2bWEtPmFjdGl2ZV9ydCwgJml0 ZXIsIDApIHsKPiArCQkJc3RydWN0IGk5MTVfdm1hX2FjdGl2ZSAqYWN0aXZlID0KPiArCQkJCXJj dV9kZXJlZmVyZW5jZV9yYXcoKnNsb3QpOwo+ICsJCQlyY3VfcmVhZF91bmxvY2soKTsKPiArCj4g KwkJCXJldCA9IGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoJmFjdGl2ZS0+YmFzZSwKPiAgIAkJCQkJ CSAgICAgJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCQkJaWYgKHJldCkK PiAtCQkJCWJyZWFrOwo+IC0JCX0KPiArCQkJCWdvdG8gdW5waW47Cj4gICAKPiAtCQlpZiAoIXJl dCkgewo+IC0JCQlyZXQgPSBpOTE1X2dlbV9hY3RpdmVfcmV0aXJlKCZ2bWEtPmxhc3RfZmVuY2Us Cj4gLQkJCQkJCSAgICAgJnZtYS0+dm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJCQly Y3VfcmVhZF9sb2NrKCk7Cj4gICAJCX0KPiArCQlyY3VfcmVhZF91bmxvY2soKTsKPiAgIAo+ICsJ CXJldCA9IGk5MTVfZ2VtX2FjdGl2ZV9yZXRpcmUoJnZtYS0+bGFzdF9mZW5jZSwKPiArCQkJCQkg ICAgICZ2bWEtPnZtLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArdW5waW46Cj4gICAJCV9f aTkxNV92bWFfdW5waW4odm1hKTsKPiAgIAkJaWYgKHJldCkKPiAgIAkJCXJldHVybiByZXQ7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZtYS5oCj4gaW5kZXggNjZhMjI4OTMxNTE3Li45NGZkZjQ5MTdlOTUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiBAQCAtMjYsNiArMjYsNyBAQAo+ICAgI2Rl ZmluZSBfX0k5MTVfVk1BX0hfXwo+ICAgCj4gICAjaW5jbHVkZSA8bGludXgvaW8tbWFwcGluZy5o Pgo+ICsjaW5jbHVkZSA8bGludXgvcmFkaXgtdHJlZS5oPgo+ICAgCj4gICAjaW5jbHVkZSA8ZHJt L2RybV9tbS5oPgo+ICAgCj4gQEAgLTk0LDggKzk1LDggQEAgc3RydWN0IGk5MTVfdm1hIHsKPiAg ICNkZWZpbmUgSTkxNV9WTUFfVVNFUkZBVUxUCUJJVChJOTE1X1ZNQV9VU0VSRkFVTFRfQklUKQo+ ICAgI2RlZmluZSBJOTE1X1ZNQV9HR1RUX1dSSVRFCUJJVCgxMikKPiAgIAo+IC0JdW5zaWduZWQg aW50IGFjdGl2ZTsKPiAtCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF9yZWFkW0k5MTVfTlVN X0VOR0lORVNdOwo+ICsJdW5zaWduZWQgaW50IGFjdGl2ZV9jb3VudDsKPiArCXN0cnVjdCByYWRp eF90cmVlX3Jvb3QgYWN0aXZlX3J0Owo+ICAgCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF9m ZW5jZTsKPiAgIAo+ICAgCS8qKgo+IEBAIC0xMzgsNiArMTM5LDE1IEBAIGk5MTVfdm1hX2luc3Rh bmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAKPiAgIHZvaWQgaTkxNV92 bWFfdW5waW5fYW5kX3JlbGVhc2Uoc3RydWN0IGk5MTVfdm1hICoqcF92bWEpOwo+ICAgCj4gK3N0 YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3ZtYV9pc19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEp Cj4gK3sKPiArCXJldHVybiB2bWEtPmFjdGl2ZV9jb3VudDsKPiArfQo+ICsKPiAraW50IF9fbXVz dF9jaGVjayBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAr CQkJCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gKwkJCQkJIHVuc2lnbmVkIGludCBmbGFn cyk7Cj4gKwo+ICAgc3RhdGljIGlubGluZSBib29sIGk5MTVfdm1hX2lzX2dndHQoY29uc3Qgc3Ry dWN0IGk5MTVfdm1hICp2bWEpCj4gICB7Cj4gICAJcmV0dXJuIHZtYS0+ZmxhZ3MgJiBJOTE1X1ZN QV9HR1RUOwo+IEBAIC0xODcsMzQgKzE5Nyw2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3Zt YV9oYXNfdXNlcmZhdWx0KGNvbnN0IHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgCXJldHVybiB0 ZXN0X2JpdChJOTE1X1ZNQV9VU0VSRkFVTFRfQklULCAmdm1hLT5mbGFncyk7Cj4gICB9Cj4gICAK PiAtc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgaTkxNV92bWFfZ2V0X2FjdGl2ZShjb25zdCBz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAtewo+IC0JcmV0dXJuIHZtYS0+YWN0aXZlOwo+IC19Cj4g LQo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfaXNfYWN0aXZlKGNvbnN0IHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQo+IC17Cj4gLQlyZXR1cm4gaTkxNV92bWFfZ2V0X2FjdGl2ZSh2bWEpOwo+ IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIHZvaWQgaTkxNV92bWFfc2V0X2FjdGl2ZShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwKPiAtCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgZW5naW5lKQo+IC17Cj4g LQl2bWEtPmFjdGl2ZSB8PSBCSVQoZW5naW5lKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSB2 b2lkIGk5MTVfdm1hX2NsZWFyX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAtCQkJCQkg dW5zaWduZWQgaW50IGVuZ2luZSkKPiAtewo+IC0Jdm1hLT5hY3RpdmUgJj0gfkJJVChlbmdpbmUp Owo+IC19Cj4gLQo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaTkxNV92bWFfaGFzX2FjdGl2ZV9lbmdp bmUoY29uc3Qgc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gLQkJCQkJICAgICAgdW5zaWduZWQgaW50 IGVuZ2luZSkKPiAtewo+IC0JcmV0dXJuIHZtYS0+YWN0aXZlICYgQklUKGVuZ2luZSk7Cj4gLX0K PiAtCj4gICBzdGF0aWMgaW5saW5lIHUzMiBpOTE1X2dndHRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBp OTE1X3ZtYSAqdm1hKQo+ICAgewo+ICAgCUdFTV9CVUdfT04oIWk5MTVfdm1hX2lzX2dndHQodm1h KSk7Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=