From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v7] drm/i915: Slaughter the thundering i915_wait_request herd Date: Mon, 7 Dec 2015 15:08:28 +0000 Message-ID: <5665A0EC.7040909@linux.intel.com> References: <565DE84C.6040300@intel.com> <1449159727-27526-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 6B8E36E64B for ; Mon, 7 Dec 2015 07:08:43 -0800 (PST) In-Reply-To: <1449159727-27526-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMDMvMTIvMTUgMTY6MjIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPbmUgcGFydGlj dWxhcmx5IHN0cmVzc2Z1bCBzY2VuYXJpbyBjb25zaXN0cyBvZiBtYW55IGluZGVwZW5kZW50IHRh c2tzCj4gYWxsIGNvbXBldGluZyBmb3IgR1BVIHRpbWUgYW5kIHdhaXRpbmcgdXBvbiB0aGUgcmVz dWx0cyAoZS5nLiByZWFsdGltZQo+IHRyYW5zY29kaW5nIG9mIG1hbnksIG1hbnkgc3RyZWFtcyku IE9uZSBib3R0bGVuZWNrIGluIHBhcnRpY3VsYXIgaXMgdGhhdAo+IGVhY2ggY2xpZW50IHdhaXRz IG9uIGl0cyBvd24gcmVzdWx0cywgYnV0IGV2ZXJ5IGNsaWVudCBpcyB3b2tlbiB1cCBhZnRlcgo+ IGV2ZXJ5IGJhdGNoYnVmZmVyIC0gaGVuY2UgdGhlIHRodW5kZXIgb2YgaG9vdmVzIGFzIHRoZW4g ZXZlcnkgY2xpZW50IG11c3QKPiBkbyBpdHMgaGVhdnl3ZWlnaHQgZGFuY2UgdG8gcmVhZCBhIGNv aGVyZW50IHNlcW5vIHRvIHNlZSBpZiBpdCBpcyB0aGUKPiBsdWNreSBvbmUuCj4KPiBJZGVhbGx5 LCB3ZSBvbmx5IHdhbnQgb25lIGNsaWVudCB0byB3YWtlIHVwIGFmdGVyIHRoZSBpbnRlcnJ1cHQg YW5kCj4gY2hlY2sgaXRzIHJlcXVlc3QgZm9yIGNvbXBsZXRpb24uIFNpbmNlIHRoZSByZXF1ZXN0 cyBtdXN0IHJldGlyZSBpbgo+IG9yZGVyLCB3ZSBjYW4gc2VsZWN0IHRoZSBmaXJzdCBjbGllbnQg b24gdGhlIG9sZGVzdCByZXF1ZXN0IHRvIGJlIHdva2VuLgo+IE9uY2UgdGhhdCBjbGllbnQgaGFz IGNvbXBsZXRlZCBoaXMgd2FpdCwgd2UgY2FuIHRoZW4gd2FrZSB1cCB0aGUKPiBuZXh0IGNsaWVu dCBhbmQgc28gb24uCj4KPiB2MjogQ29udmVydCBmcm9tIGEga3dvcmtlciBwZXIgZW5naW5lIGlu dG8gYSBkZWRpY2F0ZWQga3RocmVhZCBmb3IgdGhlCj4gYm90dG9tLWhhbGYuCj4gdjM6IFJlbmFt ZSByZXF1ZXN0IG1lbWJlcnMgYW5kIHR3ZWFrIGNvbW1lbnRzLgo+IHY0OiBVc2UgYSBwZXItZW5n aW5lIHNwaW5sb2NrIGluIHRoZSBicmVhZGNydW1icyBib3R0b20taGFsZi4KPiB2NTogRml4IHJh Y2UgaW4gbG9ja2xlc3NseSBjaGVja2luZyB3YWl0ZXIgc3RhdHVzIGFuZCBraWNraW5nIHRoZSB0 YXNrIG9uCj4gYWRkaW5nIGEgbmV3IHdhaXRlci4KPiB2NjogRml4IGRlY2lkaW5nIHdoZW4gdG8g Zm9yY2UgdGhlIHRpbWVyIHRvIGhpZGUgbWlzc2luZyBpbnRlcnJ1cHRzLgo+IHY3OiBNb3ZlIHRo ZSBib3R0b20taGFsZiBmcm9tIHRoZSBrdGhyZWFkIHRvIHRoZSBmaXJzdCBjbGllbnQgcHJvY2Vz cy4KCkkgbGlrZSB0aGUgaWRlYSBhIGxvdCBzbyBJJ2xsIG1ha2Ugc29tZSBjb21tZW50cyBldmVu IGJlZm9yZSB5b3UgcG9zdCB2OSAKb3IgbGF0ZXIuIDopCgo+IFNpZ25lZC1vZmYtYnk6IENocmlz IFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiAiUm9nb3poa2luLCBEbWl0 cnkgViIgPGRtaXRyeS52LnJvZ296aGtpbkBpbnRlbC5jb20+Cj4gQ2M6ICJHb25nLCBaaGlwZW5n IiA8emhpcGVuZy5nb25nQGludGVsLmNvbT4KPiBDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51 cnN1bGluQGxpbnV4LmludGVsLmNvbT4KPiBDYzogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9u QGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAg ICAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAg ICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8 ICAgMyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICB8IDEw OCArKysrKystLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuYyAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAg ICAgICB8ICAxNyArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJz LmMgfCAxOTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICB8ICAgNSArLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jICB8ICAgNSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oICB8ICA0NyArKysrKysrLQo+ICAgMTAgZmlsZXMgY2hhbmdl ZCwgMjk3IGluc2VydGlvbnMoKyksIDkwIGRlbGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKPgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlCj4gaW5kZXggMDg1MWRlMDdiZDEzLi5kM2I5ZDM2MTg3MTkgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQo+IEBAIC0zNSw2ICszNSw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJz ZXIubyBcCj4gICAJICBpOTE1X2dlbV91c2VycHRyLm8gXAo+ICAgCSAgaTkxNV9ncHVfZXJyb3Iu byBcCj4gICAJICBpOTE1X3RyYWNlX3BvaW50cy5vIFwKPiArCSAgaW50ZWxfYnJlYWRjcnVtYnMu byBcCj4gICAJICBpbnRlbF9scmMubyBcCj4gICAJICBpbnRlbF9tb2NzLm8gXAo+ICAgCSAgaW50 ZWxfcmluZ2J1ZmZlci5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4 IDA1ODNlZGE2NDJkNy4uNjhmYmU0ZDFmOTFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBAQCAtMjMyMyw3ICsyMzIzLDcgQEAgc3RhdGljIGludCBjb3VudF9pcnFfd2Fp dGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAgIAlpbnQgaTsKPgo+ICAgCWZv cl9lYWNoX3JpbmcocmluZywgaTkxNSwgaSkKPiAtCQljb3VudCArPSByaW5nLT5pcnFfcmVmY291 bnQ7Cj4gKwkJY291bnQgKz0gaW50ZWxfZW5naW5lX2hhc193YWl0ZXIocmluZyk7CgpEb24ndCBj YXJlIGhvdyBtYW55IGFueSBsb25nZXI/IE9rYXkgaW4gZGVidWdmcywgYnV0IGFsc28gaW4gZXJy b3IgY2FwdHVyZT8KCj4gICAJcmV0dXJuIGNvdW50Owo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IGluZGV4IDJhY2YyY2YwYjgzNi4uMzBkNDcwOTM0ODc0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gQEAgLTEzODMsNyArMTM4Myw3IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJv ciB7Cj4gICAjZGVmaW5lIEk5MTVfU1RPUF9SSU5HX0FMTE9XX1dBUk4gICAgICAoMSA8PCAzMCkK Pgo+ICAgCS8qIEZvciBtaXNzZWQgaXJxL3NlcW5vIHNpbXVsYXRpb24uICovCj4gLQl1bnNpZ25l ZCBpbnQgdGVzdF9pcnFfcmluZ3M7Cj4gKwl1bnNpZ25lZCBsb25nIHRlc3RfaXJxX3JpbmdzOwo+ ICAgfTsKPgo+ICAgZW51bSBtb2Rlc2V0X3Jlc3RvcmUgewo+IEBAIC0yODAwLDcgKzI4MDAsNiBA QCBpYnhfZGlzYWJsZV9kaXNwbGF5X2ludGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIHVpbnQzMl90IGJpdHMpCj4gICAJaWJ4X2Rpc3BsYXlfaW50ZXJydXB0X3VwZGF0 ZShkZXZfcHJpdiwgYml0cywgMCk7Cj4gICB9Cj4KPiAtCj4gICAvKiBpOTE1X2dlbS5jICovCj4g ICBpbnQgaTkxNV9nZW1fY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCj4gICAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKPiBpbmRleCA2ZTA1MTQwMmUzNDAuLjhkY2JhYzU4NGU4NCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0xMTI1LDE3ICsxMTI1LDYgQEAgaTkxNV9nZW1fY2hl Y2tfd2VkZ2UodW5zaWduZWQgcmVzZXRfY291bnRlciwgYm9vbCBpbnRlcnJ1cHRpYmxlKQo+ICAg CXJldHVybiAwOwo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lkIGZha2VfaXJxKHVuc2lnbmVkIGxvbmcg ZGF0YSkKPiAtewo+IC0Jd2FrZV91cF9wcm9jZXNzKChzdHJ1Y3QgdGFza19zdHJ1Y3QgKilkYXRh KTsKPiAtfQo+IC0KPiAtc3RhdGljIGJvb2wgbWlzc2VkX2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gLQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcp Cj4gLXsKPiAtCXJldHVybiB0ZXN0X2JpdChyaW5nLT5pZCwgJmRldl9wcml2LT5ncHVfZXJyb3Iu bWlzc2VkX2lycV9yaW5ncyk7Cj4gLX0KPiAtCj4gICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb2Nh bF9jbG9ja191cyh1bnNpZ25lZCAqY3B1KQo+ICAgewo+ICAgCXVuc2lnbmVkIGxvbmcgdDsKPiBA QCAtMTE4Myw5ICsxMTcyLDYgQEAgc3RhdGljIGludCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgc3RhdGUpCj4gICAJICogdGFrZXMgdG8g c2xlZXAgb24gYSByZXF1ZXN0LCBvbiB0aGUgb3JkZXIgb2YgYSBtaWNyb3NlY29uZC4KPiAgIAkg Ki8KPgo+IC0JaWYgKHJlcS0+cmluZy0+aXJxX3JlZmNvdW50KQo+IC0JCXJldHVybiAtRUJVU1k7 Cj4gLQo+ICAgCS8qIE9ubHkgc3BpbiBpZiB3ZSBrbm93IHRoZSBHUFUgaXMgcHJvY2Vzc2luZyB0 aGlzIHJlcXVlc3QgKi8KPiAgIAlpZiAoIWk5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChyZXEsIGZh bHNlKSkKPiAgIAkJcmV0dXJuIC1FQUdBSU47Cj4gQEAgLTEyMDQsOSArMTE5MCw2IEBAIHN0YXRp YyBpbnQgX19pOTE1X3NwaW5fcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJl cSwgaW50IHN0YXRlKQo+ICAgCQljcHVfcmVsYXhfbG93bGF0ZW5jeSgpOwo+ICAgCX0KPgo+IC0J aWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwgZmFsc2UpKQo+IC0JCXJldHVybiAw Owo+IC0KPiAgIAlyZXR1cm4gLUVBR0FJTjsKPiAgIH0KPgo+IEBAIC0xMjMxLDI2ICsxMjE0LDE5 IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLAo+ICAgCQkJczY0ICp0aW1lb3V0LAo+ICAgCQkJc3RydWN0IGludGVsX3Jwc19jbGllbnQg KnJwcykKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBpOTE1X2dlbV9y ZXF1ZXN0X2dldF9yaW5nKHJlcSk7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ ZGV2Owo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKPiAtCWNvbnN0IGJvb2wgaXJxX3Rlc3RfaW5fcHJvZ3Jlc3MgPQo+IC0JCUFDQ0VTU19P TkNFKGRldl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFfcmluZ3MpICYgaW50ZWxfcmluZ19mbGFn KHJpbmcpOwo+ICAgCWludCBzdGF0ZSA9IGludGVycnVwdGlibGUgPyBUQVNLX0lOVEVSUlVQVElC TEUgOiBUQVNLX1VOSU5URVJSVVBUSUJMRTsKPiAtCURFRklORV9XQUlUKHdhaXQpOwo+IC0JdW5z aWduZWQgbG9uZyB0aW1lb3V0X2V4cGlyZTsKPiArCXN0cnVjdCBpbnRlbF9icmVhZGNydW1iIHdh aXQ7Cj4gKwl1bnNpZ25lZCBsb25nIHRpbWVvdXRfcmVtYWluOwo+ICAgCXM2NCBiZWZvcmUsIG5v dzsKPiAgIAlpbnQgcmV0Owo+Cj4gLQlXQVJOKCFpbnRlbF9pcnFzX2VuYWJsZWQoZGV2X3ByaXYp LCAiSVJRcyBkaXNhYmxlZCIpOwo+IC0KPiAgIAlpZiAobGlzdF9lbXB0eSgmcmVxLT5saXN0KSkK PiAgIAkJcmV0dXJuIDA7Cj4KPiAgIAlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVx LCB0cnVlKSkKPiAgIAkJcmV0dXJuIDA7Cj4KPiAtCXRpbWVvdXRfZXhwaXJlID0gMDsKPiArCXRp bWVvdXRfcmVtYWluID0gTUFYX1NDSEVEVUxFX1RJTUVPVVQ7Cj4gICAJaWYgKHRpbWVvdXQpIHsK PiAgIAkJaWYgKFdBUk5fT04oKnRpbWVvdXQgPCAwKSkKPiAgIAkJCXJldHVybiAtRUlOVkFMOwo+ IEBAIC0xMjU4LDM0ICsxMjM0LDQzIEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQlpZiAoKnRpbWVvdXQgPT0gMCkKPiAgIAkJ CXJldHVybiAtRVRJTUU7Cj4KPiAtCQl0aW1lb3V0X2V4cGlyZSA9IGppZmZpZXMgKyBuc2Vjc190 b19qaWZmaWVzX3RpbWVvdXQoKnRpbWVvdXQpOwo+ICsJCXRpbWVvdXRfcmVtYWluID0gbnNlY3Nf dG9famlmZmllc190aW1lb3V0KCp0aW1lb3V0KTsKPiAgIAl9Cj4KPiAtCWlmIChJTlRFTF9JTkZP KGRldl9wcml2KS0+Z2VuID49IDYpCj4gLQkJZ2VuNl9ycHNfYm9vc3QoZGV2X3ByaXYsIHJwcywg cmVxLT5lbWl0dGVkX2ppZmZpZXMpOwo+IC0KPiAgIAkvKiBSZWNvcmQgY3VycmVudCB0aW1lIGlu IGNhc2UgaW50ZXJydXB0ZWQgYnkgc2lnbmFsLCBvciB3ZWRnZWQgKi8KPiAgIAl0cmFjZV9pOTE1 X2dlbV9yZXF1ZXN0X3dhaXRfYmVnaW4ocmVxKTsKPiAgIAliZWZvcmUgPSBrdGltZV9nZXRfcmF3 X25zKCk7Cj4KPiAtCS8qIE9wdGltaXN0aWMgc3BpbiBmb3IgdGhlIG5leHQgamlmZmllIGJlZm9y ZSB0b3VjaGluZyBJUlFzICovCj4gLQlyZXQgPSBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHJlcSwgc3Rh dGUpOwo+IC0JaWYgKHJldCA9PSAwKQo+IC0JCWdvdG8gb3V0Owo+ICsJaWYgKElOVEVMX0lORk8o cmVxLT5pOTE1KS0+Z2VuID49IDYpCj4gKwkJZ2VuNl9ycHNfYm9vc3QocmVxLT5pOTE1LCBycHMs IHJlcS0+ZW1pdHRlZF9qaWZmaWVzKTsKPgo+IC0JaWYgKCFpcnFfdGVzdF9pbl9wcm9ncmVzcyAm JiBXQVJOX09OKCFyaW5nLT5pcnFfZ2V0KHJpbmcpKSkgewo+IC0JCXJldCA9IC1FTk9ERVY7Cj4g LQkJZ290byBvdXQ7Cj4gKwkvKiBPcHRpbWlzdGljIHNwaW4gZm9yIHRoZSBuZXh0IGppZmZpZSBi ZWZvcmUgdG91Y2hpbmcgSVJRcyAqLwoKRXhhY3RseSB0aGUgb3Bwb3NpdGUhIDopCgo+ICsJaWYg KGludGVsX2JyZWFkY3J1bWJzX2FkZF93YWl0ZXIocmVxLCAmd2FpdCkpIHsKPiArCQlyZXQgPSBf X2k5MTVfc3Bpbl9yZXF1ZXN0KHJlcSwgc3RhdGUpOwo+ICsJCWlmIChyZXQgPT0gMCkKPiArCQkJ Z290byBvdXQ7Cj4gICAJfQo+Cj4gICAJZm9yICg7Oykgewo+IC0JCXN0cnVjdCB0aW1lcl9saXN0 IHRpbWVyOwo+IC0KPiAtCQlwcmVwYXJlX3RvX3dhaXQoJnJpbmctPmlycV9xdWV1ZSwgJndhaXQs IHN0YXRlKTsKPiArCQlzZXRfdGFza19zdGF0ZSh3YWl0LnRhc2ssIHN0YXRlKTsKPiArCj4gKwkJ LyogRW5zdXJlIG91ciByZWFkIG9mIHRoZSBzZXFubyBpcyBjb2hlcmVudCBzbyB0aGF0IHdlCj4g KwkJICogZG8gbm90ICJtaXNzIGFuIGludGVycnVwdCIgKGkuZS4gaWYgdGhpcyBpcyB0aGUgbGFz dAo+ICsJCSAqIHJlcXVlc3QgYW5kIHRoZSBzZXFubyB3cml0ZSBmcm9tIHRoZSBHUFUgaXMgbm90 IHZpc2libGUKPiArCQkgKiBieSB0aGUgdGltZSB0aGUgaW50ZXJydXB0IGZpcmVzLCB3ZSB3aWxs IHNlZSB0aGF0IHRoZQo+ICsJCSAqIHJlcXVlc3QgaXMgaW5jb21wbGV0ZSBhbmQgZ28gYmFjayB0 byBzbGVlcCBhd2FpdGluZwo+ICsJCSAqIGFub3RoZXIgaW50ZXJydXB0IHRoYXQgd2lsbCBuZXZl ciBjb21lLikKPiArCQkgKgo+ICsJCSAqIFN0cmljdGx5LCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhp cyBvbmNlIGFmdGVyIGFuIGludGVycnVwdCwKPiArCQkgKiBidXQgaXQgaXMgZWFzaWVyIGFuZCBz YWZlciB0byBkbyBpdCBldmVyeSB0aW1lIHRoZSB3YWl0ZXIKPiArCQkgKiBpcyB3b2tlbi4KPiAr CQkgKi8KPiArCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCBmYWxzZSkpIHsK PiArCQkJcmV0ID0gMDsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+Cj4gLQkJLyogV2UgbmVlZCB0byBj aGVjayB3aGV0aGVyIGFueSBncHUgcmVzZXQgaGFwcGVuZWQgaW4gYmV0d2Vlbgo+IC0JCSAqIHRo ZSBjYWxsZXIgZ3JhYmJpbmcgdGhlIHNlcW5vIGFuZCBub3cgLi4uICovCj4gLQkJaWYgKHJlcS0+ cmVzZXRfY291bnRlciAhPSBpOTE1X3Jlc2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVfZXJyb3Ip KSB7Cj4gKwkJaWYgKHVubGlrZWx5KHJlcS0+cmVzZXRfY291bnRlciAhPSBpOTE1X3Jlc2V0X2Nv dW50ZXIoJnJlcS0+aTkxNS0+Z3B1X2Vycm9yKSkpIHsKPiAgIAkJCS8qIEFzIHdlIGRvIG5vdCBy ZXF1ZXVlIHRoZSByZXF1ZXN0IG92ZXIgYSBHUFUgcmVzZXQsCj4gICAJCQkgKiBpZiBvbmUgZG9l cyBvY2N1ciB3ZSBrbm93IHRoYXQgdGhlIHJlcXVlc3QgaXMKPiAgIAkJCSAqIGVmZmVjdGl2ZWx5 IGNvbXBsZXRlLgo+IEBAIC0xMjk0LDQ2ICsxMjc5LDIxIEBAIGludCBfX2k5MTVfd2FpdF9yZXF1 ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAgCQkJYnJlYWs7Cj4gICAJ CX0KPgo+IC0JCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIGZhbHNlKSkgewo+ IC0JCQlyZXQgPSAwOwo+IC0JCQlicmVhazsKPiAtCQl9Cj4gLQo+IC0JCWlmIChzaWduYWxfcGVu ZGluZ19zdGF0ZShzdGF0ZSwgY3VycmVudCkpIHsKPiArCQlpZiAoc2lnbmFsX3BlbmRpbmdfc3Rh dGUoc3RhdGUsIHdhaXQudGFzaykpIHsKPiAgIAkJCXJldCA9IC1FUkVTVEFSVFNZUzsKPiAgIAkJ CWJyZWFrOwo+ICAgCQl9Cj4KPiAtCQlpZiAodGltZW91dCAmJiB0aW1lX2FmdGVyX2VxKGppZmZp ZXMsIHRpbWVvdXRfZXhwaXJlKSkgewo+ICsJCXRpbWVvdXRfcmVtYWluID0gaW9fc2NoZWR1bGVf dGltZW91dCh0aW1lb3V0X3JlbWFpbik7Cj4gKwkJaWYgKHRpbWVvdXRfcmVtYWluID09IDApIHsK PiAgIAkJCXJldCA9IC1FVElNRTsKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gLQo+IC0JCWk5MTVf cXVldWVfaGFuZ2NoZWNrKGRldl9wcml2KTsKPiAtCj4gLQkJdGltZXIuZnVuY3Rpb24gPSBOVUxM Owo+IC0JCWlmICh0aW1lb3V0IHx8IG1pc3NlZF9pcnEoZGV2X3ByaXYsIHJpbmcpKSB7Cj4gLQkJ CXVuc2lnbmVkIGxvbmcgZXhwaXJlOwo+IC0KPiAtCQkJc2V0dXBfdGltZXJfb25fc3RhY2soJnRp bWVyLCBmYWtlX2lycSwgKHVuc2lnbmVkIGxvbmcpY3VycmVudCk7Cj4gLQkJCWV4cGlyZSA9IG1p c3NlZF9pcnEoZGV2X3ByaXYsIHJpbmcpID8gamlmZmllcyArIDEgOiB0aW1lb3V0X2V4cGlyZTsK PiAtCQkJbW9kX3RpbWVyKCZ0aW1lciwgZXhwaXJlKTsKPiAtCQl9Cj4gLQo+IC0JCWlvX3NjaGVk dWxlKCk7Cj4gLQo+IC0JCWlmICh0aW1lci5mdW5jdGlvbikgewo+IC0JCQlkZWxfc2luZ2xlc2hv dF90aW1lcl9zeW5jKCZ0aW1lcik7Cj4gLQkJCWRlc3Ryb3lfdGltZXJfb25fc3RhY2soJnRpbWVy KTsKPiAtCQl9Cj4gICAJfQo+IC0JaWYgKCFpcnFfdGVzdF9pbl9wcm9ncmVzcykKPiAtCQlyaW5n LT5pcnFfcHV0KHJpbmcpOwo+IC0KPiAtCWZpbmlzaF93YWl0KCZyaW5nLT5pcnFfcXVldWUsICZ3 YWl0KTsKPiAtCj4gKwlfX3NldF90YXNrX3N0YXRlKHdhaXQudGFzaywgVEFTS19SVU5OSU5HKTsK PiAgIG91dDoKPiAgIAlub3cgPSBrdGltZV9nZXRfcmF3X25zKCk7Cj4gKwlpbnRlbF9icmVhZGNy dW1ic19yZW1vdmVfd2FpdGVyKHJlcSwgJndhaXQpOwo+ICAgCXRyYWNlX2k5MTVfZ2VtX3JlcXVl c3Rfd2FpdF9lbmQocmVxKTsKPgo+ICAgCWlmICh0aW1lb3V0KSB7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggMDZjYTQwODI3MzViLi5mODA1ZDExN2YzZDEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBAQCAtOTAwLDcgKzkwMCw3 IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmVjb3JkX3Jpbmdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgIAkJZXJpbmctPmluc3Rkb25lID0gSTkxNV9SRUFEKEdFTjJfSU5TVERPTkUpOwo+ ICAgCX0KPgo+IC0JZXJpbmctPndhaXRpbmcgPSB3YWl0cXVldWVfYWN0aXZlKCZyaW5nLT5pcnFf cXVldWUpOwo+ICsJZXJpbmctPndhaXRpbmcgPSBpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihyaW5n KTsKPiAgIAllcmluZy0+aW5zdHBtID0gSTkxNV9SRUFEKFJJTkdfSU5TVFBNKHJpbmctPm1taW9f YmFzZSkpOwo+ICAgCWVyaW5nLT5zZXFubyA9IHJpbmctPmdldF9zZXFubyhyaW5nLCBmYWxzZSk7 Cj4gICAJZXJpbmctPmFjdGhkID0gaW50ZWxfcmluZ19nZXRfYWN0aXZlX2hlYWQocmluZyk7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggMjhjMDMyOWY4MjgxLi41N2IxMTMxMzJmZDcg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBAQCAtOTk2LDEyICs5OTYsMTEgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfcnBzX2NoYW5nZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQo+Cj4gICBzdGF0aWMgdm9pZCBub3RpZnlfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKQo+ICAgewo+IC0JaWYgKCFpbnRlbF9yaW5nX2luaXRpYWxpemVkKHJpbmcpKQo+ ICsJaWYgKHJpbmctPmk5MTUgPT0gTlVMTCkKCkdsYW5jZWQgc29tZXRoaW5nIGFib3V0IHRoaXMg aW4gc29tZSBvdGhlciB0aHJlYWQsIG1heWJlIGJlc3QgdG8ga2VlcCBpdCAKY29uc29saWRhdGVk IGluIG9uZSBwYXRjaD8KCj4gICAJCXJldHVybjsKPgo+ICAgCXRyYWNlX2k5MTVfZ2VtX3JlcXVl c3Rfbm90aWZ5KHJpbmcpOwo+IC0KPiAtCXdha2VfdXBfYWxsKCZyaW5nLT5pcnFfcXVldWUpOwo+ ICsJaW50ZWxfZW5naW5lX3dha2V1cChyaW5nKTsKPiAgIH0KPgo+ICAgc3RhdGljIHZvaWQgdmx2 X2MwX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IEBAIC0xMDgzLDcg KzEwODIsNyBAQCBzdGF0aWMgYm9vbCBhbnlfd2FpdGVycyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gICAJaW50IGk7Cj4KPiAgIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9w cml2LCBpKQo+IC0JCWlmIChyaW5nLT5pcnFfcmVmY291bnQpCj4gKwkJaWYgKGludGVsX2VuZ2lu ZV9oYXNfd2FpdGVyKHJpbmcpKQo+ICAgCQkJcmV0dXJuIHRydWU7Cj4KPiAgIAlyZXR1cm4gZmFs c2U7Cj4gQEAgLTI0MTEsNyArMjQxMCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZXJyb3Jfd2FrZV91 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4KPiAgIAkvKiBXYWtlIHVwIF9f d2FpdF9zZXFubywgcG90ZW50aWFsbHkgaG9sZGluZyBkZXYtPnN0cnVjdF9tdXRleC4gKi8KPiAg IAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKQo+IC0JCXdha2VfdXBfYWxsKCZyaW5n LT5pcnFfcXVldWUpOwo+ICsJCWludGVsX2VuZ2luZV93YWtldXAocmluZyk7Cj4KPiAgIAkvKiBX YWtlIHVwIGludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcywgaG9sZGluZyBjcnRjLT5t dXRleC4gKi8KPiAgIAl3YWtlX3VwX2FsbCgmZGV2X3ByaXYtPnBlbmRpbmdfZmxpcF9xdWV1ZSk7 Cj4gQEAgLTI5ODYsMTYgKzI5ODUsMTggQEAgc3RhdGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxh cHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICAJCQlpZiAocmluZ19pZGxlKHJpbmcs IHNlcW5vKSkgewo+ICAgCQkJCXJpbmctPmhhbmdjaGVjay5hY3Rpb24gPSBIQU5HQ0hFQ0tfSURM RTsKPgo+IC0JCQkJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJnJpbmctPmlycV9xdWV1ZSkpIHsKPiAr CQkJCWlmIChpbnRlbF9lbmdpbmVfaGFzX3dhaXRlcihyaW5nKSkgewo+ICAgCQkJCQkvKiBJc3N1 ZSBhIHdha2UtdXAgdG8gY2F0Y2ggc3R1Y2sgaC93LiAqLwo+ICAgCQkJCQlpZiAoIXRlc3RfYW5k X3NldF9iaXQocmluZy0+aWQsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLm1pc3NlZF9pcnFfcmluZ3Mp KSB7Cj4gLQkJCQkJCWlmICghKGRldl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFfcmluZ3MgJiBp bnRlbF9yaW5nX2ZsYWcocmluZykpKQo+ICsJCQkJCQlpZiAoIXRlc3RfYml0KHJpbmctPmlkLCAm ZGV2X3ByaXYtPmdwdV9lcnJvci50ZXN0X2lycV9yaW5ncykpCj4gICAJCQkJCQkJRFJNX0VSUk9S KCJIYW5nY2hlY2sgdGltZXIgZWxhcHNlZC4uLiAlcyBpZGxlXG4iLAo+ICAgCQkJCQkJCQkgIHJp bmctPm5hbWUpOwo+ICAgCQkJCQkJZWxzZQo+ICAgCQkJCQkJCURSTV9JTkZPKCJGYWtlIG1pc3Nl ZCBpcnEgb24gJXNcbiIsCj4gICAJCQkJCQkJCSByaW5nLT5uYW1lKTsKPiAtCQkJCQkJd2FrZV91 cF9hbGwoJnJpbmctPmlycV9xdWV1ZSk7Cj4gKwkJCQkJCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVt X2hpZ2hwcmlfd3EsCj4gKwkJCQkJCQkJICZyaW5nLT5icmVhZGNydW1icy5pcnEsCj4gKwkJCQkJ CQkJIDApOwo+ICAgCQkJCQl9Cj4gICAJCQkJCS8qIFNhZmVndWFyZCBhZ2FpbnN0IGRyaXZlciBm YWlsdXJlICovCj4gICAJCQkJCXJpbmctPmhhbmdjaGVjay5zY29yZSArPSBCVVNZOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi4xN2Q1MTI2OWI3NzQKPiAtLS0gL2Rldi9udWxsCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYnJlYWRjcnVtYnMuYwo+IEBAIC0wLDAgKzEs MTk3IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9uCj4g KyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0 byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQg YXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNv cGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQ Uk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9S Cj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJ RVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFV VEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5H Uwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGxp bnV4L2t0aHJlYWQuaD4KCk5vdCBhbnkgbW9yZS4KCj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9kcnYu aCIKPiArCj4gK3N0YXRpYyBib29sIGlycV9nZXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQo+ICt7Cj4gKwlpZiAodGVzdF9iaXQoZW5naW5lLT5pZCwgJmVuZ2luZS0+aTkxNS0+Z3B1 X2Vycm9yLnRlc3RfaXJxX3JpbmdzKSkKPiArCQlyZXR1cm4gZmFsc2U7CgpJIGRvbid0IHVuZGVy c3RhbmQgd2h5IGtub3dsZWRnZSBvZiB0aGlzIGRlYnVnZnMgaW50ZXJmYWNlIG5lZWRzIHRvIGJl IApzcHJpbmtsZWQgYXJvdW5kPyBJIG1lYW4sIEkgYW0gbm90IGV2ZW4gMTAwJSBzdXJlIHdoYXQg dGhlIGRlYnVnZnMgCmludGVyZmFjZSBpcyBmb3IuIEJ1dCBpdCBsb29rcyB0byBiZSBhYm91dCBz b2Z0d2FyZSBtYXNraW5nIHVzZXIgCmludGVycnVwdHMgb24gYSByaW5nPyBXaHkgbm90IGp1c3Qg bWFzayB0aGUgaW50ZXJydXB0IGRlbGl2ZXJ5IGJhc2VkIG9uIAp0aGlzIG1hc2sgYXQgdGhlIHNv dXJjZT8KCj4gKwo+ICsJaWYgKCFpbnRlbF9pcnFzX2VuYWJsZWQoZW5naW5lLT5pOTE1KSkKPiAr CQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0dXJuIGVuZ2luZS0+aXJxX2dldChlbmdpbmUpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9icmVhZGNydW1ic19pcnEoc3RydWN0IHdvcmtf c3RydWN0ICp3b3JrKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIgPQo+ICsJ CWNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMsIGlycS53b3JrKTsK PiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9Cj4gKwkJY29udGFpbmVyX29mKGIs IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MsIGJyZWFkY3J1bWJzKTsKPiArCj4gKwkvKiBXZSB1bm1h c2sgdGhlIHVzZXItaW50ZXJydXB0IGluIHRoZSBiYWNrZ3JvdW5kIHNvIHRoYXQgdGhlCj4gKwkg KiBmaXJzdC13YWl0ZXIgY2FuIGRvIGEgbGl0dGxlIGJ1c3l3YWl0aW5nIGJlZm9yZSBzbGVlcGlu ZyBhbmQKPiArCSAqIG5vdCBpbmN1ciBhZGRpdGlvbmFsIGxhdGVuY3kgZnJvbSBzZXR0aW5nIHVw IHRoZSBJUlEuCj4gKwkgKgo+ICsJICogVGhlIHdvcmtlciBhbHNvIHBlcnNpc3RzIGluIGNhc2Ug d2UgY2Fubm90IGVuYWJsZSBpbnRlcnJ1cHRzLAo+ICsJICogb3IgaWYgd2UgaGF2ZSBwcmV2aW91 c2x5IHNlZW4gc2Vxbm8vaW50ZXJydXB0IGluY29oZXJlbmN5Cj4gKwkgKiAoIm1pc3NlZCBpbnRl cnJ1cHQiIHN5bmRyb21lKS4gSGVyZSB0aGUgd29ya2VyIHdpbGwgd2FrZSB1cAo+ICsJICogZXZl cnkgamlmZmllIGluIG9yZGVyIHRvIGtpY2sgdGhlIG9yaWdpbmFsIHdhaXRlciB0byBkbyB0aGUK PiArCSAqIGNvaGVyZW50IHNlcW5vIGNoZWNrLiAoTm90IGFzIGVmZmljaWVudCBhcyBoYXZpbmcg YSB0aW1lcgo+ICsJICogc291cmNlIGtpY2sgdGhlIHdhaXRlciBkaXJlY3RseSwgYnV0IHRoaXMg c2hvdWxkIG9ubHkgaGF2ZSB0bwo+ICsJICogYmUgdXNlZCBpbiByYXJlIGNhc2VzIHdoZXJlIHdl IHRyeSB0byB3b3JrYXJvdW5kIHNvbWUKPiArCSAqIGhhcmR3YXJlL2RyaXZlciBmYWlsdXJlcy4p Cj4gKwkgKi8KPiArCj4gKwlzcGluX2xvY2soJmItPmxvY2spOwo+ICsJaWYgKGItPmZpcnN0X3dh aXRlcikgewo+ICsJCWlmICghYi0+cnBtX3dha2Vsb2NrKSB7Cj4gKwkJCWludGVsX3J1bnRpbWVf cG1fZ2V0KGVuZ2luZS0+aTkxNSk7Cj4gKwkJCWItPnJwbV93YWtlbG9jayA9IHRydWU7Cj4gKwkJ fQo+ICsKPiArCQlpZiAoIWItPmlycV9lbmFibGVkKSB7Cj4gKwkJCWItPmlycV9lbmFibGVkID0g aXJxX2dldChlbmdpbmUpOwo+ICsJCQkvKiBJZiB3ZSB3ZXJlIGRlbGF5ZWQsIHRoZSBvcmlnaW5h bCB3YWl0ZXIgbWF5IGhhdmUKPiArCQkJICogZ29uZSB0byBzbGVlcCBhbHJlYWR5IGFuZCB3ZSBt YXkgaGF2ZSBtaXNzZWQgdGhlCj4gKwkJCSAqIGludGVycnVwdC4gU28gYWZ0ZXIgZW5hYmxpbmcg dGhlIGludGVycnVwdCwKPiArCQkJICoga2ljayB0aGUgd2FpdGVyLgo+ICsJCQkgKi8KPiArCQkJ d2FrZV91cF9wcm9jZXNzKGItPmZpcnN0X3dhaXRlcik7Cj4gKwkJfQo+ICsKPiArCQkvKiBObyBp bnRlcnJ1cHRzPyBLaWNrIHRoZSB3YWl0ZXIgZXZlcnkgamlmZmllISAqLwo+ICsJCWlmICghYi0+ aXJxX2VuYWJsZWQgfHwKPiArCQkgICAgdGVzdF9iaXQoZW5naW5lLT5pZCwKPiArCQkJICAgICAm ZW5naW5lLT5pOTE1LT5ncHVfZXJyb3IubWlzc2VkX2lycV9yaW5ncykpIHsKPiArCQkJd2FrZV91 cF9wcm9jZXNzKGItPmZpcnN0X3dhaXRlcik7Cj4gKwkJCXF1ZXVlX2RlbGF5ZWRfd29yayhzeXN0 ZW1faGlnaHByaV93cSwgJmItPmlycSwgMSk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQlpZiAo Yi0+aXJxX2VuYWJsZWQpIHsKPiArCQkJZW5naW5lLT5pcnFfcHV0KGVuZ2luZSk7Cj4gKwkJCWIt PmlycV9lbmFibGVkID0gZmFsc2U7Cj4gKwkJfQo+ICsJCWlmIChiLT5ycG1fd2FrZWxvY2spIHsK PiArCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoZW5naW5lLT5pOTE1KTsKPiArCQkJYi0+cnBtX3dh a2Vsb2NrID0gZmFsc2U7Cj4gKwkJfQo+ICsJfQo+ICsJc3Bpbl91bmxvY2soJmItPmxvY2spOwo+ ICt9Cj4gKwo+ICtpbmxpbmUgc3RydWN0IGludGVsX2JyZWFkY3J1bWIgKnRvX3dhaXQoc3RydWN0 IHJiX25vZGUgKm5vZGUpCj4gK3sKPiArCWlmIChub2RlID09IE5VTEwpCj4gKwkJcmV0dXJuIE5V TEw7Cj4gKwo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihub2RlLCBzdHJ1Y3QgaW50ZWxfYnJlYWRj cnVtYiwgbm9kZSk7Cj4gK30KPiArCj4gK2Jvb2wgaW50ZWxfYnJlYWRjcnVtYnNfYWRkX3dhaXRl cihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCj4gKwkJCQkgIHN0cnVjdCBp bnRlbF9icmVhZGNydW1iICp3YWl0KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMg KmIgPSAmcmVxdWVzdC0+cmluZy0+YnJlYWRjcnVtYnM7Cj4gKwlzdHJ1Y3QgcmJfbm9kZSAqKnAs ICpwYXJlbnQ7Cj4gKwlib29sIGZpcnN0ID0gZmFsc2U7Cj4gKwo+ICsJd2FpdC0+dGFzayA9IGN1 cnJlbnQ7Cj4gKwl3YWl0LT5zZXFubyA9IHJlcXVlc3QtPnNlcW5vOwo+ICsKPiArCXNwaW5fbG9j aygmYi0+bG9jayk7Cj4gKwo+ICsJLyogRmlyc3Q/IFVubWFzayB0aGUgdXNlciBpbnRlcnJ1cHQg Ki8KPiArCWlmIChiLT5maXJzdF93YWl0ZXIgPT0gTlVMTCkKPiArCQlxdWV1ZV9kZWxheWVkX3dv cmsoc3lzdGVtX2hpZ2hwcmlfd3EsICZiLT5pcnEsIDApOwoKV2hvIGVuYWJsZXMgaW50ZXJydXB0 cyBpZiB0aGUgd29ya2VyIGdldHMgc2NoZWR1bGVkIGFuZCBjb21wbGV0ZXMgYmVmb3JlIApzZXR0 aWcgYi0+Zmlyc3Rfd2FpdGVyIGJlbG93PwoKPiArCj4gKwkvKiBJbnNlcnQgdGhlIHJlcXVlc3Qg aW50byB0aGUgcmV0aXJtZW50IG9yZGVyZWQgbGlzdAo+ICsJICogb2Ygd2FpdGVycyBieSB3YWxr aW5nIHRoZSByYnRyZWUuIElmIHdlIGFyZSB0aGUgb2xkZXN0Cj4gKwkgKiBzZXFubyBpbiB0aGUg dHJlZSAodGhlIGZpcnN0IHRvIGJlIHJldGlyZWQpLCB0aGVuCj4gKwkgKiBzZXQgb3Vyc2VsdmVz IGFzIHRoZSBib3R0b20taGFsZi4KPiArCSAqLwo+ICsJZmlyc3QgPSB0cnVlOwo+ICsJcGFyZW50 ID0gTlVMTDsKPiArCXAgPSAmYi0+cmVxdWVzdHMucmJfbm9kZTsKPiArCXdoaWxlICgqcCkgewo+ ICsJCXBhcmVudCA9ICpwOwo+ICsJCWlmIChpOTE1X3NlcW5vX3Bhc3NlZCh3YWl0LT5zZXFubywg dG9fd2FpdChwYXJlbnQpLT5zZXFubykpIHsKPiArCQkJcCA9ICZwYXJlbnQtPnJiX3JpZ2h0Owo+ ICsJCQlmaXJzdCA9IGZhbHNlOwo+ICsJCX0gZWxzZQo+ICsJCQlwID0gJnBhcmVudC0+cmJfbGVm dDsKPiArCX0KPiArCXJiX2xpbmtfbm9kZSgmd2FpdC0+bm9kZSwgcGFyZW50LCBwKTsKPiArCXJi X2luc2VydF9jb2xvcigmd2FpdC0+bm9kZSwgJmItPnJlcXVlc3RzKTsKCldBUk5fT04oIWZpcnN0 ICYmICFiLT5maXJzdF93YWl0ZXIpIG1heWJlPwoKPiArCWlmIChmaXJzdCkKPiArCQliLT5maXJz dF93YWl0ZXIgPSB3YWl0LT50YXNrOwo+ICsKPiArCXNwaW5fdW5sb2NrKCZiLT5sb2NrKTsKPiAr Cj4gKwlyZXR1cm4gZmlyc3Q7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfYnJlYWRjcnVtYnNfcmVt b3ZlX3dhaXRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCj4gKwkJCQkg ICAgIHN0cnVjdCBpbnRlbF9icmVhZGNydW1iICp3YWl0KQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxf YnJlYWRjcnVtYnMgKmIgPSAmcmVxdWVzdC0+cmluZy0+YnJlYWRjcnVtYnM7Cj4gKwo+ICsJc3Bp bl9sb2NrKCZiLT5sb2NrKTsKPiArCj4gKwlpZiAoYi0+Zmlyc3Rfd2FpdGVyID09IHdhaXQtPnRh c2spIHsKPiArCQlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYiAqbmV4dDsKPiArCQlzdHJ1Y3QgdGFz a19zdHJ1Y3QgKnRhc2s7Cj4gKwo+ICsJCS8qIFdlIGFyZSB0aGUgY3VycmVudCBib3R0b20taGFs Zi4gRmluZCB0aGUgbmV4dCBjYW5kaWRhdGUsCj4gKwkJICogdGhlIGZpcnN0IHdhaXRlciBpbiB0 aGUgcXVldWUgb24gdGhlIHJlbWFpbmluZyBvbGRlc3QKPiArCQkgKiByZXF1ZXN0LiBBcyBtdWx0 aXBsZSBzZXFub3MgbWF5IGNvbXBsZXRlIGluIHRoZSB0aW1lIGl0Cj4gKwkJICogdGFrZXMgdXMg dG8gd2FrZSB1cCBhbmQgZmluZCB0aGUgbmV4dCB3YWl0ZXIsIHdlIGhhdmUgdG8KPiArCQkgKiB3 YWtlIHVwIHRoYXQgd2FpdGVyIGZvciBpdCB0byBwZXJmb3JtIGl0cyBvd24gY29oZXJlbnQKPiAr CQkgKiBjb21wbGV0aW9uIGNoZWNrLgo+ICsJCSAqLwoKRXF1YWxseSwgd2h5IHdvdWxkbid0IHdl IHdha2UgdXAgYWxsIHdhaXRlcnMgZm9yIHdoaWNoIHRoZSByZXF1ZXN0cyBoYXZlIApiZWVuIGNv bXBsZXRlZD8KCldvdWxkIGJlIGEgY2hlYXAgY2hlY2sgaGVyZSBhbmQgaXQgd291bGQgc2F2ZSBh IGNhc2NhZGluZyBncm93aW5nIApsYXRlbmN5IGFzIG9uZSB0YXNrIHdha2VzIHVwIHRoZSBuZXh0 IG9uZS4KCkV2ZW4gbW9yZSBiZW5lZml0IGZvciBtdWx0aXBsZSB3YWl0ZXJzIG9uIHRoZSBzYW1l IHJlcXVlc3QuCgo+ICsJCXRhc2sgPSBOVUxMOwo+ICsJCW5leHQgPSB0b193YWl0KHJiX25leHQo JndhaXQtPm5vZGUpKTsKPiArCQlpZiAobmV4dCkKPiArCQkJdGFzayA9IG5leHQtPnRhc2s7Cj4g Kwo+ICsJCWItPmZpcnN0X3dhaXRlciA9IHRhc2s7Cj4gKwkJaWYgKHRhc2spCj4gKwkJCXdha2Vf dXBfcHJvY2Vzcyh0YXNrKTsKPiArCQllbHNlCj4gKwkJCS8qIERpc2FibGUgdGhlIHVzZXIgaW50 ZXJydXB0cyAqLwo+ICsJCQltb2RfZGVsYXllZF93b3JrKHN5c3RlbV9oaWdocHJpX3dxLCAmYi0+ aXJxLCAxKTsKPiArCX0KPiArCj4gKwlyYl9lcmFzZSgmd2FpdC0+bm9kZSwgJmItPnJlcXVlc3Rz KTsKPiArCXNwaW5fdW5sb2NrKCZiLT5sb2NrKTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9lbmdp bmVfaW5pdF9icmVhZGNydW1icyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sK PiArCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9ICZlbmdpbmUtPmJyZWFkY3J1bWJzOwo+ ICsKPiArCXNwaW5fbG9ja19pbml0KCZiLT5sb2NrKTsKPiArCUlOSVRfREVMQVlFRF9XT1JLKCZi LT5pcnEsIGludGVsX2JyZWFkY3J1bWJzX2lycSk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZW5n aW5lX2ZpbmlfYnJlYWRjcnVtYnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICt7 Cj4gKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIgPSAmZW5naW5lLT5icmVhZGNydW1iczsK PiArCj4gKwlmbHVzaF9kZWxheWVkX3dvcmsoJmItPmlycSk7Cj4gK30KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+IGluZGV4IDA4Yjk4MmE2YWU4MS4uY2U1MTE5ZTJiY2VmIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMTkwNCw2ICsxOTA0LDggQEAgdm9pZCBpbnRlbF9s b2dpY2FsX3JpbmdfY2xlYW51cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICAgCWk5 MTVfY21kX3BhcnNlcl9maW5pX3JpbmcocmluZyk7Cj4gICAJaTkxNV9nZW1fYmF0Y2hfcG9vbF9m aW5pKCZyaW5nLT5iYXRjaF9wb29sKTsKPgo+ICsJaW50ZWxfZW5naW5lX2ZpbmlfYnJlYWRjcnVt YnMocmluZyk7Cj4gKwo+ICAgCWlmIChyaW5nLT5zdGF0dXNfcGFnZS5vYmopIHsKPiAgIAkJa3Vu bWFwKHNnX3BhZ2UocmluZy0+c3RhdHVzX3BhZ2Uub2JqLT5wYWdlcy0+c2dsKSk7Cj4gICAJCXJp bmctPnN0YXR1c19wYWdlLm9iaiA9IE5VTEw7Cj4gQEAgLTE5MjAsMTAgKzE5MjIsMTEgQEAgc3Rh dGljIGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW4KPiAgIAlyaW5nLT5idWZmZXIgPSBOVUxMOwo+Cj4gICAJcmlu Zy0+ZGV2ID0gZGV2Owo+ICsJcmluZy0+aTkxNSA9IHRvX2k5MTUoZGV2KTsKPiAgIAlJTklUX0xJ U1RfSEVBRCgmcmluZy0+YWN0aXZlX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZyaW5nLT5y ZXF1ZXN0X2xpc3QpOwo+ICAgCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYsICZyaW5nLT5i YXRjaF9wb29sKTsKPiAtCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnJpbmctPmlycV9xdWV1ZSk7Cj4g KwlpbnRlbF9lbmdpbmVfaW5pdF9icmVhZGNydW1icyhyaW5nKTsKPgo+ICAgCUlOSVRfTElTVF9I RUFEKCZyaW5nLT5idWZmZXJzKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xpc3Rf cXVldWUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCA1 MTFlZmU1NTZkNzMuLjhhMGYwMmU3M2E0ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmMKPiBAQCAtMjE1Nyw2ICsyMTU3LDcgQEAgc3RhdGljIGludCBpbnRlbF9p bml0X3JpbmdfYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gICAJV0FSTl9PTihyaW5n LT5idWZmZXIpOwo+Cj4gICAJcmluZy0+ZGV2ID0gZGV2Owo+ICsJcmluZy0+aTkxNSA9IHRvX2k5 MTUoZGV2KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+YWN0aXZlX2xpc3QpOwo+ICAgCUlO SVRfTElTVF9IRUFEKCZyaW5nLT5yZXF1ZXN0X2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZy aW5nLT5leGVjbGlzdF9xdWV1ZSk7Cj4gQEAgLTIxNjQsNyArMjE2NSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCWk5MTVf Z2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYsICZyaW5nLT5iYXRjaF9wb29sKTsKPiAgIAltZW1zZXQo cmluZy0+c2VtYXBob3JlLnN5bmNfc2Vxbm8sIDAsIHNpemVvZihyaW5nLT5zZW1hcGhvcmUuc3lu Y19zZXFubykpOwo+Cj4gLQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZyaW5nLT5pcnFfcXVldWUpOwo+ ICsJaW50ZWxfZW5naW5lX2luaXRfYnJlYWRjcnVtYnMocmluZyk7Cj4KPiAgIAlyaW5nYnVmID0g aW50ZWxfZW5naW5lX2NyZWF0ZV9yaW5nYnVmZmVyKHJpbmcsIDMyICogUEFHRV9TSVpFKTsKPiAg IAlpZiAoSVNfRVJSKHJpbmdidWYpKQo+IEBAIC0yMjI1LDYgKzIyMjYsOCBAQCB2b2lkIGludGVs X2NsZWFudXBfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPgo+ICAg CWk5MTVfY21kX3BhcnNlcl9maW5pX3JpbmcocmluZyk7Cj4gICAJaTkxNV9nZW1fYmF0Y2hfcG9v bF9maW5pKCZyaW5nLT5iYXRjaF9wb29sKTsKPiArCj4gKwlpbnRlbF9lbmdpbmVfZmluaV9icmVh ZGNydW1icyhyaW5nKTsKPiAgIH0KPgo+ICAgc3RhdGljIGludCByaW5nX3dhaXRfZm9yX3NwYWNl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGludCBuKQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCA1ZDFlYjIwNjE1MWQuLjdkZGU5MzEwZGYxYiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBAQCAtMTU3LDkg KzE1NywzMSBAQCBzdHJ1Y3QgIGludGVsX2VuZ2luZV9jcyB7Cj4gICAjZGVmaW5lIExBU1RfVVNF Ul9SSU5HIChWRUNTICsgMSkKPiAgIAl1MzIJCW1taW9fYmFzZTsKPiAgIAlzdHJ1Y3QJCWRybV9k ZXZpY2UgKmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1Owo+ICAgCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpidWZmZXI7Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBidWZmZXJz Owo+Cj4gKwkvKiBSYXRoZXIgdGhhbiBoYXZlIGV2ZXJ5IGNsaWVudCB3YWl0IHVwb24gYWxsIHVz ZXIgaW50ZXJydXB0cywKPiArCSAqIHdpdGggdGhlIGhlcmQgd2FraW5nIGFmdGVyIGV2ZXJ5IGlu dGVycnVwdCBhbmQgZWFjaCBkb2luZyB0aGUKPiArCSAqIGhlYXZ5d2VpZ2h0IHNlcW5vIGRhbmNl LCB3ZSBkZWxlZ2F0ZSB0aGUgdGFzayB0byB0aGUgZmlyc3QgY2xpZW50Lgo+ICsJICogQWZ0ZXIg dGhlIGludGVycnVwdCwgd2Ugd2FrZSB1cCBvbmUgY2xpZW50LCB3aG8gZG9lcyB0aGUgaGVhdnl3 ZWlnaHQKPiArCSAqIGNvaGVyZW50IHNlcW5vIHJlYWQgYW5kIGVpdGhlciBnb2VzIGJhY2sgdG8g c2xlZXAgKGlmIGluY29tcGxldGUpLAo+ICsJICogb3Igd2FrZXMgdXAgdGhlIG5leHQgY2xpZW50 IGluIHRoZSBxdWV1ZSBhbmQgc28gZm9ydGguCj4gKwkgKgo+ICsJICogV2l0aCByZXNwZWN0IHRv IHdhbGtpbmcgdGhlIGVudGlyZSBsaXN0IG9mIHdhaXRlcnMgaW4gYSBzaW5nbGUKCnMvV2l0aCBy ZXNwZWN0IHRvL0luIGNvbnRyYXN0IHRvLyBvciAiQ29tcGFyZWQgdG8iPwoKPiArCSAqIGRlZGlj YXRlZCBib3R0b20taGFsZiwgd2UgcmVkdWNlIHRoZSBsYXRlbmN5IG9mIHRoZSBmaXJzdCB3YWl0 ZXIKPiArCSAqIGJ5IGF2b2lkaW5nIGEgY29udGV4dCBzd2l0Y2gsIGJ1dCBpbmN1ciBhZGRpdGlv bmFsIGNvaGVyZW50IHNlcW5vCj4gKwkgKiByZWFkcyB3aGVuIGZvbGxvd2luZyB0aGUgY2hhaW4g b2YgcmVxdWVzdCBicmVhZGNydW1icy4KPiArCSAqLwo+ICsJc3RydWN0IGludGVsX2JyZWFkY3J1 bWJzIHsKPiArCQlzcGlubG9ja190IGxvY2s7IC8qIHByb3RlY3RzIHRoZSBsaXN0cyBvZiByZXF1 ZXN0cyAqLwo+ICsJCXN0cnVjdCByYl9yb290IHJlcXVlc3RzOyAvKiBzb3J0ZWQgYnkgcmV0aXJl bWVudCAqLwo+ICsJCXN0cnVjdCB0YXNrX3N0cnVjdCAqZmlyc3Rfd2FpdGVyOyAvKiBiaCBmb3Ig dXNlciBpbnRlcnJ1cHRzICovCj4gKwkJc3RydWN0IGRlbGF5ZWRfd29yayBpcnE7IC8qIHVzZWQg dG8gZW5hYmxlIG9yIGZha2UgaW5lcnJ1cHRzICovCj4gKwkJYm9vbCBpcnFfZW5hYmxlZCA6IDE7 Cj4gKwkJYm9vbCBycG1fd2FrZWxvY2sgOiAxOwoKQXJlIGJpdGZpZWxkcyB3b3J0aCBpdD8gVGhl cmUgYXJlbid0IHRoYXQgbWFueSBlbmdpbmUgc28gbWF5YmUgaXQgbG9zZXMgCm1vcmUgaW4gdGVy bXMgb2YgaW5zdHJ1Y3Rpb25zIGdlbmVyYXRlZC4KCj4gKwl9IGJyZWFkY3J1bWJzOwo+ICsKPiAg IAkvKgo+ICAgCSAqIEEgcG9vbCBvZiBvYmplY3RzIHRvIHVzZSBhcyBzaGFkb3cgY29waWVzIG9m IGNsaWVudCBiYXRjaCBidWZmZXJzCj4gICAJICogd2hlbiB0aGUgY29tbWFuZCBwYXJzZXIgaXMg ZW5hYmxlZC4gUHJldmVudHMgdGhlIGNsaWVudCBmcm9tCj4gQEAgLTMwMyw4ICszMjUsNiBAQCBz dHJ1Y3QgIGludGVsX2VuZ2luZV9jcyB7Cj4KPiAgIAlib29sIGdwdV9jYWNoZXNfZGlydHk7Cj4K PiAtCXdhaXRfcXVldWVfaGVhZF90IGlycV9xdWV1ZTsKPiAtCj4gICAJc3RydWN0IGludGVsX2Nv bnRleHQgKmRlZmF1bHRfY29udGV4dDsKPiAgIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqbGFzdF9j b250ZXh0Owo+Cj4gQEAgLTUwNiw0ICs1MjYsMjcgQEAgdm9pZCBpbnRlbF9yaW5nX3Jlc2VydmVk X3NwYWNlX2VuZChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1Zik7Cj4gICAvKiBMZWdh Y3kgcmluZ2J1ZmZlciBzcGVjaWZpYyBwb3J0aW9uIG9mIHJlc2VydmF0aW9uIGNvZGU6ICovCj4g ICBpbnQgaW50ZWxfcmluZ19yZXNlcnZlX3NwYWNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCk7Cj4KPiArLyogaW50ZWxfYnJlYWRjcnVtYnMuYyAtLSB1c2VyIGludGVycnVw dCBib3R0b20taGFsZiBmb3Igd2FpdGVycyAqLwo+ICtzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYiB7 Cj4gKwlzdHJ1Y3QgcmJfbm9kZSBub2RlOwo+ICsJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwo+ ICsJdTMyIHNlcW5vOwo+ICt9Owo+ICt2b2lkIGludGVsX2VuZ2luZV9pbml0X2JyZWFkY3J1bWJz KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gK2Jvb2wgaW50ZWxfYnJlYWRjcnVt YnNfYWRkX3dhaXRlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsCj4gKwkJ CQkgIHN0cnVjdCBpbnRlbF9icmVhZGNydW1iICp3YWl0KTsKPiArdm9pZCBpbnRlbF9icmVhZGNy dW1ic19yZW1vdmVfd2FpdGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwK PiArCQkJCSAgICAgc3RydWN0IGludGVsX2JyZWFkY3J1bWIgKndhaXQpOwo+ICtzdGF0aWMgaW5s aW5lIGJvb2wgaW50ZWxfZW5naW5lX2hhc193YWl0ZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICt7Cj4gKwlyZXR1cm4gUkVBRF9PTkNFKGVuZ2luZS0+YnJlYWRjcnVtYnMuZmly c3Rfd2FpdGVyKTsKPiArfQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfZW5naW5lX3dha2V1 cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0cnVjdCB0YXNrX3N0 cnVjdCAqdGFzayA9IFJFQURfT05DRShlbmdpbmUtPmJyZWFkY3J1bWJzLmZpcnN0X3dhaXRlcik7 Cj4gKwlpZiAodGFzaykKPiArCQl3YWtlX3VwX3Byb2Nlc3ModGFzayk7CgpXaGF0IGd1YXJhbnRl ZXMgdGFzayBpcyBhIHZhbGlkIHRhc2sgYXQgdGhpcyBwb2ludD8KCkkga25vdyBpdCBpcyBzbyBl eHRyZW1lbHkgdW5saWtlbHksIGJ1dCBpdCBjYW4gdGhlb3JldGljYWxseSBzYW1wbGUgdGhlIApm aXJzdF93YWl0ZXIgd2hpY2ggdGhlbiBleGlzdHMgYW5kIGRpc2FwcGVhcnMgYmFmb3JlIHRoZSB3 YWtlX3VwX3Byb2Nlc3MgCmNhbGwuCgo+ICt9Cj4gK3ZvaWQgaW50ZWxfZW5naW5lX2ZpbmlfYnJl YWRjcnVtYnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPiArCj4gICAjZW5kaWYg LyogX0lOVEVMX1JJTkdCVUZGRVJfSF8gKi8KPgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=