From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [CI 2/4] drm/i915: Serialise with engine-pm around requests on the kernel_context Date: Mon, 25 Nov 2019 10:44:15 +0000 Message-ID: References: <20191124170524.1436498-1-chris@chris-wilson.co.uk> <20191124170524.1436498-2-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id AEEB76E105 for ; Mon, 25 Nov 2019 10:44:18 +0000 (UTC) In-Reply-To: <20191124170524.1436498-2-chris@chris-wilson.co.uk> Content-Language: en-US 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 Ck9uIDI0LzExLzIwMTkgMTc6MDUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBcyB0aGUgZW5naW5l LT5rZXJuZWxfY29udGV4dCBpcyB1c2VkIHdpdGhpbiB0aGUgZW5naW5lLXBtIGJhcnJpZXIsIHdl Cj4gaGF2ZSB0byBiZSBjYXJlZnVsIHdoZW4gZW1pdHRpbmcgcmVxdWVzdHMgb3V0c2lkZSBvZiB0 aGUgYmFycmllciwgYXMgdGhlCj4gc3RyaWN0IHRpbWVsaW5lIGxvY2tpbmcgcnVsZXMgZG8gbm90 IGFwcGx5LiBJbnN0ZWFkLCB3ZSBtdXN0IGVuc3VyZSB0aGUKPiBlbmdpbmVfcGFyaygpIGNhbm5v dCBiZSBlbnRlcmVkIGFzIHdlIGJ1aWxkIHRoZSByZXF1ZXN0LCB3aGljaCBpcwo+IHNpbXBsZXN0 IGJ5IHRha2luZyBhbiBleHBsaWNpdCBlbmdpbmUtcG0gd2FrZXJlZiBhcm91bmQgdGhlIHJlcXVl c3QKPiBjb25zdHJ1Y3Rpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fY29udGV4dC5jICAgfCAgMyArLQo+ICAgLi4uL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9p OTE1X2dlbV9jbGllbnRfYmx0LmMgIHwgIDIgKwo+ICAgLi4uL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb2hlcmVuY3kuYyAgIHwgIDMgKy0KPiAgIC4uLi9kcm0vaTkxNS9nZW0vc2VsZnRl c3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8ICA3ICsrKy0KPiAgIC4uLi9kcm0vaTkxNS9nZW0vc2Vs ZnRlc3RzL2k5MTVfZ2VtX21tYW4uYyAgICB8ICAzICstCj4gICAuLi4vaTkxNS9nZW0vc2VsZnRl c3RzL2k5MTVfZ2VtX29iamVjdF9ibHQuYyAgfCAxOCArKysrKystLS0KPiAgIC4uLi9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jICB8IDE0ICsrKysrLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5oICAgICB8IDIxICsrKysrKysrKysK PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMgICB8ICAzICsr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMgICAgfCAgMiAr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMgIHwgMTIg KysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyAgICAgICAg fCAgNiArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyAgICAg ICB8ICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMg ICB8ICA2ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAgICAg ICAgIHwgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2 ZS5jICB8ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJm LmMgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVx dWVzdC5jIHwgNDAgKysrKysrKysrKysrKystLS0tLQo+ICAgLi4uL2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgIHwgIDIgKwo+ICAgMTkgZmlsZXMgY2hhbmdlZCwgMTE5 IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDZmMWU2MTgxZjY3YS4uYzk0YWM4Mzg0 MDFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250 ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5j Cj4gQEAgLTcwLDYgKzcwLDcgQEAKPiAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiAgIAo+ ICAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaCIKPiArI2luY2x1ZGUgImd0 L2ludGVsX2VuZ2luZV9wbS5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2VyLmgi Cj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVs X3JpbmcuaCIKPiBAQCAtMTI2NSw3ICsxMjY2LDcgQEAgZ2VuOF9tb2RpZnlfcnBjcyhzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCj4gICAJaWYgKCFpbnRl bF9jb250ZXh0X2lzX3Bpbm5lZChjZSkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQlycSA9IGk5 MTVfcmVxdWVzdF9jcmVhdGUoY2UtPmVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJcnEgPSBp bnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0KGNlLT5lbmdpbmUpOwo+ICAgCWlmIChJ U19FUlIocnEpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NsaWVudF9ibHQu Ywo+IGluZGV4IGRhOGVkZWU0ZmUwYS4uYjk3MmJlMTY1ZTg1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50X2JsdC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0 LmMKPiBAQCAtMjQsNiArMjQsNyBAQCBzdGF0aWMgaW50IF9faWd0X2NsaWVudF9maWxsKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAo+ICAgCXByYW5kb21fc2VlZF9zdGF0ZSgm cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7Cj4gICAKPiArCWludGVsX2VuZ2luZV9w bV9nZXQoZW5naW5lKTsKPiAgIAlkbyB7Cj4gICAJCWNvbnN0IHUzMiBtYXhfYmxvY2tfc2l6ZSA9 IFMxNl9NQVggKiBQQUdFX1NJWkU7Cj4gICAJCXUzMiBzeiA9IG1pbl90KHU2NCwgY2UtPnZtLT50 b3RhbCA+PiA0LCBwcmFuZG9tX3UzMl9zdGF0ZSgmcHJuZykpOwo+IEBAIC05OSw2ICsxMDAsNyBA QCBzdGF0aWMgaW50IF9faWd0X2NsaWVudF9maWxsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIGVycl9mbHVzaDoKPiAgIAlpZiAoZXJyID09IC1FTk9NRU0pCj4gICAJCWVyciA9 IDA7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAKPiAgIAlyZXR1cm4gZXJy Owo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+IGluZGV4IDJiMjlmNmI0ZTFkZC4uOWQzY2QxYWY2MWY2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29oZXJlbmN5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gQEAgLTYsNiArNiw3IEBACj4gICAKPiAgICNpbmNsdWRl IDxsaW51eC9wcmltZV9udW1iZXJzLmg+Cj4gICAKPiArI2luY2x1ZGUgImd0L2ludGVsX2VuZ2lu ZV9wbS5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50 ZWxfZ3RfcG0uaCIKPiAgICNpbmNsdWRlICJndC9pbnRlbF9yaW5nLmgiCj4gQEAgLTIwMCw3ICsy MDEsNyBAQCBzdGF0aWMgaW50IGdwdV9zZXQoc3RydWN0IGNvbnRleHQgKmN0eCwgdW5zaWduZWQg bG9uZyBvZmZzZXQsIHUzMiB2KQo+ICAgCWlmIChJU19FUlIodm1hKSkKPiAgIAkJcmV0dXJuIFBU Ul9FUlIodm1hKTsKPiAgIAo+IC0JcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGN0eC0+ZW5naW5l LT5rZXJuZWxfY29udGV4dCk7Cj4gKwlycSA9IGludGVsX2VuZ2luZV9jcmVhdGVfa2VybmVsX3Jl cXVlc3QoY3R4LT5lbmdpbmUpOwo+ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCWk5MTVfdm1h X3VucGluKHZtYSk7Cj4gICAJCXJldHVybiBQVFJfRVJSKHJxKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4 IGUxZDhjY2QxMTQwOS4uMmVhNDc5MGYzNzIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNyw2ICs3 LDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9wcmltZV9udW1iZXJzLmg+Cj4gICAKPiAgICNpbmNs dWRlICJnZW0vaTkxNV9nZW1fcG0uaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9wbS5o Igo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3Rf cmVxdWVzdHMuaCIKPiAgICNpbmNsdWRlICJndC9pbnRlbF9yZXNldC5oIgo+IEBAIC0xMTkwLDkg KzExOTEsMTEgQEAgX19zc2V1X3Rlc3QoY29uc3QgY2hhciAqbmFtZSwKPiAgIAlzdHJ1Y3QgaWd0 X3NwaW5uZXIgKnNwaW4gPSBOVUxMOwo+ICAgCWludCByZXQ7Cj4gICAKPiArCWludGVsX2VuZ2lu ZV9wbV9nZXQoY2UtPmVuZ2luZSk7Cj4gKwo+ICAgCXJldCA9IF9fc3NldV9wcmVwYXJlKG5hbWUs IGZsYWdzLCBjZSwgJnNwaW4pOwo+ICAgCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiArCQln b3RvIG91dF9wbTsKPiAgIAo+ICAgCXJldCA9IGludGVsX2NvbnRleHRfcmVjb25maWd1cmVfc3Nl dShjZSwgc3NldSk7Cj4gICAJaWYgKHJldCkKPiBAQCAtMTIwNyw2ICsxMjEwLDggQEAgX19zc2V1 X3Rlc3QoY29uc3QgY2hhciAqbmFtZSwKPiAgIAkJaWd0X3NwaW5uZXJfZmluaShzcGluKTsKPiAg IAkJa2ZyZWUoc3Bpbik7Cj4gICAJfQo+ICtvdXRfcG06Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0 KGNlLT5lbmdpbmUpOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwo+IGluZGV4IDlm MWE2OTAyN2EwNC4uNmNlOTE2N2Y4YzlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKPiBAQCAtNiw2ICs2LDcgQEAKPiAg IAo+ICAgI2luY2x1ZGUgPGxpbnV4L3ByaW1lX251bWJlcnMuaD4KPiAgIAo+ICsjaW5jbHVkZSAi Z3QvaW50ZWxfZW5naW5lX3BtLmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiAgICNp bmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgo+ICAgI2luY2x1ZGUgImh1Z2VfZ2VtX29iamVjdC5o Igo+IEBAIC01MzYsNyArNTM3LDcgQEAgc3RhdGljIGludCBtYWtlX29ial9idXN5KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJCWlmIChlcnIpCj4gICAJCQlyZXR1cm4gZXJy Owo+ICAgCj4gLQkJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRl eHQpOwo+ICsJCXJxID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9rZXJuZWxfcmVxdWVzdChlbmdpbmUp Owo+ICAgCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQkJaTkxNV92bWFfdW5waW4odm1hKTsKPiAg IAkJCXJldHVybiBQVFJfRVJSKHJxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3RfYmx0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdF9ibHQuYwo+IGluZGV4IDY3NWMxYTIw YTJmMS4uNjIwNzdmZTQ2NzE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0X2JsdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3RfYmx0LmMKPiBAQCAtNDEsNiArNDEs NyBAQCBzdGF0aWMgaW50IF9fcGVyZl9maWxsX2JsdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQo+ICAgCQlpZiAoIWVuZ2luZSkKPiAgIAkJCXJldHVybiAwOwo+ICAgCj4gKwkJaW50 ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICAgCQlmb3IgKHBhc3MgPSAwOyBwYXNzIDwgQVJS QVlfU0laRSh0KTsgcGFzcysrKSB7Cj4gICAJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBl bmdpbmUtPmtlcm5lbF9jb250ZXh0Owo+ICAgCQkJa3RpbWVfdCB0MCwgdDE7Cj4gQEAgLTQ5LDE3 ICs1MCwyMCBAQCBzdGF0aWMgaW50IF9fcGVyZl9maWxsX2JsdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+ICAgCj4gICAJCQllcnIgPSBpOTE1X2dlbV9vYmplY3RfZmlsbF9ibHQo b2JqLCBjZSwgMCk7Cj4gICAJCQlpZiAoZXJyKQo+IC0JCQkJcmV0dXJuIGVycjsKPiArCQkJCWJy ZWFrOwo+ICAgCj4gICAJCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCj4gICAJCQkJ CQkgICBJOTE1X1dBSVRfQUxMLAo+ICAgCQkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ ICAgCQkJaWYgKGVycikKPiAtCQkJCXJldHVybiBlcnI7Cj4gKwkJCQlicmVhazsKPiAgIAo+ICAg CQkJdDEgPSBrdGltZV9nZXQoKTsKPiAgIAkJCXRbcGFzc10gPSBrdGltZV9zdWIodDEsIHQwKTsK PiAgIAkJfQo+ICsJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiArCQlpZiAoZXJyKQo+ ICsJCQlyZXR1cm4gZXJyOwo+ICAgCj4gICAJCXNvcnQodCwgQVJSQVlfU0laRSh0KSwgc2l6ZW9m KCp0KSwgd3JhcF9rdGltZV9jb21wYXJlLCBOVUxMKTsKPiAgIAkJcHJfaW5mbygiJXM6IGJsdCAl emQgS2lCIGZpbGw6ICVsbGQgTWlCL3NcbiIsCj4gQEAgLTEwOSw2ICsxMTMsNyBAQCBzdGF0aWMg aW50IF9fcGVyZl9jb3B5X2JsdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3JjLAo+ICAg CQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJCWt0aW1lX3QgdFs1XTsKPiAg IAkJaW50IHBhc3M7Cj4gKwkJaW50IGVyciA9IDA7Cj4gICAKPiAgIAkJZW5naW5lID0gaW50ZWxf ZW5naW5lX2xvb2t1cF91c2VyKGk5MTUsCj4gICAJCQkJCQkgIEk5MTVfRU5HSU5FX0NMQVNTX0NP UFksCj4gQEAgLTExNiwyNiArMTIxLDI5IEBAIHN0YXRpYyBpbnQgX19wZXJmX2NvcHlfYmx0KHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpzcmMsCj4gICAJCWlmICghZW5naW5lKQo+ICAgCQkJ cmV0dXJuIDA7Cj4gICAKPiArCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7Cj4gICAJCWZv ciAocGFzcyA9IDA7IHBhc3MgPCBBUlJBWV9TSVpFKHQpOyBwYXNzKyspIHsKPiAgIAkJCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSA9IGVuZ2luZS0+a2VybmVsX2NvbnRleHQ7Cj4gICAJCQlrdGlt ZV90IHQwLCB0MTsKPiAtCQkJaW50IGVycjsKPiAgIAo+ICAgCQkJdDAgPSBrdGltZV9nZXQoKTsK PiAgIAo+ICAgCQkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X2NvcHlfYmx0KHNyYywgZHN0LCBjZSk7 Cj4gICAJCQlpZiAoZXJyKQo+IC0JCQkJcmV0dXJuIGVycjsKPiArCQkJCWJyZWFrOwo+ICAgCj4g ICAJCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChkc3QsCj4gICAJCQkJCQkgICBJOTE1X1dB SVRfQUxMLAo+ICAgCQkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAgCQkJaWYgKGVy cikKPiAtCQkJCXJldHVybiBlcnI7Cj4gKwkJCQlicmVhazsKPiAgIAo+ICAgCQkJdDEgPSBrdGlt ZV9nZXQoKTsKPiAgIAkJCXRbcGFzc10gPSBrdGltZV9zdWIodDEsIHQwKTsKPiAgIAkJfQo+ICsJ CWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlyZXR1cm4g ZXJyOwo+ICAgCj4gICAJCXNvcnQodCwgQVJSQVlfU0laRSh0KSwgc2l6ZW9mKCp0KSwgd3JhcF9r dGltZV9jb21wYXJlLCBOVUxMKTsKPiAgIAkJcHJfaW5mbygiJXM6IGJsdCAlemQgS2lCIGNvcHk6 ICVsbGQgTWlCL3NcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9oZWFydGJlYXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV9oZWFydGJlYXQuYwo+IGluZGV4IGM5MWZkNGU0YWYyOS4uNzQyNjI4ZTQwMjAxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQu Ywo+IEBAIC0yMTUsMTggKzIxNSwyNiBAQCBpbnQgaW50ZWxfZW5naW5lX3B1bHNlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIGludCBpbnRlbF9lbmdpbmVfZmx1c2hfYmFycmll cnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOwo+ICsJaW50IGVyciA9IDA7Cj4gICAKPiAgIAlpZiAobGxpc3RfZW1wdHko JmVuZ2luZS0+YmFycmllcl90YXNrcykpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gKwlpZiAoIWlu dGVsX2VuZ2luZV9wbV9nZXRfaWZfYXdha2UoZW5naW5lKSkKPiArCQlyZXR1cm4gMDsKPiArCj4g ICAJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+IC0J aWYgKElTX0VSUihycSkpCj4gLQkJcmV0dXJuIFBUUl9FUlIocnEpOwo+ICsJaWYgKElTX0VSUihy cSkpIHsKPiArCQllcnIgPSBQVFJfRVJSKHJxKTsKPiArCQlnb3RvIG91dF9ycG07Cj4gKwl9Cj4g ICAKPiAgIAlpZGxlX3B1bHNlKGVuZ2luZSwgcnEpOwo+ICAgCWk5MTVfcmVxdWVzdF9hZGQocnEp Owo+ICAgCj4gLQlyZXR1cm4gMDsKPiArb3V0X3JwbToKPiArCWludGVsX2VuZ2luZV9wbV9wdXQo ZW5naW5lKTsKPiArCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiAgICNpZiBJU19FTkFCTEVEKENP TkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfcG0uaAo+IGluZGV4IDI0ZTIwMzQ0ZGMyMi4uZTUyYzJiMGNiMjQ1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmgKPiBAQCAtNyw2ICs3LDcgQEAK PiAgICNpZm5kZWYgSU5URUxfRU5HSU5FX1BNX0gKPiAgICNkZWZpbmUgSU5URUxfRU5HSU5FX1BN X0gKPiAgIAo+ICsjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxf ZW5naW5lX3R5cGVzLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfd2FrZXJlZi5oIgo+ICAgCj4gQEAg LTQxLDYgKzQyLDI2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9lbmdpbmVfcG1fZmx1c2go c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWludGVsX3dha2VyZWZfdW5sb2Nr X3dhaXQoJmVuZ2luZS0+d2FrZXJlZik7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlubGluZSBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICoKPiAraW50ZWxfZW5naW5lX2NyZWF0ZV9rZXJuZWxfcmVxdWVzdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxOwo+ICsKPiArCS8qCj4gKwkgKiBUaGUgZW5naW5lLT5rZXJuZWxfY29udGV4dCBpcyBz cGVjaWFsIGFzIGl0IGlzIHVzZWQgaW5zaWRlCj4gKwkgKiB0aGUgZW5naW5lLXBtIGJhcnJpZXIg KHNlZSBfX2VuZ2luZV9wYXJrKCkpLCBjaXJjdW12ZW50aW5nCj4gKwkgKiB0aGUgdXN1YWwgbXV0 ZXhlcyBhbmQgcmVseWluZyBvbiB0aGUgZW5naW5lLXBtIGJhcnJpZXIKPiArCSAqIGluc3RlYWQu IFNvIHdoZW5ldmVyIHdlIHVzZSB0aGUgZW5naW5lLT5rZXJuZWxfY29udGV4dAo+ICsJICogb3V0 c2lkZSBvZiB0aGUgYmFycmllciwgd2UgbXVzdCBtYW51YWxseSBoYW5kbGUgdGhlCj4gKwkgKiBl bmdpbmUgd2FrZXJlZiB0byBzZXJpYWxpc2Ugd2l0aCB0aGUgdXNlIGluc2lkZS4KPiArCSAqLwo+ ICsJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICsJcnEgPSBpOTE1X3JlcXVlc3RfY3Jl YXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdp bmUpOwoKaTkxNV9yZXF1ZXN0X2FkZCBkb2VzIG5vdCBoYXZlIHRvIGJlIGNvdmVyZWQgYnkgdGhl IHBtIHJlZj8KCkkgYW0gc2xpZ2h0bHkgY29uZnVzZWQgYnkgaG93IHBhdGNoIGNvbnZlcnRzIHNv bWUgdG8gdGhpcyBoZWxwZXIgYW5kIGF0IApzb21lIHBsYWNlcyBpdCBvcGVuIGNvZGVzIGl0LgoK UmVnYXJkcywKClR2cnRrbwoKPiArCj4gKwlyZXR1cm4gcnE7Cj4gK30KPiArCj4gICB2b2lkIGlu dGVsX2VuZ2luZV9pbml0X19wbShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAg Cj4gICAjZW5kaWYgLyogSU5URUxfRU5HSU5FX1BNX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCAyMjZiZDRjY2NiNDguLjBjNmQzOTg5 ODBiYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJv dW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMu Ywo+IEBAIC02LDYgKzYsNyBAQAo+ICAgCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNp bmNsdWRlICJpbnRlbF9jb250ZXh0LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG0uaCIK PiAgICNpbmNsdWRlICJpbnRlbF9ndC5oIgo+ICAgI2luY2x1ZGUgImludGVsX3JpbmcuaCIKPiAg ICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5kcy5oIgo+IEBAIC0xNTgyLDcgKzE1ODMsOSBAQCBz dGF0aWMgaW50IGVuZ2luZV93YV9saXN0X3ZlcmlmeShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us Cj4gICAJaWYgKElTX0VSUih2bWEpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUih2bWEpOwo+ICAgCj4g KwlpbnRlbF9lbmdpbmVfcG1fZ2V0KGNlLT5lbmdpbmUpOwo+ICAgCXJxID0gaW50ZWxfY29udGV4 dF9jcmVhdGVfcmVxdWVzdChjZSk7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0KGNlLT5lbmdpbmUp Owo+ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIocnEpOwo+ICAgCQln b3RvIGVycl92bWE7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQu Ywo+IGluZGV4IDViYzEyNDU3NDE3MC4uYWYzNTRjY2RiZjQwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwo+IEBAIC0xMjEsNyArMTIxLDcgQEAgc3Rh dGljIGludCBfX2xpdmVfY29udGV4dF9zaXplKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAgIAkJZ290byBlcnJfdW5waW47Cj4gICAKPiAgIAkvKiBGb3JjZSB0aGUgY29udGV4dCBz d2l0Y2ggKi8KPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250 ZXh0KTsKPiArCXJxID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9rZXJuZWxfcmVxdWVzdChlbmdpbmUp Owo+ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIocnEpOwo+ICAgCQln b3RvIGVycl91bnBpbjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdp bmVfY3MuYwo+IGluZGV4IDU5ODFhN2I3MWVjOS4uNzYxZDgxZjRiZDY4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKPiBAQCAtMTMyLDE0ICsx MzIsMTggQEAgc3RhdGljIGludCBwZXJmX21pX2JiX3N0YXJ0KHZvaWQgKmFyZykKPiAgIAkJdTMy IGN5Y2xlc1tDT1VOVF07Cj4gICAJCWludCBpOwo+ICAgCj4gKwkJaW50ZWxfZW5naW5lX3BtX2dl dChlbmdpbmUpOwo+ICsKPiAgIAkJYmF0Y2ggPSBjcmVhdGVfZW1wdHlfYmF0Y2goY2UpOwo+ICAg CQlpZiAoSVNfRVJSKGJhdGNoKSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihiYXRjaCk7Cj4gKwkJ CWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gICAK PiAgIAkJZXJyID0gaTkxNV92bWFfc3luYyhiYXRjaCk7Cj4gICAJCWlmIChlcnIpIHsKPiArCQkJ aW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICAgCQkJaTkxNV92bWFfcHV0KGJhdGNoKTsK PiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gQEAgLTE4MCw2ICsxODQsNyBAQCBzdGF0aWMgaW50IHBl cmZfbWlfYmJfc3RhcnQodm9pZCAqYXJnKQo+ICAgCQkJY3ljbGVzW2ldID0gcnEtPmh3c3Bfc2Vx bm9bM10gLSBycS0+aHdzcF9zZXFub1syXTsKPiAgIAkJfQo+ICAgCQlpOTE1X3ZtYV9wdXQoYmF0 Y2gpOwo+ICsJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAkJaWYgKGVycikKPiAg IAkJCWJyZWFrOwo+ICAgCj4gQEAgLTI1MSwxNSArMjU2LDE5IEBAIHN0YXRpYyBpbnQgcGVyZl9t aV9ub29wKHZvaWQgKmFyZykKPiAgIAkJdTMyIGN5Y2xlc1tDT1VOVF07Cj4gICAJCWludCBpOwo+ ICAgCj4gKwkJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICsKPiAgIAkJYmFzZSA9IGNy ZWF0ZV9lbXB0eV9iYXRjaChjZSk7Cj4gICAJCWlmIChJU19FUlIoYmFzZSkpIHsKPiAgIAkJCWVy ciA9IFBUUl9FUlIoYmFzZSk7Cj4gKwkJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAg IAkJCWJyZWFrOwo+ICAgCQl9Cj4gICAKPiAgIAkJZXJyID0gaTkxNV92bWFfc3luYyhiYXNlKTsK PiAgIAkJaWYgKGVycikgewo+ICAgCQkJaTkxNV92bWFfcHV0KGJhc2UpOwo+ICsJCQlpbnRlbF9l bmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+ICAgCj4gQEAgLTI2 Nyw2ICsyNzYsNyBAQCBzdGF0aWMgaW50IHBlcmZfbWlfbm9vcCh2b2lkICphcmcpCj4gICAJCWlm IChJU19FUlIobm9wKSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihub3ApOwo+ICAgCQkJaTkxNV92 bWFfcHV0KGJhc2UpOwo+ICsJCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAJCQli cmVhazsKPiAgIAkJfQo+ICAgCj4gQEAgLTI3NCw2ICsyODQsNyBAQCBzdGF0aWMgaW50IHBlcmZf bWlfbm9vcCh2b2lkICphcmcpCj4gICAJCWlmIChlcnIpIHsKPiAgIAkJCWk5MTVfdm1hX3B1dChu b3ApOwo+ICAgCQkJaTkxNV92bWFfcHV0KGJhc2UpOwo+ICsJCQlpbnRlbF9lbmdpbmVfcG1fcHV0 KGVuZ2luZSk7Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+ICAgCj4gQEAgLTMyNyw2ICszMzgsNyBA QCBzdGF0aWMgaW50IHBlcmZfbWlfbm9vcCh2b2lkICphcmcpCj4gICAJCX0KPiAgIAkJaTkxNV92 bWFfcHV0KG5vcCk7Cj4gICAJCWk5MTVfdm1hX3B1dChiYXNlKTsKPiArCQlpbnRlbF9lbmdpbmVf cG1fcHV0KGVuZ2luZSk7Cj4gICAJCWlmIChlcnIpCj4gICAJCQlicmVhazsKPiAgIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCj4gaW5kZXggZmMxNDJkZDYxZGQxLi5hYzhi OTExNmQzMDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf bHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+IEBA IC0zNDgsNyArMzQ4LDcgQEAgcmVsZWFzZV9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gICAJdTMyICpjczsKPiAgIAo+ IC0JcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJ cnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0KGVuZ2luZSk7Cj4gICAJaWYg KElTX0VSUihycSkpCj4gICAJCXJldHVybiBQVFJfRVJSKHJxKTsKPiAgIAo+IEBAIC00OTcsNyAr NDk3LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKm5vcF9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cTsKPiAgIAo+IC0JcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRl eHQpOwo+ICsJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0KGVuZ2luZSk7 Cj4gICAJaWYgKElTX0VSUihycSkpCj4gICAJCXJldHVybiBycTsKPiAgIAo+IEBAIC0zNjk4LDcg KzM2OTgsNyBAQCBzdGF0aWMgaW50IGdwcl9tYWtlX2RpcnR5KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIAl1MzIgKmNzOwo+ICAgCWludCBuOwo+ICAgCj4gLQlycSA9IGk5MTVf cmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gKwlycSA9IGludGVsX2Vu Z2luZV9jcmVhdGVfa2VybmVsX3JlcXVlc3QoZW5naW5lKTsKPiAgIAlpZiAoSVNfRVJSKHJxKSkK PiAgIAkJcmV0dXJuIFBUUl9FUlIocnEpOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X21vY3MuYwo+IGluZGV4IGEzNGQ0ZmI1MmZhMS4uZGUwMTBmNTI3NzU3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+IEBAIC0yNjEsNyArMjYxLDkg QEAgc3RhdGljIGludCBsaXZlX21vY3Nfa2VybmVsKHZvaWQgKmFyZykKPiAgIAkJcmV0dXJuIGVy cjsKPiAgIAo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBpZCkgewo+ICsJCWludGVs X2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKPiAgIAkJZXJyID0gY2hlY2tfbW9jc19lbmdpbmUoJm1v Y3MsIGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5n aW5lKTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKPiBpbmRleCBmMDRhNTlmZTVkMmMuLmUy ZDc4Y2MyMmZiNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF90aW1lbGluZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGlt ZWxpbmUuYwo+IEBAIC00NTgsNyArNDU4LDcgQEAgdGxfd3JpdGUoc3RydWN0IGludGVsX3RpbWVs aW5lICp0bCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgdmFsdWUpCj4gICAJ CWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+IC0JcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2lu ZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9y ZXF1ZXN0KGVuZ2luZSk7Cj4gICAJaWYgKElTX0VSUihycSkpCj4gICAJCWdvdG8gb3V0X3VucGlu Owo+ICAgCj4gQEAgLTY3NSw5ICs2NzUsNyBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF93cmFwKHZv aWQgKmFyZykKPiAgIAkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkp Cj4gICAJCQljb250aW51ZTsKPiAgIAo+IC0JCWludGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsK PiAtCQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4g LQkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICsJCXJxID0gaW50ZWxfZW5naW5lX2Ny ZWF0ZV9rZXJuZWxfcmVxdWVzdChlbmdpbmUpOwo+ICAgCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAg CQkJZXJyID0gUFRSX0VSUihycSk7Cj4gICAJCQlnb3RvIG91dDsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYwo+IGluZGV4IDYwOGU2YzNmM2MxYS4uYjQ2NzE1YjU3NTc2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wZXJmLmMKPiBAQCAtMTk2OCw3ICsxOTY4LDkgQEAgc3RhdGljIGludCBlbWl0 X29hX2NvbmZpZyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCWlmIChlcnIp Cj4gICAJCWdvdG8gZXJyX3ZtYV9wdXQ7Cj4gICAKPiArCWludGVsX2VuZ2luZV9wbV9nZXQoY2Ut PmVuZ2luZSk7Cj4gICAJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGNlKTsKPiArCWludGVsX2Vu Z2luZV9wbV9wdXQoY2UtPmVuZ2luZSk7Cj4gICAJaWYgKElTX0VSUihycSkpIHsKPiAgIAkJZXJy ID0gUFRSX0VSUihycSk7Cj4gICAJCWdvdG8gZXJyX3ZtYV91bnBpbjsKPiBAQCAtMjE2NSw3ICsy MTY3LDcgQEAgc3RhdGljIGludCBnZW44X21vZGlmeV9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwKPiAgIAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5waW5fbXV0ZXgpOwo+ ICAgCj4gLQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoY2UtPmVuZ2luZS0+a2VybmVsX2NvbnRl eHQpOwo+ICsJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0KGNlLT5lbmdp bmUpOwo+ICAgCWlmIChJU19FUlIocnEpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZl LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYwo+IGluZGV4 IDYwMjkwZjc4NzUwZC4uNmMxZGIzZGVkNDQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMKPiBAQCAtOTksNyArOTksNyBAQCBfX2xpdmVfYWN0 aXZlX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCWZvcl9lYWNoX3Vh YmlfZW5naW5lKGVuZ2luZSwgaTkxNSkgewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsK PiAgIAo+IC0JCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0 KTsKPiArCQlycSA9IGludGVsX2VuZ2luZV9jcmVhdGVfa2VybmVsX3JlcXVlc3QoZW5naW5lKTsK PiAgIAkJaWYgKElTX0VSUihycSkpIHsKPiAgIAkJCWVyciA9IFBUUl9FUlIocnEpOwo+ICAgCQkJ YnJlYWs7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmYuYwo+IGlu ZGV4IGFhYmQwN2Y2N2U0OS4uZDFhMTU2OGM0N2JhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmYuYwo+IEBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGlu dCBsaXZlX25vYV9kZWxheSh2b2lkICphcmcpCj4gICAJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykK PiAgIAkJaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2Uoc3RyZWFtLT5lbmdpbmUsIDB4MTAwICsgaSwg MCk7Cj4gICAKPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShzdHJlYW0tPmVuZ2luZS0+a2Vy bmVsX2NvbnRleHQpOwo+ICsJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0 KHN0cmVhbS0+ZW5naW5lKTsKPiAgIAlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQllcnIgPSBQVFJf RVJSKHJxKTsKPiAgIAkJZ290byBvdXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IGMxNmQxZWZkMmFkNC4uOTljOTRiNGY2OWZiIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3Qu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwo+ IEBAIC0yNyw2ICsyNyw3IEBACj4gICAjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3BtLmgiCj4gICAj aW5jbHVkZSAiZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuaCIKPiAgIAo+ICsjaW5jbHVkZSAi Z3QvaW50ZWxfZW5naW5lX3BtLmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiAgIAo+ ICAgI2luY2x1ZGUgImk5MTVfcmFuZG9tLmgiCj4gQEAgLTU0MSw2ICs1NDIsNyBAQCBzdGF0aWMg aW50IGxpdmVfbm9wX3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJcmV0 dXJuIGVycjsKPiAgIAo+ICsJCWludGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKPiAgIAkJZm9y X2VhY2hfcHJpbWVfbnVtYmVyX2Zyb20ocHJpbWUsIDEsIDgxOTIpIHsKPiAgIAkJCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJlcXVlc3QgPSBOVUxMOwo+ICAgCj4gQEAgLTU3OSw2ICs1ODEsNyBAQCBz dGF0aWMgaW50IGxpdmVfbm9wX3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAgCQkJaWYgKF9faWd0X3Rp bWVvdXQoZW5kX3RpbWUsIE5VTEwpKQo+ICAgCQkJCWJyZWFrOwo+ICAgCQl9Cj4gKwkJaW50ZWxf ZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICAgCj4gICAJCWVyciA9IGlndF9saXZlX3Rlc3RfZW5k KCZ0KTsKPiAgIAkJaWYgKGVycikKPiBAQCAtNjkzLDEwICs2OTYsMTMgQEAgc3RhdGljIGludCBs aXZlX2VtcHR5X3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJZ290byBv dXRfYmF0Y2g7Cj4gICAKPiArCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7Cj4gKwo+ICAg CQkvKiBXYXJtdXAgLyBwcmVsb2FkICovCj4gICAJCXJlcXVlc3QgPSBlbXB0eV9yZXF1ZXN0KGVu Z2luZSwgYmF0Y2gpOwo+ICAgCQlpZiAoSVNfRVJSKHJlcXVlc3QpKSB7Cj4gICAJCQllcnIgPSBQ VFJfRVJSKHJlcXVlc3QpOwo+ICsJCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAJ CQlnb3RvIG91dF9iYXRjaDsKPiAgIAkJfQo+ICAgCQlpOTE1X3JlcXVlc3Rfd2FpdChyZXF1ZXN0 LCAwLCBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gQEAgLTcwOSw2ICs3MTUsNyBAQCBzdGF0aWMg aW50IGxpdmVfZW1wdHlfcmVxdWVzdCh2b2lkICphcmcpCj4gICAJCQkJcmVxdWVzdCA9IGVtcHR5 X3JlcXVlc3QoZW5naW5lLCBiYXRjaCk7Cj4gICAJCQkJaWYgKElTX0VSUihyZXF1ZXN0KSkgewo+ ICAgCQkJCQllcnIgPSBQVFJfRVJSKHJlcXVlc3QpOwo+ICsJCQkJCWludGVsX2VuZ2luZV9wbV9w dXQoZW5naW5lKTsKPiAgIAkJCQkJZ290byBvdXRfYmF0Y2g7Cj4gICAJCQkJfQo+ICAgCQkJfQo+ IEBAIC03MjIsNiArNzI5LDcgQEAgc3RhdGljIGludCBsaXZlX2VtcHR5X3JlcXVlc3Qodm9pZCAq YXJnKQo+ICAgCQkJCWJyZWFrOwo+ICAgCQl9Cj4gICAJCWk5MTVfcmVxdWVzdF9wdXQocmVxdWVz dCk7Cj4gKwkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICAgCj4gICAJCWVyciA9IGln dF9saXZlX3Rlc3RfZW5kKCZ0KTsKPiAgIAkJaWYgKGVycikKPiBAQCAtODQ2LDcgKzg1NCw3IEBA IHN0YXRpYyBpbnQgbGl2ZV9hbGxfZW5naW5lcyh2b2lkICphcmcpCj4gICAKPiAgIAlpZHggPSAw Owo+ICAgCWZvcl9lYWNoX3VhYmlfZW5naW5lKGVuZ2luZSwgaTkxNSkgewo+IC0JCXJlcXVlc3Rb aWR4XSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gKwkJ cmVxdWVzdFtpZHhdID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9rZXJuZWxfcmVxdWVzdChlbmdpbmUp Owo+ICAgCQlpZiAoSVNfRVJSKHJlcXVlc3RbaWR4XSkpIHsKPiAgIAkJCWVyciA9IFBUUl9FUlIo cmVxdWVzdFtpZHhdKTsKPiAgIAkJCXByX2VycigiJXM6IFJlcXVlc3QgYWxsb2NhdGlvbiBmYWls ZWQgd2l0aCBlcnI9JWRcbiIsCj4gQEAgLTk2Myw3ICs5NzEsNyBAQCBzdGF0aWMgaW50IGxpdmVf c2VxdWVudGlhbF9lbmdpbmVzKHZvaWQgKmFyZykKPiAgIAkJCWdvdG8gb3V0X2ZyZWU7Cj4gICAJ CX0KPiAgIAo+IC0JCXJlcXVlc3RbaWR4XSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5r ZXJuZWxfY29udGV4dCk7Cj4gKwkJcmVxdWVzdFtpZHhdID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9r ZXJuZWxfcmVxdWVzdChlbmdpbmUpOwo+ICAgCQlpZiAoSVNfRVJSKHJlcXVlc3RbaWR4XSkpIHsK PiAgIAkJCWVyciA9IFBUUl9FUlIocmVxdWVzdFtpZHhdKTsKPiAgIAkJCXByX2VycigiJXM6IFJl cXVlc3QgYWxsb2NhdGlvbiBmYWlsZWQgZm9yICVzIHdpdGggZXJyPSVkXG4iLAo+IEBAIC0xMDY4 LDE1ICsxMDc2LDE5IEBAIHN0YXRpYyBpbnQgX19saXZlX3BhcmFsbGVsX2VuZ2luZTEodm9pZCAq YXJnKQo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGFyZzsKPiAgIAlJR1Rf VElNRU9VVChlbmRfdGltZSk7Cj4gICAJdW5zaWduZWQgbG9uZyBjb3VudDsKPiArCWludCBlcnIg PSAwOwo+ICAgCj4gICAJY291bnQgPSAwOwo+ICsJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUp Owo+ICAgCWRvIHsKPiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gLQkJaW50IGVycjsK PiAgIAo+ICAgCQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4 dCk7Cj4gLQkJaWYgKElTX0VSUihycSkpCj4gLQkJCXJldHVybiBQVFJfRVJSKHJxKTsKPiArCQlp ZiAoSVNfRVJSKHJxKSkgewo+ICsJCQllcnIgPSBQVFJfRVJSKHJxKTsKPiArCQkJaWYgKGVycikK PiArCQkJCWJyZWFrOwo+ICsJCX0KPiAgIAo+ICAgCQlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKPiAg IAkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gQEAgLTEwODYsMTMgKzEwOTgsMTQgQEAgc3RhdGlj IGludCBfX2xpdmVfcGFyYWxsZWxfZW5naW5lMSh2b2lkICphcmcpCj4gICAJCQllcnIgPSAtRVRJ TUU7Cj4gICAJCWk5MTVfcmVxdWVzdF9wdXQocnEpOwo+ICAgCQlpZiAoZXJyKQo+IC0JCQlyZXR1 cm4gZXJyOwo+ICsJCQlicmVhazsKPiAgIAo+ICAgCQljb3VudCsrOwo+ICAgCX0gd2hpbGUgKCFf X2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSk7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0KGVu Z2luZSk7Cj4gICAKPiAgIAlwcl9pbmZvKCIlczogJWx1IHJlcXVlc3QgKyBzeW5jXG4iLCBlbmdp bmUtPm5hbWUsIGNvdW50KTsKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGVycjsKPiAgIH0KPiAg IAo+ICAgc3RhdGljIGludCBfX2xpdmVfcGFyYWxsZWxfZW5naW5lTih2b2lkICphcmcpCj4gQEAg LTExMDAsMjEgKzExMTMsMjYgQEAgc3RhdGljIGludCBfX2xpdmVfcGFyYWxsZWxfZW5naW5lTih2 b2lkICphcmcpCj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gYXJnOwo+ICAg CUlHVF9USU1FT1VUKGVuZF90aW1lKTsKPiAgIAl1bnNpZ25lZCBsb25nIGNvdW50Owo+ICsJaW50 IGVyciA9IDA7Cj4gICAKPiAgIAljb3VudCA9IDA7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVu Z2luZSk7Cj4gICAJZG8gewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAgIAo+ICAg CQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gLQkJ aWYgKElTX0VSUihycSkpCj4gLQkJCXJldHVybiBQVFJfRVJSKHJxKTsKPiArCQlpZiAoSVNfRVJS KHJxKSkgewo+ICsJCQllcnIgPSBQVFJfRVJSKHJxKTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICAg Cj4gICAJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICAgCQljb3VudCsrOwo+ICAgCX0gd2hpbGUg KCFfX2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSk7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0 KGVuZ2luZSk7Cj4gICAKPiAgIAlwcl9pbmZvKCIlczogJWx1IHJlcXVlc3RzXG4iLCBlbmdpbmUt Pm5hbWUsIGNvdW50KTsKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ ICAgc3RhdGljIGJvb2wgd2FrZV9hbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g QEAgLTExNTgsOSArMTE3NiwxMSBAQCBzdGF0aWMgaW50IF9fbGl2ZV9wYXJhbGxlbF9zcGluKHZv aWQgKmFyZykKPiAgIAkJcmV0dXJuIC1FTk9NRU07Cj4gICAJfQo+ICAgCj4gKwlpbnRlbF9lbmdp bmVfcG1fZ2V0KGVuZ2luZSk7Cj4gICAJcnEgPSBpZ3Rfc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdCgm c3BpbiwKPiAgIAkJCQkJZW5naW5lLT5rZXJuZWxfY29udGV4dCwKPiAgIAkJCQkJTUlfTk9PUCk7 IC8qIG5vIHByZWVtcHRpb24gKi8KPiArCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAg IAlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKHJxKTsKPiAgIAkJaWYgKGVy ciA9PSAtRU5PREVWKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX21lbW9yeV9yZWdpb24uYwo+IGluZGV4IGI2MDkxNjU2MTQ2Mi4uMDRkMGFhN2IzNDll IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1v cnlfcmVnaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf bWVtb3J5X3JlZ2lvbi5jCj4gQEAgLTUwNiw3ICs1MDYsOSBAQCBzdGF0aWMgaW50IGlndF9sbWVt X3dyaXRlX2NwdSh2b2lkICphcmcpCj4gICAJfQo+ICAgCj4gICAJLyogUHV0IHRoZSBwYWdlcyBp bnRvIGEga25vd24gc3RhdGUgLS0gZnJvbSB0aGUgZ3B1IGZvciBhZGRlZCBmdW4gKi8KPiArCWlu dGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKPiAgIAllcnIgPSBpOTE1X2dlbV9vYmplY3RfZmls bF9ibHQob2JqLCBlbmdpbmUtPmtlcm5lbF9jb250ZXh0LCAweGRlYWRiZWFmKTsKPiArCWludGVs X2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dF91bnBp bjsKPiAgIAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, HK_RANDOM_FROM,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4EA80C432C0 for ; Mon, 25 Nov 2019 10:44:20 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 232D620740 for ; Mon, 25 Nov 2019 10:44:20 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 232D620740 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AA7B66E105; Mon, 25 Nov 2019 10:44:19 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id AEEB76E105 for ; Mon, 25 Nov 2019 10:44:18 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Nov 2019 02:44:18 -0800 X-IronPort-AV: E=Sophos;i="5.69,241,1571727600"; d="scan'208";a="202308451" Received: from aburk3x-mobl1.ger.corp.intel.com (HELO [10.252.19.231]) ([10.252.19.231]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/AES256-SHA; 25 Nov 2019 02:44:17 -0800 To: Chris Wilson , intel-gfx@lists.freedesktop.org References: <20191124170524.1436498-1-chris@chris-wilson.co.uk> <20191124170524.1436498-2-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: Date: Mon, 25 Nov 2019 10:44:15 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <20191124170524.1436498-2-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [Intel-gfx] [CI 2/4] drm/i915: Serialise with engine-pm around requests on the kernel_context X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191125104415.SoiuETAiiuE6HractS7S_B_-N3JzA6D_Mj1uE1xxeiM@z> Ck9uIDI0LzExLzIwMTkgMTc6MDUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBcyB0aGUgZW5naW5l LT5rZXJuZWxfY29udGV4dCBpcyB1c2VkIHdpdGhpbiB0aGUgZW5naW5lLXBtIGJhcnJpZXIsIHdl Cj4gaGF2ZSB0byBiZSBjYXJlZnVsIHdoZW4gZW1pdHRpbmcgcmVxdWVzdHMgb3V0c2lkZSBvZiB0 aGUgYmFycmllciwgYXMgdGhlCj4gc3RyaWN0IHRpbWVsaW5lIGxvY2tpbmcgcnVsZXMgZG8gbm90 IGFwcGx5LiBJbnN0ZWFkLCB3ZSBtdXN0IGVuc3VyZSB0aGUKPiBlbmdpbmVfcGFyaygpIGNhbm5v dCBiZSBlbnRlcmVkIGFzIHdlIGJ1aWxkIHRoZSByZXF1ZXN0LCB3aGljaCBpcwo+IHNpbXBsZXN0 IGJ5IHRha2luZyBhbiBleHBsaWNpdCBlbmdpbmUtcG0gd2FrZXJlZiBhcm91bmQgdGhlIHJlcXVl c3QKPiBjb25zdHJ1Y3Rpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fY29udGV4dC5jICAgfCAgMyArLQo+ICAgLi4uL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9p OTE1X2dlbV9jbGllbnRfYmx0LmMgIHwgIDIgKwo+ICAgLi4uL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9p OTE1X2dlbV9jb2hlcmVuY3kuYyAgIHwgIDMgKy0KPiAgIC4uLi9kcm0vaTkxNS9nZW0vc2VsZnRl c3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8ICA3ICsrKy0KPiAgIC4uLi9kcm0vaTkxNS9nZW0vc2Vs ZnRlc3RzL2k5MTVfZ2VtX21tYW4uYyAgICB8ICAzICstCj4gICAuLi4vaTkxNS9nZW0vc2VsZnRl c3RzL2k5MTVfZ2VtX29iamVjdF9ibHQuYyAgfCAxOCArKysrKystLS0KPiAgIC4uLi9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5jICB8IDE0ICsrKysrLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5oICAgICB8IDIxICsrKysrKysrKysK PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMgICB8ICAzICsr Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMgICAgfCAgMiAr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMgIHwgMTIg KysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyAgICAgICAg fCAgNiArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyAgICAg ICB8ICAyICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMg ICB8ICA2ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAgICAg ICAgIHwgIDQgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2 ZS5jICB8ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9wZXJm LmMgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfcmVx dWVzdC5jIHwgNDAgKysrKysrKysrKysrKystLS0tLQo+ICAgLi4uL2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMgIHwgIDIgKwo+ICAgMTkgZmlsZXMgY2hhbmdlZCwgMTE5 IGluc2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDZmMWU2MTgxZjY3YS4uYzk0YWM4Mzg0 MDFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9jb250 ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fY29udGV4dC5j Cj4gQEAgLTcwLDYgKzcwLDcgQEAKPiAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiAgIAo+ ICAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQuaCIKPiArI2luY2x1ZGUgImd0 L2ludGVsX2VuZ2luZV9wbS5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV91c2VyLmgi Cj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfbHJjX3JlZy5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVs X3JpbmcuaCIKPiBAQCAtMTI2NSw3ICsxMjY2LDcgQEAgZ2VuOF9tb2RpZnlfcnBjcyhzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsIHN0cnVjdCBpbnRlbF9zc2V1IHNzZXUpCj4gICAJaWYgKCFpbnRl bF9jb250ZXh0X2lzX3Bpbm5lZChjZSkpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gLQlycSA9IGk5 MTVfcmVxdWVzdF9jcmVhdGUoY2UtPmVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJcnEgPSBp bnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0KGNlLT5lbmdpbmUpOwo+ICAgCWlmIChJ U19FUlIocnEpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NsaWVudF9ibHQu Ywo+IGluZGV4IGRhOGVkZWU0ZmUwYS4uYjk3MmJlMTY1ZTg1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY2xpZW50X2JsdC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jbGllbnRfYmx0 LmMKPiBAQCAtMjQsNiArMjQsNyBAQCBzdGF0aWMgaW50IF9faWd0X2NsaWVudF9maWxsKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAo+ICAgCXByYW5kb21fc2VlZF9zdGF0ZSgm cHJuZywgaTkxNV9zZWxmdGVzdC5yYW5kb21fc2VlZCk7Cj4gICAKPiArCWludGVsX2VuZ2luZV9w bV9nZXQoZW5naW5lKTsKPiAgIAlkbyB7Cj4gICAJCWNvbnN0IHUzMiBtYXhfYmxvY2tfc2l6ZSA9 IFMxNl9NQVggKiBQQUdFX1NJWkU7Cj4gICAJCXUzMiBzeiA9IG1pbl90KHU2NCwgY2UtPnZtLT50 b3RhbCA+PiA0LCBwcmFuZG9tX3UzMl9zdGF0ZSgmcHJuZykpOwo+IEBAIC05OSw2ICsxMDAsNyBA QCBzdGF0aWMgaW50IF9faWd0X2NsaWVudF9maWxsKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPiAgIGVycl9mbHVzaDoKPiAgIAlpZiAoZXJyID09IC1FTk9NRU0pCj4gICAJCWVyciA9 IDA7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAKPiAgIAlyZXR1cm4gZXJy Owo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvaGVyZW5jeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9pOTE1X2dlbV9jb2hlcmVuY3kuYwo+IGluZGV4IDJiMjlmNmI0ZTFkZC4uOWQzY2QxYWY2MWY2 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29oZXJlbmN5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3Rz L2k5MTVfZ2VtX2NvaGVyZW5jeS5jCj4gQEAgLTYsNiArNiw3IEBACj4gICAKPiAgICNpbmNsdWRl IDxsaW51eC9wcmltZV9udW1iZXJzLmg+Cj4gICAKPiArI2luY2x1ZGUgImd0L2ludGVsX2VuZ2lu ZV9wbS5oIgo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50 ZWxfZ3RfcG0uaCIKPiAgICNpbmNsdWRlICJndC9pbnRlbF9yaW5nLmgiCj4gQEAgLTIwMCw3ICsy MDEsNyBAQCBzdGF0aWMgaW50IGdwdV9zZXQoc3RydWN0IGNvbnRleHQgKmN0eCwgdW5zaWduZWQg bG9uZyBvZmZzZXQsIHUzMiB2KQo+ICAgCWlmIChJU19FUlIodm1hKSkKPiAgIAkJcmV0dXJuIFBU Ul9FUlIodm1hKTsKPiAgIAo+IC0JcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGN0eC0+ZW5naW5l LT5rZXJuZWxfY29udGV4dCk7Cj4gKwlycSA9IGludGVsX2VuZ2luZV9jcmVhdGVfa2VybmVsX3Jl cXVlc3QoY3R4LT5lbmdpbmUpOwo+ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCWk5MTVfdm1h X3VucGluKHZtYSk7Cj4gICAJCXJldHVybiBQVFJfRVJSKHJxKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4 IGUxZDhjY2QxMTQwOS4uMmVhNDc5MGYzNzIxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNyw2ICs3 LDcgQEAKPiAgICNpbmNsdWRlIDxsaW51eC9wcmltZV9udW1iZXJzLmg+Cj4gICAKPiAgICNpbmNs dWRlICJnZW0vaTkxNV9nZW1fcG0uaCIKPiArI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9wbS5o Igo+ICAgI2luY2x1ZGUgImd0L2ludGVsX2d0LmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3Rf cmVxdWVzdHMuaCIKPiAgICNpbmNsdWRlICJndC9pbnRlbF9yZXNldC5oIgo+IEBAIC0xMTkwLDkg KzExOTEsMTEgQEAgX19zc2V1X3Rlc3QoY29uc3QgY2hhciAqbmFtZSwKPiAgIAlzdHJ1Y3QgaWd0 X3NwaW5uZXIgKnNwaW4gPSBOVUxMOwo+ICAgCWludCByZXQ7Cj4gICAKPiArCWludGVsX2VuZ2lu ZV9wbV9nZXQoY2UtPmVuZ2luZSk7Cj4gKwo+ICAgCXJldCA9IF9fc3NldV9wcmVwYXJlKG5hbWUs IGZsYWdzLCBjZSwgJnNwaW4pOwo+ICAgCWlmIChyZXQpCj4gLQkJcmV0dXJuIHJldDsKPiArCQln b3RvIG91dF9wbTsKPiAgIAo+ICAgCXJldCA9IGludGVsX2NvbnRleHRfcmVjb25maWd1cmVfc3Nl dShjZSwgc3NldSk7Cj4gICAJaWYgKHJldCkKPiBAQCAtMTIwNyw2ICsxMjEwLDggQEAgX19zc2V1 X3Rlc3QoY29uc3QgY2hhciAqbmFtZSwKPiAgIAkJaWd0X3NwaW5uZXJfZmluaShzcGluKTsKPiAg IAkJa2ZyZWUoc3Bpbik7Cj4gICAJfQo+ICtvdXRfcG06Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0 KGNlLT5lbmdpbmUpOwo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21tYW4uYwo+IGluZGV4IDlm MWE2OTAyN2EwNC4uNmNlOTE2N2Y4YzlmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbW1hbi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9tbWFuLmMKPiBAQCAtNiw2ICs2LDcgQEAKPiAg IAo+ICAgI2luY2x1ZGUgPGxpbnV4L3ByaW1lX251bWJlcnMuaD4KPiAgIAo+ICsjaW5jbHVkZSAi Z3QvaW50ZWxfZW5naW5lX3BtLmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiAgICNp bmNsdWRlICJndC9pbnRlbF9ndF9wbS5oIgo+ICAgI2luY2x1ZGUgImh1Z2VfZ2VtX29iamVjdC5o Igo+IEBAIC01MzYsNyArNTM3LDcgQEAgc3RhdGljIGludCBtYWtlX29ial9idXN5KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICAJCWlmIChlcnIpCj4gICAJCQlyZXR1cm4gZXJy Owo+ICAgCj4gLQkJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRl eHQpOwo+ICsJCXJxID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9rZXJuZWxfcmVxdWVzdChlbmdpbmUp Owo+ICAgCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQkJaTkxNV92bWFfdW5waW4odm1hKTsKPiAg IAkJCXJldHVybiBQVFJfRVJSKHJxKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3RfYmx0LmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdF9ibHQuYwo+IGluZGV4IDY3NWMxYTIw YTJmMS4uNjIwNzdmZTQ2NzE1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dl bS9zZWxmdGVzdHMvaTkxNV9nZW1fb2JqZWN0X2JsdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9vYmplY3RfYmx0LmMKPiBAQCAtNDEsNiArNDEs NyBAQCBzdGF0aWMgaW50IF9fcGVyZl9maWxsX2JsdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKQo+ICAgCQlpZiAoIWVuZ2luZSkKPiAgIAkJCXJldHVybiAwOwo+ICAgCj4gKwkJaW50 ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICAgCQlmb3IgKHBhc3MgPSAwOyBwYXNzIDwgQVJS QVlfU0laRSh0KTsgcGFzcysrKSB7Cj4gICAJCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UgPSBl bmdpbmUtPmtlcm5lbF9jb250ZXh0Owo+ICAgCQkJa3RpbWVfdCB0MCwgdDE7Cj4gQEAgLTQ5LDE3 ICs1MCwyMCBAQCBzdGF0aWMgaW50IF9fcGVyZl9maWxsX2JsdChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+ICAgCj4gICAJCQllcnIgPSBpOTE1X2dlbV9vYmplY3RfZmlsbF9ibHQo b2JqLCBjZSwgMCk7Cj4gICAJCQlpZiAoZXJyKQo+IC0JCQkJcmV0dXJuIGVycjsKPiArCQkJCWJy ZWFrOwo+ICAgCj4gICAJCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChvYmosCj4gICAJCQkJ CQkgICBJOTE1X1dBSVRfQUxMLAo+ICAgCQkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ ICAgCQkJaWYgKGVycikKPiAtCQkJCXJldHVybiBlcnI7Cj4gKwkJCQlicmVhazsKPiAgIAo+ICAg CQkJdDEgPSBrdGltZV9nZXQoKTsKPiAgIAkJCXRbcGFzc10gPSBrdGltZV9zdWIodDEsIHQwKTsK PiAgIAkJfQo+ICsJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiArCQlpZiAoZXJyKQo+ ICsJCQlyZXR1cm4gZXJyOwo+ICAgCj4gICAJCXNvcnQodCwgQVJSQVlfU0laRSh0KSwgc2l6ZW9m KCp0KSwgd3JhcF9rdGltZV9jb21wYXJlLCBOVUxMKTsKPiAgIAkJcHJfaW5mbygiJXM6IGJsdCAl emQgS2lCIGZpbGw6ICVsbGQgTWlCL3NcbiIsCj4gQEAgLTEwOSw2ICsxMTMsNyBAQCBzdGF0aWMg aW50IF9fcGVyZl9jb3B5X2JsdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3JjLAo+ICAg CQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gICAJCWt0aW1lX3QgdFs1XTsKPiAg IAkJaW50IHBhc3M7Cj4gKwkJaW50IGVyciA9IDA7Cj4gICAKPiAgIAkJZW5naW5lID0gaW50ZWxf ZW5naW5lX2xvb2t1cF91c2VyKGk5MTUsCj4gICAJCQkJCQkgIEk5MTVfRU5HSU5FX0NMQVNTX0NP UFksCj4gQEAgLTExNiwyNiArMTIxLDI5IEBAIHN0YXRpYyBpbnQgX19wZXJmX2NvcHlfYmx0KHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpzcmMsCj4gICAJCWlmICghZW5naW5lKQo+ICAgCQkJ cmV0dXJuIDA7Cj4gICAKPiArCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7Cj4gICAJCWZv ciAocGFzcyA9IDA7IHBhc3MgPCBBUlJBWV9TSVpFKHQpOyBwYXNzKyspIHsKPiAgIAkJCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSA9IGVuZ2luZS0+a2VybmVsX2NvbnRleHQ7Cj4gICAJCQlrdGlt ZV90IHQwLCB0MTsKPiAtCQkJaW50IGVycjsKPiAgIAo+ICAgCQkJdDAgPSBrdGltZV9nZXQoKTsK PiAgIAo+ICAgCQkJZXJyID0gaTkxNV9nZW1fb2JqZWN0X2NvcHlfYmx0KHNyYywgZHN0LCBjZSk7 Cj4gICAJCQlpZiAoZXJyKQo+IC0JCQkJcmV0dXJuIGVycjsKPiArCQkJCWJyZWFrOwo+ICAgCj4g ICAJCQllcnIgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdChkc3QsCj4gICAJCQkJCQkgICBJOTE1X1dB SVRfQUxMLAo+ICAgCQkJCQkJICAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOwo+ICAgCQkJaWYgKGVy cikKPiAtCQkJCXJldHVybiBlcnI7Cj4gKwkJCQlicmVhazsKPiAgIAo+ICAgCQkJdDEgPSBrdGlt ZV9nZXQoKTsKPiAgIAkJCXRbcGFzc10gPSBrdGltZV9zdWIodDEsIHQwKTsKPiAgIAkJfQo+ICsJ CWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlyZXR1cm4g ZXJyOwo+ICAgCj4gICAJCXNvcnQodCwgQVJSQVlfU0laRSh0KSwgc2l6ZW9mKCp0KSwgd3JhcF9r dGltZV9jb21wYXJlLCBOVUxMKTsKPiAgIAkJcHJfaW5mbygiJXM6IGJsdCAlemQgS2lCIGNvcHk6 ICVsbGQgTWlCL3NcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV9oZWFydGJlYXQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV9oZWFydGJlYXQuYwo+IGluZGV4IGM5MWZkNGU0YWYyOS4uNzQyNjI4ZTQwMjAxIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9oZWFydGJlYXQu Ywo+IEBAIC0yMTUsMTggKzIxNSwyNiBAQCBpbnQgaW50ZWxfZW5naW5lX3B1bHNlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIGludCBpbnRlbF9lbmdpbmVfZmx1c2hfYmFycmll cnMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxOwo+ICsJaW50IGVyciA9IDA7Cj4gICAKPiAgIAlpZiAobGxpc3RfZW1wdHko JmVuZ2luZS0+YmFycmllcl90YXNrcykpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gKwlpZiAoIWlu dGVsX2VuZ2luZV9wbV9nZXRfaWZfYXdha2UoZW5naW5lKSkKPiArCQlyZXR1cm4gMDsKPiArCj4g ICAJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+IC0J aWYgKElTX0VSUihycSkpCj4gLQkJcmV0dXJuIFBUUl9FUlIocnEpOwo+ICsJaWYgKElTX0VSUihy cSkpIHsKPiArCQllcnIgPSBQVFJfRVJSKHJxKTsKPiArCQlnb3RvIG91dF9ycG07Cj4gKwl9Cj4g ICAKPiAgIAlpZGxlX3B1bHNlKGVuZ2luZSwgcnEpOwo+ICAgCWk5MTVfcmVxdWVzdF9hZGQocnEp Owo+ICAgCj4gLQlyZXR1cm4gMDsKPiArb3V0X3JwbToKPiArCWludGVsX2VuZ2luZV9wbV9wdXQo ZW5naW5lKTsKPiArCXJldHVybiBlcnI7Cj4gICB9Cj4gICAKPiAgICNpZiBJU19FTkFCTEVEKENP TkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfcG0uaAo+IGluZGV4IDI0ZTIwMzQ0ZGMyMi4uZTUyYzJiMGNiMjQ1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9wbS5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmgKPiBAQCAtNyw2ICs3LDcgQEAK PiAgICNpZm5kZWYgSU5URUxfRU5HSU5FX1BNX0gKPiAgICNkZWZpbmUgSU5URUxfRU5HSU5FX1BN X0gKPiAgIAo+ICsjaW5jbHVkZSAiaTkxNV9yZXF1ZXN0LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxf ZW5naW5lX3R5cGVzLmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfd2FrZXJlZi5oIgo+ICAgCj4gQEAg LTQxLDYgKzQyLDI2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9lbmdpbmVfcG1fZmx1c2go c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWludGVsX3dha2VyZWZfdW5sb2Nr X3dhaXQoJmVuZ2luZS0+d2FrZXJlZik7Cj4gICB9Cj4gICAKPiArc3RhdGljIGlubGluZSBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICoKPiAraW50ZWxfZW5naW5lX2NyZWF0ZV9rZXJuZWxfcmVxdWVzdChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxOwo+ICsKPiArCS8qCj4gKwkgKiBUaGUgZW5naW5lLT5rZXJuZWxfY29udGV4dCBpcyBz cGVjaWFsIGFzIGl0IGlzIHVzZWQgaW5zaWRlCj4gKwkgKiB0aGUgZW5naW5lLXBtIGJhcnJpZXIg KHNlZSBfX2VuZ2luZV9wYXJrKCkpLCBjaXJjdW12ZW50aW5nCj4gKwkgKiB0aGUgdXN1YWwgbXV0 ZXhlcyBhbmQgcmVseWluZyBvbiB0aGUgZW5naW5lLXBtIGJhcnJpZXIKPiArCSAqIGluc3RlYWQu IFNvIHdoZW5ldmVyIHdlIHVzZSB0aGUgZW5naW5lLT5rZXJuZWxfY29udGV4dAo+ICsJICogb3V0 c2lkZSBvZiB0aGUgYmFycmllciwgd2UgbXVzdCBtYW51YWxseSBoYW5kbGUgdGhlCj4gKwkgKiBl bmdpbmUgd2FrZXJlZiB0byBzZXJpYWxpc2Ugd2l0aCB0aGUgdXNlIGluc2lkZS4KPiArCSAqLwo+ ICsJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICsJcnEgPSBpOTE1X3JlcXVlc3RfY3Jl YXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdp bmUpOwoKaTkxNV9yZXF1ZXN0X2FkZCBkb2VzIG5vdCBoYXZlIHRvIGJlIGNvdmVyZWQgYnkgdGhl IHBtIHJlZj8KCkkgYW0gc2xpZ2h0bHkgY29uZnVzZWQgYnkgaG93IHBhdGNoIGNvbnZlcnRzIHNv bWUgdG8gdGhpcyBoZWxwZXIgYW5kIGF0IApzb21lIHBsYWNlcyBpdCBvcGVuIGNvZGVzIGl0LgoK UmVnYXJkcywKClR2cnRrbwoKPiArCj4gKwlyZXR1cm4gcnE7Cj4gK30KPiArCj4gICB2b2lkIGlu dGVsX2VuZ2luZV9pbml0X19wbShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+ICAg Cj4gICAjZW5kaWYgLyogSU5URUxfRU5HSU5FX1BNX0ggKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCAyMjZiZDRjY2NiNDguLjBjNmQzOTg5 ODBiYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJv dW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMu Ywo+IEBAIC02LDYgKzYsNyBAQAo+ICAgCj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgICNp bmNsdWRlICJpbnRlbF9jb250ZXh0LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9lbmdpbmVfcG0uaCIK PiAgICNpbmNsdWRlICJpbnRlbF9ndC5oIgo+ICAgI2luY2x1ZGUgImludGVsX3JpbmcuaCIKPiAg ICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5kcy5oIgo+IEBAIC0xNTgyLDcgKzE1ODMsOSBAQCBz dGF0aWMgaW50IGVuZ2luZV93YV9saXN0X3ZlcmlmeShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us Cj4gICAJaWYgKElTX0VSUih2bWEpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUih2bWEpOwo+ICAgCj4g KwlpbnRlbF9lbmdpbmVfcG1fZ2V0KGNlLT5lbmdpbmUpOwo+ICAgCXJxID0gaW50ZWxfY29udGV4 dF9jcmVhdGVfcmVxdWVzdChjZSk7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0KGNlLT5lbmdpbmUp Owo+ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIocnEpOwo+ICAgCQln b3RvIGVycl92bWE7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0 ZXN0X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQu Ywo+IGluZGV4IDViYzEyNDU3NDE3MC4uYWYzNTRjY2RiZjQwIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwo+IEBAIC0xMjEsNyArMTIxLDcgQEAgc3Rh dGljIGludCBfX2xpdmVfY29udGV4dF9zaXplKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAgIAkJZ290byBlcnJfdW5waW47Cj4gICAKPiAgIAkvKiBGb3JjZSB0aGUgY29udGV4dCBz d2l0Y2ggKi8KPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250 ZXh0KTsKPiArCXJxID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9rZXJuZWxfcmVxdWVzdChlbmdpbmUp Owo+ICAgCWlmIChJU19FUlIocnEpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIocnEpOwo+ICAgCQln b3RvIGVycl91bnBpbjsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdp bmVfY3MuYwo+IGluZGV4IDU5ODFhN2I3MWVjOS4uNzYxZDgxZjRiZDY4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKPiBAQCAtMTMyLDE0ICsx MzIsMTggQEAgc3RhdGljIGludCBwZXJmX21pX2JiX3N0YXJ0KHZvaWQgKmFyZykKPiAgIAkJdTMy IGN5Y2xlc1tDT1VOVF07Cj4gICAJCWludCBpOwo+ICAgCj4gKwkJaW50ZWxfZW5naW5lX3BtX2dl dChlbmdpbmUpOwo+ICsKPiAgIAkJYmF0Y2ggPSBjcmVhdGVfZW1wdHlfYmF0Y2goY2UpOwo+ICAg CQlpZiAoSVNfRVJSKGJhdGNoKSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihiYXRjaCk7Cj4gKwkJ CWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gICAK PiAgIAkJZXJyID0gaTkxNV92bWFfc3luYyhiYXRjaCk7Cj4gICAJCWlmIChlcnIpIHsKPiArCQkJ aW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICAgCQkJaTkxNV92bWFfcHV0KGJhdGNoKTsK PiAgIAkJCWJyZWFrOwo+ICAgCQl9Cj4gQEAgLTE4MCw2ICsxODQsNyBAQCBzdGF0aWMgaW50IHBl cmZfbWlfYmJfc3RhcnQodm9pZCAqYXJnKQo+ICAgCQkJY3ljbGVzW2ldID0gcnEtPmh3c3Bfc2Vx bm9bM10gLSBycS0+aHdzcF9zZXFub1syXTsKPiAgIAkJfQo+ICAgCQlpOTE1X3ZtYV9wdXQoYmF0 Y2gpOwo+ICsJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAkJaWYgKGVycikKPiAg IAkJCWJyZWFrOwo+ICAgCj4gQEAgLTI1MSwxNSArMjU2LDE5IEBAIHN0YXRpYyBpbnQgcGVyZl9t aV9ub29wKHZvaWQgKmFyZykKPiAgIAkJdTMyIGN5Y2xlc1tDT1VOVF07Cj4gICAJCWludCBpOwo+ ICAgCj4gKwkJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwo+ICsKPiAgIAkJYmFzZSA9IGNy ZWF0ZV9lbXB0eV9iYXRjaChjZSk7Cj4gICAJCWlmIChJU19FUlIoYmFzZSkpIHsKPiAgIAkJCWVy ciA9IFBUUl9FUlIoYmFzZSk7Cj4gKwkJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAg IAkJCWJyZWFrOwo+ICAgCQl9Cj4gICAKPiAgIAkJZXJyID0gaTkxNV92bWFfc3luYyhiYXNlKTsK PiAgIAkJaWYgKGVycikgewo+ICAgCQkJaTkxNV92bWFfcHV0KGJhc2UpOwo+ICsJCQlpbnRlbF9l bmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+ICAgCj4gQEAgLTI2 Nyw2ICsyNzYsNyBAQCBzdGF0aWMgaW50IHBlcmZfbWlfbm9vcCh2b2lkICphcmcpCj4gICAJCWlm IChJU19FUlIobm9wKSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihub3ApOwo+ICAgCQkJaTkxNV92 bWFfcHV0KGJhc2UpOwo+ICsJCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAJCQli cmVhazsKPiAgIAkJfQo+ICAgCj4gQEAgLTI3NCw2ICsyODQsNyBAQCBzdGF0aWMgaW50IHBlcmZf bWlfbm9vcCh2b2lkICphcmcpCj4gICAJCWlmIChlcnIpIHsKPiAgIAkJCWk5MTVfdm1hX3B1dChu b3ApOwo+ICAgCQkJaTkxNV92bWFfcHV0KGJhc2UpOwo+ICsJCQlpbnRlbF9lbmdpbmVfcG1fcHV0 KGVuZ2luZSk7Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+ICAgCj4gQEAgLTMyNyw2ICszMzgsNyBA QCBzdGF0aWMgaW50IHBlcmZfbWlfbm9vcCh2b2lkICphcmcpCj4gICAJCX0KPiAgIAkJaTkxNV92 bWFfcHV0KG5vcCk7Cj4gICAJCWk5MTVfdm1hX3B1dChiYXNlKTsKPiArCQlpbnRlbF9lbmdpbmVf cG1fcHV0KGVuZ2luZSk7Cj4gICAJCWlmIChlcnIpCj4gICAJCQlicmVhazsKPiAgIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xyYy5jCj4gaW5kZXggZmMxNDJkZDYxZGQxLi5hYzhi OTExNmQzMDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf bHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwo+IEBA IC0zNDgsNyArMzQ4LDcgQEAgcmVsZWFzZV9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCj4gICAJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gICAJdTMyICpjczsKPiAgIAo+ IC0JcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJ cnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0KGVuZ2luZSk7Cj4gICAJaWYg KElTX0VSUihycSkpCj4gICAJCXJldHVybiBQVFJfRVJSKHJxKTsKPiAgIAo+IEBAIC00OTcsNyAr NDk3LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKm5vcF9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cTsKPiAgIAo+IC0JcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2luZS0+a2VybmVsX2NvbnRl eHQpOwo+ICsJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0KGVuZ2luZSk7 Cj4gICAJaWYgKElTX0VSUihycSkpCj4gICAJCXJldHVybiBycTsKPiAgIAo+IEBAIC0zNjk4LDcg KzM2OTgsNyBAQCBzdGF0aWMgaW50IGdwcl9tYWtlX2RpcnR5KHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKPiAgIAl1MzIgKmNzOwo+ICAgCWludCBuOwo+ICAgCj4gLQlycSA9IGk5MTVf cmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gKwlycSA9IGludGVsX2Vu Z2luZV9jcmVhdGVfa2VybmVsX3JlcXVlc3QoZW5naW5lKTsKPiAgIAlpZiAoSVNfRVJSKHJxKSkK PiAgIAkJcmV0dXJuIFBUUl9FUlIocnEpOwo+ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X21vY3MuYwo+IGluZGV4IGEzNGQ0ZmI1MmZhMS4uZGUwMTBmNTI3NzU3IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21vY3MuYwo+IEBAIC0yNjEsNyArMjYxLDkg QEAgc3RhdGljIGludCBsaXZlX21vY3Nfa2VybmVsKHZvaWQgKmFyZykKPiAgIAkJcmV0dXJuIGVy cjsKPiAgIAo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGd0LCBpZCkgewo+ICsJCWludGVs X2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKPiAgIAkJZXJyID0gY2hlY2tfbW9jc19lbmdpbmUoJm1v Y3MsIGVuZ2luZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJCWludGVsX2VuZ2luZV9wbV9wdXQoZW5n aW5lKTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCX0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKPiBpbmRleCBmMDRhNTlmZTVkMmMuLmUy ZDc4Y2MyMmZiNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVz dF90aW1lbGluZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGlt ZWxpbmUuYwo+IEBAIC00NTgsNyArNDU4LDcgQEAgdGxfd3JpdGUoc3RydWN0IGludGVsX3RpbWVs aW5lICp0bCwgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCB1MzIgdmFsdWUpCj4gICAJ CWdvdG8gb3V0Owo+ICAgCX0KPiAgIAo+IC0JcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGVuZ2lu ZS0+a2VybmVsX2NvbnRleHQpOwo+ICsJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9y ZXF1ZXN0KGVuZ2luZSk7Cj4gICAJaWYgKElTX0VSUihycSkpCj4gICAJCWdvdG8gb3V0X3VucGlu Owo+ICAgCj4gQEAgLTY3NSw5ICs2NzUsNyBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF93cmFwKHZv aWQgKmFyZykKPiAgIAkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkp Cj4gICAJCQljb250aW51ZTsKPiAgIAo+IC0JCWludGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsK PiAtCQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4g LQkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICsJCXJxID0gaW50ZWxfZW5naW5lX2Ny ZWF0ZV9rZXJuZWxfcmVxdWVzdChlbmdpbmUpOwo+ICAgCQlpZiAoSVNfRVJSKHJxKSkgewo+ICAg CQkJZXJyID0gUFRSX0VSUihycSk7Cj4gICAJCQlnb3RvIG91dDsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYwo+IGluZGV4IDYwOGU2YzNmM2MxYS4uYjQ2NzE1YjU3NTc2IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wZXJmLmMKPiBAQCAtMTk2OCw3ICsxOTY4LDkgQEAgc3RhdGljIGludCBlbWl0 X29hX2NvbmZpZyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAo+ICAgCWlmIChlcnIp Cj4gICAJCWdvdG8gZXJyX3ZtYV9wdXQ7Cj4gICAKPiArCWludGVsX2VuZ2luZV9wbV9nZXQoY2Ut PmVuZ2luZSk7Cj4gICAJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRlKGNlKTsKPiArCWludGVsX2Vu Z2luZV9wbV9wdXQoY2UtPmVuZ2luZSk7Cj4gICAJaWYgKElTX0VSUihycSkpIHsKPiAgIAkJZXJy ID0gUFRSX0VSUihycSk7Cj4gICAJCWdvdG8gZXJyX3ZtYV91bnBpbjsKPiBAQCAtMjE2NSw3ICsy MTY3LDcgQEAgc3RhdGljIGludCBnZW44X21vZGlmeV9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwKPiAgIAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmNlLT5waW5fbXV0ZXgpOwo+ ICAgCj4gLQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoY2UtPmVuZ2luZS0+a2VybmVsX2NvbnRl eHQpOwo+ICsJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0KGNlLT5lbmdp bmUpOwo+ICAgCWlmIChJU19FUlIocnEpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihycSk7Cj4gICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZl LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9hY3RpdmUuYwo+IGluZGV4 IDYwMjkwZjc4NzUwZC4uNmMxZGIzZGVkNDQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2FjdGl2ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfYWN0aXZlLmMKPiBAQCAtOTksNyArOTksNyBAQCBfX2xpdmVfYWN0 aXZlX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ICAgCWZvcl9lYWNoX3Vh YmlfZW5naW5lKGVuZ2luZSwgaTkxNSkgewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsK PiAgIAo+IC0JCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShlbmdpbmUtPmtlcm5lbF9jb250ZXh0 KTsKPiArCQlycSA9IGludGVsX2VuZ2luZV9jcmVhdGVfa2VybmVsX3JlcXVlc3QoZW5naW5lKTsK PiAgIAkJaWYgKElTX0VSUihycSkpIHsKPiAgIAkJCWVyciA9IFBUUl9FUlIocnEpOwo+ICAgCQkJ YnJlYWs7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmYuYwo+IGlu ZGV4IGFhYmQwN2Y2N2U0OS4uZDFhMTU2OGM0N2JhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X3BlcmYuYwo+IEBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGlu dCBsaXZlX25vYV9kZWxheSh2b2lkICphcmcpCj4gICAJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykK PiAgIAkJaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2Uoc3RyZWFtLT5lbmdpbmUsIDB4MTAwICsgaSwg MCk7Cj4gICAKPiAtCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShzdHJlYW0tPmVuZ2luZS0+a2Vy bmVsX2NvbnRleHQpOwo+ICsJcnEgPSBpbnRlbF9lbmdpbmVfY3JlYXRlX2tlcm5lbF9yZXF1ZXN0 KHN0cmVhbS0+ZW5naW5lKTsKPiAgIAlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQllcnIgPSBQVFJf RVJSKHJxKTsKPiAgIAkJZ290byBvdXQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X3JlcXVlc3QuYwo+IGluZGV4IGMxNmQxZWZkMmFkNC4uOTljOTRiNGY2OWZiIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3Qu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3JlcXVlc3QuYwo+ IEBAIC0yNyw2ICsyNyw3IEBACj4gICAjaW5jbHVkZSAiZ2VtL2k5MTVfZ2VtX3BtLmgiCj4gICAj aW5jbHVkZSAiZ2VtL3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuaCIKPiAgIAo+ICsjaW5jbHVkZSAi Z3QvaW50ZWxfZW5naW5lX3BtLmgiCj4gICAjaW5jbHVkZSAiZ3QvaW50ZWxfZ3QuaCIKPiAgIAo+ ICAgI2luY2x1ZGUgImk5MTVfcmFuZG9tLmgiCj4gQEAgLTU0MSw2ICs1NDIsNyBAQCBzdGF0aWMg aW50IGxpdmVfbm9wX3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJcmV0 dXJuIGVycjsKPiAgIAo+ICsJCWludGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKPiAgIAkJZm9y X2VhY2hfcHJpbWVfbnVtYmVyX2Zyb20ocHJpbWUsIDEsIDgxOTIpIHsKPiAgIAkJCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJlcXVlc3QgPSBOVUxMOwo+ICAgCj4gQEAgLTU3OSw2ICs1ODEsNyBAQCBz dGF0aWMgaW50IGxpdmVfbm9wX3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAgCQkJaWYgKF9faWd0X3Rp bWVvdXQoZW5kX3RpbWUsIE5VTEwpKQo+ICAgCQkJCWJyZWFrOwo+ICAgCQl9Cj4gKwkJaW50ZWxf ZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICAgCj4gICAJCWVyciA9IGlndF9saXZlX3Rlc3RfZW5k KCZ0KTsKPiAgIAkJaWYgKGVycikKPiBAQCAtNjkzLDEwICs2OTYsMTMgQEAgc3RhdGljIGludCBs aXZlX2VtcHR5X3JlcXVlc3Qodm9pZCAqYXJnKQo+ICAgCQlpZiAoZXJyKQo+ICAgCQkJZ290byBv dXRfYmF0Y2g7Cj4gICAKPiArCQlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVuZ2luZSk7Cj4gKwo+ICAg CQkvKiBXYXJtdXAgLyBwcmVsb2FkICovCj4gICAJCXJlcXVlc3QgPSBlbXB0eV9yZXF1ZXN0KGVu Z2luZSwgYmF0Y2gpOwo+ICAgCQlpZiAoSVNfRVJSKHJlcXVlc3QpKSB7Cj4gICAJCQllcnIgPSBQ VFJfRVJSKHJlcXVlc3QpOwo+ICsJCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7Cj4gICAJ CQlnb3RvIG91dF9iYXRjaDsKPiAgIAkJfQo+ICAgCQlpOTE1X3JlcXVlc3Rfd2FpdChyZXF1ZXN0 LCAwLCBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gQEAgLTcwOSw2ICs3MTUsNyBAQCBzdGF0aWMg aW50IGxpdmVfZW1wdHlfcmVxdWVzdCh2b2lkICphcmcpCj4gICAJCQkJcmVxdWVzdCA9IGVtcHR5 X3JlcXVlc3QoZW5naW5lLCBiYXRjaCk7Cj4gICAJCQkJaWYgKElTX0VSUihyZXF1ZXN0KSkgewo+ ICAgCQkJCQllcnIgPSBQVFJfRVJSKHJlcXVlc3QpOwo+ICsJCQkJCWludGVsX2VuZ2luZV9wbV9w dXQoZW5naW5lKTsKPiAgIAkJCQkJZ290byBvdXRfYmF0Y2g7Cj4gICAJCQkJfQo+ICAgCQkJfQo+ IEBAIC03MjIsNiArNzI5LDcgQEAgc3RhdGljIGludCBsaXZlX2VtcHR5X3JlcXVlc3Qodm9pZCAq YXJnKQo+ICAgCQkJCWJyZWFrOwo+ICAgCQl9Cj4gICAJCWk5MTVfcmVxdWVzdF9wdXQocmVxdWVz dCk7Cj4gKwkJaW50ZWxfZW5naW5lX3BtX3B1dChlbmdpbmUpOwo+ICAgCj4gICAJCWVyciA9IGln dF9saXZlX3Rlc3RfZW5kKCZ0KTsKPiAgIAkJaWYgKGVycikKPiBAQCAtODQ2LDcgKzg1NCw3IEBA IHN0YXRpYyBpbnQgbGl2ZV9hbGxfZW5naW5lcyh2b2lkICphcmcpCj4gICAKPiAgIAlpZHggPSAw Owo+ICAgCWZvcl9lYWNoX3VhYmlfZW5naW5lKGVuZ2luZSwgaTkxNSkgewo+IC0JCXJlcXVlc3Rb aWR4XSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gKwkJ cmVxdWVzdFtpZHhdID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9rZXJuZWxfcmVxdWVzdChlbmdpbmUp Owo+ICAgCQlpZiAoSVNfRVJSKHJlcXVlc3RbaWR4XSkpIHsKPiAgIAkJCWVyciA9IFBUUl9FUlIo cmVxdWVzdFtpZHhdKTsKPiAgIAkJCXByX2VycigiJXM6IFJlcXVlc3QgYWxsb2NhdGlvbiBmYWls ZWQgd2l0aCBlcnI9JWRcbiIsCj4gQEAgLTk2Myw3ICs5NzEsNyBAQCBzdGF0aWMgaW50IGxpdmVf c2VxdWVudGlhbF9lbmdpbmVzKHZvaWQgKmFyZykKPiAgIAkJCWdvdG8gb3V0X2ZyZWU7Cj4gICAJ CX0KPiAgIAo+IC0JCXJlcXVlc3RbaWR4XSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5r ZXJuZWxfY29udGV4dCk7Cj4gKwkJcmVxdWVzdFtpZHhdID0gaW50ZWxfZW5naW5lX2NyZWF0ZV9r ZXJuZWxfcmVxdWVzdChlbmdpbmUpOwo+ICAgCQlpZiAoSVNfRVJSKHJlcXVlc3RbaWR4XSkpIHsK PiAgIAkJCWVyciA9IFBUUl9FUlIocmVxdWVzdFtpZHhdKTsKPiAgIAkJCXByX2VycigiJXM6IFJl cXVlc3QgYWxsb2NhdGlvbiBmYWlsZWQgZm9yICVzIHdpdGggZXJyPSVkXG4iLAo+IEBAIC0xMDY4 LDE1ICsxMDc2LDE5IEBAIHN0YXRpYyBpbnQgX19saXZlX3BhcmFsbGVsX2VuZ2luZTEodm9pZCAq YXJnKQo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IGFyZzsKPiAgIAlJR1Rf VElNRU9VVChlbmRfdGltZSk7Cj4gICAJdW5zaWduZWQgbG9uZyBjb3VudDsKPiArCWludCBlcnIg PSAwOwo+ICAgCj4gICAJY291bnQgPSAwOwo+ICsJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUp Owo+ICAgCWRvIHsKPiAgIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gLQkJaW50IGVycjsK PiAgIAo+ICAgCQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4 dCk7Cj4gLQkJaWYgKElTX0VSUihycSkpCj4gLQkJCXJldHVybiBQVFJfRVJSKHJxKTsKPiArCQlp ZiAoSVNfRVJSKHJxKSkgewo+ICsJCQllcnIgPSBQVFJfRVJSKHJxKTsKPiArCQkJaWYgKGVycikK PiArCQkJCWJyZWFrOwo+ICsJCX0KPiAgIAo+ICAgCQlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKPiAg IAkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gQEAgLTEwODYsMTMgKzEwOTgsMTQgQEAgc3RhdGlj IGludCBfX2xpdmVfcGFyYWxsZWxfZW5naW5lMSh2b2lkICphcmcpCj4gICAJCQllcnIgPSAtRVRJ TUU7Cj4gICAJCWk5MTVfcmVxdWVzdF9wdXQocnEpOwo+ICAgCQlpZiAoZXJyKQo+IC0JCQlyZXR1 cm4gZXJyOwo+ICsJCQlicmVhazsKPiAgIAo+ICAgCQljb3VudCsrOwo+ICAgCX0gd2hpbGUgKCFf X2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSk7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0KGVu Z2luZSk7Cj4gICAKPiAgIAlwcl9pbmZvKCIlczogJWx1IHJlcXVlc3QgKyBzeW5jXG4iLCBlbmdp bmUtPm5hbWUsIGNvdW50KTsKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGVycjsKPiAgIH0KPiAg IAo+ICAgc3RhdGljIGludCBfX2xpdmVfcGFyYWxsZWxfZW5naW5lTih2b2lkICphcmcpCj4gQEAg LTExMDAsMjEgKzExMTMsMjYgQEAgc3RhdGljIGludCBfX2xpdmVfcGFyYWxsZWxfZW5naW5lTih2 b2lkICphcmcpCj4gICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gYXJnOwo+ICAg CUlHVF9USU1FT1VUKGVuZF90aW1lKTsKPiAgIAl1bnNpZ25lZCBsb25nIGNvdW50Owo+ICsJaW50 IGVyciA9IDA7Cj4gICAKPiAgIAljb3VudCA9IDA7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fZ2V0KGVu Z2luZSk7Cj4gICAJZG8gewo+ICAgCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiAgIAo+ICAg CQlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUoZW5naW5lLT5rZXJuZWxfY29udGV4dCk7Cj4gLQkJ aWYgKElTX0VSUihycSkpCj4gLQkJCXJldHVybiBQVFJfRVJSKHJxKTsKPiArCQlpZiAoSVNfRVJS KHJxKSkgewo+ICsJCQllcnIgPSBQVFJfRVJSKHJxKTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICAg Cj4gICAJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICAgCQljb3VudCsrOwo+ICAgCX0gd2hpbGUg KCFfX2lndF90aW1lb3V0KGVuZF90aW1lLCBOVUxMKSk7Cj4gKwlpbnRlbF9lbmdpbmVfcG1fcHV0 KGVuZ2luZSk7Cj4gICAKPiAgIAlwcl9pbmZvKCIlczogJWx1IHJlcXVlc3RzXG4iLCBlbmdpbmUt Pm5hbWUsIGNvdW50KTsKPiAtCXJldHVybiAwOwo+ICsJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ ICAgc3RhdGljIGJvb2wgd2FrZV9hbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4g QEAgLTExNTgsOSArMTE3NiwxMSBAQCBzdGF0aWMgaW50IF9fbGl2ZV9wYXJhbGxlbF9zcGluKHZv aWQgKmFyZykKPiAgIAkJcmV0dXJuIC1FTk9NRU07Cj4gICAJfQo+ICAgCj4gKwlpbnRlbF9lbmdp bmVfcG1fZ2V0KGVuZ2luZSk7Cj4gICAJcnEgPSBpZ3Rfc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdCgm c3BpbiwKPiAgIAkJCQkJZW5naW5lLT5rZXJuZWxfY29udGV4dCwKPiAgIAkJCQkJTUlfTk9PUCk7 IC8qIG5vIHByZWVtcHRpb24gKi8KPiArCWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAg IAlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKHJxKTsKPiAgIAkJaWYgKGVy ciA9PSAtRU5PREVWKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX21lbW9yeV9yZWdpb24uYwo+IGluZGV4IGI2MDkxNjU2MTQ2Mi4uMDRkMGFhN2IzNDll IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1v cnlfcmVnaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxf bWVtb3J5X3JlZ2lvbi5jCj4gQEAgLTUwNiw3ICs1MDYsOSBAQCBzdGF0aWMgaW50IGlndF9sbWVt X3dyaXRlX2NwdSh2b2lkICphcmcpCj4gICAJfQo+ICAgCj4gICAJLyogUHV0IHRoZSBwYWdlcyBp bnRvIGEga25vd24gc3RhdGUgLS0gZnJvbSB0aGUgZ3B1IGZvciBhZGRlZCBmdW4gKi8KPiArCWlu dGVsX2VuZ2luZV9wbV9nZXQoZW5naW5lKTsKPiAgIAllcnIgPSBpOTE1X2dlbV9vYmplY3RfZmls bF9ibHQob2JqLCBlbmdpbmUtPmtlcm5lbF9jb250ZXh0LCAweGRlYWRiZWFmKTsKPiArCWludGVs X2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKPiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dF91bnBp bjsKPiAgIAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=