From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v9 4/6] drm/i915: Interrupt driven fences Date: Thu, 2 Jun 2016 14:25:51 +0100 Message-ID: <575033DF.9010800@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 845CB6EB80 for ; Thu, 2 Jun 2016 13:26:19 +0000 (UTC) In-Reply-To: <1464800848-36672-5-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAxLzA2LzE2IDE4OjA3LCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3RlOgo+IEZy b206IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+Cj4KPiBUaGUgaW50 ZW5kZWQgdXNhZ2UgbW9kZWwgZm9yIHN0cnVjdCBmZW5jZSBpcyB0aGF0IHRoZSBzaWduYWxsZWQg c3RhdHVzCj4gc2hvdWxkIGJlIHNldCBvbiBkZW1hbmQgcmF0aGVyIHRoYW4gcG9sbGVkLiBUaGF0 IGlzLCB0aGVyZSBzaG91bGQgbm90Cj4gYmUgYSBuZWVkIGZvciBhICdzaWduYWxlZCcgZnVuY3Rp b24gdG8gYmUgY2FsbGVkIGV2ZXJ5dGltZSB0aGUgc3RhdHVzCj4gaXMgcXVlcmllZC4gSW5zdGVh ZCwgJ3NvbWV0aGluZycgc2hvdWxkIGJlIGRvbmUgdG8gZW5hYmxlIGEgc2lnbmFsCj4gY2FsbGJh Y2sgZnJvbSB0aGUgaGFyZHdhcmUgd2hpY2ggd2lsbCB1cGRhdGUgdGhlIHN0YXRlIGRpcmVjdGx5 LiBJbgo+IHRoZSBjYXNlIG9mIHJlcXVlc3RzLCB0aGlzIGlzIHRoZSBzZXFubyB1cGRhdGUgaW50 ZXJydXB0LiBUaGUgaWRlYSBpcwo+IHRoYXQgdGhpcyBjYWxsYmFjayB3aWxsIG9ubHkgYmUgZW5h YmxlZCBvbiBkZW1hbmQgd2hlbiBzb21ldGhpbmcKPiBhY3R1YWxseSB0cmllcyB0byB3YWl0IG9u IHRoZSBmZW5jZS4KPgo+IFRoaXMgY2hhbmdlIHJlbW92ZXMgdGhlIHBvbGxpbmcgdGVzdCBhbmQg cmVwbGFjZXMgaXQgd2l0aCB0aGUgY2FsbGJhY2sKPiBzY2hlbWUuIEVhY2ggZmVuY2UgaXMgYWRk ZWQgdG8gYSAncGxlYXNlIHBva2UgbWUnIGxpc3QgYXQgdGhlIHN0YXJ0IG9mCj4gaTkxNV9hZGRf cmVxdWVzdCgpLiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgdGhlbiBzY2FucyB0aHJvdWdoIHRoZSAn cG9rZQo+IG1lJyBsaXN0IHdoZW4gYSBuZXcgc2Vxbm8gcG9wcyBvdXQgYW5kIHNpZ25hbHMgYW55 IG1hdGNoaW5nCj4gZmVuY2UvcmVxdWVzdC4gVGhlIGZlbmNlIGlzIHRoZW4gcmVtb3ZlZCBmcm9t IHRoZSBsaXN0IHNvIHRoZSBlbnRpcmUKPiByZXF1ZXN0IHN0YWNrIGRvZXMgbm90IG5lZWQgdG8g YmUgc2Nhbm5lZCBldmVyeSB0aW1lLiBOb3RlIHRoYXQgdGhlCj4gZmVuY2UgaXMgYWRkZWQgdG8g dGhlIGxpc3QgYmVmb3JlIHRoZSBjb21tYW5kcyB0byBnZW5lcmF0ZSB0aGUgc2Vxbm8KPiBpbnRl cnJ1cHQgYXJlIGFkZGVkIHRvIHRoZSByaW5nLiBUaHVzIHRoZSBzZXF1ZW5jZSBpcyBndWFyYW50 ZWVkIHRvIGJlCj4gcmFjZSBmcmVlIGlmIHRoZSBpbnRlcnJ1cHQgaXMgYWxyZWFkeSBlbmFibGVk Lgo+Cj4gTm90ZSB0aGF0IHRoZSBpbnRlcnJ1cHQgaXMgb25seSBlbmFibGVkIG9uIGRlbWFuZCAo aS5lLiB3aGVuCj4gX193YWl0X3JlcXVlc3QoKSBpcyBjYWxsZWQpLiBUaHVzIHRoZXJlIGlzIHN0 aWxsIGEgcG90ZW50aWFsIHJhY2Ugd2hlbgo+IGVuYWJsaW5nIHRoZSBpbnRlcnJ1cHQgYXMgdGhl IHJlcXVlc3QgbWF5IGFscmVhZHkgaGF2ZSBjb21wbGV0ZWQuCj4gSG93ZXZlciwgdGhpcyBpcyBz aW1wbHkgc29sdmVkIGJ5IGNhbGxpbmcgdGhlIGludGVycnVwdCBwcm9jZXNzaW5nCj4gY29kZSBp bW1lZGlhdGVseSBhZnRlciBlbmFibGluZyB0aGUgaW50ZXJydXB0IGFuZCB0aGVyZWJ5IGNoZWNr aW5nIGZvcgo+IGFscmVhZHkgY29tcGxldGVkIHJlcXVlc3RzLgo+Cj4gTGFzdGx5LCB0aGUgcmlu ZyBjbGVhbiB1cCBjb2RlIGhhcyB0aGUgcG9zc2liaWxpdHkgdG8gY2FuY2VsCj4gb3V0c3RhbmRp bmcgcmVxdWVzdHMgKGUuZy4gYmVjYXVzZSBURFIgaGFzIHJlc2V0IHRoZSByaW5nKS4gVGhlc2UK PiByZXF1ZXN0cyB3aWxsIG5ldmVyIGdldCBzaWduYWxsZWQgYW5kIHNvIG11c3QgYmUgcmVtb3Zl ZCBmcm9tIHRoZQo+IHNpZ25hbCBsaXN0IG1hbnVhbGx5LiBUaGlzIGlzIGRvbmUgYnkgc2V0dGlu ZyBhICdjYW5jZWxsZWQnIGZsYWcgYW5kCj4gdGhlbiBjYWxsaW5nIHRoZSByZWd1bGFyIG5vdGlm eS9yZXRpcmUgY29kZSBwYXRoIHJhdGhlciB0aGFuCj4gYXR0ZW1wdGluZyB0byBkdXBsaWNhdGUg dGhlIGxpc3QgbWFuaXB1bGF0YXRpb24gYW5kIGNsZWFuIHVwIGNvZGUgaW4KPiBtdWx0aXBsZSBw bGFjZXMuIFRoaXMgYWxzbyBhdm9pZCBhbnkgcmFjZSBjb25kaXRpb24gd2hlcmUgdGhlCj4gY2Fu Y2VsbGF0aW9uIHJlcXVlc3QgbWlnaHQgb2NjdXIgYWZ0ZXIvZHVyaW5nIHRoZSBjb21wbGV0aW9u IGludGVycnVwdAo+IGFjdHVhbGx5IGFycml2aW5nLgo+Cj4gdjI6IFVwZGF0ZWQgdG8gdGFrZSBh ZHZhbnRhZ2Ugb2YgdGhlIHJlcXVlc3QgdW5yZWZlcmVuY2Ugbm8gbG9uZ2VyCj4gcmVxdWlyaW5n IHRoZSBtdXRleCBsb2NrLgo+Cj4gdjM6IE1vdmUgdGhlIHNpZ25hbCBsaXN0IHByb2Nlc3Npbmcg YXJvdW5kIHRvIHByZXZlbnQgdW5zdWJtaXR0ZWQKPiByZXF1ZXN0cyBiZWluZyBhZGRlZCB0byB0 aGUgbGlzdC4gVGhpcyB3YXMgb2NjdXJyaW5nIG9uIEFuZHJvaWQKPiBiZWNhdXNlIHRoZSBuYXRp dmUgc3luYyBpbXBsZW1lbnRhdGlvbiBjYWxscyB0aGUKPiBmZW5jZS0+ZW5hYmxlX3NpZ25hbGxp bmcgQVBJIGltbWVkaWF0ZWx5IG9uIGZlbmNlIGNyZWF0aW9uLgo+Cj4gVXBkYXRlZCBhZnRlciBy ZXZpZXcgY29tbWVudHMgYnkgVHZydGtvIFVyc3VsaW4uIFJlbmFtZWQgbGlzdCBub2RlcyB0bwo+ ICdsaW5rJyBpbnN0ZWFkIG9mICdsaXN0Jy4gQWRkZWQgc3VwcG9ydCBmb3IgcmV0dXJuaW5nIGFu IGVycm9yIGNvZGUgb24KPiBhIGNhbmNlbGxlZCBmZW5jZS4gVXBkYXRlIGxpc3QgcHJvY2Vzc2lu ZyB0byBiZSBtb3JlIGVmZmljaWVudC9zYWZlcgo+IHdpdGggcmVzcGVjdCB0byBzcGlubG9ja3Mu Cj4KPiB2NTogTWFkZSBpOTE1X2dlbV9yZXF1ZXN0X3N1Ym1pdCBhIHN0YXRpYyBhcyBpdCBpcyBv bmx5IGV2ZXIgY2FsbGVkCj4gZnJvbSBvbmUgcGxhY2UuCj4KPiBGaXhlZCB1cCB0aGUgbG93IGxh dGVuY3kgd2FpdCBvcHRpbWlzYXRpb24uIFRoZSB0aW1lIGRlbGF5IGJldHdlZW4gdGhlCj4gc2Vx bm8gdmFsdWUgYmVpbmcgdG8gbWVtb3J5IGFuZCB0aGUgZHJpdmUncyBJU1IgcnVubmluZyBjYW4g YmUKPiBzaWduaWZpY2FudCwgYXQgbGVhc3QgZm9yIHRoZSB3YWl0IHJlcXVlc3QgbWljcm8tYmVu Y2htYXJrLiBUaGlzIGNhbgo+IGJlIGdyZWF0bHkgaW1wcm92ZWQgYnkgZXhwbGljaXRseSBjaGVj a2luZyBmb3Igc2Vxbm8gdXBkYXRlcyBpbiB0aGUKPiBwcmUtd2FpdCBidXN5IHBvbGwgbG9vcC4g QWxzbyBhZGRlZCBzb21lIGRvY3VtZW50YXRpb24gY29tbWVudHMgdG8gdGhlCj4gYnVzeSBwb2xs IGNvZGUuCj4KPiBGaXhlZCB1cCBzdXBwb3J0IGZvciB0aGUgZmFraW5nIG9mIGxvc3QgaW50ZXJy dXB0cwo+ICh0ZXN0X2lycV9yaW5ncy9taXNzZWRfaXJxX3JpbmdzKS4gVGhhdCBpcywgdGhlcmUg aXMgYW4gSUdUIHRlc3QgdGhhdAo+IHRlbGxzIHRoZSBkcml2ZXIgdG8gbG9vc2UgaW50ZXJydXB0 cyBkZWxpYmVyYXRlbHkgYW5kIHRoZW4gY2hlY2sgdGhhdAo+IGV2ZXJ5dGhpbmcgc3RpbGwgd29y a3MgYXMgZXhwZWN0ZWQgKGFsYmVpdCBtdWNoIHNsb3dlcikuCj4KPiBVcGRhdGVzIGZyb20gcmV2 aWV3IGNvbW1lbnRzOiB1c2Ugbm9uIElSUS1zYXZlIHNwaW5sb2NraW5nLCBlYXJseSBleGl0Cj4g b24gV0FSTiBhbmQgaW1wcm92ZWQgY29tbWVudHMgKFR2cnRrbyBVcnN1bGluKS4KPgo+IHY2OiBV cGRhdGVkIHRvIG5ld2VyIG5pZ3RobHkgYW5kIHJlc29sdmVkIGNvbmZsaWN0cyBhcm91bmQgdGhl Cj4gd2FpdF9yZXF1ZXN0IGJ1c3kgc3BpbiBvcHRpbWlzYXRpb24uIEFsc28gZml4ZWQgYSByYWNl IGNvbmRpdGlvbgo+IGJldHdlZW4gdGhpcyBlYXJseSBleGl0IHBhdGggYW5kIHRoZSByZWd1bGFy IGNvbXBsZXRpb24gcGF0aC4KPgo+IHY3OiBVcGRhdGVkIHRvIG5ld2VyIG5pZ2h0bHkgLSBsb3Rz IG9mIHJpbmcgLT4gZW5naW5lIHJlbmFtaW5nIHBsdXMgYW4KPiBpbnRlcmZhY2UgY2hhbmdlIG9u IGdldF9zZXFubygpLiBBbHNvIGFkZGVkIGEgbGlzdF9lbXB0eSgpIGNoZWNrCj4gYmVmb3JlIGFj cXVyaW5nIHNwaW5sb2NrcyBhbmQgZG9pbmcgbGlzdCBwcm9jZXNzaW5nLgo+Cj4gdjg6IFVwZGF0 ZWQgdG8gbmV3ZXIgbmlnaHRseSAtIGNoYW5nZXMgdG8gcmVxdWVzdCBjbGVhbiB1cCBjb2RlIG1l YW4KPiBub24gb2YgdGhlIGRlZmVycmVkIGZyZWUgbWVzcyBpcyBuZWVkZWQgYW55IG1vcmUuCj4K PiB2OTogTW92ZWQgdGhlIHJlcXVlc3QgY29tcGxldGlvbiBwcm9jZXNzaW5nIG91dCBvZiB0aGUg aW50ZXJydXB0Cj4gaGFuZGxlciBhbmQgaW50byBhIHdvcmtlciB0aHJlYWQgKENocmlzIFdpbHNv bikuCj4KPiBGb3I6IFZJWi01MTkwCj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9o bi5DLkhhcnJpc29uQEludGVsLmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1 bGluQGludGVsLmNvbT4KPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1h LmMgICAgICAgICB8ICAgOSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgICAgIHwgIDExICsrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAg ICAgfCAyNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICB8ICAgMiArCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9scmMuYyAgICAgICAgfCAgIDUgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5jIHwgICA1ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaCB8ICAgMyArCj4gICA3IGZpbGVzIGNoYW5nZWQsIDI2MCBpbnNlcnRpb25z KCspLCAyMyBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IGluZGV4IDA3 ZWRhZWQuLmY4ZjYwYmIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k bWEuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKPiBAQCAtMTAxOSw5 ICsxMDE5LDEzIEBAIHN0YXRpYyBpbnQgaTkxNV93b3JrcXVldWVzX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCWlmIChkZXZfcHJpdi0+d3EgPT0gTlVMTCkKPiAg IAkJZ290byBvdXRfZXJyOwo+Cj4gKwlkZXZfcHJpdi0+cmVxX3dxID0gYWxsb2Nfb3JkZXJlZF93 b3JrcXVldWUoImk5MTUtcnEiLCAwKTsKPiArCWlmIChkZXZfcHJpdi0+cmVxX3dxID09IE5VTEwp Cj4gKwkJZ290byBvdXRfZnJlZV93cTsKPiArCgpTaW5nbGUgKHBlci1kZXZpY2UpIG9yZGVyZWQg d29ya3F1ZXVlIHdpbGwgc2VyaWFsaXplIGludGVycnVwdCAKcHJvY2Vzc2luZyBhY3Jvc3MgYWxs IGVuZ2luZXMgdG8gb25lIHRocmVhZC4gVG9nZXRoZXIgd2l0aCB0aGUgZmFjdCAKcmVxdWVzdCB3 b3JrZXIgZG9lcyBub3Qgc2VlbSB0byBuZWVkIHRoZSBzbGVlcGluZyBjb250ZXh0LCBJIGFtIHRo aW5raW5nIAp0aGF0IGEgdGFza2xldCBwZXIgZW5naW5lIHdvdWxkIGJlIG11Y2ggYmV0dGVyIChz ZWUgZW5naW5lLT5pcnFfdGFza2xldCAKZm9yIGFuIGV4YW1wbGUpLgoKPiAgIAlkZXZfcHJpdi0+ aG90cGx1Zy5kcF93cSA9IGFsbG9jX29yZGVyZWRfd29ya3F1ZXVlKCJpOTE1LWRwIiwgMCk7Cj4g ICAJaWYgKGRldl9wcml2LT5ob3RwbHVnLmRwX3dxID09IE5VTEwpCj4gLQkJZ290byBvdXRfZnJl ZV93cTsKPiArCQlnb3RvIG91dF9mcmVlX3JlcV93cTsKPgo+ICAgCWRldl9wcml2LT5ncHVfZXJy b3IuaGFuZ2NoZWNrX3dxID0KPiAgIAkJYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoImk5MTUtaGFu Z2NoZWNrIiwgMCk7Cj4gQEAgLTEwMzIsNiArMTAzNiw4IEBAIHN0YXRpYyBpbnQgaTkxNV93b3Jr cXVldWVzX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Cj4gICBvdXRf ZnJlZV9kcF93cToKPiAgIAlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+aG90cGx1Zy5kcF93 cSk7Cj4gK291dF9mcmVlX3JlcV93cToKPiArCWRlc3Ryb3lfd29ya3F1ZXVlKGRldl9wcml2LT5y ZXFfd3EpOwo+ICAgb3V0X2ZyZWVfd3E6Cj4gICAJZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYt PndxKTsKPiAgIG91dF9lcnI6Cj4gQEAgLTEwNDQsNiArMTA1MCw3IEBAIHN0YXRpYyB2b2lkIGk5 MTVfd29ya3F1ZXVlc19jbGVhbnVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIHsKPiAgIAlkZXN0cm95X3dvcmtxdWV1ZShkZXZfcHJpdi0+Z3B1X2Vycm9yLmhhbmdjaGVj a193cSk7Cj4gICAJZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYtPmhvdHBsdWcuZHBfd3EpOwo+ ICsJZGVzdHJveV93b3JrcXVldWUoZGV2X3ByaXYtPnJlcV93cSk7Cj4gICAJZGVzdHJveV93b3Jr cXVldWUoZGV2X3ByaXYtPndxKTsKPiAgIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGlu ZGV4IDY5YzM0MTIuLjVhN2YyNTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAt MTg1MSw2ICsxODUxLDkgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAgCSAqLwo+ICAg CXN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTsKPgo+ICsJLyogV29yayBxdWV1ZSBmb3IgcmVx dWVzdCBjb21wbGV0aW9uIHByb2Nlc3NpbmcgKi8KPiArCXN0cnVjdCB3b3JrcXVldWVfc3RydWN0 ICpyZXFfd3E7Cj4gKwo+ICAgCS8qIERpc3BsYXkgZnVuY3Rpb25zICovCj4gICAJc3RydWN0IGRy bV9pOTE1X2Rpc3BsYXlfZnVuY3MgZGlzcGxheTsKPgo+IEBAIC0yMzU5LDYgKzIzNjIsMTAgQEAg c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0IHsKPiAgIAkgKi8KPiAgIAlzdHJ1Y3QgZmVuY2Ug ZmVuY2U7Cj4gICAJc3RydWN0IHJjdV9oZWFkIHJjdV9oZWFkOwo+ICsJc3RydWN0IGxpc3RfaGVh ZCBzaWduYWxfbGluazsKPiArCWJvb2wgY2FuY2VsbGVkOwo+ICsJYm9vbCBpcnFfZW5hYmxlZDsK PiArCWJvb2wgc2lnbmFsX3JlcXVlc3RlZDsKPgo+ICAgCS8qKiBPbiBXaGljaCByaW5nIHRoaXMg cmVxdWVzdCB3YXMgZ2VuZXJhdGVkICovCj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTU7Cj4gQEAgLTI0NjAsNiArMjQ2NywxMCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg ewo+ICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICogX19tdXN0X2NoZWNrCj4gICBpOTE1 X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJ ICAgICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpOwo+ICt2b2lkIGk5MTVfZ2VtX3Jl cXVlc3RfZW5hYmxlX2ludGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK PiArCQkJCSAgICAgICBib29sIGZlbmNlX2xvY2tlZCk7Cj4gK3ZvaWQgaTkxNV9nZW1fcmVxdWVz dF9ub3RpZnkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgYm9vbCBmZW5jZV9sb2NrZWQp Owo+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3Rfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y ayk7Cj4KPiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIHsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBpbmRleCA5N2UzMTM4Li44M2NmOWIwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jCj4gQEAgLTM5LDYgKzM5LDggQEAKPiAgICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiAgICNp bmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4KPiArc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVz dF9zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpOwo+ICsKPiAgIHN0YXRp YyB2b2lkIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9ndHRfd3JpdGVfZG9tYWluKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ICAgc3RhdGljIHZvaWQgaTkxNV9nZW1fb2JqZWN0X2Zs dXNoX2NwdV93cml0ZV9kb21haW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4g ICBzdGF0aWMgdm9pZAo+IEBAIC0xMjM3LDkgKzEyMzksOCBAQCBpbnQgX19pOTE1X3dhaXRfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgIHsKPiAgIAlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBpOTE1X2dlbV9yZXF1ZXN0X2dldF9lbmdpbmUocmVx KTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXEtPmk5MTU7Cj4g LQljb25zdCBib29sIGlycV90ZXN0X2luX3Byb2dyZXNzID0KPiAtCQlBQ0NFU1NfT05DRShkZXZf cHJpdi0+Z3B1X2Vycm9yLnRlc3RfaXJxX3JpbmdzKSAmIGludGVsX2VuZ2luZV9mbGFnKGVuZ2lu ZSk7Cj4gICAJaW50IHN0YXRlID0gaW50ZXJydXB0aWJsZSA/IFRBU0tfSU5URVJSVVBUSUJMRSA6 IFRBU0tfVU5JTlRFUlJVUFRJQkxFOwo+ICsJdWludDMyX3Qgc2Vxbm87Cj4gICAJREVGSU5FX1dB SVQod2FpdCk7Cj4gICAJdW5zaWduZWQgbG9uZyB0aW1lb3V0X2V4cGlyZTsKPiAgIAlzNjQgYmVm b3JlID0gMDsgLyogT25seSB0byBzaWxlbmNlIGEgY29tcGlsZXIgd2FybmluZy4gKi8KPiBAQCAt MTI0Nyw5ICsxMjQ4LDYgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCj4KPiAgIAlXQVJOKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3By aXYpLCAiSVJRcyBkaXNhYmxlZCIpOwo+Cj4gLQlpZiAobGlzdF9lbXB0eSgmcmVxLT5saXN0KSkK PiAtCQlyZXR1cm4gMDsKPiAtCj4gICAJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJl cSkpCj4gICAJCXJldHVybiAwOwo+Cj4gQEAgLTEyNzUsMTUgKzEyNzMsMTcgQEAgaW50IF9faTkx NV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJdHJh Y2VfaTkxNV9nZW1fcmVxdWVzdF93YWl0X2JlZ2luKHJlcSk7Cj4KPiAgIAkvKiBPcHRpbWlzdGlj IHNwaW4gZm9yIHRoZSBuZXh0IGppZmZpZSBiZWZvcmUgdG91Y2hpbmcgSVJRcyAqLwo+IC0JcmV0 ID0gX19pOTE1X3NwaW5fcmVxdWVzdChyZXEsIHN0YXRlKTsKPiAtCWlmIChyZXQgPT0gMCkKPiAt CQlnb3RvIG91dDsKPiAtCj4gLQlpZiAoIWlycV90ZXN0X2luX3Byb2dyZXNzICYmIFdBUk5fT04o IWVuZ2luZS0+aXJxX2dldChlbmdpbmUpKSkgewo+IC0JCXJldCA9IC1FTk9ERVY7Cj4gLQkJZ290 byBvdXQ7Cj4gKwlpZiAocmVxLT5zZXFubykgewoKVGhpcyBuZWVkcyBhIGNvbW1lbnQgSSB0aGlu ayBiZWNhdXNlIGl0IGlzIHNvIHVudXN1YWwgYW5kIG5ldyB0aGF0IApyZXEtPnNlcW5vID09IDAg aXMgYSBzcGVjaWFsIHBhdGguIFRvIGV4cGxhaW4gd2h5IGFuZCBob3cgaXQgY2FuIGhhcHBlbiAK aGVyZS4KCj4gKwkJcmV0ID0gX19pOTE1X3NwaW5fcmVxdWVzdChyZXEsIHN0YXRlKTsKPiArCQlp ZiAocmV0ID09IDApCj4gKwkJCWdvdG8gb3V0Owo+ICAgCX0KPgo+ICsJLyoKPiArCSAqIEVuYWJs ZSBpbnRlcnJ1cHQgY29tcGxldGlvbiBvZiB0aGUgcmVxdWVzdC4KPiArCSAqLwo+ICsJZmVuY2Vf ZW5hYmxlX3N3X3NpZ25hbGluZygmcmVxLT5mZW5jZSk7Cj4gKwo+ICAgCWZvciAoOzspIHsKPiAg IAkJc3RydWN0IHRpbWVyX2xpc3QgdGltZXI7Cj4KPiBAQCAtMTMwNiw2ICsxMzA2LDIxIEBAIGlu dCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ ICAgCQkJYnJlYWs7Cj4gICAJCX0KPgo+ICsJCWlmIChyZXEtPnNlcW5vKSB7Cj4gKwkJCS8qCj4g KwkJCSAqIFRoZXJlIGlzIHF1aXRlIGEgbG90IG9mIGxhdGVuY3kgaW4gdGhlIHVzZXIgaW50ZXJy dXB0Cj4gKwkJCSAqIHBhdGguIFNvIGRvIGFuIGV4cGxpY2l0IHNlcW5vIGNoZWNrIGFuZCBwb3Rl bnRpYWxseQo+ICsJCQkgKiByZW1vdmUgYWxsIHRoYXQgZGVsYXkuCj4gKwkJCSAqLwo+ICsJCQlp ZiAocmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQo+ICsJCQkJcmVxLT5lbmdpbmUtPmly cV9zZXFub19iYXJyaWVyKHJlcS0+ZW5naW5lKTsKPiArCQkJc2Vxbm8gPSBlbmdpbmUtPmdldF9z ZXFubyhlbmdpbmUpOwo+ICsJCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+c2Vx bm8pKSB7Cj4gKwkJCQlyZXQgPSAwOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ ICAgCQlpZiAoc2lnbmFsX3BlbmRpbmdfc3RhdGUoc3RhdGUsIGN1cnJlbnQpKSB7Cj4gICAJCQly ZXQgPSAtRVJFU1RBUlRTWVM7Cj4gICAJCQlicmVhazsKPiBAQCAtMTMzMiwxNCArMTM0NywzMiBA QCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwKPiAgIAkJCWRlc3Ryb3lfdGltZXJfb25fc3RhY2soJnRpbWVyKTsKPiAgIAkJfQo+ICAgCX0K PiAtCWlmICghaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MpCj4gLQkJZW5naW5lLT5pcnFfcHV0KGVuZ2lu ZSk7Cj4KPiAgIAlmaW5pc2hfd2FpdCgmZW5naW5lLT5pcnFfcXVldWUsICZ3YWl0KTsKCkhtIEkg ZG9uJ3QgdW5kZXJzdGFuZCB3aHkgb3VyIGN1c3RvbSB3YWl0aW5nIHJlbWFpbnM/IFNob3VsZG4n dCAKZmVuY2Vfd2FpdCBqdXN0IGJlIGNhbGxlZCBhZnRlciB0aGUgb3B0aW1pc3RpYyBzcGluLCBt b3JlIG9yIGxlc3M/Cgo+Cj4gICBvdXQ6Cj4gICAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF93YWl0 X2VuZChyZXEpOwo+Cj4gKwlpZiAoKHJldCA9PSAwKSAmJiAocmVxLT5zZXFubykpIHsKPiArCQlp ZiAocmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQo+ICsJCQlyZXEtPmVuZ2luZS0+aXJx X3NlcW5vX2JhcnJpZXIocmVxLT5lbmdpbmUpOwo+ICsJCXNlcW5vID0gZW5naW5lLT5nZXRfc2Vx bm8oZW5naW5lKTsKPiArCQlpZiAoaTkxNV9zZXFub19wYXNzZWQoc2Vxbm8sIHJlcS0+c2Vxbm8p ICYmCj4gKwkJICAgICFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKSB7Cj4gKwkJCS8q Cj4gKwkJCSAqIE1ha2Ugc3VyZSB0aGUgcmVxdWVzdCBpcyBtYXJrZWQgYXMgY29tcGxldGVkIGJl Zm9yZQo+ICsJCQkgKiByZXR1cm5pbmcuIE5COiBOZWVkIHRvIGFjcXVpcmUgdGhlIHNwaW5sb2Nr IGFyb3VuZAo+ICsJCQkgKiB0aGUgd2hvbGUgY2FsbCB0byBhdm9pZCBhIHJhY2UgY29uZGl0aW9u IHdpdGggdGhlCj4gKwkJCSAqIGludGVycnVwdCBoYW5kbGVyIGlzIHJ1bm5pbmcgY29uY3VycmVu dGx5IGFuZCBjb3VsZAo+ICsJCQkgKiBjYXVzZSB0aGlzIGludm9jYXRpb24gdG8gZWFybHkgZXhp dCBldmVuIHRob3VnaCB0aGUKPiArCQkJICogcmVxdWVzdCBoYXMgbm90IGFjdHVhbGx5IGJlZW4g ZnVsbHkgcHJvY2Vzc2VkIHlldC4KPiArCQkJICovCj4gKwkJCXNwaW5fbG9ja19pcnEoJnJlcS0+ ZW5naW5lLT5mZW5jZV9sb2NrKTsKPiArCQkJaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkocmVxLT5l bmdpbmUsIHRydWUpOwo+ICsJCQlzcGluX3VubG9ja19pcnEoJnJlcS0+ZW5naW5lLT5mZW5jZV9s b2NrKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICAgCWlmICh0aW1lb3V0KSB7Cj4gICAJCXM2NCB0cmVz ID0gKnRpbWVvdXQgLSAoa3RpbWVfZ2V0X3Jhd19ucygpIC0gYmVmb3JlKTsKPgo+IEBAIC0xNDA1 LDYgKzE0MzgsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmUoc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgewo+ICAgCXRyYWNlX2k5MTVfZ2Vt X3JlcXVlc3RfcmV0aXJlKHJlcXVlc3QpOwo+Cj4gKwlpZiAocmVxdWVzdC0+aXJxX2VuYWJsZWQp IHsKPiArCQlyZXF1ZXN0LT5lbmdpbmUtPmlycV9wdXQocmVxdWVzdC0+ZW5naW5lKTsKPiArCQly ZXF1ZXN0LT5pcnFfZW5hYmxlZCA9IGZhbHNlOwoKV2hhdCBwcm90ZWN0cyByZXF1ZXN0LT5pcnFf ZW5hYmxlZD8gSGVyZSB2ZXJzdXMgZW5hYmxlX3NpZ25hbGxpbmcgYml0PyAKSXQgY2FuIGJlIGNh bGxlZCBmcm9tIHRoZSBleHRlcm5hbCBmZW5jZSB1c2VycyB3aGljaCB3b3VsZCB0YWtlIHRoZSAK ZmVuY2VfbG9jaywgYnV0IGhlcmUgaXQgZG9lcyBub3QuCgo+ICsJfQoKPiArCj4gICAJLyogV2Ug a25vdyB0aGUgR1BVIG11c3QgaGF2ZSByZWFkIHRoZSByZXF1ZXN0IHRvIGhhdmUKPiAgIAkgKiBz ZW50IHVzIHRoZSBzZXFubyArIGludGVycnVwdCwgc28gdXNlIHRoZSBwb3NpdGlvbgo+ICAgCSAq IG9mIHRhaWwgb2YgdGhlIHJlcXVlc3QgdG8gdXBkYXRlIHRoZSBsYXN0IGtub3duIHBvc2l0aW9u Cj4gQEAgLTE0MTgsNiArMTQ1NiwyMiBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X3Jl dGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gICAJbGlzdF9kZWxf aW5pdCgmcmVxdWVzdC0+bGlzdCk7Cj4gICAJaTkxNV9nZW1fcmVxdWVzdF9yZW1vdmVfZnJvbV9j bGllbnQocmVxdWVzdCk7Cj4KPiArCS8qCj4gKwkgKiBJbiBjYXNlIHRoZSByZXF1ZXN0IGlzIHN0 aWxsIGluIHRoZSBzaWduYWwgcGVuZGluZyBsaXN0LAo+ICsJICogZS5nLiBkdWUgdG8gYmVpbmcg Y2FuY2VsbGVkIGJ5IFREUiwgcHJlZW1wdGlvbiwgZXRjLgo+ICsJICovCj4gKwlpZiAoIWxpc3Rf ZW1wdHkoJnJlcXVlc3QtPnNpZ25hbF9saW5rKSkgewoKTm8gbG9ja2luZyByZXF1aXJlZCBoZXJl PwoKPiArCQkvKgo+ICsJCSAqIFRoZSByZXF1ZXN0IG11c3QgYmUgbWFya2VkIGFzIGNhbmNlbGxl ZCBhbmQgdGhlIHVuZGVybHlpbmcKPiArCQkgKiBmZW5jZSBhcyBmYWlsZWQuIE5COiBUaGVyZSBp cyBubyBleHBsaWNpdCBmZW5jZSBmYWlsIEFQSSwKPiArCQkgKiB0aGVyZSBpcyBvbmx5IGEgbWFu dWFsIHBva2UgYW5kIHNpZ25hbC4KPiArCQkgKi8KPiArCQlyZXF1ZXN0LT5jYW5jZWxsZWQgPSB0 cnVlOwo+ICsJCS8qIEhvdyB0byBwcm9wYWdhdGUgdG8gYW55IGFzc29jaWF0ZWQgc3luY19mZW5j ZT8/PyAqLwo+ICsJCXJlcXVlc3QtPmZlbmNlLnN0YXR1cyA9IC1FSU87Cj4gKwkJZmVuY2Vfc2ln bmFsX2xvY2tlZCgmcmVxdWVzdC0+ZmVuY2UpOwoKQW5kIGhlcmU/Cgo+ICsJfQo+ICsKPiAgIAlp ZiAocmVxdWVzdC0+cHJldmlvdXNfY29udGV4dCkgewo+ICAgCQlpZiAoaTkxNS5lbmFibGVfZXhl Y2xpc3RzKQo+ICAgCQkJaW50ZWxfbHJfY29udGV4dF91bnBpbihyZXF1ZXN0LT5wcmV2aW91c19j b250ZXh0LAo+IEBAIC0yNjcwLDYgKzI3MjQsMTIgQEAgdm9pZCBfX2k5MTVfYWRkX3JlcXVlc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICAgCSAqLwo+ICAgCXJlcXVl c3QtPnBvc3RmaXggPSBpbnRlbF9yaW5nX2dldF90YWlsKHJpbmdidWYpOwo+Cj4gKwkvKgo+ICsJ ICogQWRkIHRoZSBmZW5jZSB0byB0aGUgcGVuZGluZyBsaXN0IGJlZm9yZSBlbWl0dGluZyB0aGUg Y29tbWFuZHMgdG8KPiArCSAqIGdlbmVyYXRlIGEgc2Vxbm8gbm90aWZpY2F0aW9uIGludGVycnVw dC4KPiArCSAqLwo+ICsJaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQocmVxdWVzdCk7Cj4gKwo+ICAg CWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4gICAJCXJldCA9IGVuZ2luZS0+ZW1pdF9yZXF1 ZXN0KHJlcXVlc3QpOwo+ICAgCWVsc2Ugewo+IEBAIC0yNzU1LDI1ICsyODE1LDE1NCBAQCBzdGF0 aWMgdm9pZCBpOTE1X2dlbV9yZXF1ZXN0X2ZyZWUoc3RydWN0IGZlbmNlICpyZXFfZmVuY2UpCj4g ICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4KPiAgIAlyZXEgPSBjb250YWlu ZXJfb2YocmVxX2ZlbmNlLCB0eXBlb2YoKnJlcSksIGZlbmNlKTsKPiArCj4gKwlXQVJOX09OKHJl cS0+aXJxX2VuYWJsZWQpOwoKSG93IHVzZWZ1bCBpcyB0aGlzPyBJZiBpdCB3ZW50IHdyb25nIGVu Z2luZSBpcnEgcmVmZXJlbmNlIGNvdW50aW5nIHdvdWxkIApiZSBiYWQuIE9rYXkgbm8gb25lIHdv dWxkIG5vdGljZSwgYnV0IHdlIGNvdWxkIHRoZW4gc3RpY2sgc29tZSBvdGhlciAKd2FybnMgaGVy ZSwgbGlzdCAhbGlzdF9lbXB5KHJlcS0+bGlzdCkgYW5kIHdobyBrbm93cyB3aGF0LCB3aGljaCB3 ZSAKZG9uJ3QgaGF2ZSwgc28gSSBhbSBqdXN0IHdvbmRlcmluZyBpZiB0aGlzIG9uZSBicmluZ3Mg YW55IHZhbHVlLgoKPiArCj4gICAJY2FsbF9yY3UoJnJlcS0+cmN1X2hlYWQsIGk5MTVfZ2VtX3Jl cXVlc3RfZnJlZV9yY3UpOwo+ICAgfQo+Cj4gLXN0YXRpYyBib29sIGk5MTVfZ2VtX3JlcXVlc3Rf ZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPiArLyoKPiArICogVGhl IHJlcXVlc3QgaXMgYWJvdXQgdG8gYmUgc3VibWl0dGVkIHRvIHRoZSBoYXJkd2FyZSBzbyBhZGQg dGhlIGZlbmNlIHRvCj4gKyAqIHRoZSBsaXN0IG9mIHNpZ25hbGFibGUgZmVuY2VzLgo+ICsgKgo+ ICsgKiBOQjogVGhpcyBkb2VzIG5vdCBuZWNlc3NhcmlseSBlbmFibGUgaW50ZXJydXB0cyB5ZXQu IFRoYXQgb25seSBvY2N1cnMgb24KPiArICogZGVtYW5kIHdoZW4gdGhlIHJlcXVlc3QgaXMgYWN0 dWFsbHkgd2FpdGVkIG9uLiBIb3dldmVyLCBhZGRpbmcgaXQgdG8gdGhlCj4gKyAqIGxpc3QgZWFy bHkgZW5zdXJlcyB0aGF0IHRoZXJlIGlzIG5vIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBpbnRl cnJ1cHQKPiArICogY291bGQgcG9wIG91dCBwcmVtYXR1cmVseSBhbmQgdGh1cyBiZSBjb21wbGV0 ZWx5IGxvc3QuIFRoZSByYWNlIGlzIG1lcmVseQo+ICsgKiB0aGF0IHRoZSBpbnRlcnJ1cHQgbXVz dCBiZSBtYW51YWxseSBjaGVja2VkIGZvciBhZnRlciBiZWluZyBlbmFibGVkLgo+ICsgKi8KPiAr c3RhdGljIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9zdWJtaXQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEpCj4gICB7Cj4gLQkvKiBJbnRlcnJ1cHQgZHJpdmVuIGZlbmNlcyBhcmUgbm90 IGltcGxlbWVudGVkIHlldC4qLwo+IC0JV0FSTih0cnVlLCAiVGhpcyBzaG91bGQgbm90IGJlIGNh bGxlZCEiKTsKPiAtCXJldHVybiB0cnVlOwo+ICsJLyoKPiArCSAqIEFsd2F5cyBlbmFibGUgc2ln bmFsIHByb2Nlc3NpbmcgZm9yIHRoZSByZXF1ZXN0J3MgZmVuY2Ugb2JqZWN0Cj4gKwkgKiBiZWZv cmUgdGhhdCByZXF1ZXN0IGlzIHN1Ym1pdHRlZCB0byB0aGUgaGFyZHdhcmUuIFRodXMgdGhlcmUg aXMgbm8KPiArCSAqIHJhY2UgY29uZGl0aW9uIHdoZXJlYnkgdGhlIGludGVycnVwdCBjb3VsZCBw b3Agb3V0IGJlZm9yZSB0aGUKPiArCSAqIHJlcXVlc3QgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHNp Z25hbCBsaXN0LiBIZW5jZSBubyBuZWVkIHRvIGNoZWNrCj4gKwkgKiBmb3IgY29tcGxldGlvbiwg dW5kbyB0aGUgbGlzdCBhZGQgYW5kIHJldHVybiBmYWxzZS4KPiArCSAqLwo+ICsJaTkxNV9nZW1f cmVxdWVzdF9yZWZlcmVuY2UocmVxKTsKPiArCXNwaW5fbG9ja19pcnEoJnJlcS0+ZW5naW5lLT5m ZW5jZV9sb2NrKTsKPiArCVdBUk5fT04oIWxpc3RfZW1wdHkoJnJlcS0+c2lnbmFsX2xpbmspKTsK PiArCWxpc3RfYWRkX3RhaWwoJnJlcS0+c2lnbmFsX2xpbmssICZyZXEtPmVuZ2luZS0+ZmVuY2Vf c2lnbmFsX2xpc3QpOwo+ICsJc3Bpbl91bmxvY2tfaXJxKCZyZXEtPmVuZ2luZS0+ZmVuY2VfbG9j ayk7Cj4gKwo+ICsJLyoKPiArCSAqIE5COiBJbnRlcnJ1cHRzIGFyZSBvbmx5IGVuYWJsZWQgb24g ZGVtYW5kLiBUaHVzIHRoZXJlIGlzIHN0aWxsIGEKPiArCSAqIHJhY2Ugd2hlcmUgdGhlIHJlcXVl c3QgY291bGQgY29tcGxldGUgYmVmb3JlIHRoZSBpbnRlcnJ1cHQgaGFzCj4gKwkgKiBiZWVuIGVu YWJsZWQuIFRodXMgY2FyZSBtdXN0IGJlIHRha2VuIGF0IHRoYXQgcG9pbnQuCj4gKwkgKi8KPiAr Cj4gKwkvKiBIYXZlIGludGVycnVwdHMgYWxyZWFkeSBiZWVuIHJlcXVlc3RlZD8gKi8KPiArCWlm IChyZXEtPnNpZ25hbF9yZXF1ZXN0ZWQpCj4gKwkJaTkxNV9nZW1fcmVxdWVzdF9lbmFibGVfaW50 ZXJydXB0KHJlcSwgZmFsc2UpOwoKSSBhbSB0aGlua2luZyB0aGF0IHRoZSBmZW5jZSBsb2NrIGNv dWxkIGJlIGhlbGQgaGVyZSB1bnRpbCB0aGUgZW5kIG9mIAp0aGUgZnVuY3Rpb24gYW5kIGluIHN1 Y2ggd2F5IGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX2ludGVycnVwdCB3b3VsZCBub3QgCm5lZWQg dGhlIGZlbmNlX2xvY2tlZCBwYXJhbWV0ZXIgYW55IG1vcmUuCgpJdCB3b3VsZCBwcm9iYWJseSBh bHNvIGJlIHNhZmVyIHdpdGggcmVnYXJkcyB0byBhY2Nlc2luZyB0aGUgCnJlcS0+c2lnbmFsX3Jl cXVlc3RlZC4gSSBhbSBub3Qgc3VyZSB0aGF0IGVuYWJsZSBzaWduYWxsaW5nIGFuZCB0aGlzIApv dGhlcndpc2UgY2FuJ3QgcmFjZSBhbmQgbWlzcyB0aGUgc2lnbmFsX3JlcXVlc3RlZCBnZXR0aW5n IHNldD8KCj4gK30KPiArCj4gKy8qCj4gKyAqIFRoZSByZXF1ZXN0IGlzIGJlaW5nIGFjdGl2ZWx5 IHdhaXRlZCBvbiwgc28gZW5hYmxlIGludGVycnVwdCBiYXNlZAo+ICsgKiBjb21wbGV0aW9uIHNp Z25hbGxpbmcuCj4gKyAqLwo+ICt2b2lkIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX2ludGVycnVw dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiArCQkJCSAgICAgICBib29sIGZl bmNlX2xvY2tlZCkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g cmVxLT5lbmdpbmUtPmk5MTU7Cj4gKwljb25zdCBib29sIGlycV90ZXN0X2luX3Byb2dyZXNzID0K PiArCQlBQ0NFU1NfT05DRShkZXZfcHJpdi0+Z3B1X2Vycm9yLnRlc3RfaXJxX3JpbmdzKSAmCj4g KwkJCQkJCWludGVsX2VuZ2luZV9mbGFnKHJlcS0+ZW5naW5lKTsKPiArCj4gKwlpZiAocmVxLT5p cnFfZW5hYmxlZCkKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYgKGlycV90ZXN0X2luX3Byb2dyZXNz KQo+ICsJCXJldHVybjsKPiArCj4gKwlpZiAoIVdBUk5fT04oIXJlcS0+ZW5naW5lLT5pcnFfZ2V0 KHJlcS0+ZW5naW5lKSkpCj4gKwkJcmVxLT5pcnFfZW5hYmxlZCA9IHRydWU7CgpUaGUgZG91Ymxl IG5lZ2F0aW9uIGNvbmZ1c2VkIG1lIGEgYml0LiBJdCBpcyBwcm9iYWJseSBub3QgaWRlYWwgc2lu Y2UgCldBUk5fT05zIGdvIHRvIHRoZSBvdXQgb2YgbGluZSBzZWN0aW9uIHNvIGluIGEgd2F5IGl0 IGlzIGRlbGliZXJhdGVseSAKcGVuYWxpc2luZyB0aGUgZmFzdCBhbmQgZXhwZWN0ZWQgcGF0aC4g SSB0aGluayBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gcHV0IAphIFdBUk4gb24gdGhlIGVsc2UgcGF0 aC4KCj4gKwo+ICsJLyoKPiArCSAqIEJlY2F1c2UgdGhlIGludGVycnVwdCBpcyBvbmx5IGVuYWJs ZWQgb24gZGVtYW5kLCB0aGVyZSBpcyBhIHJhY2UKPiArCSAqIHdoZXJlIHRoZSBpbnRlcnJ1cHQg Y2FuIGZpcmUgYmVmb3JlIGFueW9uZSBpcyBsb29raW5nIGZvciBpdC4gU28KPiArCSAqIGRvIGFu IGV4cGxpY2l0IGNoZWNrIGZvciBtaXNzZWQgaW50ZXJydXB0cy4KPiArCSAqLwo+ICsJaTkxNV9n ZW1fcmVxdWVzdF9ub3RpZnkocmVxLT5lbmdpbmUsIGZlbmNlX2xvY2tlZCk7Cj4gICB9Cj4KPiAt c3RhdGljIGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9pc19jb21wbGV0ZWQoc3RydWN0IGZlbmNlICpy ZXFfZmVuY2UpCj4gK3N0YXRpYyBib29sIGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25hbGlu ZyhzdHJ1Y3QgZmVuY2UgKnJlcV9mZW5jZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSA9IGNvbnRhaW5lcl9vZihyZXFfZmVuY2UsCj4gICAJCQkJCQkgdHlwZW9m KCpyZXEpLCBmZW5jZSk7Cj4gKwo+ICsJLyoKPiArCSAqIE5vIG5lZWQgdG8gYWN0dWFsbHkgZW5h YmxlIGludGVycnVwdCBiYXNlZCBwcm9jZXNzaW5nIHVudGlsIHRoZQo+ICsJICogcmVxdWVzdCBo YXMgYmVlbiBzdWJtaXR0ZWQgdG8gdGhlIGhhcmR3YXJlLiBBdCB3aGljaCBwb2ludAo+ICsJICog J2k5MTVfZ2VtX3JlcXVlc3Rfc3VibWl0KCknIGlzIGNhbGxlZC4gU28gb25seSByZWFsbHkgZW5h YmxlCj4gKwkgKiBzaWduYWxsaW5nIGluIHRoZXJlLiBKdXN0IHNldCBhIGZsYWcgdG8gc2F5IHRo YXQgaW50ZXJydXB0cyBhcmUKPiArCSAqIHdhbnRlZCB3aGVuIHRoZSByZXF1ZXN0IGlzIGV2ZW50 dWFsbHkgc3VibWl0dGVkLiBPbiB0aGUgb3RoZXIgaGFuZAo+ICsJICogaWYgdGhlIHJlcXVlc3Qg aGFzIGFscmVhZHkgYmVlbiBzdWJtaXR0ZWQgdGhlbiBpbnRlcnJ1cHRzIGRvIG5lZWQKPiArCSAq IHRvIGJlIGVuYWJsZWQgbm93Lgo+ICsJICovCj4gKwo+ICsJcmVxLT5zaWduYWxfcmVxdWVzdGVk ID0gdHJ1ZTsKPiArCj4gKwlpZiAoIWxpc3RfZW1wdHkoJnJlcS0+c2lnbmFsX2xpbmspKQoKSW4g d2hhdCBzY2VuYXJpb3MgaXMgdGhlIGxpc3RfZW1wdHkgY2hlY2sgbmVlZGVkPyBTb21lb25lIGNh biBzb21laG93IAplbmFibGUgc2lnbmFsbGluZyBvbiBhIGZlbmNlIG5vdCB5ZXQgc3VibWl0dGVk PwoKPiArCQlpOTE1X2dlbV9yZXF1ZXN0X2VuYWJsZV9pbnRlcnJ1cHQocmVxLCB0cnVlKTsKPiAr Cj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGk5MTVfZ2VtX3JlcXVlc3Rf d29ya2VyIC0gcmVxdWVzdCB3b3JrIGhhbmRsZXIgY2FsbGJhY2suCj4gKyAqIEB3b3JrOiBXb3Jr IHN0cnVjdHVyZQo+ICsgKiBDYWxsZWQgaW4gcmVzcG9uc2UgdG8gYSBzZXFubyBpbnRlcnJ1cHQg dG8gcHJvY2VzcyB0aGUgY29tcGxldGVkIHJlcXVlc3RzLgo+ICsgKi8KPiArdm9pZCBpOTE1X2dl bV9yZXF1ZXN0X3dvcmtlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gK3sKPiArCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCj4gKwllbmdpbmUgPSBjb250YWluZXJfb2Yo d29yaywgc3RydWN0IGludGVsX2VuZ2luZV9jcywgcmVxdWVzdF93b3JrKTsKPiArCWk5MTVfZ2Vt X3JlcXVlc3Rfbm90aWZ5KGVuZ2luZSwgZmFsc2UpOwo+ICt9Cj4gKwo+ICt2b2lkIGk5MTVfZ2Vt X3JlcXVlc3Rfbm90aWZ5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgYm9vbCBmZW5j ZV9sb2NrZWQpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCAqcmVx X25leHQ7Cj4gKwl1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICAgCXUzMiBzZXFubzsKPgo+IC0Jc2Vx bm8gPSByZXEtPmVuZ2luZS0+Z2V0X3NlcW5vKHJlcS0+ZW5naW5lKTsKPiArCWlmIChsaXN0X2Vt cHR5KCZlbmdpbmUtPmZlbmNlX3NpZ25hbF9saXN0KSkKCk9rYXkgdGhpcyB3aXRob3V0IHRoZSBs b2NrIHN0aWxsIG1ha2VzIG1lIG5lcnZvdXMuIEknZCByYXRoZXIgbm90IGhhdmluZyAKdG8gdGhp bmsgYWJvdXQgd2h5IGl0IGlzIHNhZmUgYW5kIGNhbid0IG1pc3MgYSB3YWtldXAuCgpBbHNvIEkg d291bGQgYmUgbGVhbmluZyB0b3dhcmQgaGF2aW5nIGk5MTVfZ2VtX3JlcXVlc3Rfbm90aWZ5IGFu ZCAKaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnlfX3VubG9ja2VkLiBXaXRoIHRoZSBlbmFibGVfaW50 ZXJydXB0cyAKc2ltcGxpZmljYXRpb24gSSBzdWdnZXN0ZWQgaXQgdGhpbmsgaXQgd291bGQgbG9v ayBiZXR0ZXIgYW5kIGJlIG1vcmUgCmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZHJp dmVyLgoKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYgKCFmZW5jZV9sb2NrZWQpCj4gKwkJc3Bpbl9s b2NrX2lycXNhdmUoJmVuZ2luZS0+ZmVuY2VfbG9jaywgZmxhZ3MpOwoKTm90IGNhbGxlZCBmcm9t IGhhcmQgaXJxIGNvbnRleHQgc28gY2FuIGJlIGp1c3Qgc3Bpbl9sb2NrX2lycS4KCkJ1dCBpZiB5 b3UgYWdyZWUgdG8gZ28gd2l0aCB0aGUgdGFza2xldCBpdCB3b3VsZCB0aGVuIGJlIHNwaW5fbG9j a19iaC4KCj4KPiAtCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmVxLT5zZXFubyk7 Cj4gKwlpZiAoZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKPiArCQllbmdpbmUtPmlycV9zZXFu b19iYXJyaWVyKGVuZ2luZSk7Cj4gKwlzZXFubyA9IGVuZ2luZS0+Z2V0X3NlcW5vKGVuZ2luZSk7 Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcSwgcmVxX25leHQsICZlbmdpbmUt PmZlbmNlX3NpZ25hbF9saXN0LCBzaWduYWxfbGluaykgewo+ICsJCWlmICghcmVxLT5jYW5jZWxs ZWQpIHsKPiArCQkJaWYgKCFpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmVxLT5zZXFubykpCj4g KwkJCQlicmVhazsKCk1lcmdlIHRvIG9uZSBpZiBzdGF0ZW1lbnQ/Cgo+ICsJCX0KPiArCj4gKwkJ LyoKPiArCQkgKiBTdGFydCBieSByZW1vdmluZyB0aGUgZmVuY2UgZnJvbSB0aGUgc2lnbmFsIGxp c3Qgb3RoZXJ3aXNlCj4gKwkJICogdGhlIHJldGlyZSBjb2RlIGNhbiBydW4gY29uY3VycmVudGx5 IGFuZCBnZXQgY29uZnVzZWQuCj4gKwkJICovCj4gKwkJbGlzdF9kZWxfaW5pdCgmcmVxLT5zaWdu YWxfbGluayk7Cj4gKwo+ICsJCWlmICghcmVxLT5jYW5jZWxsZWQpCj4gKwkJCWZlbmNlX3NpZ25h bF9sb2NrZWQoJnJlcS0+ZmVuY2UpOwoKSSBmb3Jnb3QgaG93IHNpZ25hbGxpbmcgZXJyb3JzIHRv IHVzZXJzcGFjZSB3b3Jrcz8gRG9lcyB0aGF0IHN0aWxsIHdvcmsgCmZvciBjYW5jZWxsZWQgZmVu Y2VzIGluIHRoaXMgc2VyaWVzPwoKPiArCj4gKwkJaWYgKHJlcS0+aXJxX2VuYWJsZWQpIHsKPiAr CQkJcmVxLT5lbmdpbmUtPmlycV9wdXQocmVxLT5lbmdpbmUpOwo+ICsJCQlyZXEtPmlycV9lbmFi bGVkID0gZmFsc2U7Cj4gKwkJfQo+ICsKPiArCQlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNl KHJlcSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFmZW5jZV9sb2NrZWQpCj4gKwkJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmZW5naW5lLT5mZW5jZV9sb2NrLCBmbGFncyk7Cj4gICB9Cj4KPiAgIHN0YXRp YyBjb25zdCBjaGFyICppOTE1X2dlbV9yZXF1ZXN0X2dldF9kcml2ZXJfbmFtZShzdHJ1Y3QgZmVu Y2UgKnJlcV9mZW5jZSkKPiBAQCAtMjgxNiw3ICszMDA1LDYgQEAgc3RhdGljIHZvaWQgaTkxNV9n ZW1fcmVxdWVzdF9mZW5jZV92YWx1ZV9zdHIoc3RydWN0IGZlbmNlICpyZXFfZmVuY2UsCj4KPiAg IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVuY2Vfb3BzIGk5MTVfZ2VtX3JlcXVlc3RfZm9wcyA9IHsK PiAgIAkuZW5hYmxlX3NpZ25hbGluZwk9IGk5MTVfZ2VtX3JlcXVlc3RfZW5hYmxlX3NpZ25hbGlu ZywKPiAtCS5zaWduYWxlZAkJPSBpOTE1X2dlbV9yZXF1ZXN0X2lzX2NvbXBsZXRlZCwKPiAgIAku d2FpdAkJCT0gZmVuY2VfZGVmYXVsdF93YWl0LAo+ICAgCS5yZWxlYXNlCQk9IGk5MTVfZ2VtX3Jl cXVlc3RfZnJlZSwKPiAgIAkuZ2V0X2RyaXZlcl9uYW1lCT0gaTkxNV9nZW1fcmVxdWVzdF9nZXRf ZHJpdmVyX25hbWUsCj4gQEAgLTI5MDIsNiArMzA5MCw3IEBAIF9faTkxNV9nZW1fcmVxdWVzdF9h bGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJcmVxLT5jdHggID0gY3R4 Owo+ICAgCWk5MTVfZ2VtX2NvbnRleHRfcmVmZXJlbmNlKHJlcS0+Y3R4KTsKPgo+ICsJSU5JVF9M SVNUX0hFQUQoJnJlcS0+c2lnbmFsX2xpbmspOwo+ICAgCWZlbmNlX2luaXQoJnJlcS0+ZmVuY2Us ICZpOTE1X2dlbV9yZXF1ZXN0X2ZvcHMsICZlbmdpbmUtPmZlbmNlX2xvY2ssCj4gICAJCSAgIGN0 eC0+ZW5naW5lW2VuZ2luZS0+aWRdLmZlbmNlX3RpbWVsaW5lLmZlbmNlX2NvbnRleHQsCj4gICAJ CSAgIGk5MTVfZmVuY2VfdGltZWxpbmVfZ2V0X25leHRfc2Vxbm8oJmN0eC0+ZW5naW5lW2VuZ2lu ZS0+aWRdLmZlbmNlX3RpbWVsaW5lKSk7Cj4gQEAgLTMwMzYsNiArMzIyNSwxMyBAQCBzdGF0aWMg dm9pZCBpOTE1X2dlbV9yZXNldF9lbmdpbmVfY2xlYW51cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gICAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHJlcXVlc3QpOwo+ICAg CX0KPgo+ICsJLyoKPiArCSAqIFRpZHkgdXAgYW55dGhpbmcgbGVmdCBvdmVyLiBUaGlzIGluY2x1 ZGVzIGEgY2FsbCB0bwo+ICsJICogaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkoKSB3aGljaCB3aWxs IG1ha2Ugc3VyZSB0aGF0IGFueSByZXF1ZXN0cwo+ICsJICogdGhhdCB3ZXJlIG9uIHRoZSBzaWdu YWwgcGVuZGluZyBsaXN0IGdldCBhbHNvIGNsZWFuZWQgdXAuCj4gKwkgKi8KPiArCWk5MTVfZ2Vt X3JldGlyZV9yZXF1ZXN0c19yaW5nKGVuZ2luZSk7CgpIbW0uLiBidXQgdGhpcyBmdW5jdGlvbiBo YXMganVzdCB3YWxrZWQgdGhlIHNhbWUgbGlzdHMgdGhpcyB3aWxsLCBhbmQgCmRvbmUgdGhlIHNh bWUgcHJvY2Vzc2luZy4gV2h5IGNhbGwgdGhpcyBmcm9tIGhlcmU/IEl0IGxvb2tzIGJhZCB0byBt ZSwgCnRoZSB0d28gYXJlIGRpZmZlcmVudCBzcGVjaWFsIGNhc2VzIG9mIHRoZSBzaW1pbGFyIHRo aW5nIHNvIEkgY2FuJ3Qgc2VlIAp0aGF0IGNhbGxpbmcgdGhpcyBmcm9tIGhlcmUgbWFrZXMgc2Vu c2UuCgo+ICsKPiAgIAkvKiBIYXZpbmcgZmx1c2hlZCBhbGwgcmVxdWVzdHMgZnJvbSBhbGwgcXVl dWVzLCB3ZSBrbm93IHRoYXQgYWxsCj4gICAJICogcmluZ2J1ZmZlcnMgbXVzdCBub3cgYmUgZW1w dHkuIEhvd2V2ZXIsIHNpbmNlIHdlIGRvIG5vdCByZWNsYWltCj4gICAJICogYWxsIHNwYWNlIHdo ZW4gcmV0aXJpbmcgdGhlIHJlcXVlc3QgKHRvIHByZXZlbnQgSEVBRHMgY29sbGlkaW5nCj4gQEAg LTMwODIsNiArMzI3OCwxMyBAQCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHNfcmluZyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJV0FSTl9PTihpOTE1X3ZlcmlmeV9s aXN0cyhlbmdpbmUtPmRldikpOwo+Cj4gKwkvKgo+ICsJICogSWYgbm8tb25lIGhhcyB3YWl0ZWQg b24gYSByZXF1ZXN0IHJlY2VudGx5IHRoZW4gaW50ZXJydXB0cyB3aWxsCj4gKwkgKiBub3QgaGF2 ZSBiZWVuIGVuYWJsZWQgYW5kIHRodXMgbm8gcmVxdWVzdHMgd2lsbCBldmVyIGJlIG1hcmtlZCBh cwo+ICsJICogY29tcGxldGVkLiBTbyBkbyBhbiBpbnRlcnJ1cHQgY2hlY2sgbm93Lgo+ICsJICov Cj4gKwlpOTE1X2dlbV9yZXF1ZXN0X25vdGlmeShlbmdpbmUsIGZhbHNlKTsKCldvdWxkIGl0IHdv cmsgdG8gc2lnbmFsIHRoZSBmZW5jZSBmcm9tIHRoZSBleGlzdGluZyBsb29wIGEgYml0IGFib3Zl IGluIAp0aGlzIGZ1bmN0aW9uIHdoaWNoIGFscmVhZHkgd2Fsa3MgdGhlIHJlcXVlc3QgbGlzdCBp biBzZWFyY2ggZm9yIApjb21wbGV0ZWQgb25lcz8gT3IgbWF5YmUgZXZlbiBpbiBpOTE1X2dlbV9y ZXF1ZXN0X3JldGlyZT8KCkkgYW0gdGhpbmtpbmcgYWJvdXQgZG9pbmcgbGVzcyBsaXN0IHdhbGtp bmcgYW5kIGJldHRlciBpbnRlZ3JhdGlvbiB3aXRoIAp0aGUgY29yZSBHRU0uIERvd25zaWRlIHdv dWxkIGJlIG1vcmUgdHJhZmZpYyBvbiB0aGUgZmVuY2VfbG9jaywgaG1tLi4gCm5vdCBzdXJlIHRo ZW4uIEl0IGp1c3QgbG9va3MgYSBiaXQgYm9sdGVkIG9uIGxpa2UgdGhpcy4KCkkgZG9uJ3Qgc2Vl IGl0IGJlaW5nIGEgbm90aWNlYWJsZSBjb3N0IHNvIHBlcmhhcHMgaXQgY2FuIHN0YXkgbGlrZSB0 aGlzIApmb3Igbm93LgoKPiArCj4gICAJLyogUmV0aXJlIHJlcXVlc3RzIGZpcnN0IGFzIHdlIHVz ZSBpdCBhYm92ZSBmb3IgdGhlIGVhcmx5IHJldHVybi4KPiAgIAkgKiBJZiB3ZSByZXRpcmUgcmVx dWVzdHMgbGFzdCwgd2UgbWF5IHVzZSBhIGxhdGVyIHNlcW5vIGFuZCBzbyBjbGVhcgo+ICAgCSAq IHRoZSByZXF1ZXN0cyBsaXN0cyB3aXRob3V0IGNsZWFyaW5nIHRoZSBhY3RpdmUgbGlzdCwgbGVh ZGluZyB0bwo+IEBAIC01MTAyLDYgKzUzMDUsNyBAQCBpbml0X2VuZ2luZV9saXN0cyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJmVuZ2lu ZS0+YWN0aXZlX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUtPnJlcXVlc3RfbGlz dCk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5mZW5jZV9zaWduYWxfbGlzdCk7Cj4gICB9 Cj4KPiAgIHZvaWQKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCBmNzgwNDIxLi5hODdh M2M1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gQEAgLTk5NCw2ICs5OTQsOCBAQCBz dGF0aWMgdm9pZCBub3RpZnlfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4g ICAJdHJhY2VfaTkxNV9nZW1fcmVxdWVzdF9ub3RpZnkoZW5naW5lKTsKPiAgIAllbmdpbmUtPnVz ZXJfaW50ZXJydXB0cysrOwo+Cj4gKwlxdWV1ZV93b3JrKGVuZ2luZS0+aTkxNS0+cmVxX3dxLCAm ZW5naW5lLT5yZXF1ZXN0X3dvcmspOwo+ICsKPiAgIAl3YWtlX3VwX2FsbCgmZW5naW5lLT5pcnFf cXVldWUpOwoKWWVzIHRoYXQgaXMgdGhlIHdlaXJkIHBhcnQsIHdoeSB0aGUgZW5naW5lLT5pcnFf cXVldWUgaGFzIHRvIHJlbWFpbiB3aXRoIAp0aGlzIHBhdGNoPwoKPiAgIH0KPgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gaW5kZXggZjEyNmJjYi4uMTM0NzU5ZCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gQEAgLTE4NzksNiArMTg3OSw4IEBAIHZvaWQgaW50ZWxfbG9naWNh bF9yaW5nX2NsZWFudXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+Cj4gICAJZGV2 X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4KPiArCWNhbmNlbF93b3JrX3N5bmMoJmVuZ2luZS0+cmVx dWVzdF93b3JrKTsKPiArCj4gICAJaWYgKGVuZ2luZS0+YnVmZmVyKSB7Cj4gICAJCWludGVsX2xv Z2ljYWxfcmluZ19zdG9wKGVuZ2luZSk7Cj4gICAJCVdBUk5fT04oKEk5MTVfUkVBRF9NT0RFKGVu Z2luZSkgJiBNT0RFX0lETEUpID09IDApOwo+IEBAIC0yMDI3LDYgKzIwMjksNyBAQCBsb2dpY2Fs X3Jpbmdfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBpbnRlbF9lbmdpbmVfaWQg aWQpCj4KPiAgIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5hY3RpdmVfbGlzdCk7Cj4gICAJSU5J VF9MSVNUX0hFQUQoJmVuZ2luZS0+cmVxdWVzdF9saXN0KTsKPiArCUlOSVRfTElTVF9IRUFEKCZl bmdpbmUtPmZlbmNlX3NpZ25hbF9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5i dWZmZXJzKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4g ICAJc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7Cj4gQEAgLTIwMzUsNiAr MjAzOCw4IEBAIGxvZ2ljYWxfcmluZ19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVt IGludGVsX2VuZ2luZV9pZCBpZCkKPiAgIAl0YXNrbGV0X2luaXQoJmVuZ2luZS0+aXJxX3Rhc2ts ZXQsCj4gICAJCSAgICAgaW50ZWxfbHJjX2lycV9oYW5kbGVyLCAodW5zaWduZWQgbG9uZyllbmdp bmUpOwo+Cj4gKwlJTklUX1dPUksoJmVuZ2luZS0+cmVxdWVzdF93b3JrLCBpOTE1X2dlbV9yZXF1 ZXN0X3dvcmtlcik7Cj4gKwo+ICAgCWxvZ2ljYWxfcmluZ19pbml0X3BsYXRmb3JtX2ludmFyaWFu dHMoZW5naW5lKTsKPiAgIAlsb2dpY2FsX3JpbmdfZGVmYXVsdF92ZnVuY3MoZW5naW5lKTsKPiAg IAlsb2dpY2FsX3JpbmdfZGVmYXVsdF9pcnFzKGVuZ2luZSwgaW5mby0+aXJxX3NoaWZ0KTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggZmJkM2YxMi4uMTY0 MTA5NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAt MjI1NCw2ICsyMjU0LDcgQEAgc3RhdGljIGludCBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gICAJSU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+cmVxdWVzdF9s aXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7Cj4gICAJ SU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+YnVmZmVycyk7Cj4gKwlJTklUX0xJU1RfSEVBRCgmZW5n aW5lLT5mZW5jZV9zaWduYWxfbGlzdCk7Cj4gICAJc3Bpbl9sb2NrX2luaXQoJmVuZ2luZS0+ZmVu Y2VfbG9jayk7Cj4gICAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9pbml0KGRldiwgJmVuZ2luZS0+YmF0 Y2hfcG9vbCk7Cj4gICAJbWVtc2V0KGVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm8sIDAsCj4g QEAgLTIyNjEsNiArMjI2Miw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Cj4gICAJaW5pdF93YWl0cXVldWVfaGVhZCgmZW5naW5l LT5pcnFfcXVldWUpOwo+Cj4gKwlJTklUX1dPUksoJmVuZ2luZS0+cmVxdWVzdF93b3JrLCBpOTE1 X2dlbV9yZXF1ZXN0X3dvcmtlcik7Cj4gKwo+ICAgCXJpbmdidWYgPSBpbnRlbF9lbmdpbmVfY3Jl YXRlX3JpbmdidWZmZXIoZW5naW5lLCAzMiAqIFBBR0VfU0laRSk7Cj4gICAJaWYgKElTX0VSUihy aW5nYnVmKSkgewo+ICAgCQlyZXQgPSBQVFJfRVJSKHJpbmdidWYpOwo+IEBAIC0yMzA3LDYgKzIz MTAsOCBAQCB2b2lkIGludGVsX2NsZWFudXBfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPgo+ICAgCWRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+Cj4gKwljYW5jZWxfd29y a19zeW5jKCZlbmdpbmUtPnJlcXVlc3Rfd29yayk7Cj4gKwo+ICAgCWlmIChlbmdpbmUtPmJ1ZmZl cikgewo+ICAgCQlpbnRlbF9zdG9wX2VuZ2luZShlbmdpbmUpOwo+ICAgCQlXQVJOX09OKCFJU19H RU4yKGRldl9wcml2KSAmJiAoSTkxNV9SRUFEX01PREUoZW5naW5lKSAmIE1PREVfSURMRSkgPT0g MCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDNmMzlk YWYuLjUxNzc5YjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5o Cj4gQEAgLTM0Nyw2ICszNDcsOSBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsKPiAgIAl1MzIg KCpnZXRfY21kX2xlbmd0aF9tYXNrKSh1MzIgY21kX2hlYWRlcik7Cj4KPiAgIAlzcGlubG9ja190 IGZlbmNlX2xvY2s7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGZlbmNlX3NpZ25hbF9saXN0Owo+ICsK PiArCXN0cnVjdCB3b3JrX3N0cnVjdCByZXF1ZXN0X3dvcms7Cj4gICB9Owo+Cj4gICBzdGF0aWMg aW5saW5lIGJvb2wKPgoKUmVnYXJkcywKClR2cnRrbwoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==