From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 04/17] drm/i915: Unify aliasing ppgtt handling Date: Fri, 17 Apr 2015 16:36:02 +0300 Message-ID: <87vbgu27y5.fsf@gaia.fi.intel.com> References: <1429025727-15380-1-git-send-email-daniel.vetter@ffwll.ch> <1429025727-15380-5-git-send-email-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 596D96EB61 for ; Fri, 17 Apr 2015 06:36:43 -0700 (PDT) In-Reply-To: <1429025727-15380-5-git-send-email-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel Graphics Development Cc: Daniel Vetter , Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org RGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4gd3JpdGVzOgoKPiBXaXRoIHRo ZSBkeW5hbWljIHBhZ2V0YWJsZSBhbGxvYyBjb2RlIGFsaWFzaW5nIHBwZ3R0IHNwZWNpYWwtY2Fz ZXMKPiB3aGVyZSBhZ2FpbiBtaXhlZCBpbiBhbGwgb3ZlciB0aGUgcGxhY2Ugd2l0aCB0aGUgbG93 LWxldmVsIGluaXQgY29kZS4KPgo+IEV4dHJhY3QgdGhlIHZhIHByZWFsbG9jYXRpb24gYW5kIGNs ZWFyaW5nIGFnYWluIGludG8gdGhlIGNvbW1vbiBjb2RlCj4gd2hlcmUgYWxpYXNpbmcgcHBndHQg Z2V0cyBzZXQgdXAuCj4KPiBOb3RlIHRoYXQgd2l0aCB0aGlzIHdlIGRvbid0IHNldCB0aGUgc2l6 ZSBvZiB0aGUgYWxpYXNpbmcgcHBndHQgdG8gdGhlCj4gc2l6ZSBvZiB0aGUgcGFyZW50IGdndHQg YWRkcmVzcyBzcGFjZS4gV2hpY2ggaXNuJ3QgcmVxdWlyZWQgYXQgYWxsCj4gc2luY2UgZXhjZXB0 IGZvciB0aGUgcHBndHQgc2V0dXAvY2xlYW51cCBjb2RlIG5vIG9uZSBldmVyIGxvb2tzIGF0Cj4g dGhpcy4KPgo+IFNpZ25lZC1vZmYtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50 ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDEz NCArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQs IDI0IGluc2VydGlvbnMoKyksIDExMCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jCj4gaW5kZXggYWJiMTFmMTM5ZDI1Li43NTc4N2YxZDI3NTEgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0zODcsNTAgKzM4Nyw2IEBAIGZhaWxf Yml0bWFwOgo+ICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAgfQo+ICAKPiAtLyoqCj4gLSAqIGFs bG9jX3B0X3JhbmdlKCkgLSBBbGxvY2F0ZSBhIG11bHRpcGxlIHBhZ2UgdGFibGVzCj4gLSAqIEBw ZDoJCVRoZSBwYWdlIGRpcmVjdG9yeSB3aGljaCB3aWxsIGhhdmUgYXQgbGVhc3QgQGNvdW50IGVu dHJpZXMKPiAtICoJCWF2YWlsYWJsZSB0byBwb2ludCB0byB0aGUgYWxsb2NhdGVkIHBhZ2UgdGFi bGVzLgo+IC0gKiBAcGRlOglGaXJzdCBwYWdlIGRpcmVjdG9yeSBlbnRyeSBmb3Igd2hpY2ggd2Ug YXJlIGFsbG9jYXRpbmcuCj4gLSAqIEBjb3VudDoJTnVtYmVyIG9mIHBhZ2VzIHRvIGFsbG9jYXRl Lgo+IC0gKiBAZGV2OglEUk0gZGV2aWNlLgo+IC0gKgo+IC0gKiBBbGxvY2F0ZXMgbXVsdGlwbGUg cGFnZSB0YWJsZSBwYWdlcyBhbmQgc2V0cyB0aGUgYXBwcm9wcmlhdGUgZW50cmllcyBpbiB0aGUK PiAtICogcGFnZSB0YWJsZSBzdHJ1Y3R1cmUgd2l0aGluIHRoZSBwYWdlIGRpcmVjdG9yeS4gRnVu Y3Rpb24gY2xlYW5zIHVwIGFmdGVyCj4gLSAqIGl0c2VsZiBvbiBhbnkgZmFpbHVyZXMuCj4gLSAq Cj4gLSAqIFJldHVybjogMCBpZiBhbGxvY2F0aW9uIHN1Y2NlZWRlZC4KPiAtICovCj4gLXN0YXRp YyBpbnQgYWxsb2NfcHRfcmFuZ2Uoc3RydWN0IGk5MTVfcGFnZV9kaXJlY3RvcnkgKnBkLCB1aW50 MTZfdCBwZGUsIHNpemVfdCBjb3VudCwKPiAtCQkJICBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ IC17Cj4gLQlpbnQgaSwgcmV0Owo+IC0KPiAtCS8qIDUxMiBpcyB0aGUgbWF4IHBhZ2UgdGFibGVz IHBlciBwYWdlX2RpcmVjdG9yeSBvbiBhbnkgcGxhdGZvcm0uICovCj4gLQlpZiAoV0FSTl9PTihw ZGUgKyBjb3VudCA+IEk5MTVfUERFUykpCj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQo+IC0JZm9y IChpID0gcGRlOyBpIDwgcGRlICsgY291bnQ7IGkrKykgewo+IC0JCXN0cnVjdCBpOTE1X3BhZ2Vf dGFibGUgKnB0ID0gYWxsb2NfcHRfc2luZ2xlKGRldik7Cj4gLQo+IC0JCWlmIChJU19FUlIocHQp KSB7Cj4gLQkJCXJldCA9IFBUUl9FUlIocHQpOwo+IC0JCQlnb3RvIGVycl9vdXQ7Cj4gLQkJfQo+ IC0JCVdBUk4ocGQtPnBhZ2VfdGFibGVbaV0sCj4gLQkJICAgICAiTGVha2luZyBwYWdlIGRpcmVj dG9yeSBlbnRyeSAlZCAoJXApXG4iLAo+IC0JCSAgICAgaSwgcGQtPnBhZ2VfdGFibGVbaV0pOwo+ IC0JCXBkLT5wYWdlX3RhYmxlW2ldID0gcHQ7Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLQo+ IC1lcnJfb3V0Ogo+IC0Jd2hpbGUgKGktLSA+IHBkZSkKPiAtCQl1bm1hcF9hbmRfZnJlZV9wdChw ZC0+cGFnZV90YWJsZVtpXSwgZGV2KTsKPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gIHN0YXRp YyB2b2lkIHVubWFwX2FuZF9mcmVlX3BkKHN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpwZCwK PiAgCQkJICAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+IEBAIC05NzEsNyArOTI3 LDcgQEAgZXJyX291dDoKPiAgICogc3BhY2UuCj4gICAqCj4gICAqLwo+IC1zdGF0aWMgaW50IGdl bjhfcHBndHRfaW5pdF9jb21tb24oc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCB1aW50NjRf dCBzaXplKQo+ICtzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0 dCAqcHBndHQpCj4gIHsKPiAgCXBwZ3R0LT5zY3JhdGNoX3B0ID0gYWxsb2NfcHRfc2luZ2xlKHBw Z3R0LT5iYXNlLmRldik7Cj4gIAlpZiAoSVNfRVJSKHBwZ3R0LT5zY3JhdGNoX3B0KSkKPiBAQCAt OTg1LDggKzk0MSw5IEBAIHN0YXRpYyBpbnQgZ2VuOF9wcGd0dF9pbml0X2NvbW1vbihzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQsIHVpbnQ2NF90IHNpemUpCj4gIAlnZW44X2luaXRpYWxpemVf cGQoJnBwZ3R0LT5iYXNlLCBwcGd0dC0+c2NyYXRjaF9wZCk7Cj4gIAo+ICAJcHBndHQtPmJhc2Uu c3RhcnQgPSAwOwo+IC0JcHBndHQtPmJhc2UudG90YWwgPSBzaXplOwo+ICsJcHBndHQtPmJhc2Uu dG90YWwgPSAxVUxMIDw8IDMyOwoKVGhpcyB3YXJucyBvbiAzMmJpdCBidWlsZHMgZHVlIHRvIG92 ZXJmbG93LgoKU2VlbXMgdGhhdCBJIGhhdmUgYWxyZWFkeSB0cmlwcGVkIG9uIHRoaXMgd2hlbiBJ IHJldmlld2VkIDRnYgpkZWZhdWx0IHBwZ3R0IHNpemUgcGF0Y2guCgpXZSBzaG91bGQgZG8gYSBm b2xsb3ctdXAgcGF0Y2ggd2l0aDoKCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCkBAIC0yMjks NyArMjI5LDcgQEAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSB7CiAgICAgICAgc3RydWN0IGRy bV9kZXZpY2UgKmRldjsKICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGdsb2JhbF9saW5rOwogICAg ICAgIHVuc2lnbmVkIGxvbmcgc3RhcnQ7ICAgICAgICAgICAgLyogU3RhcnQgb2Zmc2V0IGFsd2F5 cyAwIGZvcgogICAgICAgIGRyaTIgKi8KLSAgICAgICBzaXplX3QgdG90YWw7ICAgICAgICAgICAv KiBzaXplIGFkZHIgc3BhY2UgbWFwcyAoZXguIDJHQiBmb3IgZ2d0dCkgKi8KKyAgICAgICB1NjQg c2l6ZTsgICAgICAgICAgICAgICAvKiBzaXplIGFkZHIgc3BhY2UgbWFwcyAoZXguIDJHQiBmb3Ig Z2d0dCkgKi8KCi1NaWthCgoKPiAgCXBwZ3R0LT5iYXNlLmNsZWFudXAgPSBnZW44X3BwZ3R0X2Ns ZWFudXA7Cj4gKwlwcGd0dC0+YmFzZS5hbGxvY2F0ZV92YV9yYW5nZSA9IGdlbjhfYWxsb2NfdmFf cmFuZ2U7Cj4gIAlwcGd0dC0+YmFzZS5pbnNlcnRfZW50cmllcyA9IGdlbjhfcHBndHRfaW5zZXJ0 X2VudHJpZXM7Cj4gIAlwcGd0dC0+YmFzZS5jbGVhcl9yYW5nZSA9IGdlbjhfcHBndHRfY2xlYXJf cmFuZ2U7Cj4gIAlwcGd0dC0+YmFzZS51bmJpbmRfdm1hID0gcHBndHRfdW5iaW5kX3ZtYTsKPiBA QCAtOTk3LDQ2ICs5NTQsNiBAQCBzdGF0aWMgaW50IGdlbjhfcHBndHRfaW5pdF9jb21tb24oc3Ry dWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCB1aW50NjRfdCBzaXplKQo+ICAJcmV0dXJuIDA7Cj4g IH0KPiAgCj4gLXN0YXRpYyBpbnQgZ2VuOF9hbGlhc2luZ19wcGd0dF9pbml0KHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCkKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBwZ3R0 LT5iYXNlLmRldjsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gLQl1aW50NjRfdCBzdGFydCA9IDAsIHNpemUgPSBkZXZfcHJpdi0+Z3R0 LmJhc2UudG90YWw7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCXJldCA9IGdlbjhfcHBndHRfaW5pdF9j b21tb24ocHBndHQsIGRldl9wcml2LT5ndHQuYmFzZS50b3RhbCk7Cj4gLQlpZiAocmV0KQo+IC0J CXJldHVybiByZXQ7Cj4gLQo+IC0JLyogQWxpYXNpbmcgUFBHVFQgaGFzIHRvIGFsd2F5cyB3b3Jr IGFuZCBiZSBtYXBwZWQgYmVjYXVzZSBvZiB0aGUgd2F5IHdlCj4gLQkgKiB1c2UgUkVTVE9SRV9J TkhJQklUIGluIHRoZSBjb250ZXh0IHN3aXRjaC4gVGhpcyB3aWxsIGJlIGZpeGVkCj4gLQkgKiBl dmVudHVhbGx5LiAqLwo+IC0JcmV0ID0gZ2VuOF9hbGxvY192YV9yYW5nZSgmcHBndHQtPmJhc2Us IHN0YXJ0LCBzaXplKTsKPiAtCWlmIChyZXQpIHsKPiAtCQl1bm1hcF9hbmRfZnJlZV9wZChwcGd0 dC0+c2NyYXRjaF9wZCwgcHBndHQtPmJhc2UuZGV2KTsKPiAtCQl1bm1hcF9hbmRfZnJlZV9wdChw cGd0dC0+c2NyYXRjaF9wdCwgcHBndHQtPmJhc2UuZGV2KTsKPiAtCQlyZXR1cm4gcmV0Owo+IC0J fQo+IC0KPiAtCXBwZ3R0LT5iYXNlLmFsbG9jYXRlX3ZhX3JhbmdlID0gTlVMTDsKPiAtCXBwZ3R0 LT5iYXNlLmNsZWFyX3JhbmdlKCZwcGd0dC0+YmFzZSwgMCwgcHBndHQtPmJhc2UudG90YWwsIHRy dWUpOwo+IC0KPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+IC1zdGF0aWMgaW50IGdlbjhfcHBndHRf aW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCj4gLXsKPiAtCWludCByZXQ7Cj4gLQo+ IC0JcmV0ID0gZ2VuOF9wcGd0dF9pbml0X2NvbW1vbihwcGd0dCwgKDFVTEwgPDwgMzIpKTsKPiAt CWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiAtCj4gLQlwcGd0dC0+YmFzZS5hbGxvY2F0ZV92 YV9yYW5nZSA9IGdlbjhfYWxsb2NfdmFfcmFuZ2U7Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAt Cj4gIHN0YXRpYyB2b2lkIGdlbjZfZHVtcF9wcGd0dChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgewo+ICAJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0gPSAmcHBndHQtPmJhc2U7Cj4gQEAgLTE1MzMsNyArMTQ1MCw3IEBAIHN0YXRpYyB2b2lk IGdlbjZfc2NyYXRjaF92YV9yYW5nZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gIAkJ cHBndHQtPnBkLnBhZ2VfdGFibGVbcGRlXSA9IHBwZ3R0LT5zY3JhdGNoX3B0Owo+ICB9Cj4gIAo+ IC1zdGF0aWMgaW50IGdlbjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQs IGJvb2wgYWxpYXNpbmcpCj4gK3N0YXRpYyBpbnQgZ2VuNl9wcGd0dF9pbml0KHN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICpwcGd0dCkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBwZ3R0 LT5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7Cj4gQEAgLTE1NTYsMTggKzE0NzMsNyBAQCBzdGF0aWMgaW50IGdlbjZfcHBn dHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIGJvb2wgYWxpYXNpbmcpCj4gIAlp ZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0JaWYgKGFsaWFzaW5nKSB7Cj4gLQkJLyog cHJlYWxsb2NhdGUgYWxsIHB0cyAqLwo+IC0JCXJldCA9IGFsbG9jX3B0X3JhbmdlKCZwcGd0dC0+ cGQsIDAsIEk5MTVfUERFUywKPiAtCQkJCXBwZ3R0LT5iYXNlLmRldik7Cj4gLQo+IC0JCWlmIChy ZXQpIHsKPiAtCQkJZ2VuNl9wcGd0dF9jbGVhbnVwKCZwcGd0dC0+YmFzZSk7Cj4gLQkJCXJldHVy biByZXQ7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCXBwZ3R0LT5iYXNlLmFsbG9jYXRlX3ZhX3Jhbmdl ID0gYWxpYXNpbmcgPyBOVUxMIDogZ2VuNl9hbGxvY192YV9yYW5nZTsKPiArCXBwZ3R0LT5iYXNl LmFsbG9jYXRlX3ZhX3JhbmdlID0gZ2VuNl9hbGxvY192YV9yYW5nZTsKPiAgCXBwZ3R0LT5iYXNl LmNsZWFyX3JhbmdlID0gZ2VuNl9wcGd0dF9jbGVhcl9yYW5nZTsKPiAgCXBwZ3R0LT5iYXNlLmlu c2VydF9lbnRyaWVzID0gZ2VuNl9wcGd0dF9pbnNlcnRfZW50cmllczsKPiAgCXBwZ3R0LT5iYXNl LnVuYmluZF92bWEgPSBwcGd0dF91bmJpbmRfdm1hOwo+IEBAIC0xNTgzLDEwICsxNDg5LDcgQEAg c3RhdGljIGludCBnZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCBi b29sIGFsaWFzaW5nKQo+ICAJcHBndHQtPnBkX2FkZHIgPSAoZ2VuNl9wdGVfdCBfX2lvbWVtICop ZGV2X3ByaXYtPmd0dC5nc20gKwo+ICAJCXBwZ3R0LT5wZC5wZF9vZmZzZXQgLyBzaXplb2YoZ2Vu Nl9wdGVfdCk7Cj4gIAo+IC0JaWYgKGFsaWFzaW5nKQo+IC0JCXBwZ3R0LT5iYXNlLmNsZWFyX3Jh bmdlKCZwcGd0dC0+YmFzZSwgMCwgcHBndHQtPmJhc2UudG90YWwsIHRydWUpOwo+IC0JZWxzZQo+ IC0JCWdlbjZfc2NyYXRjaF92YV9yYW5nZShwcGd0dCwgMCwgcHBndHQtPmJhc2UudG90YWwpOwo+ ICsJZ2VuNl9zY3JhdGNoX3ZhX3JhbmdlKHBwZ3R0LCAwLCBwcGd0dC0+YmFzZS50b3RhbCk7Cj4g IAo+ICAJZ2VuNl93cml0ZV9wYWdlX3JhbmdlKGRldl9wcml2LCAmcHBndHQtPnBkLCAwLCBwcGd0 dC0+YmFzZS50b3RhbCk7Cj4gIAo+IEBAIC0xNjAwLDggKzE1MDMsNyBAQCBzdGF0aWMgaW50IGdl bjZfcHBndHRfaW5pdChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsIGJvb2wgYWxpYXNpbmcp Cj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBfX2h3X3BwZ3R0X2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LAo+IC0JCWJv b2wgYWxpYXNpbmcpCj4gK3N0YXRpYyBpbnQgX19od19wcGd0dF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgewo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCj4gQEAgLTE2 MDksOSArMTUxMSw3IEBAIHN0YXRpYyBpbnQgX19od19wcGd0dF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCXBwZ3R0LT5iYXNlLnNj cmF0Y2ggPSBkZXZfcHJpdi0+Z3R0LmJhc2Uuc2NyYXRjaDsKPiAgCj4gIAlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA4KQo+IC0JCXJldHVybiBnZW42X3BwZ3R0X2luaXQocHBndHQsIGFsaWFz aW5nKTsKPiAtCWVsc2UgaWYgKGFsaWFzaW5nKQo+IC0JCXJldHVybiBnZW44X2FsaWFzaW5nX3Bw Z3R0X2luaXQocHBndHQpOwo+ICsJCXJldHVybiBnZW42X3BwZ3R0X2luaXQocHBndHQpOwo+ICAJ ZWxzZQo+ICAJCXJldHVybiBnZW44X3BwZ3R0X2luaXQocHBndHQpOwo+ICB9Cj4gQEAgLTE2MjAs NyArMTUyMCw3IEBAIGludCBpOTE1X3BwZ3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAtCXJl dCA9IF9faHdfcHBndHRfaW5pdChkZXYsIHBwZ3R0LCBmYWxzZSk7Cj4gKwlyZXQgPSBfX2h3X3Bw Z3R0X2luaXQoZGV2LCBwcGd0dCk7Cj4gIAlpZiAocmV0ID09IDApIHsKPiAgCQlrcmVmX2luaXQo JnBwZ3R0LT5yZWYpOwo+ICAJCWRybV9tbV9pbml0KCZwcGd0dC0+YmFzZS5tbSwgcHBndHQtPmJh c2Uuc3RhcnQsCj4gQEAgLTIyNTUsMTMgKzIxNTUsMjcgQEAgc3RhdGljIGludCBpOTE1X2dlbV9z ZXR1cF9nbG9iYWxfZ3R0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJaWYgKCFwcGd0dCkK PiAgCQkJcmV0dXJuIC1FTk9NRU07Cj4gIAo+IC0JCXJldCA9IF9faHdfcHBndHRfaW5pdChkZXYs IHBwZ3R0LCB0cnVlKTsKPiArCQlyZXQgPSBfX2h3X3BwZ3R0X2luaXQoZGV2LCBwcGd0dCk7Cj4g KwkJaWYgKHJldCkgewo+ICsJCQlwcGd0dC0+YmFzZS5jbGVhbnVwKCZwcGd0dC0+YmFzZSk7Cj4g KwkJCWtmcmVlKHBwZ3R0KTsKPiArCQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCWlmIChw cGd0dC0+YmFzZS5hbGxvY2F0ZV92YV9yYW5nZSkKPiArCQkJcmV0ID0gcHBndHQtPmJhc2UuYWxs b2NhdGVfdmFfcmFuZ2UoJnBwZ3R0LT5iYXNlLCAwLAo+ICsJCQkJCQkJICAgIHBwZ3R0LT5iYXNl LnRvdGFsKTsKPiAgCQlpZiAocmV0KSB7Cj4gIAkJCXBwZ3R0LT5iYXNlLmNsZWFudXAoJnBwZ3R0 LT5iYXNlKTsKPiAgCQkJa2ZyZWUocHBndHQpOwo+ICAJCQlyZXR1cm4gcmV0Owo+ICAJCX0KPiAg Cj4gKwkJcHBndHQtPmJhc2UuY2xlYXJfcmFuZ2UoJnBwZ3R0LT5iYXNlLAo+ICsJCQkJCXBwZ3R0 LT5iYXNlLnN0YXJ0LAo+ICsJCQkJCXBwZ3R0LT5iYXNlLnRvdGFsLAo+ICsJCQkJCXRydWUpOwo+ ICsKPiAgCQlkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQgPSBwcGd0dDsKPiAgCX0KPiAgCj4g LS0gCj4gMi4xLjAKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==