From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 075/190] drm/i915: Refactor activity tracking for requests Date: Thu, 28 Jan 2016 11:41:37 +0000 Message-ID: <56A9FE71.7050804@linux.intel.com> References: <1452503961-14837-1-git-send-email-chris@chris-wilson.co.uk> <1452503961-14837-75-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 393B56E843 for ; Thu, 28 Jan 2016 03:41:39 -0800 (PST) In-Reply-To: <1452503961-14837-75-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMTEvMDEvMTYgMDk6MTcsIENocmlzIFdpbHNvbiB3cm90ZToKPiBXaXRoIHRoZSBp bnRyb2R1Y3Rpb24gb2YgcmVxdWVzdHMsIHdlIGFtcGxpZmllZCB0aGUgbnVtYmVyIG9mIGF0b21p Ywo+IHJlZmNvdW50ZWQgb2JqZWN0cyB3ZSB1c2UgYW5kIHVwZGF0ZSBldmVyeSBleGVjYnVmZmVy OyBmcm9tIG5vbmUgdG8KPiBzZXZlcmFsIHJlZmVyZW5jZXMsIGFuZCBhIHNldCBvZiByZWZlcmVu Y2VzIHRoYXQgbmVlZCB0byBiZSBjaGFuZ2VkLiBXZQo+IGFsc28gaW50cm9kdWNlZCBpbnRlcmVz dGluZyBzaWRlLWVmZmVjdHMgaW4gdGhlIG9yZGVyIG9mIHJldGlyaW5nCj4gcmVxdWVzdHMgYW5k IG9iamVjdHMuCj4KPiBJbnN0ZWFkIG9mIGluZGVwZW5kZW50bHkgdHJhY2tpbmcgdGhlIGxhc3Qg cmVxdWVzdCBmb3IgYW4gb2JqZWN0LCB0cmFjawo+IHRoZSBhY3RpdmUgb2JqZWN0cyBmb3IgZWFj aCByZXF1ZXN0LiBUaGUgb2JqZWN0IHdpbGwgcmVzaWRlIGluIHRoZQo+IGJ1ZmZlciBsaXN0IG9m IGl0cyBtb3N0IHJlY2VudCBhY3RpdmUgcmVxdWVzdCBhbmQgc28gd2UgcmVkdWNlIHRoZSBrcmVm Cj4gaW50ZXJjaGFuZ2UgdG8gYSBsaXN0X21vdmUuIE5vdyByZXRpcmVtZW50cyBhcmUgZW50aXJl bHkgZHJpdmVuIGJ5IHRoZQo+IHJlcXVlc3QsIGRyYW1hdGljYWxseSBzaW1wbGlmeWluZyBhY3Rp dml0eSB0cmFja2luZyBvbiB0aGUgb2JqZWN0Cj4gdGhlbXNlbHZlcywgYW5kIHJlbW92aW5nIHRo ZSBhbWJpZ3VpdHkgYmV0d2VlbiByZXRpcmluZyBvYmplY3RzIGFuZAo+IHJldGlyaW5nIHJlcXVl c3RzLgo+Cj4gQWxsIHRvbGQsIGxlc3MgY29kZSwgc2ltcGxlciBhbmQgZmFzdGVyLCBhbmQgbW9y ZSBleHRlbnNpYmxlLgoKSSd2ZSBsb29rZWQgaW4gdGhpcyBpbiBkZXRhaWwgYmVmb3JlIGhvbGlk YXlzIGFuZCB1bmZvcnR1bmF0ZWx5IGEgbG90IGlmIAppZiBldmFwb3JhdGVkIGZyb20gbXkgaGVh ZCBzaW5jZS4gSSByZW1lbWJlciBJIHRob3VnaHQgdGhlIGlkZWEgd2FzIGdvb2QgCmFuZCByZWFs bHkgc2ltcGxpZmllcyB0aGluZ3MuCgpCdXQgaXQgaXMgYWxzbyBkaWZmaWN1bHQgdG8gYXBwbHkg dGhlIHN1YnNldCBvZiBwYXRjaGVzIHRvIGxvb2sgYXQgdGhlIApyZXN1bHRpbmcgY29kZSBpbiBt b3JlIGRldGFpbC4KClNvIHdvdWxkIGl0IGJlIHBvc3NpYmxlIHRvIGV4dHJhY3QgYW5kIHJlYmFz ZSByZWxldmFudCBwYXRjaGVzPyBJIHRoaW5rIAp0aGF0IHdvdWxkIGJlIGZyb20gNzMgdG8gNzYu IChUb2dldGhlciB3aXRoIHRoZSByZW5hbWluZyB3ZSBhZ3JlZWQgCmFscmVhZHkuIEFuZCB0aG9z ZSB0cml2aWFsIHJlbmFtZXMgb2YgbGlzdC9saW5rIGFscmVhZHkgaGF2ZSByLWIncy4pCgpUaGF0 IHdvdWxkIGJlIHN0ZXAgb25lLCByZXdvcmsgb2YgYWN0aXZlIHRyYWNraW5nLgoKVGhlbiB0aGUg bmV4dCBzdGVwIGNvdWxkIGJlIGFkZGluZyBWTUEgdHJhY2tpbmcsIHBhdGNoZXMgODEgdG8gODcg SSB0aGluay4KClJlZ2FyZHMsCgpUdnJ0a28KCgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgICAgIHwgIDEwIC0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jICAgICAgICAgfCAxNjAgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RlYnVnLmMgICB8ICA3MCAtLS0tLS0tLS0t LS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2UuYyAgIHwgIDEwICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgfCAgNDQgKysrKysr Ky0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggfCAgMTYgKysr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgICAxIC0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8ICAgMSAtCj4gICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgMTIgLS0tCj4gICAxMCBmaWxl cyBjaGFuZ2VkLCA4OSBpbnNlcnRpb25zKCspLCAyMzYgZGVsZXRpb25zKC0pCj4gICBkZWxldGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZGVidWcuYwo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKPiBpbmRleCBiMGE4MzIxNWRiODAuLjc5ZDY1N2YyOTI0MSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTIzLDcgKzIzLDYgQEAgaTkxNS0kKENPTkZJR19ERUJV R19GUykgKz0gaTkxNV9kZWJ1Z2ZzLm8KPiAgIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBc Cj4gICAJICBpOTE1X2dlbV9iYXRjaF9wb29sLm8gXAo+ICAgCSAgaTkxNV9nZW1fY29udGV4dC5v IFwKPiAtCSAgaTkxNV9nZW1fZGVidWcubyBcCj4gICAJICBpOTE1X2dlbV9kbWFidWYubyBcCj4g ICAJICBpOTE1X2dlbV9ldmljdC5vIFwKPiAgIAkgIGk5MTVfZ2VtX2V4ZWNidWZmZXIubyBcCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYzU3N2Y4NmQ5NGY4Li5jOWMxYTVjZGMxZTUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNDM1LDggKzQzNSw2IEBAIHZvaWQg aW50ZWxfbGlua19jb21wdXRlX21fbihpbnQgYnBwLCBpbnQgbmxhbmVzLAo+ICAgI2RlZmluZSBE UklWRVJfTUlOT1IJCTYKPiAgICNkZWZpbmUgRFJJVkVSX1BBVENITEVWRUwJMAo+Cj4gLSNkZWZp bmUgV0FUQ0hfTElTVFMJMAo+IC0KPiAgIHN0cnVjdCBvcHJlZ2lvbl9oZWFkZXI7Cj4gICBzdHJ1 Y3Qgb3ByZWdpb25fYWNwaTsKPiAgIHN0cnVjdCBvcHJlZ2lvbl9zd3NjaTsKPiBAQCAtMjAyNCw3 ICsyMDIyLDYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qgewo+ICAgCXN0cnVjdCBkcm1f bW1fbm9kZSAqc3RvbGVuOwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgZ2xvYmFsX2xpc3Q7Cj4KPiAt CXN0cnVjdCBsaXN0X2hlYWQgcmluZ19saXN0W0k5MTVfTlVNX1JJTkdTXTsKPiAgIAkvKiogVXNl ZCBpbiBleGVjYnVmIHRvIHRlbXBvcmFyaWx5IGhvbGQgYSByZWYgKi8KPiAgIAlzdHJ1Y3QgbGlz dF9oZWFkIG9ial9leGVjX2xpbms7Cj4KPiBAQCAtMzA2OCwxMyArMzA2NSw2IEBAIHN0YXRpYyBp bmxpbmUgYm9vbCBpOTE1X2dlbV9vYmplY3RfbmVlZHNfYml0MTdfc3dpenpsZShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjCj4gICAJCW9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfTk9O RTsKPiAgIH0KPgo+IC0vKiBpOTE1X2dlbV9kZWJ1Zy5jICovCj4gLSNpZiBXQVRDSF9MSVNUUwo+ IC1pbnQgaTkxNV92ZXJpZnlfbGlzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gLSNlbHNl Cj4gLSNkZWZpbmUgaTkxNV92ZXJpZnlfbGlzdHMoZGV2KSAwCj4gLSNlbmRpZgo+IC0KPiAgIC8q IGk5MTVfZGVidWdmcy5jICovCj4gICBpbnQgaTkxNV9kZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9t aW5vciAqbWlub3IpOwo+ICAgdm9pZCBpOTE1X2RlYnVnZnNfY2xlYW51cChzdHJ1Y3QgZHJtX21p bm9yICptaW5vcik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggZjMxNGIzZWEyNzI2 Li40ZWVmMTNlYmRhZjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNDAsMTAg KzQwLDYgQEAKPgo+ICAgc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2d0dF93cml0 ZV9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gICBzdGF0aWMgdm9p ZCBpOTE1X2dlbV9vYmplY3RfZmx1c2hfY3B1X3dyaXRlX2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKTsKPiAtc3RhdGljIHZvaWQKPiAtaTkxNV9nZW1fb2JqZWN0X3JldGly ZV9fd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gLXN0YXRpYyB2b2lk Cj4gLWk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3JlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwgaW50IHJpbmcpOwo+Cj4gICBzdGF0aWMgYm9vbCBjcHVfY2FjaGVfaXNfY29oZXJl bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgIAkJCQkgIGVudW0gaTkxNV9jYWNoZV9sZXZl bCBsZXZlbCkKPiBAQCAtMTE3LDcgKzExMyw2IEBAIGludCBpOTE1X211dGV4X2xvY2tfaW50ZXJy dXB0aWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWlmIChyZXQpCj4gICAJCXJldHVy biByZXQ7Cj4KPiAtCVdBUk5fT04oaTkxNV92ZXJpZnlfbGlzdHMoZGV2KSk7Cj4gICAJcmV0dXJu IDA7Cj4gICB9Cj4KPiBAQCAtMTExNywyNyArMTExMiwxNCBAQCBpOTE1X2dlbV9vYmplY3Rfd2Fp dF9yZW5kZXJpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkJcmV0dXJu IDA7Cj4KPiAgIAlpZiAocmVhZG9ubHkpIHsKPiAtCQlpZiAob2JqLT5sYXN0X3dyaXRlLnJlcXVl c3QgIT0gTlVMTCkgewo+IC0JCQlyZXQgPSBpOTE1X3dhaXRfcmVxdWVzdChvYmotPmxhc3Rfd3Jp dGUucmVxdWVzdCk7Cj4gLQkJCWlmIChyZXQpCj4gLQkJCQlyZXR1cm4gcmV0Owo+IC0KPiAtCQkJ aSA9IG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0LT5lbmdpbmUtPmlkOwo+IC0JCQlpZiAob2JqLT5s YXN0X3JlYWRbaV0ucmVxdWVzdCA9PSBvYmotPmxhc3Rfd3JpdGUucmVxdWVzdCkKPiAtCQkJCWk5 MTVfZ2VtX29iamVjdF9yZXRpcmVfX3JlYWQob2JqLCBpKTsKPiAtCQkJZWxzZQo+IC0JCQkJaTkx NV9nZW1fb2JqZWN0X3JldGlyZV9fd3JpdGUob2JqKTsKPiAtCQl9Cj4gKwkJcmV0ID0gaTkxNV93 YWl0X3JlcXVlc3Qob2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QpOwo+ICsJCWlmIChyZXQpCj4gKwkJ CXJldHVybiByZXQ7Cj4gICAJfSBlbHNlIHsKPiAgIAkJZm9yIChpID0gMDsgaSA8IEk5MTVfTlVN X1JJTkdTOyBpKyspIHsKPiAtCQkJaWYgKG9iai0+bGFzdF9yZWFkW2ldLnJlcXVlc3QgPT0gTlVM TCkKPiAtCQkJCWNvbnRpbnVlOwo+IC0KPiAgIAkJCXJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KG9i ai0+bGFzdF9yZWFkW2ldLnJlcXVlc3QpOwo+ICAgCQkJaWYgKHJldCkKPiAgIAkJCQlyZXR1cm4g cmV0Owo+IC0KPiAtCQkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fcmVhZChvYmosIGkpOwo+ICAg CQl9Cj4gICAJCUdFTV9CVUdfT04ob2JqLT5hY3RpdmUpOwo+ICAgCX0KPiBAQCAtMTE0NSwyMCAr MTEyNyw2IEBAIGk5MTVfZ2VtX29iamVjdF93YWl0X3JlbmRlcmluZyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+ICAgCXJldHVybiAwOwo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lkCj4g LWk5MTVfZ2VtX29iamVjdF9yZXRpcmVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+IC0JCQkgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4g LXsKPiAtCWludCByaW5nID0gcmVxLT5lbmdpbmUtPmlkOwo+IC0KPiAtCWlmIChvYmotPmxhc3Rf cmVhZFtyaW5nXS5yZXF1ZXN0ID09IHJlcSkKPiAtCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19y ZWFkKG9iaiwgcmluZyk7Cj4gLQllbHNlIGlmIChvYmotPmxhc3Rfd3JpdGUucmVxdWVzdCA9PSBy ZXEpCj4gLQkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fd3JpdGUob2JqKTsKPiAtCj4gLQlpOTE1 X2dlbV9yZXF1ZXN0X3JldGlyZV91cHRvKHJlcSk7Cj4gLX0KPiAtCj4gICAvKiBBIG5vbmJsb2Nr aW5nIHZhcmlhbnQgb2YgdGhlIGFib3ZlIHdhaXQuIFRoaXMgaXMgYSBoaWdobHkgZGFuZ2Vyb3Vz IHJvdXRpbmUKPiAgICAqIGFzIHRoZSBvYmplY3Qgc3RhdGUgbWF5IGNoYW5nZSBkdXJpbmcgdGhp cyBjYWxsLgo+ICAgICovCj4gQEAgLTEyMDYsNyArMTE3NCw3IEBAIGk5MTVfZ2VtX29iamVjdF93 YWl0X3JlbmRlcmluZ19fbm9uYmxvY2tpbmcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKPgo+ICAgCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKPiAgIAkJaWYgKHJldCA9PSAwKQo+ IC0JCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX3JlcXVlc3Qob2JqLCByZXF1ZXN0c1tpXSk7Cj4g KwkJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3VwdG8ocmVxdWVzdHNbaV0pOwo+ICAgCQlpOTE1 X2dlbV9yZXF1ZXN0X3B1dChyZXF1ZXN0c1tpXSk7Cj4gICAJfQo+Cj4gQEAgLTIwNjksMzUgKzIw MzcsMzcgQEAgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZt YSwKPiAgIAkJZHJtX2dlbV9vYmplY3RfcmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+ICAgCW9iai0+ YWN0aXZlIHw9IGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSk7Cj4KPiAtCWxpc3RfbW92ZV90YWls KCZvYmotPnJpbmdfbGlzdFtlbmdpbmUtPmlkXSwgJmVuZ2luZS0+YWN0aXZlX2xpc3QpOwo+ICAg CWk5MTVfZ2VtX3JlcXVlc3RfbWFya19hY3RpdmUocmVxLCAmb2JqLT5sYXN0X3JlYWRbZW5naW5l LT5pZF0pOwo+IC0KPiAgIAlsaXN0X21vdmVfdGFpbCgmdm1hLT5tbV9saXN0LCAmdm1hLT52bS0+ YWN0aXZlX2xpc3QpOwo+ICAgfQo+Cj4gICBzdGF0aWMgdm9pZAo+IC1pOTE1X2dlbV9vYmplY3Rf cmV0aXJlX193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICtpOTE1X2dl bV9vYmplY3RfcmV0aXJlX19mZW5jZShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCj4g KwkJCSAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IC0JR0VN X0JVR19PTihvYmotPmxhc3Rfd3JpdGUucmVxdWVzdCA9PSBOVUxMKTsKPiAtCUdFTV9CVUdfT04o IShvYmotPmFjdGl2ZSAmIGludGVsX2VuZ2luZV9mbGFnKG9iai0+bGFzdF93cml0ZS5yZXF1ZXN0 LT5lbmdpbmUpKSk7Cj4gK30KPgo+IC0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9iai0+bGFz dF93cml0ZS5yZXF1ZXN0LCBOVUxMKTsKPiAtCWludGVsX2ZiX29ial9mbHVzaChvYmosIHRydWUs IE9SSUdJTl9DUyk7Cj4gK3N0YXRpYyB2b2lkCj4gK2k5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3dy aXRlKHN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFjdGl2ZSwKPiArCQkJICAgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICt7Cj4gKwlpbnRlbF9mYl9vYmpfZmx1c2go Y29udGFpbmVyX29mKGFjdGl2ZSwKPiArCQkJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCwK PiArCQkJCQlsYXN0X3dyaXRlKSwKPiArCQkJICAgdHJ1ZSwKPiArCQkJICAgT1JJR0lOX0NTKTsK PiAgIH0KPgo+ICAgc3RhdGljIHZvaWQKPiAtaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fcmVhZChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgcmluZykKPiAraTkxNV9nZW1fb2Jq ZWN0X3JldGlyZV9fcmVhZChzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZlICphY3RpdmUsCj4gKwkJCSAg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgewo+ICsJaW50IHJp bmcgPSByZXF1ZXN0LT5lbmdpbmUtPmlkOwo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiA9Cj4gKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QsIGxhc3RfcmVhZFtyaW5nXSk7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4KPiAtCUdF TV9CVUdfT04ob2JqLT5sYXN0X3JlYWRbcmluZ10ucmVxdWVzdCA9PSBOVUxMKTsKPiAtCUdFTV9C VUdfT04oIShvYmotPmFjdGl2ZSAmICgxIDw8IHJpbmcpKSk7Cj4gLQo+IC0JbGlzdF9kZWxfaW5p dCgmb2JqLT5yaW5nX2xpc3RbcmluZ10pOwo+IC0JaTkxNV9nZW1fcmVxdWVzdF9hc3NpZ24oJm9i ai0+bGFzdF9yZWFkW3JpbmddLnJlcXVlc3QsIE5VTEwpOwo+IC0KPiAtCWlmIChvYmotPmxhc3Rf d3JpdGUucmVxdWVzdCAmJiBvYmotPmxhc3Rfd3JpdGUucmVxdWVzdC0+ZW5naW5lLT5pZCA9PSBy aW5nKQo+IC0JCWk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3dyaXRlKG9iaik7Cj4gKwlHRU1fQlVH X09OKChvYmotPmFjdGl2ZSAmICgxIDw8IHJpbmcpKSA9PSAwKTsKPgo+ICAgCW9iai0+YWN0aXZl ICY9IH4oMSA8PCByaW5nKTsKPiAgIAlpZiAob2JqLT5hY3RpdmUpCj4gQEAgLTIxMDcsMTUgKzIw NzcsMTMgQEAgaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLCBpbnQgcmluZykKPiAgIAkgKiBzbyB0aGF0IHdlIGRvbid0IHN0ZWFsIGZy b20gcmVjZW50bHkgdXNlZCBidXQgaW5hY3RpdmUgb2JqZWN0cwo+ICAgCSAqICh1bmxlc3Mgd2Ug YXJlIGZvcmNlZCB0byBvZmMhKQo+ICAgCSAqLwo+IC0JbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xv YmFsX2xpc3QsCj4gLQkJICAgICAgICZ0b19pOTE1KG9iai0+YmFzZS5kZXYpLT5tbS5ib3VuZF9s aXN0KTsKPiArCWxpc3RfbW92ZV90YWlsKCZvYmotPmdsb2JhbF9saXN0LCAmcmVxdWVzdC0+aTkx NS0+bW0uYm91bmRfbGlzdCk7Cj4KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+ dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4gICAJCWlmICghbGlzdF9lbXB0eSgmdm1hLT5tbV9saXN0 KSkKPiAgIAkJCWxpc3RfbW92ZV90YWlsKCZ2bWEtPm1tX2xpc3QsICZ2bWEtPnZtLT5pbmFjdGl2 ZV9saXN0KTsKPiAgIAl9Cj4KPiAtCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvYmotPmxhc3Rf ZmVuY2UucmVxdWVzdCwgTlVMTCk7Cj4gICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9i ai0+YmFzZSk7Cj4gICB9Cj4KPiBAQCAtMjIxNiwxNiArMjE4NCw2IEBAIHN0YXRpYyB2b2lkIGk5 MTVfZ2VtX3Jlc2V0X3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4gICB7Cj4gICAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Cj4KPiAtCXdoaWxlICghbGlzdF9l bXB0eSgmZW5naW5lLT5hY3RpdmVfbGlzdCkpIHsKPiAtCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqOwo+IC0KPiAtCQlvYmogPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdpbmUtPmFjdGl2 ZV9saXN0LAo+IC0JCQkJICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0LAo+IC0JCQkJ ICAgICAgIHJpbmdfbGlzdFtlbmdpbmUtPmlkXSk7Cj4gLQo+IC0JCWk5MTVfZ2VtX29iamVjdF9y ZXRpcmVfX3JlYWQob2JqLCBlbmdpbmUtPmlkKTsKPiAtCX0KPiAtCj4gICAJLyoKPiAgIAkgKiBD bGVhciB0aGUgZXhlY2xpc3RzIHF1ZXVlIHVwIGJlZm9yZSBmcmVlaW5nIHRoZSByZXF1ZXN0cywg YXMgdGhvc2UKPiAgIAkgKiBhcmUgdGhlIG9uZXMgdGhhdCBrZWVwIHRoZSBjb250ZXh0IGFuZCBy aW5nYnVmZmVyIGJhY2tpbmcgb2JqZWN0cwo+IEBAIC0yMjk1LDggKzIyNTMsNiBAQCB2b2lkIGk5 MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJaTkxNV9nZW1fY29udGV4 dF9yZXNldChkZXYpOwo+Cj4gICAJaTkxNV9nZW1fcmVzdG9yZV9mZW5jZXMoZGV2KTsKPiAtCj4g LQlXQVJOX09OKGk5MTVfdmVyaWZ5X2xpc3RzKGRldikpOwo+ICAgfQo+Cj4gICAvKioKPiBAQCAt MjMwNSwxMyArMjI2MSw2IEBAIHZvaWQgaTkxNV9nZW1fcmVzZXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgIHZvaWQKPiAgIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICB7Cj4gLQlXQVJOX09OKGk5MTVfdmVyaWZ5X2xpc3Rz KHJpbmctPmRldikpOwo+IC0KPiAtCS8qIFJldGlyZSByZXF1ZXN0cyBmaXJzdCBhcyB3ZSB1c2Ug aXQgYWJvdmUgZm9yIHRoZSBlYXJseSByZXR1cm4uCj4gLQkgKiBJZiB3ZSByZXRpcmUgcmVxdWVz dHMgbGFzdCwgd2UgbWF5IHVzZSBhIGxhdGVyIHNlcW5vIGFuZCBzbyBjbGVhcgo+IC0JICogdGhl IHJlcXVlc3RzIGxpc3RzIHdpdGhvdXQgY2xlYXJpbmcgdGhlIGFjdGl2ZSBsaXN0LCBsZWFkaW5n IHRvCj4gLQkgKiBjb25mdXNpb24uCj4gLQkgKi8KPiAgIAl3aGlsZSAoIWxpc3RfZW1wdHkoJnJp bmctPnJlcXVlc3RfbGlzdCkpIHsKPiAgIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0Owo+Cj4gQEAgLTIzMjQsMjUgKzIyNzMsNiBAQCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVz dHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+Cj4gICAJCWk5MTVfZ2VtX3Jl cXVlc3RfcmV0aXJlX3VwdG8ocmVxdWVzdCk7Cj4gICAJfQo+IC0KPiAtCS8qIE1vdmUgYW55IGJ1 ZmZlcnMgb24gdGhlIGFjdGl2ZSBsaXN0IHRoYXQgYXJlIG5vIGxvbmdlciByZWZlcmVuY2VkCj4g LQkgKiBieSB0aGUgcmluZ2J1ZmZlciB0byB0aGUgZmx1c2hpbmcvaW5hY3RpdmUgbGlzdHMgYXMg YXBwcm9wcmlhdGUsCj4gLQkgKiBiZWZvcmUgd2UgZnJlZSB0aGUgY29udGV4dCBhc3NvY2lhdGVk IHdpdGggdGhlIHJlcXVlc3RzLgo+IC0JICovCj4gLQl3aGlsZSAoIWxpc3RfZW1wdHkoJnJpbmct PmFjdGl2ZV9saXN0KSkgewo+IC0JCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4g LQo+IC0JCW9iaiA9IGxpc3RfZmlyc3RfZW50cnkoJnJpbmctPmFjdGl2ZV9saXN0LAo+IC0JCQkJ ICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QsCj4gLQkJCQkgICAgICByaW5nX2xpc3Rb cmluZy0+aWRdKTsKPiAtCj4gLQkJaWYgKCFsaXN0X2VtcHR5KCZvYmotPmxhc3RfcmVhZFtyaW5n LT5pZF0ucmVxdWVzdC0+bGluaykpCj4gLQkJCWJyZWFrOwo+IC0KPiAtCQlpOTE1X2dlbV9vYmpl Y3RfcmV0aXJlX19yZWFkKG9iaiwgcmluZy0+aWQpOwo+IC0JfQo+IC0KPiAtCVdBUk5fT04oaTkx NV92ZXJpZnlfbGlzdHMocmluZy0+ZGV2KSk7Cj4gICB9Cj4KPiAgIHZvaWQKPiBAQCAtMjQzNCwx MyArMjM2NCwxMyBAQCBvdXQ6Cj4gICAgKiB3cml0ZSBkb21haW5zLCBlbWl0dGluZyBhbnkgb3V0 c3RhbmRpbmcgbGF6eSByZXF1ZXN0IGFuZCByZXRpcmluZyBhbmQKPiAgICAqIGNvbXBsZXRlZCBy ZXF1ZXN0cy4KPiAgICAqLwo+IC1zdGF0aWMgaW50Cj4gK3N0YXRpYyB2b2lkCj4gICBpOTE1X2dl bV9vYmplY3RfZmx1c2hfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g ICB7Cj4gICAJaW50IGk7Cj4KPiAgIAlpZiAoIW9iai0+YWN0aXZlKQo+IC0JCXJldHVybiAwOwo+ ICsJCXJldHVybjsKPgo+ICAgCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsrKSB7 Cj4gICAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+IEBAIC0yNDQ5LDE3ICsy Mzc5LDkgQEAgaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+ICAgCQlpZiAocmVxID09IE5VTEwpCj4gICAJCQljb250aW51ZTsKPgo+ IC0JCWlmIChsaXN0X2VtcHR5KCZyZXEtPmxpbmspKQo+IC0JCQlnb3RvIHJldGlyZTsKPiAtCj4g LQkJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkpIHsKPiArCQlpZiAoaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKPiAgIAkJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJl X3VwdG8ocmVxKTsKPiAtcmV0aXJlOgo+IC0JCQlpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFk KG9iaiwgaSk7Cj4gLQkJfQo+ICAgCX0KPiAtCj4gLQlyZXR1cm4gMDsKPiAgIH0KPgo+ICAgLyoq Cj4gQEAgLTI1MDcsMTAgKzI0MjksNyBAQCBpOTE1X2dlbV93YWl0X2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgIAl9Cj4K PiAgIAkvKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGUgb2JqZWN0IGdldHMgaW5hY3RpdmUgZXZlbnR1 YWxseS4gKi8KPiAtCXJldCA9IGk5MTVfZ2VtX29iamVjdF9mbHVzaF9hY3RpdmUob2JqKTsKPiAt CWlmIChyZXQpCj4gLQkJZ290byBvdXQ7Cj4gLQo+ICsJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2Fj dGl2ZShvYmopOwo+ICAgCWlmICghb2JqLT5hY3RpdmUpCj4gICAJCWdvdG8gb3V0Owo+Cj4gQEAg LTI1MjIsOCArMjQ0MSw2IEBAIGk5MTVfZ2VtX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICAgCQlnb3RvIG91dDsK PiAgIAl9Cj4KPiAtCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZvYmotPmJhc2UpOwo+IC0K PiAgIAlmb3IgKGkgPSAwOyBpIDwgSTkxNV9OVU1fUklOR1M7IGkrKykgewo+ICAgCQlpZiAob2Jq LT5sYXN0X3JlYWRbaV0ucmVxdWVzdCA9PSBOVUxMKQo+ICAgCQkJY29udGludWU7Cj4gQEAgLTI1 MzEsNiArMjQ0OCw4IEBAIGk5MTVfZ2VtX3dhaXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ICAgCQlyZXFbbisrXSA9IGk5 MTVfZ2VtX3JlcXVlc3RfZ2V0KG9iai0+bGFzdF9yZWFkW2ldLnJlcXVlc3QpOwo+ICAgCX0KPgo+ ICtvdXQ6Cj4gKwlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmb2JqLT5iYXNlKTsKPiAgIAlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPgo+ICAgCWZvciAoaSA9IDA7IGkgPCBu OyBpKyspIHsKPiBAQCAtMjU0MSwxMSArMjQ2MCw2IEBAIGk5MTVfZ2VtX3dhaXRfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxlKQo+ ICAgCQlpOTE1X2dlbV9yZXF1ZXN0X3B1dChyZXFbaV0pOwo+ICAgCX0KPiAgIAlyZXR1cm4gcmV0 Owo+IC0KPiAtb3V0Ogo+IC0JZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7 Cj4gLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKPiAtCXJldHVybiByZXQ7Cj4g ICB9Cj4KPiAgIHN0YXRpYyBpbnQKPiBAQCAtMjU2OSw3ICsyNDgzLDcgQEAgX19pOTE1X2dlbV9v YmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCQlpZiAocmV0 KQo+ICAgCQkJcmV0dXJuIHJldDsKPgo+IC0JCWk5MTVfZ2VtX29iamVjdF9yZXRpcmVfcmVxdWVz dChvYmosIGZyb20pOwo+ICsJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlX3VwdG8oZnJvbSk7Cj4g ICAJfSBlbHNlIHsKPiAgIAkJaW50IGlkeCA9IGludGVsX2VuZ2luZV9zeW5jX2luZGV4KGZyb20t PmVuZ2luZSwgdG8tPmVuZ2luZSk7Cj4gICAJCWlmIChmcm9tLT5mZW5jZS5zZXFubyA8PSBmcm9t LT5lbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vW2lkeF0pCj4gQEAgLTI3NjAsNyArMjY3NCw2 IEBAIGludCBpOTE1X2dwdV9pZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAJCQlyZXR1 cm4gcmV0Owo+ICAgCX0KPgo+IC0JV0FSTl9PTihpOTE1X3ZlcmlmeV9saXN0cyhkZXYpKTsKPiAg IAlyZXR1cm4gMDsKPiAgIH0KPgo+IEBAIC0zNjg5LDE2ICszNjAyLDEzIEBAIGk5MTVfZ2VtX2J1 c3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAkgKiBiZWNv bWUgbm9uLWJ1c3kgd2l0aG91dCBhbnkgZnVydGhlciBhY3Rpb25zLCB0aGVyZWZvcmUgZW1pdCBh bnkKPiAgIAkgKiBuZWNlc3NhcnkgZmx1c2hlcyBoZXJlLgo+ICAgCSAqLwo+IC0JcmV0ID0gaTkx NV9nZW1fb2JqZWN0X2ZsdXNoX2FjdGl2ZShvYmopOwo+IC0JaWYgKHJldCkKPiAtCQlnb3RvIHVu cmVmOwo+ICsJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX2FjdGl2ZShvYmopOwo+Cj4gICAJQlVJTERf QlVHX09OKEk5MTVfTlVNX1JJTkdTID4gMTYpOwo+ICAgCWFyZ3MtPmJ1c3kgPSBvYmotPmFjdGl2 ZSA8PCAxNjsKPiAgIAlpZiAob2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QpCj4gICAJCWFyZ3MtPmJ1 c3kgfD0gb2JqLT5sYXN0X3dyaXRlLnJlcXVlc3QtPmVuZ2luZS0+aWQ7Cj4KPiAtdW5yZWY6Cj4g ICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7Cj4gICB1bmxvY2s6Cj4g ICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gQEAgLTM3NzYsNyArMzY4Niwx MiBAQCB2b2lkIGk5MTVfZ2VtX29iamVjdF9pbml0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCj4KPiAgIAlJTklUX0xJU1RfSEVBRCgmb2JqLT5nbG9iYWxfbGlzdCk7Cj4gICAJZm9y IChpID0gMDsgaSA8IEk5MTVfTlVNX1JJTkdTOyBpKyspCj4gLQkJSU5JVF9MSVNUX0hFQUQoJm9i ai0+cmluZ19saXN0W2ldKTsKPiArCQlpbml0X3JlcXVlc3RfYWN0aXZlKCZvYmotPmxhc3RfcmVh ZFtpXSwKPiArCQkJCSAgICBpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkKTsKPiArCWluaXRf cmVxdWVzdF9hY3RpdmUoJm9iai0+bGFzdF93cml0ZSwKPiArCQkJICAgIGk5MTVfZ2VtX29iamVj dF9yZXRpcmVfX3dyaXRlKTsKPiArCWluaXRfcmVxdWVzdF9hY3RpdmUoJm9iai0+bGFzdF9mZW5j ZSwKPiArCQkJICAgIGk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX2ZlbmNlKTsKPiAgIAlJTklUX0xJ U1RfSEVBRCgmb2JqLT5vYmpfZXhlY19saW5rKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmb2JqLT52 bWFfbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJm9iai0+YmF0Y2hfcG9vbF9saW5rKTsKPiBA QCAtNDM3Miw3ICs0Mjg3LDYgQEAgaTkxNV9nZW1fY2xlYW51cF9yaW5nYnVmZmVyKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCj4gICBzdGF0aWMgdm9pZAo+ICAgaW5pdF9yaW5nX2xpc3RzKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gICB7Cj4gLQlJTklUX0xJU1RfSEVBRCgmcmluZy0+ YWN0aXZlX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xpc3QpOwo+ ICAgfQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2RlYnVn LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kZWJ1Zy5jCj4gZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0Cj4gaW5kZXggMTcyOTlkMDQxODlmLi4wMDAwMDAwMDAwMDAKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9kZWJ1Zy5jCj4gKysrIC9kZXYvbnVsbAo+IEBA IC0xLDcwICswLDAgQEAKPiAtLyoKPiAtICogQ29weXJpZ2h0IMKpIDIwMDggSW50ZWwgQ29ycG9y YXRpb24KPiAtICoKPiAtICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiAtICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK PiAtICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVk aW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+IC0gKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9k aWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiAtICogYW5kL29y IHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdo b20gdGhlCj4gLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gLSAqCj4gLSAqIFRoZSBhYm92ZSBjb3B5cmlnaHQg bm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiAt ICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZQo+IC0gKiBTb2Z0d2FyZS4KPiAtICoKPiAtICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKPiAtICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUg V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gLSAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+IC0g KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgo+IC0gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9O IE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+IC0gKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCj4gLSAqIElOIFRIRSBTT0ZUV0FSRS4KPiAtICoKPiAtICogQXV0aG9yczoKPiAt ICogICAgS2VpdGggUGFja2FyZCA8a2VpdGhwQGtlaXRocC5jb20+Cj4gLSAqCj4gLSAqLwo+IC0K PiAtI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gLSNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiAt I2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gLQo+IC0jaWYgV0FUQ0hfTElTVFMKPiAtaW50Cj4gLWk5 MTVfdmVyaWZ5X2xpc3RzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gLXsKPiAtCXN0YXRpYyBp bnQgd2FybmVkOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAtCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmc7Cj4gLQlpbnQgZXJyID0gMDsKPiAtCWludCBpOwo+IC0KPiAt CWlmICh3YXJuZWQpCj4gLQkJcmV0dXJuIDA7Cj4gLQo+IC0JZm9yX2VhY2hfcmluZyhyaW5nLCBk ZXZfcHJpdiwgaSkgewo+IC0JCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmcmluZy0+YWN0aXZl X2xpc3QsIHJpbmdfbGlzdFtyaW5nLT5pZF0pIHsKPiAtCQkJaWYgKG9iai0+YmFzZS5kZXYgIT0g ZGV2IHx8Cj4gLQkJCSAgICAhYXRvbWljX3JlYWQoJm9iai0+YmFzZS5yZWZjb3VudC5yZWZjb3Vu dCkpIHsKPiAtCQkJCURSTV9FUlJPUigiJXM6IGZyZWVkIGFjdGl2ZSBvYmogJXBcbiIsCj4gLQkJ CQkJICByaW5nLT5uYW1lLCBvYmopOwo+IC0JCQkJZXJyKys7Cj4gLQkJCQlicmVhazsKPiAtCQkJ fSBlbHNlIGlmICghb2JqLT5hY3RpdmUgfHwKPiAtCQkJCSAgIG9iai0+bGFzdF9yZWFkX3JlcVty aW5nLT5pZF0gPT0gTlVMTCkgewo+IC0JCQkJRFJNX0VSUk9SKCIlczogaW52YWxpZCBhY3RpdmUg b2JqICVwXG4iLAo+IC0JCQkJCSAgcmluZy0+bmFtZSwgb2JqKTsKPiAtCQkJCWVycisrOwo+IC0J CQl9IGVsc2UgaWYgKG9iai0+YmFzZS53cml0ZV9kb21haW4pIHsKPiAtCQkJCURSTV9FUlJPUigi JXM6IGludmFsaWQgd3JpdGUgb2JqICVwICh3ICV4KVxuIiwKPiAtCQkJCQkgIHJpbmctPm5hbWUs Cj4gLQkJCQkJICBvYmosIG9iai0+YmFzZS53cml0ZV9kb21haW4pOwo+IC0JCQkJZXJyKys7Cj4g LQkJCX0KPiAtCQl9Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIHdhcm5lZCA9IGVycjsKPiAtfQo+IC0j ZW5kaWYgLyogV0FUQ0hfTElTVCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZmVuY2Uu Ywo+IGluZGV4IGFiMjljMjM3ZmZhOS4uZmYwODVlZmNmMGU1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9mZW5jZS5jCj4gQEAgLTI2MSwxNSArMjYxLDcgQEAgc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfZ2VtX29iamVjdF9mZW5jZV9sb3N0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmopCj4gICBzdGF0aWMgaW50Cj4gICBpOTE1X2dlbV9vYmplY3Rfd2FpdF9mZW5jZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgewo+IC0JaWYgKG9iai0+bGFzdF9m ZW5jZS5yZXF1ZXN0KSB7Cj4gLQkJaW50IHJldCA9IGk5MTVfd2FpdF9yZXF1ZXN0KG9iai0+bGFz dF9mZW5jZS5yZXF1ZXN0KTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+IC0KPiAt CQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X2ZlbmNlLnJlcXVlc3QsIE5VTEwp Owo+IC0JfQo+IC0KPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGk5MTVfd2FpdF9yZXF1ZXN0KG9i ai0+bGFzdF9mZW5jZS5yZXF1ZXN0KTsKPiAgIH0KPgo+ICAgLyoqCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDdmMzhkODk3MjcyMS4uMDY5YzBiOWRmZDk1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IEBAIC0yMjgs NiArMjI4LDcgQEAgaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUsCj4gICAJCSAgIGVuZ2luZS0+ZmVuY2VfY29udGV4dCwKPiAgIAkJICAgc2Vxbm8p Owo+Cj4gKwlJTklUX0xJU1RfSEVBRCgmcmVxLT5hY3RpdmVfbGlzdCk7Cj4gICAJcmVxLT5pOTE1 ID0gZGV2X3ByaXY7Cj4gICAJcmVxLT5lbmdpbmUgPSBlbmdpbmU7Cj4gICAJcmVxLT5yZXNldF9j b3VudGVyID0gcmVzZXRfY291bnRlcjsKPiBAQCAtMzIwLDYgKzMyMSwyNyBAQCBzdGF0aWMgdm9p ZCBfX2k5MTVfZ2VtX3JlcXVlc3RfcmVsZWFzZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCj4gICAJaTkxNV9nZW1fcmVxdWVzdF9wdXQocmVxdWVzdCk7Cj4gICB9Cj4KPiAr c3RhdGljIHZvaWQgX19pOTE1X2dlbV9yZXF1ZXN0X3JldGlyZV9hY3RpdmUoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gK3sKPiArCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgKmFj dGl2ZSwgKm5leHQ7Cj4gKwo+ICsJLyogV2FsayB0aHJvdWdoIHRoZSBhY3RpdmUgbGlzdCwgY2Fs bGluZyByZXRpcmUgb24gZWFjaC4gVGhpcyBhbGxvd3MKPiArCSAqIG9iamVjdHMgdG8gdHJhY2sg dGhlaXIgR1BVIGFjdGl2aXR5IGFuZCBtYXJrIHRoZW1zZWx2ZXMgYXMgaWRsZQo+ICsJICogd2hl biB0aGVpciAqbGFzdCogYWN0aXZlIHJlcXVlc3QgaXMgY29tcGxldGVkICh1cGRhdGluZyBzdGF0 ZQo+ICsJICogdHJhY2tpbmcgbGlzdHMgZm9yIGV2aWN0aW9uLCBhY3RpdmUgcmVmZXJlbmNlcyBm b3IgR0VNLCBldGMpLgo+ICsJICoKPiArCSAqIEFzIHRoZSAtPnJldGlyZSgpIG1heSBmcmVlIHRo ZSBub2RlLCB3ZSBkZWNvdXBsZSBpdCBmaXJzdCBhbmQKPiArCSAqIHBhc3MgYWxvbmcgdGhlIGF1 eGlsaWFyeSBpbmZvcm1hdGlvbiAodG8gYXZvaWQgZGVyZWZlcmVuY2luZwo+ICsJICogdGhlIG5v ZGUgYWZ0ZXIgdGhlIGNhbGxiYWNrKS4KPiArCSAqLwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGFjdGl2ZSwgbmV4dCwgJnJlcS0+YWN0aXZlX2xpc3QsIGxpbmspIHsKPiArCQlJTklUX0xJ U1RfSEVBRCgmYWN0aXZlLT5saW5rKTsKPiArCQlhY3RpdmUtPnJlcXVlc3QgPSBOVUxMOwo+ICsK PiArCQlhY3RpdmUtPnJldGlyZShhY3RpdmUsIHJlcSk7Cj4gKwl9Cj4gK30KPiArCj4gICB2b2lk IGk5MTVfZ2VtX3JlcXVlc3RfY2FuY2VsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KQo+ICAgewo+ICAgCWludGVsX3JpbmdfcmVzZXJ2ZWRfc3BhY2VfY2FuY2VsKHJlcS0+cmluZyk7 Cj4gQEAgLTMyNyw2ICszNDksMTQgQEAgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2NhbmNlbChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIAkJaWYgKHJlcS0+Y3R4ICE9IHJlcS0+ ZW5naW5lLT5kZWZhdWx0X2NvbnRleHQpCj4gICAJCQlpbnRlbF9scl9jb250ZXh0X3VucGluKHJl cSk7Cj4gICAJfQo+ICsKPiArCS8qIElmIGEgcmVxdWVzdCBpcyB0byBiZSBkaXNjYXJkZWQgYWZ0 ZXIgYWN0aW9ucyBoYXZlIGJlZW4gcXVldWVkIHVwb24KPiArCSAqIGl0LCB3ZSBjYW5ub3QgdW53 aW5kIHRoYXQgcmVxdWVzdCBhbmQgaXQgbXVzdCBiZSBzdWJtaXR0ZWQgcmF0aGVyCj4gKwkgKiB0 aGFuIGNhbmNlbGxlZC4gVGhpcyBpcyBub3QgbGltaXRlZCB0byBhY3Rpdml0eSB0cmFja2luZywg YnV0IGFsbAo+ICsJICogb3RoZXIgc3RhdGUgdHJhY2tpbmcgKHN1Y2ggYXMgY3VycmVudCByZWdp c3RlciBzZXR0aW5ncyBldGMpLgo+ICsJICovCj4gKwlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZy ZXEtPmFjdGl2ZV9saXN0KSk7Cj4gKwo+ICAgCV9faTkxNV9nZW1fcmVxdWVzdF9yZWxlYXNlKHJl cSk7Cj4gICB9Cj4KPiBAQCAtMzQ0LDYgKzM3NCw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jl cXVlc3RfcmV0aXJlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAkg KiBjb21wbGV0aW9uIG9yZGVyLgo+ICAgCSAqLwo+ICAgCXJlcXVlc3QtPnJpbmctPmxhc3RfcmV0 aXJlZF9oZWFkID0gcmVxdWVzdC0+cG9zdGZpeDsKPiArCj4gKwlfX2k5MTVfZ2VtX3JlcXVlc3Rf cmV0aXJlX2FjdGl2ZShyZXF1ZXN0KTsKPiAgIAlfX2k5MTVfZ2VtX3JlcXVlc3RfcmVsZWFzZShy ZXF1ZXN0KTsKPiAgIH0KPgo+IEBAIC0zNTQsNyArMzg2LDYgQEAgaTkxNV9nZW1fcmVxdWVzdF9y ZXRpcmVfdXB0byhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRtcDsKPgo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmVu Z2luZS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IC0KPiAgIAlpZiAobGlzdF9lbXB0eSgmcmVxLT5s aW5rKSkKPiAgIAkJcmV0dXJuOwo+Cj4gQEAgLTM2NCw4ICszOTUsNiBAQCBpOTE1X2dlbV9yZXF1 ZXN0X3JldGlyZV91cHRvKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+Cj4gICAJ CWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHRtcCk7Cj4gICAJfSB3aGlsZSAodG1wICE9IHJlcSk7 Cj4gLQo+IC0JV0FSTl9PTihpOTE1X3ZlcmlmeV9saXN0cyhlbmdpbmUtPmRldikpOwo+ICAgfQo+ Cj4gICBzdGF0aWMgdm9pZCBpOTE1X2dlbV9tYXJrX2J1c3koc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+IEBAIC01NjUsOSArNTk0LDYgQEAgaW50IF9faTkxNV93YWl0X3JlcXVl c3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4KPiAgIAltaWdodF9zbGVlcCgp Owo+Cj4gLQlpZiAobGlzdF9lbXB0eSgmcmVxLT5saW5rKSkKPiAtCQlyZXR1cm4gMDsKPiAtCj4g ICAJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkpCj4gICAJCXJldHVybiAwOwo+ Cj4gQEAgLTcwMCwxMCArNzI2LDEyIEBAIGk5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+ICAgCWludCByZXQ7Cj4KPiAtCUJVR19PTihyZXEg PT0gTlVMTCk7Cj4gKwlpZiAocmVxID09IE5VTEwpCj4gKwkJcmV0dXJuIDA7Cj4KPiAtCUJVR19P TighbXV0ZXhfaXNfbG9ja2VkKCZyZXEtPmk5MTUtPmRldi0+c3RydWN0X211dGV4KSk7Cj4gKwlH RU1fQlVHX09OKGxpc3RfZW1wdHkoJnJlcS0+bGluaykpOwo+Cj4gKwlsb2NrZGVwX2Fzc2VydF9o ZWxkKCZyZXEtPmk5MTUtPmRldi0+c3RydWN0X211dGV4KTsKPiAgIAlyZXQgPSBfX2k5MTVfd2Fp dF9yZXF1ZXN0KHJlcSwgcmVxLT5pOTE1LT5tbS5pbnRlcnJ1cHRpYmxlLCBOVUxMLCBOVUxMKTsK PiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZXF1ZXN0LmgKPiBpbmRleCAwMWQ1ODliZTk1ZmQuLjU5OTU3ZDVlZGZkYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiBAQCAtODQsNiArODQsNyBA QCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+ICAgCS8qKiBCYXRjaCBidWZmZXIgcmVs YXRlZCB0byB0aGlzIHJlcXVlc3QgaWYgYW55ICh1c2VkIGZvcgo+ICAgCSAgICBlcnJvciBzdGF0 ZSBkdW1wIG9ubHkpICovCj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29i ajsKPiArCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpc3Q7Cj4KPiAgIAkvKiogVGltZSBhdCB3 aGljaCB0aGlzIHJlcXVlc3Qgd2FzIGVtaXR0ZWQsIGluIGppZmZpZXMuICovCj4gICAJdW5zaWdu ZWQgbG9uZyBlbWl0dGVkX2ppZmZpZXM7Cj4gQEAgLTIzNywxMyArMjM4LDI2IEBAIHN0YXRpYyBp bmxpbmUgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSkKPiAgICAqLwo+ICAgc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSB7Cj4gICAJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICsJc3RydWN0IGxpc3RfaGVh ZCBsaW5rOwo+ICsJdm9pZCAoKnJldGlyZSkoc3RydWN0IGk5MTVfZ2VtX2FjdGl2ZSAqLAo+ICsJ CSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKik7Cj4gICB9Owo+Cj4gICBzdGF0 aWMgaW5saW5lIHZvaWQKPiAraW5pdF9yZXF1ZXN0X2FjdGl2ZShzdHJ1Y3QgaTkxNV9nZW1fYWN0 aXZlICphY3RpdmUsCj4gKwkJICAgIHZvaWQgKCpmdW5jKShzdHJ1Y3QgaTkxNV9nZW1fYWN0aXZl ICosCj4gKwkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICopKQo+ICt7Cj4gKwlJTklU X0xJU1RfSEVBRCgmYWN0aXZlLT5saW5rKTsKPiArCWFjdGl2ZS0+cmV0aXJlID0gZnVuYzsKPiAr fQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkCj4gICBpOTE1X2dlbV9yZXF1ZXN0X21hcmtfYWN0 aXZlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAgIAkJCSAgICAgc3Ry dWN0IGk5MTVfZ2VtX2FjdGl2ZSAqYWN0aXZlKQo+ICAgewo+IC0JaTkxNV9nZW1fcmVxdWVzdF9h c3NpZ24oJmFjdGl2ZS0+cmVxdWVzdCwgcmVxdWVzdCk7Cj4gKwlsaXN0X21vdmUoJmFjdGl2ZS0+ bGluaywgJnJlcXVlc3QtPmFjdGl2ZV9saXN0KTsKPiArCWFjdGl2ZS0+cmVxdWVzdCA9IHJlcXVl c3Q7Cj4gICB9Cj4KPiAgICNlbmRpZiAvKiBJOTE1X0dFTV9SRVFVRVNUX0ggKi8KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDBmMGJmOTdlNDAzMi4uYjVmNjJiNWY0OTEzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMTU1OCw3ICsxNTU4LDYgQEAgc3RhdGlj IGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW4KPiAgIAlyaW5nLT5kZXYgPSBkZXY7Cj4gICAJcmluZy0+aTkxNSA9 IHRvX2k5MTUoZGV2KTsKPiAgIAlyaW5nLT5mZW5jZV9jb250ZXh0ID0gZmVuY2VfY29udGV4dF9h bGxvYygxKTsKPiAtCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5hY3RpdmVfbGlzdCk7Cj4gICAJSU5J VF9MSVNUX0hFQUQoJnJpbmctPnJlcXVlc3RfbGlzdCk7Cj4gICAJaTkxNV9nZW1fYmF0Y2hfcG9v bF9pbml0KGRldiwgJnJpbmctPmJhdGNoX3Bvb2wpOwo+ICAgCWludGVsX2VuZ2luZV9pbml0X2Jy ZWFkY3J1bWJzKHJpbmcpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiBpbmRleCAyMTM1NDBmOTJjOWQuLjdjYTRlMWZjODU0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtMjAyNSw3ICsyMDI1LDYgQEAgc3RhdGljIGlu dCBpbnRlbF9pbml0X2VuZ2luZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWVuZ2luZS0+ ZGV2ID0gZGV2Owo+ICAgCWVuZ2luZS0+aTkxNSA9IHRvX2k5MTUoZGV2KTsKPiAgIAllbmdpbmUt PmZlbmNlX2NvbnRleHQgPSBmZW5jZV9jb250ZXh0X2FsbG9jKDEpOwo+IC0JSU5JVF9MSVNUX0hF QUQoJmVuZ2luZS0+YWN0aXZlX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPnJl cXVlc3RfbGlzdCk7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUp Owo+ICAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmJ1ZmZlcnMpOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCBmYzljMWU0NTNiZTEuLmJiOTJkODMxYTEw MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMjk4 LDE4ICsyOTgsNiBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiAgIAl1MzIgICAgICAgICAg ICAgaXJxX2tlZXBfbWFzazsgLyogYml0bWFzayBmb3IgaW50ZXJydXB0cyB0aGF0IHNob3VsZCBu b3QgYmUgbWFza2VkICovCj4KPiAgIAkvKioKPiAtCSAqIExpc3Qgb2Ygb2JqZWN0cyBjdXJyZW50 bHkgaW52b2x2ZWQgaW4gcmVuZGVyaW5nIGZyb20gdGhlCj4gLQkgKiByaW5nYnVmZmVyLgo+IC0J ICoKPiAtCSAqIEluY2x1ZGVzIGJ1ZmZlcnMgaGF2aW5nIHRoZSBjb250ZW50cyBvZiB0aGVpciBH UFUgY2FjaGVzCj4gLQkgKiBmbHVzaGVkLCBub3QgbmVjZXNzYXJpbHkgcHJpbWl0aXZlcy4gIGxh c3RfcmVhZF9yZXEKPiAtCSAqIHJlcHJlc2VudHMgd2hlbiB0aGUgcmVuZGVyaW5nIGludm9sdmVk IHdpbGwgYmUgY29tcGxldGVkLgo+IC0JICoKPiAtCSAqIEEgcmVmZXJlbmNlIGlzIGhlbGQgb24g dGhlIGJ1ZmZlciB3aGlsZSBvbiB0aGlzIGxpc3QuCj4gLQkgKi8KPiAtCXN0cnVjdCBsaXN0X2hl YWQgYWN0aXZlX2xpc3Q7Cj4gLQo+IC0JLyoqCj4gICAJICogTGlzdCBvZiBicmVhZGNydW1icyBh c3NvY2lhdGVkIHdpdGggR1BVIHJlcXVlc3RzIGN1cnJlbnRseQo+ICAgCSAqIG91dHN0YW5kaW5n Lgo+ICAgCSAqLwo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==