From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 17/55] drm/i915: Simplify request_alloc by returning the allocated request Date: Tue, 26 Jul 2016 08:09:41 +0300 Message-ID: <1469509781.4681.17.camel@linux.intel.com> References: <1469467954-3920-1-git-send-email-chris@chris-wilson.co.uk> <1469467954-3920-18-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 173C06E41B for ; Tue, 26 Jul 2016 05:09:44 +0000 (UTC) In-Reply-To: <1469467954-3920-18-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 T24gbWEsIDIwMTYtMDctMjUgYXQgMTg6MzEgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJ ZiBpcyBzaW1wbGVyIGFuZCBsZWFkcyB0byBtb3JlIHJlYWRhYmxlIGNvZGUgdGhyb3VnaCB0aGUg Y2FsbHN0YWNrIGlmCj4gdGhlIGFsbG9jYXRpb24gcmV0dXJucyB0aGUgYWxsb2NhdGVkIHN0cnVj dCB0aHJvdWdoIHRoZSByZXR1cm4gdmFsdWUuCj4gCj4gVGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBp cyB0aGF0IGl0IG5vIGxvbmdlciBsb29rcyBsaWtlIHdlIGFjY2lkZW50YWxseQo+IGFsbG9jYXRl IHJlcXVlc3RzIGFzIHNpZGUtZWZmZWN0IG9mIGNhbGxpbmcgY2VydGFpbiBmdW5jdGlvbnMuCj4g CgpJIGFscmVhZHkgYWRkZWQgaW4gcHJldmlvdXMgc2VyaWVzOyBDQydpbmcgRGF2ZSBhZ2Fpbi4K ClJldmlld2VkLWJ5OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRl bC5jb20+Cgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrPgo+IExpbms6IGh0dHA6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoL21z Z2lkLzE0Njk0MzI2ODctMjI3NTYtMTktZ2l0LXNlbmQtZW1haWwtY2hyaXNAY2hyaXMtd2lsc29u LmNvLnVrCj4gLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgfMKgwqAzICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bS5jwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCA3NSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8IDEy ICsrLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmPCoMKgwqDC oHwgNTggKysrKysrKystLS0tLS0tLS0tLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdHJhY2UuaMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAxMyArKystLS0KPiDCoGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuY8KgwqDCoMKgwqDCoMKgfCAzNiArKysrKystLS0tLS0t LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgfMKgwqAyICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmPCoMKg wqDCoMKgwqDCoHwgMjAgKysrKy0tLS0KPiDCoDggZmlsZXMgY2hhbmdlZCwgNzkgaW5zZXJ0aW9u cygrKSwgMTQwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4 IGI3ZTI5OGI0MjUzZS4uMjI1OTk4M2QyZWM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gQEAgLTMxNzEsOCArMzE3MSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmpl Y3RfdW5waW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gwqAKPiDCoGlu dCBfX211c3RfY2hlY2sgaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldik7Cj4gwqBpbnQgaTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJwqBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0bywKPiAt CQkJwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKip0b19yZXEpOwo+ICsJCQnCoHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8pOwo+IMKgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2Fj dGl2ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiDCoAkJCcKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcSk7Cj4gwqBpbnQgaTkxNV9nZW1fZHVtYl9jcmVhdGUoc3RydWN0 IGRybV9maWxlICpmaWxlX3ByaXYsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggNTk4 OTBmNTIzYzVmLi5iNmM0ZmY2MzcyNWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBA QCAtMjg0NSw1MSArMjg0NSwzNSBAQCBvdXQ6Cj4gwqAKPiDCoHN0YXRpYyBpbnQKPiDCoF9faTkx NV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQnC oMKgwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnRvLAo+IC0JCcKgwqDCoMKgwqDC oMKgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpmcm9tX3JlcSwKPiAtCQnCoMKgwqDCoMKg wqDCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnRvX3JlcSkKPiArCQnCoMKgwqDCoMKg wqDCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8sCj4gKwkJwqDCoMKgwqDCoMKgwqBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmZyb20pCj4gwqB7Cj4gLQlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpmcm9tOwo+IMKgCWludCByZXQ7Cj4gwqAKPiAtCWZyb20gPSBpOTE1X2dlbV9y ZXF1ZXN0X2dldF9lbmdpbmUoZnJvbV9yZXEpOwo+IC0JaWYgKHRvID09IGZyb20pCj4gKwlpZiAo dG8tPmVuZ2luZSA9PSBmcm9tLT5lbmdpbmUpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gLQlpZiAo aTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoZnJvbV9yZXEpKQo+ICsJaWYgKGk5MTVfZ2VtX3Jl cXVlc3RfY29tcGxldGVkKGZyb20pKQo+IMKgCQlyZXR1cm4gMDsKPiDCoAo+IMKgCWlmICghaTkx NS5zZW1hcGhvcmVzKSB7Cj4gLQkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19p OTE1KG9iai0+YmFzZS5kZXYpOwo+IC0JCXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3QoZnJvbV9y ZXEsCj4gLQkJCQkJwqDCoGk5MTUtPm1tLmludGVycnVwdGlibGUsCj4gKwkJcmV0ID0gX19pOTE1 X3dhaXRfcmVxdWVzdChmcm9tLAo+ICsJCQkJCcKgwqBmcm9tLT5pOTE1LT5tbS5pbnRlcnJ1cHRp YmxlLAo+IMKgCQkJCQnCoMKgTlVMTCwKPiDCoAkJCQkJwqDCoE5PX1dBSVRCT09TVCk7Cj4gwqAJ CWlmIChyZXQpCj4gwqAJCQlyZXR1cm4gcmV0Owo+IMKgCj4gLQkJaTkxNV9nZW1fb2JqZWN0X3Jl dGlyZV9yZXF1ZXN0KG9iaiwgZnJvbV9yZXEpOwo+ICsJCWk5MTVfZ2VtX29iamVjdF9yZXRpcmVf cmVxdWVzdChvYmosIGZyb20pOwo+IMKgCX0gZWxzZSB7Cj4gLQkJaW50IGlkeCA9IGludGVsX2Vu Z2luZV9zeW5jX2luZGV4KGZyb20sIHRvKTsKPiAtCQl1MzIgc2Vxbm8gPSBpOTE1X2dlbV9yZXF1 ZXN0X2dldF9zZXFubyhmcm9tX3JlcSk7Cj4gKwkJaW50IGlkeCA9IGludGVsX2VuZ2luZV9zeW5j X2luZGV4KGZyb20tPmVuZ2luZSwgdG8tPmVuZ2luZSk7Cj4gKwkJdTMyIHNlcW5vID0gaTkxNV9n ZW1fcmVxdWVzdF9nZXRfc2Vxbm8oZnJvbSk7Cj4gwqAKPiAtCQlXQVJOX09OKCF0b19yZXEpOwo+ IC0KPiAtCQlpZiAoc2Vxbm8gPD0gZnJvbS0+c2VtYXBob3JlLnN5bmNfc2Vxbm9baWR4XSkKPiAr CQlpZiAoc2Vxbm8gPD0gZnJvbS0+ZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFub1tpZHhdKQo+ IMKgCQkJcmV0dXJuIDA7Cj4gwqAKPiAtCQlpZiAoKnRvX3JlcSA9PSBOVUxMKSB7Cj4gLQkJCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+IC0KPiAtCQkJcmVxID0gaTkxNV9nZW1f cmVxdWVzdF9hbGxvYyh0bywgTlVMTCk7Cj4gLQkJCWlmIChJU19FUlIocmVxKSkKPiAtCQkJCXJl dHVybiBQVFJfRVJSKHJlcSk7Cj4gLQo+IC0JCQkqdG9fcmVxID0gcmVxOwo+IC0JCX0KPiAtCj4g LQkJdHJhY2VfaTkxNV9nZW1fcmluZ19zeW5jX3RvKCp0b19yZXEsIGZyb20sIGZyb21fcmVxKTsK PiAtCQlyZXQgPSB0by0+c2VtYXBob3JlLnN5bmNfdG8oKnRvX3JlcSwgZnJvbSwgc2Vxbm8pOwo+ ICsJCXRyYWNlX2k5MTVfZ2VtX3Jpbmdfc3luY190byh0bywgZnJvbSk7Cj4gKwkJcmV0ID0gdG8t PmVuZ2luZS0+c2VtYXBob3JlLnN5bmNfdG8odG8sIGZyb20tPmVuZ2luZSwgc2Vxbm8pOwo+IMKg CQlpZiAocmV0KQo+IMKgCQkJcmV0dXJuIHJldDsKPiDCoAo+IEBAIC0yODk3LDggKzI4ODEsOCBA QCBfX2k5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gwqAJCcKgKiBtaWdodCBoYXZlIGp1c3QgY2F1c2VkIHNlcW5vIHdyYXAgdW5kZXIKPiDCoAkJ wqAqIHRoZSByYWRhci4KPiDCoAkJwqAqLwo+IC0JCWZyb20tPnNlbWFwaG9yZS5zeW5jX3NlcW5v W2lkeF0gPQo+IC0JCQlpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3RfcmVhZF9y ZXFbZnJvbS0+aWRdKTsKPiArCQlmcm9tLT5lbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vW2lk eF0gPQo+ICsJCQlpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyhvYmotPmxhc3RfcmVhZF9yZXFb ZnJvbS0+ZW5naW5lLT5pZF0pOwo+IMKgCX0KPiDCoAo+IMKgCXJldHVybiAwOwo+IEBAIC0yOTA4 LDE3ICsyODkyLDEyIEBAIF9faTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiDCoCAqIGk5MTVfZ2VtX29iamVjdF9zeW5jIC0gc3luYyBhbiBvYmpl Y3QgdG8gYSByaW5nLgo+IMKgICoKPiDCoCAqIEBvYmo6IG9iamVjdCB3aGljaCBtYXkgYmUgaW4g dXNlIG9uIGFub3RoZXIgcmluZy4KPiAtICogQHRvOiByaW5nIHdlIHdpc2ggdG8gdXNlIHRoZSBv YmplY3Qgb24uIE1heSBiZSBOVUxMLgo+IC0gKiBAdG9fcmVxOiByZXF1ZXN0IHdlIHdpc2ggdG8g dXNlIHRoZSBvYmplY3QgZm9yLiBTZWUgYmVsb3cuCj4gLSAqwqDCoMKgwqDCoMKgwqDCoMKgwqBU aGlzIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCByZXR1cm5lZCBpZiBhIHJlcXVlc3QgaXMKPiAtICrC oMKgwqDCoMKgwqDCoMKgwqDCoHJlcXVpcmVkIGJ1dCBub3QgcGFzc2VkIGluLgo+ICsgKiBAdG86 IHJlcXVlc3Qgd2UgYXJlIHdpc2hpbmcgdG8gdXNlCj4gwqAgKgo+IMKgICogVGhpcyBjb2RlIGlz IG1lYW50IHRvIGFic3RyYWN0IG9iamVjdCBzeW5jaHJvbml6YXRpb24gd2l0aCB0aGUgR1BVLgo+ IC0gKiBDYWxsaW5nIHdpdGggTlVMTCBpbXBsaWVzIHN5bmNocm9uaXppbmcgdGhlIG9iamVjdCB3 aXRoIHRoZSBDUFUKPiAtICogcmF0aGVyIHRoYW4gYSBwYXJ0aWN1bGFyIEdQVSByaW5nLiBDb25j ZXB0dWFsbHkgd2Ugc2VyaWFsaXNlIHdyaXRlcwo+IC0gKiBiZXR3ZWVuIGVuZ2luZXMgaW5zaWRl IHRoZSBHUFUuIFdlIG9ubHkgYWxsb3cgb25lIGVuZ2luZSB0byB3cml0ZQo+IC0gKiBpbnRvIGEg YnVmZmVyIGF0IGFueSB0aW1lLCBidXQgbXVsdGlwbGUgcmVhZGVycy4gVG8gZW5zdXJlIGVhY2gg aGFzCj4gLSAqIGEgY29oZXJlbnQgdmlldyBvZiBtZW1vcnksIHdlIG11c3Q6Cj4gKyAqIENvbmNl cHR1YWxseSB3ZSBzZXJpYWxpc2Ugd3JpdGVzIGJldHdlZW4gZW5naW5lcyBpbnNpZGUgdGhlIEdQ VS4KPiArICogV2Ugb25seSBhbGxvdyBvbmUgZW5naW5lIHRvIHdyaXRlIGludG8gYSBidWZmZXIg YXQgYW55IHRpbWUsIGJ1dAo+ICsgKiBtdWx0aXBsZSByZWFkZXJzLiBUbyBlbnN1cmUgZWFjaCBo YXMgYSBjb2hlcmVudCB2aWV3IG9mIG1lbW9yeSwgd2UgbXVzdDoKPiDCoCAqCj4gwqAgKiAtIElm IHRoZXJlIGlzIGFuIG91dHN0YW5kaW5nIHdyaXRlIHJlcXVlc3QgdG8gdGhlIG9iamVjdCwgdGhl IG5ldwo+IMKgICrCoMKgwqByZXF1ZXN0IG11c3Qgd2FpdCBmb3IgaXQgdG8gY29tcGxldGUgKGVp dGhlciBDUFUgb3IgaW4gaHcsIHJlcXVlc3RzCj4gQEAgLTI5MjcsMjIgKzI5MDYsMTEgQEAgX19p OTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IMKg ICogLSBJZiB3ZSBhcmUgYSB3cml0ZSByZXF1ZXN0IChwZW5kaW5nX3dyaXRlX2RvbWFpbiBpcyBz ZXQpLCB0aGUgbmV3Cj4gwqAgKsKgwqDCoHJlcXVlc3QgbXVzdCB3YWl0IGZvciBvdXRzdGFuZGlu ZyByZWFkIHJlcXVlc3RzIHRvIGNvbXBsZXRlLgo+IMKgICoKPiAtICogRm9yIENQVSBzeW5jaHJv bmlzYXRpb24gKE5VTEwgdG8pIG5vIHJlcXVlc3QgaXMgcmVxdWlyZWQuIEZvciBzeW5jaW5nIHdp dGgKPiAtICogcmluZ3MgdG9fcmVxIG11c3QgYmUgbm9uLU5VTEwuIEhvd2V2ZXIsIGEgcmVxdWVz dCBkb2VzIG5vdCBoYXZlIHRvIGJlCj4gLSAqIHByZS1hbGxvY2F0ZWQuIElmICp0b19yZXEgaXMg TlVMTCBhbmQgc3luYyBjb21tYW5kcyB3aWxsIGJlIGVtaXR0ZWQgdGhlbiBhCj4gLSAqIHJlcXVl c3Qgd2lsbCBiZSBhbGxvY2F0ZWQgYXV0b21hdGljYWxseSBhbmQgcmV0dXJuZWQgdGhyb3VnaCAq dG9fcmVxLiBOb3RlCj4gLSAqIHRoYXQgaXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdCBjb21tYW5k cyB3aWxsIGJlIGVtaXR0ZWQgKGJlY2F1c2UgdGhlIHN5c3RlbQo+IC0gKiBtaWdodCBhbHJlYWR5 IGJlIGlkbGUpLiBIZW5jZSB0aGVyZSBpcyBubyBuZWVkIHRvIGNyZWF0ZSBhIHJlcXVlc3QgdGhh dAo+IC0gKiBtaWdodCBuZXZlciBoYXZlIGFueSB3b3JrIHN1Ym1pdHRlZC4gTm90ZSBmdXJ0aGVy IHRoYXQgaWYgYSByZXF1ZXN0IGlzCj4gLSAqIHJldHVybmVkIGluICp0b19yZXEsIGl0IGlzIHRo ZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgY2FsbGVyIHRvIHN1Ym1pdAo+IC0gKiB0aGF0IHJlcXVl c3QgKGFmdGVyIHBvdGVudGlhbGx5IGFkZGluZyBtb3JlIHdvcmsgdG8gaXQpLgo+IC0gKgo+IMKg ICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIGVsc2UgcHJvcGFnYXRlcyB1cCB0aGUgbG93ZXIg bGF5ZXIgZXJyb3IuCj4gwqAgKi8KPiDCoGludAo+IMKgaTkxNV9nZW1fb2JqZWN0X3N5bmMoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQnCoMKgwqDCoMKgc3RydWN0IGludGVs X2VuZ2luZV9jcyAqdG8sCj4gLQkJwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqKnRvX3JlcSkKPiArCQnCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0 bykKPiDCoHsKPiDCoAljb25zdCBib29sIHJlYWRvbmx5ID0gb2JqLT5iYXNlLnBlbmRpbmdfd3Jp dGVfZG9tYWluID09IDA7Cj4gwqAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXFbSTkx NV9OVU1fRU5HSU5FU107Cj4gQEAgLTI5NTEsOSArMjkxOSw2IEBAIGk5MTVfZ2VtX29iamVjdF9z eW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gwqAJaWYgKCFvYmotPmFjdGl2 ZSkKPiDCoAkJcmV0dXJuIDA7Cj4gwqAKPiAtCWlmICh0byA9PSBOVUxMKQo+IC0JCXJldHVybiBp OTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcob2JqLCByZWFkb25seSk7Cj4gLQo+IMKgCW4g PSAwOwo+IMKgCWlmIChyZWFkb25seSkgewo+IMKgCQlpZiAob2JqLT5sYXN0X3dyaXRlX3JlcSkK PiBAQCAtMjk2NCw3ICsyOTI5LDcgQEAgaTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwKPiDCoAkJCQlyZXFbbisrXSA9IG9iai0+bGFzdF9yZWFkX3Jl cVtpXTsKPiDCoAl9Cj4gwqAJZm9yIChpID0gMDsgaSA8IG47IGkrKykgewo+IC0JCXJldCA9IF9f aTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCB0bywgcmVxW2ldLCB0b19yZXEpOwo+ICsJCXJldCA9 IF9faTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCB0bywgcmVxW2ldKTsKPiDCoAkJaWYgKHJldCkK PiDCoAkJCXJldHVybiByZXQ7Cj4gwqAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9leGVjYnVmZmVyLmMKPiBpbmRleCAzNWM0YzU5NWU1YmEuLmVhY2Q3OGZjOTNjNCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAtOTgxLDcg Kzk4MSw3IEBAIGk5MTVfZ2VtX2V4ZWNidWZmZXJfbW92ZV90b19ncHUoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCj4gwqAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmog PSB2bWEtPm9iajsKPiDCoAo+IMKgCQlpZiAob2JqLT5hY3RpdmUgJiBvdGhlcl9yaW5ncykgewo+ IC0JCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc3luYyhvYmosIHJlcS0+ZW5naW5lLCAmcmVxKTsK PiArCQkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCByZXEpOwo+IMKgCQkJaWYgKHJl dCkKPiDCoAkJCQlyZXR1cm4gcmV0Owo+IMKgCQl9Cj4gQEAgLTE0MjcsNyArMTQyNyw2IEBAIGk5 MTVfZ2VtX2RvX2V4ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7Cj4gwqAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0dCA9ICZkZXZfcHJpdi0+Z2d0dDsKPiAtCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxID0gTlVMTDsKPiDCoAlzdHJ1Y3QgZWJfdm1h cyAqZWI7Cj4gwqAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmJhdGNoX29iajsKPiDCoAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiBzaGFkb3dfZXhlY19lbnRyeTsKPiBAQCAt MTYxNSwxMyArMTYxNCwxMyBAQCBpOTE1X2dlbV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gwqAJCXBhcmFtcy0+YmF0Y2hfb2JqX3ZtX29mZnNldCA9 IGk5MTVfZ2VtX29ial9vZmZzZXQoYmF0Y2hfb2JqLCB2bSk7Cj4gwqAKPiDCoAkvKiBBbGxvY2F0 ZSBhIHJlcXVlc3QgZm9yIHRoaXMgYmF0Y2ggYnVmZmVyIG5pY2UgYW5kIGVhcmx5LiAqLwo+IC0J cmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4gLQlpZiAoSVNfRVJS KHJlcSkpIHsKPiAtCQlyZXQgPSBQVFJfRVJSKHJlcSk7Cj4gKwlwYXJhbXMtPnJlcXVlc3QgPSBp OTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiArCWlmIChJU19FUlIocGFyYW1z LT5yZXF1ZXN0KSkgewo+ICsJCXJldCA9IFBUUl9FUlIocGFyYW1zLT5yZXF1ZXN0KTsKPiDCoAkJ Z290byBlcnJfYmF0Y2hfdW5waW47Cj4gwqAJfQo+IMKgCj4gLQlyZXQgPSBpOTE1X2dlbV9yZXF1 ZXN0X2FkZF90b19jbGllbnQocmVxLCBmaWxlKTsKPiArCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3Rf YWRkX3RvX2NsaWVudChwYXJhbXMtPnJlcXVlc3QsIGZpbGUpOwo+IMKgCWlmIChyZXQpCj4gwqAJ CWdvdG8gZXJyX3JlcXVlc3Q7Cj4gwqAKPiBAQCAtMTYzNyw3ICsxNjM2LDYgQEAgaTkxNV9nZW1f ZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+IMKgCXBh cmFtcy0+ZGlzcGF0Y2hfZmxhZ3PCoMKgwqDCoMKgwqDCoMKgwqDCoD0gZGlzcGF0Y2hfZmxhZ3M7 Cj4gwqAJcGFyYW1zLT5iYXRjaF9vYmrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqA9IGJh dGNoX29iajsKPiDCoAlwYXJhbXMtPmN0eMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoD0gY3R4Owo+IC0JcGFyYW1zLT5yZXF1ZXN0wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoD0gcmVxOwo+IMKgCj4gwqAJcmV0ID0gZGV2X3ByaXYtPmd0LmV4ZWNidWZf c3VibWl0KHBhcmFtcywgYXJncywgJmViLT52bWFzKTsKPiDCoGVycl9yZXF1ZXN0Ogo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiBpbmRleCA3ZTMyMDYwNTFjZWQuLjQ3 ZTQ2YzlkYTRlNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMK PiBAQCAtMjkyLDEwICsyOTIsMjEgQEAgc3RhdGljIGludCBpOTE1X2dlbV9nZXRfc2Vxbm8oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgKnNlcW5vKQo+IMKgCXJldHVybiAw Owo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbmxpbmUgaW50Cj4gLV9faTkxNV9nZW1fcmVxdWVzdF9h bGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCcKgc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCwKPiAtCQkJwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKipy ZXFfb3V0KQo+ICsvKioKPiArICogaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyAtIGFsbG9jYXRlIGEg cmVxdWVzdCBzdHJ1Y3R1cmUKPiArICoKPiArICogQGVuZ2luZTogZW5naW5lIHRoYXQgd2Ugd2lz aCB0byBpc3N1ZSB0aGUgcmVxdWVzdCBvbi4KPiArICogQGN0eDogY29udGV4dCB0aGF0IHRoZSBy ZXF1ZXN0IHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoLgo+ICsgKsKgwqDCoMKgwqDCoMKgVGhpcyBj YW4gYmUgTlVMTCBpZiB0aGUgcmVxdWVzdCBpcyBub3QgZGlyZWN0bHkgcmVsYXRlZCB0bwo+ICsg KsKgwqDCoMKgwqDCoMKgYW55IHNwZWNpZmljIHVzZXIgY29udGV4dCwgaW4gd2hpY2ggY2FzZSB0 aGlzIGZ1bmN0aW9uIHdpbGwKPiArICrCoMKgwqDCoMKgwqDCoGNob29zZSBhbiBhcHByb3ByaWF0 ZSBjb250ZXh0IHRvIHVzZS4KPiArICoKPiArICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFs bG9jYXRlZCByZXF1ZXN0IGlmIHN1Y2Nlc3NmdWwsCj4gKyAqIG9yIGFuIGVycm9yIGNvZGUgaWYg bm90Lgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKPiAraTkxNV9nZW1f cmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gKwkJwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+IMKgewo+IMKgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiDCoAl1bnNpZ25lZCBp bnQgcmVzZXRfY291bnRlciA9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYtPmdwdV9lcnJv cik7Cj4gQEAgLTMwMywxOCArMzE0LDEzIEBAIF9faTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gwqAJdTMyIHNlcW5vOwo+IMKgCWludCByZXQ7 Cj4gwqAKPiAtCWlmICghcmVxX291dCkKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCj4gLQkqcmVx X291dCA9IE5VTEw7Cj4gLQo+IMKgCS8qIEFCSTogQmVmb3JlIHVzZXJzcGFjZSBhY2Nlc3NlcyB0 aGUgR1BVIChlLmcuIGV4ZWNidWZmZXIpLCByZXBvcnQKPiDCoAnCoCogRUlPIGlmIHRoZSBHUFUg aXMgYWxyZWFkeSB3ZWRnZWQsIG9yIEVBR0FJTiB0byBkcm9wIHRoZSBzdHJ1Y3RfbXV0ZXgKPiDC oAnCoCogYW5kIHJlc3RhcnQuCj4gwqAJwqAqLwo+IMKgCXJldCA9IGk5MTVfZ2VtX2NoZWNrX3dl ZGdlKHJlc2V0X2NvdW50ZXIsIGRldl9wcml2LT5tbS5pbnRlcnJ1cHRpYmxlKTsKPiDCoAlpZiAo cmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiDCoAo+IMKg CS8qIE1vdmUgdGhlIG9sZGVzdCByZXF1ZXN0IHRvIHRoZSBzbGFiLWNhY2hlIChpZiBub3QgaW4g dXNlISkgKi8KPiDCoAlyZXEgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmVuZ2luZS0+cmVx dWVzdF9saXN0LAo+IEBAIC0zMjQsNyArMzMwLDcgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9j KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiDCoAo+IMKgCXJlcSA9IGttZW1fY2Fj aGVfemFsbG9jKGRldl9wcml2LT5yZXF1ZXN0cywgR0ZQX0tFUk5FTCk7Cj4gwqAJaWYgKCFyZXEp Cj4gLQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gwqAK PiDCoAlyZXQgPSBpOTE1X2dlbV9nZXRfc2Vxbm8oZGV2X3ByaXYsICZzZXFubyk7Cj4gwqAJaWYg KHJldCkKPiBAQCAtMzU3LDM5ICszNjMsMTMgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiDCoAlpZiAocmV0KQo+IMKgCQlnb3RvIGVy cl9jdHg7Cj4gwqAKPiAtCSpyZXFfb3V0ID0gcmVxOwo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4g cmVxOwo+IMKgCj4gwqBlcnJfY3R4Ogo+IMKgCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4g wqBlcnI6Cj4gwqAJa21lbV9jYWNoZV9mcmVlKGRldl9wcml2LT5yZXF1ZXN0cywgcmVxKTsKPiAt CXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9j IC0gYWxsb2NhdGUgYSByZXF1ZXN0IHN0cnVjdHVyZQo+IC0gKgo+IC0gKiBAZW5naW5lOiBlbmdp bmUgdGhhdCB3ZSB3aXNoIHRvIGlzc3VlIHRoZSByZXF1ZXN0IG9uLgo+IC0gKiBAY3R4OiBjb250 ZXh0IHRoYXQgdGhlIHJlcXVlc3Qgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGguCj4gLSAqwqDCoMKg wqDCoMKgwqBUaGlzIGNhbiBiZSBOVUxMIGlmIHRoZSByZXF1ZXN0IGlzIG5vdCBkaXJlY3RseSBy ZWxhdGVkIHRvCj4gLSAqwqDCoMKgwqDCoMKgwqBhbnkgc3BlY2lmaWMgdXNlciBjb250ZXh0LCBp biB3aGljaCBjYXNlIHRoaXMgZnVuY3Rpb24gd2lsbAo+IC0gKsKgwqDCoMKgwqDCoMKgY2hvb3Nl IGFuIGFwcHJvcHJpYXRlIGNvbnRleHQgdG8gdXNlLgo+IC0gKgo+IC0gKiBSZXR1cm5zIGEgcG9p bnRlciB0byB0aGUgYWxsb2NhdGVkIHJlcXVlc3QgaWYgc3VjY2Vzc2Z1bCwKPiAtICogb3IgYW4g ZXJyb3IgY29kZSBpZiBub3QuCj4gLSAqLwo+IC1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg Kgo+IC1pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSwKPiAtCQnCoMKgwqDCoMKgwqDCoHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gLXsK PiAtCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+IC0JaW50IGVycjsKPiAtCj4g LQlpZiAoIWN0eCkKPiAtCQljdHggPSBlbmdpbmUtPmk5MTUtPmtlcm5lbF9jb250ZXh0Owo+IC0J ZXJyID0gX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4LCAmcmVxKTsKPiAtCXJl dHVybiBlcnIgPyBFUlJfUFRSKGVycikgOiByZXE7Cj4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ IMKgfQo+IMKgCj4gwqBzdGF0aWMgdm9pZCBpOTE1X2dlbV9tYXJrX2J1c3koY29uc3Qgc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBp bmRleCAwMDcxMTJkMWUwNDkuLjllNDNjMGFhNmUzYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RyYWNlLmgKPiBAQCAtNDQ5LDEwICs0NDksOSBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9ldmlj dF92bSwKPiDCoCk7Cj4gwqAKPiDCoFRSQUNFX0VWRU5UKGk5MTVfZ2VtX3Jpbmdfc3luY190bywK PiAtCcKgwqDCoMKgVFBfUFJPVE8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0b19yZXEs Cj4gLQkJwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmZyb20sCj4gLQkJwqDCoMKg wqDCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKSwKPiAtCcKgwqDCoMKgVFBfQVJH Uyh0b19yZXEsIGZyb20sIHJlcSksCj4gKwnCoMKgwqDCoFRQX1BST1RPKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqdG8sCj4gKwkJwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqZnJvbSksCj4gKwnCoMKgwqDCoFRQX0FSR1ModG8sIGZyb20pLAo+IMKgCj4gwqAJwqDC oMKgwqBUUF9TVFJVQ1RfX2VudHJ5KAo+IMKgCQkJwqDCoMKgwqDCoF9fZmllbGQodTMyLCBkZXYp Cj4gQEAgLTQ2Myw5ICs0NjIsOSBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9yaW5nX3N5bmNfdG8s Cj4gwqAKPiDCoAnCoMKgwqDCoFRQX2Zhc3RfYXNzaWduKAo+IMKgCQkJwqDCoMKgX19lbnRyeS0+ ZGV2ID0gZnJvbS0+aTkxNS0+ZHJtLnByaW1hcnktPmluZGV4Owo+IC0JCQnCoMKgwqBfX2VudHJ5 LT5zeW5jX2Zyb20gPSBmcm9tLT5pZDsKPiAtCQkJwqDCoMKgX19lbnRyeS0+c3luY190byA9IHRv X3JlcS0+ZW5naW5lLT5pZDsKPiAtCQkJwqDCoMKgX19lbnRyeS0+c2Vxbm8gPSByZXEtPmZlbmNl LnNlcW5vOwo+ICsJCQnCoMKgwqBfX2VudHJ5LT5zeW5jX2Zyb20gPSBmcm9tLT5lbmdpbmUtPmlk Owo+ICsJCQnCoMKgwqBfX2VudHJ5LT5zeW5jX3RvID0gdG8tPmVuZ2luZS0+aWQ7Cj4gKwkJCcKg wqDCoF9fZW50cnktPnNlcW5vID0gZnJvbS0+ZmVuY2Uuc2Vxbm87Cj4gwqAJCQnCoMKgwqApLAo+ IMKgCj4gwqAJwqDCoMKgwqBUUF9wcmludGsoImRldj0ldSwgc3luYy1mcm9tPSV1LCBzeW5jLXRv PSV1LCBzZXFubz0ldSIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4 IGJmZjE3MmM0NWZmNy4uNWQ0NDIwYjY3NjQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC0xMTU4Myw3ICsxMTU4Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0 Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IMKgCXN0cnVjdCBpbnRlbF9mbGlw X3dvcmsgKndvcms7Cj4gwqAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IMKgCWJv b2wgbW1pb19mbGlwOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0ID0g TlVMTDsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPiDCoAlpbnQg cmV0Owo+IMKgCj4gwqAJLyoKPiBAQCAtMTE2OTAsMjIgKzExNjkwLDYgQEAgc3RhdGljIGludCBp bnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gwqAKPiDCoAltbWlv X2ZsaXAgPSB1c2VfbW1pb19mbGlwKGVuZ2luZSwgb2JqKTsKPiDCoAo+IC0JLyogV2hlbiB1c2lu ZyBDUyBmbGlwcywgd2Ugd2FudCB0byBlbWl0IHNlbWFwaG9yZXMgYmV0d2VlbiByaW5ncy4KPiAt CcKgKiBIb3dldmVyLCB3aGVuIHVzaW5nIG1taW8gZmxpcHMgd2Ugd2lsbCBjcmVhdGUgYSB0YXNr IHRvIGRvIHRoZQo+IC0JwqAqIHN5bmNocm9uaXNhdGlvbiwgc28gYWxsIHdlIHdhbnQgaGVyZSBp cyB0byBwaW4gdGhlIGZyYW1lYnVmZmVyCj4gLQnCoCogaW50byB0aGUgZGlzcGxheSBwbGFuZSBh bmQgc2tpcCBhbnkgd2FpdHMuCj4gLQnCoCovCj4gLQlpZiAoIW1taW9fZmxpcCkgewo+IC0JCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgZW5naW5lLCAmcmVxdWVzdCk7Cj4gLQkJaWYg KCFyZXQgJiYgIXJlcXVlc3QpIHsKPiAtCQkJcmVxdWVzdCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxs b2MoZW5naW5lLCBOVUxMKTsKPiAtCQkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKHJlcXVlc3QpOwo+ IC0JCX0KPiAtCj4gLQkJaWYgKHJldCkKPiAtCQkJZ290byBjbGVhbnVwX3BlbmRpbmc7Cj4gLQl9 Cj4gLQo+IMKgCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBwcmltYXJ5LT5z dGF0ZS0+cm90YXRpb24pOwo+IMKgCWlmIChyZXQpCj4gwqAJCWdvdG8gY2xlYW51cF9wZW5kaW5n Owo+IEBAIC0xMTcyMywxNCArMTE3MDcsMjQgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2Vf ZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gwqAKPiDCoAkJc2NoZWR1bGVfd29yaygmd29y ay0+bW1pb193b3JrKTsKPiDCoAl9IGVsc2Ugewo+IC0JCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWdu KCZ3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsIHJlcXVlc3QpOwo+ICsJCXJlcXVlc3QgPSBpOTE1X2dl bV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgZW5naW5lLT5sYXN0X2NvbnRleHQpOwo+ICsJCWlmIChJ U19FUlIocmVxdWVzdCkpIHsKPiArCQkJcmV0ID0gUFRSX0VSUihyZXF1ZXN0KTsKPiArCQkJZ290 byBjbGVhbnVwX3VucGluOwo+ICsJCX0KPiArCj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5 bmMob2JqLCByZXF1ZXN0KTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGNsZWFudXBfcmVxdWVz dDsKPiArCj4gwqAJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXAoZGV2LCBjcnRj LCBmYiwgb2JqLCByZXF1ZXN0LAo+IMKgCQkJCQkJwqDCoMKgcGFnZV9mbGlwX2ZsYWdzKTsKPiDC oAkJaWYgKHJldCkKPiAtCQkJZ290byBjbGVhbnVwX3VucGluOwo+ICsJCQlnb3RvIGNsZWFudXBf cmVxdWVzdDsKPiDCoAo+IMKgCQlpbnRlbF9tYXJrX3BhZ2VfZmxpcF9hY3RpdmUoaW50ZWxfY3J0 Yywgd29yayk7Cj4gwqAKPiArCQl3b3JrLT5mbGlwX3F1ZXVlZF9yZXEgPSBpOTE1X2dlbV9yZXF1 ZXN0X2dldChyZXF1ZXN0KTsKPiDCoAkJaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVzaChyZXF1ZXN0 KTsKPiDCoAl9Cj4gwqAKPiBAQCAtMTE3NDUsMTEgKzExNzM5LDExIEBAIHN0YXRpYyBpbnQgaW50 ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IMKgCj4gwqAJcmV0dXJu IDA7Cj4gwqAKPiArY2xlYW51cF9yZXF1ZXN0Ogo+ICsJaTkxNV9hZGRfcmVxdWVzdF9ub19mbHVz aChyZXF1ZXN0KTsKPiDCoGNsZWFudXBfdW5waW46Cj4gwqAJaW50ZWxfdW5waW5fZmJfb2JqKGZi LCBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24pOwo+IMKgY2xlYW51cF9wZW5kaW5nOgo+ IC0JaWYgKCFJU19FUlJfT1JfTlVMTChyZXF1ZXN0KSkKPiAtCQlpOTE1X2FkZF9yZXF1ZXN0X25v X2ZsdXNoKHJlcXVlc3QpOwo+IMKgCWF0b21pY19kZWMoJmludGVsX2NydGMtPnVucGluX3dvcmtf Y291bnQpOwo+IMKgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+IMKgY2xlYW51 cDoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IGU4ZDk3MWU4MTQ5MS4uMWU1N2Y0 ODI1MGNlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtNjU1LDcgKzY1NSw3 IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX21vdmVfdG9fZ3B1KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAo+IMKgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1h LT5vYmo7Cj4gwqAKPiDCoAkJaWYgKG9iai0+YWN0aXZlICYgb3RoZXJfcmluZ3MpIHsKPiAtCQkJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCByZXEtPmVuZ2luZSwgJnJlcSk7Cj4gKwkJ CXJldCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgcmVxKTsKPiDCoAkJCWlmIChyZXQpCj4g wqAJCQkJcmV0dXJuIHJldDsKPiDCoAkJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9vdmVybGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5 LmMKPiBpbmRleCA4ZjFkNGQ5ZWYzNDUuLjY1MWVmZTRlNDY4ZSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9vdmVybGF5LmMKPiBAQCAtMjI5LDExICsyMjksMTggQEAgc3RhdGljIGludCBp bnRlbF9vdmVybGF5X2RvX3dhaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zlcmxh eSwKPiDCoAlyZXR1cm4gMDsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICphbGxvY19yZXF1ZXN0KHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvdmVybGF5LT5pOTE1 Owo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVb UkNTXTsKPiArCj4gKwlyZXR1cm4gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGRldl9w cml2LT5rZXJuZWxfY29udGV4dCk7Cj4gK30KPiArCj4gwqAvKiBvdmVybGF5IG5lZWRzIHRvIGJl IGRpc2FibGUgaW4gT0NNRCByZWcgKi8KPiDCoHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vbihz dHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBvdmVybGF5LT5pOTE1Owo+IC0Jc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbUkNTXTsKPiDCoAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPiDCoAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPiDCoAlp bnQgcmV0Owo+IEBAIC0yNDEsNyArMjQ4LDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29u KHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+IMKgCVdBUk5fT04ob3ZlcmxheS0+YWN0 aXZlKTsKPiDCoAlXQVJOX09OKElTX0k4MzAoZGV2X3ByaXYpICYmICEoZGV2X3ByaXYtPnF1aXJr cyAmIFFVSVJLX1BJUEVBX0ZPUkNFKSk7Cj4gwqAKPiAtCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3Rf YWxsb2MoZW5naW5lLCBOVUxMKTsKPiArCXJlcSA9IGFsbG9jX3JlcXVlc3Qob3ZlcmxheSk7Cj4g wqAJaWYgKElTX0VSUihyZXEpKQo+IMKgCQlyZXR1cm4gUFRSX0VSUihyZXEpOwo+IMKgCj4gQEAg LTI2OCw3ICsyNzUsNiBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfY29udGludWUoc3RydWN0 IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gwqAJCQkJwqDCoGJvb2wgbG9hZF9wb2x5cGhhc2Vf ZmlsdGVyKQo+IMKgewo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92 ZXJsYXktPmk5MTU7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSAmZGV2X3By aXYtPmVuZ2luZVtSQ1NdOwo+IMKgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+ IMKgCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+IMKgCXUzMiBmbGlwX2FkZHIgPSBvdmVybGF5 LT5mbGlwX2FkZHI7Cj4gQEAgLTI4NSw3ICsyOTEsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJs YXlfY29udGludWUoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXksCj4gwqAJaWYgKHRtcCAm ICgxIDw8IDE3KSkKPiDCoAkJRFJNX0RFQlVHKCJvdmVybGF5IHVuZGVycnVuLCBET1ZTVEE6ICV4 XG4iLCB0bXApOwo+IMKgCj4gLQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwg TlVMTCk7Cj4gKwlyZXEgPSBhbGxvY19yZXF1ZXN0KG92ZXJsYXkpOwo+IMKgCWlmIChJU19FUlIo cmVxKSkKPiDCoAkJcmV0dXJuIFBUUl9FUlIocmVxKTsKPiDCoAo+IEBAIC0zMzgsNyArMzQ0LDYg QEAgc3RhdGljIHZvaWQgaW50ZWxfb3ZlcmxheV9vZmZfdGFpbChzdHJ1Y3QgaW50ZWxfb3Zlcmxh eSAqb3ZlcmxheSkKPiDCoHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGludGVs X292ZXJsYXkgKm92ZXJsYXkpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSA9ICZkZXZfcHJpdi0+ZW5naW5lW1JDU107Cj4gwqAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXE7Cj4gwqAJc3RydWN0IGludGVsX3JpbmcgKnJpbmc7Cj4gwqAJdTMyIGZsaXBfYWRk ciA9IG92ZXJsYXktPmZsaXBfYWRkcjsKPiBAQCAtMzUyLDcgKzM1Nyw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfb3ZlcmxheV9vZmYoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gwqAJwqAq IG9mIHRoZSBody4gRG8gaXQgaW4gYm90aCBjYXNlcyAqLwo+IMKgCWZsaXBfYWRkciB8PSBPRkNf VVBEQVRFOwo+IMKgCj4gLQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgTlVM TCk7Cj4gKwlyZXEgPSBhbGxvY19yZXF1ZXN0KG92ZXJsYXkpOwo+IMKgCWlmIChJU19FUlIocmVx KSkKPiDCoAkJcmV0dXJuIFBUUl9FUlIocmVxKTsKPiDCoAo+IEBAIC00MTIsNyArNDE3LDYgQEAg c3RhdGljIGludCBpbnRlbF9vdmVybGF5X3JlY292ZXJfZnJvbV9pbnRlcnJ1cHQoc3RydWN0IGlu dGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gwqBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfcmVsZWFz ZV9vbGRfdmlkKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+IMKgewo+IMKgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7Cj4gLQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+IMKgCWlu dCByZXQ7Cj4gwqAKPiDCoAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gQEAgLTQyOCw3ICs0MzIsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlf cmVsZWFzZV9vbGRfdmlkKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+IMKgCQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPiDCoAkJc3RydWN0IGludGVsX3JpbmcgKnJp bmc7Cj4gwqAKPiAtCQlyZXEgPSBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgTlVMTCk7 Cj4gKwkJcmVxID0gYWxsb2NfcmVxdWVzdChvdmVybGF5KTsKPiDCoAkJaWYgKElTX0VSUihyZXEp KQo+IMKgCQkJcmV0dXJuIFBUUl9FUlIocmVxKTsKPiDCoAotLSAKSm9vbmFzIExhaHRpbmVuCk9w ZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCkludGVsIENvcnBvcmF0aW9uCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=