From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC] drm/i915: Infrastructure for supporting different GGTT views per object Date: Wed, 12 Nov 2014 18:02:58 +0100 Message-ID: <20141112170258.GC25711@phenom.ffwll.local> References: <1414687178-18562-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1415284765-25613-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-f41.google.com (mail-wg0-f41.google.com [74.125.82.41]) by gabe.freedesktop.org (Postfix) with ESMTP id 64C9B8911F for ; Wed, 12 Nov 2014 09:02:40 -0800 (PST) Received: by mail-wg0-f41.google.com with SMTP id k14so14715365wgh.0 for ; Wed, 12 Nov 2014 09:02:39 -0800 (PST) Content-Disposition: inline In-Reply-To: <1415284765-25613-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 T24gVGh1LCBOb3YgMDYsIDIwMTQgYXQgMDI6Mzk6MjVQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBUaGluZ3MgbGlrZSByZWxpYWJsZSBHR1RUIG1tYXBzIGFuZCBtaXJyb3JlZCAyZC1vbi0z ZCBkaXNwbGF5IHdpbGwgbmVlZAo+IHRvIG1hcCBvYmplY3RzIGludG8gdGhlIHNhbWUgYWRkcmVz cyBzcGFjZSBtdWx0aXBsZSB0aW1lcy4KPiAKPiBUaGlzIGFsc28gbWVhbnMgdGhhdCBvYmplY3Rz IG5vdyBjYW4gaGF2ZSBtdWx0aXBsZSBWTUEgZW50cmllcy4KPiAKPiBBZGRlZCBhIEdHVFQgdmll dyBjb25jZXB0IGFuZCBsaW5rZWQgaXQgd2l0aCB0aGUgVk1BIHRvIGRpc3Rpbmd1aXNoIGJldHdl bgo+IG11bHRpcGxlIGluc3RhbmNlcyBwZXIgYWRkcmVzcyBzcGFjZS4KPiAKPiBOZXcgb2JqZWN0 cyBhbmQgR0VNIGZ1bmN0aW9ucyB3aGljaCBkbyBub3QgdGFrZSB0aGlzIG5ldyB2aWV3IGFzIGEg cGFyYW1ldGVyCj4gYXNzdW1lIHRoZSBkZWZhdWx0IG9mIHplcm8gKEk5MTVfR0dUVF9WSUVXX05P Uk1BTCkgd2hpY2ggcHJlc2VydmVzIHRoZQo+IHByZXZpb3VzIGJlaGF2aW91ci4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+IENj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgoKTGV0J3MgaG9wZSBJJ3Zl IHBpY2tlZCB0aGUgbGF0ZXN0IHZlcnNpb24sIG5vdCBzdXJlLiBQbGVhc2UgZWl0aGVyIGhhdmUK aW4tcGF0Y2ggY2hhbmdlbG9ncyBvciBjb3ZlcmxldHRlcnMgd2l0aCB3aGF0J3MgbmV3IHRvIGhl bHAgY29uZnVzZWQKbWFpbnRhaW5lcnMgOy0pCgpMb29rcyBnb29kIG92ZXJhbCwganVzdCBhIGZl dyB0aGluZ3MgYXJvdW5kIHRoZSBsaWZldGltZSBydWxlcyBmb3Igc2cKdGFibGVzIGFuZCByZWxh dGVkIHN0dWZmIHRoYXQgd2UndmUgZGlzY3Vzc2VkIG9mZmxpbmUuIEFuZCBvbmUgbml0LgoKSSB0 aGluayB3aXRoIHRoZXNlIGFkZHJlc3NlZCB0aGlzIGlzIHJlYWR5IGZvciBkZXRhaWxlZCByZXZp ZXcgYW5kIG1lcmdpbmcKKGFsc28gYXBwbGllcyB0byB0aGUgLWludGVybmFsIHNlcmllcykuCgpD aGVlcnMsIERhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgICAgICAgIHwgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgICAgIHwgNDQgKysrKysrKysrKysrKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgICAgICAgICAgICB8IDg4ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgfCAgMiArLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAgMiArLQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgfCA3MSArKysrKysrKysrKysrKysr KystLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICAgIHwg MjkgKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAg ICAgfCAgOCArLS0KPiAgOCBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygrKSwgNjkgZGVs ZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCAwYTY5 ODEzLi4zZjIzYzUxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAt MTU0LDggKzE1NCw4IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIAkJCXNlcV9wdXRzKG0sICIgKHBwIik7Cj4gIAkJ ZWxzZQo+ICAJCQlzZXFfcHV0cyhtLCAiIChnIik7Cj4gLQkJc2VxX3ByaW50ZihtLCAiZ3R0IG9m ZnNldDogJTA4bHgsIHNpemU6ICUwOGx4KSIsCj4gLQkJCSAgIHZtYS0+bm9kZS5zdGFydCwgdm1h LT5ub2RlLnNpemUpOwo+ICsJCXNlcV9wcmludGYobSwgImd0dCBvZmZzZXQ6ICUwOGx4LCBzaXpl OiAlMDhseCwgdHlwZTogJXUpIiwKPiArCQkJICAgdm1hLT5ub2RlLnN0YXJ0LCB2bWEtPm5vZGUu c2l6ZSwgdm1hLT5nZ3R0X3ZpZXcudHlwZSk7Cj4gIAl9Cj4gIAlpZiAob2JqLT5zdG9sZW4pCj4g IAkJc2VxX3ByaW50ZihtLCAiIChzdG9sZW46ICUwOGx4KSIsIG9iai0+c3RvbGVuLT5zdGFydCk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNTQ2OTFiYy4uNTAxMDlmYSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yNDIwLDEwICsyNDIwLDIzIEBAIHZvaWQgaTkx NV9nZW1fdm1hX2Rlc3Ryb3koc3RydWN0IGk5MTVfdm1hICp2bWEpOwo+ICAjZGVmaW5lIFBJTl9H TE9CQUwgMHg0Cj4gICNkZWZpbmUgUElOX09GRlNFVF9CSUFTIDB4OAo+ICAjZGVmaW5lIFBJTl9P RkZTRVRfTUFTSyAofjQwOTUpCj4gK2ludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fb2JqZWN0X3Bp bl92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQkJICBzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkJCQkgIHVpbnQzMl90IGFsaWdubWVudCwKPiAr CQkJCQkgIHVpbnQ2NF90IGZsYWdzLAo+ICsJCQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92 aWV3ICp2aWV3KTsKPiArc3RhdGljIGlubGluZQo+ICBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2Vt X29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJCSAgICAg c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAkJCQkgICAgIHVpbnQzMl90IGFsaWdu bWVudCwKPiAtCQkJCSAgICAgdWludDY0X3QgZmxhZ3MpOwo+ICsJCQkJICAgICB1aW50NjRfdCBm bGFncykKPiArewo+ICsJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9waW5fdmlldyhvYmosIHZtLCBh bGlnbm1lbnQsIGZsYWdzLAo+ICsJCQkJCQkmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsKTsKPiArfQo+ ICsKPiArdm9pZCBpOTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBlbnVtIGk5MTVf Y2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gKwkJCXUzMiBmbGFncyk7Cj4gIGludCBfX211c3Rf Y2hlY2sgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAgaW50IGk5MTVf Z2VtX29iamVjdF9wdXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4g IHZvaWQgaTkxNV9nZW1fcmVsZWFzZV9hbGxfbW1hcHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKPiBAQCAtMjU3MCwxOCArMjU4Myw0MSBAQCBzdHJ1Y3QgZG1hX2J1ZiAqaTkx NV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ICB2b2lkIGk5 MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAKPiArdW5z aWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfb2Zmc2V0X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm8sCj4gKwkJCQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4g KwkJCQkgICAgICAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcpOwo+ICtzdGF0aWMgaW5s aW5lCj4gIHVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqbywKPiAtCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pOwo+ ICsJCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiArewo+ICsJcmV0dXJuIGk5 MTVfZ2VtX29ial9vZmZzZXRfdmlldyhvLCB2bSwgSTkxNV9HR1RUX1ZJRVdfTk9STUFMKTsKPiAr fQo+ICBib29sIGk5MTVfZ2VtX29ial9ib3VuZF9hbnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm8pOwo+ICBib29sIGk5MTVfZ2VtX29ial9ib3VuZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqbywKPiAgCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pOwo+ICB1bnNpZ25l ZCBsb25nIGk5MTVfZ2VtX29ial9zaXplKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+ ICAJCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pOwo+ICtzdHJ1Y3QgaTkxNV92bWEg Kmk5MTVfZ2VtX29ial90b192bWFfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+ICsJCQkJICAgICAgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkJ CSAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPiArc3RhdGljIGlubGluZQo+ ICBzdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29ial90b192bWEoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0p Owo+ICsJCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiArewo+ICsJcmV0 dXJuIGk5MTVfZ2VtX29ial90b192bWFfdmlldyhvYmosIHZtLCAmaTkxNV9nZ3R0X3ZpZXdfbm9y bWFsKTsKPiArfQo+ICtzdHJ1Y3QgaTkxNV92bWEgKgo+ICtpOTE1X2dlbV9vYmpfbG9va3VwX29y X2NyZWF0ZV92bWFfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkJ ICAgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkJICAgICAgIGNvbnN0 IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldyk7Cj4gK3N0YXRpYyBpbmxpbmUKPiAgc3RydWN0 IGk5MTVfdm1hICoKPiAgaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtKTsKPiArCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gK3sKPiAr CXJldHVybiBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWFfdmlldyhvYmosIHZtLAo+ ICsJCQkJCQkmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsKTsKPiArfQo+ICAKPiAgc3RydWN0IGk5MTVf dm1hICppOTE1X2dlbV9vYmpfdG9fZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KTsKPiAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX29ial9pc19waW5uZWQoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaikgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4 IDFkZTk0Y2MuLmI0NmEwZjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMjAw Nyw4ICsyMDA3LDcgQEAgaTkxNV9nZW1fc2hyaW5rKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiAgCQkJLyogRm9yIHRoZSB1bmJvdW5kIHBoYXNlLCB0aGlzIHNob3VsZCBiZSBh IG5vLW9wISAqLwo+ICAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodm1hLCB2LAo+ICAJCQkJ CQkgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQo+IC0JCQkJaWYgKGk5MTVfdm1hX3VuYmluZCh2 bWEpKQo+IC0JCQkJCWJyZWFrOwo+ICsJCQkJaTkxNV92bWFfdW5iaW5kKHZtYSk7Cj4gIAo+ICAJ CQlpZiAoaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhvYmopID09IDApCj4gIAkJCQljb3VudCAr PSBvYmotPmJhc2Uuc2l6ZSA+PiBQQUdFX1NISUZUOwo+IEBAIC0yMjA5LDE3ICsyMjA4LDE0IEBA IHZvaWQgaTkxNV92bWFfbW92ZV90b19hY3RpdmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gIHN0 YXRpYyB2b2lkCj4gIGk5MTVfZ2VtX29iamVjdF9tb3ZlX3RvX2luYWN0aXZlKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+IC0Jc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm07Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCj4gIAlCVUdfT04o b2JqLT5iYXNlLndyaXRlX2RvbWFpbiAmIH5JOTE1X0dFTV9HUFVfRE9NQUlOUyk7Cj4gIAlCVUdf T04oIW9iai0+YWN0aXZlKTsKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtLCAmZGV2X3By aXYtPnZtX2xpc3QsIGdsb2JhbF9saW5rKSB7Cj4gLQkJdm1hID0gaTkxNV9nZW1fb2JqX3RvX3Zt YShvYmosIHZtKTsKPiAtCQlpZiAodm1hICYmICFsaXN0X2VtcHR5KCZ2bWEtPm1tX2xpc3QpKQo+ IC0JCQlsaXN0X21vdmVfdGFpbCgmdm1hLT5tbV9saXN0LCAmdm0tPmluYWN0aXZlX2xpc3QpOwo+ ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykgewo+ ICsJCWlmICghbGlzdF9lbXB0eSgmdm1hLT5tbV9saXN0KSkKPiArCQkJbGlzdF9tb3ZlX3RhaWwo JnZtYS0+bW1fbGlzdCwgJnZtYS0+dm0tPmluYWN0aXZlX2xpc3QpOwo+ICAJfQo+ICAKPiAgCWlu dGVsX2ZiX29ial9mbHVzaChvYmosIHRydWUpOwo+IEBAIC0yOTMwLDYgKzI5MjYsMjEgQEAgc3Rh dGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZpbmlzaF9ndHQoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPiAgCQkJCQkgICAgb2xkX3dyaXRlX2RvbWFpbik7Cj4gIH0KPiAgCj4gK3N0 YXRpYyB1bnNpZ25lZCBpbnQgY291bnRfZ2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCXVuc2lnbmVk IGludCBjb3VudCA9IDA7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZt YV9saXN0LCB2bWFfbGluaykgewo+ICsJCWlmICh2bWEtPnZtICE9IGk5MTVfb2JqX3RvX2dndHQo b2JqKSkKPiArCQkJY29udGludWU7Cj4gKwkJaWYgKHZtYS0+Ym91bmQgJiBHTE9CQUxfQklORCkK PiArCQkJY291bnQrKzsKPiArCX0KPiArCj4gKwlyZXR1cm4gY291bnQ7Cj4gK30KPiArCj4gIGlu dCBpOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKPiBAQCAtMjk2MCw3ICsyOTcxLDcg QEAgaW50IGk5MTVfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCS8qIFRocm93 IGF3YXkgdGhlIGFjdGl2ZSByZWZlcmVuY2UgYmVmb3JlIG1vdmluZyB0byB0aGUgdW5ib3VuZCBs aXN0ICovCj4gIAlpOTE1X2dlbV9vYmplY3RfcmV0aXJlKG9iaik7Cj4gIAo+IC0JaWYgKGk5MTVf aXNfZ2d0dCh2bWEtPnZtKSkgewo+ICsJaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJiBjb3Vu dF9nZ3R0X21hcHBpbmdzKG9iaikgPT0gMSkgewoKVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgYSBj aGVjayBmb3IgdmlldyA9PSBOT1JNQUwgaW5zdGVhZCBvZgpjb3VudF9tYXBwaW5ncyA9PSAxIC0g ZmluaXNoX2d0dCBpcyBhYm91dCBjcHUgd3JpdGVzIHRocm91Z2ggdGhlIGd0dCBhbmQKc28gb25s eSBhcHBsaWVzIHRvIHRoZSBsaW5lYXIvY29udGlndW91cyBtYXBwaW5nLgoKPiAgCQlpOTE1X2dl bV9vYmplY3RfZmluaXNoX2d0dChvYmopOwo+ICAKPiAgCQkvKiByZWxlYXNlIHRoZSBmZW5jZSBy ZWcgX2FmdGVyXyBmbHVzaGluZyAqLwo+IEBAIC0yOTgzLDcgKzI5OTQsNyBAQCBpbnQgaTkxNV92 bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAJLyogU2luY2UgdGhlIHVuYm91bmQg bGlzdCBpcyBnbG9iYWwsIG9ubHkgbW92ZSB0byB0aGF0IGxpc3QgaWYKPiAgCSAqIG5vIG1vcmUg Vk1BcyBleGlzdC4gKi8KPiAgCWlmIChsaXN0X2VtcHR5KCZvYmotPnZtYV9saXN0KSkgewo+IC0J CWk5MTVfZ2VtX2d0dF9maW5pc2hfb2JqZWN0KG9iaik7Cj4gKwkJaTkxNV9nZW1fZ3R0X2Zpbmlz aF9vYmplY3Qob2JqLCAmdm1hLT5nZ3R0X3ZpZXcpOwo+ICAJCWxpc3RfbW92ZV90YWlsKCZvYmot Pmdsb2JhbF9saXN0LCAmZGV2X3ByaXYtPm1tLnVuYm91bmRfbGlzdCk7Cj4gIAl9Cj4gIAo+IEBA IC0zMzkzLDcgKzM0MDQsOCBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICoKPiAgaTkxNV9nZW1f b2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJ ICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gIAkJCSAgIHVuc2lnbmVkIGFsaWdu bWVudCwKPiAtCQkJICAgdWludDY0X3QgZmxhZ3MpCj4gKwkJCSAgIHVpbnQ2NF90IGZsYWdzLAo+ ICsJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4gIHsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMzQ0Myw3ICszNDU1LDcg QEAgaTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiAgCj4gIAlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gIAo+IC0Jdm1h ID0gaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hKG9iaiwgdm0pOwo+ICsJdm1hID0g aTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hX3ZpZXcob2JqLCB2bSwgdmlldyk7Cj4g IAlpZiAoSVNfRVJSKHZtYSkpCj4gIAkJZ290byBlcnJfdW5waW47Cj4gIAo+IEBAIC0zNDY5LDE1 ICszNDgxLDE2IEBAIHNlYXJjaF9mcmVlOgo+ICAJCWdvdG8gZXJyX3JlbW92ZV9ub2RlOwo+ICAJ fQo+ICAKPiAtCXJldCA9IGk5MTVfZ2VtX2d0dF9wcmVwYXJlX29iamVjdChvYmopOwo+ICsJcmV0 ID0gaTkxNV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KG9iaiwgJnZtYS0+Z2d0dF92aWV3KTsKPiAg CWlmIChyZXQpCj4gIAkJZ290byBlcnJfcmVtb3ZlX25vZGU7Cj4gIAo+IC0JbGlzdF9tb3ZlX3Rh aWwoJm9iai0+Z2xvYmFsX2xpc3QsICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7Cj4gKwlpZiAo dm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpCj4gKwkJbGlzdF9t b3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCk7Cj4g IAlsaXN0X2FkZF90YWlsKCZ2bWEtPm1tX2xpc3QsICZ2bS0+aW5hY3RpdmVfbGlzdCk7Cj4gIAo+ ICAJdHJhY2VfaTkxNV92bWFfYmluZCh2bWEsIGZsYWdzKTsKPiAtCXZtYS0+YmluZF92bWEodm1h LCBvYmotPmNhY2hlX2xldmVsLAo+ICsJaTkxNV92bWFfYmluZCh2bWEsIG9iai0+Y2FjaGVfbGV2 ZWwsCj4gIAkJICAgICAgZmxhZ3MgJiBQSU5fR0xPQkFMID8gR0xPQkFMX0JJTkQgOiAwKTsKPiAg Cj4gIAlyZXR1cm4gdm1hOwo+IEBAIC0zNjg1LDcgKzM2OTgsNyBAQCBpbnQgaTkxNV9nZW1fb2Jq ZWN0X3NldF9jYWNoZV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAK PiAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQo+ ICAJCQlpZiAoZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQo+IC0JCQkJdm1hLT5i aW5kX3ZtYSh2bWEsIGNhY2hlX2xldmVsLAo+ICsJCQkJaTkxNV92bWFfYmluZCh2bWEsIGNhY2hl X2xldmVsLAo+ICAJCQkJCQl2bWEtPmJvdW5kICYgR0xPQkFMX0JJTkQpOwo+ICAJfQo+ICAKPiBA QCAtNDA0MCwxMCArNDA1MywxMSBAQCBpOTE1X3ZtYV9taXNwbGFjZWQoc3RydWN0IGk5MTVfdm1h ICp2bWEsIHVpbnQzMl90IGFsaWdubWVudCwgdWludDY0X3QgZmxhZ3MpCj4gIH0KPiAgCj4gIGlu dAo+IC1pOTE1X2dlbV9vYmplY3RfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gLQkJICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCSAgICB1aW50MzJf dCBhbGlnbm1lbnQsCj4gLQkJICAgIHVpbnQ2NF90IGZsYWdzKQo+ICtpOTE1X2dlbV9vYmplY3Rf cGluX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJIHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkgdWludDMyX3QgYWxpZ25tZW50LAo+ICsJCQkg dWludDY0X3QgZmxhZ3MsCj4gKwkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcp Cj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5k ZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gQEAgLTQwNTksNyAr NDA3Myw3IEBAIGk5MTVfZ2VtX29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiAgCWlmIChXQVJOX09OKChmbGFncyAmIChQSU5fTUFQUEFCTEUgfCBQSU5fR0xPQkFM KSkgPT0gUElOX01BUFBBQkxFKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCj4gLQl2bWEgPSBp OTE1X2dlbV9vYmpfdG9fdm1hKG9iaiwgdm0pOwo+ICsJdm1hID0gaTkxNV9nZW1fb2JqX3RvX3Zt YV92aWV3KG9iaiwgdm0sIHZpZXcpOwo+ICAJaWYgKHZtYSkgewo+ICAJCWlmIChXQVJOX09OKHZt YS0+cGluX2NvdW50ID09IERSTV9JOTE1X0dFTV9PQkpFQ1RfTUFYX1BJTl9DT1VOVCkpCj4gIAkJ CXJldHVybiAtRUJVU1k7Cj4gQEAgLTQwNjksNyArNDA4Myw3IEBAIGk5MTVfZ2VtX29iamVjdF9w aW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJICAgICAiYm8gaXMgYWxy ZWFkeSBwaW5uZWQgd2l0aCBpbmNvcnJlY3QgYWxpZ25tZW50OiIKPiAgCQkJICAgICAiIG9mZnNl dD0lbHgsIHJlcS5hbGlnbm1lbnQ9JXgsIHJlcS5tYXBfYW5kX2ZlbmNlYWJsZT0lZCwiCj4gIAkJ CSAgICAgIiBvYmotPm1hcF9hbmRfZmVuY2VhYmxlPSVkXG4iLAo+IC0JCQkgICAgIGk5MTVfZ2Vt X29ial9vZmZzZXQob2JqLCB2bSksIGFsaWdubWVudCwKPiArCQkJICAgICBpOTE1X2dlbV9vYmpf b2Zmc2V0X3ZpZXcob2JqLCB2bSwgdmlldy0+dHlwZSksIGFsaWdubWVudCwKPiAgCQkJICAgICAh IShmbGFncyAmIFBJTl9NQVBQQUJMRSksCj4gIAkJCSAgICAgb2JqLT5tYXBfYW5kX2ZlbmNlYWJs ZSk7Cj4gIAkJCXJldCA9IGk5MTVfdm1hX3VuYmluZCh2bWEpOwo+IEBAIC00MDgyLDEzICs0MDk2 LDE0IEBAIGk5MTVfZ2VtX29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPiAgCj4gIAlib3VuZCA9IHZtYSA/IHZtYS0+Ym91bmQgOiAwOwo+ICAJaWYgKHZtYSA9PSBO VUxMIHx8ICFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpIHsKPiAtCQl2bWEgPSBp OTE1X2dlbV9vYmplY3RfYmluZF90b192bShvYmosIHZtLCBhbGlnbm1lbnQsIGZsYWdzKTsKPiAr CQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfYmluZF90b192bShvYmosIHZtLCBhbGlnbm1lbnQsCj4g KwkJCQkJCQlmbGFncywgdmlldyk7CgpOaXQ6IFBsZWFzZSBhbGlnbiBjb250aW51YXRpb25zIGZv ciBwYXJhbXRlciBsaXN0cyB0byB0aGUgb3BlbmluZyAoCmNoZWNrcGF0Y2ggLS1zdHJpY3QgY2Fu IGNoZWNrIGZvciB0aGF0LgoKPiAgCQlpZiAoSVNfRVJSKHZtYSkpCj4gIAkJCXJldHVybiBQVFJf RVJSKHZtYSk7Cj4gIAl9Cj4gIAo+ICAJaWYgKGZsYWdzICYgUElOX0dMT0JBTCAmJiAhKHZtYS0+ Ym91bmQgJiBHTE9CQUxfQklORCkpCj4gLQkJdm1hLT5iaW5kX3ZtYSh2bWEsIG9iai0+Y2FjaGVf bGV2ZWwsIEdMT0JBTF9CSU5EKTsKPiArCQlpOTE1X3ZtYV9iaW5kKHZtYSwgb2JqLT5jYWNoZV9s ZXZlbCwgR0xPQkFMX0JJTkQpOwo+ICAKPiAgCWlmICgoYm91bmQgXiB2bWEtPmJvdW5kKSAmIEdM T0JBTF9CSU5EKSB7Cj4gIAkJYm9vbCBtYXBwYWJsZSwgZmVuY2VhYmxlOwo+IEBAIC00NTAyLDEy ICs0NTE3LDEzIEBAIHZvaWQgaTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnZW1fb2JqKQo+ICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICB9Cj4g IAo+IC1zdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29ial90b192bWEoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pCj4gK3N0cnVjdCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX3ZtYV92aWV3KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQkgICAgICAgICAgc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZp ZXcpCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykKPiAtCQlpZiAodm1hLT52bSA9PSB2bSkK PiArCQlpZiAodm1hLT52bSA9PSB2bSAmJiB2bWEtPmdndHRfdmlldy50eXBlID09IHZpZXctPnR5 cGUpCj4gIAkJCXJldHVybiB2bWE7Cj4gIAo+ICAJcmV0dXJuIE5VTEw7Cj4gQEAgLTUxOTEsOCAr NTIwNyw5IEBAIGk5MTVfZ2VtX3Nocmlua2VyX2NvdW50KHN0cnVjdCBzaHJpbmtlciAqc2hyaW5r ZXIsIHN0cnVjdCBzaHJpbmtfY29udHJvbCAqc2MpCj4gIH0KPiAgCj4gIC8qIEFsbCB0aGUgbmV3 IFZNIHN0dWZmICovCj4gLXVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX29mZnNldChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiAtCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCj4gK3Vuc2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX29mZnNldF92aWV3KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+ICsJCQkJICAgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgKnZtLAo+ICsJCQkJICAgICAgIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvLT5iYXNlLmRldi0+ ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiBAQCAtNTIwMCw3ICs1MjE3 LDcgQEAgdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvLAo+ICAJV0FSTl9PTih2bSA9PSAmZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3Bw Z3R0LT5iYXNlKTsKPiAgCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm8tPnZtYV9saXN0 LCB2bWFfbGluaykgewo+IC0JCWlmICh2bWEtPnZtID09IHZtKQo+ICsJCWlmICh2bWEtPnZtID09 IHZtICYmIHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gdmlldykKPiAgCQkJcmV0dXJuIHZtYS0+bm9k ZS5zdGFydDsKPiAgCj4gIAl9Cj4gQEAgLTUzNDksOSArNTM2NiwxMiBAQCBzdHJ1Y3QgaTkxNV92 bWEgKmk5MTVfZ2VtX29ial90b19nZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Cj4gIHsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAKPiAtCXZtYSA9IGxpc3RfZmlyc3Rf ZW50cnkoJm9iai0+dm1hX2xpc3QsIHR5cGVvZigqdm1hKSwgdm1hX2xpbmspOwo+IC0JaWYgKHZt YS0+dm0gIT0gaTkxNV9vYmpfdG9fZ2d0dChvYmopKQo+IC0JCXJldHVybiBOVUxMOwo+ICsJbGlz dF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykgewo+ICsJCWlm ICh2bWEtPnZtICE9IGk5MTVfb2JqX3RvX2dndHQob2JqKSkKPiArCQkJY29udGludWU7Cj4gKwkJ aWYgKHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+ICsJCQly ZXR1cm4gdm1hOwo+ICsJfQo+ICAKPiAtCXJldHVybiB2bWE7Cj4gKwlyZXR1cm4gTlVMTDsKPiAg fQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRleCA3ZDMyNTcx Li5mODE1NTY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ IEBAIC01NzQsNyArNTc0LDcgQEAgc3RhdGljIGludCBkb19zd2l0Y2goc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqcmluZywKPiAgCj4gIAl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dCh0by0+bGVn YWN5X2h3X2N0eC5yY3Nfc3RhdGUpOwo+ICAJaWYgKCEodm1hLT5ib3VuZCAmIEdMT0JBTF9CSU5E KSkKPiAtCQl2bWEtPmJpbmRfdm1hKHZtYSwgdG8tPmxlZ2FjeV9od19jdHgucmNzX3N0YXRlLT5j YWNoZV9sZXZlbCwKPiArCQlpOTE1X3ZtYV9iaW5kKHZtYSwgdG8tPmxlZ2FjeV9od19jdHgucmNz X3N0YXRlLT5jYWNoZV9sZXZlbCwKPiAgCQkJCUdMT0JBTF9CSU5EKTsKPiAgCj4gIAlpZiAoIXRv LT5sZWdhY3lfaHdfY3R4LmluaXRpYWxpemVkIHx8IGk5MTVfZ2VtX2NvbnRleHRfaXNfZGVmYXVs dCh0bykpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGlu ZGV4IGUxZWQ4NWEuLjA3ZTI4NzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTM1OCw3ICszNTgsNyBAQCBpOTE1X2dlbV9leGVjYnVmZmVy X3JlbG9jYXRlX2VudHJ5KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAlpZiAo dW5saWtlbHkoSVNfR0VONihkZXYpICYmCj4gIAkgICAgcmVsb2MtPndyaXRlX2RvbWFpbiA9PSBJ OTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04gJiYKPiAgCSAgICAhKHRhcmdldF92bWEtPmJvdW5k ICYgR0xPQkFMX0JJTkQpKSkKPiAtCQl0YXJnZXRfdm1hLT5iaW5kX3ZtYSh0YXJnZXRfdm1hLCB0 YXJnZXRfaTkxNV9vYmotPmNhY2hlX2xldmVsLAo+ICsJCWk5MTVfdm1hX2JpbmQodGFyZ2V0X3Zt YSwgdGFyZ2V0X2k5MTVfb2JqLT5jYWNoZV9sZXZlbCwKPiAgCQkJCUdMT0JBTF9CSU5EKTsKPiAg Cj4gIAkvKiBWYWxpZGF0ZSB0aGF0IHRoZSB0YXJnZXQgaXMgaW4gYSB2YWxpZCByL3cgR1BVIGRv bWFpbiAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggZGUxMjAxNy4u M2Y4ODgxYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTMwLDYg KzMwLDggQEAKPiAgI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKPiAgI2luY2x1ZGUgImludGVsX2Ry di5oIgo+ICAKPiArY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3IGk5MTVfZ2d0dF92aWV3X25v cm1hbDsKPiArCj4gIHN0YXRpYyB2b2lkIGJkd19zZXR1cF9wcml2YXRlX3BwYXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgc3RhdGljIHZvaWQgY2h2X3NldHVwX3ByaXZh dGVfcHBhdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiBAQCAtNzEs NyArNzMsNyBAQCBzdGF0aWMgaW50IHNhbml0aXplX2VuYWJsZV9wcGd0dChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgZW5hYmxlX3BwZ3R0KQo+ICB9Cj4gIAo+ICAKPiAtc3RhdGljIHZvaWQg cHBndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gK3N0YXRpYyB2b2lkIHBwZ3R0 X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzLAo+ ICAJCQkgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gIAkJCSAgIHUzMiBm bGFncyk7Cj4gIHN0YXRpYyB2b2lkIHBwZ3R0X3VuYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2 bWEpOwo+IEBAIC0xMTk0LDcgKzExOTYsNyBAQCB2b2lkICBpOTE1X3BwZ3R0X3JlbGVhc2Uoc3Ry dWN0IGtyZWYgKmtyZWYpCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkCj4gLXBwZ3R0X2JpbmRfdm1h KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICtwcGd0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEg KnZtYSwgc3RydWN0IHNnX3RhYmxlICpwYWdlcywKPiAgCSAgICAgICBlbnVtIGk5MTVfY2FjaGVf bGV2ZWwgY2FjaGVfbGV2ZWwsCj4gIAkgICAgICAgdTMyIGZsYWdzKQo+ICB7Cj4gQEAgLTEyMDIs NyArMTIwNCw3IEBAIHBwZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJaWYg KHZtYS0+b2JqLT5ndF9ybykKPiAgCQlmbGFncyB8PSBQVEVfUkVBRF9PTkxZOwo+ICAKPiAtCXZt YS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHZtYS0+b2JqLT5wYWdlcywgdm1hLT5ub2Rl LnN0YXJ0LAo+ICsJdm1hLT52bS0+aW5zZXJ0X2VudHJpZXModm1hLT52bSwgcGFnZXMsIHZtYS0+ bm9kZS5zdGFydCwKPiAgCQkJCWNhY2hlX2xldmVsLCBmbGFncyk7Cj4gIH0KPiAgCj4gQEAgLTEz MzcsNyArMTMzOSw3IEBAIHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Moc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiAgCQkgKiB3aXRob3V0IHRlbGxpbmcgb3VyIG9iamVjdCBhYm91 dCBpdC4gU28gd2UgbmVlZCB0byBmYWtlIGl0Lgo+ICAJCSAqLwo+ICAJCXZtYS0+Ym91bmQgJj0g fkdMT0JBTF9CSU5EOwo+IC0JCXZtYS0+YmluZF92bWEodm1hLCBvYmotPmNhY2hlX2xldmVsLCBH TE9CQUxfQklORCk7Cj4gKwkJaTkxNV92bWFfYmluZCh2bWEsIG9iai0+Y2FjaGVfbGV2ZWwsIEdM T0JBTF9CSU5EKTsKPiAgCX0KPiAgCj4gIAo+IEBAIC0xMzY0LDkgKzEzNjYsMTAgQEAgdm9pZCBp OTE1X2dlbV9yZXN0b3JlX2d0dF9tYXBwaW5ncyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJ aTkxNV9nZ3R0X2ZsdXNoKGRldl9wcml2KTsKPiAgfQo+ICAKPiAtaW50IGk5MTVfZ2VtX2d0dF9w cmVwYXJlX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICtpbnQgaTkx NV9nZW1fZ3R0X3ByZXBhcmVfb2JqZWN0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gKwkJCQljb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4gIHsKPiAtCWlmIChv YmotPmhhc19kbWFfbWFwcGluZykKPiArCWlmIChvYmotPmhhc19kbWFfbWFwcGluZyB8fCB2aWV3 LT50eXBlICE9IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKClRoaXMgY2hlY2sgYW5kIHRoZSBvbmUg Zm9yIGZpbmlzaF9ndHQgYXJlIHdyb25nLiBwcmVwYXJlL2ZpbmlzaF9ndHQgc2V0IHVwCnRoZSBk bWFfYWRkciBmaWVsZHMgaW4gdGhlIHNnIHRhYmxlIChpZiBhdmFpbGFibGUgYWxzbyB0aGUgaW9t bXUgbWFwcGluZ3MKb24gYmlnIGNvcmUpLiBBbmQgdGhhdCBfbXVzdF8gYmUgZG9uZSB3aGVuIHRo ZSBmaXJzdCB2aWV3IHNob3dzIHVwLCBubwptYXR0ZXIgd2hpY2ggb25lIGl0IGlzLiBFLmcuIHVz ZXJzcGFjZSBtaWdodCBkaXNwbGF5IGEgcm90YXRlIGJ1ZmZlciByaWdodAphd2F5cyB3aXRob3V0 IGV2ZW4gcmVuZGVyaW5nIG9yIHdyaXRpbmcgaW50byBpdCAoaS5lLiBsZWF2aW5nIGl0IGJsYWNr KS4KClRoZSBjaGFuZ2UgYXJvdW5kIGZpbmlzaF9ndHQgaXMgYWN0dWFsbHkgYSBsZWFrIHNpbmNl IGlmIHRoZSBsYXN0IHZpZXcKYXJvdW5kIGlzIHRoZSByb3RhdGUgb25lICh3aGljaCBjYW4gaGFw cGVuIGlmIHVzZXJzcGFjZSBkcm9wcyB0aGUgYnVmZmVyCmJ1dCBsZWF2ZXMgaXQgZGlzcGxheWVk KSB3ZSB3b24ndCBjbGVhbiB1cCAoYW5kIHNvIGxlYWspIHRoZSBpb21tdQptYXBwaW5nLgoKQSBy ZWxhdGVkIGNvbW1lbnQgd2hpY2ggb25seSBhcHBsaWVzIHRvIHRoZSBpbnRlcm5hbCBwYXRjaCB3 aGljaCB1c2VzIGFsbAp0aGlzOiBGb3IgLT52bWFfYmluZCB5b3Ugb25seSBuZWVkIHRvIGZpbGwg aW4gdGhlIGRtYSBhZGRyLCBub3QgdGhlIHBhZ2UKcG9pbnRlciAtIHRoZSBwdGUgd3JpdGluZyBm dW5jdGlvbnMgZG9uJ3QgbmVlZCBtb3JlLiBFdmVuIG1vcmUgc29tZSBvYmplY3QKdHlwZXMgKHN0 b2xlbiBhbmQgc29tZSBkbWEtYnVmIGltcG9ydHMpIGRvbid0IGhhdmUgYW55IHBhZ2UgcG9pbnRl cnMKYXNzaWduZWQsIGFuZCBzbyB0aGUgcm90YXRpb24gY29kZSB3b3VsZCBvb3BzIHNpbmNlIHRo ZSBwYWdlIHBvaW50ZXIgaXMKTlVMTC4KCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKCFkbWFf bWFwX3NnKCZvYmotPmJhc2UuZGV2LT5wZGV2LT5kZXYsCj4gQEAgLTE1MjMsNyArMTUyNiw3IEBA IHN0YXRpYyB2b2lkIGdlbjZfZ2d0dF9jbGVhcl9yYW5nZShzdHJ1Y3QgaTkxNV9hZGRyZXNzX3Nw YWNlICp2bSwKPiAgfQo+ICAKPiAgCj4gLXN0YXRpYyB2b2lkIGk5MTVfZ2d0dF9iaW5kX3ZtYShz dHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiArc3RhdGljIHZvaWQgaTkxNV9nZ3R0X2JpbmRfdm1hKHN0 cnVjdCBpOTE1X3ZtYSAqdm1hLCBzdHJ1Y3Qgc2dfdGFibGUgKnBhZ2VzLAo+ICAJCQkgICAgICAg ZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAo+ICAJCQkgICAgICAgdTMyIHVudXNl ZCkKPiAgewo+IEBAIC0xNTMyLDcgKzE1MzUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dndHRfYmlu ZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gIAkJQUdQX1VTRVJfTUVNT1JZIDogQUdQX1VT RVJfQ0FDSEVEX01FTU9SWTsKPiAgCj4gIAlCVUdfT04oIWk5MTVfaXNfZ2d0dCh2bWEtPnZtKSk7 Cj4gLQlpbnRlbF9ndHRfaW5zZXJ0X3NnX2VudHJpZXModm1hLT5vYmotPnBhZ2VzLCBlbnRyeSwg ZmxhZ3MpOwo+ICsJaW50ZWxfZ3R0X2luc2VydF9zZ19lbnRyaWVzKHBhZ2VzLCBlbnRyeSwgZmxh Z3MpOwo+ICAJdm1hLT5ib3VuZCA9IEdMT0JBTF9CSU5EOwo+ICB9Cj4gIAo+IEBAIC0xNTU2LDcg KzE1NTksNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkKPiAgCWludGVsX2d0dF9jbGVhcl9yYW5nZShmaXJzdCwgc2l6ZSk7Cj4gIH0KPiAg Cj4gLXN0YXRpYyB2b2lkIGdndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gK3N0 YXRpYyB2b2lkIGdndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsIHN0cnVjdCBzZ190 YWJsZSAqcGFnZXMsCj4gIAkJCSAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAo+ ICAJCQkgIHUzMiBmbGFncykKPiAgewo+IEBAIC0xNTgyLDcgKzE1ODUsNyBAQCBzdGF0aWMgdm9p ZCBnZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJaWYgKCFkZXZfcHJpdi0+ bW0uYWxpYXNpbmdfcHBndHQgfHwgZmxhZ3MgJiBHTE9CQUxfQklORCkgewo+ICAJCWlmICghKHZt YS0+Ym91bmQgJiBHTE9CQUxfQklORCkgfHwKPiAgCQkgICAgKGNhY2hlX2xldmVsICE9IG9iai0+ Y2FjaGVfbGV2ZWwpKSB7Cj4gLQkJCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIG9i ai0+cGFnZXMsCj4gKwkJCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHBhZ2VzLAo+ ICAJCQkJCQl2bWEtPm5vZGUuc3RhcnQsCj4gIAkJCQkJCWNhY2hlX2xldmVsLCBmbGFncyk7Cj4g IAkJCXZtYS0+Ym91bmQgfD0gR0xPQkFMX0JJTkQ7Cj4gQEAgLTE1OTQsNyArMTU5Nyw3IEBAIHN0 YXRpYyB2b2lkIGdndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gIAkgICAgIChj YWNoZV9sZXZlbCAhPSBvYmotPmNhY2hlX2xldmVsKSkpIHsKPiAgCQlzdHJ1Y3QgaTkxNV9od19w cGd0dCAqYXBwZ3R0ID0gZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0Owo+ICAJCWFwcGd0dC0+ YmFzZS5pbnNlcnRfZW50cmllcygmYXBwZ3R0LT5iYXNlLAo+IC0JCQkJCSAgICB2bWEtPm9iai0+ cGFnZXMsCj4gKwkJCQkJICAgIHBhZ2VzLAo+ICAJCQkJCSAgICB2bWEtPm5vZGUuc3RhcnQsCj4g IAkJCQkJICAgIGNhY2hlX2xldmVsLCBmbGFncyk7Cj4gIAkJdm1hLT5ib3VuZCB8PSBMT0NBTF9C SU5EOwo+IEBAIC0xNjI1LDcgKzE2MjgsOCBAQCBzdGF0aWMgdm9pZCBnZ3R0X3VuYmluZF92bWEo c3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIAl9Cj4gIH0KPiAgCj4gLXZvaWQgaTkxNV9nZW1fZ3R0 X2ZpbmlzaF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiArdm9pZCBp OTE1X2dlbV9ndHRfZmluaXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+ICsJCQkJY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gQEAgLTE2MzMsNyArMTYzNyw3 IEBAIHZvaWQgaTkxNV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaikKPiAgCj4gIAlpbnRlcnJ1cHRpYmxlID0gZG9faWRsaW5nKGRldl9wcml2KTsK PiAgCj4gLQlpZiAoIW9iai0+aGFzX2RtYV9tYXBwaW5nKQo+ICsJaWYgKCFvYmotPmhhc19kbWFf bWFwcGluZyAmJiB2aWV3LT50eXBlID09IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKPiAgCQlkbWFf dW5tYXBfc2coJmRldi0+cGRldi0+ZGV2LAo+ICAJCQkgICAgIG9iai0+cGFnZXMtPnNnbCwgb2Jq LT5wYWdlcy0+bmVudHMsCj4gIAkJCSAgICAgUENJX0RNQV9CSURJUkVDVElPTkFMKTsKPiBAQCAt MjEzNSw3ICsyMTM5LDggQEAgaW50IGk5MTVfZ2VtX2d0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIH0KPiAgCj4gIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKl9faTkxNV9nZW1fdm1h X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCQkJCSAgICAgIHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICsJCQkJCSAgICAgIHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmll dyAqdmlldykKPiAgewo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBremFsbG9jKHNpemVvZigq dm1hKSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAodm1hID09IE5VTEwpCj4gQEAgLTIxNDYsNiArMjE1 MSw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKl9faTkxNV9nZW1fdm1hX2NyZWF0ZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJSU5JVF9MSVNUX0hFQUQoJnZtYS0+ZXhl Y19saXN0KTsKPiAgCXZtYS0+dm0gPSB2bTsKPiAgCXZtYS0+b2JqID0gb2JqOwo+ICsJdm1hLT5n Z3R0X3ZpZXcgPSAqdmlldzsKPiAgCj4gIAlzd2l0Y2ggKElOVEVMX0lORk8odm0tPmRldiktPmdl bikgewo+ICAJY2FzZSA5Ogo+IEBAIC0yMTg0LDE0ICsyMTkwLDQzIEBAIHN0YXRpYyBzdHJ1Y3Qg aTkxNV92bWEgKl9faTkxNV9nZW1fdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+ICB9Cj4gIAo+ICBzdHJ1Y3QgaTkxNV92bWEgKgo+IC1pOTE1X2dlbV9vYmpfbG9v a3VwX29yX2NyZWF0ZV92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJ CSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gK2k5MTVfZ2VtX29ial9sb29rdXBf b3JfY3JlYXRlX3ZtYV92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJ CQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gKwkJCQkgICAgICAgY29u c3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQo+ICB7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEg KnZtYTsKPiAgCj4gLQl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fdm1hKG9iaiwgdm0pOwo+ICsJdm1h ID0gaTkxNV9nZW1fb2JqX3RvX3ZtYV92aWV3KG9iaiwgdm0sIHZpZXcpOwo+ICAJaWYgKCF2bWEp Cj4gLQkJdm1hID0gX19pOTE1X2dlbV92bWFfY3JlYXRlKG9iaiwgdm0pOwo+ICsJCXZtYSA9IF9f aTkxNV9nZW1fdm1hX2NyZWF0ZShvYmosIHZtLCB2aWV3KTsKPiAgCj4gIAlyZXR1cm4gdm1hOwo+ ICB9Cj4gKwo+ICtzdGF0aWMgaW5saW5lCj4gK3N0cnVjdCBzZ190YWJsZSAqaTkxNV9nZ3R0X3Zp ZXdfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gK3sKPiArCXN0cnVjdCBzZ190YWJsZSAq cGFnZXMgPSBFUlJfUFRSKC1FSU5WQUwpOwo+ICsKPiArCWlmICh2bWEtPmdndHRfdmlldy50eXBl ID09IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKPiArCQlwYWdlcyA9IHZtYS0+b2JqLT5wYWdlczsK PiArCWVsc2UKPiArCQlXQVJOKDEsICJOb3QgaW1wbGVtZW50ZWQhXG4iKTsKPiArCj4gKwlyZXR1 cm4gcGFnZXM7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEg KnZtYSwgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAo+ICsJCQl1MzIgZmxhZ3Mp Cj4gK3sKPiArCXN0cnVjdCBzZ190YWJsZSAqcGFnZXMgPSBpOTE1X2dndHRfdmlld19wYWdlcyh2 bWEpOwo+ICsKPiArCWlmIChwYWdlcyAmJiAhSVNfRVJSKHBhZ2VzKSkgewo+ICsJCXZtYS0+Ymlu ZF92bWEodm1hLCBwYWdlcywgY2FjaGVfbGV2ZWwsIGZsYWdzKTsKPiArCj4gKwkJaWYgKHZtYS0+ Z2d0dF92aWV3LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKSB7Cj4gKwkJCXNnX2ZyZWVf dGFibGUocGFnZXMpOwo+ICsJCQlrZnJlZShwYWdlcyk7Cj4gKwkJfQo+ICsJfQo+ICt9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCBkMDU2MmQwLi5kYjZhYzYwIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtMTA5LDcgKzEwOSwxOCBAQCB0 eXBlZGVmIGdlbjhfZ3R0X3B0ZV90IGdlbjhfcHBndHRfcGRlX3Q7Cj4gICNkZWZpbmUgR0VOOF9Q UEFUX0VMTENfT1ZFUlJJREUJCSgwPDwyKQo+ICAjZGVmaW5lIEdFTjhfUFBBVChpLCB4KQkJCSgo dWludDY0X3QpICh4KSA8PCAoKGkpICogOCkpCj4gIAo+ICtlbnVtIGk5MTVfZ2d0dF92aWV3X3R5 cGUgewo+ICsJSTkxNV9HR1RUX1ZJRVdfTk9STUFMID0gMCwKPiArfTsKPiArCj4gK3N0cnVjdCBp OTE1X2dndHRfdmlldyB7Cj4gKwllbnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgdHlwZTsKPiArfTsK PiArCj4gK2V4dGVybiBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgaTkxNV9nZ3R0X3ZpZXdf bm9ybWFsOwo+ICsKPiAgZW51bSBpOTE1X2NhY2hlX2xldmVsOwo+ICsKPiAgLyoqCj4gICAqIEEg Vk1BIHJlcHJlc2VudHMgYSBHRU0gQk8gdGhhdCBpcyBib3VuZCBpbnRvIGFuIGFkZHJlc3Mgc3Bh Y2UuIFRoZXJlZm9yZSwgYQo+ICAgKiBWTUEncyBwcmVzZW5jZSBjYW5ub3QgYmUgZ3VhcmFudGVl ZCBiZWZvcmUgYmluZGluZywgb3IgYWZ0ZXIgdW5iaW5kaW5nIHRoZQo+IEBAIC0xMjksNiArMTQw LDE1IEBAIHN0cnVjdCBpOTE1X3ZtYSB7Cj4gICNkZWZpbmUgUFRFX1JFQURfT05MWQkoMTw8MikK PiAgCXVuc2lnbmVkIGludCBib3VuZCA6IDQ7Cj4gIAo+ICsJLyoqCj4gKwkgKiBTdXBwb3J0IGRp ZmZlcmVudCBHR1RUIHZpZXdzIGludG8gdGhlIHNhbWUgb2JqZWN0Lgo+ICsJICogVGhpcyBtZWFu cyB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgVk1BIG1hcHBpbmdzIHBlciBvYmplY3QgYW5kIHBlciBW TS4KPiArCSAqIGk5MTVfZ2d0dF92aWV3X3R5cGUgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCBiZXR3 ZWVuIHRob3NlIGVudHJpZXMuCj4gKwkgKiBUaGUgZGVmYXVsdCBvbmUgb2YgemVybyAoSTkxNV9H R1RUX1ZJRVdfTk9STUFMKSBpcyBkZWZhdWx0IGFuZCBhbHNvCj4gKwkgKiBhc3N1bWVkIGluIEdF TSBmdW5jdGlvbnMgd2hpY2ggdGFrZSBubyBnZ3R0IHZpZXcgcGFyYW1ldGVyLgo+ICsJICovCj4g KwlzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgZ2d0dF92aWV3Owo+ICsKPiAgCS8qKiBUaGlzIG9iamVj dCdzIHBsYWNlIG9uIHRoZSBhY3RpdmUvaW5hY3RpdmUgbGlzdHMgKi8KPiAgCXN0cnVjdCBsaXN0 X2hlYWQgbW1fbGlzdDsKPiAgCj4gQEAgLTE2MSw3ICsxODEsNyBAQCBzdHJ1Y3QgaTkxNV92bWEg ewo+ICAJICogc2V0dGluZyB0aGUgdmFsaWQgUFRFIGVudHJpZXMgdG8gYSByZXNlcnZlZCBzY3Jh dGNoIHBhZ2UuICovCj4gIAl2b2lkICgqdW5iaW5kX3ZtYSkoc3RydWN0IGk5MTVfdm1hICp2bWEp Owo+ICAJLyogTWFwIGFuIG9iamVjdCBpbnRvIGFuIGFkZHJlc3Mgc3BhY2Ugd2l0aCB0aGUgZ2l2 ZW4gY2FjaGUgZmxhZ3MuICovCj4gLQl2b2lkICgqYmluZF92bWEpKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLAo+ICsJdm9pZCAoKmJpbmRfdm1hKShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgc3RydWN0IHNn X3RhYmxlICpwYWdlcywKPiAgCQkJIGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwK PiAgCQkJIHUzMiBmbGFncyk7Cj4gIH07Cj4gQEAgLTI5OSw3ICszMTksMTAgQEAgdm9pZCBpOTE1 X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gIHZvaWQg aTkxNV9nZW1fc3VzcGVuZF9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4g IHZvaWQgaTkxNV9nZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gIAo+IC1pbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2d0dF9wcmVwYXJlX29iamVjdChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiAtdm9pZCBpOTE1X2dlbV9ndHRfZmlu aXNoX29iamVjdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiAraW50IF9fbXVz dF9jaGVjawo+ICtpOTE1X2dlbV9ndHRfcHJlcGFyZV9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiArCQkJICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmll dyk7Cj4gK3ZvaWQgaTkxNV9nZW1fZ3R0X2ZpbmlzaF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiArCQkJCWNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldyk7 Cj4gIAo+ICAjZW5kaWYKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBpbmRl eCBkMTczNjBiLi44ZWJlNDViIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jCj4gQEAgLTcxNywxMCArNzE3LDggQEAgc3RhdGljIHUzMiBjYXB0dXJlX3Bpbm5lZF9ibyhz dHJ1Y3QgZHJtX2k5MTVfZXJyb3JfYnVmZmVyICplcnIsCj4gIAkJCWJyZWFrOwo+ICAKPiAgCQls aXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQo+IC0JCQlp ZiAodm1hLT52bSA9PSB2bSAmJiB2bWEtPnBpbl9jb3VudCA+IDApIHsKPiArCQkJaWYgKHZtYS0+ dm0gPT0gdm0gJiYgdm1hLT5waW5fY291bnQgPiAwKQo+ICAJCQkJY2FwdHVyZV9ibyhlcnIrKywg dm1hKTsKPiAtCQkJCWJyZWFrOwo+IC0JCQl9Cj4gIAl9Cj4gIAo+ICAJcmV0dXJuIGVyciAtIGZp cnN0Owo+IEBAIC0xMDk2LDEwICsxMDk0LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fY2FwdHVy ZV92bShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJbGlzdF9mb3Jf ZWFjaF9lbnRyeShvYmosICZkZXZfcHJpdi0+bW0uYm91bmRfbGlzdCwgZ2xvYmFsX2xpc3QpIHsK PiAgCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQo+ IC0JCQlpZiAodm1hLT52bSA9PSB2bSAmJiB2bWEtPnBpbl9jb3VudCA+IDApIHsKPiArCQkJaWYg KHZtYS0+dm0gPT0gdm0gJiYgdm1hLT5waW5fY291bnQgPiAwKQo+ICAJCQkJaSsrOwo+IC0JCQkJ YnJlYWs7Cj4gLQkJCX0KPiAgCX0KPiAgCWVycm9yLT5waW5uZWRfYm9fY291bnRbbmR4XSA9IGkg LSBlcnJvci0+YWN0aXZlX2JvX2NvdW50W25keF07Cj4gIAo+IC0tIAo+IDIuMS4xCj4gCj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5p ZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgorNDEgKDApIDc5 IDM2NSA1NyA0OCAtIGh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==