From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2 07/15] drm/i915: Protect the request->global_seqno with the engine->timeline lock Date: Wed, 22 Feb 2017 12:29:00 +0000 Message-ID: <20f64a9b-9a35-3619-e19f-cb9b4e7c4b99@linux.intel.com> References: <20170222114610.5819-1-chris@chris-wilson.co.uk> <20170222114610.5819-8-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 192A06E7DC for ; Wed, 22 Feb 2017 12:29:04 +0000 (UTC) In-Reply-To: <20170222114610.5819-8-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 Ck9uIDIyLzAyLzIwMTcgMTE6NDYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBIHJlcXVlc3QgaXMg YXNzaWduZWQgYSBnbG9iYWwgc2Vxbm8gb25seSB3aGVuIGl0IGlzIG9uIHRoZSBoYXJkd2FyZQo+ IGV4ZWN1dGlvbiBxdWV1ZS4gVGhlIGdsb2JhbCBzZXFubyBjYW4gYmUgdXNlZCB0byBtYWludGFp biBhIGxpc3Qgb2YKPiByZXF1ZXN0cyBvbiB0aGUgc2FtZSBlbmdpbmUgaW4gcmV0aXJlbWVudCBv cmRlciwgZm9yIGV4YW1wbGUgZm9yCj4gY29uc3RydWN0aW5nIGEgcHJpb3JpdHkgcXVldWUgZm9y IHdhaXRpbmcuIFByaW9yIHRvIGl0cyBleGVjdXRpb24sIG9yCj4gaWYgaXQgaXMgc3Vic2VxdWVu dGx5IHJlbW92ZWQgaW4gdGhlIGV2ZW50IG9mIHByZWVtcHRpb24sIGl0cyBnbG9iYWwKPiBzZXFu byBpcyB6ZXJvLiBBcyBib3RoIGluc2VydGlvbiBhbmQgcmVtb3ZhbCBmcm9tIHRoZSBleGVjdXRp b24gcXVldWUKPiBtYXkgb3BlcmF0ZSBpbiBJUlEgY29udGV4dCwgaXQgaXMgbm90IGd1YXJkZWQg YnkgdGhlIHVzdWFsIHN0cnVjdF9tdXRleAo+IEJLTC4gSW5zdGVhZCB0aG9zZSByZWx5aW5nIG9u IHRoZSBnbG9iYWwgc2Vxbm8gbXVzdCBiZSBwcmVwYXJlZCBmb3IgaXRzCj4gdmFsdWUgdG8gY2hh bmdlIGJldHdlZW4gcmVhZHMuIE9ubHkgd2hlbiB0aGUgcmVxdWVzdCBpcyBjb21wbGV0ZSBjYW4K PiB0aGUgZ2xvYmFsIHNlcW5vIGJlIHN0YWJsZSAoZHVlIHRvIHRoZSBtZW1vcnkgYmFycmllcnMg b24gc3VibWl0dGluZwo+IHRoZSBjb21tYW5kcyB0byB0aGUgaGFyZHdhcmUgdG8gd3JpdGUgdGhl IGJyZWFkY3J1bWIsIGlmIHRoZSBIV1Mgc2hvd3MKPiB0aGF0IGl0IGhhcyBwYXNzZWQgdGhlIGds b2JhbCBzZXFubyBhbmQgdGhlIGdsb2JhbCBzZXFubyBpcyB1bmNoYW5nZWQKPiBhZnRlciB0aGUg cmVhZCwgaXQgaXMgaW5kZWVkIGNvbXBsZXRlKS4KCk1pc3NlZCBzb21lIHF1ZXN0aW9ucyBJJ3Zl IHJhaXNlZCBvbiB0aGlzIG9uZSBpbiB0aGUgcHJldmlvdXMgcm91bmQuCgpJIG5ldmVyIGdvdCBy b3VuZCByZS1yZWFkaW5nIGl0IGlmIHlvdSB3ZXJlIHdhaXRpbmcgZm9yIHRoYXQgYnkgYW55IGNo YW5jZS4KClJlZ2FyZHMsCgpUdnJ0a28KCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgICAgICAgfCAxNiArKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jICAgICAgICAgIHwgMTYgKysrKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fcmVxdWVzdC5jICB8IDQ2ICsrKysrKysrKysrKysrLS0tLS0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oICB8IDY2ICsrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJz LmMgfCAxMSArKysrLS0KPiAgNSBmaWxlcyBjaGFuZ2VkLCAxMTQgaW5zZXJ0aW9ucygrKSwgNDEg ZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCA5OTQ5Mjk2NjAw MjcuLjNlNGZlZWFlZWY2MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC00MDIy LDE0ICs0MDIyLDI0IEBAIHdhaXRfcmVtYWluaW5nX21zX2Zyb21famlmZmllcyh1bnNpZ25lZCBs b25nIHRpbWVzdGFtcF9qaWZmaWVzLCBpbnQgdG9fd2FpdF9tcykKPiAgfQo+Cj4gIHN0YXRpYyBp bmxpbmUgYm9vbAo+IC1fX2k5MTVfcmVxdWVzdF9pcnFfY29tcGxldGUoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpCj4gK19faTkxNV9yZXF1ZXN0X2lycV9jb21wbGV0ZShjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgewo+ICAJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gKwl1MzIgc2Vxbm8gPSBpOTE1X2dlbV9y ZXF1ZXN0X2dsb2JhbF9zZXFubyhyZXEpOwo+ICsKPiArCS8qIFRoZSByZXF1ZXN0IHdhcyBkZXF1 ZXVlZCBiZWZvcmUgd2Ugd2VyZSBhd29rZW4uIFdlIGNoZWNrIGFmdGVyCj4gKwkgKiBpbnNwZWN0 aW5nIHRoZSBodyB0byBjb25maXJtIHRoYXQgdGhpcyB3YXMgdGhlIHNhbWUgcmVxdWVzdAo+ICsJ ICogdGhhdCBnZW5lcmF0ZWQgdGhlIEhXUyB1cGRhdGUuIFRoZSBtZW1vcnkgYmFycmllcnMgd2l0 aGluCj4gKwkgKiB0aGUgcmVxdWVzdCBleGVjdXRpb24gYXJlIHN1ZmZpY2llbnQgdG8gZW5zdXJl IHRoYXQgYSBjaGVjawo+ICsJICogYWZ0ZXIgcmVhZGluZyB0aGUgdmFsdWUgZnJvbSBodyBtYXRj aGVzIHRoaXMgcmVxdWVzdC4KPiArCSAqLwo+ICsJaWYgKCFzZXFubykKPiArCQlyZXR1cm4gZmFs c2U7Cj4KPiAgCS8qIEJlZm9yZSB3ZSBkbyB0aGUgaGVhdmllciBjb2hlcmVudCByZWFkIG9mIHRo ZSBzZXFubywKPiAgCSAqIGNoZWNrIHRoZSB2YWx1ZSAoaG9wZWZ1bGx5KSBpbiB0aGUgQ1BVIGNh Y2hlbGluZS4KPiAgCSAqLwo+IC0JaWYgKF9faTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVx KSkKPiArCWlmIChfX2k5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwgc2Vxbm8pKQo+ICAJ CXJldHVybiB0cnVlOwo+Cj4gIAkvKiBFbnN1cmUgb3VyIHJlYWQgb2YgdGhlIHNlcW5vIGlzIGNv aGVyZW50IHNvIHRoYXQgd2UKPiBAQCAtNDA4MCw3ICs0MDkwLDcgQEAgX19pOTE1X3JlcXVlc3Rf aXJxX2NvbXBsZXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAJCQl3YWtl X3VwX3Byb2Nlc3ModHNrKTsKPiAgCQlyY3VfcmVhZF91bmxvY2soKTsKPgo+IC0JCWlmIChfX2k5 MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSkpCj4gKwkJaWYgKF9faTkxNV9nZW1fcmVxdWVz dF9jb21wbGV0ZWQocmVxLCBzZXFubykpCj4gIAkJCXJldHVybiB0cnVlOwo+ICAJfQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggZmNlMmNlYzhlNjY1Li5mOTUwY2VkYjY1MTYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMzk3LDcgKzM5Nyw3IEBAIGk5MTVfZ2Vt X29iamVjdF93YWl0X2ZlbmNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLAo+ICAJaWYgKGZsYWdz ICYgSTkxNV9XQUlUX0xPQ0tFRCAmJiBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpCj4g IAkJaTkxNV9nZW1fcmVxdWVzdF9yZXRpcmVfdXB0byhycSk7Cj4KPiAtCWlmIChycHMgJiYgcnEt Pmdsb2JhbF9zZXFubyA9PSBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQocnEtPmVuZ2luZSkpIHsK PiArCWlmIChycHMgJiYgaTkxNV9nZW1fcmVxdWVzdF9nbG9iYWxfc2Vxbm8ocnEpID09IGludGVs X2VuZ2luZV9sYXN0X3N1Ym1pdChycS0+ZW5naW5lKSkgewo+ICAJCS8qIFRoZSBHUFUgaXMgbm93 IGlkbGUgYW5kIHRoaXMgY2xpZW50IGhhcyBzdGFsbGVkLgo+ICAJCSAqIFNpbmNlIG5vIG90aGVy IGNsaWVudCBoYXMgc3VibWl0dGVkIGEgcmVxdWVzdCBpbiB0aGUKPiAgCQkgKiBtZWFudGltZSwg YXNzdW1lIHRoYXQgdGhpcyBjbGllbnQgaXMgdGhlIG9ubHkgb25lCj4gQEAgLTI2MDksNyArMjYw OSw4IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfbWFya19pbm5vY2VudChzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgo+ ICBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgewo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+ICsJ c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCAqYWN0aXZlID0gTlVMTDsKPiAr CXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4KPiAgCS8qIFdlIGFyZSBjYWxsZWQgYnkgdGhlIGVycm9y IGNhcHR1cmUgYW5kIHJlc2V0IGF0IGEgcmFuZG9tCj4gIAkgKiBwb2ludCBpbiB0aW1lLiBJbiBw YXJ0aWN1bGFyLCBub3RlIHRoYXQgbmVpdGhlciBpcyBjcnVjaWFsbHkKPiBAQCAtMjYxOSwxNyAr MjYyMCwyMiBAQCBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgCSAqIGV4dHJhIGRlbGF5IGZvciBhIHJlY2VudCBpbnRlcnJ1cHQg aXMgcG9pbnRsZXNzLiBIZW5jZSwgd2UgZG8KPiAgCSAqIG5vdCBuZWVkIGFuIGVuZ2luZS0+aXJx X3NlcW5vX2JhcnJpZXIoKSBiZWZvcmUgdGhlIHNlcW5vIHJlYWRzLgo+ICAJICovCj4gKwlzcGlu X2xvY2tfaXJxc2F2ZSgmZW5naW5lLT50aW1lbGluZS0+bG9jaywgZmxhZ3MpOwo+ICAJbGlzdF9m b3JfZWFjaF9lbnRyeShyZXF1ZXN0LCAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsIGxpbmsp IHsKPiAtCQlpZiAoX19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0KSkKPiArCQlp ZiAoX19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXF1ZXN0LAo+ICsJCQkJCQkgcmVxdWVz dC0+Z2xvYmFsX3NlcW5vKSkKPiAgCQkJY29udGludWU7Cj4KPiAgCQlHRU1fQlVHX09OKHJlcXVl c3QtPmVuZ2luZSAhPSBlbmdpbmUpOwo+ICAJCUdFTV9CVUdfT04odGVzdF9iaXQoRE1BX0ZFTkNF X0ZMQUdfU0lHTkFMRURfQklULAo+ICAJCQkJICAgICZyZXF1ZXN0LT5mZW5jZS5mbGFncykpOwo+ IC0JCXJldHVybiByZXF1ZXN0Owo+ICsKPiArCQlhY3RpdmUgPSByZXF1ZXN0Owo+ICsJCWJyZWFr Owo+ICAJfQo+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGluZS0+bG9j aywgZmxhZ3MpOwo+Cj4gLQlyZXR1cm4gTlVMTDsKPiArCXJldHVybiBhY3RpdmU7Cj4gIH0KPgo+ ICBzdGF0aWMgYm9vbCBlbmdpbmVfc3RhbGxlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3Qu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDQ3N2U4 ZmMxMjVjZS4uZDE4ZjQ1MDk3N2UwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuYwo+IEBAIC00MTgsNyArNDE4LDYgQEAgdm9pZCBfX2k5MTVfZ2VtX3JlcXVlc3Rf c3VibWl0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCQlpbnRlbF9l bmdpbmVfZW5hYmxlX3NpZ25hbGluZyhyZXF1ZXN0KTsKPiAgCXNwaW5fdW5sb2NrKCZyZXF1ZXN0 LT5sb2NrKTsKPgo+IC0JR0VNX0JVR19PTighcmVxdWVzdC0+Z2xvYmFsX3NlcW5vKTsKPiAgCWVu Z2luZS0+ZW1pdF9icmVhZGNydW1iKHJlcXVlc3QsCj4gIAkJCQlyZXF1ZXN0LT5yaW5nLT52YWRk ciArIHJlcXVlc3QtPnBvc3RmaXgpOwo+Cj4gQEAgLTUwNSw3ICs1MDQsNyBAQCBpOTE1X2dlbV9y ZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCS8qIE1vdmUg dGhlIG9sZGVzdCByZXF1ZXN0IHRvIHRoZSBzbGFiLWNhY2hlIChpZiBub3QgaW4gdXNlISkgKi8K PiAgCXJlcSA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZW5naW5lLT50aW1lbGluZS0+cmVx dWVzdHMsCj4gIAkJCQkgICAgICAgdHlwZW9mKCpyZXEpLCBsaW5rKTsKPiAtCWlmIChyZXEgJiYg X19pOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQo+ICsJaWYgKHJlcSAmJiBpOTE1X2dl bV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQo+ICAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKHJl cSk7Cj4KPiAgCS8qIEJld2FyZTogRHJhZ29ucyBiZSBmbHlpbmcgb3ZlcmhlYWQuCj4gQEAgLTYx MSw2ICs2MTAsNyBAQCBzdGF0aWMgaW50Cj4gIGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfcmVxdWVz dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnRvLAo+ICAJCQkgICAgICAgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpmcm9tKQo+ICB7Cj4gKwl1MzIgc2Vxbm87Cj4gIAlpbnQgcmV0 Owo+Cj4gIAlHRU1fQlVHX09OKHRvID09IGZyb20pOwo+IEBAIC02MzMsMTQgKzYzMywxNSBAQCBp OTE1X2dlbV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICp0bywKPiAgCQlyZXR1cm4gcmV0IDwgMCA/IHJldCA6IDA7Cj4gIAl9Cj4KPiAtCWlmICghZnJv bS0+Z2xvYmFsX3NlcW5vKSB7Cj4gKwlzZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2xvYmFsX3Nl cW5vKGZyb20pOwo+ICsJaWYgKCFzZXFubykgewo+ICAJCXJldCA9IGk5MTVfc3dfZmVuY2VfYXdh aXRfZG1hX2ZlbmNlKCZ0by0+c3VibWl0LAo+ICAJCQkJCQkgICAgJmZyb20tPmZlbmNlLCAwLAo+ ICAJCQkJCQkgICAgR0ZQX0tFUk5FTCk7Cj4gIAkJcmV0dXJuIHJldCA8IDAgPyByZXQgOiAwOwo+ ICAJfQo+Cj4gLQlpZiAoZnJvbS0+Z2xvYmFsX3NlcW5vIDw9IHRvLT50aW1lbGluZS0+c3luY19z ZXFub1tmcm9tLT5lbmdpbmUtPmlkXSkKPiArCWlmIChzZXFubyA8PSB0by0+dGltZWxpbmUtPnN5 bmNfc2Vxbm9bZnJvbS0+ZW5naW5lLT5pZF0pCj4gIAkJcmV0dXJuIDA7Cj4KPiAgCXRyYWNlX2k5 MTVfZ2VtX3Jpbmdfc3luY190byh0bywgZnJvbSk7Cj4gQEAgLTY1OCw3ICs2NTksNyBAQCBpOTE1 X2dlbV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0 bywKPiAgCQkJcmV0dXJuIHJldDsKPiAgCX0KPgo+IC0JdG8tPnRpbWVsaW5lLT5zeW5jX3NlcW5v W2Zyb20tPmVuZ2luZS0+aWRdID0gZnJvbS0+Z2xvYmFsX3NlcW5vOwo+ICsJdG8tPnRpbWVsaW5l LT5zeW5jX3NlcW5vW2Zyb20tPmVuZ2luZS0+aWRdID0gc2Vxbm87Cj4gIAlyZXR1cm4gMDsKPiAg fQo+Cj4gQEAgLTkzOSw3ICs5NDAsNyBAQCBzdGF0aWMgYm9vbCBidXN5d2FpdF9zdG9wKHVuc2ln bmVkIGxvbmcgdGltZW91dCwgdW5zaWduZWQgaW50IGNwdSkKPiAgfQo+Cj4gIGJvb2wgX19pOTE1 X3NwaW5fcmVxdWVzdChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAt CQkJIGludCBzdGF0ZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0X3VzKQo+ICsJCQkgdTMyIHNlcW5v LCBpbnQgc3RhdGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dF91cykKPiAgewo+ICAJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gIAl1bnNpZ25lZCBpbnQgaXJx LCBjcHU7Cj4gQEAgLTk1Nyw3ICs5NTgsMTEgQEAgYm9vbCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KGNv bnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJaXJxID0gYXRvbWljX3Jl YWQoJmVuZ2luZS0+aXJxX2NvdW50KTsKPiAgCXRpbWVvdXRfdXMgKz0gbG9jYWxfY2xvY2tfdXMo JmNwdSk7Cj4gIAlkbyB7Cj4gLQkJaWYgKF9faTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVx KSkKPiArCQlpZiAoc2Vxbm8gIT0gaTkxNV9nZW1fcmVxdWVzdF9nbG9iYWxfc2Vxbm8ocmVxKSkK PiArCQkJYnJlYWs7Cj4gKwo+ICsJCWlmIChpOTE1X3NlcW5vX3Bhc3NlZChpbnRlbF9lbmdpbmVf Z2V0X3NlcW5vKHJlcS0+ZW5naW5lKSwKPiArCQkJCSAgICAgIHNlcW5vKSkKPiAgCQkJcmV0dXJu IHRydWU7Cj4KPiAgCQkvKiBTZXFubyBhcmUgbWVhbnQgdG8gYmUgb3JkZXJlZCAqYmVmb3JlKiB0 aGUgaW50ZXJydXB0LiBJZgo+IEBAIC0xMDI5LDExICsxMDM0LDE1IEBAIGxvbmcgaTkxNV93YWl0 X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4gIAlpZiAoZmxhZ3Mg JiBJOTE1X1dBSVRfTE9DS0VEKQo+ICAJCWFkZF93YWl0X3F1ZXVlKGVycnEsICZyZXNldCk7Cj4K PiArCWludGVsX3dhaXRfaW5pdCgmd2FpdCwgaTkxNV9nZW1fcmVxdWVzdF9nbG9iYWxfc2Vxbm8o cmVxKSk7Cj4gKwo+ICAJcmVzZXRfd2FpdF9xdWV1ZSgmcmVxLT5leGVjdXRlLCAmZXhlYyk7Cj4g LQlpZiAoIXJlcS0+Z2xvYmFsX3NlcW5vKSB7Cj4gKwlpZiAoIXdhaXQuc2Vxbm8pIHsKPiAgCQlk byB7Cj4gIAkJCXNldF9jdXJyZW50X3N0YXRlKHN0YXRlKTsKPiAtCQkJaWYgKHJlcS0+Z2xvYmFs X3NlcW5vKQo+ICsKPiArCQkJd2FpdC5zZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2xvYmFsX3Nl cW5vKHJlcSk7Cj4gKwkJCWlmICh3YWl0LnNlcW5vKQo+ICAJCQkJYnJlYWs7Cj4KPiAgCQkJaWYg KGZsYWdzICYgSTkxNV9XQUlUX0xPQ0tFRCAmJgo+IEBAIC0xMDYxLDcgKzEwNzAsNyBAQCBsb25n IGk5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICAJ CWlmICh0aW1lb3V0IDwgMCkKPiAgCQkJZ290byBjb21wbGV0ZTsKPgo+IC0JCUdFTV9CVUdfT04o IXJlcS0+Z2xvYmFsX3NlcW5vKTsKPiArCQlHRU1fQlVHX09OKCF3YWl0LnNlcW5vKTsKPiAgCX0K PiAgCUdFTV9CVUdfT04oIWk5MTVfc3dfZmVuY2Vfc2lnbmFsZWQoJnJlcS0+c3VibWl0KSk7Cj4K PiBAQCAtMTA3MCw3ICsxMDc5LDYgQEAgbG9uZyBpOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAgCQlnb3RvIGNvbXBsZXRlOwo+Cj4gIAlzZXRfY3Vy cmVudF9zdGF0ZShzdGF0ZSk7Cj4gLQlpbnRlbF93YWl0X2luaXQoJndhaXQsIHJlcS0+Z2xvYmFs X3NlcW5vKTsKPiAgCWlmIChpbnRlbF9lbmdpbmVfYWRkX3dhaXQocmVxLT5lbmdpbmUsICZ3YWl0 KSkKPiAgCQkvKiBJbiBvcmRlciB0byBjaGVjayB0aGF0IHdlIGhhdmVuJ3QgbWlzc2VkIHRoZSBp bnRlcnJ1cHQKPiAgCQkgKiBhcyB3ZSBlbmFibGVkIGl0LCB3ZSBuZWVkIHRvIGtpY2sgb3Vyc2Vs dmVzIHRvIGRvIGEKPiBAQCAtMTA5MSw3ICsxMDk5LDggQEAgbG9uZyBpOTE1X3dhaXRfcmVxdWVz dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPgo+ICAJCXRpbWVvdXQgPSBpb19z Y2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwo+Cj4gLQkJaWYgKGludGVsX3dhaXRfY29tcGxldGUo JndhaXQpKQo+ICsJCWlmIChpbnRlbF93YWl0X2NvbXBsZXRlKCZ3YWl0KSAmJgo+ICsJCSAgICBp OTE1X2dlbV9yZXF1ZXN0X2dsb2JhbF9zZXFubyhyZXEpID09IHdhaXQuc2Vxbm8pCj4gIAkJCWJy ZWFrOwo+Cj4gIAkJc2V0X2N1cnJlbnRfc3RhdGUoc3RhdGUpOwo+IEBAIC0xMTQyLDE0ICsxMTUx LDIxIEBAIGxvbmcgaTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEsCj4gIHN0YXRpYyB2b2lkIGVuZ2luZV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QsICpuZXh0Owo+ICsJdTMyIHNlcW5vID0gaW50ZWxfZW5naW5lX2dldF9zZXFubyhl bmdpbmUpOwo+ICsJTElTVF9IRUFEKHJldGlyZSk7Cj4KPiArCXNwaW5fbG9ja19pcnEoJmVuZ2lu ZS0+dGltZWxpbmUtPmxvY2spOwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJlcXVlc3Qs IG5leHQsCj4gIAkJCQkgJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLCBsaW5rKSB7Cj4gLQkJ aWYgKCFfX2k5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QpKQo+IC0JCQlyZXR1cm47 Cj4gKwkJaWYgKCFpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcmVxdWVzdC0+Z2xvYmFsX3NlcW5v KSkKPiArCQkJYnJlYWs7Cj4KPiAtCQlpOTE1X2dlbV9yZXF1ZXN0X3JldGlyZShyZXF1ZXN0KTsK PiArCQlsaXN0X21vdmVfdGFpbCgmcmVxdWVzdC0+bGluaywgJnJldGlyZSk7Cj4gIAl9Cj4gKwlz cGluX3VubG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsKPiArCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZShyZXF1ZXN0LCBuZXh0LCAmcmV0aXJlLCBsaW5rKQo+ICsJCWk5MTVf Z2VtX3JlcXVlc3RfcmV0aXJlKHJlcXVlc3QpOwo+ICB9Cj4KPiAgdm9pZCBpOTE1X2dlbV9yZXRp cmVfcmVxdWVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiBpbmRleCA0NjdkM2UxM2ZjZTAuLmI4MWY2 NzA5OTA1YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1 ZXN0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmgKPiBA QCAtMTM1LDYgKzEzNSwxMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qgewo+ICAJc3Ry dWN0IGk5MTVfcHJpb3RyZWUgcHJpb3RyZWU7Cj4gIAlzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5IGRl cDsKPgo+ICsJLyoqIEdFTSBzZXF1ZW5jZSBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVx dWVzdCBvbiB0aGUKPiArCSAqIGdsb2JhbCBleGVjdXRpb24gdGltZWxpbmUuIEl0IGlzIHplcm8g d2hlbiB0aGUgcmVxdWVzdCBpcyBub3QKPiArCSAqIG9uIHRoZSBIVyBxdWV1ZSAoaS5lLiBub3Qg b24gdGhlIGVuZ2luZSB0aW1lbGluZSBsaXN0KS4KPiArCSAqIEl0cyB2YWx1ZSBpcyBndWFyZGVk IGJ5IHRoZSB0aW1lbGluZSBzcGlubG9jay4KPiArCSAqLwo+ICAJdTMyIGdsb2JhbF9zZXFubzsK Pgo+ICAJLyoqIFBvc2l0aW9uIGluIHRoZSByaW5nIG9mIHRoZSBzdGFydCBvZiB0aGUgcmVxdWVz dCAqLwo+IEBAIC0yMjksNiArMjM0LDMwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9y ZXF1ZXN0X2Fzc2lnbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipwZHN0LAo+ICAJKnBk c3QgPSBzcmM7Cj4gIH0KPgo+ICsvKioKPiArICogaTkxNV9nZW1fcmVxdWVzdF9nbG9iYWxfc2Vx bm8gLSByZXBvcnQgdGhlIGN1cnJlbnQgZ2xvYmFsIHNlcW5vCj4gKyAqIEByZXF1ZXN0IC0gdGhl IHJlcXVlc3QKPiArICoKPiArICogQSByZXF1ZXN0IGlzIGFzc2lnbmVkIGEgZ2xvYmFsIHNlcW5v IG9ubHkgd2hlbiBpdCBpcyBvbiB0aGUgaGFyZHdhcmUKPiArICogZXhlY3V0aW9uIHF1ZXVlLiBU aGUgZ2xvYmFsIHNlcW5vIGNhbiBiZSB1c2VkIHRvIG1haW50YWluIGEgbGlzdCBvZgo+ICsgKiBy ZXF1ZXN0cyBvbiB0aGUgc2FtZSBlbmdpbmUgaW4gcmV0aXJlbWVudCBvcmRlciwgZm9yIGV4YW1w bGUgZm9yCj4gKyAqIGNvbnN0cnVjdGluZyBhIHByaW9yaXR5IHF1ZXVlIGZvciB3YWl0aW5nLiBQ cmlvciB0byBpdHMgZXhlY3V0aW9uLCBvcgo+ICsgKiBpZiBpdCBpcyBzdWJzZXF1ZW50bHkgcmVt b3ZlZCBpbiB0aGUgZXZlbnQgb2YgcHJlZW1wdGlvbiwgaXRzIGdsb2JhbAo+ICsgKiBzZXFubyBp cyB6ZXJvLiBBcyBib3RoIGluc2VydGlvbiBhbmQgcmVtb3ZhbCBmcm9tIHRoZSBleGVjdXRpb24g cXVldWUKPiArICogbWF5IG9wZXJhdGUgaW4gSVJRIGNvbnRleHQsIGl0IGlzIG5vdCBndWFyZGVk IGJ5IHRoZSB1c3VhbCBzdHJ1Y3RfbXV0ZXgKPiArICogQktMLiBJbnN0ZWFkIHRob3NlIHJlbHlp bmcgb24gdGhlIGdsb2JhbCBzZXFubyBtdXN0IGJlIHByZXBhcmVkIGZvciBpdHMKPiArICogdmFs dWUgdG8gY2hhbmdlIGJldHdlZW4gcmVhZHMuIE9ubHkgd2hlbiB0aGUgcmVxdWVzdCBpcyBjb21w bGV0ZSBjYW4KPiArICogdGhlIGdsb2JhbCBzZXFubyBiZSBzdGFibGUgKGR1ZSB0byB0aGUgbWVt b3J5IGJhcnJpZXJzIG9uIHN1Ym1pdHRpbmcKPiArICogdGhlIGNvbW1hbmRzIHRvIHRoZSBoYXJk d2FyZSB0byB3cml0ZSB0aGUgYnJlYWRjcnVtYiwgaWYgdGhlIEhXUyBzaG93cwo+ICsgKiB0aGF0 IGl0IGhhcyBwYXNzZWQgdGhlIGdsb2JhbCBzZXFubyBhbmQgdGhlIGdsb2JhbCBzZXFubyBpcyB1 bmNoYW5nZWQKPiArICogYWZ0ZXIgdGhlIHJlYWQsIGl0IGlzIGluZGVlZCBjb21wbGV0ZSkuCj4g KyAqLwo+ICtzdGF0aWMgdTMyCj4gK2k5MTVfZ2VtX3JlcXVlc3RfZ2xvYmFsX3NlcW5vKGNvbnN0 IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiArewo+ICsJcmV0dXJuIFJF QURfT05DRShyZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pOwo+ICt9Cj4gKwo+ICBpbnQKPiAgaTkxNV9n ZW1fcmVxdWVzdF9hd2FpdF9vYmplY3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0bywK PiAgCQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiBAQCAtMjY5LDQ2 ICsyOTgsNTUgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfc2Vxbm9fcGFzc2VkKHUzMiBzZXEx LCB1MzIgc2VxMikKPiAgfQo+Cj4gIHN0YXRpYyBpbmxpbmUgYm9vbAo+IC1fX2k5MTVfZ2VtX3Jl cXVlc3Rfc3RhcnRlZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAr X19pOTE1X2dlbV9yZXF1ZXN0X3N0YXJ0ZWQoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiBzZXFubykKPiAgewo+IC0JR0VNX0JVR19PTighcmVxLT5nbG9iYWxfc2Vx bm8pOwo+ICsJR0VNX0JVR19PTighc2Vxbm8pOwo+ICAJcmV0dXJuIGk5MTVfc2Vxbm9fcGFzc2Vk KGludGVsX2VuZ2luZV9nZXRfc2Vxbm8ocmVxLT5lbmdpbmUpLAo+IC0JCQkJIHJlcS0+Z2xvYmFs X3NlcW5vIC0gMSk7Cj4gKwkJCQkgc2Vxbm8gLSAxKTsKPiAgfQo+Cj4gIHN0YXRpYyBpbmxpbmUg Ym9vbAo+ICBpOTE1X2dlbV9yZXF1ZXN0X3N0YXJ0ZWQoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpCj4gIHsKPiAtCWlmICghcmVxLT5nbG9iYWxfc2Vxbm8pCj4gKwl1MzIg c2Vxbm87Cj4gKwo+ICsJc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dsb2JhbF9zZXFubyhyZXEp Owo+ICsJaWYgKCFzZXFubykKPiAgCQlyZXR1cm4gZmFsc2U7Cj4KPiAtCXJldHVybiBfX2k5MTVf Z2VtX3JlcXVlc3Rfc3RhcnRlZChyZXEpOwo+ICsJcmV0dXJuIF9faTkxNV9nZW1fcmVxdWVzdF9z dGFydGVkKHJlcSwgc2Vxbm8pOwo+ICB9Cj4KPiAgc3RhdGljIGlubGluZSBib29sCj4gLV9faTkx NV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXEpCj4gK19faTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoY29uc3Qgc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXEsIHUzMiBzZXFubykKPiAgewo+IC0JR0VNX0JVR19PTighcmVx LT5nbG9iYWxfc2Vxbm8pOwo+IC0JcmV0dXJuIGk5MTVfc2Vxbm9fcGFzc2VkKGludGVsX2VuZ2lu ZV9nZXRfc2Vxbm8ocmVxLT5lbmdpbmUpLAo+IC0JCQkJIHJlcS0+Z2xvYmFsX3NlcW5vKTsKPiAr CUdFTV9CVUdfT04oIXNlcW5vKTsKPiArCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChpbnRlbF9l bmdpbmVfZ2V0X3NlcW5vKHJlcS0+ZW5naW5lKSwgc2Vxbm8pICYmCj4gKwkJc2Vxbm8gPT0gaTkx NV9nZW1fcmVxdWVzdF9nbG9iYWxfc2Vxbm8ocmVxKTsKPiAgfQo+Cj4gIHN0YXRpYyBpbmxpbmUg Ym9vbAo+ICBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSkKPiAgewo+IC0JaWYgKCFyZXEtPmdsb2JhbF9zZXFubykKPiArCXUz MiBzZXFubzsKPiArCj4gKwlzZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2xvYmFsX3NlcW5vKHJl cSk7Cj4gKwlpZiAoIXNlcW5vKQo+ICAJCXJldHVybiBmYWxzZTsKPgo+IC0JcmV0dXJuIF9faTkx NV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKTsKPiArCXJldHVybiBfX2k5MTVfZ2VtX3JlcXVl c3RfY29tcGxldGVkKHJlcSwgc2Vxbm8pOwo+ICB9Cj4KPiAgYm9vbCBfX2k5MTVfc3Bpbl9yZXF1 ZXN0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiAtCQkJIGlu dCBzdGF0ZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0X3VzKTsKPiArCQkJIHUzMiBzZXFubywgaW50 IHN0YXRlLCB1bnNpZ25lZCBsb25nIHRpbWVvdXRfdXMpOwo+ICBzdGF0aWMgaW5saW5lIGJvb2wg aTkxNV9zcGluX3JlcXVlc3QoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1 ZXN0LAo+ICAJCQkJICAgICBpbnQgc3RhdGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dF91cykKPiAg ewo+IC0JcmV0dXJuIChfX2k5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChyZXF1ZXN0KSAmJgo+IC0J CV9faTkxNV9zcGluX3JlcXVlc3QocmVxdWVzdCwgc3RhdGUsIHRpbWVvdXRfdXMpKTsKPiArCXUz MiBzZXFubzsKPiArCj4gKwlzZXFubyA9IGk5MTVfZ2VtX3JlcXVlc3RfZ2xvYmFsX3NlcW5vKHJl cXVlc3QpOwo+ICsJcmV0dXJuIChfX2k5MTVfZ2VtX3JlcXVlc3Rfc3RhcnRlZChyZXF1ZXN0LCBz ZXFubykgJiYKPiArCQlfX2k5MTVfc3Bpbl9yZXF1ZXN0KHJlcXVlc3QsIHNlcW5vLCBzdGF0ZSwg dGltZW91dF91cykpOwo+ICB9Cj4KPiAgLyogV2UgdHJlYXQgcmVxdWVzdHMgYXMgZmVuY2VzLiBU aGlzIGlzIG5vdCBiZSB0byBjb25mdXNlZCB3aXRoIG91cgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfYnJlYWRjcnVtYnMuYwo+IGluZGV4IDRmNGU3MDNkMWIxNC4uZDViZjRjMGIyZGViIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2JyZWFkY3J1bWJzLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9icmVhZGNydW1icy5jCj4gQEAgLTU0NSw2 ICs1NDUsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9lbmFibGVfc2lnbmFsaW5nKHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPiAgCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAq YiA9ICZlbmdpbmUtPmJyZWFkY3J1bWJzOwo+ICAJc3RydWN0IHJiX25vZGUgKnBhcmVudCwgKipw Owo+ICAJYm9vbCBmaXJzdCwgd2FrZXVwOwo+ICsJdTMyIHNlcW5vOwo+Cj4gIAkvKiBOb3RlIHRo YXQgd2UgbWF5IGJlIGNhbGxlZCBmcm9tIGFuIGludGVycnVwdCBoYW5kbGVyIG9uIGFub3RoZXIK PiAgCSAqIGRldmljZSAoZS5nLiBub3V2ZWF1IHNpZ25hbGluZyBhIGZlbmNlIGNvbXBsZXRpb24g Y2F1c2luZyB1cwo+IEBAIC01NTUsMTEgKzU1NiwxMyBAQCB2b2lkIGludGVsX2VuZ2luZV9lbmFi bGVfc2lnbmFsaW5nKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKPgo+ICAJ LyogbG9ja2VkIGJ5IGRtYV9mZW5jZV9lbmFibGVfc3dfc2lnbmFsaW5nKCkgKGlycXNhZmUgZmVu Y2UtPmxvY2spICovCj4gIAlhc3NlcnRfc3Bpbl9sb2NrZWQoJnJlcXVlc3QtPmxvY2spOwo+IC0J aWYgKCFyZXF1ZXN0LT5nbG9iYWxfc2Vxbm8pCj4gKwo+ICsJc2Vxbm8gPSBpOTE1X2dlbV9yZXF1 ZXN0X2dsb2JhbF9zZXFubyhyZXF1ZXN0KTsKPiArCWlmICghc2Vxbm8pCj4gIAkJcmV0dXJuOwo+ Cj4gIAlyZXF1ZXN0LT5zaWduYWxpbmcud2FpdC50c2sgPSBiLT5zaWduYWxlcjsKPiAtCXJlcXVl c3QtPnNpZ25hbGluZy53YWl0LnNlcW5vID0gcmVxdWVzdC0+Z2xvYmFsX3NlcW5vOwo+ICsJcmVx dWVzdC0+c2lnbmFsaW5nLndhaXQuc2Vxbm8gPSBzZXFubzsKPiAgCWk5MTVfZ2VtX3JlcXVlc3Rf Z2V0KHJlcXVlc3QpOwo+Cj4gIAlzcGluX2xvY2soJmItPmxvY2spOwo+IEBAIC01ODMsOCArNTg2 LDggQEAgdm9pZCBpbnRlbF9lbmdpbmVfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gIAlwID0gJmItPnNpZ25hbHMucmJfbm9kZTsKPiAgCXdo aWxlICgqcCkgewo+ICAJCXBhcmVudCA9ICpwOwo+IC0JCWlmIChpOTE1X3NlcW5vX3Bhc3NlZChy ZXF1ZXN0LT5nbG9iYWxfc2Vxbm8sCj4gLQkJCQkgICAgICB0b19zaWduYWxlcihwYXJlbnQpLT5n bG9iYWxfc2Vxbm8pKSB7Cj4gKwkJaWYgKGk5MTVfc2Vxbm9fcGFzc2VkKHNlcW5vLAo+ICsJCQkJ ICAgICAgdG9fc2lnbmFsZXIocGFyZW50KS0+c2lnbmFsaW5nLndhaXQuc2Vxbm8pKSB7Cj4gIAkJ CXAgPSAmcGFyZW50LT5yYl9yaWdodDsKPiAgCQkJZmlyc3QgPSBmYWxzZTsKPiAgCQl9IGVsc2Ug ewo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=