From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 31/46] drm/i915: Stop tracking MRU activity on VMA Date: Wed, 16 Jan 2019 16:27:16 +0000 Message-ID: <5339b21d-8dce-3ae1-c2b4-c99ce87891f1@linux.intel.com> References: <20190107115509.12523-1-chris@chris-wilson.co.uk> <20190107115509.12523-31-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 813DC6F139 for ; Wed, 16 Jan 2019 16:27:16 +0000 (UTC) In-Reply-To: <20190107115509.12523-31-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDA3LzAxLzIwMTkgMTE6NTQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPdXIgZ29hbCBpcyB0 byByZW1vdmUgc3RydWN0X211dGV4IGFuZCByZXBsYWNlIGl0IHdpdGggZmluZSBncmFpbmVkCj4g bG9ja2luZy4gT25lIG9mIHRoZSB0aG9ybnkgaXNzdWVzIGlzIG91ciBldmljdGlvbiBsb2dpYyBm b3IgcmVjbGFpbWluZwo+IHNwYWNlIGZvciBhbiBleGVjYnVmZmVyIChvciBHVFQgbW1hcGluZywg YW1vbmcgYSBmZXcgb3RoZXIgZXhhbXBsZXMpLgo+IFdoaWxlIGV2aWN0aW9uIGl0c2VsZiBpcyBl YXN5IHRvIG1vdmUgdW5kZXIgYSBwZXItVk0gbXV0ZXgsIHBlcmZvcm1pbmcKPiB0aGUgYWN0aXZp dHkgdHJhY2tpbmcgaXMgbGVzcyBhZ3JlZWFibGUuIE9uZSBzb2x1dGlvbiBpcyBub3QgdG8gZG8g YW55Cj4gTVJVIHRyYWNraW5nIGFuZCBkbyBhIHNpbXBsZSBjb2Fyc2UgZXZhbHVhdGlvbiBkdXJp bmcgZXZpY3Rpb24gb2YKPiBhY3RpdmUvaW5hY3RpdmUsIHdpdGggYSBsb29zZSB0ZW1wb3JhbCBv cmRlcmluZyBvZiBsYXN0Cj4gaW5zZXJ0aW9uL2V2YWx1YXRpb24uIFRoYXQga2VlcHMgYWxsIHRo ZSBsb2NraW5nIGNvbnN0cmFpbmVkIHRvIHdoZW4gd2UKPiBhcmUgbWFuaXB1bGF0aW5nIHRoZSBW TSBpdHNlbGYsIG5lYXRseSBhdm9pZGluZyB0aGUgdHJpY2t5IGhhbmRsaW5nIG9mCj4gcG9zc2li bGUgcmVjdXJzaXZlIGxvY2tpbmcgZHVyaW5nIGV4ZWNidWYgYW5kIGVsc2V3aGVyZS4KPiAKPiBO b3RlIHRoYXQgZGlzY2FyZGluZyB0aGUgTVJVIGlzIHVubGlrZWx5IHRvIGltcGFjdCB1cG9uIG91 ciBlZmZpY2llbmN5Cj4gdG8gcmVjbGFpbSBWTSBzcGFjZSAod2hlcmUgd2UgdGhpbmsgYSBMUlUg bW9kZWwgaXMgYmVzdCkgYXMgb3VyCj4gY3VycmVudCBzdHJhdGVneSBpcyB0byB1c2UgcmFuZG9t IGlkbGUgcmVwbGFjZW1lbnQgZmlyc3QgYmVmb3JlIGRvaW5nCj4gYSBzZWFyY2gsIGFuZCBvdmVy IHRpbWUgdGhlIHVzZSBvZiBzb2Z0cGlubmVkIDQ4YiBwZXItcHBHVFQgaXMgZ3Jvd2luZwo+ICh0 aGVyZWJ5IGVsaW1pbmF0aW5nIGFueSBuZWVkIHRvIHBlcmZvcm0gYW55IGV2aWN0aW9uIHNlYXJj aGVzLCBpbgo+IHRoZW9yeSBhdCBsZWFzdCkuCgpJJ3ZlIG5vdGljZWQgeW91IGRpZCBzb21lIGNo YW5nZXMgc2luY2UgSSBsYXN0IHJldmlld2VkIGl0LCBidXQgdGhlcmUgaXMgCm5vdCBjaGFuZ2Ug bG9nIHNvIEkgaGF2ZSB0byBmaW5kIHRoZW0gbWFudWFsbHkuIEFsc28sIHRoZSBvbmVzIHlvdSBk aWQgCm5vdCBkbyBJIHN1cHBvc2UgbWVhbnMgeW91IGRpc2FncmVlIHdpdGg/CgpPbiB0aGUgY29t bWl0IG1lc3NhZ2UgbXkgY29tbWVudCB3YXMgdGhhdCBJIHRoaW5rIHlvdSBzaG91bGQgbWVudGlv biB0aGUgCnJlbW92YWwgb2YgYWN0aXZlL2luYWN0aXZlIGxpc3RzIGluIGZhdm91ciBvZiBhIHNp bmdsZSBsaXN0LgoKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAg ICAgICAgICAgICB8IDEwICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZp Y3QuYyAgICAgICAgIHwgNzEgKysrKysrKysrKysrLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgICAgIHwgMTUgKystLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICAgICAgIHwgMjYgKy0tLS0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hyaW5rZXIuYyAgICAgIHwgIDggKystCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYyAgICAgICAgfCAgMyArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAgICAgIHwgMzcgKysrKystLS0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAgICAgICAgIHwgIDkg Ky0tCj4gICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jICAgfCAg NCArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIHwg IDIgKy0KPiAgIDEwIGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlvbnMoKyksIDEwMSBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCA4M2ZiMDJkYWIxOGMuLjZl ZDQ0YWVlZTU4MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yNTQsMTAgKzI1 NCw3IEBAIGk5MTVfZ2VtX2dldF9hcGVydHVyZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAo+ICAgCj4gICAJcGlubmVkID0gZ2d0dC0+dm0ucmVzZXJ2ZWQ7Cj4gICAJ bXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2 bWEsICZnZ3R0LT52bS5hY3RpdmVfbGlzdCwgdm1fbGluaykKPiAtCQlpZiAoaTkxNV92bWFfaXNf cGlubmVkKHZtYSkpCj4gLQkJCXBpbm5lZCArPSB2bWEtPm5vZGUuc2l6ZTsKPiAtCWxpc3RfZm9y X2VhY2hfZW50cnkodm1hLCAmZ2d0dC0+dm0uaW5hY3RpdmVfbGlzdCwgdm1fbGluaykKPiArCWxp c3RfZm9yX2VhY2hfZW50cnkodm1hLCAmZ2d0dC0+dm0uYm91bmRfbGlzdCwgdm1fbGluaykKPiAg IAkJaWYgKGk5MTVfdm1hX2lzX3Bpbm5lZCh2bWEpKQo+ICAgCQkJcGlubmVkICs9IHZtYS0+bm9k ZS5zaXplOwo+ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IEBAIC0xNTQw LDEzICsxNTM3LDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9idW1wX2luYWN0aXZl X2dndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAlHRU1fQlVHX09OKCFp OTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhvYmopKTsKPiAgIAo+ICAgCWZvcl9lYWNo X2dndHRfdm1hKHZtYSwgb2JqKSB7Cj4gLQkJaWYgKGk5MTVfdm1hX2lzX2FjdGl2ZSh2bWEpKQo+ IC0JCQljb250aW51ZTsKPiAtCj4gICAJCWlmICghZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEt Pm5vZGUpKQo+ICAgCQkJY29udGludWU7Cj4gICAKPiAtCQlsaXN0X21vdmVfdGFpbCgmdm1hLT52 bV9saW5rLCAmdm1hLT52bS0+aW5hY3RpdmVfbGlzdCk7Cj4gKwkJbGlzdF9tb3ZlX3RhaWwoJnZt YS0+dm1fbGluaywgJnZtYS0+dm0tPmJvdW5kX2xpc3QpOwo+ICAgCX0KPiAgIAo+ICAgCWk5MTUg PSB0b19pOTE1KG9iai0+YmFzZS5kZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ldmljdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXZp Y3QuYwo+IGluZGV4IDAyYjgzYTVlZDk2Yy4uYTc2ZjY1ZmU4NmJlIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V2aWN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ldmljdC5jCj4gQEAgLTEyNywxNCArMTI3LDEwIEBAIGk5MTVfZ2Vt X2V2aWN0X3NvbWV0aGluZyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB2bS0+aTkxNTsKPiAgIAlzdHJ1Y3QgZHJt X21tX3NjYW4gc2NhbjsKPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGV2aWN0aW9uX2xpc3Q7Cj4gLQlz dHJ1Y3QgbGlzdF9oZWFkICpwaGFzZXNbXSA9IHsKPiAtCQkmdm0tPmluYWN0aXZlX2xpc3QsCj4g LQkJJnZtLT5hY3RpdmVfbGlzdCwKPiAtCQlOVUxMLAo+IC0JfSwgKipwaGFzZTsKPiAgIAlzdHJ1 Y3QgaTkxNV92bWEgKnZtYSwgKm5leHQ7Cj4gICAJc3RydWN0IGRybV9tbV9ub2RlICpub2RlOwo+ ICAgCWVudW0gZHJtX21tX2luc2VydF9tb2RlIG1vZGU7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKmFj dGl2ZTsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmdm0tPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwoKVGhlcmUgaXMgdGhpcyBhIGNvbW1lbnQgYXJvdW5kIGhl cmUgbm90IHNob3duIGluIHRoZSBkaWZmIHdoaWNoIHRhbGtzIAphYm91dCBhY3RpdmUgYW5kIGlu YWN0aXZlIGxpc3RzLiBQbHVzIGl0IGlzIG1pc2xlYWRpbmcgb24gdGhlIGxpc3RzIApvcmRlcmlu ZyBub3cuCgo+IEBAIC0xNzAsMTcgKzE2Niw0NiBAQCBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmco c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gICAJICovCj4gICAJaWYgKCEoZmxhZ3Mg JiBQSU5fTk9OQkxPQ0spKQo+ICAgCQlpOTE1X3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Cj4g LQllbHNlCj4gLQkJcGhhc2VzWzFdID0gTlVMTDsKPiAgIAo+ICAgc2VhcmNoX2FnYWluOgo+ICsJ YWN0aXZlID0gTlVMTDsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZXZpY3Rpb25fbGlzdCk7Cj4gLQlw aGFzZSA9IHBoYXNlczsKPiAtCWRvIHsKPiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgKnBo YXNlLCB2bV9saW5rKQo+IC0JCQlpZiAobWFya19mcmVlKCZzY2FuLCB2bWEsIGZsYWdzLCAmZXZp Y3Rpb25fbGlzdCkpCj4gLQkJCQlnb3RvIGZvdW5kOwo+IC0JfSB3aGlsZSAoKisrcGhhc2UpOwo+ ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgbmV4dCwgJnZtLT5ib3VuZF9saXN0LCB2 bV9saW5rKSB7Cj4gKwkJLyoKPiArCQkgKiBXZSBrZWVwIHRoaXMgbGlzdCBpbiBhIHJvdWdoIGxl YXN0LXJlY2VudGx5IHNjYW5uZWQgb3JkZXIKPiArCQkgKiBvZiBhY3RpdmUgZWxlbWVudHMgKGlu YWN0aXZlIGVsZW1lbnRzIGFyZSBjaGVhcCB0byByZWFwKS4KPiArCQkgKiBOZXcgZW50cmllcyBh cmUgYWRkZWQgdG8gdGhlIGVuZCwgYW5kIHdlIG1vdmUgYW55dGhpbmcgd2UKPiArCQkgKiBzY2Fu IHRvIHRoZSBlbmQuIFRoZSBhc3N1bXB0aW9uIGlzIHRoYXQgdGhlIHdvcmtpbmcgc2V0Cj4gKwkJ ICogb2YgYXBwbGljYXRpb25zIGlzIGVpdGhlciBzdGVhZHkgc3RhdGUgKGFuZCB0aGFua3MgdG8g dGhlCj4gKwkJICogdXNlcnNwYWNlIGJvIGNhY2hlIGl0IGFsbW9zdCBhbHdheXMgaXMpIG9yIHZv bGF0aWxlIGFuZAo+ICsJCSAqIGZyZXF1ZW50bHkgcmVwbGFjZWQgYWZ0ZXIgYSBmcmFtZSwgd2hp Y2ggYXJlIHNlbGYtZXZpY3RpbmchCj4gKwkJICogR2l2ZW4gdGhhdCBhc3N1bXB0aW9uLCB0aGUg TVJVIG9yZGVyIG9mIHRoZSBzY2FuIGxpc3QgaXMKPiArCQkgKiBmYWlybHkgc3RhdGljLCBhbmQg a2VlcGluZyBpdCBpbiBsZWFzdC1yZWNlbnRseSBzY2FuIG9yZGVyCj4gKwkJICogaXMgc3VpdGFi bGUuCj4gKwkJICoKPiArCQkgKiBUbyBub3RpY2Ugd2hlbiB3ZSBjb21wbGV0ZSBvbmUgZnVsbCBj eWNsZSwgd2UgcmVjb3JkIHRoZQo+ICsJCSAqIGZpcnN0IGFjdGl2ZSBlbGVtZW50IHNlZW4sIGJl Zm9yZSBtb3ZpbmcgaXQgdG8gdGhlIHRhaWwuCj4gKwkJICovCgpUaGlzIGlzIG9uZSBjaGFuZ2Ug c2luY2UgdjEgSSBzcG90dGVkIGFuZCBpdCBpcyBhIGdvb2Qgb25lLgoKPiArCQlpZiAoaTkxNV92 bWFfaXNfYWN0aXZlKHZtYSkpIHsKPiArCQkJaWYgKHZtYSA9PSBhY3RpdmUpIHsKPiArCQkJCWlm IChmbGFncyAmIFBJTl9OT05CTE9DSykKPiArCQkJCQlicmVhazsKPiArCj4gKwkJCQlhY3RpdmUg PSBFUlJfUFRSKC1FQUdBSU4pOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAoYWN0aXZlICE9IEVSUl9Q VFIoLUVBR0FJTikpIHsKPiArCQkJCWlmICghYWN0aXZlKQo+ICsJCQkJCWFjdGl2ZSA9IHZtYTsK PiArCj4gKwkJCQlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAmdm0tPmJvdW5kX2xpc3Qp Owo+ICsJCQkJY29udGludWU7Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICsJCWlmIChtYXJrX2ZyZWUo JnNjYW4sIHZtYSwgZmxhZ3MsICZldmljdGlvbl9saXN0KSkKPiArCQkJZ290byBmb3VuZDsKPiAr CX0KPiAgIAo+ICAgCS8qIE5vdGhpbmcgZm91bmQsIGNsZWFuIHVwIGFuZCBiYWlsIG91dCEgKi8K PiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCBuZXh0LCAmZXZpY3Rpb25fbGlzdCwg ZXZpY3RfbGluaykgewo+IEBAIC0zODksMTEgKzQxNCw2IEBAIGludCBpOTE1X2dlbV9ldmljdF9m b3Jfbm9kZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgICAqLwo+ICAgaW50IGk5 MTVfZ2VtX2V2aWN0X3ZtKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAgewo+IC0J c3RydWN0IGxpc3RfaGVhZCAqcGhhc2VzW10gPSB7Cj4gLQkJJnZtLT5pbmFjdGl2ZV9saXN0LAo+ IC0JCSZ2bS0+YWN0aXZlX2xpc3QsCj4gLQkJTlVMTAo+IC0JfSwgKipwaGFzZTsKPiAgIAlzdHJ1 Y3QgbGlzdF9oZWFkIGV2aWN0aW9uX2xpc3Q7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWEsICpu ZXh0Owo+ICAgCWludCByZXQ7Cj4gQEAgLTQxMywxNiArNDMzLDEzIEBAIGludCBpOTE1X2dlbV9l dmljdF92bShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgIAl9Cj4gICAKPiAgIAlJ TklUX0xJU1RfSEVBRCgmZXZpY3Rpb25fbGlzdCk7Cj4gLQlwaGFzZSA9IHBoYXNlczsKPiAtCWRv IHsKPiAtCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgKnBoYXNlLCB2bV9saW5rKSB7Cj4gLQkJ CWlmIChpOTE1X3ZtYV9pc19waW5uZWQodm1hKSkKPiAtCQkJCWNvbnRpbnVlOwo+ICsJbGlzdF9m b3JfZWFjaF9lbnRyeSh2bWEsICZ2bS0+Ym91bmRfbGlzdCwgdm1fbGluaykgewo+ICsJCWlmIChp OTE1X3ZtYV9pc19waW5uZWQodm1hKSkKPiArCQkJY29udGludWU7Cj4gICAKPiAtCQkJX19pOTE1 X3ZtYV9waW4odm1hKTsKPiAtCQkJbGlzdF9hZGQoJnZtYS0+ZXZpY3RfbGluaywgJmV2aWN0aW9u X2xpc3QpOwo+IC0JCX0KPiAtCX0gd2hpbGUgKCorK3BoYXNlKTsKPiArCQlfX2k5MTVfdm1hX3Bp bih2bWEpOwo+ICsJCWxpc3RfYWRkKCZ2bWEtPmV2aWN0X2xpbmssICZldmljdGlvbl9saXN0KTsK PiArCX0KPiAgIAo+ICAgCXJldCA9IDA7Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZt YSwgbmV4dCwgJmV2aWN0aW9uX2xpc3QsIGV2aWN0X2xpbmspIHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwo+IGluZGV4IDQ1YzdjOGI2YzdjOC4uYWQ0ZWY4OTgwYjk3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtNDkyLDkgKzQ5Miw4IEBAIHN0YXRp YyB2b2lkIGk5MTVfYWRkcmVzc19zcGFjZV9pbml0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLCBpbnQgc3ViY2xhc3MpCj4gICAKPiAgIAlzdGFzaF9pbml0KCZ2bS0+ZnJlZV9wYWdlcyk7 Cj4gICAKPiAtCUlOSVRfTElTVF9IRUFEKCZ2bS0+YWN0aXZlX2xpc3QpOwo+IC0JSU5JVF9MSVNU X0hFQUQoJnZtLT5pbmFjdGl2ZV9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmdm0tPnVuYm91 bmRfbGlzdCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmdm0tPmJvdW5kX2xpc3QpOwo+ICAgfQo+ICAg Cj4gICBzdGF0aWMgdm9pZCBpOTE1X2FkZHJlc3Nfc3BhY2VfZmluaShzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSkKPiBAQCAtMjExMiw4ICsyMTExLDcgQEAgdm9pZCBpOTE1X3BwZ3R0X2Ns b3NlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAgc3RhdGljIHZvaWQgcHBndHRf ZGVzdHJveV92bWEoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICB7Cj4gICAJc3Ry dWN0IGxpc3RfaGVhZCAqcGhhc2VzW10gPSB7Cj4gLQkJJnZtLT5hY3RpdmVfbGlzdCwKPiAtCQkm dm0tPmluYWN0aXZlX2xpc3QsCj4gKwkJJnZtLT5ib3VuZF9saXN0LAo+ICAgCQkmdm0tPnVuYm91 bmRfbGlzdCwKPiAgIAkJTlVMTCwKPiAgIAl9LCAqKnBoYXNlOwo+IEBAIC0yMTM2LDggKzIxMzQs NyBAQCB2b2lkIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZikKPiAgIAo+ICAg CXBwZ3R0X2Rlc3Ryb3lfdm1hKCZwcGd0dC0+dm0pOwo+ICAgCj4gLQlHRU1fQlVHX09OKCFsaXN0 X2VtcHR5KCZwcGd0dC0+dm0uYWN0aXZlX2xpc3QpKTsKPiAtCUdFTV9CVUdfT04oIWxpc3RfZW1w dHkoJnBwZ3R0LT52bS5pbmFjdGl2ZV9saXN0KSk7Cj4gKwlHRU1fQlVHX09OKCFsaXN0X2VtcHR5 KCZwcGd0dC0+dm0uYm91bmRfbGlzdCkpOwo+ICAgCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnBw Z3R0LT52bS51bmJvdW5kX2xpc3QpKTsKPiAgIAo+ICAgCXBwZ3R0LT52bS5jbGVhbnVwKCZwcGd0 dC0+dm0pOwo+IEBAIC0yODAyLDggKzI3OTksNyBAQCB2b2lkIGk5MTVfZ2d0dF9jbGVhbnVwX2h3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAltdXRleF9sb2NrKCZkZXZf cHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAJaTkxNV9nZW1fZmluaV9hbGlhc2luZ19wcGd0 dChkZXZfcHJpdik7Cj4gICAKPiAtCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJmdndHQtPnZtLmFj dGl2ZV9saXN0KSk7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2biwgJmdndHQt PnZtLmluYWN0aXZlX2xpc3QsIHZtX2xpbmspCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo dm1hLCB2biwgJmdndHQtPnZtLmJvdW5kX2xpc3QsIHZtX2xpbmspCj4gICAJCVdBUk5fT04oaTkx NV92bWFfdW5iaW5kKHZtYSkpOwo+ICAgCj4gICAJaWYgKGRybV9tbV9ub2RlX2FsbG9jYXRlZCgm Z2d0dC0+ZXJyb3JfY2FwdHVyZSkpCj4gQEAgLTM1MTQsOCArMzUxMCw3IEBAIHZvaWQgaTkxNV9n ZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCWdndHQtPnZtLmNsb3NlZCA9IHRydWU7IC8qIHNraXAgcmV3cml0aW5nIFBURSBvbiBW TUEgdW5iaW5kICovCj4gICAKPiAgIAkvKiBjbGZsdXNoIG9iamVjdHMgYm91bmQgaW50byB0aGUg R0dUVCBhbmQgcmViaW5kIHRoZW0uICovCj4gLQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZnZ3R0 LT52bS5hY3RpdmVfbGlzdCkpOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZtYSwgdm4s ICZnZ3R0LT52bS5pbmFjdGl2ZV9saXN0LCB2bV9saW5rKSB7Cj4gKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUodm1hLCB2biwgJmdndHQtPnZtLmJvdW5kX2xpc3QsIHZtX2xpbmspIHsKPiAgIAkJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+ICAgCj4gICAJCWlm ICghKHZtYS0+ZmxhZ3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkpCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmgKPiBpbmRleCBhMDAzOWVhOTdjZGMuLmJkNjc5YzhjNTZkZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTI5OSwzMiArMjk5LDEyIEBAIHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ugewo+ICAgCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5 X3BvaW50ZXIgKnNjcmF0Y2hfcGRwOyAvKiBHRU44KyAmIDQ4YiBQUEdUVCAqLwo+ICAgCj4gICAJ LyoqCj4gLQkgKiBMaXN0IG9mIG9iamVjdHMgY3VycmVudGx5IGludm9sdmVkIGluIHJlbmRlcmlu Zy4KPiAtCSAqCj4gLQkgKiBJbmNsdWRlcyBidWZmZXJzIGhhdmluZyB0aGUgY29udGVudHMgb2Yg dGhlaXIgR1BVIGNhY2hlcwo+IC0JICogZmx1c2hlZCwgbm90IG5lY2Vzc2FyaWx5IHByaW1pdGl2 ZXMuIGxhc3RfcmVhZF9yZXEKPiAtCSAqIHJlcHJlc2VudHMgd2hlbiB0aGUgcmVuZGVyaW5nIGlu dm9sdmVkIHdpbGwgYmUgY29tcGxldGVkLgo+IC0JICoKPiAtCSAqIEEgcmVmZXJlbmNlIGlzIGhl bGQgb24gdGhlIGJ1ZmZlciB3aGlsZSBvbiB0aGlzIGxpc3QuCj4gKwkgKiBMaXN0IG9mIHZtYSBj dXJyZW50bHkgYm91bmQuCj4gICAJICovCj4gLQlzdHJ1Y3QgbGlzdF9oZWFkIGFjdGl2ZV9saXN0 Owo+ICsJc3RydWN0IGxpc3RfaGVhZCBib3VuZF9saXN0Owo+ICAgCj4gICAJLyoqCj4gLQkgKiBM UlUgbGlzdCBvZiBvYmplY3RzIHdoaWNoIGFyZSBub3QgaW4gdGhlIHJpbmdidWZmZXIgYW5kCj4g LQkgKiBhcmUgcmVhZHkgdG8gdW5iaW5kLCBidXQgYXJlIHN0aWxsIGluIHRoZSBHVFQuCj4gLQkg Kgo+IC0JICogbGFzdF9yZWFkX3JlcSBpcyBOVUxMIHdoaWxlIGFuIG9iamVjdCBpcyBpbiB0aGlz IGxpc3QuCj4gLQkgKgo+IC0JICogQSByZWZlcmVuY2UgaXMgbm90IGhlbGQgb24gdGhlIGJ1ZmZl ciB3aGlsZSBvbiB0aGlzIGxpc3QsCj4gLQkgKiBhcyBtZXJlbHkgYmVpbmcgR1RULWJvdW5kIHNo b3VsZG4ndCBwcmV2ZW50IGl0cyBiZWluZwo+IC0JICogZnJlZWQsIGFuZCB3ZSdsbCBwdWxsIGl0 IG9mZiB0aGUgbGlzdCBpbiB0aGUgZnJlZSBwYXRoLgo+IC0JICovCj4gLQlzdHJ1Y3QgbGlzdF9o ZWFkIGluYWN0aXZlX2xpc3Q7Cj4gLQo+IC0JLyoqCj4gLQkgKiBMaXN0IG9mIHZtYSB0aGF0IGhh dmUgYmVlbiB1bmJvdW5kLgo+IC0JICoKPiAtCSAqIEEgcmVmZXJlbmNlIGlzIG5vdCBoZWxkIG9u IHRoZSBidWZmZXIgd2hpbGUgb24gdGhpcyBsaXN0Lgo+ICsJICogTGlzdCBvZiB2bWEgdGhhdCBh cmUgbm90IHVuYm91bmQuCj4gICAJICovCj4gICAJc3RydWN0IGxpc3RfaGVhZCB1bmJvdW5kX2xp c3Q7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc2hy aW5rZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3Nocmlua2VyLmMKPiBpbmRl eCBlOWE3OTA1OWJjNDMuLjE1MzE1MzRlZWEwMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fc2hyaW5rZXIuYwo+IEBAIC00OTAsOSArNDkwLDEzIEBAIGk5MTVfZ2VtX3Nocmlu a2VyX3ZtYXAoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyBldmVudCwg dm9pZCAqcHRyCj4gICAKPiAgIAkvKiBXZSBhbHNvIHdhbnQgdG8gY2xlYXIgYW55IGNhY2hlZCBp b21hcHMgYXMgdGhleSB3cmFwIHZtYXAgKi8KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUo dm1hLCBuZXh0LAo+IC0JCQkJICZpOTE1LT5nZ3R0LnZtLmluYWN0aXZlX2xpc3QsIHZtX2xpbmsp IHsKPiArCQkJCSAmaTkxNS0+Z2d0dC52bS5ib3VuZF9saXN0LCB2bV9saW5rKSB7Cj4gICAJCXVu c2lnbmVkIGxvbmcgY291bnQgPSB2bWEtPm5vZGUuc2l6ZSA+PiBQQUdFX1NISUZUOwo+IC0JCWlm ICh2bWEtPmlvbWFwICYmIGk5MTVfdm1hX3VuYmluZCh2bWEpID09IDApCj4gKwo+ICsJCWlmICgh dm1hLT5pb21hcCB8fCBpOTE1X3ZtYV9pc19hY3RpdmUodm1hKSkKPiArCQkJY29udGludWU7Cj4g Kwo+ICsJCWlmIChpOTE1X3ZtYV91bmJpbmQodm1hKSA9PSAwKQo+ICAgCQkJZnJlZWRfcGFnZXMg Kz0gY291bnQ7Cj4gICAJfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVu LmMKPiBpbmRleCAyZjc1NmE5NzY4OWEuLjc1Yjk3ZDcxZjA3MiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9sZW4uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCj4gQEAgLTcwMiw3ICs3MDIsOCBAQCBpOTE1X2dlbV9v YmplY3RfY3JlYXRlX3N0b2xlbl9mb3JfcHJlYWxsb2NhdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdgo+ICAgCXZtYS0+cGFnZXMgPSBvYmotPm1tLnBhZ2VzOwo+ICAgCXZtYS0+ ZmxhZ3MgfD0gSTkxNV9WTUFfR0xPQkFMX0JJTkQ7Cj4gICAJX19pOTE1X3ZtYV9zZXRfbWFwX2Fu ZF9mZW5jZWFibGUodm1hKTsKPiAtCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZnZ3R0 LT52bS5pbmFjdGl2ZV9saXN0KTsKPiArCj4gKwlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5r LCAmZ2d0dC0+dm0uYm91bmRfbGlzdCk7Cj4gICAKPiAgIAlzcGluX2xvY2soJmRldl9wcml2LT5t bS5vYmpfbG9jayk7Cj4gICAJbGlzdF9tb3ZlX3RhaWwoJm9iai0+bW0ubGluaywgJmRldl9wcml2 LT5tbS5ib3VuZF9saXN0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBp bmRleCA1NTMzYTc0MWFiZWIuLjZlOTc1YzQzZGFlOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9ncHVfZXJyb3IuYwo+IEBAIC0xMTI0LDcgKzExMjQsNyBAQCBzdGF0aWMgdm9pZCBjYXB0 dXJlX2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmVyciwKPiAgIAo+ICAgc3RhdGlj IHUzMiBjYXB0dXJlX2Vycm9yX2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmVyciwK PiAgIAkJCSAgICBpbnQgY291bnQsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQsCj4gLQkJCSAgICBi b29sIHBpbm5lZF9vbmx5KQo+ICsJCQkgICAgYm9vbCBhY3RpdmVfb25seSwgYm9vbCBwaW5uZWRf b25seSkKCkhlcmUgSSBzdWdnZXN0ZWQgaGF2aW5nIGZsYWdzIGluc3RlYWQgb2YgdHdvIGJvb2xl YW5zIHdvdWxkIGJlIG1vcmUgCnJlYWRhYmxlIGF0IHRoZSBjYWxsIHNpdGVzLgoKPiAgIHsKPiAg IAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAlpbnQgaSA9IDA7Cj4gQEAgLTExMzMsNiArMTEz Myw5IEBAIHN0YXRpYyB1MzIgY2FwdHVyZV9lcnJvcl9ibyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jf YnVmZmVyICplcnIsCj4gICAJCWlmICghdm1hLT5vYmopCj4gICAJCQljb250aW51ZTsKPiAgIAo+ ICsJCWlmIChhY3RpdmVfb25seSAmJiAhaTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpCj4gKwkJCWNv bnRpbnVlOwo+ICsKPiAgIAkJaWYgKHBpbm5lZF9vbmx5ICYmICFpOTE1X3ZtYV9pc19waW5uZWQo dm1hKSkKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gQEAgLTE2MTAsMTQgKzE2MTMsMTYgQEAgc3Rh dGljIHZvaWQgZ2VtX2NhcHR1cmVfdm0oc3RydWN0IGk5MTVfZ3B1X3N0YXRlICplcnJvciwKPiAg IAlpbnQgY291bnQ7Cj4gICAKPiAgIAljb3VudCA9IDA7Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHZtYSwgJnZtLT5hY3RpdmVfbGlzdCwgdm1fbGluaykKPiAtCQljb3VudCsrOwo+ICsJbGlzdF9m b3JfZWFjaF9lbnRyeSh2bWEsICZ2bS0+Ym91bmRfbGlzdCwgdm1fbGluaykKPiArCQlpZiAoaTkx NV92bWFfaXNfYWN0aXZlKHZtYSkpCj4gKwkJCWNvdW50Kys7Cj4gICAKPiAgIAlhY3RpdmVfYm8g PSBOVUxMOwo+ICAgCWlmIChjb3VudCkKPiAgIAkJYWN0aXZlX2JvID0ga2NhbGxvYyhjb3VudCwg c2l6ZW9mKCphY3RpdmVfYm8pLCBHRlBfQVRPTUlDKTsKPiAgIAlpZiAoYWN0aXZlX2JvKQo+IC0J CWNvdW50ID0gY2FwdHVyZV9lcnJvcl9ibyhhY3RpdmVfYm8sIGNvdW50LCAmdm0tPmFjdGl2ZV9s aXN0LCBmYWxzZSk7Cj4gKwkJY291bnQgPSBjYXB0dXJlX2Vycm9yX2JvKGFjdGl2ZV9ibywgY291 bnQsICZ2bS0+Ym91bmRfbGlzdCwKPiArCQkJCQkgdHJ1ZSwgZmFsc2UpOwo+ICAgCWVsc2UKPiAg IAkJY291bnQgPSAwOwo+ICAgCj4gQEAgLTE2NTUsMjggKzE2NjAsMjAgQEAgc3RhdGljIHZvaWQg Y2FwdHVyZV9waW5uZWRfYnVmZmVycyhzdHJ1Y3QgaTkxNV9ncHVfc3RhdGUgKmVycm9yKQo+ICAg CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmVycm9yLT5pOTE1LT5nZ3R0LnZtOwo+ ICAgCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmJvOwo+ICAgCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwo+IC0JaW50IGNvdW50X2luYWN0aXZlLCBjb3VudF9hY3RpdmU7Cj4gLQo+IC0JY291 bnRfaW5hY3RpdmUgPSAwOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZ2bS0+aW5hY3Rp dmVfbGlzdCwgdm1fbGluaykKPiAtCQljb3VudF9pbmFjdGl2ZSsrOwo+ICsJaW50IGNvdW50Owo+ ICAgCj4gLQljb3VudF9hY3RpdmUgPSAwOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZ2 bS0+YWN0aXZlX2xpc3QsIHZtX2xpbmspCj4gLQkJY291bnRfYWN0aXZlKys7Cj4gKwljb3VudCA9 IDA7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJnZtLT5ib3VuZF9saXN0LCB2bV9saW5r KQo+ICsJCWNvdW50Kys7Cj4gICAKPiAgIAlibyA9IE5VTEw7Cj4gLQlpZiAoY291bnRfaW5hY3Rp dmUgKyBjb3VudF9hY3RpdmUpCj4gLQkJYm8gPSBrY2FsbG9jKGNvdW50X2luYWN0aXZlICsgY291 bnRfYWN0aXZlLAo+IC0JCQkgICAgIHNpemVvZigqYm8pLCBHRlBfQVRPTUlDKTsKPiArCWlmIChj b3VudCkKPiArCQlibyA9IGtjYWxsb2MoY291bnQsIHNpemVvZigqYm8pLCBHRlBfQVRPTUlDKTsK PiAgIAlpZiAoIWJvKQo+ICAgCQlyZXR1cm47Cj4gICAKPiAtCWNvdW50X2luYWN0aXZlID0gY2Fw dHVyZV9lcnJvcl9ibyhibywgY291bnRfaW5hY3RpdmUsCj4gLQkJCQkJICAmdm0tPmFjdGl2ZV9s aXN0LCB0cnVlKTsKPiAtCWNvdW50X2FjdGl2ZSA9IGNhcHR1cmVfZXJyb3JfYm8oYm8gKyBjb3Vu dF9pbmFjdGl2ZSwgY291bnRfYWN0aXZlLAo+IC0JCQkJCSZ2bS0+aW5hY3RpdmVfbGlzdCwgdHJ1 ZSk7Cj4gLQllcnJvci0+cGlubmVkX2JvX2NvdW50ID0gY291bnRfaW5hY3RpdmUgKyBjb3VudF9h Y3RpdmU7Cj4gKwllcnJvci0+cGlubmVkX2JvX2NvdW50ID0KPiArCQljYXB0dXJlX2Vycm9yX2Jv KGJvLCBjb3VudCwgJnZtLT5ib3VuZF9saXN0LCBmYWxzZSwgdHJ1ZSk7Cj4gICAJZXJyb3ItPnBp bm5lZF9ibyA9IGJvOwo+ICAgfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4gaW5kZXgg NWI0ZDc4Y2RiNGNhLi43ZGUyOGJhZmZiOGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV92bWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMK PiBAQCAtNzksOSArNzksNiBAQCBfX2k5MTVfdm1hX3JldGlyZShzdHJ1Y3QgaTkxNV92bWEgKnZt YSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gICAJaWYgKC0tdm1hLT5hY3RpdmVfY291bnQp Cj4gICAJCXJldHVybjsKPiAgIAo+IC0JR0VNX0JVR19PTighZHJtX21tX25vZGVfYWxsb2NhdGVk KCZ2bWEtPm5vZGUpKTsKPiAtCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZ2bWEtPnZt LT5pbmFjdGl2ZV9saXN0KTsKPiAtCj4gICAJR0VNX0JVR19PTighaTkxNV9nZW1fb2JqZWN0X2lz X2FjdGl2ZShvYmopKTsKPiAgIAlpZiAoLS1vYmotPmFjdGl2ZV9jb3VudCkKPiAgIAkJcmV0dXJu Owo+IEBAIC02NTksNyArNjU2LDcgQEAgaTkxNV92bWFfaW5zZXJ0KHN0cnVjdCBpOTE1X3ZtYSAq dm1hLCB1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKQo+ICAgCUdFTV9CVUdfT04o IWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSk7Cj4gICAJR0VNX0JVR19PTighaTkx NV9nZW1fdmFsaWRfZ3R0X3NwYWNlKHZtYSwgY2FjaGVfbGV2ZWwpKTsKPiAgIAo+IC0JbGlzdF9t b3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmluYWN0aXZlX2xpc3QpOwo+ICsJbGlz dF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmJvdW5kX2xpc3QpOwo+ICAgCj4g ICAJaWYgKHZtYS0+b2JqKSB7Cj4gICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSB2bWEtPm9iajsKPiBAQCAtMTAwMywxMCArMTAwMCw4IEBAIGludCBpOTE1X3ZtYV9tb3ZlX3Rv X2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgIAkgKiBhZGQgdGhlIGFjdGl2ZSByZWZl cmVuY2UgZmlyc3QgYW5kIHF1ZXVlIGZvciBpdCB0byBiZSBkcm9wcGVkCj4gICAJICogKmxhc3Qq Lgo+ICAgCSAqLwo+IC0JaWYgKCFpOTE1X2dlbV9hY3RpdmVfaXNzZXQoYWN0aXZlKSAmJiAhdm1h LT5hY3RpdmVfY291bnQrKykgewo+IC0JCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZ2 bWEtPnZtLT5hY3RpdmVfbGlzdCk7Cj4gKwlpZiAoIWk5MTVfZ2VtX2FjdGl2ZV9pc3NldChhY3Rp dmUpICYmICF2bWEtPmFjdGl2ZV9jb3VudCsrKQo+ICAgCQlvYmotPmFjdGl2ZV9jb3VudCsrOwo+ IC0JfQo+ICAgCWk5MTVfZ2VtX2FjdGl2ZV9zZXQoYWN0aXZlLCBycSk7Cj4gICAJR0VNX0JVR19P TighaTkxNV92bWFfaXNfYWN0aXZlKHZtYSkpOwo+ICAgCUdFTV9CVUdfT04oIW9iai0+YWN0aXZl X2NvdW50KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2V2aWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1f ZXZpY3QuYwo+IGluZGV4IGUxZmY2YTFjMmNiMC4uOWQwZmU4YWFjMjE5IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ldmljdC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2V2aWN0LmMKPiBAQCAtNTcs NyArNTcsNyBAQCBzdGF0aWMgaW50IHBvcHVsYXRlX2dndHQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAgCX0KPiAgIAo+IC0JaWYgKGxpc3Rf ZW1wdHkoJmk5MTUtPmdndHQudm0uaW5hY3RpdmVfbGlzdCkpIHsKPiArCWlmIChsaXN0X2VtcHR5 KCZpOTE1LT5nZ3R0LnZtLmJvdW5kX2xpc3QpKSB7Cj4gICAJCXByX2VycigiTm8gb2JqZWN0cyBv biB0aGUgR0dUVCBpbmFjdGl2ZSBsaXN0IVxuIik7Cj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAg CX0KPiBAQCAtNjksNyArNjksNyBAQCBzdGF0aWMgdm9pZCB1bnBpbl9nZ3R0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAg Cj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJmk5MTUtPmdndHQudm0uaW5hY3RpdmVfbGlz dCwgdm1fbGluaykKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmaTkxNS0+Z2d0dC52bS5i b3VuZF9saXN0LCB2bV9saW5rKQo+ICAgCQlpOTE1X3ZtYV91bnBpbih2bWEpOwo+ICAgfQo+ICAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9n dHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+IGlu ZGV4IGZlYThhYjE0ZTc5ZC4uODUyYjA2Y2I1MGEwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwo+IEBAIC0xMjM3LDcgKzEyMzcsNyBAQCBz dGF0aWMgdm9pZCB0cmFja192bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgIAlfX2k5 MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPiAgIAo+ICAgCXZtYS0+cGFnZXMgPSBvYmot Pm1tLnBhZ2VzOwo+IC0JbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0tPmlu YWN0aXZlX2xpc3QpOwo+ICsJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZtYS0+dm0t PmJvdW5kX2xpc3QpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IGV4ZXJjaXNlX21vY2soc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gCgpUaGUgcmVzdCBsb29rcyBva2F5LgoKUmVn YXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK