From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Infrastructure for supporting different GGTT views per object Date: Fri, 28 Nov 2014 18:31:06 +0100 Message-ID: <20141128173106.GF32117@phenom.ffwll.local> References: <1415284765-25613-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1417099964-30386-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by gabe.freedesktop.org (Postfix) with ESMTP id F40556EF2A for ; Fri, 28 Nov 2014 09:30:40 -0800 (PST) Received: by mail-wg0-f53.google.com with SMTP id l18so9197037wgh.26 for ; Fri, 28 Nov 2014 09:30:40 -0800 (PST) Content-Disposition: inline In-Reply-To: <1417099964-30386-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Daniel Vetter , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMjcsIDIwMTQgYXQgMDI6NTI6NDRQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBUaGluZ3MgbGlrZSByZWxpYWJsZSBHR1RUIG1hcHBpbmdzIGFuZCBtaXJyb3JlZCAyZC1v bi0zZCBkaXNwbGF5IHdpbGwgbmVlZAo+IHRvIG1hcCBvYmplY3RzIGludG8gdGhlIHNhbWUgYWRk cmVzcyBzcGFjZSBtdWx0aXBsZSB0aW1lcy4KPiAKPiBBZGRlZCBhIEdHVFQgdmlldyBjb25jZXB0 IGFuZCBsaW5rZWQgaXQgd2l0aCB0aGUgVk1BIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KPiBtdWx0 aXBsZSBpbnN0YW5jZXMgcGVyIGFkZHJlc3Mgc3BhY2UuCj4gCj4gTmV3IG9iamVjdHMgYW5kIEdF TSBmdW5jdGlvbnMgd2hpY2ggZG8gbm90IHRha2UgdGhpcyBuZXcgdmlldyBhcyBhIHBhcmFtZXRl cgo+IGFzc3VtZSB0aGUgZGVmYXVsdCBvZiB6ZXJvIChJOTE1X0dHVFRfVklFV19OT1JNQUwpIHdo aWNoIHByZXNlcnZlcyB0aGUKPiBwcmV2aW91cyBiZWhhdmlvdXIuCj4gCj4gVGhpcyBub3cgbWVh bnMgdGhhdCBvYmplY3RzIGNhbiBoYXZlIG11bHRpcGxlIFZNQSBlbnRyaWVzIHNvIHRoZSBjb2Rl IHdoaWNoCj4gYXNzdW1lZCB0aGVyZSB3aWxsIG9ubHkgYmUgb25lIGFsc28gaGFkIHRvIGJlIG1v ZGlmaWVkLgo+IAo+IEFsdGVybmF0aXZlIEdHVFQgdmlld3MgYXJlIHN1cHBvc2VkIHRvIGJvcnJv dyBETUEgYWRkcmVzc2VzIGZyb20gb2JqLT5wYWdlcwo+IHdoaWNoIGlzIERNQSBtYXBwZWQgb24g Zmlyc3QgVk1BIGluc3RhbnRpYXRpb24gYW5kIHVubWFwcGVkIG9uIHRoZSBsYXN0IG9uZQo+IGdv aW5nIGF3YXkuCj4gCj4gdjI6Cj4gICAgICogUmVtb3ZlZCBwZXIgdmlldyBzcGVjaWFsIGNhc2lu ZyBpbiBpOTE1X2dlbV9nZ3R0X3ByZXBhcmUgLwo+ICAgICAgIGZpbmlzaF9vYmplY3QgaW4gZmF2 b3VyIG9mIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIERNQSBtYXBwaW5ncwo+ICAgICAgIG9uIGZp cnN0IFZNQSBpbnN0YW50aWF0aW9uIGFuZCBsYXN0IFZNQSBkZXN0cnVjdGlvbi4gKERhbmllbCBW ZXR0ZXIpCj4gICAgICogU2ltcGxpZmllZCBpOTE1X3ZtYV91bmJpbmQgd2hpY2ggZG9lcyBub3Qg bmVlZCB0byBjb3VudCB0aGUgR0dUVCB2aWV3cy4KPiAgICAgICAoRGFuaWVsIFZldHRlcikKPiAg ICAgKiBBbHNvIG1vdmVkIG9iai0+bWFwX2FuZF9mZW5jZWFibGUgcmVzZXQgdW5kZXIgdGhlIHNh bWUgY2hlY2suCj4gICAgICogQ2hlY2twYXRjaCBjbGVhbnVwcy4KPiAKPiBJc3N1ZTogVklaLTQ1 NDQKPiBTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKbGd0bSBv dmVyYWxsLiBQbGVhc2UgZmluZCBzb21lb25lIGZvciBkZXRhaWxlZCByZXZpZXcgZm9yIGtub3ds ZWRnZQpzaGFyaW5nIChzbyBkaWZmZXJlbnQgZ2VvL3RlYW0pLgoKQSBmZXcgY29tZW1udHMgYW5k IHF1ZXN0aW9ucyBiZWxvdyBzdGlsbC4gQWxzbyBjb3VsZCB5b3UgcGxlYXNlIGRvIGEKZm9sbG93 LXVwIHBhdGNoIHdoaWNoIGFkZHMgYSBET0M6IHNlY3Rpb24gd2l0aCBhIHNob3J0IGV4bGFuYXRp b24gb2YgZ3R0CnZpZXdzIGFuZCBwdWxscyBpdCBpbnRvIHRoZSBpOTE1IGRvY2Jvb2sgdGVtcGxh dGU/IFdlIG5lZWQgdG8gc3RhcnQKc29tZXdoZXJlIHdpdGggZ2VtIGRvY3MgLi4uCgpDaGVlcnMs IERhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAg ICAgIHwgIDUgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAg IHwgNDYgKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jICAgICAgICAgICAgfCA3MyArKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAgIHwgIDQgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDQgKy0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgNjEgKysrKysrKysrKysrKysrKysr Ky0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgICAgICAgfCAy MiArKysrKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICAg IHwgIDggKy0tLQo+ICA4IGZpbGVzIGNoYW5nZWQsIDE1OSBpbnNlcnRpb25zKCspLCA2NCBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDMxOWRh NjEuLjFhOTU2OWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0x NTQsOCArMTU0LDkgQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgCQkJc2VxX3B1dHMobSwgIiAocHAiKTsKPiAgCQll bHNlCj4gIAkJCXNlcV9wdXRzKG0sICIgKGciKTsKPiAtCQlzZXFfcHJpbnRmKG0sICJndHQgb2Zm c2V0OiAlMDhseCwgc2l6ZTogJTA4bHgpIiwKPiAtCQkJICAgdm1hLT5ub2RlLnN0YXJ0LCB2bWEt Pm5vZGUuc2l6ZSk7Cj4gKwkJc2VxX3ByaW50ZihtLCAiZ3R0IG9mZnNldDogJTA4bHgsIHNpemU6 ICUwOGx4LCB0eXBlOiAldSkiLAo+ICsJCQkgICB2bWEtPm5vZGUuc3RhcnQsIHZtYS0+bm9kZS5z aXplLAo+ICsJCQkgICB2bWEtPmdndHRfdmlldy50eXBlKTsKPiAgCX0KPiAgCWlmIChvYmotPnN0 b2xlbikKPiAgCQlzZXFfcHJpbnRmKG0sICIgKHN0b2xlbjogJTA4bHgpIiwgb2JqLT5zdG9sZW4t PnN0YXJ0KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBjNGYyY2I2Li42MjUwYTJj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTI1MDEsMTAgKzI1MDEsMjMgQEAg dm9pZCBpOTE1X2dlbV92bWFfZGVzdHJveShzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7Cj4gICNkZWZp bmUgUElOX0dMT0JBTCAweDQKPiAgI2RlZmluZSBQSU5fT0ZGU0VUX0JJQVMgMHg4Cj4gICNkZWZp bmUgUElOX09GRlNFVF9NQVNLICh+NDA5NSkKPiAraW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9v YmplY3RfcGluX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJCQkg IHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkJCSAgdWludDMyX3QgYWxpZ25t ZW50LAo+ICsJCQkJCSAgdWludDY0X3QgZmxhZ3MsCj4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgaTkx NV9nZ3R0X3ZpZXcgKnZpZXcpOwo+ICtzdGF0aWMgaW5saW5lCj4gIGludCBfX211c3RfY2hlY2sg aTkxNV9nZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJ CQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgCQkJCSAgICAgdWludDMy X3QgYWxpZ25tZW50LAo+IC0JCQkJICAgICB1aW50NjRfdCBmbGFncyk7Cj4gKwkJCQkgICAgIHVp bnQ2NF90IGZsYWdzKQo+ICt7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X3Bpbl92aWV3KG9i aiwgdm0sIGFsaWdubWVudCwgZmxhZ3MsCj4gKwkJCQkJCSZpOTE1X2dndHRfdmlld19ub3JtYWwp Owo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfdm1hX2JpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEsIGVu dW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKPiArCQkgICB1MzIgZmxhZ3MpOwo+ICBp bnQgX19tdXN0X2NoZWNrIGk5MTVfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7Cj4g IGludCBpOTE1X2dlbV9vYmplY3RfcHV0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopOwo+ICB2b2lkIGk5MTVfZ2VtX3JlbGVhc2VfYWxsX21tYXBzKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4gQEAgLTI2NTYsMTggKzI2NjksNDMgQEAgc3RydWN0IGRt YV9idWYgKmk5MTVfZ2VtX3ByaW1lX2V4cG9ydChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAK PiAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK PiAgCj4gK3Vuc2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX29mZnNldF92aWV3KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvLAo+ICsJCQkJICAgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtLAo+ICsJCQkJICAgICAgIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KTsKPiAr c3RhdGljIGlubGluZQo+ICB1bnNpZ25lZCBsb25nIGk5MTVfZ2VtX29ial9vZmZzZXQoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gLQkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtKTsKPiArCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gK3sKPiAr CXJldHVybiBpOTE1X2dlbV9vYmpfb2Zmc2V0X3ZpZXcobywgdm0sIEk5MTVfR0dUVF9WSUVXX05P Uk1BTCk7Cj4gK30KPiAgYm9vbCBpOTE1X2dlbV9vYmpfYm91bmRfYW55KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvKTsKPiAgYm9vbCBpOTE1X2dlbV9vYmpfYm91bmQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm8sCj4gIAkJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsK PiAgdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqbywKPiAgCQkJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKPiArc3RydWN0 IGk5MTVfdm1hICppOTE1X2dlbV9vYmpfdG9fdm1hX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiArCQkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJ CQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPiArc3RhdGljIGlubGlu ZQo+ICBzdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29ial90b192bWEoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pOwo+ICsJCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiArewo+ICsJ cmV0dXJuIGk5MTVfZ2VtX29ial90b192bWFfdmlldyhvYmosIHZtLCAmaTkxNV9nZ3R0X3ZpZXdf bm9ybWFsKTsKPiArfQo+ICsKPiArc3RydWN0IGk5MTVfdm1hICoKPiAraTkxNV9nZW1fb2JqX2xv b2t1cF9vcl9jcmVhdGVfdm1hX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiArCQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkJCSAgICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+ICsKPiArc3RhdGljIGlubGlu ZQo+ICBzdHJ1Y3QgaTkxNV92bWEgKgo+ICBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92 bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pOwo+ICsJCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSkKPiArewo+ICsJcmV0dXJuIGk5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRlX3ZtYV92aWV3 KG9iaiwgdm0sCj4gKwkJCQkJCSZpOTE1X2dndHRfdmlld19ub3JtYWwpOwo+ICt9Cj4gIAo+ICBz dHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29ial90b19nZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmopOwo+ICBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fb2JqX2lzX3Bpbm5l ZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCj4gaW5kZXggODZjZjQyOC4uNjIxM2MwNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Ywo+IEBAIC0yMDkwLDggKzIwOTAsNyBAQCBpOTE1X2dlbV9zaHJpbmsoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkvKiBGb3IgdGhlIHVuYm91bmQgcGhhc2UsIHRoaXMg c2hvdWxkIGJlIGEgbm8tb3AhICovCj4gIAkJCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2bWEs IHYsCj4gIAkJCQkJCSAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspCj4gLQkJCQlpZiAoaTkxNV92 bWFfdW5iaW5kKHZtYSkpCj4gLQkJCQkJYnJlYWs7Cj4gKwkJCQlpOTE1X3ZtYV91bmJpbmQodm1h KTsKCldoeSBkcm9wIHRoZSBlYXJseSBicmVhayBpZiBhIHZtYV91bmJpbmQgZmFpbHM/IExvb2tz IGxpa2UgYSBzdXBlcmZsb3VzCmh1bmsgdG8gbWUuCgo+ICAKPiAgCQkJaWYgKGk5MTVfZ2VtX29i amVjdF9wdXRfcGFnZXMob2JqKSA9PSAwKQo+ICAJCQkJY291bnQgKz0gb2JqLT5iYXNlLnNpemUg Pj4gUEFHRV9TSElGVDsKPiBAQCAtMjI5MiwxNyArMjI5MSwxNCBAQCB2b2lkIGk5MTVfdm1hX21v dmVfdG9fYWN0aXZlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICBzdGF0aWMgdm9pZAo+ICBpOTE1 X2dlbV9vYmplY3RfbW92ZV90b19pbmFjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvYmotPmJh c2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtOwo+ ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAo+ICAJQlVHX09OKG9iai0+YmFzZS53cml0ZV9k b21haW4gJiB+STkxNV9HRU1fR1BVX0RPTUFJTlMpOwo+ICAJQlVHX09OKCFvYmotPmFjdGl2ZSk7 Cj4gIAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bSwgJmRldl9wcml2LT52bV9saXN0LCBnbG9i YWxfbGluaykgewo+IC0JCXZtYSA9IGk5MTVfZ2VtX29ial90b192bWEob2JqLCB2bSk7Cj4gLQkJ aWYgKHZtYSAmJiAhbGlzdF9lbXB0eSgmdm1hLT5tbV9saXN0KSkKPiAtCQkJbGlzdF9tb3ZlX3Rh aWwoJnZtYS0+bW1fbGlzdCwgJnZtLT5pbmFjdGl2ZV9saXN0KTsKPiArCWxpc3RfZm9yX2VhY2hf ZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspIHsKPiArCQlpZiAoIWxpc3RfZW1w dHkoJnZtYS0+bW1fbGlzdCkpCj4gKwkJCWxpc3RfbW92ZV90YWlsKCZ2bWEtPm1tX2xpc3QsICZ2 bWEtPnZtLT5pbmFjdGl2ZV9saXN0KTsKPiAgCX0KPiAgCj4gIAlpbnRlbF9mYl9vYmpfZmx1c2go b2JqLCB0cnVlKTsKPiBAQCAtMzA0Myw3ICszMDM5LDggQEAgaW50IGk5MTVfdm1hX3VuYmluZChz dHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCS8qIFRocm93IGF3YXkgdGhlIGFjdGl2ZSByZWZlcmVu Y2UgYmVmb3JlIG1vdmluZyB0byB0aGUgdW5ib3VuZCBsaXN0ICovCj4gIAlpOTE1X2dlbV9vYmpl Y3RfcmV0aXJlKG9iaik7Cj4gIAo+IC0JaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSkgewo+ICsJ aWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJgo+ICsJICAgIHZtYS0+Z2d0dF92aWV3LnR5cGUg PT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKSB7Cj4gIAkJaTkxNV9nZW1fb2JqZWN0X2ZpbmlzaF9n dHQob2JqKTsKCklmIGFueW9uZSBhZGRzIHN1Ym9iamVjdCBndHQgbW1hcCBmYXVsdCBzdXBwb3J0 IHdlJ2xsIG5lZWQgdG8gdW5kbyB0aGlzCmFnYWluLCBidXQgbWFrZXMgc2Vuc2UgZm9yIHRoZSBj dXJyZW50IHVzZWNhc2UuIFNvIGltbyBvayBlaXRoZXIgd2F5IHJpZ2h0Cm5vdy4KCj4gIAo+ICAJ CS8qIHJlbGVhc2UgdGhlIGZlbmNlIHJlZyBfYWZ0ZXJfIGZsdXNoaW5nICovCj4gQEAgLTMwNTcs NyArMzA1NCw4IEBAIGludCBpOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4g IAl2bWEtPnVuYmluZF92bWEodm1hKTsKPiAgCj4gIAlsaXN0X2RlbF9pbml0KCZ2bWEtPm1tX2xp c3QpOwo+IC0JaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSkKPiArCWlmIChpOTE1X2lzX2dndHQo dm1hLT52bSkgJiYKPiArCSAgICB2bWEtPmdndHRfdmlldy50eXBlID09IEk5MTVfR0dUVF9WSUVX X05PUk1BTCkKPiAgCQlvYmotPm1hcF9hbmRfZmVuY2VhYmxlID0gZmFsc2U7CgpTYW1lIGhlcmUu Cgo+ICAKPiAgCWRybV9tbV9yZW1vdmVfbm9kZSgmdm1hLT5ub2RlKTsKPiBAQCAtMzQ3Niw3ICsz NDc0LDggQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqCj4gIGk5MTVfZ2VtX29iamVjdF9iaW5k X3RvX3ZtKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJCSAgIHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICAJCQkgICB1bnNpZ25lZCBhbGlnbm1lbnQsCj4gLQkJ CSAgIHVpbnQ2NF90IGZsYWdzKQo+ICsJCQkgICB1aW50NjRfdCBmbGFncywKPiArCQkJICAgY29u c3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gQEAgLTM1MjYsNyArMzUyNSw3IEBAIGk5MTVfZ2Vt X29iamVjdF9iaW5kX3RvX3ZtKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAo+ ICAJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+ICAKPiAtCXZtYSA9IGk5MTVfZ2Vt X29ial9sb29rdXBfb3JfY3JlYXRlX3ZtYShvYmosIHZtKTsKPiArCXZtYSA9IGk5MTVfZ2VtX29i al9sb29rdXBfb3JfY3JlYXRlX3ZtYV92aWV3KG9iaiwgdm0sIHZpZXcpOwo+ICAJaWYgKElTX0VS Uih2bWEpKQo+ICAJCWdvdG8gZXJyX3VucGluOwo+ICAKPiBAQCAtMzU2MCw3ICszNTU5LDcgQEAg c2VhcmNoX2ZyZWU6Cj4gIAlsaXN0X2FkZF90YWlsKCZ2bWEtPm1tX2xpc3QsICZ2bS0+aW5hY3Rp dmVfbGlzdCk7Cj4gIAo+ICAJdHJhY2VfaTkxNV92bWFfYmluZCh2bWEsIGZsYWdzKTsKPiAtCXZt YS0+YmluZF92bWEodm1hLCBvYmotPmNhY2hlX2xldmVsLAo+ICsJaTkxNV92bWFfYmluZCh2bWEs IG9iai0+Y2FjaGVfbGV2ZWwsCj4gIAkJICAgICAgZmxhZ3MgJiBQSU5fR0xPQkFMID8gR0xPQkFM X0JJTkQgOiAwKTsKPiAgCj4gIAlyZXR1cm4gdm1hOwo+IEBAIC0zNzY4LDggKzM3NjcsOCBAQCBp bnQgaTkxNV9nZW1fb2JqZWN0X3NldF9jYWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAKPiAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xp c3QsIHZtYV9saW5rKQo+ICAJCQlpZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUp KQo+IC0JCQkJdm1hLT5iaW5kX3ZtYSh2bWEsIGNhY2hlX2xldmVsLAo+IC0JCQkJCQl2bWEtPmJv dW5kICYgR0xPQkFMX0JJTkQpOwo+ICsJCQkJaTkxNV92bWFfYmluZCh2bWEsIGNhY2hlX2xldmVs LAo+ICsJCQkJCSAgICAgIHZtYS0+Ym91bmQgJiBHTE9CQUxfQklORCk7Cj4gIAl9Cj4gIAo+ICAJ bGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykKPiBAQCAt NDEyMywxMCArNDEyMiwxMSBAQCBpOTE1X3ZtYV9taXNwbGFjZWQoc3RydWN0IGk5MTVfdm1hICp2 bWEsIHVpbnQzMl90IGFsaWdubWVudCwgdWludDY0X3QgZmxhZ3MpCj4gIH0KPiAgCj4gIGludAo+ IC1pOTE1X2dlbV9vYmplY3RfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g LQkJICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCSAgICB1aW50MzJfdCBh bGlnbm1lbnQsCj4gLQkJICAgIHVpbnQ2NF90IGZsYWdzKQo+ICtpOTE1X2dlbV9vYmplY3RfcGlu X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJIHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkgdWludDMyX3QgYWxpZ25tZW50LAo+ICsJCQkgdWlu dDY0X3QgZmxhZ3MsCj4gKwkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4g IHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYt PmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gQEAgLTQxNDIsNyArNDE0 Miw3IEBAIGk5MTVfZ2VtX29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPiAgCWlmIChXQVJOX09OKChmbGFncyAmIChQSU5fTUFQUEFCTEUgfCBQSU5fR0xPQkFMKSkg PT0gUElOX01BUFBBQkxFKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQl2bWEgPSBpOTE1 X2dlbV9vYmpfdG9fdm1hKG9iaiwgdm0pOwo+ICsJdm1hID0gaTkxNV9nZW1fb2JqX3RvX3ZtYV92 aWV3KG9iaiwgdm0sIHZpZXcpOwo+ICAJaWYgKHZtYSkgewo+ICAJCWlmIChXQVJOX09OKHZtYS0+ cGluX2NvdW50ID09IERSTV9JOTE1X0dFTV9PQkpFQ1RfTUFYX1BJTl9DT1VOVCkpCj4gIAkJCXJl dHVybiAtRUJVU1k7Cj4gQEAgLTQxNTIsNyArNDE1Miw4IEBAIGk5MTVfZ2VtX29iamVjdF9waW4o c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJICAgICAiYm8gaXMgYWxyZWFk eSBwaW5uZWQgd2l0aCBpbmNvcnJlY3QgYWxpZ25tZW50OiIKPiAgCQkJICAgICAiIG9mZnNldD0l bHgsIHJlcS5hbGlnbm1lbnQ9JXgsIHJlcS5tYXBfYW5kX2ZlbmNlYWJsZT0lZCwiCj4gIAkJCSAg ICAgIiBvYmotPm1hcF9hbmRfZmVuY2VhYmxlPSVkXG4iLAo+IC0JCQkgICAgIGk5MTVfZ2VtX29i al9vZmZzZXQob2JqLCB2bSksIGFsaWdubWVudCwKPiArCQkJICAgICBpOTE1X2dlbV9vYmpfb2Zm c2V0X3ZpZXcob2JqLCB2bSwgdmlldy0+dHlwZSksCj4gKwkJCSAgICAgYWxpZ25tZW50LAo+ICAJ CQkgICAgICEhKGZsYWdzICYgUElOX01BUFBBQkxFKSwKPiAgCQkJICAgICBvYmotPm1hcF9hbmRf ZmVuY2VhYmxlKTsKPiAgCQkJcmV0ID0gaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gQEAgLTQxNjUs MTMgKzQxNjYsMTQgQEAgaTkxNV9nZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+ICAKPiAgCWJvdW5kID0gdm1hID8gdm1hLT5ib3VuZCA6IDA7Cj4gIAlpZiAo dm1hID09IE5VTEwgfHwgIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkgewo+IC0J CXZtYSA9IGk5MTVfZ2VtX29iamVjdF9iaW5kX3RvX3ZtKG9iaiwgdm0sIGFsaWdubWVudCwgZmxh Z3MpOwo+ICsJCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9iaW5kX3RvX3ZtKG9iaiwgdm0sIGFsaWdu bWVudCwKPiArCQkJCQkJIGZsYWdzLCB2aWV3KTsKPiAgCQlpZiAoSVNfRVJSKHZtYSkpCj4gIAkJ CXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gIAl9Cj4gIAo+ICAJaWYgKGZsYWdzICYgUElOX0dMT0JB TCAmJiAhKHZtYS0+Ym91bmQgJiBHTE9CQUxfQklORCkpCj4gLQkJdm1hLT5iaW5kX3ZtYSh2bWEs IG9iai0+Y2FjaGVfbGV2ZWwsIEdMT0JBTF9CSU5EKTsKPiArCQlpOTE1X3ZtYV9iaW5kKHZtYSwg b2JqLT5jYWNoZV9sZXZlbCwgR0xPQkFMX0JJTkQpOwo+ICAKPiAgCWlmICgoYm91bmQgXiB2bWEt PmJvdW5kKSAmIEdMT0JBTF9CSU5EKSB7Cj4gIAkJYm9vbCBtYXBwYWJsZSwgZmVuY2VhYmxlOwo+ IEBAIC00NTgzLDEyICs0NTg1LDEzIEBAIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQo+ICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3By aXYpOwo+ICB9Cj4gIAo+IC1zdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29ial90b192bWEoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgICAgc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0pCj4gK3N0cnVjdCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX3ZtYV92 aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQkJICBzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkJCQkgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmll dyAqdmlldykKPiAgewo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAlsaXN0X2Zvcl9lYWNo X2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQo+IC0JCWlmICh2bWEtPnZtID09 IHZtKQo+ICsJCWlmICh2bWEtPnZtID09IHZtICYmIHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gdmll dy0+dHlwZSkKPiAgCQkJcmV0dXJuIHZtYTsKPiAgCj4gIAlyZXR1cm4gTlVMTDsKPiBAQCAtNTI3 Miw4ICs1Mjc1LDkgQEAgaTkxNV9nZW1fc2hyaW5rZXJfY291bnQoc3RydWN0IHNocmlua2VyICpz aHJpbmtlciwgc3RydWN0IHNocmlua19jb250cm9sICpzYykKPiAgfQo+ICAKPiAgLyogQWxsIHRo ZSBuZXcgVk0gc3R1ZmYgKi8KPiAtdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfb2Zmc2V0KHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+IC0JCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSkKPiArdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfb2Zmc2V0X3ZpZXcoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gKwkJCQkgICAgICAgc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4gKwkJCQkgICAgICAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZp ZXcpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG8tPmJhc2Uu ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IEBAIC01MjgxLDcg KzUyODUsNyBAQCB1bnNpZ25lZCBsb25nIGk5MTVfZ2VtX29ial9vZmZzZXQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm8sCj4gIAlXQVJOX09OKHZtID09ICZkZXZfcHJpdi0+bW0uYWxpYXNp bmdfcHBndHQtPmJhc2UpOwo+ICAKPiAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1h X2xpc3QsIHZtYV9saW5rKSB7Cj4gLQkJaWYgKHZtYS0+dm0gPT0gdm0pCj4gKwkJaWYgKHZtYS0+ dm0gPT0gdm0gJiYgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSB2aWV3KQo+ICAJCQlyZXR1cm4gdm1h LT5ub2RlLnN0YXJ0Owo+ICAKPiAgCX0KPiBAQCAtNTQzMCw5ICs1NDM0LDEyIEBAIHN0cnVjdCBp OTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX2dndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKPiAgewo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAo+IC0Jdm1hID0gbGlzdF9m aXJzdF9lbnRyeSgmb2JqLT52bWFfbGlzdCwgdHlwZW9mKCp2bWEpLCB2bWFfbGluayk7Cj4gLQlp ZiAodm1hLT52bSAhPSBpOTE1X29ial90b19nZ3R0KG9iaikpCj4gLQkJcmV0dXJuIE5VTEw7Cj4g KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4g KwkJaWYgKHZtYS0+dm0gIT0gaTkxNV9vYmpfdG9fZ2d0dChvYmopKQo+ICsJCQljb250aW51ZTsK PiArCQlpZiAodm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpCj4g KwkJCXJldHVybiB2bWE7Cj4gKwl9CgpXZSBmYWlybHkgcHV0IHRoZSBnZ3R0IHZtYSBpbnRvIHRo ZSBoZWFkIG9mIHRoZSBsaXN0LiBJbW8gYmV0dGVyIHRvIGtlZXAKdGhlIGhlYWQgc2xvdCByZXNl cnZlZCBmb3IgdGhlIGdndHQgbm9ybWFsIHZpZXcsIG1pZ2h0IGJlIHNvbWUgcmFuZG9tIGNvZGUK cmVseWluZyB1cG9uIHRoaXMuCgo+ICAKPiAtCXJldHVybiB2bWE7Cj4gKwlyZXR1cm4gTlVMTDsK PiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCBkMTdm ZjQzLi40YmY5Zjc5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu Ywo+IEBAIC01ODAsOCArNTgwLDggQEAgc3RhdGljIGludCBkb19zd2l0Y2goc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZywKPiAgCj4gIAl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dCh0by0+ bGVnYWN5X2h3X2N0eC5yY3Nfc3RhdGUpOwo+ICAJaWYgKCEodm1hLT5ib3VuZCAmIEdMT0JBTF9C SU5EKSkKPiAtCQl2bWEtPmJpbmRfdm1hKHZtYSwgdG8tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRl LT5jYWNoZV9sZXZlbCwKPiAtCQkJCUdMT0JBTF9CSU5EKTsKPiArCQlpOTE1X3ZtYV9iaW5kKHZt YSwgdG8tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlLT5jYWNoZV9sZXZlbCwKPiArCQkJICAgICAg R0xPQkFMX0JJTkQpOwo+ICAKPiAgCWlmICghdG8tPmxlZ2FjeV9od19jdHguaW5pdGlhbGl6ZWQg fHwgaTkxNV9nZW1fY29udGV4dF9pc19kZWZhdWx0KHRvKSkKPiAgCQlod19mbGFncyB8PSBNSV9S RVNUT1JFX0lOSElCSVQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYwo+IGluZGV4IGUxZWQ4NWEuLmU3OWNhZjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTM1OCw4ICszNTgsOCBAQCBpOTE1X2dlbV9l eGVjYnVmZmVyX3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gIAlpZiAodW5saWtlbHkoSVNfR0VONihkZXYpICYmCj4gIAkgICAgcmVsb2MtPndyaXRlX2Rv bWFpbiA9PSBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04gJiYKPiAgCSAgICAhKHRhcmdldF92 bWEtPmJvdW5kICYgR0xPQkFMX0JJTkQpKSkKPiAtCQl0YXJnZXRfdm1hLT5iaW5kX3ZtYSh0YXJn ZXRfdm1hLCB0YXJnZXRfaTkxNV9vYmotPmNhY2hlX2xldmVsLAo+IC0JCQkJR0xPQkFMX0JJTkQp Owo+ICsJCWk5MTVfdm1hX2JpbmQodGFyZ2V0X3ZtYSwgdGFyZ2V0X2k5MTVfb2JqLT5jYWNoZV9s ZXZlbCwKPiArCQkJICAgICAgR0xPQkFMX0JJTkQpOwo+ICAKPiAgCS8qIFZhbGlkYXRlIHRoYXQg dGhlIHRhcmdldCBpcyBpbiBhIHZhbGlkIHIvdyBHUFUgZG9tYWluICovCj4gIAlpZiAodW5saWtl bHkocmVsb2MtPndyaXRlX2RvbWFpbiAmIChyZWxvYy0+d3JpdGVfZG9tYWluIC0gMSkpKSB7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCBiZWU1YjBhLi4yMTQ0NzM4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMzAsNiArMzAsOCBAQAo+ ICAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gIAo+ ICtjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsOwo+ICsK PiAgc3RhdGljIHZvaWQgYmR3X3NldHVwX3ByaXZhdGVfcHBhdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+ICBzdGF0aWMgdm9pZCBjaHZfc2V0dXBfcHJpdmF0ZV9wcGF0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIAo+IEBAIC03Niw3ICs3OCw3IEBA IHN0YXRpYyBpbnQgc2FuaXRpemVfZW5hYmxlX3BwZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBlbmFibGVfcHBndHQpCj4gIH0KPiAgCj4gIAo+IC1zdGF0aWMgdm9pZCBwcGd0dF9iaW5k X3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiArc3RhdGljIHZvaWQgcHBndHRfYmluZF92bWEo c3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMsCj4gIAkJCSAgIGVu dW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKPiAgCQkJICAgdTMyIGZsYWdzKTsKPiAg c3RhdGljIHZvaWQgcHBndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7Cj4gQEAg LTEyMDAsNyArMTIwMiw3IEBAIHZvaWQgIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAq a3JlZikKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiAtcHBndHRfYmluZF92bWEoc3RydWN0IGk5 MTVfdm1hICp2bWEsCj4gK3BwZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBzdHJ1 Y3Qgc2dfdGFibGUgKnBhZ2VzLAo+ICAJICAgICAgIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNo ZV9sZXZlbCwKPiAgCSAgICAgICB1MzIgZmxhZ3MpCj4gIHsKPiBAQCAtMTIwOCw3ICsxMjEwLDcg QEAgcHBndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gIAlpZiAodm1hLT5vYmot Pmd0X3JvKQo+ICAJCWZsYWdzIHw9IFBURV9SRUFEX09OTFk7Cj4gIAo+IC0Jdm1hLT52bS0+aW5z ZXJ0X2VudHJpZXModm1hLT52bSwgdm1hLT5vYmotPnBhZ2VzLCB2bWEtPm5vZGUuc3RhcnQsCj4g Kwl2bWEtPnZtLT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLCBwYWdlcywgdm1hLT5ub2RlLnN0YXJ0 LAo+ICAJCQkJY2FjaGVfbGV2ZWwsIGZsYWdzKTsKPiAgfQo+ICAKPiBAQCAtMTM0Myw3ICsxMzQ1 LDcgQEAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+ICAJCSAqIHdpdGhvdXQgdGVsbGluZyBvdXIgb2JqZWN0IGFib3V0IGl0LiBTbyB3 ZSBuZWVkIHRvIGZha2UgaXQuCj4gIAkJICovCj4gIAkJdm1hLT5ib3VuZCAmPSB+R0xPQkFMX0JJ TkQ7Cj4gLQkJdm1hLT5iaW5kX3ZtYSh2bWEsIG9iai0+Y2FjaGVfbGV2ZWwsIEdMT0JBTF9CSU5E KTsKPiArCQlpOTE1X3ZtYV9iaW5kKHZtYSwgb2JqLT5jYWNoZV9sZXZlbCwgR0xPQkFMX0JJTkQp Owo+ICAJfQo+ICAKPiAgCj4gQEAgLTE1MjksNyArMTUzMSw3IEBAIHN0YXRpYyB2b2lkIGdlbjZf Z2d0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAgfQo+ICAK PiAgCj4gLXN0YXRpYyB2b2lkIGk5MTVfZ2d0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZt YSwKPiArc3RhdGljIHZvaWQgaTkxNV9nZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1h LCBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzLAo+ICAJCQkgICAgICAgZW51bSBpOTE1X2NhY2hlX2xl dmVsIGNhY2hlX2xldmVsLAo+ICAJCQkgICAgICAgdTMyIHVudXNlZCkKPiAgewo+IEBAIC0xNTM4 LDcgKzE1NDAsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dndHRfYmluZF92bWEoc3RydWN0IGk5MTVf dm1hICp2bWEsCj4gIAkJQUdQX1VTRVJfTUVNT1JZIDogQUdQX1VTRVJfQ0FDSEVEX01FTU9SWTsK PiAgCj4gIAlCVUdfT04oIWk5MTVfaXNfZ2d0dCh2bWEtPnZtKSk7Cj4gLQlpbnRlbF9ndHRfaW5z ZXJ0X3NnX2VudHJpZXModm1hLT5vYmotPnBhZ2VzLCBlbnRyeSwgZmxhZ3MpOwo+ICsJaW50ZWxf Z3R0X2luc2VydF9zZ19lbnRyaWVzKHBhZ2VzLCBlbnRyeSwgZmxhZ3MpOwo+ICAJdm1hLT5ib3Vu ZCA9IEdMT0JBTF9CSU5EOwo+ICB9Cj4gIAo+IEBAIC0xNTYyLDcgKzE1NjQsNyBAQCBzdGF0aWMg dm9pZCBpOTE1X2dndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCWludGVs X2d0dF9jbGVhcl9yYW5nZShmaXJzdCwgc2l6ZSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGdn dHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gK3N0YXRpYyB2b2lkIGdndHRfYmlu ZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMsCj4gIAkJ CSAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAo+ICAJCQkgIHUzMiBmbGFncykK PiAgewo+IEBAIC0xNTg4LDcgKzE1OTAsNyBAQCBzdGF0aWMgdm9pZCBnZ3R0X2JpbmRfdm1hKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJaWYgKCFkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQg fHwgZmxhZ3MgJiBHTE9CQUxfQklORCkgewo+ICAJCWlmICghKHZtYS0+Ym91bmQgJiBHTE9CQUxf QklORCkgfHwKPiAgCQkgICAgKGNhY2hlX2xldmVsICE9IG9iai0+Y2FjaGVfbGV2ZWwpKSB7Cj4g LQkJCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIG9iai0+cGFnZXMsCj4gKwkJCXZt YS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHBhZ2VzLAo+ICAJCQkJCQl2bWEtPm5vZGUu c3RhcnQsCj4gIAkJCQkJCWNhY2hlX2xldmVsLCBmbGFncyk7Cj4gIAkJCXZtYS0+Ym91bmQgfD0g R0xPQkFMX0JJTkQ7Cj4gQEAgLTE2MDAsNyArMTYwMiw3IEBAIHN0YXRpYyB2b2lkIGdndHRfYmlu ZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gIAkgICAgIChjYWNoZV9sZXZlbCAhPSBvYmot PmNhY2hlX2xldmVsKSkpIHsKPiAgCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYXBwZ3R0ID0gZGV2 X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0Owo+ICAJCWFwcGd0dC0+YmFzZS5pbnNlcnRfZW50cmll cygmYXBwZ3R0LT5iYXNlLAo+IC0JCQkJCSAgICB2bWEtPm9iai0+cGFnZXMsCj4gKwkJCQkJICAg IHBhZ2VzLAo+ICAJCQkJCSAgICB2bWEtPm5vZGUuc3RhcnQsCj4gIAkJCQkJICAgIGNhY2hlX2xl dmVsLCBmbGFncyk7Cj4gIAkJdm1hLT5ib3VuZCB8PSBMT0NBTF9CSU5EOwo+IEBAIC0yMTY1LDcg KzIxNjcsOCBAQCBpbnQgaTkxNV9nZW1fZ3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgfQo+ICAKPiAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19pOTE1X2dlbV92bWFfY3JlYXRl KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkJICAgICAgc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gKwkJCQkJICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0sCj4gKwkJCQkJICAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3 KQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGt6YWxsb2Moc2l6ZW9mKCp2bWEpLCBH RlBfS0VSTkVMKTsKPiAgCWlmICh2bWEgPT0gTlVMTCkKPiBAQCAtMjE3Niw2ICsyMTc5LDcgQEAg c3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAlJTklUX0xJU1RfSEVBRCgmdm1hLT5leGVjX2xpc3Qp Owo+ICAJdm1hLT52bSA9IHZtOwo+ICAJdm1hLT5vYmogPSBvYmo7Cj4gKwl2bWEtPmdndHRfdmll dyA9ICp2aWV3Owo+ICAKPiAgCXN3aXRjaCAoSU5URUxfSU5GTyh2bS0+ZGV2KS0+Z2VuKSB7Cj4g IAljYXNlIDk6Cj4gQEAgLTIyMTQsMTQgKzIyMTgsNDMgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3Zt YSAqX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gIH0KPiAgCj4gIHN0cnVjdCBpOTE1X3ZtYSAqCj4gLWk5MTVfZ2VtX29ial9sb29rdXBfb3Jf Y3JlYXRlX3ZtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCQkJICBzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAraTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVh dGVfdm1hX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJCSAgICAg ICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkJCSAgICAgICBjb25zdCBzdHJ1 Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ ICAKPiAtCXZtYSA9IGk5MTVfZ2VtX29ial90b192bWEob2JqLCB2bSk7Cj4gKwl2bWEgPSBpOTE1 X2dlbV9vYmpfdG9fdm1hX3ZpZXcob2JqLCB2bSwgdmlldyk7Cj4gIAlpZiAoIXZtYSkKPiAtCQl2 bWEgPSBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUob2JqLCB2bSk7Cj4gKwkJdm1hID0gX19pOTE1X2dl bV92bWFfY3JlYXRlKG9iaiwgdm0sIHZpZXcpOwo+ICAKPiAgCXJldHVybiB2bWE7Cj4gIH0KPiAr Cj4gK3N0YXRpYyBpbmxpbmUKPiArc3RydWN0IHNnX3RhYmxlICppOTE1X2dndHRfdmlld19wYWdl cyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiArewo+ICsJc3RydWN0IHNnX3RhYmxlICpwYWdlcyA9 IEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ICsJaWYgKHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gSTkx NV9HR1RUX1ZJRVdfTk9STUFMKQo+ICsJCXBhZ2VzID0gdm1hLT5vYmotPnBhZ2VzOwo+ICsJZWxz ZQo+ICsJCVdBUk4oMSwgIk5vdCBpbXBsZW1lbnRlZCFcbiIpOwo+ICsKPiArCXJldHVybiBwYWdl czsKPiArfQo+ICsKPiArdm9pZCBpOTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBl bnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gKwkJICAgdTMyIGZsYWdzKQo+ICt7 Cj4gKwlzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzID0gaTkxNV9nZ3R0X3ZpZXdfcGFnZXModm1hKTsK PiArCj4gKwlpZiAocGFnZXMgJiYgIUlTX0VSUihwYWdlcykpIHsKPiArCQl2bWEtPmJpbmRfdm1h KHZtYSwgcGFnZXMsIGNhY2hlX2xldmVsLCBmbGFncyk7Cj4gKwo+ICsJCWlmICh2bWEtPmdndHRf dmlldy50eXBlICE9IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkgewo+ICsJCQlzZ19mcmVlX3RhYmxl KHBhZ2VzKTsKPiArCQkJa2ZyZWUocGFnZXMpOwo+ICsJCX0KPiArCX0KPiArfQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggZDA1NjJkMC4uMzUzNDcyNyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTEwOSw3ICsxMDksMTggQEAgdHlwZWRl ZiBnZW44X2d0dF9wdGVfdCBnZW44X3BwZ3R0X3BkZV90Owo+ICAjZGVmaW5lIEdFTjhfUFBBVF9F TExDX09WRVJSSURFCQkoMDw8MikKPiAgI2RlZmluZSBHRU44X1BQQVQoaSwgeCkJCQkoKHVpbnQ2 NF90KSAoeCkgPDwgKChpKSAqIDgpKQo+ICAKPiArZW51bSBpOTE1X2dndHRfdmlld190eXBlIHsK PiArCUk5MTVfR0dUVF9WSUVXX05PUk1BTCA9IDAsCj4gK307Cj4gKwo+ICtzdHJ1Y3QgaTkxNV9n Z3R0X3ZpZXcgewo+ICsJZW51bSBpOTE1X2dndHRfdmlld190eXBlIHR5cGU7Cj4gK307Cj4gKwo+ ICtleHRlcm4gY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3IGk5MTVfZ2d0dF92aWV3X25vcm1h bDsKPiArCj4gIGVudW0gaTkxNV9jYWNoZV9sZXZlbDsKPiArCj4gIC8qKgo+ICAgKiBBIFZNQSBy ZXByZXNlbnRzIGEgR0VNIEJPIHRoYXQgaXMgYm91bmQgaW50byBhbiBhZGRyZXNzIHNwYWNlLiBU aGVyZWZvcmUsIGEKPiAgICogVk1BJ3MgcHJlc2VuY2UgY2Fubm90IGJlIGd1YXJhbnRlZWQgYmVm b3JlIGJpbmRpbmcsIG9yIGFmdGVyIHVuYmluZGluZyB0aGUKPiBAQCAtMTI5LDYgKzE0MCwxNSBA QCBzdHJ1Y3QgaTkxNV92bWEgewo+ICAjZGVmaW5lIFBURV9SRUFEX09OTFkJKDE8PDIpCj4gIAl1 bnNpZ25lZCBpbnQgYm91bmQgOiA0Owo+ICAKPiArCS8qKgo+ICsJICogU3VwcG9ydCBkaWZmZXJl bnQgR0dUVCB2aWV3cyBpbnRvIHRoZSBzYW1lIG9iamVjdC4KPiArCSAqIFRoaXMgbWVhbnMgdGhl cmUgY2FuIGJlIG11bHRpcGxlIFZNQSBtYXBwaW5ncyBwZXIgb2JqZWN0IGFuZCBwZXIgVk0uCj4g KwkgKiBpOTE1X2dndHRfdmlld190eXBlIGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0 aG9zZSBlbnRyaWVzLgo+ICsJICogVGhlIGRlZmF1bHQgb25lIG9mIHplcm8gKEk5MTVfR0dUVF9W SUVXX05PUk1BTCkgaXMgZGVmYXVsdCBhbmQgYWxzbwo+ICsJICogYXNzdW1lZCBpbiBHRU0gZnVu Y3Rpb25zIHdoaWNoIHRha2Ugbm8gZ2d0dCB2aWV3IHBhcmFtZXRlci4KPiArCSAqLwo+ICsJc3Ry dWN0IGk5MTVfZ2d0dF92aWV3IGdndHRfdmlldzsKPiArCj4gIAkvKiogVGhpcyBvYmplY3QncyBw bGFjZSBvbiB0aGUgYWN0aXZlL2luYWN0aXZlIGxpc3RzICovCj4gIAlzdHJ1Y3QgbGlzdF9oZWFk IG1tX2xpc3Q7Cj4gIAo+IEBAIC0xNjEsNyArMTgxLDcgQEAgc3RydWN0IGk5MTVfdm1hIHsKPiAg CSAqIHNldHRpbmcgdGhlIHZhbGlkIFBURSBlbnRyaWVzIHRvIGEgcmVzZXJ2ZWQgc2NyYXRjaCBw YWdlLiAqLwo+ICAJdm9pZCAoKnVuYmluZF92bWEpKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAg CS8qIE1hcCBhbiBvYmplY3QgaW50byBhbiBhZGRyZXNzIHNwYWNlIHdpdGggdGhlIGdpdmVuIGNh Y2hlIGZsYWdzLiAqLwo+IC0Jdm9pZCAoKmJpbmRfdm1hKShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwK PiArCXZvaWQgKCpiaW5kX3ZtYSkoc3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBzZ190YWJs ZSAqcGFnZXMsCj4gIAkJCSBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gIAkJ CSB1MzIgZmxhZ3MpOwo+ICB9Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ IGluZGV4IDg5YTJmM2QuLjc3ZjFiZGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1 X2Vycm9yLmMKPiBAQCAtNzE3LDEwICs3MTcsOCBAQCBzdGF0aWMgdTMyIGNhcHR1cmVfcGlubmVk X2JvKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9idWZmZXIgKmVyciwKPiAgCQkJYnJlYWs7Cj4gIAo+ ICAJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspCj4g LQkJCWlmICh2bWEtPnZtID09IHZtICYmIHZtYS0+cGluX2NvdW50ID4gMCkgewo+ICsJCQlpZiAo dm1hLT52bSA9PSB2bSAmJiB2bWEtPnBpbl9jb3VudCA+IDApCj4gIAkJCQljYXB0dXJlX2JvKGVy cisrLCB2bWEpOwo+IC0JCQkJYnJlYWs7CgpOb3QgZnVsbHkgc3VyZSBhYm91dCB0aGlzIG9uZSwg YnV0IGNhbid0IGh1cnQgSSBndWVzcy4KCj4gLQkJCX0KPiAgCX0KPiAgCj4gIAlyZXR1cm4gZXJy IC0gZmlyc3Q7Cj4gQEAgLTEwOTYsMTAgKzEwOTQsOCBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9j YXB0dXJlX3ZtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCj4gIAlsaXN0 X2Zvcl9lYWNoX2VudHJ5KG9iaiwgJmRldl9wcml2LT5tbS5ib3VuZF9saXN0LCBnbG9iYWxfbGlz dCkgewo+ICAJCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xp bmspCj4gLQkJCWlmICh2bWEtPnZtID09IHZtICYmIHZtYS0+cGluX2NvdW50ID4gMCkgewo+ICsJ CQlpZiAodm1hLT52bSA9PSB2bSAmJiB2bWEtPnBpbl9jb3VudCA+IDApCj4gIAkJCQlpKys7Cj4g LQkJCQlicmVhazsKPiAtCQkJfQo+ICAJfQo+ICAJZXJyb3ItPnBpbm5lZF9ib19jb3VudFtuZHhd ID0gaSAtIGVycm9yLT5hY3RpdmVfYm9fY291bnRbbmR4XTsKPiAgCj4gLS0gCj4gMi4xLjEKPiAK Ci0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgor NDEgKDApIDc5IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==