From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 13/13] drm/i915: Compress GPU objects in error state Date: Fri, 5 Aug 2016 20:56:57 +0200 Message-ID: <20160805185657.GH6232@phenom.ffwll.local> References: <1470387964-3363-1-git-send-email-chris@chris-wilson.co.uk> <1470387964-3363-14-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 50A116EC2A for ; Fri, 5 Aug 2016 18:57:02 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id i5so4946031wmg.2 for ; Fri, 05 Aug 2016 11:57:02 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1470387964-3363-14-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBBdWcgMDUsIDIwMTYgYXQgMTA6MDY6MDRBTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IE91ciBlcnJvciBzdGF0ZXMgYXJlIHF1aWNrbHkgZ3Jvd2luZywgcGlubmluZyBrZXJu ZWwgbWVtb3J5IHdpdGggdGhlbS4KPiBUaGUgbWFqb3JpdHkgb2YgdGhlIHNwYWNlIGlzIHRha2Vu IHVwIGJ5IHRoZSBlcnJvciBvYmplY3RzLiBUaGVzZQo+IGNvbXByZXNzIHdlbGwgdXNpbmcgemxp YiBhbmQgd2l0aG91dCBkZWNvZGUgYXJlIG1vc3RseSBtZWFuaW5nbGVzcywgc28KPiBlbmNvZGlu ZyB0aGVtIGRvZXMgbm90IGhpbmRlciBxdWlja2x5IHBhcnNpbmcgdGhlIGVycm9yIHN0YXRlIGZv cgo+IGZhbWlsaWFyaXR5Lgo+IAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgoKU2VlbXMgdG8gYWxzbyBjb250YWluIGEgd2hvbGVzYWxlIHJl d29yayBvZiB0aGUgY2FwdHVyZSBsb2dpYyB1c2luZyBhIGdndHQKbWFwcGFibGUgZW50cnkuIFdv dWxkIGV4cGxhaW4gd2h5IHRoZSBtaXNzaW5nIGNsZmx1c2ggaXNuJ3QgYW4gaXNzdWUgZm9yCnlv dS4gSW1vIGJlc3QgaWYgdGhhdCBwYXJ0IGlzIHJlb3JkZXJlZCBhcyB0aGUgZmlyc3QgcGF0Y2gg KG9yIGF0IGxlYXN0CmJlZm9yZSBzdG9wX21hY2hpbmUsIHdoaWNoIHJlcXVpcmVzIHRoZSByZW1v dmFsIG9mIGNmbHVzaCksIGFuZCB0aGVuIHRoZQp6bGliIG9uIHRvcC4KCk9uIHRoZSBpZGVhIGl0 c2VsZiwgc2luY2UgSSBoYXZlIG5vIGNsdWU6IEhvdyBkbyB3ZSB1bmNvbXByZXNzIHRoZXNlCmFn YWluPyBQYXRjaGVkIGludGVsX2Vycm9yX2RlY29kZSwgb3IgY2FuIHpsaWIgZGVhbCB3aXRoIGlu LWxpbmUgc3RyZWFtcz8KLURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvS2Nv bmZpZyAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgfCAgIDQgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgICB8 ICAxMCArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAgIHwgICAyICsK PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyB8IDI3MSArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCj4gIDUgZmlsZXMgY2hhbmdlZCwgMTQ4IGluc2VydGlv bnMoKyksIDE0MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKPiBpbmRleCA3YmFk Y2VlODhlYmYuLmM4ZWEyMDUyNmFlZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwo+IEBAIC01LDYg KzUsNyBAQCBjb25maWcgRFJNX0k5MTUKPiAgCXNlbGVjdCBJTlRFTF9HVFQKPiAgCXNlbGVjdCBJ TlRFUlZBTF9UUkVFCj4gIAlzZWxlY3QgU1RPUF9NQUNISU5FCj4gKwlzZWxlY3QgWkxJQl9ERUZM QVRFCj4gIAkjIHdlIG5lZWQgc2htZnMgZm9yIHRoZSBzd2FwcGFibGUgYmFja2luZyBzdG9yZSwg YW5kIGluIHBhcnRpY3VsYXIKPiAgCSMgdGhlIHNobWVtX3JlYWRwYWdlKCkgd2hpY2ggZGVwZW5k cyB1cG9uIHRtcGZzCj4gIAlzZWxlY3QgU0hNRU0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBp bmRleCAzNzBhNGM5ZWVhNzAuLmVkYzFlNmQ2YmUwZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IEBAIC01MzQsNiArNTM0LDcgQEAgc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlIHsK PiAgCQl1MzIgdGFpbDsKPiAgCQl1MzIgaGVhZDsKPiAgCQl1MzIgY3RsOwo+ICsJCXUzMiBtb2Rl Owo+ICAJCXUzMiBod3M7Cj4gIAkJdTMyIGlwZWlyOwo+ICAJCXUzMiBpcGVocjsKPiBAQCAtNTUw LDkgKzU1MSwxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgewo+ICAJCXUzMiBzZW1h cGhvcmVfbWJveGVzW0k5MTVfTlVNX0VOR0lORVMgLSAxXTsKPiAgCj4gIAkJc3RydWN0IGRybV9p OTE1X2Vycm9yX29iamVjdCB7Cj4gLQkJCWludCBwYWdlX2NvdW50Owo+ICAJCQl1NjQgZ3R0X29m ZnNldDsKPiAgCQkJdTY0IGd0dF9zaXplOwo+ICsJCQlpbnQgcGFnZV9jb3VudDsKPiArCQkJaW50 IHVudXNlZDsKPiAgCQkJdTMyICpwYWdlc1swXTsKPiAgCQl9ICpyaW5nYnVmZmVyLCAqYmF0Y2hi dWZmZXIsICp3YV9iYXRjaGJ1ZmZlciwgKmN0eCwgKmh3c19wYWdlOwo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDdjOWY2NTRkNTE1YS4uYzQ1ZTdmNDU2Y2VhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMjczNyw2ICsyNzM3LDE1 IEBAIGludCBpOTE1X2dlbV9pbml0X2dndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiArCS8qIFJlc2VydmUgYSBt YXBwYWJsZSBzbG90IGZvciBvdXIgbG9ja2xlc3MgZXJyb3IgY2FwdHVyZSAqLwo+ICsJcmV0ID0g ZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVyaWMoJmdndHQtPmJhc2UubW0sCj4gKwkJ CQkJCSAgJmdndHQtPmdwdV9lcnJvciwKPiArCQkJCQkJICA0MDk2LCAwLCAtMSwKPiArCQkJCQkJ ICAwLCBnZ3R0LT5tYXBwYWJsZV9lbmQsCj4gKwkJCQkJCSAgMCwgMCk7Cj4gKwlpZiAocmV0KQo+ ICsJCXJldHVybiByZXQ7Cj4gKwo+ICAJLyogQ2xlYXIgYW55IG5vbi1wcmVhbGxvY2F0ZWQgYmxv Y2tzICovCj4gIAlkcm1fbW1fZm9yX2VhY2hfaG9sZShlbnRyeSwgJmdndHQtPmJhc2UubW0sIGhv bGVfc3RhcnQsIGhvbGVfZW5kKSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiY2xlYXJpbmcgdW51c2Vk IEdUVCBzcGFjZTogWyVseCwgJWx4XVxuIiwKPiBAQCAtMjgwNCw2ICsyODEzLDcgQEAgdm9pZCBp OTE1X2dndHRfY2xlYW51cF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAlpZiAoZHJtX21tX2luaXRpYWxpemVkKCZnZ3R0LT5iYXNlLm1tKSkgewo+ICAJCWludGVsX3Zn dF9kZWJhbGxvb24oZGV2X3ByaXYpOwo+ICAKPiArCQlkcm1fbW1fcmVtb3ZlX25vZGUoJmdndHQt PmdwdV9lcnJvcik7Cj4gIAkJZHJtX21tX3Rha2Vkb3duKCZnZ3R0LT5iYXNlLm1tKTsKPiAgCQls aXN0X2RlbCgmZ2d0dC0+YmFzZS5nbG9iYWxfbGluayk7Cj4gIAl9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmgKPiBpbmRleCBjNTRhZTIzMjNkZjMuLjAxMGUxMGMwYjYyYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTQyOCw2ICs0MjgsOCBAQCBzdHJ1 Y3QgaTkxNV9nZ3R0IHsKPiAgCWJvb2wgZG9faWRsZV9tYXBzOwo+ICAKPiAgCWludCBtdHJyOwo+ ICsKPiArCXN0cnVjdCBkcm1fbW1fbm9kZSBncHVfZXJyb3I7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3Qg aTkxNV9od19wcGd0dCB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5k ZXggNjA3OGY0N2Q0YmMwLi5mMDM2NTg0ZTU1ZTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMKPiBAQCAtMjksNiArMjksNyBAQAo+ICAKPiAgI2luY2x1ZGUgPGdlbmVy YXRlZC91dHNyZWxlYXNlLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9zdG9wX21hY2hpbmUuaD4KPiAr I2luY2x1ZGUgPGxpbnV4L3psaWIuaD4KPiAgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gIAo+ICBz dGF0aWMgY29uc3QgY2hhciAqZW5naW5lX3N0cihpbnQgZW5naW5lKQo+IEBAIC0yMzcsNiArMjM4 LDggQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9lcnJv cl9zdGF0ZV9idWYgKm0sCj4gIAllcnJfcHJpbnRmKG0sICIgIEhFQUQ6ICAweCUwOHhcbiIsIGVl LT5oZWFkKTsKPiAgCWVycl9wcmludGYobSwgIiAgVEFJTDogIDB4JTA4eFxuIiwgZWUtPnRhaWwp Owo+ICAJZXJyX3ByaW50ZihtLCAiICBDVEw6ICAgMHglMDh4XG4iLCBlZS0+Y3RsKTsKPiArCWVy cl9wcmludGYobSwgIiAgTU9ERTogIDB4JTA4eCBbaWRsZT8gJWRdXG4iLAo+ICsJCSAgIGVlLT5t b2RlLCAhIShlZS0+bW9kZSAmIE1PREVfSURMRSkpOwo+ICAJZXJyX3ByaW50ZihtLCAiICBIV1M6 ICAgMHglMDh4XG4iLCBlZS0+aHdzKTsKPiAgCWVycl9wcmludGYobSwgIiAgQUNUSEQ6IDB4JTA4 eCAlMDh4XG4iLAo+ICAJCSAgICh1MzIpKGVlLT5hY3RoZD4+MzIpLCAodTMyKWVlLT5hY3RoZCk7 Cj4gQEAgLTMwNywxOCArMzEwLDQ2IEBAIHZvaWQgaTkxNV9lcnJvcl9wcmludGYoc3RydWN0IGRy bV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqZSwgY29uc3QgY2hhciAqZiwgLi4uKQo+ICAJdmFfZW5k KGFyZ3MpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgYm9vbAo+ICthc2NpaTg1X2VuY29kZSh1MzIgaW4s IGNoYXIgKm91dCkKPiArewo+ICsJaW50IGk7Cj4gKwo+ICsJaWYgKGluID09IDApCj4gKwkJcmV0 dXJuIGZhbHNlOwo+ICsKPiArCW91dFs1XSA9ICdcMCc7Cj4gKwlmb3IgKGkgPSA1OyBpLS07ICkg ewo+ICsJCW91dFtpXSA9ICchJyArIGluICUgODU7Cj4gKwkJaW4gLz0gODU7Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIHRydWU7Cj4gK30KPiArCj4gIHN0YXRpYyB2b2lkIHByaW50X2Vycm9yX29iaihz dHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAJCQkgICAgc3RydWN0IGRybV9p OTE1X2Vycm9yX29iamVjdCAqb2JqKQo+ICB7Cj4gLQlpbnQgcGFnZSwgb2Zmc2V0LCBlbHQ7Cj4g KwljaGFyIG91dFs2XTsKPiArCWludCBwYWdlOwo+ICsKPiArCWVycl9wdXRzKG0sICI6Iik7IC8q IGluZGljYXRlIGNvbXByZXNzZWQgZGF0YSAqLwo+ICsJZm9yIChwYWdlID0gMDsgcGFnZSA8IG9i ai0+cGFnZV9jb3VudDsgcGFnZSsrKSB7Cj4gKwkJaW50IGksIGxlbjsKPiArCj4gKwkJbGVuID0g UEFHRV9TSVpFOwo+ICsJCWlmIChwYWdlID09IG9iai0+cGFnZV9jb3VudCAtIDEpCj4gKwkJCWxl biAtPSBvYmotPnVudXNlZDsKPiArCQlsZW4gPSAobGVuICsgMykgLyA0Owo+ICAKPiAtCWZvciAo cGFnZSA9IG9mZnNldCA9IDA7IHBhZ2UgPCBvYmotPnBhZ2VfY291bnQ7IHBhZ2UrKykgewo+IC0J CWZvciAoZWx0ID0gMDsgZWx0IDwgUEFHRV9TSVpFLzQ7IGVsdCsrKSB7Cj4gLQkJCWVycl9wcmlu dGYobSwgIiUwOHggOiAgJTA4eFxuIiwgb2Zmc2V0LAo+IC0JCQkJICAgb2JqLT5wYWdlc1twYWdl XVtlbHRdKTsKPiAtCQkJb2Zmc2V0ICs9IDQ7Cj4gKwkJZm9yIChpID0gMDsgaSA8IGxlbjsgaSsr KSB7Cj4gKwkJCWlmIChhc2NpaTg1X2VuY29kZShvYmotPnBhZ2VzW3BhZ2VdW2ldLCBvdXQpKQo+ ICsJCQkJZXJyX3B1dHMobSwgb3V0KTsKPiArCQkJZWxzZQo+ICsJCQkJZXJyX3B1dHMobSwgInoi KTsKPiAgCQl9Cj4gIAl9Cj4gKwllcnJfcHV0cyhtLCAiXG4iKTsKPiAgfQo+ICAKPiAgaW50IGk5 MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0s Cj4gQEAgLTMyOCw4ICszNTksOCBAQCBpbnQgaTkxNV9lcnJvcl9zdGF0ZV90b19zdHIoc3RydWN0 IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0 ZSAqZXJyb3IgPSBlcnJvcl9wcml2LT5lcnJvcjsKPiAgCXN0cnVjdCBkcm1faTkxNV9lcnJvcl9v YmplY3QgKm9iajsKPiAtCWludCBpLCBqLCBvZmZzZXQsIGVsdDsKPiAgCWludCBtYXhfaGFuZ2No ZWNrX3Njb3JlOwo+ICsJaW50IGksIGo7Cj4gIAo+ICAJaWYgKCFlcnJvcikgewo+ICAJCWVycl9w cmludGYobSwgIm5vIGVycm9yIHN0YXRlIGNvbGxlY3RlZFxuIik7Cj4gQEAgLTQ4MSw3NSArNTEy LDMzIEBAIGludCBpOTE1X2Vycm9yX3N0YXRlX3RvX3N0cihzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jf c3RhdGVfYnVmICptLAo+ICAJCX0KPiAgCj4gIAkJaWYgKChvYmogPSBlZS0+cmluZ2J1ZmZlcikp IHsKPiAtCQkJZXJyX3ByaW50ZihtLCAiJXMgLS0tIHJpbmdidWZmZXIgPSAweCUwOHhcbiIsCj4g LQkJCQkgICBkZXZfcHJpdi0+ZW5naW5lW2ldLm5hbWUsCj4gLQkJCQkgICBsb3dlcl8zMl9iaXRz KG9iai0+Z3R0X29mZnNldCkpOwo+ICsJCQllcnJfcHJpbnRmKG0sICIlcyAtLS0gcmluZ2J1ZmZl ciA9IDB4JTA4bGx4XG4iLAo+ICsJCQkJICAgZGV2X3ByaXYtPmVuZ2luZVtpXS5uYW1lLCBvYmot Pmd0dF9vZmZzZXQpOwo+ICAJCQlwcmludF9lcnJvcl9vYmoobSwgb2JqKTsKPiAgCQl9Cj4gIAo+ IC0JCWlmICgob2JqID0gZWUtPmh3c19wYWdlKSkgewo+IC0JCQl1NjQgaHdzX29mZnNldCA9IG9i ai0+Z3R0X29mZnNldDsKPiAtCQkJdTMyICpod3NfcGFnZSA9ICZvYmotPnBhZ2VzWzBdWzBdOwo+ IC0KPiAtCQkJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+IC0JCQkJaHdzX29mZnNldCAr PSBMUkNfUFBIV1NQX1BOICogUEFHRV9TSVpFOwo+IC0JCQkJaHdzX3BhZ2UgPSAmb2JqLT5wYWdl c1tMUkNfUFBIV1NQX1BOXVswXTsKPiAtCQkJfQo+IC0JCQllcnJfcHJpbnRmKG0sICIlcyAtLS0g SFcgU3RhdHVzID0gMHglMDhsbHhcbiIsCj4gLQkJCQkgICBkZXZfcHJpdi0+ZW5naW5lW2ldLm5h bWUsIGh3c19vZmZzZXQpOwo+IC0JCQlvZmZzZXQgPSAwOwo+IC0JCQlmb3IgKGVsdCA9IDA7IGVs dCA8IFBBR0VfU0laRS8xNjsgZWx0ICs9IDQpIHsKPiAtCQkJCWVycl9wcmludGYobSwgIlslMDR4 XSAlMDh4ICUwOHggJTA4eCAlMDh4XG4iLAo+IC0JCQkJCSAgIG9mZnNldCwKPiAtCQkJCQkgICBo d3NfcGFnZVtlbHRdLAo+IC0JCQkJCSAgIGh3c19wYWdlW2VsdCsxXSwKPiAtCQkJCQkgICBod3Nf cGFnZVtlbHQrMl0sCj4gLQkJCQkJICAgaHdzX3BhZ2VbZWx0KzNdKTsKPiAtCQkJCW9mZnNldCAr PSAxNjsKPiAtCQkJfQo+ICsJCWlmICgob2JqID0gZWUtPndhX2N0eCkpIHsKPiArCQkJZXJyX3By aW50ZihtLCAiJXMgLS0tIFdBIENvbnRleHQgPSAweCUwOGxseFxuIiwKPiArCQkJCSAgIGRldl9w cml2LT5lbmdpbmVbaV0ubmFtZSwgb2JqLT5ndHRfb2Zmc2V0KTsKPiArCQkJcHJpbnRfZXJyb3Jf b2JqKG0sIG9iaik7Cj4gIAkJfQo+ICAKPiAtCQlvYmogPSBlZS0+d2FfY3R4Owo+IC0JCWlmIChv YmopIHsKPiAtCQkJdTY0IHdhX2N0eF9vZmZzZXQgPSBvYmotPmd0dF9vZmZzZXQ7Cj4gLQkJCXUz MiAqd2FfY3R4X3BhZ2UgPSAmb2JqLT5wYWdlc1swXVswXTsKPiAtCQkJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbUkNTXTsKPiAtCQkJdTMyIHdhX2N0 eF9zaXplID0gKGVuZ2luZS0+d2FfY3R4LmluZGlyZWN0X2N0eC5zaXplICsKPiAtCQkJCQkgICBl bmdpbmUtPndhX2N0eC5wZXJfY3R4LnNpemUpOwo+IC0KPiAtCQkJZXJyX3ByaW50ZihtLCAiJXMg LS0tIFdBIGN0eCBiYXRjaCBidWZmZXIgPSAweCUwOGxseFxuIiwKPiAtCQkJCSAgIGRldl9wcml2 LT5lbmdpbmVbaV0ubmFtZSwgd2FfY3R4X29mZnNldCk7Cj4gLQkJCW9mZnNldCA9IDA7Cj4gLQkJ CWZvciAoZWx0ID0gMDsgZWx0IDwgd2FfY3R4X3NpemU7IGVsdCArPSA0KSB7Cj4gLQkJCQllcnJf cHJpbnRmKG0sICJbJTA0eF0gJTA4eCAlMDh4ICUwOHggJTA4eFxuIiwKPiAtCQkJCQkgICBvZmZz ZXQsCj4gLQkJCQkJICAgd2FfY3R4X3BhZ2VbZWx0ICsgMF0sCj4gLQkJCQkJICAgd2FfY3R4X3Bh Z2VbZWx0ICsgMV0sCj4gLQkJCQkJICAgd2FfY3R4X3BhZ2VbZWx0ICsgMl0sCj4gLQkJCQkJICAg d2FfY3R4X3BhZ2VbZWx0ICsgM10pOwo+IC0JCQkJb2Zmc2V0ICs9IDE2Owo+IC0JCQl9Cj4gKwkJ aWYgKChvYmogPSBlZS0+aHdzX3BhZ2UpKSB7Cj4gKwkJCWVycl9wcmludGYobSwgIiVzIC0tLSBI VyBTdGF0dXMgPSAweCUwOGxseFxuIiwKPiArCQkJCSAgIGRldl9wcml2LT5lbmdpbmVbaV0ubmFt ZSwgb2JqLT5ndHRfb2Zmc2V0KTsKPiArCQkJcHJpbnRfZXJyb3Jfb2JqKG0sIG9iaik7Cj4gIAkJ fQo+ICAKPiAgCQlpZiAoKG9iaiA9IGVlLT5jdHgpKSB7Cj4gLQkJCWVycl9wcmludGYobSwgIiVz IC0tLSBIVyBDb250ZXh0ID0gMHglMDh4XG4iLAo+IC0JCQkJICAgZGV2X3ByaXYtPmVuZ2luZVtp XS5uYW1lLAo+IC0JCQkJICAgbG93ZXJfMzJfYml0cyhvYmotPmd0dF9vZmZzZXQpKTsKPiArCQkJ ZXJyX3ByaW50ZihtLCAiJXMgLS0tIEhXIENvbnRleHQgPSAweCUwOGxseFxuIiwKPiArCQkJCSAg IGRldl9wcml2LT5lbmdpbmVbaV0ubmFtZSwgb2JqLT5ndHRfb2Zmc2V0KTsKPiAgCQkJcHJpbnRf ZXJyb3Jfb2JqKG0sIG9iaik7Cj4gIAkJfQo+ICAJfQo+ICAKPiAgCWlmICgob2JqID0gZXJyb3It PnNlbWFwaG9yZV9vYmopKSB7Cj4gLQkJZXJyX3ByaW50ZihtLCAiU2VtYXBob3JlIHBhZ2UgPSAw eCUwOHhcbiIsCj4gLQkJCSAgIGxvd2VyXzMyX2JpdHMob2JqLT5ndHRfb2Zmc2V0KSk7Cj4gLQkJ Zm9yIChlbHQgPSAwOyBlbHQgPCBQQUdFX1NJWkUvMTY7IGVsdCArPSA0KSB7Cj4gLQkJCWVycl9w cmludGYobSwgIlslMDR4XSAlMDh4ICUwOHggJTA4eCAlMDh4XG4iLAo+IC0JCQkJICAgZWx0ICog NCwKPiAtCQkJCSAgIG9iai0+cGFnZXNbMF1bZWx0XSwKPiAtCQkJCSAgIG9iai0+cGFnZXNbMF1b ZWx0KzFdLAo+IC0JCQkJICAgb2JqLT5wYWdlc1swXVtlbHQrMl0sCj4gLQkJCQkgICBvYmotPnBh Z2VzWzBdW2VsdCszXSk7Cj4gLQkJfQo+ICsJCWVycl9wcmludGYobSwgIlNlbWFwaG9yZSBwYWdl ID0gMHglMDhsbHhcbiIsIG9iai0+Z3R0X29mZnNldCk7Cj4gKwkJcHJpbnRfZXJyb3Jfb2JqKG0s IG9iaik7Cj4gIAl9Cj4gIAo+ICAJaWYgKGVycm9yLT5vdmVybGF5KQo+IEBAIC02MDUsNyArNTk0 LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9lcnJvcl9vYmplY3RfZnJlZShzdHJ1Y3QgZHJtX2k5MTVf ZXJyb3Jfb2JqZWN0ICpvYmopCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWZvciAocGFnZSA9IDA7IHBh Z2UgPCBvYmotPnBhZ2VfY291bnQ7IHBhZ2UrKykKPiAtCQlrZnJlZShvYmotPnBhZ2VzW3BhZ2Vd KTsKPiArCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpb2JqLT5wYWdlc1twYWdlXSk7Cj4gIAo+ ICAJa2ZyZWUob2JqKTsKPiAgfQo+IEBAIC02NDEsOTggKzYzMCwxMDcgQEAgc3RhdGljIHZvaWQg aTkxNV9lcnJvcl9zdGF0ZV9mcmVlKHN0cnVjdCBrcmVmICplcnJvcl9yZWYpCj4gIAlrZnJlZShl cnJvcik7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQgY29tcHJlc3NfcGFnZShzdHJ1Y3Qgel9zdHJl YW1fcyAqenN0cmVhbSwKPiArCQkJIHZvaWQgKnNyYywKPiArCQkJIHN0cnVjdCBkcm1faTkxNV9l cnJvcl9vYmplY3QgKmRzdCkKPiArewo+ICsJenN0cmVhbS0+bmV4dF9pbiA9IHNyYzsKPiArCXpz dHJlYW0tPmF2YWlsX2luID0gUEFHRV9TSVpFOwo+ICsKPiArCWRvIHsKPiArCQlpZiAoenN0cmVh bS0+YXZhaWxfb3V0ID09IDApIHsKPiArCQkJdW5zaWduZWQgbG9uZyBwYWdlOwo+ICsKPiArCQkJ cGFnZSA9IF9fZ2V0X2ZyZWVfcGFnZShHRlBfQVRPTUlDIHwgX19HRlBfTk9XQVJOKTsKPiArCQkJ aWYgKCFwYWdlKQo+ICsJCQkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJCQlkc3QtPnBhZ2VzW2Rz dC0+cGFnZV9jb3VudCsrXSA9ICh2b2lkICopcGFnZTsKPiArCj4gKwkJCXpzdHJlYW0tPm5leHRf b3V0ID0gKHZvaWQgKilwYWdlOwo+ICsJCQl6c3RyZWFtLT5hdmFpbF9vdXQgPSBQQUdFX1NJWkU7 Cj4gKwkJfQo+ICsKPiArCQlpZiAoemxpYl9kZWZsYXRlKHpzdHJlYW0sIFpfU1lOQ19GTFVTSCkg IT0gWl9PSykKPiArCQkJcmV0dXJuIC1FSU87Cj4gKwo+ICsjaWYgMAo+ICsJCWlmICh6c3RyZWFt LT50b3RhbF9vdXQgPiB6c3RyZWFtLT50b3RhbF9pbikKPiArCQkJcmV0dXJuIC1FMkJJRzsKPiAr I2VuZGlmCj4gKwl9IHdoaWxlICh6c3RyZWFtLT5hdmFpbF9pbik7Cj4gKwo+ICsJcmV0dXJuIDA7 Cj4gK30KPiArCj4gIHN0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfb2JqZWN0ICoKPiAtaTkx NV9lcnJvcl9vYmplY3RfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAraTkxNV9lcnJvcl9vYmplY3RfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LAo+ICAJCQkgc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAtCXN0cnVjdCBpOTE1X2dndHQg KmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq c3JjOwo+ICsJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZpOTE1LT5nZ3R0Owo+ICsJY29uc3Qg dTY0IHNsb3QgPSBnZ3R0LT5ncHVfZXJyb3Iuc3RhcnQ7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZXJy b3Jfb2JqZWN0ICpkc3Q7Cj4gLQlpbnQgbnVtX3BhZ2VzOwo+IC0JYm9vbCB1c2VfZ2d0dDsKPiAt CWludCBpID0gMDsKPiAtCXU2NCByZWxvY19vZmZzZXQ7Cj4gKwlzdHJ1Y3Qgel9zdHJlYW1fcyB6 c3RyZWFtOwo+ICsJdW5zaWduZWQgbG9uZyBudW1fcGFnZXM7Cj4gKwlzdHJ1Y3Qgc2d0X2l0ZXIg aXRlcjsKPiArCWRtYV9hZGRyX3QgZG1hOwo+ICAKPiAgCWlmICghdm1hKQo+ICAJCXJldHVybiBO VUxMOwo+ICAKPiAtCXNyYyA9IHZtYS0+b2JqOwo+IC0JaWYgKCFzcmMtPnBhZ2VzKQo+IC0JCXJl dHVybiBOVUxMOwo+IC0KPiAtCW51bV9wYWdlcyA9IHNyYy0+YmFzZS5zaXplID4+IFBBR0VfU0hJ RlQ7Cj4gLQo+IC0JZHN0ID0ga21hbGxvYyhzaXplb2YoKmRzdCkgKyBudW1fcGFnZXMgKiBzaXpl b2YodTMyICopLCBHRlBfQVRPTUlDKTsKPiArCW51bV9wYWdlcyA9IHZtYS0+c2l6ZSA+PiBQQUdF X1NISUZUOwo+ICsJbnVtX3BhZ2VzID0gMTAgKiBudW1fcGFnZXMgKiBzaXplb2YodTMyICopID4+ IDM7Cj4gKwlkc3QgPSBrbWFsbG9jKHNpemVvZigqZHN0KSArIG51bV9wYWdlcywgR0ZQX0FUT01J QyB8IF9fR0ZQX05PV0FSTik7Cj4gIAlpZiAoIWRzdCkKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4g IAlkc3QtPmd0dF9vZmZzZXQgPSB2bWEtPm5vZGUuc3RhcnQ7Cj4gLQlkc3QtPmd0dF9zaXplID0g dm1hLT5ub2RlLnNpemU7Cj4gKwlkc3QtPnBhZ2VfY291bnQgPSAwOwo+ICsJZHN0LT51bnVzZWQg PSAwOwo+ICsKPiArCW1lbXNldCgmenN0cmVhbSwgMCwgc2l6ZW9mKHpzdHJlYW0pKTsKPiArCXpz dHJlYW0ud29ya3NwYWNlID0ga21hbGxvYyh6bGliX2RlZmxhdGVfd29ya3NwYWNlc2l6ZShNQVhf V0JJVFMsCj4gKwkJCQkJCQkgICAgICAgTUFYX01FTV9MRVZFTCksCj4gKwkJCQkgICAgR0ZQX0FU T01JQyB8IF9fR0ZQX05PV0FSTik7Cj4gKwlpZiAoIXpzdHJlYW0ud29ya3NwYWNlIHx8Cj4gKwkg ICAgemxpYl9kZWZsYXRlSW5pdCgmenN0cmVhbSwgWl9ERUZBVUxUX0NPTVBSRVNTSU9OKSAhPSBa X09LKSB7Cj4gKwkJa2ZyZWUoenN0cmVhbS53b3Jrc3BhY2UpOwo+ICsJCWtmcmVlKGRzdCk7Cj4g KwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4gIAo+IC0JcmVsb2Nfb2Zmc2V0ID0gZHN0LT5ndHRfb2Zm c2V0Owo+IC0JdXNlX2dndHQgPSAoc3JjLT5jYWNoZV9sZXZlbCA9PSBJOTE1X0NBQ0hFX05PTkUg JiYKPiAtCQkgICAodm1hLT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSAmJgo+IC0JCSAg IHJlbG9jX29mZnNldCArIG51bV9wYWdlcyAqIFBBR0VfU0laRSA8PSBnZ3R0LT5tYXBwYWJsZV9l bmQpOwo+ICsJZm9yX2VhY2hfc2d0X2RtYShkbWEsIGl0ZXIsCj4gKwkJCSB2bWEtPmdndHRfdmll dy5wYWdlcyA/OiB2bWEtPm9iai0+cGFnZXMpIHsKPiArCQlpbnQgcmV0Owo+ICsJCXZvaWQgKnM7 Cj4gIAo+IC0JLyogQ2Fubm90IGFjY2VzcyBzdG9sZW4gYWRkcmVzcyBkaXJlY3RseSwgdHJ5IHRv IHVzZSB0aGUgYXBlcnR1cmUgKi8KPiAtCWlmIChzcmMtPnN0b2xlbikgewo+IC0JCXVzZV9nZ3R0 ID0gdHJ1ZTsKPiArCQlnZ3R0LT5iYXNlLmluc2VydF9wYWdlKCZnZ3R0LT5iYXNlLCBkbWEsIHNs b3QsCj4gKwkJCQkgICAgICAgSTkxNV9DQUNIRV9OT05FLCAwKTsKPiAgCj4gLQkJaWYgKCEodm1h LT5mbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9CSU5EKSkKPiAtCQkJZ290byB1bndpbmQ7Cj4gKwkJ cyA9ICh2b2lkICpfX2ZvcmNlKQo+ICsJCQlpb19tYXBwaW5nX21hcF9hdG9taWNfd2MoZ2d0dC0+ bWFwcGFibGUsIHNsb3QpOwo+ICsJCXJldCA9IGNvbXByZXNzX3BhZ2UoJnpzdHJlYW0sIHMsIGRz dCk7Cj4gKwkJaW9fbWFwcGluZ191bm1hcF9hdG9taWMocyk7Cj4gIAo+IC0JCXJlbG9jX29mZnNl dCA9IHZtYS0+bm9kZS5zdGFydDsKPiAtCQlpZiAocmVsb2Nfb2Zmc2V0ICsgbnVtX3BhZ2VzICog UEFHRV9TSVpFID4gZ2d0dC0+bWFwcGFibGVfZW5kKQo+ICsJCWlmIChyZXQpCj4gIAkJCWdvdG8g dW53aW5kOwo+ICAJfQo+ICsJemxpYl9kZWZsYXRlKCZ6c3RyZWFtLCBaX0ZJTklTSCk7Cj4gKwlk c3QtPnVudXNlZCA9IHpzdHJlYW0uYXZhaWxfb3V0Owo+ICtvdXQ6Cj4gKwl6bGliX2RlZmxhdGVF bmQoJnpzdHJlYW0pOwo+ICsJa2ZyZWUoenN0cmVhbS53b3Jrc3BhY2UpOwo+ICAKPiAtCS8qIENh bm5vdCBhY2Nlc3Mgc25vb3BlZCBwYWdlcyB0aHJvdWdoIHRoZSBhcGVydHVyZSAqLwo+IC0JaWYg KHVzZV9nZ3R0ICYmIHNyYy0+Y2FjaGVfbGV2ZWwgIT0gSTkxNV9DQUNIRV9OT05FICYmCj4gLQkg ICAgIUhBU19MTEMoZGV2X3ByaXYpKQo+IC0JCWdvdG8gdW53aW5kOwo+IC0KPiAtCWRzdC0+cGFn ZV9jb3VudCA9IG51bV9wYWdlczsKPiAtCXdoaWxlIChudW1fcGFnZXMtLSkgewo+IC0JCXZvaWQg KmQ7Cj4gLQo+IC0JCWQgPSBrbWFsbG9jKFBBR0VfU0laRSwgR0ZQX0FUT01JQyk7Cj4gLQkJaWYg KGQgPT0gTlVMTCkKPiAtCQkJZ290byB1bndpbmQ7Cj4gLQo+IC0JCWlmICh1c2VfZ2d0dCkgewo+ IC0JCQl2b2lkIF9faW9tZW0gKnM7Cj4gLQo+IC0JCQkvKiBTaW1wbHkgaWdub3JlIHRpbGluZyBv ciBhbnkgb3ZlcmxhcHBpbmcgZmVuY2UuCj4gLQkJCSAqIEl0J3MgcGFydCBvZiB0aGUgZXJyb3Ig c3RhdGUsIGFuZCB0aGlzIGhvcGVmdWxseQo+IC0JCQkgKiBjYXB0dXJlcyB3aGF0IHRoZSBHUFUg cmVhZC4KPiAtCQkJICovCj4gLQo+IC0JCQlzID0gaW9fbWFwcGluZ19tYXBfYXRvbWljX3djKGdn dHQtPm1hcHBhYmxlLAo+IC0JCQkJCQkgICAgIHJlbG9jX29mZnNldCk7Cj4gLQkJCW1lbWNweV9m cm9taW8oZCwgcywgUEFHRV9TSVpFKTsKPiAtCQkJaW9fbWFwcGluZ191bm1hcF9hdG9taWMocyk7 Cj4gLQkJfSBlbHNlIHsKPiAtCQkJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gLQkJCXZvaWQgKnM7Cj4g LQo+IC0JCQlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKHNyYywgaSk7Cj4gLQo+IC0J CQlzID0ga21hcF9hdG9taWMocGFnZSk7Cj4gLQkJCW1lbWNweShkLCBzLCBQQUdFX1NJWkUpOwo+ IC0JCQlrdW5tYXBfYXRvbWljKHMpOwo+IC0JCX0KPiAtCj4gLQkJZHN0LT5wYWdlc1tpKytdID0g ZDsKPiAtCQlyZWxvY19vZmZzZXQgKz0gUEFHRV9TSVpFOwo+IC0JfQo+ICsJZ2d0dC0+YmFzZS5j bGVhcl9yYW5nZSgmZ2d0dC0+YmFzZSwgc2xvdCwgUEFHRV9TSVpFLCB0cnVlKTsKPiAgCj4gIAly ZXR1cm4gZHN0Owo+ICAKPiAgdW53aW5kOgo+IC0Jd2hpbGUgKGktLSkKPiAtCQlrZnJlZShkc3Qt PnBhZ2VzW2ldKTsKPiArCXdoaWxlIChkc3QtPnBhZ2VfY291bnQtLSkKPiArCQlmcmVlX3BhZ2Uo KHVuc2lnbmVkIGxvbmcpZHN0LT5wYWdlc1tkc3QtPnBhZ2VfY291bnRdKTsKPiAgCWtmcmVlKGRz dCk7Cj4gLQlyZXR1cm4gTlVMTDsKPiArCWRzdCA9IE5VTEw7Cj4gKwlnb3RvIG91dDsKPiAgfQo+ ICAKPiAgLyogVGhlIGVycm9yIGNhcHR1cmUgaXMgc3BlY2lhbCBhcyB0cmllcyB0byBydW4gdW5k ZXJuZWF0aCB0aGUgbm9ybWFsCj4gQEAgLTk3OSw2ICs5NzcsOCBAQCBzdGF0aWMgdm9pZCBlcnJv cl9yZWNvcmRfZW5naW5lX3JlZ2lzdGVycyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGUgKmVy cm9yLAo+ICAJZWUtPmhlYWQgPSBJOTE1X1JFQURfSEVBRChlbmdpbmUpOwo+ICAJZWUtPnRhaWwg PSBJOTE1X1JFQURfVEFJTChlbmdpbmUpOwo+ICAJZWUtPmN0bCA9IEk5MTVfUkVBRF9DVEwoZW5n aW5lKTsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMikKPiArCQllZS0+bW9kZSA9IEk5 MTVfUkVBRF9NT0RFKGVuZ2luZSk7Cj4gIAo+ICAJaWYgKEk5MTVfTkVFRF9HRlhfSFdTKGRldl9w cml2KSkgewo+ICAJCWk5MTVfcmVnX3QgbW1pbzsKPiBAQCAtMTM2Nyw5ICsxMzY3LDYgQEAgc3Rh dGljIGludCBjYXB0dXJlKHZvaWQgKmRhdGEpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9lcnJv cl9zdGF0ZSAqZXJyb3IgPSBkYXRhOwo+ICAKPiAtCS8qIEVuc3VyZSB0aGF0IHdoYXQgd2UgcmVh ZGJhY2sgZnJvbSBtZW1vcnkgbWF0Y2hlcyB3aGF0IHRoZSBHUFUgc2VlcyAqLwo+IC0Jd2JpbnZk KCk7Cj4gLQo+ICAJaTkxNV9jYXB0dXJlX2dlbl9zdGF0ZShlcnJvci0+aTkxNSwgZXJyb3IpOwo+ ICAJaTkxNV9jYXB0dXJlX3JlZ19zdGF0ZShlcnJvci0+aTkxNSwgZXJyb3IpOwo+ICAJaTkxNV9n ZW1fcmVjb3JkX2ZlbmNlcyhlcnJvci0+aTkxNSwgZXJyb3IpOwo+IEBAIC0xMzgzLDkgKzEzODAs NiBAQCBzdGF0aWMgaW50IGNhcHR1cmUodm9pZCAqZGF0YSkKPiAgCWVycm9yLT5vdmVybGF5ID0g aW50ZWxfb3ZlcmxheV9jYXB0dXJlX2Vycm9yX3N0YXRlKGVycm9yLT5pOTE1KTsKPiAgCWVycm9y LT5kaXNwbGF5ID0gaW50ZWxfZGlzcGxheV9jYXB0dXJlX2Vycm9yX3N0YXRlKGVycm9yLT5pOTE1 KTsKPiAgCj4gLQkvKiBBbmQgbWFrZSBzdXJlIHdlIGRvbid0IGxlYXZlIHRyYXNoIGluIHRoZSBD UFUgY2FjaGUgKi8KPiAtCXdiaW52ZCgpOwo+IC0KPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBA IC0xNDU5LDcgKzE0NTMsNiBAQCB2b2lkIGk5MTVfZXJyb3Jfc3RhdGVfZ2V0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gIAlpZiAoZXJyb3JfcHJpdi0+ZXJyb3IpCj4gIAkJa3JlZl9nZXQoJmVy cm9yX3ByaXYtPmVycm9yLT5yZWYpOwo+ICAJc3Bpbl91bmxvY2tfaXJxKCZkZXZfcHJpdi0+Z3B1 X2Vycm9yLmxvY2spOwo+IC0KPiAgfQo+ICAKPiAgdm9pZCBpOTE1X2Vycm9yX3N0YXRlX3B1dChz dHJ1Y3QgaTkxNV9lcnJvcl9zdGF0ZV9maWxlX3ByaXYgKmVycm9yX3ByaXYpCj4gLS0gCj4gMi44 LjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK