From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v9 4/6] drm/i915: Interrupt driven fences Date: Tue, 7 Jun 2016 14:02:40 +0200 Message-ID: <8acfa8c8-018c-d05b-ac8b-d92f0a91b2aa@linux.intel.com> References: <1464800848-36672-1-git-send-email-John.C.Harrison@Intel.com> <1464800848-36672-5-git-send-email-John.C.Harrison@Intel.com> <575033DF.9010800@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 279A36E73B for ; Tue, 7 Jun 2016 12:03:15 +0000 (UTC) In-Reply-To: <575033DF.9010800@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin , John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T3AgMDItMDYtMTYgb20gMTU6MjUgc2NocmVlZiBUdnJ0a28gVXJzdWxpbjoKPgo+IE9uIDAxLzA2 LzE2IDE4OjA3LCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3RlOgo+PiBGcm9tOiBKb2hu IEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Pgo+PiBUaGUgaW50ZW5kZWQg dXNhZ2UgbW9kZWwgZm9yIHN0cnVjdCBmZW5jZSBpcyB0aGF0IHRoZSBzaWduYWxsZWQgc3RhdHVz Cj4+IHNob3VsZCBiZSBzZXQgb24gZGVtYW5kIHJhdGhlciB0aGFuIHBvbGxlZC4gVGhhdCBpcywg dGhlcmUgc2hvdWxkIG5vdAo+PiBiZSBhIG5lZWQgZm9yIGEgJ3NpZ25hbGVkJyBmdW5jdGlvbiB0 byBiZSBjYWxsZWQgZXZlcnl0aW1lIHRoZSBzdGF0dXMKPj4gaXMgcXVlcmllZC4gSW5zdGVhZCwg J3NvbWV0aGluZycgc2hvdWxkIGJlIGRvbmUgdG8gZW5hYmxlIGEgc2lnbmFsCj4+IGNhbGxiYWNr IGZyb20gdGhlIGhhcmR3YXJlIHdoaWNoIHdpbGwgdXBkYXRlIHRoZSBzdGF0ZSBkaXJlY3RseS4g SW4KPj4gdGhlIGNhc2Ugb2YgcmVxdWVzdHMsIHRoaXMgaXMgdGhlIHNlcW5vIHVwZGF0ZSBpbnRl cnJ1cHQuIFRoZSBpZGVhIGlzCj4+IHRoYXQgdGhpcyBjYWxsYmFjayB3aWxsIG9ubHkgYmUgZW5h YmxlZCBvbiBkZW1hbmQgd2hlbiBzb21ldGhpbmcKPj4gYWN0dWFsbHkgdHJpZXMgdG8gd2FpdCBv biB0aGUgZmVuY2UuCj4+Cj4+IFRoaXMgY2hhbmdlIHJlbW92ZXMgdGhlIHBvbGxpbmcgdGVzdCBh bmQgcmVwbGFjZXMgaXQgd2l0aCB0aGUgY2FsbGJhY2sKPj4gc2NoZW1lLiBFYWNoIGZlbmNlIGlz IGFkZGVkIHRvIGEgJ3BsZWFzZSBwb2tlIG1lJyBsaXN0IGF0IHRoZSBzdGFydCBvZgo+PiBpOTE1 X2FkZF9yZXF1ZXN0KCkuIFRoZSBpbnRlcnJ1cHQgaGFuZGxlciB0aGVuIHNjYW5zIHRocm91Z2gg dGhlICdwb2tlCj4+IG1lJyBsaXN0IHdoZW4gYSBuZXcgc2Vxbm8gcG9wcyBvdXQgYW5kIHNpZ25h bHMgYW55IG1hdGNoaW5nCj4+IGZlbmNlL3JlcXVlc3QuIFRoZSBmZW5jZSBpcyB0aGVuIHJlbW92 ZWQgZnJvbSB0aGUgbGlzdCBzbyB0aGUgZW50aXJlCj4+IHJlcXVlc3Qgc3RhY2sgZG9lcyBub3Qg bmVlZCB0byBiZSBzY2FubmVkIGV2ZXJ5IHRpbWUuIE5vdGUgdGhhdCB0aGUKPj4gZmVuY2UgaXMg YWRkZWQgdG8gdGhlIGxpc3QgYmVmb3JlIHRoZSBjb21tYW5kcyB0byBnZW5lcmF0ZSB0aGUgc2Vx bm8KPj4gaW50ZXJydXB0IGFyZSBhZGRlZCB0byB0aGUgcmluZy4gVGh1cyB0aGUgc2VxdWVuY2Ug aXMgZ3VhcmFudGVlZCB0byBiZQo+PiByYWNlIGZyZWUgaWYgdGhlIGludGVycnVwdCBpcyBhbHJl YWR5IGVuYWJsZWQuCj4+Cj4+IE5vdGUgdGhhdCB0aGUgaW50ZXJydXB0IGlzIG9ubHkgZW5hYmxl ZCBvbiBkZW1hbmQgKGkuZS4gd2hlbgo+PiBfX3dhaXRfcmVxdWVzdCgpIGlzIGNhbGxlZCkuIFRo dXMgdGhlcmUgaXMgc3RpbGwgYSBwb3RlbnRpYWwgcmFjZSB3aGVuCj4+IGVuYWJsaW5nIHRoZSBp bnRlcnJ1cHQgYXMgdGhlIHJlcXVlc3QgbWF5IGFscmVhZHkgaGF2ZSBjb21wbGV0ZWQuCj4+IEhv d2V2ZXIsIHRoaXMgaXMgc2ltcGx5IHNvbHZlZCBieSBjYWxsaW5nIHRoZSBpbnRlcnJ1cHQgcHJv Y2Vzc2luZwo+PiBjb2RlIGltbWVkaWF0ZWx5IGFmdGVyIGVuYWJsaW5nIHRoZSBpbnRlcnJ1cHQg YW5kIHRoZXJlYnkgY2hlY2tpbmcgZm9yCj4+IGFscmVhZHkgY29tcGxldGVkIHJlcXVlc3RzLgo+ Pgo+PiBMYXN0bHksIHRoZSByaW5nIGNsZWFuIHVwIGNvZGUgaGFzIHRoZSBwb3NzaWJpbGl0eSB0 byBjYW5jZWwKPj4gb3V0c3RhbmRpbmcgcmVxdWVzdHMgKGUuZy4gYmVjYXVzZSBURFIgaGFzIHJl c2V0IHRoZSByaW5nKS4gVGhlc2UKPj4gcmVxdWVzdHMgd2lsbCBuZXZlciBnZXQgc2lnbmFsbGVk IGFuZCBzbyBtdXN0IGJlIHJlbW92ZWQgZnJvbSB0aGUKPj4gc2lnbmFsIGxpc3QgbWFudWFsbHku IFRoaXMgaXMgZG9uZSBieSBzZXR0aW5nIGEgJ2NhbmNlbGxlZCcgZmxhZyBhbmQKPj4gdGhlbiBj YWxsaW5nIHRoZSByZWd1bGFyIG5vdGlmeS9yZXRpcmUgY29kZSBwYXRoIHJhdGhlciB0aGFuCj4+ IGF0dGVtcHRpbmcgdG8gZHVwbGljYXRlIHRoZSBsaXN0IG1hbmlwdWxhdGF0aW9uIGFuZCBjbGVh biB1cCBjb2RlIGluCj4+IG11bHRpcGxlIHBsYWNlcy4gVGhpcyBhbHNvIGF2b2lkIGFueSByYWNl IGNvbmRpdGlvbiB3aGVyZSB0aGUKPj4gY2FuY2VsbGF0aW9uIHJlcXVlc3QgbWlnaHQgb2NjdXIg YWZ0ZXIvZHVyaW5nIHRoZSBjb21wbGV0aW9uIGludGVycnVwdAo+PiBhY3R1YWxseSBhcnJpdmlu Zy4KPj4KPj4gdjI6IFVwZGF0ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIHJlcXVlc3QgdW5y ZWZlcmVuY2Ugbm8gbG9uZ2VyCj4+IHJlcXVpcmluZyB0aGUgbXV0ZXggbG9jay4KPj4KPj4gdjM6 IE1vdmUgdGhlIHNpZ25hbCBsaXN0IHByb2Nlc3NpbmcgYXJvdW5kIHRvIHByZXZlbnQgdW5zdWJt aXR0ZWQKPj4gcmVxdWVzdHMgYmVpbmcgYWRkZWQgdG8gdGhlIGxpc3QuIFRoaXMgd2FzIG9jY3Vy cmluZyBvbiBBbmRyb2lkCj4+IGJlY2F1c2UgdGhlIG5hdGl2ZSBzeW5jIGltcGxlbWVudGF0aW9u IGNhbGxzIHRoZQo+PiBmZW5jZS0+ZW5hYmxlX3NpZ25hbGxpbmcgQVBJIGltbWVkaWF0ZWx5IG9u IGZlbmNlIGNyZWF0aW9uLgo+Pgo+PiBVcGRhdGVkIGFmdGVyIHJldmlldyBjb21tZW50cyBieSBU dnJ0a28gVXJzdWxpbi4gUmVuYW1lZCBsaXN0IG5vZGVzIHRvCj4+ICdsaW5rJyBpbnN0ZWFkIG9m ICdsaXN0Jy4gQWRkZWQgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIGFuIGVycm9yIGNvZGUgb24KPj4g YSBjYW5jZWxsZWQgZmVuY2UuIFVwZGF0ZSBsaXN0IHByb2Nlc3NpbmcgdG8gYmUgbW9yZSBlZmZp Y2llbnQvc2FmZXIKPj4gd2l0aCByZXNwZWN0IHRvIHNwaW5sb2Nrcy4KPj4KPj4gdjU6IE1hZGUg aTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQgYSBzdGF0aWMgYXMgaXQgaXMgb25seSBldmVyIGNhbGxl ZAo+PiBmcm9tIG9uZSBwbGFjZS4KPj4KPj4gRml4ZWQgdXAgdGhlIGxvdyBsYXRlbmN5IHdhaXQg b3B0aW1pc2F0aW9uLiBUaGUgdGltZSBkZWxheSBiZXR3ZWVuIHRoZQo+PiBzZXFubyB2YWx1ZSBi ZWluZyB0byBtZW1vcnkgYW5kIHRoZSBkcml2ZSdzIElTUiBydW5uaW5nIGNhbiBiZQo+PiBzaWdu aWZpY2FudCwgYXQgbGVhc3QgZm9yIHRoZSB3YWl0IHJlcXVlc3QgbWljcm8tYmVuY2htYXJrLiBU aGlzIGNhbgo+PiBiZSBncmVhdGx5IGltcHJvdmVkIGJ5IGV4cGxpY2l0bHkgY2hlY2tpbmcgZm9y IHNlcW5vIHVwZGF0ZXMgaW4gdGhlCj4+IHByZS13YWl0IGJ1c3kgcG9sbCBsb29wLiBBbHNvIGFk ZGVkIHNvbWUgZG9jdW1lbnRhdGlvbiBjb21tZW50cyB0byB0aGUKPj4gYnVzeSBwb2xsIGNvZGUu Cj4+Cj4+IEZpeGVkIHVwIHN1cHBvcnQgZm9yIHRoZSBmYWtpbmcgb2YgbG9zdCBpbnRlcnJ1cHRz Cj4+ICh0ZXN0X2lycV9yaW5ncy9taXNzZWRfaXJxX3JpbmdzKS4gVGhhdCBpcywgdGhlcmUgaXMg YW4gSUdUIHRlc3QgdGhhdAo+PiB0ZWxscyB0aGUgZHJpdmVyIHRvIGxvb3NlIGludGVycnVwdHMg ZGVsaWJlcmF0ZWx5IGFuZCB0aGVuIGNoZWNrIHRoYXQKPj4gZXZlcnl0aGluZyBzdGlsbCB3b3Jr cyBhcyBleHBlY3RlZCAoYWxiZWl0IG11Y2ggc2xvd2VyKS4KPj4KPj4gVXBkYXRlcyBmcm9tIHJl dmlldyBjb21tZW50czogdXNlIG5vbiBJUlEtc2F2ZSBzcGlubG9ja2luZywgZWFybHkgZXhpdAo+ PiBvbiBXQVJOIGFuZCBpbXByb3ZlZCBjb21tZW50cyAoVHZydGtvIFVyc3VsaW4pLgo+Pgo+PiB2 NjogVXBkYXRlZCB0byBuZXdlciBuaWd0aGx5IGFuZCByZXNvbHZlZCBjb25mbGljdHMgYXJvdW5k IHRoZQo+PiB3YWl0X3JlcXVlc3QgYnVzeSBzcGluIG9wdGltaXNhdGlvbi4gQWxzbyBmaXhlZCBh IHJhY2UgY29uZGl0aW9uCj4+IGJldHdlZW4gdGhpcyBlYXJseSBleGl0IHBhdGggYW5kIHRoZSBy ZWd1bGFyIGNvbXBsZXRpb24gcGF0aC4KPj4KPj4gdjc6IFVwZGF0ZWQgdG8gbmV3ZXIgbmlnaHRs eSAtIGxvdHMgb2YgcmluZyAtPiBlbmdpbmUgcmVuYW1pbmcgcGx1cyBhbgo+PiBpbnRlcmZhY2Ug Y2hhbmdlIG9uIGdldF9zZXFubygpLiBBbHNvIGFkZGVkIGEgbGlzdF9lbXB0eSgpIGNoZWNrCj4+ IGJlZm9yZSBhY3F1cmluZyBzcGlubG9ja3MgYW5kIGRvaW5nIGxpc3QgcHJvY2Vzc2luZy4KPj4K Pj4gdjg6IFVwZGF0ZWQgdG8gbmV3ZXIgbmlnaHRseSAtIGNoYW5nZXMgdG8gcmVxdWVzdCBjbGVh biB1cCBjb2RlIG1lYW4KPj4gbm9uIG9mIHRoZSBkZWZlcnJlZCBmcmVlIG1lc3MgaXMgbmVlZGVk IGFueSBtb3JlLgo+Pgo+PiB2OTogTW92ZWQgdGhlIHJlcXVlc3QgY29tcGxldGlvbiBwcm9jZXNz aW5nIG91dCBvZiB0aGUgaW50ZXJydXB0Cj4+IGhhbmRsZXIgYW5kIGludG8gYSB3b3JrZXIgdGhy ZWFkIChDaHJpcyBXaWxzb24pLgo+Pgo+PiBGb3I6IFZJWi01MTkwCj4+IFNpZ25lZC1vZmYtYnk6 IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4+IENjOiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+PiBDYzogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyAgICAgICAgIHwgICA5ICstCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgIDExICsrCj4+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgMjQ4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgIHwg ICAyICsKPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAgIDUg Kwo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyB8ICAgNSArCj4+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICAzICsKPj4gICA3 IGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKPj4KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4+IGluZGV4IDA3ZWRhZWQuLmY4ZjYwYmIgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+PiBAQCAtMTAxOSw5ICsxMDE5LDEzIEBAIHN0YXRpYyBp bnQgaTkxNV93b3JrcXVldWVzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+PiAgICAgICBpZiAoZGV2X3ByaXYtPndxID09IE5VTEwpCj4+ICAgICAgICAgICBnb3RvIG91 dF9lcnI7Cj4+Cj4+ICsgICAgZGV2X3ByaXYtPnJlcV93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1 ZXVlKCJpOTE1LXJxIiwgMCk7Cj4+ICsgICAgaWYgKGRldl9wcml2LT5yZXFfd3EgPT0gTlVMTCkK Pj4gKyAgICAgICAgZ290byBvdXRfZnJlZV93cTsKPj4gKwo+Cj4gU2luZ2xlIChwZXItZGV2aWNl KSBvcmRlcmVkIHdvcmtxdWV1ZSB3aWxsIHNlcmlhbGl6ZSBpbnRlcnJ1cHQgcHJvY2Vzc2luZyBh Y3Jvc3MgYWxsIGVuZ2luZXMgdG8gb25lIHRocmVhZC4gVG9nZXRoZXIgd2l0aCB0aGUgZmFjdCBy ZXF1ZXN0IHdvcmtlciBkb2VzIG5vdCBzZWVtIHRvIG5lZWQgdGhlIHNsZWVwaW5nIGNvbnRleHQs IEkgYW0gdGhpbmtpbmcgdGhhdCBhIHRhc2tsZXQgcGVyIGVuZ2luZSB3b3VsZCBiZSBtdWNoIGJl dHRlciAoc2VlIGVuZ2luZS0+aXJxX3Rhc2tsZXQgZm9yIGFuIGV4YW1wbGUpLgo+Cj4+ICAgICAg IGRldl9wcml2LT5ob3RwbHVnLmRwX3dxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoImk5MTUt ZHAiLCAwKTsKPj4gICAgICAgaWYgKGRldl9wcml2LT5ob3RwbHVnLmRwX3dxID09IE5VTEwpCj4+ IC0gICAgICAgIGdvdG8gb3V0X2ZyZWVfd3E7Cj4+ICsgICAgICAgIGdvdG8gb3V0X2ZyZWVfcmVx X3dxOwo+Pgo+PiAgICAgICBkZXZfcHJpdi0+Z3B1X2Vycm9yLmhhbmdjaGVja193cSA9Cj4+ICAg ICAgICAgICBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgiaTkxNS1oYW5nY2hlY2siLCAwKTsKPj4g QEAgLTEwMzIsNiArMTAzNiw4IEBAIHN0YXRpYyBpbnQgaTkxNV93b3JrcXVldWVzX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pgo+PiAgIG91dF9mcmVlX2RwX3dxOgo+ PiAgICAgICBkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+aG90cGx1Zy5kcF93cSk7Cj4+ICtv dXRfZnJlZV9yZXFfd3E6Cj4+ICsgICAgZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYtPnJlcV93 cSk7Cj4+ICAgb3V0X2ZyZWVfd3E6Cj4+ICAgICAgIGRlc3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2 LT53cSk7Cj4+ICAgb3V0X2VycjoKPj4gQEAgLTEwNDQsNiArMTA1MCw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfd29ya3F1ZXVlc19jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPj4gICB7Cj4+ICAgICAgIGRlc3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2LT5ncHVfZXJyb3Iu aGFuZ2NoZWNrX3dxKTsKPj4gICAgICAgZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYtPmhvdHBs dWcuZHBfd3EpOwo+PiArICAgIGRlc3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2LT5yZXFfd3EpOwo+ PiAgICAgICBkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwo+PiAgIH0KPj4KPj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4+IGluZGV4IDY5YzM0MTIuLjVhN2YyNTYgMTAwNjQ0Cj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtMTg1MSw2ICsxODUxLDkgQEAgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgewo+PiAgICAgICAgKi8KPj4gICAgICAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1 Y3QgKndxOwo+Pgo+PiArICAgIC8qIFdvcmsgcXVldWUgZm9yIHJlcXVlc3QgY29tcGxldGlvbiBw cm9jZXNzaW5nICovCj4+ICsgICAgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKnJlcV93cTsKPj4g Kwo+PiAgICAgICAvKiBEaXNwbGF5IGZ1bmN0aW9ucyAqLwo+PiAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZGlzcGxheV9mdW5jcyBkaXNwbGF5Owo+Pgo+PiBAQCAtMjM1OSw2ICsyMzYyLDEwIEBAIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4+ICAgICAgICAqLwo+PiAgICAgICBzdHJ1Y3Qg ZmVuY2UgZmVuY2U7Cj4+ICAgICAgIHN0cnVjdCByY3VfaGVhZCByY3VfaGVhZDsKPj4gKyAgICBz dHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9saW5rOwo+PiArICAgIGJvb2wgY2FuY2VsbGVkOwo+PiAr ICAgIGJvb2wgaXJxX2VuYWJsZWQ7Cj4+ICsgICAgYm9vbCBzaWduYWxfcmVxdWVzdGVkOwo+Pgo+ PiAgICAgICAvKiogT24gV2hpY2ggcmluZyB0aGlzIHJlcXVlc3Qgd2FzIGdlbmVyYXRlZCAqLwo+ PiAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPj4gQEAgLTI0NjAsNiArMjQ2 NywxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+PiAgIHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqIF9fbXVzdF9jaGVjawo+PiAgIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Mo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+PiAgICAgICAgICAgICAgICAgIHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpOwo+PiArdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJs ZV9pbnRlcnJ1cHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgIGJvb2wgZmVuY2VfbG9ja2VkKTsKPj4gK3ZvaWQgaTkxNV9nZW1fcmVx dWVzdF9ub3RpZnkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgYm9vbCBmZW5jZV9sb2Nr ZWQpOwo+PiArdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspOwo+Pgo+PiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBs ZXRlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPj4gICB7Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+PiBpbmRleCA5N2UzMTM4Li44M2NmOWIwIDEwMDY0NAo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPj4gQEAgLTM5LDYgKzM5LDggQEAKPj4gICAjaW5jbHVkZSA8bGludXgv cGNpLmg+Cj4+ICAgI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KPj4KPj4gK3N0YXRpYyB2b2lk IGk5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx KTsKPj4gKwo+PiAgIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9ndHRfd3JpdGVf ZG9tYWluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+PiAgIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX29iamVjdF9mbHVzaF9jcHVfd3JpdGVfZG9tYWluKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopOwo+PiAgIHN0YXRpYyB2b2lkCj4+IEBAIC0xMjM3LDkgKzEyMzksOCBA QCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKPj4gICB7Cj4+ICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGk5MTVf Z2VtX3JlcXVlc3RfZ2V0X2VuZ2luZShyZXEpOwo+PiAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7Cj4+IC0gICAgY29uc3QgYm9vbCBpcnFfdGVzdF9p bl9wcm9ncmVzcyA9Cj4+IC0gICAgICAgIEFDQ0VTU19PTkNFKGRldl9wcml2LT5ncHVfZXJyb3Iu dGVzdF9pcnFfcmluZ3MpICYgaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPj4gICAgICAgaW50 IHN0YXRlID0gaW50ZXJydXB0aWJsZSA/IFRBU0tfSU5URVJSVVBUSUJMRSA6IFRBU0tfVU5JTlRF UlJVUFRJQkxFOwo+PiArICAgIHVpbnQzMl90IHNlcW5vOwo+PiAgICAgICBERUZJTkVfV0FJVCh3 YWl0KTsKPj4gICAgICAgdW5zaWduZWQgbG9uZyB0aW1lb3V0X2V4cGlyZTsKPj4gICAgICAgczY0 IGJlZm9yZSA9IDA7IC8qIE9ubHkgdG8gc2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcuICovCj4+ IEBAIC0xMjQ3LDkgKzEyNDgsNiBAQCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPj4KPj4gICAgICAgV0FSTighaW50ZWxfaXJxc19lbmFi bGVkKGRldl9wcml2KSwgIklSUXMgZGlzYWJsZWQiKTsKPj4KPj4gLSAgICBpZiAobGlzdF9lbXB0 eSgmcmVxLT5saXN0KSkKPj4gLSAgICAgICAgcmV0dXJuIDA7Cj4+IC0KPj4gICAgICAgaWYgKGk5 MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkpCj4+ICAgICAgICAgICByZXR1cm4gMDsKPj4K Pj4gQEAgLTEyNzUsMTUgKzEyNzMsMTcgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4+ICAgICAgIHRyYWNlX2k5MTVfZ2VtX3JlcXVl c3Rfd2FpdF9iZWdpbihyZXEpOwo+Pgo+PiAgICAgICAvKiBPcHRpbWlzdGljIHNwaW4gZm9yIHRo ZSBuZXh0IGppZmZpZSBiZWZvcmUgdG91Y2hpbmcgSVJRcyAqLwo+PiAtICAgIHJldCA9IF9faTkx NV9zcGluX3JlcXVlc3QocmVxLCBzdGF0ZSk7Cj4+IC0gICAgaWYgKHJldCA9PSAwKQo+PiAtICAg ICAgICBnb3RvIG91dDsKPj4gLQo+PiAtICAgIGlmICghaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MgJiYg V0FSTl9PTighZW5naW5lLT5pcnFfZ2V0KGVuZ2luZSkpKSB7Cj4+IC0gICAgICAgIHJldCA9IC1F Tk9ERVY7Cj4+IC0gICAgICAgIGdvdG8gb3V0Owo+PiArICAgIGlmIChyZXEtPnNlcW5vKSB7Cj4K PiBUaGlzIG5lZWRzIGEgY29tbWVudCBJIHRoaW5rIGJlY2F1c2UgaXQgaXMgc28gdW51c3VhbCBh bmQgbmV3IHRoYXQgcmVxLT5zZXFubyA9PSAwIGlzIGEgc3BlY2lhbCBwYXRoLiBUbyBleHBsYWlu IHdoeSBhbmQgaG93IGl0IGNhbiBoYXBwZW4gaGVyZS4KPgo+PiArICAgICAgICByZXQgPSBfX2k5 MTVfc3Bpbl9yZXF1ZXN0KHJlcSwgc3RhdGUpOwo+PiArICAgICAgICBpZiAocmV0ID09IDApCj4+ ICsgICAgICAgICAgICBnb3RvIG91dDsKPj4gICAgICAgfQo+Pgo+PiArICAgIC8qCj4+ICsgICAg ICogRW5hYmxlIGludGVycnVwdCBjb21wbGV0aW9uIG9mIHRoZSByZXF1ZXN0Lgo+PiArICAgICAq Lwo+PiArICAgIGZlbmNlX2VuYWJsZV9zd19zaWduYWxpbmcoJnJlcS0+ZmVuY2UpOwo+PiArCj4+ ICAgICAgIGZvciAoOzspIHsKPj4gICAgICAgICAgIHN0cnVjdCB0aW1lcl9saXN0IHRpbWVyOwo+ Pgo+PiBAQCAtMTMwNiw2ICsxMzA2LDIxIEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+PiAgICAgICAgICAgICAgIGJyZWFrOwo+PiAg ICAgICAgICAgfQo+Pgo+PiArICAgICAgICBpZiAocmVxLT5zZXFubykgewo+PiArICAgICAgICAg ICAgLyoKPj4gKyAgICAgICAgICAgICAqIFRoZXJlIGlzIHF1aXRlIGEgbG90IG9mIGxhdGVuY3kg aW4gdGhlIHVzZXIgaW50ZXJydXB0Cj4+ICsgICAgICAgICAgICAgKiBwYXRoLiBTbyBkbyBhbiBl eHBsaWNpdCBzZXFubyBjaGVjayBhbmQgcG90ZW50aWFsbHkKPj4gKyAgICAgICAgICAgICAqIHJl bW92ZSBhbGwgdGhhdCBkZWxheS4KPj4gKyAgICAgICAgICAgICAqLwo+PiArICAgICAgICAgICAg aWYgKHJlcS0+ZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKPj4gKyAgICAgICAgICAgICAgICBy ZXEtPmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIocmVxLT5lbmdpbmUpOwo+PiArICAgICAgICAg ICAgc2Vxbm8gPSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUpOwo+PiArICAgICAgICAgICAgaWYg KGk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCByZXEtPnNlcW5vKSkgewo+PiArICAgICAgICAgICAg ICAgIHJldCA9IDA7Cj4+ICsgICAgICAgICAgICAgICAgYnJlYWs7Cj4+ICsgICAgICAgICAgICB9 Cj4+ICsgICAgICAgIH0KPj4gKwo+PiAgICAgICAgICAgaWYgKHNpZ25hbF9wZW5kaW5nX3N0YXRl KHN0YXRlLCBjdXJyZW50KSkgewo+PiAgICAgICAgICAgICAgIHJldCA9IC1FUkVTVEFSVFNZUzsK Pj4gICAgICAgICAgICAgICBicmVhazsKPj4gQEAgLTEzMzIsMTQgKzEzNDcsMzIgQEAgaW50IF9f aTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4+ICAg ICAgICAgICAgICAgZGVzdHJveV90aW1lcl9vbl9zdGFjaygmdGltZXIpOwo+PiAgICAgICAgICAg fQo+PiAgICAgICB9Cj4+IC0gICAgaWYgKCFpcnFfdGVzdF9pbl9wcm9ncmVzcykKPj4gLSAgICAg ICAgZW5naW5lLT5pcnFfcHV0KGVuZ2luZSk7Cj4+Cj4+ICAgICAgIGZpbmlzaF93YWl0KCZlbmdp bmUtPmlycV9xdWV1ZSwgJndhaXQpOwo+Cj4gSG0gSSBkb24ndCB1bmRlcnN0YW5kIHdoeSBvdXIg Y3VzdG9tIHdhaXRpbmcgcmVtYWlucz8gU2hvdWxkbid0IGZlbmNlX3dhaXQganVzdCBiZSBjYWxs ZWQgYWZ0ZXIgdGhlIG9wdGltaXN0aWMgc3BpbiwgbW9yZSBvciBsZXNzPwo+Cj4+Cj4+ICAgb3V0 Ogo+PiAgICAgICB0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X3dhaXRfZW5kKHJlcSk7Cj4+Cj4+ICsg ICAgaWYgKChyZXQgPT0gMCkgJiYgKHJlcS0+c2Vxbm8pKSB7Cj4+ICsgICAgICAgIGlmIChyZXEt PmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIpCj4+ICsgICAgICAgICAgICByZXEtPmVuZ2luZS0+ aXJxX3NlcW5vX2JhcnJpZXIocmVxLT5lbmdpbmUpOwo+PiArICAgICAgICBzZXFubyA9IGVuZ2lu ZS0+Z2V0X3NlcW5vKGVuZ2luZSk7Cj4+ICsgICAgICAgIGlmIChpOTE1X3NlcW5vX3Bhc3NlZChz ZXFubywgcmVxLT5zZXFubykgJiYKPj4gKyAgICAgICAgICAgICFpOTE1X2dlbV9yZXF1ZXN0X2Nv bXBsZXRlZChyZXEpKSB7Cj4+ICsgICAgICAgICAgICAvKgo+PiArICAgICAgICAgICAgICogTWFr ZSBzdXJlIHRoZSByZXF1ZXN0IGlzIG1hcmtlZCBhcyBjb21wbGV0ZWQgYmVmb3JlCj4+ICsgICAg ICAgICAgICAgKiByZXR1cm5pbmcuIE5COiBOZWVkIHRvIGFjcXVpcmUgdGhlIHNwaW5sb2NrIGFy b3VuZAo+PiArICAgICAgICAgICAgICogdGhlIHdob2xlIGNhbGwgdG8gYXZvaWQgYSByYWNlIGNv bmRpdGlvbiB3aXRoIHRoZQo+PiArICAgICAgICAgICAgICogaW50ZXJydXB0IGhhbmRsZXIgaXMg cnVubmluZyBjb25jdXJyZW50bHkgYW5kIGNvdWxkCj4+ICsgICAgICAgICAgICAgKiBjYXVzZSB0 aGlzIGludm9jYXRpb24gdG8gZWFybHkgZXhpdCBldmVuIHRob3VnaCB0aGUKPj4gKyAgICAgICAg ICAgICAqIHJlcXVlc3QgaGFzIG5vdCBhY3R1YWxseSBiZWVuIGZ1bGx5IHByb2Nlc3NlZCB5ZXQu Cj4+ICsgICAgICAgICAgICAgKi8KPj4gKyAgICAgICAgICAgIHNwaW5fbG9ja19pcnEoJnJlcS0+ ZW5naW5lLT5mZW5jZV9sb2NrKTsKPj4gKyAgICAgICAgICAgIGk5MTVfZ2VtX3JlcXVlc3Rfbm90 aWZ5KHJlcS0+ZW5naW5lLCB0cnVlKTsKPj4gKyAgICAgICAgICAgIHNwaW5fdW5sb2NrX2lycSgm cmVxLT5lbmdpbmUtPmZlbmNlX2xvY2spOwo+PiArICAgICAgICB9Cj4+ICsgICAgfQo+PiArCj4+ ICAgICAgIGlmICh0aW1lb3V0KSB7Cj4+ICAgICAgICAgICBzNjQgdHJlcyA9ICp0aW1lb3V0IC0g KGt0aW1lX2dldF9yYXdfbnMoKSAtIGJlZm9yZSk7Cj4+Cj4+IEBAIC0xNDA1LDYgKzE0MzgsMTEg QEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXF1ZXN0KQo+PiAgIHsKPj4gICAgICAgdHJhY2VfaTkxNV9nZW1fcmVxdWVz dF9yZXRpcmUocmVxdWVzdCk7Cj4+Cj4+ICsgICAgaWYgKHJlcXVlc3QtPmlycV9lbmFibGVkKSB7 Cj4+ICsgICAgICAgIHJlcXVlc3QtPmVuZ2luZS0+aXJxX3B1dChyZXF1ZXN0LT5lbmdpbmUpOwo+ PiArICAgICAgICByZXF1ZXN0LT5pcnFfZW5hYmxlZCA9IGZhbHNlOwo+Cj4gV2hhdCBwcm90ZWN0 cyByZXF1ZXN0LT5pcnFfZW5hYmxlZD8gSGVyZSB2ZXJzdXMgZW5hYmxlX3NpZ25hbGxpbmcgYml0 PyBJdCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIGV4dGVybmFsIGZlbmNlIHVzZXJzIHdoaWNoIHdv dWxkIHRha2UgdGhlIGZlbmNlX2xvY2ssIGJ1dCBoZXJlIGl0IGRvZXMgbm90Lgo+Cj4+ICsgICAg fQo+Cj4+ICsKPj4gICAgICAgLyogV2Uga25vdyB0aGUgR1BVIG11c3QgaGF2ZSByZWFkIHRoZSBy ZXF1ZXN0IHRvIGhhdmUKPj4gICAgICAgICogc2VudCB1cyB0aGUgc2Vxbm8gKyBpbnRlcnJ1cHQs IHNvIHVzZSB0aGUgcG9zaXRpb24KPj4gICAgICAgICogb2YgdGFpbCBvZiB0aGUgcmVxdWVzdCB0 byB1cGRhdGUgdGhlIGxhc3Qga25vd24gcG9zaXRpb24KPj4gQEAgLTE0MTgsNiArMTQ1NiwyMiBA QCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcXVlc3QpCj4+ICAgICAgIGxpc3RfZGVsX2luaXQoJnJlcXVlc3QtPmxpc3Qp Owo+PiAgICAgICBpOTE1X2dlbV9yZXF1ZXN0X3JlbW92ZV9mcm9tX2NsaWVudChyZXF1ZXN0KTsK Pj4KPj4gKyAgICAvKgo+PiArICAgICAqIEluIGNhc2UgdGhlIHJlcXVlc3QgaXMgc3RpbGwgaW4g dGhlIHNpZ25hbCBwZW5kaW5nIGxpc3QsCj4+ICsgICAgICogZS5nLiBkdWUgdG8gYmVpbmcgY2Fu Y2VsbGVkIGJ5IFREUiwgcHJlZW1wdGlvbiwgZXRjLgo+PiArICAgICAqLwo+PiArICAgIGlmICgh bGlzdF9lbXB0eSgmcmVxdWVzdC0+c2lnbmFsX2xpbmspKSB7Cj4KPiBObyBsb2NraW5nIHJlcXVp cmVkIGhlcmU/CkNvbnNpZGVyaW5nIHRoZSBsb2NrZWQgZnVuY3Rpb24gaXMgdXNlZCwgSSdtIGFz c3VtaW5nIHRoaXMgZnVuY3Rpb24gaG9sZHMgdGhlIGZlbmNlX2xvY2suCgpJZiBub3QsIHNvbWV0 aGluZydzIHNlcmlvdXNseSB3cm9uZy4KPj4gKyAgICAgICAgLyoKPj4gKyAgICAgICAgICogVGhl IHJlcXVlc3QgbXVzdCBiZSBtYXJrZWQgYXMgY2FuY2VsbGVkIGFuZCB0aGUgdW5kZXJseWluZwo+ PiArICAgICAgICAgKiBmZW5jZSBhcyBmYWlsZWQuIE5COiBUaGVyZSBpcyBubyBleHBsaWNpdCBm ZW5jZSBmYWlsIEFQSSwKPj4gKyAgICAgICAgICogdGhlcmUgaXMgb25seSBhIG1hbnVhbCBwb2tl IGFuZCBzaWduYWwuCj4+ICsgICAgICAgICAqLwo+PiArICAgICAgICByZXF1ZXN0LT5jYW5jZWxs ZWQgPSB0cnVlOwo+PiArICAgICAgICAvKiBIb3cgdG8gcHJvcGFnYXRlIHRvIGFueSBhc3NvY2lh dGVkIHN5bmNfZmVuY2U/Pz8gKi8KXlRoaXMgd2F5IHdvcmtzLCBzbyBjb21tZW50IGNhbiBiZSBy ZW1vdmVkLgoKVGhlcmUncyBkZWxpYmVyYXRlbHkgbm8gd2F5IHRvIGNhbmNlbCBhIGZlbmNlLCBp dCdzIHRoZSBzYW1lIHBhdGggYnV0IHdpdGggc3RhdHVzIG1lbWJlciBzZXQuCgpJZiB5b3UgaGF2 ZSBhIGZlbmNlIGZvciBhbm90aGVyIGRyaXZlciwgdGhlcmUncyByZWFsbHkgbm8gZ29vZCB3YXkg dG8gaGFuZGxlIGZhaWx1cmUuIFNvIHlvdSBoYXZlIHRvIHRyZWF0Cml0IGFzIGlmIGl0IHN1Y2Nl ZWRlZC4KPj4gKyAgICAgICAgcmVxdWVzdC0+ZmVuY2Uuc3RhdHVzID0gLUVJTzsKPj4gKyAgICAg ICAgZmVuY2Vfc2lnbmFsX2xvY2tlZCgmcmVxdWVzdC0+ZmVuY2UpOwo+Cj4gQW5kIGhlcmU/Cj4K Pj4gKyAgICB9Cj4+ICsKPj4gICAgICAgaWYgKHJlcXVlc3QtPnByZXZpb3VzX2NvbnRleHQpIHsK Pj4gICAgICAgICAgIGlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4+ICAgICAgICAgICAgICAg aW50ZWxfbHJfY29udGV4dF91bnBpbihyZXF1ZXN0LT5wcmV2aW91c19jb250ZXh0LAo+PiBAQCAt MjY3MCw2ICsyNzI0LDEyIEBAIHZvaWQgX19pOTE1X2FkZF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPj4gICAgICAgICovCj4+ICAgICAgIHJlcXVlc3QtPnBv c3RmaXggPSBpbnRlbF9yaW5nX2dldF90YWlsKHJpbmdidWYpOwo+Pgo+PiArICAgIC8qCj4+ICsg ICAgICogQWRkIHRoZSBmZW5jZSB0byB0aGUgcGVuZGluZyBsaXN0IGJlZm9yZSBlbWl0dGluZyB0 aGUgY29tbWFuZHMgdG8KPj4gKyAgICAgKiBnZW5lcmF0ZSBhIHNlcW5vIG5vdGlmaWNhdGlvbiBp bnRlcnJ1cHQuCj4+ICsgICAgICovCj4+ICsgICAgaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQocmVx dWVzdCk7Cj4+ICsKPj4gICAgICAgaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPj4gICAgICAg ICAgIHJldCA9IGVuZ2luZS0+ZW1pdF9yZXF1ZXN0KHJlcXVlc3QpOwo+PiAgICAgICBlbHNlIHsK Pj4gQEAgLTI3NTUsMjUgKzI4MTUsMTU0IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rf ZnJlZShzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPj4gICAgICAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXE7Cj4+Cj4+ICAgICAgIHJlcSA9IGNvbnRhaW5lcl9vZihyZXFfZmVuY2Us IHR5cGVvZigqcmVxKSwgZmVuY2UpOwo+PiArCj4+ICsgICAgV0FSTl9PTihyZXEtPmlycV9lbmFi bGVkKTsKPgo+IEhvdyB1c2VmdWwgaXMgdGhpcz8gSWYgaXQgd2VudCB3cm9uZyBlbmdpbmUgaXJx IHJlZmVyZW5jZSBjb3VudGluZyB3b3VsZCBiZSBiYWQuIE9rYXkgbm8gb25lIHdvdWxkIG5vdGlj ZSwgYnV0IHdlIGNvdWxkIHRoZW4gc3RpY2sgc29tZSBvdGhlciB3YXJucyBoZXJlLCBsaXN0ICFs aXN0X2VtcHkocmVxLT5saXN0KSBhbmQgd2hvIGtub3dzIHdoYXQsIHdoaWNoIHdlIGRvbid0IGhh dmUsIHNvIEkgYW0ganVzdCB3b25kZXJpbmcgaWYgdGhpcyBvbmUgYnJpbmdzIGFueSB2YWx1ZS4K Pgo+PiArCj4+ICAgICAgIGNhbGxfcmN1KCZyZXEtPnJjdV9oZWFkLCBpOTE1X2dlbV9yZXF1ZXN0 X2ZyZWVfcmN1KTsKPj4gICB9Cj4+Cj4+IC1zdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2Vu YWJsZV9zaWduYWxpbmcoc3RydWN0IGZlbmNlICpyZXFfZmVuY2UpCj4+ICsvKgo+PiArICogVGhl IHJlcXVlc3QgaXMgYWJvdXQgdG8gYmUgc3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZSBzbyBhZGQg dGhlIGZlbmNlIHRvCj4+ICsgKiB0aGUgbGlzdCBvZiBzaWduYWxhYmxlIGZlbmNlcy4KPj4gKyAq Cj4+ICsgKiBOQjogVGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseSBlbmFibGUgaW50ZXJydXB0cyB5 ZXQuIFRoYXQgb25seSBvY2N1cnMgb24KPj4gKyAqIGRlbWFuZCB3aGVuIHRoZSByZXF1ZXN0IGlz IGFjdHVhbGx5IHdhaXRlZCBvbi4gSG93ZXZlciwgYWRkaW5nIGl0IHRvIHRoZQo+PiArICogbGlz dCBlYXJseSBlbnN1cmVzIHRoYXQgdGhlcmUgaXMgbm8gcmFjZSBjb25kaXRpb24gd2hlcmUgdGhl IGludGVycnVwdAo+PiArICogY291bGQgcG9wIG91dCBwcmVtYXR1cmVseSBhbmQgdGh1cyBiZSBj b21wbGV0ZWx5IGxvc3QuIFRoZSByYWNlIGlzIG1lcmVseQo+PiArICogdGhhdCB0aGUgaW50ZXJy dXB0IG11c3QgYmUgbWFudWFsbHkgY2hlY2tlZCBmb3IgYWZ0ZXIgYmVpbmcgZW5hYmxlZC4KPj4g KyAqLwo+PiArc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4+ICAgewo+PiAtICAgIC8qIEludGVycnVwdCBkcml2ZW4g ZmVuY2VzIGFyZSBub3QgaW1wbGVtZW50ZWQgeWV0LiovCj4+IC0gICAgV0FSTih0cnVlLCAiVGhp cyBzaG91bGQgbm90IGJlIGNhbGxlZCEiKTsKPj4gLSAgICByZXR1cm4gdHJ1ZTsKPj4gKyAgICAv Kgo+PiArICAgICAqIEFsd2F5cyBlbmFibGUgc2lnbmFsIHByb2Nlc3NpbmcgZm9yIHRoZSByZXF1 ZXN0J3MgZmVuY2Ugb2JqZWN0Cj4+ICsgICAgICogYmVmb3JlIHRoYXQgcmVxdWVzdCBpcyBzdWJt aXR0ZWQgdG8gdGhlIGhhcmR3YXJlLiBUaHVzIHRoZXJlIGlzIG5vCj4+ICsgICAgICogcmFjZSBj b25kaXRpb24gd2hlcmVieSB0aGUgaW50ZXJydXB0IGNvdWxkIHBvcCBvdXQgYmVmb3JlIHRoZQo+ PiArICAgICAqIHJlcXVlc3QgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHNpZ25hbCBsaXN0LiBIZW5j ZSBubyBuZWVkIHRvIGNoZWNrCj4+ICsgICAgICogZm9yIGNvbXBsZXRpb24sIHVuZG8gdGhlIGxp c3QgYWRkIGFuZCByZXR1cm4gZmFsc2UuCj4+ICsgICAgICovCj4+ICsgICAgaTkxNV9nZW1fcmVx dWVzdF9yZWZlcmVuY2UocmVxKTsKPj4gKyAgICBzcGluX2xvY2tfaXJxKCZyZXEtPmVuZ2luZS0+ ZmVuY2VfbG9jayk7Cj4+ICsgICAgV0FSTl9PTighbGlzdF9lbXB0eSgmcmVxLT5zaWduYWxfbGlu aykpOwo+PiArICAgIGxpc3RfYWRkX3RhaWwoJnJlcS0+c2lnbmFsX2xpbmssICZyZXEtPmVuZ2lu ZS0+ZmVuY2Vfc2lnbmFsX2xpc3QpOwo+PiArICAgIHNwaW5fdW5sb2NrX2lycSgmcmVxLT5lbmdp bmUtPmZlbmNlX2xvY2spOwo+PiArCj4+ICsgICAgLyoKPj4gKyAgICAgKiBOQjogSW50ZXJydXB0 cyBhcmUgb25seSBlbmFibGVkIG9uIGRlbWFuZC4gVGh1cyB0aGVyZSBpcyBzdGlsbCBhCj4+ICsg ICAgICogcmFjZSB3aGVyZSB0aGUgcmVxdWVzdCBjb3VsZCBjb21wbGV0ZSBiZWZvcmUgdGhlIGlu dGVycnVwdCBoYXMKPj4gKyAgICAgKiBiZWVuIGVuYWJsZWQuIFRodXMgY2FyZSBtdXN0IGJlIHRh a2VuIGF0IHRoYXQgcG9pbnQuCj4+ICsgICAgICovCj4+ICsKPj4gKyAgICAvKiBIYXZlIGludGVy cnVwdHMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZD8gKi8KPj4gKyAgICBpZiAocmVxLT5zaWduYWxf cmVxdWVzdGVkKQo+PiArICAgICAgICBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9pbnRlcnJ1cHQo cmVxLCBmYWxzZSk7Cj4KPiBJIGFtIHRoaW5raW5nIHRoYXQgdGhlIGZlbmNlIGxvY2sgY291bGQg YmUgaGVsZCBoZXJlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uIGFuZCBpbiBzdWNoIHdh eSBpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9pbnRlcnJ1cHQgd291bGQgbm90IG5lZWQgdGhlIGZl bmNlX2xvY2tlZCBwYXJhbWV0ZXIgYW55IG1vcmUuCj4KPiBJdCB3b3VsZCBwcm9iYWJseSBhbHNv IGJlIHNhZmVyIHdpdGggcmVnYXJkcyB0byBhY2Nlc2luZyB0aGUgcmVxLT5zaWduYWxfcmVxdWVz dGVkLiBJIGFtIG5vdCBzdXJlIHRoYXQgZW5hYmxlIHNpZ25hbGxpbmcgYW5kIHRoaXMgb3RoZXJ3 aXNlIGNhbid0IHJhY2UgYW5kIG1pc3MgdGhlIHNpZ25hbF9yZXF1ZXN0ZWQgZ2V0dGluZyBzZXQ/ Cj4KPj4gK30KPj4gKwo+PiArLyoKPj4gKyAqIFRoZSByZXF1ZXN0IGlzIGJlaW5nIGFjdGl2ZWx5 IHdhaXRlZCBvbiwgc28gZW5hYmxlIGludGVycnVwdCBiYXNlZAo+PiArICogY29tcGxldGlvbiBz aWduYWxsaW5nLgo+PiArICovCj4+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX2ludGVy cnVwdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBmZW5jZV9sb2NrZWQpCj4+ICt7Cj4+ICsgICAgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5lbmdpbmUtPmk5MTU7Cj4+ICsgICAgY29uc3QgYm9v bCBpcnFfdGVzdF9pbl9wcm9ncmVzcyA9Cj4+ICsgICAgICAgIEFDQ0VTU19PTkNFKGRldl9wcml2 LT5ncHVfZXJyb3IudGVzdF9pcnFfcmluZ3MpICYKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGludGVsX2VuZ2luZV9mbGFnKHJlcS0+ZW5naW5lKTsKPj4gKwo+PiArICAgIGlmIChyZXEtPmly cV9lbmFibGVkKQo+PiArICAgICAgICByZXR1cm47Cj4+ICsKPj4gKyAgICBpZiAoaXJxX3Rlc3Rf aW5fcHJvZ3Jlc3MpCj4+ICsgICAgICAgIHJldHVybjsKPj4gKwo+PiArICAgIGlmICghV0FSTl9P TighcmVxLT5lbmdpbmUtPmlycV9nZXQocmVxLT5lbmdpbmUpKSkKPj4gKyAgICAgICAgcmVxLT5p cnFfZW5hYmxlZCA9IHRydWU7Cj4KPiBUaGUgZG91YmxlIG5lZ2F0aW9uIGNvbmZ1c2VkIG1lIGEg Yml0LiBJdCBpcyBwcm9iYWJseSBub3QgaWRlYWwgc2luY2UgV0FSTl9PTnMgZ28gdG8gdGhlIG91 dCBvZiBsaW5lIHNlY3Rpb24gc28gaW4gYSB3YXkgaXQgaXMgZGVsaWJlcmF0ZWx5IHBlbmFsaXNp bmcgdGhlIGZhc3QgYW5kIGV4cGVjdGVkIHBhdGguIEkgdGhpbmsgaXQgd291bGQgYmUgYmV0dGVy IHRvIHB1dCBhIFdBUk4gb24gdGhlIGVsc2UgcGF0aC4KPgo+PiArCj4+ICsgICAgLyoKPj4gKyAg ICAgKiBCZWNhdXNlIHRoZSBpbnRlcnJ1cHQgaXMgb25seSBlbmFibGVkIG9uIGRlbWFuZCwgdGhl cmUgaXMgYSByYWNlCj4+ICsgICAgICogd2hlcmUgdGhlIGludGVycnVwdCBjYW4gZmlyZSBiZWZv cmUgYW55b25lIGlzIGxvb2tpbmcgZm9yIGl0LiBTbwo+PiArICAgICAqIGRvIGFuIGV4cGxpY2l0 IGNoZWNrIGZvciBtaXNzZWQgaW50ZXJydXB0cy4KPj4gKyAgICAgKi8KPj4gKyAgICBpOTE1X2dl bV9yZXF1ZXN0X25vdGlmeShyZXEtPmVuZ2luZSwgZmVuY2VfbG9ja2VkKTsKPj4gICB9Cj4+Cj4+ IC1zdGF0aWMgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZChzdHJ1Y3QgZmVuY2Ug KnJlcV9mZW5jZSkKPj4gK3N0YXRpYyBib29sIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25h bGluZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPj4gICB7Cj4+ICAgICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gY29udGFpbmVyX29mKHJlcV9mZW5jZSwKPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZW9mKCpyZXEpLCBmZW5jZSk7Cj4+ICsKPj4gKyAgICAv Kgo+PiArICAgICAqIE5vIG5lZWQgdG8gYWN0dWFsbHkgZW5hYmxlIGludGVycnVwdCBiYXNlZCBw cm9jZXNzaW5nIHVudGlsIHRoZQo+PiArICAgICAqIHJlcXVlc3QgaGFzIGJlZW4gc3VibWl0dGVk IHRvIHRoZSBoYXJkd2FyZS4gQXQgd2hpY2ggcG9pbnQKPj4gKyAgICAgKiAnaTkxNV9nZW1fcmVx dWVzdF9zdWJtaXQoKScgaXMgY2FsbGVkLiBTbyBvbmx5IHJlYWxseSBlbmFibGUKPj4gKyAgICAg KiBzaWduYWxsaW5nIGluIHRoZXJlLiBKdXN0IHNldCBhIGZsYWcgdG8gc2F5IHRoYXQgaW50ZXJy dXB0cyBhcmUKPj4gKyAgICAgKiB3YW50ZWQgd2hlbiB0aGUgcmVxdWVzdCBpcyBldmVudHVhbGx5 IHN1Ym1pdHRlZC4gT24gdGhlIG90aGVyIGhhbmQKPj4gKyAgICAgKiBpZiB0aGUgcmVxdWVzdCBo YXMgYWxyZWFkeSBiZWVuIHN1Ym1pdHRlZCB0aGVuIGludGVycnVwdHMgZG8gbmVlZAo+PiArICAg ICAqIHRvIGJlIGVuYWJsZWQgbm93Lgo+PiArICAgICAqLwo+PiArCj4+ICsgICAgcmVxLT5zaWdu YWxfcmVxdWVzdGVkID0gdHJ1ZTsKPj4gKwo+PiArICAgIGlmICghbGlzdF9lbXB0eSgmcmVxLT5z aWduYWxfbGluaykpCj4KPiBJbiB3aGF0IHNjZW5hcmlvcyBpcyB0aGUgbGlzdF9lbXB0eSBjaGVj ayBuZWVkZWQ/IFNvbWVvbmUgY2FuIHNvbWVob3cgZW5hYmxlIHNpZ25hbGxpbmcgb24gYSBmZW5j ZSBub3QgeWV0IHN1Ym1pdHRlZD8KPj4gKyAgICAgICAgaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVf aW50ZXJydXB0KHJlcSwgdHJ1ZSk7Cj4+ICsKPj4gKyAgICByZXR1cm4gdHJ1ZTsKPj4gK30KPj4g Kwo+PiArLyoqCj4+ICsgKiBpOTE1X2dlbV9yZXF1ZXN0X3dvcmtlciAtIHJlcXVlc3Qgd29yayBo YW5kbGVyIGNhbGxiYWNrLgo+PiArICogQHdvcms6IFdvcmsgc3RydWN0dXJlCj4+ICsgKiBDYWxs ZWQgaW4gcmVzcG9uc2UgdG8gYSBzZXFubyBpbnRlcnJ1cHQgdG8gcHJvY2VzcyB0aGUgY29tcGxl dGVkIHJlcXVlc3RzLgo+PiArICovCj4+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rfd29ya2VyKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4gK3sKPj4gKyAgICBzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7Cj4+ICsKPj4gKyAgICBlbmdpbmUgPSBjb250YWluZXJfb2Yod29yaywgc3Ry dWN0IGludGVsX2VuZ2luZV9jcywgcmVxdWVzdF93b3JrKTsKPj4gKyAgICBpOTE1X2dlbV9yZXF1 ZXN0X25vdGlmeShlbmdpbmUsIGZhbHNlKTsKPj4gK30KPj4gKwo+PiArdm9pZCBpOTE1X2dlbV9y ZXF1ZXN0X25vdGlmeShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIGJvb2wgZmVuY2Vf bG9ja2VkKQo+PiArewo+PiArICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCAq cmVxX25leHQ7Cj4+ICsgICAgdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gICAgICAgdTMyIHNlcW5v Owo+Pgo+PiAtICAgIHNlcW5vID0gcmVxLT5lbmdpbmUtPmdldF9zZXFubyhyZXEtPmVuZ2luZSk7 Cj4+ICsgICAgaWYgKGxpc3RfZW1wdHkoJmVuZ2luZS0+ZmVuY2Vfc2lnbmFsX2xpc3QpKQo+Cj4g T2theSB0aGlzIHdpdGhvdXQgdGhlIGxvY2sgc3RpbGwgbWFrZXMgbWUgbmVydm91cy4gSSdkIHJh dGhlciBub3QgaGF2aW5nIHRvIHRoaW5rIGFib3V0IHdoeSBpdCBpcyBzYWZlIGFuZCBjYW4ndCBt aXNzIGEgd2FrZXVwLgo+Cj4gQWxzbyBJIHdvdWxkIGJlIGxlYW5pbmcgdG93YXJkIGhhdmluZyBp OTE1X2dlbV9yZXF1ZXN0X25vdGlmeSBhbmQgaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnlfX3VubG9j a2VkLiBXaXRoIHRoZSBlbmFibGVfaW50ZXJydXB0cyBzaW1wbGlmaWNhdGlvbiBJIHN1Z2dlc3Rl ZCBpdCB0aGluayBpdCB3b3VsZCBsb29rIGJldHRlciBhbmQgYmUgbW9yZSBjb25zaXN0ZW50IHdp dGggdGhlIHJlc3Qgb2YgdGhlIGRyaXZlci4KPgo+PiArICAgICAgICByZXR1cm47Cj4+ICsKPj4g KyAgICBpZiAoIWZlbmNlX2xvY2tlZCkKPj4gKyAgICAgICAgc3Bpbl9sb2NrX2lycXNhdmUoJmVu Z2luZS0+ZmVuY2VfbG9jaywgZmxhZ3MpOwo+Cj4gTm90IGNhbGxlZCBmcm9tIGhhcmQgaXJxIGNv bnRleHQgc28gY2FuIGJlIGp1c3Qgc3Bpbl9sb2NrX2lycS4KPgo+IEJ1dCBpZiB5b3UgYWdyZWUg dG8gZ28gd2l0aCB0aGUgdGFza2xldCBpdCB3b3VsZCB0aGVuIGJlIHNwaW5fbG9ja19iaC4KZmVu Y2UgaXMgYWx3YXlzIHNwaW5fbG9ja19pcnEsIGlmIHRoaXMgcmVxdWlyZXMgX2JoIHRoZW4gaXQg Y2FuJ3QgZ28gaW50byB0aGUgdGFza2xldC4KPj4KPj4gLSAgICByZXR1cm4gaTkxNV9zZXFub19w YXNzZWQoc2Vxbm8sIHJlcS0+c2Vxbm8pOwo+PiArICAgIGlmIChlbmdpbmUtPmlycV9zZXFub19i YXJyaWVyKQo+PiArICAgICAgICBlbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKGVuZ2luZSk7Cj4+ ICsgICAgc2Vxbm8gPSBlbmdpbmUtPmdldF9zZXFubyhlbmdpbmUpOwo+PiArCj4+ICsgICAgbGlz dF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcSwgcmVxX25leHQsICZlbmdpbmUtPmZlbmNlX3NpZ25h bF9saXN0LCBzaWduYWxfbGluaykgewo+PiArICAgICAgICBpZiAoIXJlcS0+Y2FuY2VsbGVkKSB7 Cj4+ICsgICAgICAgICAgICBpZiAoIWk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLCByZXEtPnNlcW5v KSkKPj4gKyAgICAgICAgICAgICAgICBicmVhazsKPgo+IE1lcmdlIHRvIG9uZSBpZiBzdGF0ZW1l bnQ/Cj4KPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIC8qCj4+ICsgICAgICAgICAqIFN0 YXJ0IGJ5IHJlbW92aW5nIHRoZSBmZW5jZSBmcm9tIHRoZSBzaWduYWwgbGlzdCBvdGhlcndpc2UK Pj4gKyAgICAgICAgICogdGhlIHJldGlyZSBjb2RlIGNhbiBydW4gY29uY3VycmVudGx5IGFuZCBn ZXQgY29uZnVzZWQuCj4+ICsgICAgICAgICAqLwo+PiArICAgICAgICBsaXN0X2RlbF9pbml0KCZy ZXEtPnNpZ25hbF9saW5rKTsKPj4gKwo+PiArICAgICAgICBpZiAoIXJlcS0+Y2FuY2VsbGVkKQo+ PiArICAgICAgICAgICAgZmVuY2Vfc2lnbmFsX2xvY2tlZCgmcmVxLT5mZW5jZSk7Cj4KPiBJIGZv cmdvdCBob3cgc2lnbmFsbGluZyBlcnJvcnMgdG8gdXNlcnNwYWNlIHdvcmtzPyBEb2VzIHRoYXQg c3RpbGwgd29yayBmb3IgY2FuY2VsbGVkIGZlbmNlcyBpbiB0aGlzIHNlcmllcz8KPgo+PiArCj4+ ICsgICAgICAgIGlmIChyZXEtPmlycV9lbmFibGVkKSB7Cj4+ICsgICAgICAgICAgICByZXEtPmVu Z2luZS0+aXJxX3B1dChyZXEtPmVuZ2luZSk7Cj4+ICsgICAgICAgICAgICByZXEtPmlycV9lbmFi bGVkID0gZmFsc2U7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAgICBpOTE1X2dlbV9yZXF1 ZXN0X3VucmVmZXJlbmNlKHJlcSk7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgaWYgKCFmZW5jZV9s b2NrZWQpCj4+ICsgICAgICAgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+ZmVuY2Vf bG9jaywgZmxhZ3MpOwo+PiAgIH0KPj4KPj4gICBzdGF0aWMgY29uc3QgY2hhciAqaTkxNV9nZW1f cmVxdWVzdF9nZXRfZHJpdmVyX25hbWUoc3RydWN0IGZlbmNlICpyZXFfZmVuY2UpCj4+IEBAIC0y ODE2LDcgKzMwMDUsNiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZlbmNlX3ZhbHVl X3N0cihzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSwKPj4KPj4gICBzdGF0aWMgY29uc3Qgc3RydWN0 IGZlbmNlX29wcyBpOTE1X2dlbV9yZXF1ZXN0X2ZvcHMgPSB7Cj4+ICAgICAgIC5lbmFibGVfc2ln bmFsaW5nICAgID0gaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVfc2lnbmFsaW5nLAo+PiAtICAgIC5z aWduYWxlZCAgICAgICAgPSBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZCwKPj4gICAgICAg LndhaXQgICAgICAgICAgICA9IGZlbmNlX2RlZmF1bHRfd2FpdCwKPj4gICAgICAgLnJlbGVhc2Ug ICAgICAgID0gaTkxNV9nZW1fcmVxdWVzdF9mcmVlLAo+PiAgICAgICAuZ2V0X2RyaXZlcl9uYW1l ICAgID0gaTkxNV9nZW1fcmVxdWVzdF9nZXRfZHJpdmVyX25hbWUsCj4+IEBAIC0yOTAyLDYgKzMw OTAsNyBAQCBfX2k5MTVfZ2VtX3JlcXVlc3RfYWxsb2Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAo+PiAgICAgICByZXEtPmN0eCAgPSBjdHg7Cj4+ICAgICAgIGk5MTVfZ2VtX2NvbnRl eHRfcmVmZXJlbmNlKHJlcS0+Y3R4KTsKPj4KPj4gKyAgICBJTklUX0xJU1RfSEVBRCgmcmVxLT5z aWduYWxfbGluayk7Cj4+ICAgICAgIGZlbmNlX2luaXQoJnJlcS0+ZmVuY2UsICZpOTE1X2dlbV9y ZXF1ZXN0X2ZvcHMsICZlbmdpbmUtPmZlbmNlX2xvY2ssCj4+ICAgICAgICAgICAgICBjdHgtPmVu Z2luZVtlbmdpbmUtPmlkXS5mZW5jZV90aW1lbGluZS5mZW5jZV9jb250ZXh0LAo+PiAgICAgICAg ICAgICAgaTkxNV9mZW5jZV90aW1lbGluZV9nZXRfbmV4dF9zZXFubygmY3R4LT5lbmdpbmVbZW5n aW5lLT5pZF0uZmVuY2VfdGltZWxpbmUpKTsKPj4gQEAgLTMwMzYsNiArMzIyNSwxMyBAQCBzdGF0 aWMgdm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmVfY2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4+ICAgICAgICAgICBpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZShyZXF1 ZXN0KTsKPj4gICAgICAgfQo+Pgo+PiArICAgIC8qCj4+ICsgICAgICogVGlkeSB1cCBhbnl0aGlu ZyBsZWZ0IG92ZXIuIFRoaXMgaW5jbHVkZXMgYSBjYWxsIHRvCj4+ICsgICAgICogaTkxNV9nZW1f cmVxdWVzdF9ub3RpZnkoKSB3aGljaCB3aWxsIG1ha2Ugc3VyZSB0aGF0IGFueSByZXF1ZXN0cwo+ PiArICAgICAqIHRoYXQgd2VyZSBvbiB0aGUgc2lnbmFsIHBlbmRpbmcgbGlzdCBnZXQgYWxzbyBj bGVhbmVkIHVwLgo+PiArICAgICAqLwo+PiArICAgIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19y aW5nKGVuZ2luZSk7Cj4KPiBIbW0uLiBidXQgdGhpcyBmdW5jdGlvbiBoYXMganVzdCB3YWxrZWQg dGhlIHNhbWUgbGlzdHMgdGhpcyB3aWxsLCBhbmQgZG9uZSB0aGUgc2FtZSBwcm9jZXNzaW5nLiBX aHkgY2FsbCB0aGlzIGZyb20gaGVyZT8gSXQgbG9va3MgYmFkIHRvIG1lLCB0aGUgdHdvIGFyZSBk aWZmZXJlbnQgc3BlY2lhbCBjYXNlcyBvZiB0aGUgc2ltaWxhciB0aGluZyBzbyBJIGNhbid0IHNl ZSB0aGF0IGNhbGxpbmcgdGhpcyBmcm9tIGhlcmUgbWFrZXMgc2Vuc2UuCj4KPj4gKwo+PiAgICAg ICAvKiBIYXZpbmcgZmx1c2hlZCBhbGwgcmVxdWVzdHMgZnJvbSBhbGwgcXVldWVzLCB3ZSBrbm93 IHRoYXQgYWxsCj4+ICAgICAgICAqIHJpbmdidWZmZXJzIG11c3Qgbm93IGJlIGVtcHR5LiBIb3dl dmVyLCBzaW5jZSB3ZSBkbyBub3QgcmVjbGFpbQo+PiAgICAgICAgKiBhbGwgc3BhY2Ugd2hlbiBy ZXRpcmluZyB0aGUgcmVxdWVzdCAodG8gcHJldmVudCBIRUFEcyBjb2xsaWRpbmcKPj4gQEAgLTMw ODIsNiArMzI3OCwxMyBAQCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICAgewo+PiAgICAgICBXQVJOX09OKGk5MTVfdmVyaWZ5 X2xpc3RzKGVuZ2luZS0+ZGV2KSk7Cj4+Cj4+ICsgICAgLyoKPj4gKyAgICAgKiBJZiBuby1vbmUg aGFzIHdhaXRlZCBvbiBhIHJlcXVlc3QgcmVjZW50bHkgdGhlbiBpbnRlcnJ1cHRzIHdpbGwKPj4g KyAgICAgKiBub3QgaGF2ZSBiZWVuIGVuYWJsZWQgYW5kIHRodXMgbm8gcmVxdWVzdHMgd2lsbCBl dmVyIGJlIG1hcmtlZCBhcwo+PiArICAgICAqIGNvbXBsZXRlZC4gU28gZG8gYW4gaW50ZXJydXB0 IGNoZWNrIG5vdy4KPj4gKyAgICAgKi8KPj4gKyAgICBpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShl bmdpbmUsIGZhbHNlKTsKPgo+IFdvdWxkIGl0IHdvcmsgdG8gc2lnbmFsIHRoZSBmZW5jZSBmcm9t IHRoZSBleGlzdGluZyBsb29wIGEgYml0IGFib3ZlIGluIHRoaXMgZnVuY3Rpb24gd2hpY2ggYWxy ZWFkeSB3YWxrcyB0aGUgcmVxdWVzdCBsaXN0IGluIHNlYXJjaCBmb3IgY29tcGxldGVkIG9uZXM/ IE9yIG1heWJlIGV2ZW4gaW4gaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmU/Cj4KPiBJIGFtIHRoaW5r aW5nIGFib3V0IGRvaW5nIGxlc3MgbGlzdCB3YWxraW5nIGFuZCBiZXR0ZXIgaW50ZWdyYXRpb24g d2l0aCB0aGUgY29yZSBHRU0uIERvd25zaWRlIHdvdWxkIGJlIG1vcmUgdHJhZmZpYyBvbiB0aGUg ZmVuY2VfbG9jaywgaG1tLi4gbm90IHN1cmUgdGhlbi4gSXQganVzdCBsb29rcyBhIGJpdCBib2x0 ZWQgb24gbGlrZSB0aGlzLgo+Cj4gSSBkb24ndCBzZWUgaXQgYmVpbmcgYSBub3RpY2VhYmxlIGNv c3Qgc28gcGVyaGFwcyBpdCBjYW4gc3RheSBsaWtlIHRoaXMgZm9yIG5vdy4KPgo+PiArCj4+ICAg ICAgIC8qIFJldGlyZSByZXF1ZXN0cyBmaXJzdCBhcyB3ZSB1c2UgaXQgYWJvdmUgZm9yIHRoZSBl YXJseSByZXR1cm4uCj4+ICAgICAgICAqIElmIHdlIHJldGlyZSByZXF1ZXN0cyBsYXN0LCB3ZSBt YXkgdXNlIGEgbGF0ZXIgc2Vxbm8gYW5kIHNvIGNsZWFyCj4+ICAgICAgICAqIHRoZSByZXF1ZXN0 cyBsaXN0cyB3aXRob3V0IGNsZWFyaW5nIHRoZSBhY3RpdmUgbGlzdCwgbGVhZGluZyB0bwo+PiBA QCAtNTEwMiw2ICs1MzA1LDcgQEAgaW5pdF9lbmdpbmVfbGlzdHMoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+PiAgIHsKPj4gICAgICAgSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+YWN0 aXZlX2xpc3QpOwo+PiAgICAgICBJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5yZXF1ZXN0X2xpc3Qp Owo+PiArICAgIElOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmZlbmNlX3NpZ25hbF9saXN0KTsKPj4g ICB9Cj4+Cj4+ICAgdm9pZAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPj4gaW5kZXggZjc4MDQy MS4uYTg3YTNjNSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4+IEBAIC05OTQsNiAr OTk0LDggQEAgc3RhdGljIHZvaWQgbm90aWZ5X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+PiAgICAgICB0cmFjZV9pOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShlbmdpbmUpOwo+ PiAgICAgICBlbmdpbmUtPnVzZXJfaW50ZXJydXB0cysrOwo+Pgo+PiArICAgIHF1ZXVlX3dvcmso ZW5naW5lLT5pOTE1LT5yZXFfd3EsICZlbmdpbmUtPnJlcXVlc3Rfd29yayk7Cj4+ICsKPj4gICAg ICAgd2FrZV91cF9hbGwoJmVuZ2luZS0+aXJxX3F1ZXVlKTsKPgo+IFllcyB0aGF0IGlzIHRoZSB3 ZWlyZCBwYXJ0LCB3aHkgdGhlIGVuZ2luZS0+aXJxX3F1ZXVlIGhhcyB0byByZW1haW4gd2l0aCB0 aGlzIHBhdGNoPwo+Cj4+ICAgfQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiBpbmRl eCBmMTI2YmNiLi4xMzQ3NTlkIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+PiBA QCAtMTg3OSw2ICsxODc5LDggQEAgdm9pZCBpbnRlbF9sb2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+Cj4+ICAgICAgIGRldl9wcml2ID0gZW5naW5l LT5pOTE1Owo+Pgo+PiArICAgIGNhbmNlbF93b3JrX3N5bmMoJmVuZ2luZS0+cmVxdWVzdF93b3Jr KTsKPj4gKwo+PiAgICAgICBpZiAoZW5naW5lLT5idWZmZXIpIHsKPj4gICAgICAgICAgIGludGVs X2xvZ2ljYWxfcmluZ19zdG9wKGVuZ2luZSk7Cj4+ICAgICAgICAgICBXQVJOX09OKChJOTE1X1JF QURfTU9ERShlbmdpbmUpICYgTU9ERV9JRExFKSA9PSAwKTsKPj4gQEAgLTIwMjcsNiArMjAyOSw3 IEBAIGxvZ2ljYWxfcmluZ19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIGludGVs X2VuZ2luZV9pZCBpZCkKPj4KPj4gICAgICAgSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+YWN0aXZl X2xpc3QpOwo+PiAgICAgICBJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5yZXF1ZXN0X2xpc3QpOwo+ PiArICAgIElOSVRfTElTVF9IRUFEKCZlbmdpbmUtPmZlbmNlX3NpZ25hbF9saXN0KTsKPj4gICAg ICAgSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+YnVmZmVycyk7Cj4+ICAgICAgIElOSVRfTElTVF9I RUFEKCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsKPj4gICAgICAgc3Bpbl9sb2NrX2luaXQoJmVu Z2luZS0+ZXhlY2xpc3RfbG9jayk7Cj4+IEBAIC0yMDM1LDYgKzIwMzgsOCBAQCBsb2dpY2FsX3Jp bmdfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQp Cj4+ICAgICAgIHRhc2tsZXRfaW5pdCgmZW5naW5lLT5pcnFfdGFza2xldCwKPj4gICAgICAgICAg ICAgICAgaW50ZWxfbHJjX2lycV9oYW5kbGVyLCAodW5zaWduZWQgbG9uZyllbmdpbmUpOwo+Pgo+ PiArICAgIElOSVRfV09SSygmZW5naW5lLT5yZXF1ZXN0X3dvcmssIGk5MTVfZ2VtX3JlcXVlc3Rf d29ya2VyKTsKPj4gKwo+PiAgICAgICBsb2dpY2FsX3JpbmdfaW5pdF9wbGF0Zm9ybV9pbnZhcmlh bnRzKGVuZ2luZSk7Cj4+ICAgICAgIGxvZ2ljYWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhlbmdpbmUp Owo+PiAgICAgICBsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKGVuZ2luZSwgaW5mby0+aXJxX3No aWZ0KTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+PiBpbmRleCBm YmQzZjEyLi4xNjQxMDk2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCj4+IEBAIC0yMjU0LDYgKzIyNTQsNyBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmlu Z19idWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gICAgICAgSU5JVF9MSVNUX0hFQUQo JmVuZ2luZS0+cmVxdWVzdF9saXN0KTsKPj4gICAgICAgSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ ZXhlY2xpc3RfcXVldWUpOwo+PiAgICAgICBJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5idWZmZXJz KTsKPj4gKyAgICBJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5mZW5jZV9zaWduYWxfbGlzdCk7Cj4+ ICAgICAgIHNwaW5fbG9ja19pbml0KCZlbmdpbmUtPmZlbmNlX2xvY2spOwo+PiAgICAgICBpOTE1 X2dlbV9iYXRjaF9wb29sX2luaXQoZGV2LCAmZW5naW5lLT5iYXRjaF9wb29sKTsKPj4gICAgICAg bWVtc2V0KGVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm8sIDAsCj4+IEBAIC0yMjYxLDYgKzIy NjIsOCBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPj4KPj4gICAgICAgaW5pdF93YWl0cXVldWVfaGVhZCgmZW5naW5lLT5pcnFfcXVl dWUpOwo+Pgo+PiArICAgIElOSVRfV09SSygmZW5naW5lLT5yZXF1ZXN0X3dvcmssIGk5MTVfZ2Vt X3JlcXVlc3Rfd29ya2VyKTsKPj4gKwo+PiAgICAgICByaW5nYnVmID0gaW50ZWxfZW5naW5lX2Ny ZWF0ZV9yaW5nYnVmZmVyKGVuZ2luZSwgMzIgKiBQQUdFX1NJWkUpOwo+PiAgICAgICBpZiAoSVNf RVJSKHJpbmdidWYpKSB7Cj4+ICAgICAgICAgICByZXQgPSBQVFJfRVJSKHJpbmdidWYpOwo+PiBA QCAtMjMwNyw2ICsyMzEwLDggQEAgdm9pZCBpbnRlbF9jbGVhbnVwX2VuZ2luZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+Cj4+ICAgICAgIGRldl9wcml2ID0gZW5naW5lLT5pOTE1 Owo+Pgo+PiArICAgIGNhbmNlbF93b3JrX3N5bmMoJmVuZ2luZS0+cmVxdWVzdF93b3JrKTsKPj4g Kwo+PiAgICAgICBpZiAoZW5naW5lLT5idWZmZXIpIHsKPj4gICAgICAgICAgIGludGVsX3N0b3Bf ZW5naW5lKGVuZ2luZSk7Cj4+ICAgICAgICAgICBXQVJOX09OKCFJU19HRU4yKGRldl9wcml2KSAm JiAoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkgPT0gMCk7Cj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPj4gaW5kZXggM2YzOWRhZi4uNTE3NzliNCAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+PiBAQCAtMzQ3 LDYgKzM0Nyw5IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mgewo+PiAgICAgICB1MzIgKCpnZXRf Y21kX2xlbmd0aF9tYXNrKSh1MzIgY21kX2hlYWRlcik7Cj4+Cj4+ICAgICAgIHNwaW5sb2NrX3Qg ZmVuY2VfbG9jazsKPj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZlbmNlX3NpZ25hbF9saXN0Owo+ PiArCj4+ICsgICAgc3RydWN0IHdvcmtfc3RydWN0IHJlcXVlc3Rfd29yazsKPj4gICB9Owo+Pgo+ PiAgIHN0YXRpYyBpbmxpbmUgYm9vbCAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=