From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 08/15] drm/i915: Slaughter the thundering i915_wait_request herd Date: Mon, 30 Nov 2015 12:05:50 +0000 Message-ID: <565C3B9E.7090508@linux.intel.com> References: <1448786893-2522-1-git-send-email-chris@chris-wilson.co.uk> <1448786893-2522-9-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 79F376E58D for ; Mon, 30 Nov 2015 04:06:23 -0800 (PST) In-Reply-To: <1448786893-2522-9-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 CkhpLAoKT24gMjkvMTEvMTUgMDg6NDgsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPbmUgcGFydGlj dWxhcmx5IHN0cmVzc2Z1bCBzY2VuYXJpbyBjb25zaXN0cyBvZiBtYW55IGluZGVwZW5kZW50IHRh c2tzCj4gYWxsIGNvbXBldGluZyBmb3IgR1BVIHRpbWUgYW5kIHdhaXRpbmcgdXBvbiB0aGUgcmVz dWx0cyAoZS5nLiByZWFsdGltZQo+IHRyYW5zY29kaW5nIG9mIG1hbnksIG1hbnkgc3RyZWFtcyku IE9uZSBib3R0bGVuZWNrIGluIHBhcnRpY3VsYXIgaXMgdGhhdAo+IGVhY2ggY2xpZW50IHdhaXRz IG9uIGl0cyBvd24gcmVzdWx0cywgYnV0IGV2ZXJ5IGNsaWVudCBpcyB3b2tlbiB1cCBhZnRlcgo+ IGV2ZXJ5IGJhdGNoYnVmZmVyIC0gaGVuY2UgdGhlIHRodW5kZXIgb2YgaG9vdmVzIGFzIHRoZW4g ZXZlcnkgY2xpZW50IG11c3QKPiBkbyBpdHMgaGVhdnl3ZWlnaHQgZGFuY2UgdG8gcmVhZCBhIGNv aGVyZW50IHNlcW5vIHRvIHNlZSBpZiBpdCBpcyB0aGUKPiBsdWNreSBvbmUuIEFsdGVybmF0aXZl bHksIHdlIGNhbiBoYXZlIG9uZSBrdGhyZWFkIHJlc3BvbnNpYmxlIGZvciB3YWtpbmcKPiBhZnRl ciBhbiBpbnRlcnJ1cHQsIGNoZWNraW5nIHRoZSBzZXFubyBhbmQgb25seSB3YWtpbmcgdXAgdGhl IHdhaXRpbmcKPiBjbGllbnRzIHdobyBhcmUgY29tcGxldGUuIFRoZSBkaXNhZHZhbnRhZ2UgaXMg dGhhdCBpbiB0aGUgdW5jb250ZW5kZWQKPiBzY2VuYXJpbyAoaS5lLiBvbmx5IG9uZSB3YWl0ZXIp IHdlIGluY3VyIGFuIGV4dHJhIGNvbnRleHQgc3dpdGNoIGluIHRoZQo+IHdha2V1cCBwYXRoIC0g dGhvdWdoIHRoYXQgc2hvdWxkIGJlIG1pdGlnYXRlZCBzb21ld2hhdCBieSB0aGUgYnVzeS13YWl0 Cj4gd2UgZG8gZmlyc3QgYmVmb3JlIHNsZWVwaW5nLgo+Cj4gdjI6IENvbnZlcnQgZnJvbSBhIGt3 b3JrZXIgcGVyIGVuZ2luZSBpbnRvIGEgZGVkaWNhdGVkIGt0aHJlYWQgZm9yIHRoZQo+IGJvdHRv bS1oYWxmLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gQ2M6ICJSb2dvemhraW4sIERtaXRyeSBWIiA8ZG1pdHJ5LnYucm9nb3poa2lu QGludGVsLmNvbT4KPiBDYzogIkdvbmcsIFpoaXBlbmciIDx6aGlwZW5nLmdvbmdAaW50ZWwuY29t Pgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AbGludXguaW50ZWwuY29tPgo+ IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSAr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jICAgICAgICAgIHwgICA5ICstCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgIHwgIDM1ICsrKystCj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgIHwgIDk5ICsrKy0tLS0t LS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICB8ICAgOCAr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICB8ICAxNyArLS0K PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMgfCAyNTMgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf bHJjLmMgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jICB8ICAgMyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oICB8ICAgMyArLQo+ICAgMTAgZmlsZXMgY2hhbmdlZCwgMzMzIGluc2VydGlvbnMoKyks IDk3IGRlbGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggMDg1 MWRlMDdiZDEzLi5kM2I5ZDM2MTg3MTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC0z NSw2ICszNSw3IEBAIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCj4gICAJICBpOTE1X2dl bV91c2VycHRyLm8gXAo+ICAgCSAgaTkxNV9ncHVfZXJyb3IubyBcCj4gICAJICBpOTE1X3RyYWNl X3BvaW50cy5vIFwKPiArCSAgaW50ZWxfYnJlYWRjcnVtYnMubyBcCj4gICAJICBpbnRlbF9scmMu byBcCj4gICAJICBpbnRlbF9tb2NzLm8gXAo+ICAgCSAgaW50ZWxfcmluZ2J1ZmZlci5vIFwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZG1hLmMKPiBpbmRleCBhODFjNzY2MDM1NDQuLjkzYzY3NjJkODdiNCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+IEBAIC0zODgsMTIgKzM4OCwxNiBAQCBzdGF0 aWMgaW50IGk5MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg IAlpZiAocmV0KQo+ICAgCQlnb3RvIGNsZWFudXBfdmdhX2NsaWVudDsKPgo+ICsJcmV0ID0gaW50 ZWxfYnJlYWRjcnVtYnNfaW5pdChkZXZfcHJpdik7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gY2xl YW51cF92Z2Ffc3dpdGNoZXJvbzsKPiArCj4gICAJLyogSW5pdGlhbGlzZSBzdG9sZW4gZmlyc3Qg c28gdGhhdCB3ZSBtYXkgcmVzZXJ2ZSBwcmVhbGxvY2F0ZWQKPiAgIAkgKiBvYmplY3RzIGZvciB0 aGUgQklPUyB0byBLTVMgdHJhbnNpdGlvbi4KPiAgIAkgKi8KPiAgIAlyZXQgPSBpOTE1X2dlbV9p bml0X3N0b2xlbihkZXYpOwo+ICAgCWlmIChyZXQpCj4gLQkJZ290byBjbGVhbnVwX3ZnYV9zd2l0 Y2hlcm9vOwo+ICsJCWdvdG8gY2xlYW51cF9icmVhZGNydW1iczsKPgo+ICAgCWludGVsX3Bvd2Vy X2RvbWFpbnNfaW5pdF9odyhkZXZfcHJpdiwgZmFsc2UpOwo+Cj4gQEAgLTQ1NCw2ICs0NTgsOCBA QCBjbGVhbnVwX2lycToKPiAgIAlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwo+ICAgY2xlYW51cF9n ZW1fc3RvbGVuOgo+ICAgCWk5MTVfZ2VtX2NsZWFudXBfc3RvbGVuKGRldik7Cj4gK2NsZWFudXBf YnJlYWRjcnVtYnM6Cj4gKwlpbnRlbF9icmVhZGNydW1ic19maW5pKGRldl9wcml2KTsKPiAgIGNs ZWFudXBfdmdhX3N3aXRjaGVyb286Cj4gICAJdmdhX3N3aXRjaGVyb29fdW5yZWdpc3Rlcl9jbGll bnQoZGV2LT5wZGV2KTsKPiAgIGNsZWFudXBfdmdhX2NsaWVudDoKPiBAQCAtMTE5Myw2ICsxMTk5 LDcgQEAgaW50IGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAg CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWludGVsX2ZiY19jbGVhbnVw X2NmYihkZXZfcHJpdik7Cj4gICAJaTkxNV9nZW1fY2xlYW51cF9zdG9sZW4oZGV2KTsKPiArCWlu dGVsX2JyZWFkY3J1bWJzX2ZpbmkoZGV2X3ByaXYpOwo+Cj4gICAJaW50ZWxfY3NyX3Vjb2RlX2Zp bmkoZGV2X3ByaXYpOwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZTE5ODAyMTJi YTM3Li43ODJkMDhhYjYyNjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNTY0 LDYgKzU2NCw3IEBAIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSB7Cj4gICAJCQlsb25nIGpp ZmZpZXM7Cj4gICAJCQl1MzIgc2Vxbm87Cj4gICAJCQl1MzIgdGFpbDsKPiArCQkJdTMyIHdhaXRl cnM7Cj4gICAJCX0gKnJlcXVlc3RzOwo+Cj4gICAJCXN0cnVjdCB7Cj4gQEAgLTEzODMsNyArMTM4 NCw3IEBAIHN0cnVjdCBpOTE1X2dwdV9lcnJvciB7Cj4gICAjZGVmaW5lIEk5MTVfU1RPUF9SSU5H X0FMTE9XX1dBUk4gICAgICAoMSA8PCAzMCkKPgo+ICAgCS8qIEZvciBtaXNzZWQgaXJxL3NlcW5v IHNpbXVsYXRpb24uICovCj4gLQl1bnNpZ25lZCBpbnQgdGVzdF9pcnFfcmluZ3M7Cj4gKwl1bnNp Z25lZCBsb25nIHRlc3RfaXJxX3JpbmdzOwo+ICAgfTsKPgo+ICAgZW51bSBtb2Rlc2V0X3Jlc3Rv cmUgewo+IEBAIC0xNjk1LDYgKzE2OTYsMjcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ Cj4gICAJc3RydWN0IGludGVsX3VuY29yZSB1bmNvcmU7Cj4KPiArCS8qIFJhdGhlciB0aGFuIGhh dmUgZXZlcnkgY2xpZW50IHdhaXQgdXBvbiBhbGwgdXNlciBpbnRlcnJ1cHRzLAo+ICsJICogd2l0 aCB0aGUgaGVyZCB3YWtpbmcgYWZ0ZXIgZXZlcnkgaW50ZXJydXB0IGFuZCBlYWNoIGRvaW5nIHRo ZQo+ICsJICogaGVhdnl3ZWlnaHQgc2Vxbm8gZGFuY2UsIHdlIGRlbGVnYXRlIHRoZSB0YXNrIHRv IGEgYm90dG9tLWhhbGYKPiArCSAqIGZvciB0aGUgdXNlciBpbnRlcnJ1cHQgKG9uZSBiaCBoYW5k bGluZyBhbGwgZW5naW5lcykuIE5vdywKPiArCSAqIGp1c3Qgb25lIHRhc2sgaXMgd29rZW4gdXAg YW5kIGRvZXMgdGhlIGNvaGVyZW50IHNlcW5vIHJlYWQgYW5kCj4gKwkgKiB0aGVuIHdha2VzIHVw IGFsbCB0aGUgd2FpdGVycyByZWdpc3RlcmVkIHdpdGggdGhlIGJvdHRvbS1oYWxmCj4gKwkgKiB0 aGF0IGFyZSBjb21wbGV0ZS4gVGhpcyBhdm9pZCB0aGUgdGh1bmRlcmluZyBoZXJkIHByb2JsZW0K PiArCSAqIHdpdGggbG90cyBvZiBjb25jdXJyZW50IHdhaXRlcnMsIGF0IHRoZSBleHBlbnNlIG9m IGFuIGV4dHJhCj4gKwkgKiBjb250ZXh0IHN3aXRjaCBiZXR3ZWVuIHRoZSBpbnRlcnJ1cHQgYW5k IHRoZSBjbGllbnQuIFRoYXQgc2hvdWxkCj4gKwkgKiBiZSBtaXRpZ2F0ZWQgc29tZXdoYXQgYnkg dGhlIGJ1c3lzcGluIGluIHRoZSBjbGllbnQgYmVmb3JlIHdlIGdvIHRvCj4gKwkgKiBzbGVlcCB3 YWl0aW5nIGZvciBhbiBpbnRlcnJ1cHQgZnJvbSB0aGUgYm90dG9tLWhhbGYuCj4gKwkgKi8KPiAr CXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyB7Cj4gKwkJc3BpbmxvY2tfdCBsb2NrOyAvKiBwcm90 ZWN0cyB0aGUgcGVyLWVuZ2luZSByZXF1ZXN0IGxpc3QgKi8KCnMvbGlzdC90cmVlLwoKPiArCQlz dHJ1Y3QgdGFza19zdHJ1Y3QgKnRhc2s7IC8qIGJoIGZvciBhbGwgdXNlciBpbnRlcnJ1cHRzICov Cj4gKwkJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzX2VuZ2luZSB7Cj4gKwkJCXN0cnVjdCByYl9y b290IHJlcXVlc3RzOyAvKiBzb3J0ZWQgYnkgcmV0aXJlbWVudCAqLwo+ICsJCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKmZpcnN0OwoKLyogRmlyc3QgcmVxdWVzdCBpbiB0aGUgdHJlZSB0 byBiZSBjb21wbGV0ZWQgbmV4dCBieSB0aGUgaHcuICovCgo/Cgo+ICsJCX0gZW5naW5lW0k5MTVf TlVNX1JJTkdTXTsKPiArCX0gYnJlYWRjcnVtYnM7Cj4gKwo+ICAgCXN0cnVjdCBpOTE1X3ZpcnR1 YWxfZ3B1IHZncHU7Cj4KPiAgIAlzdHJ1Y3QgaW50ZWxfZ3VjIGd1YzsKPiBAQCAtMjIyOCw2ICsy MjUwLDExIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCB7Cj4gICAJLyoqIGdsb2JhbCBs aXN0IGVudHJ5IGZvciB0aGlzIHJlcXVlc3QgKi8KPiAgIAlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7 Cj4KPiArCS8qKiBMaXN0IG9mIGNsaWVudHMgd2FpdGluZyBmb3IgY29tcGxldGlvbiBvZiB0aGlz IHJlcXVlc3QgKi8KPiArCXdhaXRfcXVldWVfaGVhZF90IHdhaXQ7Cj4gKwlzdHJ1Y3QgcmJfbm9k ZSBpcnFfbm9kZTsKPiArCXVuc2lnbmVkIGlycV9jb3VudDsKClRvIG1lIGlycSBwcmVmaXggZG9l cyBub3QgZml0IGhlcmUgdGhhdCB3ZWxsLgoKcmVxX3RyZWVfbm9kZT8KCndhaXRlcl9jb3VudCwg d2FpdGVycz8KCj4gKwo+ICAgCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJp djsKPiAgIAkvKiogZmlsZV9wcml2IGxpc3QgZW50cnkgZm9yIHRoaXMgcmVxdWVzdCAqLwo+ICAg CXN0cnVjdCBsaXN0X2hlYWQgY2xpZW50X2xpc3Q7Cj4gQEAgLTI4MDAsNiArMjgyNywxMiBAQCBp YnhfZGlzYWJsZV9kaXNwbGF5X2ludGVycnVwdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHVpbnQzMl90IGJpdHMpCj4gICB9Cj4KPgo+ICsvKiBpbnRlbF9icmVhZGNydW1icy5j IC0tIHVzZXIgaW50ZXJydXB0IGJvdHRvbS1oYWxmIGZvciB3YWl0ZXJzICovCj4gK2ludCBpbnRl bF9icmVhZGNydW1ic19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiArYm9v bCBpbnRlbF9icmVhZGNydW1ic19hZGRfd2FpdGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxdWVzdCk7Cj4gK3ZvaWQgaW50ZWxfYnJlYWRjcnVtYnNfcmVtb3ZlX3dhaXRlcihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpOwo+ICt2b2lkIGludGVsX2JyZWFkY3J1 bWJzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICsKPiAgIC8qIGk5MTVf Z2VtLmMgKi8KPiAgIGludCBpOTE1X2dlbV9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYpOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IDY1ZDEwMWI0N2Q4ZS4uOTY5NTkyZmIwOTY5 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTExMjYsMTcgKzExMjYsNiBAQCBp OTE1X2dlbV9jaGVja193ZWRnZSh1bnNpZ25lZCByZXNldF9jb3VudGVyLAo+ICAgCXJldHVybiAw Owo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lkIGZha2VfaXJxKHVuc2lnbmVkIGxvbmcgZGF0YSkKPiAt ewo+IC0Jd2FrZV91cF9wcm9jZXNzKChzdHJ1Y3QgdGFza19zdHJ1Y3QgKilkYXRhKTsKPiAtfQo+ IC0KPiAtc3RhdGljIGJvb2wgbWlzc2VkX2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gLQkJICAgICAgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4gLXsKPiAt CXJldHVybiB0ZXN0X2JpdChyaW5nLT5pZCwgJmRldl9wcml2LT5ncHVfZXJyb3IubWlzc2VkX2ly cV9yaW5ncyk7Cj4gLX0KPiAtCj4gICBzdGF0aWMgdW5zaWduZWQgbG9uZyBsb2NhbF9jbG9ja191 cyh1bnNpZ25lZCAqY3B1KQo+ICAgewo+ICAgCXVuc2lnbmVkIGxvbmcgdDsKPiBAQCAtMTE4NCw5 ICsxMTczLDYgQEAgc3RhdGljIGludCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgc3RhdGUpCj4gICAJICogdGFrZXMgdG8gc2xlZXAgb24g YSByZXF1ZXN0LCBvbiB0aGUgb3JkZXIgb2YgYSBtaWNyb3NlY29uZC4KPiAgIAkgKi8KPgo+IC0J aWYgKHJlcS0+cmluZy0+aXJxX3JlZmNvdW50KQo+IC0JCXJldHVybiAtRUJVU1k7Cj4gLQo+ICAg CS8qIE9ubHkgc3BpbiBpZiB3ZSBrbm93IHRoZSBHUFUgaXMgcHJvY2Vzc2luZyB0aGlzIHJlcXVl c3QgKi8KPiAgIAlpZiAoIWk5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChyZXEsIGZhbHNlKSkKPiAg IAkJcmV0dXJuIC1FQUdBSU47Cj4gQEAgLTEyMzIsMjYgKzEyMTgsMTkgQEAgaW50IF9faTkxNV93 YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gICAJCQlzNjQg KnRpbWVvdXQsCj4gICAJCQlzdHJ1Y3QgaW50ZWxfcnBzX2NsaWVudCAqcnBzKQo+ICAgewo+IC0J c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3Jpbmco cmVxKTsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IC0JY29uc3Qg Ym9vbCBpcnFfdGVzdF9pbl9wcm9ncmVzcyA9Cj4gLQkJQUNDRVNTX09OQ0UoZGV2X3ByaXYtPmdw dV9lcnJvci50ZXN0X2lycV9yaW5ncykgJiBpbnRlbF9yaW5nX2ZsYWcocmluZyk7Cj4gICAJaW50 IHN0YXRlID0gaW50ZXJydXB0aWJsZSA/IFRBU0tfSU5URVJSVVBUSUJMRSA6IFRBU0tfVU5JTlRF UlJVUFRJQkxFOwo+ICAgCURFRklORV9XQUlUKHdhaXQpOwo+IC0JdW5zaWduZWQgbG9uZyB0aW1l b3V0X2V4cGlyZTsKPiArCXVuc2lnbmVkIGxvbmcgdGltZW91dF9yZW1haW47Cj4gICAJczY0IGJl Zm9yZSwgbm93Owo+ICAgCWludCByZXQ7Cj4KPiAtCVdBUk4oIWludGVsX2lycXNfZW5hYmxlZChk ZXZfcHJpdiksICJJUlFzIGRpc2FibGVkIik7Cj4gLQo+ICAgCWlmIChsaXN0X2VtcHR5KCZyZXEt Pmxpc3QpKQo+ICAgCQlyZXR1cm4gMDsKPgo+ICAgCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBs ZXRlZChyZXEsIHRydWUpKQo+ICAgCQlyZXR1cm4gMDsKPgo+IC0JdGltZW91dF9leHBpcmUgPSAw Owo+ICsJdGltZW91dF9yZW1haW4gPSAwOwo+ICAgCWlmICh0aW1lb3V0KSB7Cj4gICAJCWlmIChX QVJOX09OKCp0aW1lb3V0IDwgMCkpCj4gICAJCQlyZXR1cm4gLUVJTlZBTDsKPiBAQCAtMTI1OSw0 MyArMTIzOCwyOCBAQCBpbnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKPiAgIAkJaWYgKCp0aW1lb3V0ID09IDApCj4gICAJCQlyZXR1cm4gLUVU SU1FOwo+Cj4gLQkJdGltZW91dF9leHBpcmUgPSBqaWZmaWVzICsgbnNlY3NfdG9famlmZmllc190 aW1lb3V0KCp0aW1lb3V0KTsKPiArCQl0aW1lb3V0X3JlbWFpbiA9IG5zZWNzX3RvX2ppZmZpZXNf dGltZW91dCgqdGltZW91dCk7Cj4gICAJfQo+Cj4gLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdikt PmdlbiA+PSA2KQo+IC0JCWdlbjZfcnBzX2Jvb3N0KGRldl9wcml2LCBycHMsIHJlcS0+ZW1pdHRl ZF9qaWZmaWVzKTsKPgo+ICAgCS8qIFJlY29yZCBjdXJyZW50IHRpbWUgaW4gY2FzZSBpbnRlcnJ1 cHRlZCBieSBzaWduYWwsIG9yIHdlZGdlZCAqLwo+ICAgCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3Rf d2FpdF9iZWdpbihyZXEpOwo+ICAgCWJlZm9yZSA9IGt0aW1lX2dldF9yYXdfbnMoKTsKPgo+IC0J LyogT3B0aW1pc3RpYyBzcGluIGZvciB0aGUgbmV4dCBqaWZmaWUgYmVmb3JlIHRvdWNoaW5nIElS UXMgKi8KPiAtCXJldCA9IF9faTkxNV9zcGluX3JlcXVlc3QocmVxLCBzdGF0ZSk7Cj4gLQlpZiAo cmV0ID09IDApCj4gLQkJZ290byBvdXQ7Cj4gKwlpZiAoSU5URUxfSU5GTyhyZXEtPmk5MTUpLT5n ZW4gPj0gNikKPiArCQlnZW42X3Jwc19ib29zdChyZXEtPmk5MTUsIHJwcywgcmVxLT5lbWl0dGVk X2ppZmZpZXMpOwo+Cj4gLQlpZiAoIWlycV90ZXN0X2luX3Byb2dyZXNzICYmIFdBUk5fT04oIXJp bmctPmlycV9nZXQocmluZykpKSB7Cj4gLQkJcmV0ID0gLUVOT0RFVjsKPiAtCQlnb3RvIG91dDsK PiArCS8qIE9wdGltaXN0aWMgc3BpbiBmb3IgdGhlIG5leHQgamlmZmllIGJlZm9yZSB0b3VjaGlu ZyBJUlFzICovCj4gKwlpZiAoaW50ZWxfYnJlYWRjcnVtYnNfYWRkX3dhaXRlcihyZXEpKSB7Cj4g KwkJcmV0ID0gX19pOTE1X3NwaW5fcmVxdWVzdChyZXEsIHN0YXRlKTsKPiArCQlpZiAocmV0ID09 IDApCj4gKwkJCWdvdG8gb3V0Owo+ICAgCX0KPgo+ICAgCWZvciAoOzspIHsKPiAtCQlzdHJ1Y3Qg dGltZXJfbGlzdCB0aW1lcjsKPiAtCj4gLQkJcHJlcGFyZV90b193YWl0KCZyaW5nLT5pcnFfcXVl dWUsICZ3YWl0LCBzdGF0ZSk7Cj4gKwkJcHJlcGFyZV90b193YWl0KCZyZXEtPndhaXQsICZ3YWl0 LCBzdGF0ZSk7Cj4KPiAtCQkvKiBXZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYW55IGdwdSByZXNl dCBoYXBwZW5lZCBpbiBiZXR3ZWVuCj4gLQkJICogdGhlIGNhbGxlciBncmFiYmluZyB0aGUgc2Vx bm8gYW5kIG5vdyAuLi4gKi8KPiAtCQlpZiAocmVxLT5yZXNldF9jb3VudGVyICE9IGk5MTVfcmVz ZXRfY291bnRlcigmZGV2X3ByaXYtPmdwdV9lcnJvcikpIHsKPiAtCQkJLyogQXMgd2UgZG8gbm90 IHJlcXVldWUgdGhlIHJlcXVlc3Qgb3ZlciBhIEdQVSByZXNldCwKPiAtCQkJICogaWYgb25lIGRv ZXMgb2NjdXIgd2Uga25vdyB0aGF0IHRoZSByZXF1ZXN0IGlzCj4gLQkJCSAqIGVmZmVjdGl2ZWx5 IGNvbXBsZXRlLgo+IC0JCQkgKi8KPiAtCQkJcmV0ID0gMDsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+ IC0KPiAtCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCBmYWxzZSkpIHsKPiAr CQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCB0cnVlKSB8fAoKV2h5IGl0IGlz IE9LIHRvIGNoYW5nZSB0aGUgbGF6eSBjb2hlcmVuY3kgbW9kZSBoZXJlPwoKPiArCQkgICAgcmVx LT5yZXNldF9jb3VudGVyICE9IGk5MTVfcmVzZXRfY291bnRlcigmcmVxLT5pOTE1LT5ncHVfZXJy b3IpKSB7CgpJdCBsb29rcyBsaWtlIGl0IHdvdWxkIGJlIHZhbHVhYmxlIHRvIHByZXNlcnZlIHRo ZSBjb21tZW50IGFib3V0IG5vIApyZS1xdWV1aW5nIGV0YyBvbiBHUFUgcmVzZXQuCgo+ICAgCQkJ cmV0ID0gMDsKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gQEAgLTEzMDUsMzYgKzEyNjksMTkgQEAg aW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+Cj4gLQkJaWYgKHRpbWVvdXQgJiYgdGltZV9hZnRlcl9l cShqaWZmaWVzLCB0aW1lb3V0X2V4cGlyZSkpIHsKPiAtCQkJcmV0ID0gLUVUSU1FOwo+IC0JCQli cmVhazsKPiAtCQl9Cj4gLQo+IC0JCWk5MTVfcXVldWVfaGFuZ2NoZWNrKGRldl9wcml2KTsKPiAt Cj4gLQkJdGltZXIuZnVuY3Rpb24gPSBOVUxMOwo+IC0JCWlmICh0aW1lb3V0IHx8IG1pc3NlZF9p cnEoZGV2X3ByaXYsIHJpbmcpKSB7Cj4gLQkJCXVuc2lnbmVkIGxvbmcgZXhwaXJlOwo+IC0KPiAt CQkJc2V0dXBfdGltZXJfb25fc3RhY2soJnRpbWVyLCBmYWtlX2lycSwgKHVuc2lnbmVkIGxvbmcp Y3VycmVudCk7Cj4gLQkJCWV4cGlyZSA9IG1pc3NlZF9pcnEoZGV2X3ByaXYsIHJpbmcpID8gamlm ZmllcyArIDEgOiB0aW1lb3V0X2V4cGlyZTsKPiAtCQkJbW9kX3RpbWVyKCZ0aW1lciwgZXhwaXJl KTsKPiAtCQl9Cj4gLQo+IC0JCWlvX3NjaGVkdWxlKCk7Cj4gLQo+IC0JCWlmICh0aW1lci5mdW5j dGlvbikgewo+IC0JCQlkZWxfc2luZ2xlc2hvdF90aW1lcl9zeW5jKCZ0aW1lcik7Cj4gLQkJCWRl c3Ryb3lfdGltZXJfb25fc3RhY2soJnRpbWVyKTsKPiAtCQl9Cj4gKwkJaWYgKHRpbWVvdXQpIHsK PiArCQkJdGltZW91dF9yZW1haW4gPSBpb19zY2hlZHVsZV90aW1lb3V0KHRpbWVvdXRfcmVtYWlu KTsKPiArCQkJaWYgKHRpbWVvdXRfcmVtYWluID09IDApIHsKPiArCQkJCXJldCA9IC1FVElNRTsK PiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwkJfSBlbHNlCj4gKwkJCWlvX3NjaGVkdWxlKCk7CgpD b3VsZCBzZXQgdGltZW91dF9yZW1haW4gdG8gdGhhdCBNQVggdmFsdWUgd2hlbiB0aW1lb3V0ID09 IE5VTEwgYW5kIGhhdmUgCmEgc2luZ2xlIGNhbGwgc2l0ZSB0byBpb19zY2hlZHVsZV90aW1lb3V0 IGFuZCBsZXNzIGluZGVudGF0aW9uLiBJdCAKZG9lc24ndCBtYXR0ZXIgaHVnZWx5LCBtYXliZSBp dCB3b3VsZCBiZSBhIGJpdCBlYXNpZXIgdG8gcmVhZC4KCj4gICAJfQo+IC0JaWYgKCFpcnFfdGVz dF9pbl9wcm9ncmVzcykKPiAtCQlyaW5nLT5pcnFfcHV0KHJpbmcpOwo+IC0KPiAtCWZpbmlzaF93 YWl0KCZyaW5nLT5pcnFfcXVldWUsICZ3YWl0KTsKPiAtCj4gKwlmaW5pc2hfd2FpdCgmcmVxLT53 YWl0LCAmd2FpdCk7Cj4gICBvdXQ6Cj4gICAJbm93ID0ga3RpbWVfZ2V0X3Jhd19ucygpOwo+ICsJ aW50ZWxfYnJlYWRjcnVtYnNfcmVtb3ZlX3dhaXRlcihyZXEpOwo+ICAgCXRyYWNlX2k5MTVfZ2Vt X3JlcXVlc3Rfd2FpdF9lbmQocmVxKTsKPgo+ICAgCWlmICh0aW1lb3V0KSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggMDZjYTQwODI3MzViLi5kMWRmNDA1Yjkw NWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBAQCAtNDUzLDEw ICs0NTMsMTEgQEAgaW50IGk5MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9l cnJvcl9zdGF0ZV9idWYgKm0sCj4gICAJCQkJICAgZGV2X3ByaXYtPnJpbmdbaV0ubmFtZSwKPiAg IAkJCQkgICBlcnJvci0+cmluZ1tpXS5udW1fcmVxdWVzdHMpOwo+ICAgCQkJZm9yIChqID0gMDsg aiA8IGVycm9yLT5yaW5nW2ldLm51bV9yZXF1ZXN0czsgaisrKSB7Cj4gLQkJCQllcnJfcHJpbnRm KG0sICIgIHNlcW5vIDB4JTA4eCwgZW1pdHRlZCAlbGQsIHRhaWwgMHglMDh4XG4iLAo+ICsJCQkJ ZXJyX3ByaW50ZihtLCAiICBzZXFubyAweCUwOHgsIGVtaXR0ZWQgJWxkLCB0YWlsIDB4JTA4eCwg d2FpdGVycz8gJWRcbiIsCj4gICAJCQkJCSAgIGVycm9yLT5yaW5nW2ldLnJlcXVlc3RzW2pdLnNl cW5vLAo+ICAgCQkJCQkgICBlcnJvci0+cmluZ1tpXS5yZXF1ZXN0c1tqXS5qaWZmaWVzLAo+IC0J CQkJCSAgIGVycm9yLT5yaW5nW2ldLnJlcXVlc3RzW2pdLnRhaWwpOwo+ICsJCQkJCSAgIGVycm9y LT5yaW5nW2ldLnJlcXVlc3RzW2pdLnRhaWwsCj4gKwkJCQkJICAgZXJyb3ItPnJpbmdbaV0ucmVx dWVzdHNbal0ud2FpdGVycyk7Cj4gICAJCQl9Cj4gICAJCX0KPgo+IEBAIC05MDAsNyArOTAxLDcg QEAgc3RhdGljIHZvaWQgaTkxNV9yZWNvcmRfcmluZ19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAo+ICAgCQllcmluZy0+aW5zdGRvbmUgPSBJOTE1X1JFQUQoR0VOMl9JTlNURE9ORSk7Cj4g ICAJfQo+Cj4gLQllcmluZy0+d2FpdGluZyA9IHdhaXRxdWV1ZV9hY3RpdmUoJnJpbmctPmlycV9x dWV1ZSk7Cj4gKwllcmluZy0+d2FpdGluZyA9IFJFQURfT05DRShkZXZfcHJpdi0+YnJlYWRjcnVt YnMuZW5naW5lW3JpbmctPmlkXS5maXJzdCk7CgpXaGF0IGRvZXMgdGhlIFJFQURfT05DRSBkbyBo ZXJlPwoKPiAgIAllcmluZy0+aW5zdHBtID0gSTkxNV9SRUFEKFJJTkdfSU5TVFBNKHJpbmctPm1t aW9fYmFzZSkpOwo+ICAgCWVyaW5nLT5zZXFubyA9IHJpbmctPmdldF9zZXFubyhyaW5nLCBmYWxz ZSk7Cj4gICAJZXJpbmctPmFjdGhkID0gaW50ZWxfcmluZ19nZXRfYWN0aXZlX2hlYWQocmluZyk7 Cj4gQEAgLTExMDUsNiArMTEwNiw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3JlY29yZF9yaW5n cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAgCQkJZXJxLT5zZXFubyA9IHJlcXVlc3QtPnNl cW5vOwo+ICAgCQkJZXJxLT5qaWZmaWVzID0gcmVxdWVzdC0+ZW1pdHRlZF9qaWZmaWVzOwo+ICAg CQkJZXJxLT50YWlsID0gcmVxdWVzdC0+cG9zdGZpeDsKPiArCQkJZXJxLT53YWl0ZXJzID0gcmVx dWVzdC0+aXJxX2NvdW50Owo+ICAgCQl9Cj4gICAJfQo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9p cnEuYwo+IGluZGV4IDI4YzAzMjlmODI4MS4uMGMyMzkwNDc2YmRiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jCj4gQEAgLTk5NiwxMiArOTk2LDExIEBAIHN0YXRpYyB2b2lkIGlyb25sYWtl X3Jwc19jaGFuZ2VfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPgo+ICAgc3Rh dGljIHZvaWQgbm90aWZ5X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIHsK PiAtCWlmICghaW50ZWxfcmluZ19pbml0aWFsaXplZChyaW5nKSkKPiArCWlmIChyaW5nLT5pOTE1 ID09IE5VTEwpCj4gICAJCXJldHVybjsKPgo+ICAgCXRyYWNlX2k5MTVfZ2VtX3JlcXVlc3Rfbm90 aWZ5KHJpbmcpOwo+IC0KPiAtCXdha2VfdXBfYWxsKCZyaW5nLT5pcnFfcXVldWUpOwo+ICsJd2Fr ZV91cF9wcm9jZXNzKHJpbmctPmk5MTUtPmJyZWFkY3J1bWJzLnRhc2spOwoKRm9yIGEgbGF0ZXIg ZXh0ZW5zaW9uOgoKSG93IHdvdWxkIHlvdSB2aWV3LCBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZSwg YWRkaW5nIGEgYm9vbCByZXR1cm4gdG8gCnJpbmctPnB1dF9pcnEoKSB3aGljaCB3b3VsZCBzYXkg dG8gdGhlIHRocmVhZCB0aGF0IGl0IGZhaWxlZCB0byBkaXNhYmxlIAppbnRlcnJ1cHRzPwoKSW4g dGhpcyBjYXNlIHRocmVhZCB3b3VsZCBleGl0IGFuZCB3b3VsZCBuZWVkIHRvIGJlIHJlc3RhcnRl ZCB3aGVuIHRoZSAKbmV4dCB3YWl0ZXIgcXVldWVzIHVwLiBQb3NzaWJseSBleHRlbmRpbmcgdGhl IGlkbGUtPnB1dF9pcnEtPmV4aXQgCmR1cmF0aW9ucyBhcyB3ZWxsIHRoZW4uCgo+ICAgfQo+Cj4g ICBzdGF0aWMgdm9pZCB2bHZfYzBfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gQEAgLTIzOTksOSArMjM5OCw2IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBnZW44X2lycV9o YW5kbGVyKGludCBpcnEsIHZvaWQgKmFyZykKPiAgIHN0YXRpYyB2b2lkIGk5MTVfZXJyb3Jfd2Fr ZV91cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkgICAgICAgYm9v bCByZXNldF9jb21wbGV0ZWQpCj4gICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5n Owo+IC0JaW50IGk7Cj4gLQo+ICAgCS8qCj4gICAJICogTm90aWZ5IGFsbCB3YWl0ZXJzIGZvciBH UFUgY29tcGxldGlvbiBldmVudHMgdGhhdCByZXNldCBzdGF0ZSBoYXMKPiAgIAkgKiBiZWVuIGNo YW5nZWQsIGFuZCB0aGF0IHRoZXkgbmVlZCB0byByZXN0YXJ0IHRoZWlyIHdhaXQgYWZ0ZXIKPiBA QCAtMjQxMCw4ICsyNDA2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9lcnJvcl93YWtlX3VwKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkgKi8KPgo+ICAgCS8qIFdha2UgdXAg X193YWl0X3NlcW5vLCBwb3RlbnRpYWxseSBob2xkaW5nIGRldi0+c3RydWN0X211dGV4LiAqLwo+ IC0JZm9yX2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkKPiAtCQl3YWtlX3VwX2FsbCgmcmlu Zy0+aXJxX3F1ZXVlKTsKPiArCXdha2VfdXBfcHJvY2VzcyhkZXZfcHJpdi0+YnJlYWRjcnVtYnMu dGFzayk7Cj4KPiAgIAkvKiBXYWtlIHVwIGludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlw cywgaG9sZGluZyBjcnRjLT5tdXRleC4gKi8KPiAgIAl3YWtlX3VwX2FsbCgmZGV2X3ByaXYtPnBl bmRpbmdfZmxpcF9xdWV1ZSk7Cj4gQEAgLTI5ODYsMTYgKzI5ODEsMTYgQEAgc3RhdGljIHZvaWQg aTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gICAJCQlp ZiAocmluZ19pZGxlKHJpbmcsIHNlcW5vKSkgewo+ICAgCQkJCXJpbmctPmhhbmdjaGVjay5hY3Rp b24gPSBIQU5HQ0hFQ0tfSURMRTsKPgo+IC0JCQkJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJnJpbmct PmlycV9xdWV1ZSkpIHsKPiArCQkJCWlmIChSRUFEX09OQ0UoZGV2X3ByaXYtPmJyZWFkY3J1bWJz LmVuZ2luZVtyaW5nLT5pZF0uZmlyc3QpKSB7CgpSRUFEX09OQ0UgaXMgYWdhaW4gc3RyYW5nZSwg YnV0IG90aGVyIHRoYW4gdGhhdCBJIGRvbid0IGtub3cgdGhlIApoYW5nY2hlY2sgY29kZSB0byBy ZWFsbHkgZXZhdWxhdGUgaXQuCgpQZXJoYXBzIHRoaXMgYWxzbyBtZWFucyB0aGlzIGxpbmUgbmVl ZHMgYSBjb21tZW50IGRlc2NyaWJpbmcgd2hhdCAKY29uZGl0aW9uL3N0YXRlIGlzIGFjdHVhbGx5 IGFwcHJveGltYXRpbmcgd2l0aCB0aGUgY2hlY2suCgo+ICAgCQkJCQkvKiBJc3N1ZSBhIHdha2Ut dXAgdG8gY2F0Y2ggc3R1Y2sgaC93LiAqLwo+ICAgCQkJCQlpZiAoIXRlc3RfYW5kX3NldF9iaXQo cmluZy0+aWQsICZkZXZfcHJpdi0+Z3B1X2Vycm9yLm1pc3NlZF9pcnFfcmluZ3MpKSB7Cj4gLQkJ CQkJCWlmICghKGRldl9wcml2LT5ncHVfZXJyb3IudGVzdF9pcnFfcmluZ3MgJiBpbnRlbF9yaW5n X2ZsYWcocmluZykpKQo+ICsJCQkJCQlpZiAoIXRlc3RfYml0KHJpbmctPmlkLCAmZGV2X3ByaXYt PmdwdV9lcnJvci50ZXN0X2lycV9yaW5ncykpCj4gICAJCQkJCQkJRFJNX0VSUk9SKCJIYW5nY2hl Y2sgdGltZXIgZWxhcHNlZC4uLiAlcyBpZGxlXG4iLAo+ICAgCQkJCQkJCQkgIHJpbmctPm5hbWUp Owo+ICAgCQkJCQkJZWxzZQo+ICAgCQkJCQkJCURSTV9JTkZPKCJGYWtlIG1pc3NlZCBpcnEgb24g JXNcbiIsCj4gICAJCQkJCQkJCSByaW5nLT5uYW1lKTsKPiAtCQkJCQkJd2FrZV91cF9hbGwoJnJp bmctPmlycV9xdWV1ZSk7Cj4gKwkJCQkJCXdha2VfdXBfcHJvY2VzcyhkZXZfcHJpdi0+YnJlYWRj cnVtYnMudGFzayk7Cj4gICAJCQkJCX0KPiAgIAkJCQkJLyogU2FmZWd1YXJkIGFnYWluc3QgZHJp dmVyIGZhaWx1cmUgKi8KPiAgIAkJCQkJcmluZy0+aGFuZ2NoZWNrLnNjb3JlICs9IEJVU1k7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjBhMTg0MDVjODY4OQo+IC0tLSAvZGV2L251bGwK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gQEAgLTAs MCArMSwyNTMgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRp b24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiAr ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVk ZSA8bGludXgva3RocmVhZC5oPgo+ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKwo+ICtz dGF0aWMgYm9vbCBfX2lycV9lbmFibGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICt7Cj4gKwlpZiAodGVzdF9iaXQoZW5naW5lLT5pZCwgJmVuZ2luZS0+aTkxNS0+Z3B1X2Vycm9y LnRlc3RfaXJxX3JpbmdzKSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJaWYgKCFpbnRlbF9p cnFzX2VuYWJsZWQoZW5naW5lLT5pOTE1KSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJcmV0 dXJuIGVuZ2luZS0+aXJxX2dldChlbmdpbmUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICp0b19yZXF1ZXN0KHN0cnVjdCByYl9ub2RlICpyYikKPiArewo+ ICsJaWYgKHJiID09IE5VTEwpCj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwo+ICsJcmV0dXJuIHJiX2Vu dHJ5KHJiLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsIGlycV9ub2RlKTsKPiArfQo+ICsK PiArLyoKPiArICogaW50ZWxfYnJlYWRjcnVtYnNfaXJxKCkgYWN0cyBhcyB0aGUgYm90dG9tLWhh bGYgZm9yIHRoZSB1c2VyIGludGVycnVwdCwKPiArICogd2hpY2ggd2UgdXNlIGFzIHRoZSBicmVh ZGNydW1iIGFmdGVyIGV2ZXJ5IHJlcXVlc3QuIEluIG9yZGVyIHRvIHNjYWxlCj4gKyAqIHRvIG1h bnkgY29uY3VycmVudCB3YWl0ZXJzLCB3ZSBkZWxlZ2F0ZSB0aGUgdGFzayBvZiByZWFkaW5nIHRo ZSBjb2hlcmVudAo+ICsgKiBzZXFubyB0byB0aGlzIGJvdHRvbS1oYWxmLiAoT3RoZXJ3aXNlIGV2 ZXJ5IHdhaXRlciBpcyB3b2tlbiBhZnRlciBlYWNoCj4gKyAqIGludGVycnVwdCBhbmQgdGhleSBh bGwgYXR0ZW1wdCB0byBwZXJmb3JtIHRoZSBoZWF2eXdlaWdodCBjb2hlcmVudAo+ICsgKiBzZXFu byBjaGVjay4pIEluZGl2aWR1YWwgY2xpZW50cyByZWdpc3RlciB3aXRoIHRoZSBib3R0b20taGFs ZiB3aGVuCj4gKyAqIHdhaXRpbmcgb24gYSByZXF1ZXN0LCBhbmQgYXJlIHRoZW4gd29rZW4gd2hl biB0aGUgYm90dG9tLWhhbGYgbm90aWNlcwo+ICsgKiB0aGVpciBzZXFubyBpcyBjb21wbGV0ZS4g VGhpcyBpbmN1cnMgYW4gZXh0cmEgY29udGV4dCBzd2l0Y2ggZnJvbSB0aGUKPiArICogaW50ZXJy dXB0IHRvIHRoZSBjbGllbnQgaW4gdGhlIHVuY29udGVuZGVkIGNhc2UuCj4gKyAqLwo+ICtzdGF0 aWMgaW50IGludGVsX2JyZWFkY3J1bWJzX2lycSh2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGRhdGE7Cj4gKwlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVt YnMgKmIgPSAmaTkxNS0+YnJlYWRjcnVtYnM7Cj4gKwl1bnNpZ25lZCBpcnFfZ2V0ID0gMDsKPiAr CXVuc2lnbmVkIGlycV9lbmFibGVkID0gMDsKPiArCWludCBpOwo+ICsKPiArCXdoaWxlICgha3Ro cmVhZF9zaG91bGRfc3RvcCgpKSB7Cj4gKwkJdW5zaWduZWQgcmVzZXRfY291bnRlciA9IGk5MTVf cmVzZXRfY291bnRlcigmaTkxNS0+Z3B1X2Vycm9yKTsKPiArCQl1bnNpZ25lZCBsb25nIHRpbWVv dXRfamlmZmllczsKPiArCQlib29sIGlkbGluZyA9IGZhbHNlOwo+ICsKPiArCQkvKiBPbiBldmVy eSB0aWNrLCB3YWxrIHRoZSBzZXFuby1vcmRlcmVkIGxpc3Qgb2YgcmVxdWVzdHMKPiArCQkgKiBh bmQgZm9yIGVhY2ggcmV0aXJlZCByZXF1ZXN0IHdha2V1cCBpdHMgY2xpZW50cy4gSWYgd2UKPiAr CQkgKiBmaW5kIGFuIHVuZmluaXNoZWQgcmVxdWVzdCwgZ28gYmFjayB0byBzbGVlcC4KPiArCQkg Ki8KCnMvdGljay9sb29wLyA/CgpBbmQgaWYgd2UgZG9uJ3QgZmluZCBhbmQgdW5maW5pc2hlZCBy ZXF1ZXN0IHN0aWxsIGdvIGJhY2sgdG8gc2xlZXAuIDopCgo+ICsJCXNldF9jdXJyZW50X3N0YXRl KFRBU0tfSU5URVJSVVBUSUJMRSk7Cj4gKwo+ICsJCS8qIE5vdGUgY2FyZWZ1bGx5IHRoYXQgd2Ug ZG8gbm90IGhvbGQgYSByZWZlcmVuY2UgZm9yIHRoZQo+ICsJCSAqIHJlcXVlc3RzIG9uIHRoaXMg bGlzdC4gVGhlcmVmb3JlIHdlIG9ubHkgaW5zcGVjdCB0aGVtCj4gKwkJICogd2hpbHN0IGhvbGRp bmcgdGhlIHNwaW5sb2NrIHRvIGVuc3VyZSB0aGF0IHRoZXkgYXJlIG5vdAo+ICsJCSAqIGZyZWVk IGluIHRoZSBtZWFudGltZSwgYW5kIHRoZSBjbGllbnQgbXVzdCByZW1vdmUgdGhlCj4gKwkJICog cmVxdWVzdCBmcm9tIHRoZSBsaXN0IGlmIGl0IGlzIGludGVycnVwdGVkIChiZWZvcmUgaXQKPiAr CQkgKiBpdHNlbGYgcmVsZWFzZXMgaXRzIHJlZmVyZW5jZSkuCj4gKwkJICovCj4gKwkJc3Bpbl9s b2NrKCZiLT5sb2NrKTsKClRoaXMgbG9jayBpcyBtb3JlIHBlciBlbmdpbmUgdGhhdCBnbG9iYWwg aW4gaXRzIG5hdHVyZSB1bmxlc3MgeW91IHRoaW5rIAppdCB3YXMgbW9yZSBlZmZpY2llbnQgdG8g ZG8gZmV3ZXIgbG9jayBhdG9taWNzIHZzIHBvdGVudGlhbCBvdmVybGFwIG9mIAp3YWl0ZXIgYWN0 aXZpdHkgcGVyIGVuZ2luZXM/CgpXb3VsZCBuZWVkIGEgbmV3IGxvY2sgZm9yIHJlcS0+aXJxX2Nv dW50LCBwZXIgcmVxdWVzdC4gU28gCnJlcS0+bG9jay9yZXEtPmlycV9jb3VudCBhbmQgYmUtPmxv Y2sgZm9yIHRoZSB0cmVlIG9wZXJhdGlvbnMuCgpUaHJlYWQgd291bGQgb25seSBuZWVkIHRvIGRl YWwgd2l0aCB0aGUgbGF0ZXIuIEZlZWxzIGxpa2UgaXQgd291bGQgd29yaywgCmp1c3Qgbm90IHN1 cmUgaWYgaXQgaXMgd29ydGggaXQuCgo+ICsJCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9SSU5H UzsgaSsrKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9ICZpOTE1LT5y aW5nW2ldOwo+ICsJCQlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnNfZW5naW5lICpiZSA9ICZiLT5l bmdpbmVbaV07Cj4gKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCA9IGJl LT5maXJzdDsKPiArCj4gKwkJCWlmIChyZXF1ZXN0ID09IE5VTEwpIHsKPiArCQkJCWlmICgoaXJx X2dldCAmICgxIDw8IGkpKSkgewo+ICsJCQkJCWlmIChpcnFfZW5hYmxlZCAmICgxIDw8IGkpKSB7 Cj4gKwkJCQkJCWVuZ2luZS0+aXJxX3B1dChlbmdpbmUpOwo+ICsJCQkJCQlpcnFfZW5hYmxlZCAm PSB+ICgxIDw8IGkpOwo+ICsJCQkJCX0KPiArCQkJCQlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1 KTsKPiArCQkJCQlpcnFfZ2V0ICY9IH4oMSA8PCBpKTsKPiArCQkJCX0KPiArCQkJCWNvbnRpbnVl Owo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAoKGlycV9nZXQgJiAoMSA8PCBpKSkgPT0gMCkgewo+ICsJ CQkJaW50ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwkJCQlpcnFfZW5hYmxlZCB8PSBfX2ly cV9lbmFibGUoZW5naW5lKSA8PCBpOwo+ICsJCQkJaXJxX2dldCB8PSAxIDw8IGk7Cj4gKwkJCX0K CmlycV9nZXQgYW5kIGlycV9lbmFibGVkIGFyZSBjcmVhdGluZyBhIGxpdHRsZSBiaXQgb2YgYSBo ZWFkYWNoZSBmb3IgbWUuIApBbmQgdGhhdCB3b3VsZCBwcm9iYWJseSBtZWFuIGEgY29tbWVudCBp cyBiZSBpbiBvcmRlciB0byBleHBsYWluIHdoYXQgCnRoZXkgYXJlIGZvciBhbmQgaG93IHRoZXkg d29yay4KCkxpa2UgdGhpcyBJIGRvbid0IHNlZSB0aGUgbmVlZCBmb3IgaXJxX2dldCB0byBwZXJz aXN0IGFjcm9zcyBsb29wcz8KCmlycV9nZXQgbG9va3MgbGlrZSAidHJ5IHRvIGdldCB0aGVzZSIs IGlycV9lbmFibGVkIGlzICJ0aGVzZSBvbmVzIEkgCmdvdCIuIEFwYXJ0IGZvciB0aGUgd2VpcmQg dXNhZ2Ugb2YgaXQgdG8gYmFsYW5jZSB0aGUgcnVudGltZSBwbSBnZXRzIGFuZCAKcHV0cy4KCkEg Yml0IGNvbmZ1c2luZyBhcyBJIHNhaWQuCgo+ICsJCQlkbyB7Cj4gKwkJCQlzdHJ1Y3QgcmJfbm9k ZSAqbmV4dDsKPiArCj4gKwkJCQlpZiAocmVxdWVzdC0+cmVzZXRfY291bnRlciA9PSByZXNldF9j b3VudGVyICYmCj4gKwkJCQkgICAgIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3Qs IGZhbHNlKSkKPiArCQkJCQlicmVhazsKPiArCj4gKwkJCQluZXh0ID0gcmJfbmV4dCgmcmVxdWVz dC0+aXJxX25vZGUpOwo+ICsJCQkJcmJfZXJhc2UoJnJlcXVlc3QtPmlycV9ub2RlLCAmYmUtPnJl cXVlc3RzKTsKPiArCQkJCVJCX0NMRUFSX05PREUoJnJlcXVlc3QtPmlycV9ub2RlKTsKPiArCj4g KwkJCQl3YWtlX3VwX2FsbCgmcmVxdWVzdC0+d2FpdCk7Cj4gKwo+ICsJCQkJcmVxdWVzdCA9IHRv X3JlcXVlc3QobmV4dCk7Cj4gKwkJCX0gd2hpbGUgKHJlcXVlc3QpOwo+ICsJCQliZS0+Zmlyc3Qg PSByZXF1ZXN0Owo+ICsJCQlpZGxpbmcgfD0gcmVxdWVzdCA9PSBOVUxMOwo+ICsKPiArCQkJLyog TWFrZSBzdXJlIHRoZSBoYW5nY2hlY2sgdGltZXIgaXMgYXJtZWQgaW4gY2FzZQo+ICsJCQkgKiB0 aGUgR1BVIGhhbmdzIGFuZCB3ZSBhcmUgbmV2ZXIgd29rZW4gdXAuCj4gKwkJCSAqLwo+ICsJCQlp ZiAocmVxdWVzdCkKPiArCQkJCWk5MTVfcXVldWVfaGFuZ2NoZWNrKGk5MTUpOwo+ICsJCX0KPiAr CQlzcGluX3VubG9jaygmYi0+bG9jayk7Cj4gKwo+ICsJCS8qIElmIHdlIGRvbid0IGhhdmUgaW50 ZXJydXB0cyBhdmFpbGFibGUgKGVpdGhlciB3ZSBoYXZlCj4gKwkJICogZGV0ZWN0ZWQgdGhlIGhh cmR3YXJlIGlzIG1pc3NpbmcgaW50ZXJydXB0cyBvciB0aGUKPiArCQkgKiBpbnRlcnJ1cHQgZGVs aXZlcnkgd2FzIGRpc2FibGVkIGJ5IHRoZSB1c2VyKSwgd2FrZSB1cAo+ICsJCSAqIGV2ZXJ5IGpp ZmZpZSB0byBjaGVjayBmb3IgcmVxdWVzdCBjb21wbGV0aW9uLgo+ICsJCSAqCj4gKwkJICogSWYg d2UgaGF2ZSBwcm9jZXNzZWQgYWxsIHJlcXVlc3RzIGZvciBvbmUgZW5naW5lLCB3ZQo+ICsJCSAq IGFsc28gd2lzaCB0byB3YWtlIHVwIGluIGEgamlmZmllIHRvIHR1cm4gb2ZmIHRoZQo+ICsJCSAq IGJyZWFkY3J1bWIgaW50ZXJydXB0IGZvciB0aGF0IGVuZ2luZS4gV2UgZGVsYXkKPiArCQkgKiBz d2l0Y2hpbmcgb2ZmIHRoZSBpbnRlcnJ1cHQgaW4gb3JkZXIgdG8gYWxsb3cgYW5vdGhlcgo+ICsJ CSAqIHdhaXRlciB0byBzdGFydCB3aXRob3V0IGluY3VycmluZyBhZGRpdGlvbmFsIGxhdGVuY3kK PiArCQkgKiBlbmFibGluZyB0aGUgaW50ZXJydXB0Lgo+ICsJCSAqLwo+ICsJCXRpbWVvdXRfamlm ZmllcyA9IE1BWF9TQ0hFRFVMRV9USU1FT1VUOwo+ICsJCWlmIChpZGxpbmcgfHwgaTkxNS0+Z3B1 X2Vycm9yLm1pc3NlZF9pcnFfcmluZ3MgJiBpcnFfZW5hYmxlZCkKPiArCQkJdGltZW91dF9qaWZm aWVzID0gMTsKPiArCj4gKwkJLyogVW5saWtlIHRoZSBpbmRpdmlkdWFsIGNsaWVudHMsIHdlIGRv IG5vdCB3YW50IHRoaXMKPiArCQkgKiBiYWNrZ3JvdW5kIHRocmVhZCB0byBjb250cmlidXRlIHRv IHRoZSBzeXN0ZW0gbG9hZCwKPiArCQkgKiBpLmUuIHdlIGRvIG5vdCB3YW50IHRvIHVzZSBpb19z Y2hlZHVsZSgpIGhlcmUuCj4gKwkJICovCj4gKwkJc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0X2pp ZmZpZXMpOwo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9SSU5HUzsgaSsr KSB7Cj4gKwkJaWYgKChpcnFfZ2V0ICYgKDEgPDwgaSkpKSB7Cj4gKwkJCWlmIChpcnFfZW5hYmxl ZCAmICgxIDw8IGkpKSB7Cj4gKwkJCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSAm aTkxNS0+cmluZ1tpXTsKPiArCQkJCWVuZ2luZS0+aXJxX3B1dChlbmdpbmUpOwo+ICsJCQl9Cj4g KwkJCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOwo+ICsJCX0KPiArCX0KPiArCj4gKwlyZXR1 cm4gMDsKPiArfQo+ICsKPiArYm9vbCBpbnRlbF9icmVhZGNydW1ic19hZGRfd2FpdGVyKHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiArewo+ICsJc3RydWN0IGludGVsX2Jy ZWFkY3J1bWJzICpiID0gJnJlcXVlc3QtPmk5MTUtPmJyZWFkY3J1bWJzOwo+ICsJYm9vbCBmaXJz dCA9IGZhbHNlOwo+ICsKPiArCXNwaW5fbG9jaygmYi0+bG9jayk7Cj4gKwlpZiAocmVxdWVzdC0+ aXJxX2NvdW50KysgPT0gMCkgewo+ICsJCXN0cnVjdCBpbnRlbF9icmVhZGNydW1ic19lbmdpbmUg KmJlID0KPiArCQkJJmItPmVuZ2luZVtyZXF1ZXN0LT5yaW5nLT5pZF07Cj4gKwkJc3RydWN0IHJi X25vZGUgKipwLCAqcGFyZW50Owo+ICsKPiArCQlpZiAoYmUtPmZpcnN0ID09IE5VTEwpCj4gKwkJ CXdha2VfdXBfcHJvY2VzcyhiLT50YXNrKTsKCldpdGggYSBnbG9iYWwgYi0+bG9jayBpdCBtYWtl cyBubyBkaWZmZXJlbmNlIGJ1dCBpbiB0aGUgbG9naWNhbCBzZW5zZSAKdGhpcyB3b3VsZCB1c3Vh bGx5IGdvIGxhc3QsIGFmdGVyIHRoZSByZXF1ZXN0IGhhcyBiZWVuIGluc2VydGVkIGludG8gdGhl IAp0cmVlIGFuZCB3YWl0ZXIgaW5pdGlhbGl6ZWQuCgo+ICsKPiArCQlpbml0X3dhaXRxdWV1ZV9o ZWFkKCZyZXF1ZXN0LT53YWl0KTsKPiArCj4gKwkJZmlyc3QgPSB0cnVlOwo+ICsJCXBhcmVudCA9 IE5VTEw7Cj4gKwkJcCA9ICZiZS0+cmVxdWVzdHMucmJfbm9kZTsKPiArCQl3aGlsZSAoKnApIHsK PiArCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpfX3JlcTsKPiArCj4gKwkJCXBhcmVu dCA9ICpwOwo+ICsJCQlfX3JlcSA9IHJiX2VudHJ5KHBhcmVudCwgdHlwZW9mKCpfX3JlcSksIGly cV9ub2RlKTsKPiArCj4gKwkJCWlmIChpOTE1X3NlcW5vX3Bhc3NlZChyZXF1ZXN0LT5zZXFubywg X19yZXEtPnNlcW5vKSkgewo+ICsJCQkJcCA9ICZwYXJlbnQtPnJiX3JpZ2h0Owo+ICsJCQkJZmly c3QgPSBmYWxzZTsKPiArCQkJfSBlbHNlCj4gKwkJCQlwID0gJnBhcmVudC0+cmJfbGVmdDsKPiAr CQl9Cj4gKwkJaWYgKGZpcnN0KQo+ICsJCQliZS0+Zmlyc3QgPSByZXF1ZXN0Owo+ICsKPiArCQly Yl9saW5rX25vZGUoJnJlcXVlc3QtPmlycV9ub2RlLCBwYXJlbnQsIHApOwo+ICsJCXJiX2luc2Vy dF9jb2xvcigmcmVxdWVzdC0+aXJxX25vZGUsICZiZS0+cmVxdWVzdHMpOwo+ICsJfQo+ICsJc3Bp bl91bmxvY2soJmItPmxvY2spOwo+ICsKPiArCXJldHVybiBmaXJzdDsKPiArfQo+ICsKPiArdm9p ZCBpbnRlbF9icmVhZGNydW1ic19yZW1vdmVfd2FpdGVyKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCkKPiArewo+ICsJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJnJl cXVlc3QtPmk5MTUtPmJyZWFkY3J1bWJzOwo+ICsKPiArCXNwaW5fbG9jaygmYi0+bG9jayk7Cj4g KwlpZiAoLS1yZXF1ZXN0LT5pcnFfY291bnQgPT0gMCAmJiAhUkJfRU1QVFlfTk9ERSgmcmVxdWVz dC0+aXJxX25vZGUpKSB7Cj4gKwkJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzX2VuZ2luZSAqYmUg PQo+ICsJCQkmYi0+ZW5naW5lW3JlcXVlc3QtPnJpbmctPmlkXTsKPiArCQlpZiAoYmUtPmZpcnN0 ID09IHJlcXVlc3QpCj4gKwkJCWJlLT5maXJzdCA9IHRvX3JlcXVlc3QocmJfbmV4dCgmcmVxdWVz dC0+aXJxX25vZGUpKTsKPiArCQlyYl9lcmFzZSgmcmVxdWVzdC0+aXJxX25vZGUsICZiZS0+cmVx dWVzdHMpOwo+ICsJfQo+ICsJc3Bpbl91bmxvY2soJmItPmxvY2spOwo+ICt9Cj4gKwo+ICtpbnQg aW50ZWxfYnJlYWRjcnVtYnNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiAr ewo+ICsJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmk5MTUtPmJyZWFkY3J1bWJzOwo+ ICsJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrOwo+ICsKPiArCXNwaW5fbG9ja19pbml0KCZiLT5s b2NrKTsKPiArCj4gKwl0YXNrID0ga3RocmVhZF9ydW4oaW50ZWxfYnJlYWRjcnVtYnNfaXJxLCBp OTE1LCAiaXJxL2k5MTUiKTsKPiArCWlmIChJU19FUlIodGFzaykpCj4gKwkJcmV0dXJuIFBUUl9F UlIodGFzayk7Cj4gKwo+ICsJYi0+dGFzayA9IHRhc2s7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30K PiArCj4gK3ZvaWQgaW50ZWxfYnJlYWRjcnVtYnNfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKPiArewo+ICsJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmk5MTUtPmJy ZWFkY3J1bWJzOwo+ICsKPiArCWlmIChiLT50YXNrID09IE5VTEwpCj4gKwkJcmV0dXJuOwo+ICsK PiArCWt0aHJlYWRfc3RvcChiLT50YXNrKTsKPiArCWItPnRhc2sgPSBOVUxMOwo+ICt9Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBiNDBmZmMzNjA3ZTcuLjYwNGMwODFiMGEwZiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTE5MjIsMTAgKzE5MjIsMTAgQEAg c3RhdGljIGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW4KPiAgIAlyaW5nLT5idWZmZXIgPSBOVUxMOwo+Cj4gICAJ cmluZy0+ZGV2ID0gZGV2Owo+ICsJcmluZy0+aTkxNSA9IHRvX2k5MTUoZGV2KTsKPiAgIAlJTklU X0xJU1RfSEVBRCgmcmluZy0+YWN0aXZlX2xpc3QpOwo+ICAgCUlOSVRfTElTVF9IRUFEKCZyaW5n LT5yZXF1ZXN0X2xpc3QpOwo+ICAgCWk5MTVfZ2VtX2JhdGNoX3Bvb2xfaW5pdChkZXYsICZyaW5n LT5iYXRjaF9wb29sKTsKPiAtCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnJpbmctPmlycV9xdWV1ZSk7 Cj4KPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+YnVmZmVycyk7Cj4gICAJSU5JVF9MSVNUX0hF QUQoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5jCj4gaW5kZXggNTExZWZlNTU2ZDczLi41YTVhNzE5NWRkNTQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTIxNTcsNiArMjE1Nyw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfaW5pdF9yaW5nX2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICAgCVdBUk5fT04ocmluZy0+YnVmZmVyKTsKPgo+ICAgCXJpbmctPmRldiA9IGRldjsKPiAr CXJpbmctPmk5MTUgPSB0b19pOTE1KGRldik7Cj4gICAJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmFj dGl2ZV9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+cmVxdWVzdF9saXN0KTsKPiAg IAlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xpc3RfcXVldWUpOwo+IEBAIC0yMTY0LDggKzIx NjUsNiBAQCBzdGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKPiAgIAlpOTE1X2dlbV9iYXRjaF9wb29sX2luaXQoZGV2LCAmcmluZy0+YmF0Y2hf cG9vbCk7Cj4gICAJbWVtc2V0KHJpbmctPnNlbWFwaG9yZS5zeW5jX3NlcW5vLCAwLCBzaXplb2Yo cmluZy0+c2VtYXBob3JlLnN5bmNfc2Vxbm8pKTsKPgo+IC0JaW5pdF93YWl0cXVldWVfaGVhZCgm cmluZy0+aXJxX3F1ZXVlKTsKPiAtCj4gICAJcmluZ2J1ZiA9IGludGVsX2VuZ2luZV9jcmVhdGVf cmluZ2J1ZmZlcihyaW5nLCAzMiAqIFBBR0VfU0laRSk7Cj4gICAJaWYgKElTX0VSUihyaW5nYnVm KSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIocmluZ2J1Zik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDVkMWViMjA2MTUxZC4uNDliNWJkZWQyNzY3IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC0xNTcsNiArMTU3 LDcgQEAgc3RydWN0ICBpbnRlbF9lbmdpbmVfY3Mgewo+ICAgI2RlZmluZSBMQVNUX1VTRVJfUklO RyAoVkVDUyArIDEpCj4gICAJdTMyCQltbWlvX2Jhc2U7Cj4gICAJc3RydWN0CQlkcm1fZGV2aWNl ICpkZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNTsKPiAgIAlzdHJ1Y3QgaW50 ZWxfcmluZ2J1ZmZlciAqYnVmZmVyOwo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgYnVmZmVyczsKPgo+ IEBAIC0zMDMsOCArMzA0LDYgQEAgc3RydWN0ICBpbnRlbF9lbmdpbmVfY3Mgewo+Cj4gICAJYm9v bCBncHVfY2FjaGVzX2RpcnR5Owo+Cj4gLQl3YWl0X3F1ZXVlX2hlYWRfdCBpcnFfcXVldWU7Cj4g LQo+ICAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpkZWZhdWx0X2NvbnRleHQ7Cj4gICAJc3RydWN0 IGludGVsX2NvbnRleHQgKmxhc3RfY29udGV4dDsKPgo+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==