From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 10/46] drm/i915: Make request allocation caches global Date: Mon, 11 Feb 2019 11:43:41 +0000 Message-ID: References: <20190206130356.18771-1-chris@chris-wilson.co.uk> <20190206130356.18771-11-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id B2F556E466 for ; Mon, 11 Feb 2019 11:43:32 +0000 (UTC) In-Reply-To: <20190206130356.18771-11-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDA2LzAyLzIwMTkgMTM6MDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBcyBrbWVtX2NhY2hl cyBzaGFyZSB0aGUgc2FtZSBwcm9wZXJ0aWVzIChzaXplLCBhbGxvY2F0aW9uL2ZyZWUgYmVoYXZp b3VyKQo+IGZvciBhbGwgcG90ZW50aWFsIGRldmljZXMsIHdlIGNhbiB1c2UgZ2xvYmFsIGNhY2hl cy4gV2hpbGUgdGhpcwo+IHBvdGVudGlhbCBoYXMgd29yc2UgZnJhZ21lbnRhdGlvbiBiZWhhdmlv dXIgKG9uZSBjYW4gYXJndWUgdGhhdAo+IGRpZmZlcmVudCBkZXZpY2VzIHdvdWxkIGhhdmUgZGlm ZmVyZW50IGFjdGl2aXR5IGxpZmV0aW1lcywgYnV0IHlvdSBjYW4KPiBhbHNvIGFyZ3VlIHRoYXQg YWN0aXZpdHkgaXMgdGVtcG9yYWwgYWNyb3NzIHRoZSBzeXN0ZW0pIGl0IGlzIHRoZQo+IGRlZmF1 bHQgYmVoYXZpb3VyIG9mIHRoZSBzeXN0ZW0gYXQgbGFyZ2UgdG8gYW1hbGdhbWF0ZSBtYXRjaGlu ZyBjYWNoZXMuCj4gCj4gVGhlIGJlbmVmaXQgZm9yIHVzIGlzIG11Y2ggcmVkdWNlZCBwb2ludGVy IGRhbmNpbmcgYWxvbmcgdGhlIGZyZXF1ZW50Cj4gYWxsb2NhdGlvbiBwYXRocy4KPiAKPiB2Mjog RGVmZXIgc2hyaW5raW5nIHVudGlsIGFmdGVyIGEgZ2xvYmFsIGdyYWNlIHBlcmlvZCBmb3IgZnV0 dXJlcHJvb2ZpbmcKPiBtdWx0aXBsZSBjb25zdW1lcnMgb2YgdGhlIHNsYWIgY2FjaGVzLCBzaW1p bGFyIHRvIHRoZSBjdXJyZW50IHN0cmF0ZWd5Cj4gZm9yIGF2b2lkaW5nIHNocmlua2luZyB0b28g ZWFybHkuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAg ICAgICAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYyAg ICAgICAgICAgIHwgICA3ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5o ICAgICAgICAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgICAgICAgICAgIHwgICAzIC0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg ICAgICAgICAgICAgICB8ICAzNCArLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2xvYmFscy5jICAgICAgICAgICB8IDEwNSArKysrKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5oICAgICAgICAgICB8ICAxNSArKysKPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGNpLmMgICAgICAgICAgICAgICB8ICAgOCArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgIDUzICsrKysrKyst LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgIDEw ICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jICAgICAgICAgfCAg NjYgKysrKysrKystLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgg ICAgICAgICB8ICAzNCArKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19z dWJtaXNzaW9uLmMgICB8ICAgMyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgICAgICAgICAgICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmggICAgICAgfCAgMTcgLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaW50ZWxfbHJjLmMgICAgfCAgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9tb2NrX2VuZ2luZS5jICB8ICA0OCArKysrLS0tLQo+ICAgLi4uL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMgIHwgIDI2IC0tLS0tCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMgfCAgMTIgKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlcXVlc3QuaCB8ICAgNyAtLQo+ICAgMjAgZmls ZXMgY2hhbmdlZCwgMzA2IGluc2VydGlvbnMoKyksIDE1MiBkZWxldGlvbnMoLSkKPiAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2JhbHMuYwo+ICAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5oCj4gCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCAxNzg3ZTEyOTliMWIuLmExZDgzNDA2ODc2NSAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTc3LDYgKzc3LDcgQEAgaTkxNS15ICs9IFwKPiAg IAkgIGk5MTVfZ2VtX3RpbGluZy5vIFwKPiAgIAkgIGk5MTVfZ2VtX3VzZXJwdHIubyBcCj4gICAJ ICBpOTE1X2dlbWZzLm8gXAo+ICsJICBpOTE1X2dsb2JhbHMubyBcCj4gICAJICBpOTE1X3F1ZXJ5 Lm8gXAo+ICAgCSAgaTkxNV9yZXF1ZXN0Lm8gXAo+ICAgCSAgaTkxNV9zY2hlZHVsZXIubyBcCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCj4gaW5kZXggMjE1YjZmZjhhYTczLi45MDI2Nzg3 ZWJkZjggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmMKPiBAQCAtMjgwLDcgKzI4 MCwxMiBAQCBpbnQgX19pbml0IGk5MTVfZ2xvYmFsX2FjdGl2ZV9pbml0KHZvaWQpCj4gICAJcmV0 dXJuIDA7Cj4gICB9Cj4gICAKPiAtdm9pZCBfX2V4aXQgaTkxNV9nbG9iYWxfYWN0aXZlX2V4aXQo dm9pZCkKPiArdm9pZCBpOTE1X2dsb2JhbF9hY3RpdmVfc2hyaW5rKHZvaWQpCj4gK3sKPiArCWtt ZW1fY2FjaGVfc2hyaW5rKGdsb2JhbC5zbGFiX2NhY2hlKTsKPiArfQo+ICsKPiArdm9pZCBpOTE1 X2dsb2JhbF9hY3RpdmVfZXhpdCh2b2lkKQo+ICAgewo+ICAgCWttZW1fY2FjaGVfZGVzdHJveShn bG9iYWwuc2xhYl9jYWNoZSk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfYWN0aXZlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5oCj4g aW5kZXggMTJiNWMxZDI4N2QxLi41ZmJkOTEwMjM4NGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfYWN0aXZlLmgKPiBAQCAtNDIwLDYgKzQyMCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1 X2FjdGl2ZV9maW5pKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKSB7IH0KPiAgICNlbmRpZgo+ICAg Cj4gICBpbnQgaTkxNV9nbG9iYWxfYWN0aXZlX2luaXQodm9pZCk7Cj4gK3ZvaWQgaTkxNV9nbG9i YWxfYWN0aXZlX3Nocmluayh2b2lkKTsKPiAgIHZvaWQgaTkxNV9nbG9iYWxfYWN0aXZlX2V4aXQo dm9pZCk7Cj4gICAKPiAgICNlbmRpZiAvKiBfSTkxNV9BQ1RJVkVfSF8gKi8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCAzNzIzMGFlN2ZiZTYuLmEzNjViMWEyZWE5YSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNDU5LDkgKzE0NTksNiBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7Cj4gICAJc3RydWN0IGttZW1fY2FjaGUgKm9iamVjdHM7Cj4gICAJc3RydWN0 IGttZW1fY2FjaGUgKnZtYXM7Cj4gICAJc3RydWN0IGttZW1fY2FjaGUgKmx1dHM7Cj4gLQlzdHJ1 Y3Qga21lbV9jYWNoZSAqcmVxdWVzdHM7Cj4gLQlzdHJ1Y3Qga21lbV9jYWNoZSAqZGVwZW5kZW5j aWVzOwo+IC0Jc3RydWN0IGttZW1fY2FjaGUgKnByaW9yaXRpZXM7Cj4gICAKPiAgIAljb25zdCBz dHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gX19pbmZvOyAvKiBVc2UgSU5URUxfSU5GTygpIHRvIGFj Y2Vzcy4gKi8KPiAgIAlzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvIF9fcnVudGltZTsgLyogVXNl IFJVTlRJTUVfSU5GTygpIHRvIGFjY2Vzcy4gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBp bmRleCAxZWIzYTVmODY1NGMuLmQxOGM0Y2NmZjM3MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+IEBAIC00Miw2ICs0Miw3IEBACj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNp bmNsdWRlICJpOTE1X2dlbV9jbGZsdXNoLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9nZW1mcy5oIgo+ ICsjaW5jbHVkZSAiaTkxNV9nbG9iYWxzLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9yZXNldC5oIgo+ ICAgI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKPiAgICNpbmNsdWRlICJpOTE1X3ZncHUuaCIKPiBA QCAtMTg3LDYgKzE4OCw4IEBAIHZvaWQgaTkxNV9nZW1fdW5wYXJrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQo+ICAgCWlmICh1bmxpa2VseSgrK2k5MTUtPmd0LmVwb2NoID09IDApKSAv KiBrZWVwIDAgYXMgaW52YWxpZCAqLwo+ICAgCQlpOTE1LT5ndC5lcG9jaCA9IDE7Cj4gICAKPiAr CWk5MTVfZ2xvYmFsc191bnBhcmsoKTsKPiArCj4gICAJaW50ZWxfZW5hYmxlX2d0X3Bvd2Vyc2F2 ZShpOTE1KTsKPiAgIAlpOTE1X3VwZGF0ZV9nZnhfdmFsKGk5MTUpOwo+ICAgCWlmIChJTlRFTF9H RU4oaTkxNSkgPj0gNikKPiBAQCAtMjkxNiwxMiArMjkxOSwxMSBAQCBzdGF0aWMgdm9pZCBzaHJp bmtfY2FjaGVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCSAqIGZpbGxlZCBz bGFicyB0byBwcmlvcml0aXNlIGFsbG9jYXRpbmcgZnJvbSB0aGUgbW9zdGx5IGZ1bGwgc2xhYnMs Cj4gICAJICogd2l0aCB0aGUgYWltIG9mIHJlZHVjaW5nIGZyYWdtZW50YXRpb24uCj4gICAJICov Cj4gLQlrbWVtX2NhY2hlX3NocmluayhpOTE1LT5wcmlvcml0aWVzKTsKPiAtCWttZW1fY2FjaGVf c2hyaW5rKGk5MTUtPmRlcGVuZGVuY2llcyk7Cj4gLQlrbWVtX2NhY2hlX3NocmluayhpOTE1LT5y ZXF1ZXN0cyk7Cj4gICAJa21lbV9jYWNoZV9zaHJpbmsoaTkxNS0+bHV0cyk7Cj4gICAJa21lbV9j YWNoZV9zaHJpbmsoaTkxNS0+dm1hcyk7Cj4gICAJa21lbV9jYWNoZV9zaHJpbmsoaTkxNS0+b2Jq ZWN0cyk7Cj4gKwo+ICsJaTkxNV9nbG9iYWxzX3BhcmsoKTsKClNsaWdodGx5IGNvbmZ1c2luZyB0 aGF0IHRoZSBzaHJpbmsgY2FjaGVzIHBhdGggY2FsbHMgZ2xvYmFsc19wYXJrIC0gaWUgCmFmdGVy IHRoZSBkZXZpY2UgaGFzIGJlZW4gcGFya2VkLiBXb3VsZCBpOTE1X2dsb2JhbHNfc2hyaW5rIGFu ZCAKX19pOTE1X2dsb2JhbHNfc2hyaW5rIGJlIGNsZWFyZXI/IE5vdCBzdXJlLgoKPiAgIH0KPiAg IAo+ICAgc3RydWN0IHNsZWVwX3JjdV93b3JrIHsKPiBAQCAtNTI2NCwyMyArNTI2Niw2IEBAIGlu dCBpOTE1X2dlbV9pbml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIAlpZiAoIWRldl9wcml2LT5sdXRzKQo+ICAgCQlnb3RvIGVycl92bWFzOwo+ICAgCj4gLQlk ZXZfcHJpdi0+cmVxdWVzdHMgPSBLTUVNX0NBQ0hFKGk5MTVfcmVxdWVzdCwKPiAtCQkJCQlTTEFC X0hXQ0FDSEVfQUxJR04gfAo+IC0JCQkJCVNMQUJfUkVDTEFJTV9BQ0NPVU5UIHwKPiAtCQkJCQlT TEFCX1RZUEVTQUZFX0JZX1JDVSk7Cj4gLQlpZiAoIWRldl9wcml2LT5yZXF1ZXN0cykKPiAtCQln b3RvIGVycl9sdXRzOwo+IC0KPiAtCWRldl9wcml2LT5kZXBlbmRlbmNpZXMgPSBLTUVNX0NBQ0hF KGk5MTVfZGVwZW5kZW5jeSwKPiAtCQkJCQkgICAgU0xBQl9IV0NBQ0hFX0FMSUdOIHwKPiAtCQkJ CQkgICAgU0xBQl9SRUNMQUlNX0FDQ09VTlQpOwo+IC0JaWYgKCFkZXZfcHJpdi0+ZGVwZW5kZW5j aWVzKQo+IC0JCWdvdG8gZXJyX3JlcXVlc3RzOwo+IC0KPiAtCWRldl9wcml2LT5wcmlvcml0aWVz ID0gS01FTV9DQUNIRShpOTE1X3ByaW9saXN0LCBTTEFCX0hXQ0FDSEVfQUxJR04pOwo+IC0JaWYg KCFkZXZfcHJpdi0+cHJpb3JpdGllcykKPiAtCQlnb3RvIGVycl9kZXBlbmRlbmNpZXM7Cj4gLQo+ ICAgCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Z3QuYWN0aXZlX3JpbmdzKTsKPiAgIAlJTklU X0xJU1RfSEVBRCgmZGV2X3ByaXYtPmd0LmNsb3NlZF92bWEpOwo+ICAgCj4gQEAgLTUzMDUsMTIg KzUyOTAsNiBAQCBpbnQgaTkxNV9nZW1faW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICAKPiAgIAlyZXR1cm4gMDsKPiAgIAo+IC1lcnJfZGVwZW5kZW5jaWVz Ogo+IC0Ja21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT5kZXBlbmRlbmNpZXMpOwo+IC1lcnJf cmVxdWVzdHM6Cj4gLQlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnJlcXVlc3RzKTsKPiAt ZXJyX2x1dHM6Cj4gLQlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPmx1dHMpOwo+ICAgZXJy X3ZtYXM6Cj4gICAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2LT52bWFzKTsKPiAgIGVycl9v YmplY3RzOgo+IEBAIC01MzI4LDkgKzUzMDcsNiBAQCB2b2lkIGk5MTVfZ2VtX2NsZWFudXBfZWFy bHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCj4gICAJY2xlYW51cF9z cmN1X3N0cnVjdCgmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNldF9iYWNrb2ZmX3NyY3UpOwo+ICAg Cj4gLQlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnByaW9yaXRpZXMpOwo+IC0Ja21lbV9j YWNoZV9kZXN0cm95KGRldl9wcml2LT5kZXBlbmRlbmNpZXMpOwo+IC0Ja21lbV9jYWNoZV9kZXN0 cm95KGRldl9wcml2LT5yZXF1ZXN0cyk7Cj4gICAJa21lbV9jYWNoZV9kZXN0cm95KGRldl9wcml2 LT5sdXRzKTsKPiAgIAlrbWVtX2NhY2hlX2Rlc3Ryb3koZGV2X3ByaXYtPnZtYXMpOwo+ICAgCWtt ZW1fY2FjaGVfZGVzdHJveShkZXZfcHJpdi0+b2JqZWN0cyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nbG9iYWxzLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4u ODJlZTZiMWU3MjI3Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2xvYmFscy5jCj4gQEAgLTAsMCArMSwxMDUgQEAKPiArLyoKPiArICogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IE1JVAo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBD b3Jwb3JhdGlvbgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKyNpbmNs dWRlIDxsaW51eC93b3JrcXVldWUuaD4KPiArCj4gKyNpbmNsdWRlICJpOTE1X2FjdGl2ZS5oIgo+ ICsjaW5jbHVkZSAiaTkxNV9nbG9iYWxzLmgiCj4gKyNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIK PiArI2luY2x1ZGUgImk5MTVfc2NoZWR1bGVyLmgiCj4gKwo+ICtpbnQgX19pbml0IGk5MTVfZ2xv YmFsc19pbml0KHZvaWQpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gaTkxNV9nbG9i YWxfYWN0aXZlX2luaXQoKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsKPiArCj4gKwll cnIgPSBpOTE1X2dsb2JhbF9yZXF1ZXN0X2luaXQoKTsKPiArCWlmIChlcnIpCj4gKwkJZ290byBl cnJfYWN0aXZlOwo+ICsKPiArCWVyciA9IGk5MTVfZ2xvYmFsX3NjaGVkdWxlcl9pbml0KCk7Cj4g KwlpZiAoZXJyKQo+ICsJCWdvdG8gZXJyX3JlcXVlc3Q7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ ICtlcnJfcmVxdWVzdDoKPiArCWk5MTVfZ2xvYmFsX3JlcXVlc3RfZXhpdCgpOwo+ICtlcnJfYWN0 aXZlOgo+ICsJaTkxNV9nbG9iYWxfYWN0aXZlX2V4aXQoKTsKPiArCXJldHVybiBlcnI7Cj4gK30K PiArCj4gK3N0YXRpYyB2b2lkIGk5MTVfZ2xvYmFsc19zaHJpbmsodm9pZCkKPiArewo+ICsJaTkx NV9nbG9iYWxfYWN0aXZlX3NocmluaygpOwo+ICsJaTkxNV9nbG9iYWxfcmVxdWVzdF9zaHJpbmso KTsKPiArCWk5MTVfZ2xvYmFsX3NjaGVkdWxlcl9zaHJpbmsoKTsKPiArfQo+ICsKPiArc3RhdGlj IGF0b21pY190IGFjdGl2ZTsKPiArc3RhdGljIGF0b21pY190IGVwb2NoOwo+ICtzdHJ1Y3QgcGFy a193b3JrIHsKPiArCXN0cnVjdCByY3Vfd29yayB3b3JrOwo+ICsJaW50IGVwb2NoOwo+ICt9Owo+ ICsKPiArc3RhdGljIHZvaWQgX19pOTE1X2dsb2JhbHNfcGFyayhzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCj4gK3sKPiArCXN0cnVjdCBwYXJrX3dvcmsgKndyayA9IGNvbnRhaW5lcl9vZih3b3Jr LCB0eXBlb2YoKndyayksIHdvcmsud29yayk7Cj4gKwo+ICsJLyogQ29uZmlybSBub3RoaW5nIHdv a2UgdXAgaW4gdGhlIGxhc3QgZ3JhY2UgcGVyaW9kICovCj4gKwlpZiAod3JrLT5lcG9jaCA9PSBh dG9taWNfcmVhZCgmZXBvY2gpKQo+ICsJCWk5MTVfZ2xvYmFsc19zaHJpbmsoKTsKPiArCj4gKwlr ZnJlZSh3cmspOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfZ2xvYmFsc19wYXJrKHZvaWQpCj4gK3sK PiArCXN0cnVjdCBwYXJrX3dvcmsgKndyazsKPiArCj4gKwkvKgo+ICsJICogRGVmZXIgc2hyaW5r aW5nIHRoZSBnbG9iYWwgc2xhYiBjYWNoZXMgKGFuZCBvdGhlciB3b3JrKSB1bnRpbAo+ICsJICog YWZ0ZXIgYSBSQ1UgZ3JhY2UgcGVyaW9kIGhhcyBjb21wbGV0ZWQgd2l0aCBubyBhY3Rpdml0eS4g VGhpcwo+ICsJICogaXMgdG8gdHJ5IGFuZCByZWR1Y2UgdGhlIGxhdGVuY3kgaW1wYWN0IG9uIHRo ZSBjb25zdW1lcnMgY2F1c2VkCj4gKwkgKiBieSB1cyBzaHJpbmtpbmcgdGhlIGNhY2hlcyB0aGUg c2FtZSB0aW1lIGFzIHRoZXkgYXJlIHRyeWluZyB0bwo+ICsJICogYWxsb2NhdGUsIHdpdGggdGhl IGFzc3VtcHRpb24gYmVpbmcgdGhhdCBpZiB3ZSBpZGxlIGxvbmcgZW5vdWdoCj4gKwkgKiBmb3Ig YW4gUkNVIGdyYWNlIHBlcmlvZCB0byBlbGFwc2Ugc2luY2UgdGhlIGxhc3QgdXNlLCBpdCBpcyBs aWtlbHkKPiArCSAqIHRvIGJlIGxvbmdlciB1bnRpbCB3ZSBuZWVkIHRoZSBjYWNoZXMgYWdhaW4u Cj4gKwkgKi8KPiArCWlmICghYXRvbWljX2RlY19hbmRfdGVzdCgmYWN0aXZlKSkKPiArCQlyZXR1 cm47Cj4gKwo+ICsJd3JrID0ga21hbGxvYyhzaXplb2YoKndyayksIEdGUF9LRVJORUwpOwo+ICsJ aWYgKCF3cmspCj4gKwkJcmV0dXJuOwo+ICsKPiArCXdyay0+ZXBvY2ggPSBhdG9taWNfaW5jX3Jl dHVybigmZXBvY2gpOwoKRG8geW91IG5lZWQgdG8gYnVtcCB0aGUgZXBvY2ggaGVyZT8gVW5wYXJr IHdvdWxkIGJ1bXAgaXQgc28gCmF1dG9tYXRpY2FsbHkgd2hlbiByY3Ugd29yayBnZXRzIHRvIHJ1 biBpdCB3b3VsZCBmYWlsIGFscmVhZHkuIExpa2UgdGhpcyAKaXQgc291bmRzIGxpa2UgZG91Ymxl IGluY3JlbWVudC4gSSBkb24ndCBzZWUgYSBwcm9ibGVtIHdpdGggdGhlIGRvdWJsZSAKaW5jcmVt ZW50IEkganVzdCBmYWlsZWQgdG8gc3BvdCBpZiBpdCBpcyBhY3R1YWxseSBuZWVkZWQgZm9yIHNv bWUgc3VidGxlIApyZWFzb24uIFRoZXJlIHdvdWxkIGJlIGEgcG90ZW50aWFsIHJhY2Ugd2l0aCBt dWx0aXBsZSBkZXZpY2UgcGFyayAKY2FsbGVycyBzdG9yaW5nIHRoZSBzYW1lIGVwb2NoIGJ1dCBp cyB0aGF0IHJlYWxseSBhIHByb2JsZW0/IEFnYWluLCBhcyAKc29vbiBhcyBzb21lb25lIHVucGFy a3MgaXQgc2VlbXMgbGlrZSBpdCB3b3VsZCBiZSB0aGUgcmlnaHQgdGhpbmcuCgpSZWdhcmRzLAoK VHZydGtvCgo+ICsJSU5JVF9SQ1VfV09SSygmd3JrLT53b3JrLCBfX2k5MTVfZ2xvYmFsc19wYXJr KTsKPiArCXF1ZXVlX3JjdV93b3JrKHN5c3RlbV93cSwgJndyay0+d29yayk7Cj4gK30KPiArCj4g K3ZvaWQgaTkxNV9nbG9iYWxzX3VucGFyayh2b2lkKQo+ICt7Cj4gKwlhdG9taWNfaW5jKCZlcG9j aCk7Cj4gKwlhdG9taWNfaW5jKCZhY3RpdmUpOwo+ICt9Cj4gKwo+ICt2b2lkIF9fZXhpdCBpOTE1 X2dsb2JhbHNfZXhpdCh2b2lkKQo+ICt7Cj4gKwkvKiBGbHVzaCBhbnkgcmVzaWR1YWwgcGFya193 b3JrICovCj4gKwlyY3VfYmFycmllcigpOwo+ICsJZmx1c2hfc2NoZWR1bGVkX3dvcmsoKTsKPiAr Cj4gKwlpOTE1X2dsb2JhbF9zY2hlZHVsZXJfZXhpdCgpOwo+ICsJaTkxNV9nbG9iYWxfcmVxdWVz dF9leGl0KCk7Cj4gKwlpOTE1X2dsb2JhbF9hY3RpdmVfZXhpdCgpOwo+ICt9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nbG9iYWxzLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAw MDAwMDAwMC4uZTQ2OGYwNDEzYTczCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5oCj4gQEAgLTAsMCArMSwxNSBAQAo+ICsvKgo+ICsgKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKyAqCj4gKyAqIENvcHlyaWdodCDCqSAyMDE5 IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfSTkxNV9HTE9CQUxTX0hf Cj4gKyNkZWZpbmUgX0k5MTVfR0xPQkFMU19IXwo+ICsKPiAraW50IGk5MTVfZ2xvYmFsc19pbml0 KHZvaWQpOwo+ICt2b2lkIGk5MTVfZ2xvYmFsc19wYXJrKHZvaWQpOwo+ICt2b2lkIGk5MTVfZ2xv YmFsc191bnBhcmsodm9pZCk7Cj4gK3ZvaWQgaTkxNV9nbG9iYWxzX2V4aXQodm9pZCk7Cj4gKwo+ ICsjZW5kaWYgLyogX0k5MTVfR0xPQkFMU19IXyAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BjaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wY2kuYwo+ IGluZGV4IDY2ZjgyZjNmMDUwZi4uYjczZThkNjNiMWFmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcGNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BjaS5jCj4gQEAgLTI4LDggKzI4LDggQEAKPiAgIAo+ICAgI2luY2x1ZGUgPGRybS9kcm1fZHJ2 Lmg+Cj4gICAKPiAtI2luY2x1ZGUgImk5MTVfYWN0aXZlLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9k cnYuaCIKPiArI2luY2x1ZGUgImk5MTVfZ2xvYmFscy5oIgo+ICAgI2luY2x1ZGUgImk5MTVfc2Vs ZnRlc3QuaCIKPiAgIAo+ICAgI2RlZmluZSBQTEFURk9STSh4KSAucGxhdGZvcm0gPSAoeCksIC5w bGF0Zm9ybV9tYXNrID0gQklUKHgpCj4gQEAgLTgwMSw3ICs4MDEsOSBAQCBzdGF0aWMgaW50IF9f aW5pdCBpOTE1X2luaXQodm9pZCkKPiAgIAlib29sIHVzZV9rbXMgPSB0cnVlOwo+ICAgCWludCBl cnI7Cj4gICAKPiAtCWk5MTVfZ2xvYmFsX2FjdGl2ZV9pbml0KCk7Cj4gKwllcnIgPSBpOTE1X2ds b2JhbHNfaW5pdCgpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICAgCj4gICAJZXJy ID0gaTkxNV9tb2NrX3NlbGZ0ZXN0cygpOwo+ICAgCWlmIChlcnIpCj4gQEAgLTgzNCw3ICs4MzYs NyBAQCBzdGF0aWMgdm9pZCBfX2V4aXQgaTkxNV9leGl0KHZvaWQpCj4gICAJCXJldHVybjsKPiAg IAo+ICAgCXBjaV91bnJlZ2lzdGVyX2RyaXZlcigmaTkxNV9wY2lfZHJpdmVyKTsKPiAtCWk5MTVf Z2xvYmFsX2FjdGl2ZV9leGl0KCk7Cj4gKwlpOTE1X2dsb2JhbHNfZXhpdCgpOwo+ICAgfQo+ICAg Cj4gICBtb2R1bGVfaW5pdChpOTE1X2luaXQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVz dC5jCj4gaW5kZXggMzVhY2VmNzRiOTNhLi4xNzRkMTVjOWRkMDAgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC0zMiw2ICszMiwxMSBAQAo+ICAgI2luY2x1ZGUgImk5 MTVfYWN0aXZlLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9yZXNldC5oIgo+ICAgCj4gK3N0YXRpYyBz dHJ1Y3QgaTkxNV9nbG9iYWxfcmVxdWVzdCB7Cj4gKwlzdHJ1Y3Qga21lbV9jYWNoZSAqc2xhYl9y ZXF1ZXN0czsKPiArCXN0cnVjdCBrbWVtX2NhY2hlICpzbGFiX2RlcGVuZGVuY2llczsKPiArfSBn bG9iYWw7Cj4gKwo+ICAgc3RhdGljIGNvbnN0IGNoYXIgKmk5MTVfZmVuY2VfZ2V0X2RyaXZlcl9u YW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQo+ICAgewo+ICAgCXJldHVybiAiaTkxNSI7Cj4g QEAgLTg0LDcgKzg5LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9mZW5jZV9yZWxlYXNlKHN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlKQo+ICAgCSAqLwo+ICAgCWk5MTVfc3dfZmVuY2VfZmluaSgmcnEtPnN1 Ym1pdCk7Cj4gICAKPiAtCWttZW1fY2FjaGVfZnJlZShycS0+aTkxNS0+cmVxdWVzdHMsIHJxKTsK PiArCWttZW1fY2FjaGVfZnJlZShnbG9iYWwuc2xhYl9yZXF1ZXN0cywgcnEpOwo+ICAgfQo+ICAg Cj4gICBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBpOTE1X2ZlbmNlX29wcyA9IHsKPiBAQCAt Mjk2LDcgKzMwMSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVxdWVzdF9yZXRpcmUoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIAo+ICAgCXVucmVzZXJ2ZV9ndChyZXF1ZXN0LT5pOTE1 KTsKPiAgIAo+IC0JaTkxNV9zY2hlZF9ub2RlX2ZpbmkocmVxdWVzdC0+aTkxNSwgJnJlcXVlc3Qt PnNjaGVkKTsKPiArCWk5MTVfc2NoZWRfbm9kZV9maW5pKCZyZXF1ZXN0LT5zY2hlZCk7Cj4gICAJ aTkxNV9yZXF1ZXN0X3B1dChyZXF1ZXN0KTsKPiAgIH0KPiAgIAo+IEBAIC01MzAsNyArNTM1LDcg QEAgaTkxNV9yZXF1ZXN0X2FsbG9jX3Nsb3coc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQo+ICAg CXJpbmdfcmV0aXJlX3JlcXVlc3RzKHJpbmcpOwo+ICAgCj4gICBvdXQ6Cj4gLQlyZXR1cm4ga21l bV9jYWNoZV9hbGxvYyhjZS0+Z2VtX2NvbnRleHQtPmk5MTUtPnJlcXVlc3RzLCBHRlBfS0VSTkVM KTsKPiArCXJldHVybiBrbWVtX2NhY2hlX2FsbG9jKGdsb2JhbC5zbGFiX3JlcXVlc3RzLCBHRlBf S0VSTkVMKTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIGludCBhZGRfdGltZWxpbmVfYmFycmllcihz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiBAQCAtNjE3LDcgKzYyMiw3IEBAIGk5MTVfcmVxdWVz dF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCj4gICAJICoKPiAgIAkgKiBEbyBub3QgdXNlIGttZW1fY2FjaGVfemFsbG9j KCkgaGVyZSEKPiAgIAkgKi8KPiAtCXJxID0ga21lbV9jYWNoZV9hbGxvYyhpOTE1LT5yZXF1ZXN0 cywKPiArCXJxID0ga21lbV9jYWNoZV9hbGxvYyhnbG9iYWwuc2xhYl9yZXF1ZXN0cywKPiAgIAkJ CSAgICAgIEdGUF9LRVJORUwgfCBfX0dGUF9SRVRSWV9NQVlGQUlMIHwgX19HRlBfTk9XQVJOKTsK PiAgIAlpZiAodW5saWtlbHkoIXJxKSkgewo+ICAgCQlycSA9IGk5MTVfcmVxdWVzdF9hbGxvY19z bG93KGNlKTsKPiBAQCAtNzA1LDcgKzcxMCw3IEBAIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4g ICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcnEtPnNjaGVkLnNpZ25hbGVyc19saXN0KSk7Cj4g ICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcnEtPnNjaGVkLndhaXRlcnNfbGlzdCkpOwo+ICAg Cj4gLQlrbWVtX2NhY2hlX2ZyZWUoaTkxNS0+cmVxdWVzdHMsIHJxKTsKPiArCWttZW1fY2FjaGVf ZnJlZShnbG9iYWwuc2xhYl9yZXF1ZXN0cywgcnEpOwo+ICAgZXJyX3VucmVzZXJ2ZToKPiAgIAl1 bnJlc2VydmVfZ3QoaTkxNSk7Cj4gICAJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Cj4gQEAgLTcy NCw5ICs3MjksNyBAQCBpOTE1X3JlcXVlc3RfYXdhaXRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICp0bywgc3RydWN0IGk5MTVfcmVxdWVzdCAqZnJvbSkKPiAgIAkJcmV0dXJuIDA7Cj4gICAK PiAgIAlpZiAodG8tPmVuZ2luZS0+c2NoZWR1bGUpIHsKPiAtCQlyZXQgPSBpOTE1X3NjaGVkX25v ZGVfYWRkX2RlcGVuZGVuY3kodG8tPmk5MTUsCj4gLQkJCQkJCSAgICAgJnRvLT5zY2hlZCwKPiAt CQkJCQkJICAgICAmZnJvbS0+c2NoZWQpOwo+ICsJCXJldCA9IGk5MTVfc2NoZWRfbm9kZV9hZGRf ZGVwZW5kZW5jeSgmdG8tPnNjaGVkLCAmZnJvbS0+c2NoZWQpOwo+ICAgCQlpZiAocmV0IDwgMCkK PiAgIAkJCXJldHVybiByZXQ7Cj4gICAJfQo+IEBAIC0xMTk5LDMgKzEyMDIsMzcgQEAgdm9pZCBp OTE1X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgICNp bmNsdWRlICJzZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmMiCj4gICAjaW5jbHVkZSAic2VsZnRlc3Rz L2k5MTVfcmVxdWVzdC5jIgo+ICAgI2VuZGlmCj4gKwo+ICtpbnQgX19pbml0IGk5MTVfZ2xvYmFs X3JlcXVlc3RfaW5pdCh2b2lkKQo+ICt7Cj4gKwlnbG9iYWwuc2xhYl9yZXF1ZXN0cyA9IEtNRU1f Q0FDSEUoaTkxNV9yZXF1ZXN0LAo+ICsJCQkJCSAgU0xBQl9IV0NBQ0hFX0FMSUdOIHwKPiArCQkJ CQkgIFNMQUJfUkVDTEFJTV9BQ0NPVU5UIHwKPiArCQkJCQkgIFNMQUJfVFlQRVNBRkVfQllfUkNV KTsKPiArCWlmICghZ2xvYmFsLnNsYWJfcmVxdWVzdHMpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4g Kwo+ICsJZ2xvYmFsLnNsYWJfZGVwZW5kZW5jaWVzID0gS01FTV9DQUNIRShpOTE1X2RlcGVuZGVu Y3ksCj4gKwkJCQkJICAgICAgU0xBQl9IV0NBQ0hFX0FMSUdOIHwKPiArCQkJCQkgICAgICBTTEFC X1JFQ0xBSU1fQUNDT1VOVCk7Cj4gKwlpZiAoIWdsb2JhbC5zbGFiX2RlcGVuZGVuY2llcykKPiAr CQlnb3RvIGVycl9yZXF1ZXN0czsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9yZXF1ZXN0 czoKPiArCWttZW1fY2FjaGVfZGVzdHJveShnbG9iYWwuc2xhYl9yZXF1ZXN0cyk7Cj4gKwlyZXR1 cm4gLUVOT01FTTsKPiArfQo+ICsKPiArdm9pZCBpOTE1X2dsb2JhbF9yZXF1ZXN0X3Nocmluayh2 b2lkKQo+ICt7Cj4gKwlrbWVtX2NhY2hlX3NocmluayhnbG9iYWwuc2xhYl9kZXBlbmRlbmNpZXMp Owo+ICsJa21lbV9jYWNoZV9zaHJpbmsoZ2xvYmFsLnNsYWJfcmVxdWVzdHMpOwo+ICt9Cj4gKwo+ ICt2b2lkIGk5MTVfZ2xvYmFsX3JlcXVlc3RfZXhpdCh2b2lkKQo+ICt7Cj4gKwlrbWVtX2NhY2hl X2Rlc3Ryb3koZ2xvYmFsLnNsYWJfZGVwZW5kZW5jaWVzKTsKPiArCWttZW1fY2FjaGVfZGVzdHJv eShnbG9iYWwuc2xhYl9yZXF1ZXN0cyk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuaAo+IGluZGV4IDQwZjNlOGRjYmRkNS4uMDcxZmYxMDY0NTc5IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBAQCAtMjksNiArMjksNyBAQAo+ICAgCj4gICAjaW5jbHVk ZSAiaTkxNV9nZW0uaCIKPiAgICNpbmNsdWRlICJpOTE1X3NjaGVkdWxlci5oIgo+ICsjaW5jbHVk ZSAiaTkxNV9zZWxmdGVzdC5oIgo+ICAgI2luY2x1ZGUgImk5MTVfc3dfZmVuY2UuaCIKPiAgIAo+ ICAgI2luY2x1ZGUgPHVhcGkvZHJtL2k5MTVfZHJtLmg+Cj4gQEAgLTIwNCw2ICsyMDUsMTEgQEAg c3RydWN0IGk5MTVfcmVxdWVzdCB7Cj4gICAJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAq ZmlsZV9wcml2Owo+ICAgCS8qKiBmaWxlX3ByaXYgbGlzdCBlbnRyeSBmb3IgdGhpcyByZXF1ZXN0 ICovCj4gICAJc3RydWN0IGxpc3RfaGVhZCBjbGllbnRfbGluazsKPiArCj4gKwlJOTE1X1NFTEZU RVNUX0RFQ0xBUkUoc3RydWN0IHsKPiArCQlzdHJ1Y3QgbGlzdF9oZWFkIGxpbms7Cj4gKwkJdW5z aWduZWQgbG9uZyBkZWxheTsKPiArCX0gbW9jazspCj4gICB9Owo+ICAgCj4gICAjZGVmaW5lIEk5 MTVfRkVOQ0VfR0ZQIChHRlBfS0VSTkVMIHwgX19HRlBfUkVUUllfTUFZRkFJTCB8IF9fR0ZQX05P V0FSTikKPiBAQCAtNDAzLDQgKzQwOSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3JlcXVl c3RfbWFya19jb21wbGV0ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAo+ICAgdm9pZCBp OTE1X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICAK PiAraW50IGk5MTVfZ2xvYmFsX3JlcXVlc3RfaW5pdCh2b2lkKTsKPiArdm9pZCBpOTE1X2dsb2Jh bF9yZXF1ZXN0X3Nocmluayh2b2lkKTsKPiArdm9pZCBpOTE1X2dsb2JhbF9yZXF1ZXN0X2V4aXQo dm9pZCk7Cj4gKwo+ICAgI2VuZGlmIC8qIEk5MTVfUkVRVUVTVF9IICovCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3NjaGVkdWxlci5jCj4gaW5kZXggZDAxNjgzMTY3Yzc3Li43MjBjYzkxYjRkMTAg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKPiBAQCAtMTAsNiArMTAs MTEgQEAKPiAgICNpbmNsdWRlICJpOTE1X3JlcXVlc3QuaCIKPiAgICNpbmNsdWRlICJpOTE1X3Nj aGVkdWxlci5oIgo+ICAgCj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV9nbG9iYWxfc2NoZWR1bGVyIHsK PiArCXN0cnVjdCBrbWVtX2NhY2hlICpzbGFiX2RlcGVuZGVuY2llczsKPiArCXN0cnVjdCBrbWVt X2NhY2hlICpzbGFiX3ByaW9yaXRpZXM7Cj4gK30gZ2xvYmFsOwo+ICsKPiAgIHN0YXRpYyBERUZJ TkVfU1BJTkxPQ0soc2NoZWR1bGVfbG9jayk7Cj4gICAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICoKPiBAQCAtMzIsMTYgKzM3LDE1IEBAIHZvaWQgaTkxNV9zY2hlZF9ub2Rl X2luaXQoc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkKPiAgIH0KPiAgIAo+ICAgc3RhdGlj IHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgKgo+IC1pOTE1X2RlcGVuZGVuY3lfYWxsb2Moc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gK2k5MTVfZGVwZW5kZW5jeV9hbGxvYyh2b2lkKQo+ ICAgewo+IC0JcmV0dXJuIGttZW1fY2FjaGVfYWxsb2MoaTkxNS0+ZGVwZW5kZW5jaWVzLCBHRlBf S0VSTkVMKTsKPiArCXJldHVybiBrbWVtX2NhY2hlX2FsbG9jKGdsb2JhbC5zbGFiX2RlcGVuZGVu Y2llcywgR0ZQX0tFUk5FTCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyB2b2lkCj4gLWk5MTVfZGVw ZW5kZW5jeV9mcmVlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+IC0JCSAgICAgc3Ry dWN0IGk5MTVfZGVwZW5kZW5jeSAqZGVwKQo+ICtpOTE1X2RlcGVuZGVuY3lfZnJlZShzdHJ1Y3Qg aTkxNV9kZXBlbmRlbmN5ICpkZXApCj4gICB7Cj4gLQlrbWVtX2NhY2hlX2ZyZWUoaTkxNS0+ZGVw ZW5kZW5jaWVzLCBkZXApOwo+ICsJa21lbV9jYWNoZV9mcmVlKGdsb2JhbC5zbGFiX2RlcGVuZGVu Y2llcywgZGVwKTsKPiAgIH0KPiAgIAo+ICAgYm9vbCBfX2k5MTVfc2NoZWRfbm9kZV9hZGRfZGVw ZW5kZW5jeShzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlLAo+IEBAIC02OCwyNSArNzIsMjMg QEAgYm9vbCBfX2k5MTVfc2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShzdHJ1Y3QgaTkxNV9zY2hl ZF9ub2RlICpub2RlLAo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAtaW50IGk5MTVfc2No ZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAt CQkJCSAgIHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUsCj4gK2ludCBpOTE1X3NjaGVkX25v ZGVfYWRkX2RlcGVuZGVuY3koc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwKPiAgIAkJCQkg ICBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpzaWduYWwpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVf ZGVwZW5kZW5jeSAqZGVwOwo+ICAgCj4gLQlkZXAgPSBpOTE1X2RlcGVuZGVuY3lfYWxsb2MoaTkx NSk7Cj4gKwlkZXAgPSBpOTE1X2RlcGVuZGVuY3lfYWxsb2MoKTsKPiAgIAlpZiAoIWRlcCkKPiAg IAkJcmV0dXJuIC1FTk9NRU07Cj4gICAKPiAgIAlpZiAoIV9faTkxNV9zY2hlZF9ub2RlX2FkZF9k ZXBlbmRlbmN5KG5vZGUsIHNpZ25hbCwgZGVwLAo+ICAgCQkJCQkgICAgICBJOTE1X0RFUEVOREVO Q1lfQUxMT0MpKQo+IC0JCWk5MTVfZGVwZW5kZW5jeV9mcmVlKGk5MTUsIGRlcCk7Cj4gKwkJaTkx NV9kZXBlbmRlbmN5X2ZyZWUoZGVwKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAgCj4g LXZvaWQgaTkxNV9zY2hlZF9ub2RlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUs Cj4gLQkJCSAgc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSkKPiArdm9pZCBpOTE1X3NjaGVk X25vZGVfZmluaShzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKQo+ICAgewo+ICAgCXN0cnVj dCBpOTE1X2RlcGVuZGVuY3kgKmRlcCwgKnRtcDsKPiAgIAo+IEBAIC0xMDYsNyArMTA4LDcgQEAg dm9pZCBpOTE1X3NjaGVkX25vZGVfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwK PiAgIAo+ICAgCQlsaXN0X2RlbCgmZGVwLT53YWl0X2xpbmspOwo+ICAgCQlpZiAoZGVwLT5mbGFn cyAmIEk5MTVfREVQRU5ERU5DWV9BTExPQykKPiAtCQkJaTkxNV9kZXBlbmRlbmN5X2ZyZWUoaTkx NSwgZGVwKTsKPiArCQkJaTkxNV9kZXBlbmRlbmN5X2ZyZWUoZGVwKTsKPiAgIAl9Cj4gICAKPiAg IAkvKiBSZW1vdmUgb3Vyc2VsdmVzIGZyb20gZXZlcnlvbmUgd2hvIGRlcGVuZHMgdXBvbiB1cyAq Lwo+IEBAIC0xMTYsNyArMTE4LDcgQEAgdm9pZCBpOTE1X3NjaGVkX25vZGVfZmluaShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAo+ICAgCQlsaXN0X2RlbCgmZGVwLT5zaWduYWxf bGluayk7Cj4gICAJCWlmIChkZXAtPmZsYWdzICYgSTkxNV9ERVBFTkRFTkNZX0FMTE9DKQo+IC0J CQlpOTE1X2RlcGVuZGVuY3lfZnJlZShpOTE1LCBkZXApOwo+ICsJCQlpOTE1X2RlcGVuZGVuY3lf ZnJlZShkZXApOwo+ICAgCX0KPiAgIAo+ICAgCXNwaW5fdW5sb2NrKCZzY2hlZHVsZV9sb2NrKTsK PiBAQCAtMTkzLDcgKzE5NSw3IEBAIGk5MTVfc2NoZWRfbG9va3VwX3ByaW9saXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHByaW8pCj4gICAJaWYgKHByaW8gPT0gSTkxNV9Q UklPUklUWV9OT1JNQUwpIHsKPiAgIAkJcCA9ICZleGVjbGlzdHMtPmRlZmF1bHRfcHJpb2xpc3Q7 Cj4gICAJfSBlbHNlIHsKPiAtCQlwID0ga21lbV9jYWNoZV9hbGxvYyhlbmdpbmUtPmk5MTUtPnBy aW9yaXRpZXMsIEdGUF9BVE9NSUMpOwo+ICsJCXAgPSBrbWVtX2NhY2hlX2FsbG9jKGdsb2JhbC5z bGFiX3ByaW9yaXRpZXMsIEdGUF9BVE9NSUMpOwo+ICAgCQkvKiBDb252ZXJ0IGFuIGFsbG9jYXRp b24gZmFpbHVyZSB0byBhIHByaW9yaXR5IGJ1bXAgKi8KPiAgIAkJaWYgKHVubGlrZWx5KCFwKSkg ewo+ICAgCQkJcHJpbyA9IEk5MTVfUFJJT1JJVFlfTk9STUFMOyAvKiByZWN1cnNlcyBqdXN0IG9u Y2UgKi8KPiBAQCAtNDA4LDMgKzQxMCwzOSBAQCB2b2lkIGk5MTVfc2NoZWR1bGVfYnVtcF9wcmlv cml0eShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdW5zaWduZWQgaW50IGJ1bXApCj4gICAKPiAg IAlzcGluX3VubG9ja19iaCgmc2NoZWR1bGVfbG9jayk7Cj4gICB9Cj4gKwo+ICt2b2lkIF9faTkx NV9wcmlvbGlzdF9mcmVlKHN0cnVjdCBpOTE1X3ByaW9saXN0ICpwKQo+ICt7Cj4gKwlrbWVtX2Nh Y2hlX2ZyZWUoZ2xvYmFsLnNsYWJfcHJpb3JpdGllcywgcCk7Cj4gK30KPiArCj4gK2ludCBfX2lu aXQgaTkxNV9nbG9iYWxfc2NoZWR1bGVyX2luaXQodm9pZCkKPiArewo+ICsJZ2xvYmFsLnNsYWJf ZGVwZW5kZW5jaWVzID0gS01FTV9DQUNIRShpOTE1X2RlcGVuZGVuY3ksCj4gKwkJCQkJICAgICAg U0xBQl9IV0NBQ0hFX0FMSUdOKTsKPiArCWlmICghZ2xvYmFsLnNsYWJfZGVwZW5kZW5jaWVzKQo+ ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWdsb2JhbC5zbGFiX3ByaW9yaXRpZXMgPSBLTUVN X0NBQ0hFKGk5MTVfcHJpb2xpc3QsCj4gKwkJCQkJICAgIFNMQUJfSFdDQUNIRV9BTElHTik7Cj4g KwlpZiAoIWdsb2JhbC5zbGFiX3ByaW9yaXRpZXMpCj4gKwkJZ290byBlcnJfcHJpb3JpdGllczsK PiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9wcmlvcml0aWVzOgo+ICsJa21lbV9jYWNoZV9k ZXN0cm95KGdsb2JhbC5zbGFiX3ByaW9yaXRpZXMpOwo+ICsJcmV0dXJuIC1FTk9NRU07Cj4gK30K PiArCj4gK3ZvaWQgaTkxNV9nbG9iYWxfc2NoZWR1bGVyX3Nocmluayh2b2lkKQo+ICt7Cj4gKwlr bWVtX2NhY2hlX3NocmluayhnbG9iYWwuc2xhYl9kZXBlbmRlbmNpZXMpOwo+ICsJa21lbV9jYWNo ZV9zaHJpbmsoZ2xvYmFsLnNsYWJfcHJpb3JpdGllcyk7Cj4gK30KPiArCj4gK3ZvaWQgaTkxNV9n bG9iYWxfc2NoZWR1bGVyX2V4aXQodm9pZCkKPiArewo+ICsJa21lbV9jYWNoZV9kZXN0cm95KGds b2JhbC5zbGFiX2RlcGVuZGVuY2llcyk7Cj4gKwlrbWVtX2NhY2hlX2Rlc3Ryb3koZ2xvYmFsLnNs YWJfcHJpb3JpdGllcyk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zY2hlZHVsZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgK PiBpbmRleCA1NGJkNmM4OTgxN2UuLjUxOTZjZTA3YjZjMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9zY2hlZHVsZXIuaAo+IEBAIC04NSw2ICs4NSwyMyBAQCBzdHJ1Y3QgaTkxNV9kZXBl bmRlbmN5IHsKPiAgICNkZWZpbmUgSTkxNV9ERVBFTkRFTkNZX0FMTE9DIEJJVCgwKQo+ICAgfTsK PiAgIAo+ICtzdHJ1Y3QgaTkxNV9wcmlvbGlzdCB7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIHJlcXVl c3RzW0k5MTVfUFJJT1JJVFlfQ09VTlRdOwo+ICsJc3RydWN0IHJiX25vZGUgbm9kZTsKPiArCXVu c2lnbmVkIGxvbmcgdXNlZDsKPiArCWludCBwcmlvcml0eTsKPiArfTsKPiArCj4gKyNkZWZpbmUg cHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdChpdCwgcGxpc3QsIGlkeCkgXAo+ICsJZm9yIChpZHgg PSAwOyBpZHggPCBBUlJBWV9TSVpFKChwbGlzdCktPnJlcXVlc3RzKTsgaWR4KyspIFwKPiArCQls aXN0X2Zvcl9lYWNoX2VudHJ5KGl0LCAmKHBsaXN0KS0+cmVxdWVzdHNbaWR4XSwgc2NoZWQubGlu aykKPiArCj4gKyNkZWZpbmUgcHJpb2xpc3RfZm9yX2VhY2hfcmVxdWVzdF9jb25zdW1lKGl0LCBu LCBwbGlzdCwgaWR4KSBcCj4gKwlmb3IgKDsgKGlkeCA9IGZmcygocGxpc3QpLT51c2VkKSk7IChw bGlzdCktPnVzZWQgJj0gfkJJVChpZHggLSAxKSkgXAo+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShpdCwgbiwgXAo+ICsJCQkJCSAmKHBsaXN0KS0+cmVxdWVzdHNbaWR4IC0gMV0sIFwKPiAr CQkJCQkgc2NoZWQubGluaykKPiArCj4gICB2b2lkIGk5MTVfc2NoZWRfbm9kZV9pbml0KHN0cnVj dCBpOTE1X3NjaGVkX25vZGUgKm5vZGUpOwo+ICAgCj4gICBib29sIF9faTkxNV9zY2hlZF9ub2Rl X2FkZF9kZXBlbmRlbmN5KHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKm5vZGUsCj4gQEAgLTkyLDEy ICsxMDksMTAgQEAgYm9vbCBfX2k5MTVfc2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShzdHJ1Y3Qg aTkxNV9zY2hlZF9ub2RlICpub2RlLAo+ICAgCQkJCSAgICAgIHN0cnVjdCBpOTE1X2RlcGVuZGVu Y3kgKmRlcCwKPiAgIAkJCQkgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzKTsKPiAgIAo+IC1pbnQg aTkxNV9zY2hlZF9ub2RlX2FkZF9kZXBlbmRlbmN5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1LAo+IC0JCQkJICAgc3RydWN0IGk5MTVfc2NoZWRfbm9kZSAqbm9kZSwKPiAraW50IGk5MTVf c2NoZWRfbm9kZV9hZGRfZGVwZW5kZW5jeShzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlLAo+ ICAgCQkJCSAgIHN0cnVjdCBpOTE1X3NjaGVkX25vZGUgKnNpZ25hbCk7Cj4gICAKPiAtdm9pZCBp OTE1X3NjaGVkX25vZGVfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAtCQkJ ICBzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKTsKPiArdm9pZCBpOTE1X3NjaGVkX25vZGVf ZmluaShzdHJ1Y3QgaTkxNV9zY2hlZF9ub2RlICpub2RlKTsKPiAgIAo+ICAgdm9pZCBpOTE1X3Nj aGVkdWxlKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsCj4gICAJCSAgIGNvbnN0IHN0cnVj dCBpOTE1X3NjaGVkX2F0dHIgKmF0dHIpOwo+IEBAIC0xMDcsNCArMTIyLDE1IEBAIHZvaWQgaTkx NV9zY2hlZHVsZV9idW1wX3ByaW9yaXR5KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1bnNpZ25l ZCBpbnQgYnVtcCk7Cj4gICBzdHJ1Y3QgbGlzdF9oZWFkICoKPiAgIGk5MTVfc2NoZWRfbG9va3Vw X3ByaW9saXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgaW50IHByaW8pOwo+ICAg Cj4gK3ZvaWQgX19pOTE1X3ByaW9saXN0X2ZyZWUoc3RydWN0IGk5MTVfcHJpb2xpc3QgKnApOwo+ ICtzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9wcmlvbGlzdF9mcmVlKHN0cnVjdCBpOTE1X3ByaW9s aXN0ICpwKQo+ICt7Cj4gKwlpZiAocC0+cHJpb3JpdHkgIT0gSTkxNV9QUklPUklUWV9OT1JNQUwp Cj4gKwkJX19pOTE1X3ByaW9saXN0X2ZyZWUocCk7Cj4gK30KPiArCj4gK2ludCBpOTE1X2dsb2Jh bF9zY2hlZHVsZXJfaW5pdCh2b2lkKTsKPiArdm9pZCBpOTE1X2dsb2JhbF9zY2hlZHVsZXJfc2hy aW5rKHZvaWQpOwo+ICt2b2lkIGk5MTVfZ2xvYmFsX3NjaGVkdWxlcl9leGl0KHZvaWQpOwo+ICsK PiAgICNlbmRpZiAvKiBfSTkxNV9TQ0hFRFVMRVJfSF8gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKPiBpbmRleCA4YmM4YWE1NGFhMzUuLjRjZjk0NTEz NjE1ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc3VibWlz c2lvbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3N1Ym1pc3Npb24u Ywo+IEBAIC03ODEsOCArNzgxLDcgQEAgc3RhdGljIGJvb2wgX19ndWNfZGVxdWV1ZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCX0KPiAgIAo+ICAgCQlyYl9lcmFzZV9jYWNo ZWQoJnAtPm5vZGUsICZleGVjbGlzdHMtPnF1ZXVlKTsKPiAtCQlpZiAocC0+cHJpb3JpdHkgIT0g STkxNV9QUklPUklUWV9OT1JNQUwpCj4gLQkJCWttZW1fY2FjaGVfZnJlZShlbmdpbmUtPmk5MTUt PnByaW9yaXRpZXMsIHApOwo+ICsJCWk5MTVfcHJpb2xpc3RfZnJlZShwKTsKPiAgIAl9Cj4gICBk b25lOgo+ICAgCWV4ZWNsaXN0cy0+cXVldWVfcHJpb3JpdHlfaGludCA9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMKPiBpbmRleCA1ODEwOGFhMjkwZDguLjU1MzM3MWU2NTRkNyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTgwNiw4ICs4MDYsNyBAQCBzdGF0aWMgdm9pZCBl eGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJCX0K PiAgIAo+ICAgCQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5vZGUsICZleGVjbGlzdHMtPnF1ZXVlKTsK PiAtCQlpZiAocC0+cHJpb3JpdHkgIT0gSTkxNV9QUklPUklUWV9OT1JNQUwpCj4gLQkJCWttZW1f Y2FjaGVfZnJlZShlbmdpbmUtPmk5MTUtPnByaW9yaXRpZXMsIHApOwo+ICsJCWk5MTVfcHJpb2xp c3RfZnJlZShwKTsKPiAgIAl9Cj4gICAKPiAgIGRvbmU6Cj4gQEAgLTk2Niw4ICs5NjUsNyBAQCBz dGF0aWMgdm9pZCBleGVjbGlzdHNfY2FuY2VsX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIAkJfQo+ICAgCj4gICAJCXJiX2VyYXNlX2NhY2hlZCgmcC0+bm9kZSwg JmV4ZWNsaXN0cy0+cXVldWUpOwo+IC0JCWlmIChwLT5wcmlvcml0eSAhPSBJOTE1X1BSSU9SSVRZ X05PUk1BTCkKPiAtCQkJa21lbV9jYWNoZV9mcmVlKGVuZ2luZS0+aTkxNS0+cHJpb3JpdGllcywg cCk7Cj4gKwkJaTkxNV9wcmlvbGlzdF9mcmVlKHApOwo+ICAgCX0KPiAgIAo+ICAgCWludGVsX3dy aXRlX3N0YXR1c19wYWdlKGVuZ2luZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oCj4gaW5kZXggNzEwZmZiMjIxNzc1Li5lN2Q4NWFhZWU0MTUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTE4NSwyMyArMTg1LDYgQEAgZW51 bSBpbnRlbF9lbmdpbmVfaWQgewo+ICAgI2RlZmluZSBfVkVDUyhuKSAoVkVDUyArIChuKSkKPiAg IH07Cj4gICAKPiAtc3RydWN0IGk5MTVfcHJpb2xpc3Qgewo+IC0Jc3RydWN0IGxpc3RfaGVhZCBy ZXF1ZXN0c1tJOTE1X1BSSU9SSVRZX0NPVU5UXTsKPiAtCXN0cnVjdCByYl9ub2RlIG5vZGU7Cj4g LQl1bnNpZ25lZCBsb25nIHVzZWQ7Cj4gLQlpbnQgcHJpb3JpdHk7Cj4gLX07Cj4gLQo+IC0jZGVm aW5lIHByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3QoaXQsIHBsaXN0LCBpZHgpIFwKPiAtCWZvciAo aWR4ID0gMDsgaWR4IDwgQVJSQVlfU0laRSgocGxpc3QpLT5yZXF1ZXN0cyk7IGlkeCsrKSBcCj4g LQkJbGlzdF9mb3JfZWFjaF9lbnRyeShpdCwgJihwbGlzdCktPnJlcXVlc3RzW2lkeF0sIHNjaGVk LmxpbmspCj4gLQo+IC0jZGVmaW5lIHByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShp dCwgbiwgcGxpc3QsIGlkeCkgXAo+IC0JZm9yICg7IChpZHggPSBmZnMoKHBsaXN0KS0+dXNlZCkp OyAocGxpc3QpLT51c2VkICY9IH5CSVQoaWR4IC0gMSkpIFwKPiAtCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5X3NhZmUoaXQsIG4sIFwKPiAtCQkJCQkgJihwbGlzdCktPnJlcXVlc3RzW2lkeCAtIDFdLCBc Cj4gLQkJCQkJIHNjaGVkLmxpbmspCj4gLQo+ICAgc3RydWN0IHN0X3ByZWVtcHRfaGFuZyB7Cj4g ICAJc3RydWN0IGNvbXBsZXRpb24gY29tcGxldGlvbjsKPiAgIAl1bnNpZ25lZCBpbnQgY291bnQ7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+IGluZGV4IDI2 M2FmZDJmMTU5Ni4uMWEzYWY0YjQxMDdkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pbnRlbF9scmMuYwo+IEBAIC00NDEsNyArNDQxLDcgQEAgc3RhdGljIHN0cnVjdCBp OTE1X3JlcXVlc3QgKmR1bW15X3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAgc3RhdGljIHZvaWQgZHVtbXlfcmVxdWVzdF9mcmVlKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KmR1bW15KQo+ICAgewo+ICAgCWk5MTVfcmVxdWVzdF9tYXJrX2NvbXBsZXRlKGR1bW15KTsKPiAt CWk5MTVfc2NoZWRfbm9kZV9maW5pKGR1bW15LT5lbmdpbmUtPmk5MTUsICZkdW1teS0+c2NoZWQp Owo+ICsJaTkxNV9zY2hlZF9ub2RlX2ZpbmkoJmR1bW15LT5zY2hlZCk7Cj4gICAJa2ZyZWUoZHVt bXkpOwo+ICAgfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf ZW5naW5lLmMKPiBpbmRleCAwOGYwY2FiMDJlMGYuLjBkMzVhZjA3ODY3YiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4gQEAgLTc2LDI4ICs3 NiwyNyBAQCBzdGF0aWMgdm9pZCBtb2NrX3JpbmdfZnJlZShzdHJ1Y3QgaW50ZWxfcmluZyAqYmFz ZSkKPiAgIAlrZnJlZShyaW5nKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3RydWN0IG1vY2tfcmVx dWVzdCAqZmlyc3RfcmVxdWVzdChzdHJ1Y3QgbW9ja19lbmdpbmUgKmVuZ2luZSkKPiArc3RhdGlj IHN0cnVjdCBpOTE1X3JlcXVlc3QgKmZpcnN0X3JlcXVlc3Qoc3RydWN0IG1vY2tfZW5naW5lICpl bmdpbmUpCj4gICB7Cj4gICAJcmV0dXJuIGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZW5naW5l LT5od19xdWV1ZSwKPiAtCQkJCQlzdHJ1Y3QgbW9ja19yZXF1ZXN0LAo+IC0JCQkJCWxpbmspOwo+ ICsJCQkJCXN0cnVjdCBpOTE1X3JlcXVlc3QsCj4gKwkJCQkJbW9jay5saW5rKTsKPiAgIH0KPiAg IAo+IC1zdGF0aWMgdm9pZCBhZHZhbmNlKHN0cnVjdCBtb2NrX3JlcXVlc3QgKnJlcXVlc3QpCj4g K3N0YXRpYyB2b2lkIGFkdmFuY2Uoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVxdWVzdCkKPiAgIHsK PiAtCWxpc3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpbmspOwo+IC0JaW50ZWxfZW5naW5lX3dyaXRl X2dsb2JhbF9zZXFubyhyZXF1ZXN0LT5iYXNlLmVuZ2luZSwKPiAtCQkJCQlyZXF1ZXN0LT5iYXNl Lmdsb2JhbF9zZXFubyk7Cj4gLQlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZSgmcmVxdWVzdC0+ YmFzZSk7Cj4gLQlHRU1fQlVHX09OKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKCZyZXF1ZXN0LT5i YXNlKSk7Cj4gKwlsaXN0X2RlbF9pbml0KCZyZXF1ZXN0LT5tb2NrLmxpbmspOwo+ICsJaW50ZWxf ZW5naW5lX3dyaXRlX2dsb2JhbF9zZXFubyhyZXF1ZXN0LT5lbmdpbmUsIHJlcXVlc3QtPmdsb2Jh bF9zZXFubyk7Cj4gKwlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShyZXF1ZXN0KTsKPiArCUdF TV9CVUdfT04oIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkpOwo+ICAgCj4gLQlpbnRl bF9lbmdpbmVfcXVldWVfYnJlYWRjcnVtYnMocmVxdWVzdC0+YmFzZS5lbmdpbmUpOwo+ICsJaW50 ZWxfZW5naW5lX3F1ZXVlX2JyZWFkY3J1bWJzKHJlcXVlc3QtPmVuZ2luZSk7Cj4gICB9Cj4gICAK PiAgIHN0YXRpYyB2b2lkIGh3X2RlbGF5X2NvbXBsZXRlKHN0cnVjdCB0aW1lcl9saXN0ICp0KQo+ ICAgewo+ICAgCXN0cnVjdCBtb2NrX2VuZ2luZSAqZW5naW5lID0gZnJvbV90aW1lcihlbmdpbmUs IHQsIGh3X2RlbGF5KTsKPiAtCXN0cnVjdCBtb2NrX3JlcXVlc3QgKnJlcXVlc3Q7Cj4gKwlzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gICAK PiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmZW5naW5lLT5od19sb2NrLCBmbGFncyk7Cj4gQEAgLTEx Miw4ICsxMTEsOSBAQCBzdGF0aWMgdm9pZCBod19kZWxheV9jb21wbGV0ZShzdHJ1Y3QgdGltZXJf bGlzdCAqdCkKPiAgIAkgKiByZXF1ZXVlIHRoZSB0aW1lciBmb3IgdGhlIG5leHQgZGVsYXllZCBy ZXF1ZXN0Lgo+ICAgCSAqLwo+ICAgCXdoaWxlICgocmVxdWVzdCA9IGZpcnN0X3JlcXVlc3QoZW5n aW5lKSkpIHsKPiAtCQlpZiAocmVxdWVzdC0+ZGVsYXkpIHsKPiAtCQkJbW9kX3RpbWVyKCZlbmdp bmUtPmh3X2RlbGF5LCBqaWZmaWVzICsgcmVxdWVzdC0+ZGVsYXkpOwo+ICsJCWlmIChyZXF1ZXN0 LT5tb2NrLmRlbGF5KSB7Cj4gKwkJCW1vZF90aW1lcigmZW5naW5lLT5od19kZWxheSwKPiArCQkJ CSAgamlmZmllcyArIHJlcXVlc3QtPm1vY2suZGVsYXkpOwo+ICAgCQkJYnJlYWs7Cj4gICAJCX0K PiAgIAo+IEBAIC0xNzEsMTAgKzE3MSw4IEBAIG1vY2tfY29udGV4dF9waW4oc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCj4gICBzdGF0aWMgaW50IG1vY2tfcmVxdWVzdF9hbGxv YyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgewo+IC0Jc3RydWN0IG1vY2tfcmVx dWVzdCAqbW9jayA9IGNvbnRhaW5lcl9vZihyZXF1ZXN0LCB0eXBlb2YoKm1vY2spLCBiYXNlKTsK PiAtCj4gLQlJTklUX0xJU1RfSEVBRCgmbW9jay0+bGluayk7Cj4gLQltb2NrLT5kZWxheSA9IDA7 Cj4gKwlJTklUX0xJU1RfSEVBRCgmcmVxdWVzdC0+bW9jay5saW5rKTsKPiArCXJlcXVlc3QtPm1v Y2suZGVsYXkgPSAwOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTE5Miw3ICsxOTAs NiBAQCBzdGF0aWMgdTMyICptb2NrX2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpyZXF1ZXN0LCB1MzIgKmNzKQo+ICAgCj4gICBzdGF0aWMgdm9pZCBtb2NrX3N1Ym1pdF9yZXF1 ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICB7Cj4gLQlzdHJ1Y3QgbW9ja19y ZXF1ZXN0ICptb2NrID0gY29udGFpbmVyX29mKHJlcXVlc3QsIHR5cGVvZigqbW9jayksIGJhc2Up Owo+ICAgCXN0cnVjdCBtb2NrX2VuZ2luZSAqZW5naW5lID0KPiAgIAkJY29udGFpbmVyX29mKHJl cXVlc3QtPmVuZ2luZSwgdHlwZW9mKCplbmdpbmUpLCBiYXNlKTsKPiAgIAl1bnNpZ25lZCBsb25n IGZsYWdzOwo+IEBAIC0yMDEsMTIgKzE5OCwxMyBAQCBzdGF0aWMgdm9pZCBtb2NrX3N1Ym1pdF9y ZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJR0VNX0JVR19PTighcmVx dWVzdC0+Z2xvYmFsX3NlcW5vKTsKPiAgIAo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUt Pmh3X2xvY2ssIGZsYWdzKTsKPiAtCWxpc3RfYWRkX3RhaWwoJm1vY2stPmxpbmssICZlbmdpbmUt Pmh3X3F1ZXVlKTsKPiAtCWlmIChtb2NrLT5saW5rLnByZXYgPT0gJmVuZ2luZS0+aHdfcXVldWUp IHsKPiAtCQlpZiAobW9jay0+ZGVsYXkpCj4gLQkJCW1vZF90aW1lcigmZW5naW5lLT5od19kZWxh eSwgamlmZmllcyArIG1vY2stPmRlbGF5KTsKPiArCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPm1v Y2subGluaywgJmVuZ2luZS0+aHdfcXVldWUpOwo+ICsJaWYgKGxpc3RfaXNfZmlyc3QoJnJlcXVl c3QtPm1vY2subGluaywgJmVuZ2luZS0+aHdfcXVldWUpKSB7Cj4gKwkJaWYgKHJlcXVlc3QtPm1v Y2suZGVsYXkpCj4gKwkJCW1vZF90aW1lcigmZW5naW5lLT5od19kZWxheSwKPiArCQkJCSAgamlm ZmllcyArIHJlcXVlc3QtPm1vY2suZGVsYXkpOwo+ICAgCQllbHNlCj4gLQkJCWFkdmFuY2UobW9j ayk7Cj4gKwkJCWFkdmFuY2UocmVxdWVzdCk7Cj4gICAJfQo+ICAgCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmVuZ2luZS0+aHdfbG9jaywgZmxhZ3MpOwo+ICAgfQo+IEBAIC0yNjYsMTIgKzI2NCwx MiBAQCB2b2lkIG1vY2tfZW5naW5lX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgbW9ja19lbmdpbmUgKm1vY2sgPQo+ICAgCQljb250YWluZXJf b2YoZW5naW5lLCB0eXBlb2YoKm1vY2spLCBiYXNlKTsKPiAtCXN0cnVjdCBtb2NrX3JlcXVlc3Qg KnJlcXVlc3QsICpybjsKPiArCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsICpybjsKPiAg IAo+ICAgCWRlbF90aW1lcl9zeW5jKCZtb2NrLT5od19kZWxheSk7Cj4gICAKPiAgIAlzcGluX2xv Y2tfaXJxKCZtb2NrLT5od19sb2NrKTsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyZXF1 ZXN0LCBybiwgJm1vY2stPmh3X3F1ZXVlLCBsaW5rKQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKHJlcXVlc3QsIHJuLCAmbW9jay0+aHdfcXVldWUsIG1vY2subGluaykKPiAgIAkJYWR2YW5j ZShyZXF1ZXN0KTsKPiAgIAlzcGluX3VubG9ja19pcnEoJm1vY2stPmh3X2xvY2spOwo+ICAgfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2 aWNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMK PiBpbmRleCBmYzUxNmEyOTcwZjQuLjVhOThjYWJhNmQ2OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19nZW1fZGV2aWNlLmMKPiBAQCAtNzksOSArNzks NiBAQCBzdGF0aWMgdm9pZCBtb2NrX2RldmljZV9yZWxlYXNlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCj4gICAKPiAgIAlkZXN0cm95X3dvcmtxdWV1ZShpOTE1LT53cSk7Cj4gICAKPiAtCWttZW1f Y2FjaGVfZGVzdHJveShpOTE1LT5wcmlvcml0aWVzKTsKPiAtCWttZW1fY2FjaGVfZGVzdHJveShp OTE1LT5kZXBlbmRlbmNpZXMpOwo+IC0Ja21lbV9jYWNoZV9kZXN0cm95KGk5MTUtPnJlcXVlc3Rz KTsKPiAgIAlrbWVtX2NhY2hlX2Rlc3Ryb3koaTkxNS0+dm1hcyk7Cj4gICAJa21lbV9jYWNoZV9k ZXN0cm95KGk5MTUtPm9iamVjdHMpOwo+ICAgCj4gQEAgLTIxMSwyMyArMjA4LDYgQEAgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKm1vY2tfZ2VtX2RldmljZSh2b2lkKQo+ICAgCWlmICghaTkxNS0+ dm1hcykKPiAgIAkJZ290byBlcnJfb2JqZWN0czsKPiAgIAo+IC0JaTkxNS0+cmVxdWVzdHMgPSBL TUVNX0NBQ0hFKG1vY2tfcmVxdWVzdCwKPiAtCQkJCSAgICBTTEFCX0hXQ0FDSEVfQUxJR04gfAo+ IC0JCQkJICAgIFNMQUJfUkVDTEFJTV9BQ0NPVU5UIHwKPiAtCQkJCSAgICBTTEFCX1RZUEVTQUZF X0JZX1JDVSk7Cj4gLQlpZiAoIWk5MTUtPnJlcXVlc3RzKQo+IC0JCWdvdG8gZXJyX3ZtYXM7Cj4g LQo+IC0JaTkxNS0+ZGVwZW5kZW5jaWVzID0gS01FTV9DQUNIRShpOTE1X2RlcGVuZGVuY3ksCj4g LQkJCQkJU0xBQl9IV0NBQ0hFX0FMSUdOIHwKPiAtCQkJCQlTTEFCX1JFQ0xBSU1fQUNDT1VOVCk7 Cj4gLQlpZiAoIWk5MTUtPmRlcGVuZGVuY2llcykKPiAtCQlnb3RvIGVycl9yZXF1ZXN0czsKPiAt Cj4gLQlpOTE1LT5wcmlvcml0aWVzID0gS01FTV9DQUNIRShpOTE1X3ByaW9saXN0LCBTTEFCX0hX Q0FDSEVfQUxJR04pOwo+IC0JaWYgKCFpOTE1LT5wcmlvcml0aWVzKQo+IC0JCWdvdG8gZXJyX2Rl cGVuZGVuY2llczsKPiAtCj4gICAJaTkxNV90aW1lbGluZXNfaW5pdChpOTE1KTsKPiAgIAo+ICAg CUlOSVRfTElTVF9IRUFEKCZpOTE1LT5ndC5hY3RpdmVfcmluZ3MpOwo+IEBAIC0yNTcsMTIgKzIz Nyw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICptb2NrX2dlbV9kZXZpY2Uodm9pZCkKPiAg IGVycl91bmxvY2s6Cj4gICAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAgIAlpOTE1X3RpbWVsaW5lc19maW5pKGk5MTUpOwo+IC0Ja21lbV9jYWNoZV9kZXN0cm95KGk5 MTUtPnByaW9yaXRpZXMpOwo+IC1lcnJfZGVwZW5kZW5jaWVzOgo+IC0Ja21lbV9jYWNoZV9kZXN0 cm95KGk5MTUtPmRlcGVuZGVuY2llcyk7Cj4gLWVycl9yZXF1ZXN0czoKPiAtCWttZW1fY2FjaGVf ZGVzdHJveShpOTE1LT5yZXF1ZXN0cyk7Cj4gLWVycl92bWFzOgo+ICAgCWttZW1fY2FjaGVfZGVz dHJveShpOTE1LT52bWFzKTsKPiAgIGVycl9vYmplY3RzOgo+ICAgCWttZW1fY2FjaGVfZGVzdHJv eShpOTE1LT5vYmplY3RzKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfcmVxdWVzdC5jCj4gaW5kZXggMGRjMjllMjQyNTk3Li5kMWE3Yzk2MDg3MTIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVxdWVzdC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVxdWVzdC5jCj4gQEAgLTMx LDI5ICszMSwyNSBAQCBtb2NrX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l LAo+ICAgCSAgICAgdW5zaWduZWQgbG9uZyBkZWxheSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpyZXF1ZXN0Owo+IC0Jc3RydWN0IG1vY2tfcmVxdWVzdCAqbW9jazsKPiAgIAo+ICAg CS8qIE5CIHRoZSBpOTE1LT5yZXF1ZXN0cyBzbGFiIGNhY2hlIGlzIGVubGFyZ2VkIHRvIGZpdCBt b2NrX3JlcXVlc3QgKi8KPiAgIAlyZXF1ZXN0ID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwg Y29udGV4dCk7Cj4gICAJaWYgKElTX0VSUihyZXF1ZXN0KSkKPiAgIAkJcmV0dXJuIE5VTEw7Cj4g ICAKPiAtCW1vY2sgPSBjb250YWluZXJfb2YocmVxdWVzdCwgdHlwZW9mKCptb2NrKSwgYmFzZSk7 Cj4gLQltb2NrLT5kZWxheSA9IGRlbGF5Owo+IC0KPiAtCXJldHVybiAmbW9jay0+YmFzZTsKPiAr CXJlcXVlc3QtPm1vY2suZGVsYXkgPSBkZWxheTsKPiArCXJldHVybiByZXF1ZXN0Owo+ICAgfQo+ ICAgCj4gICBib29sIG1vY2tfY2FuY2VsX3JlcXVlc3Qoc3RydWN0IGk5MTVfcmVxdWVzdCAqcmVx dWVzdCkKPiAgIHsKPiAtCXN0cnVjdCBtb2NrX3JlcXVlc3QgKm1vY2sgPSBjb250YWluZXJfb2Yo cmVxdWVzdCwgdHlwZW9mKCptb2NrKSwgYmFzZSk7Cj4gICAJc3RydWN0IG1vY2tfZW5naW5lICpl bmdpbmUgPQo+ICAgCQljb250YWluZXJfb2YocmVxdWVzdC0+ZW5naW5lLCB0eXBlb2YoKmVuZ2lu ZSksIGJhc2UpOwo+ICAgCWJvb2wgd2FzX3F1ZXVlZDsKPiAgIAo+ICAgCXNwaW5fbG9ja19pcnEo JmVuZ2luZS0+aHdfbG9jayk7Cj4gLQl3YXNfcXVldWVkID0gIWxpc3RfZW1wdHkoJm1vY2stPmxp bmspOwo+IC0JbGlzdF9kZWxfaW5pdCgmbW9jay0+bGluayk7Cj4gKwl3YXNfcXVldWVkID0gIWxp c3RfZW1wdHkoJnJlcXVlc3QtPm1vY2subGluayk7Cj4gKwlsaXN0X2RlbF9pbml0KCZyZXF1ZXN0 LT5tb2NrLmxpbmspOwo+ICAgCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT5od19sb2NrKTsKPiAg IAo+ICAgCWlmICh3YXNfcXVldWVkKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19yZXF1ZXN0LmgKPiBpbmRleCA5OTVmYjcyODM4MGMuLjRhY2YwMjExZGYyMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19yZXF1ZXN0LmgKPiBA QCAtMjksMTMgKzI5LDYgQEAKPiAgIAo+ICAgI2luY2x1ZGUgIi4uL2k5MTVfcmVxdWVzdC5oIgo+ ICAgCj4gLXN0cnVjdCBtb2NrX3JlcXVlc3Qgewo+IC0Jc3RydWN0IGk5MTVfcmVxdWVzdCBiYXNl Owo+IC0KPiAtCXN0cnVjdCBsaXN0X2hlYWQgbGluazsKPiAtCXVuc2lnbmVkIGxvbmcgZGVsYXk7 Cj4gLX07Cj4gLQo+ICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gICBtb2NrX3JlcXVlc3Qoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCSAgICAgc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmNvbnRleHQsCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=