From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 09/18] drm/i915: Simplify request_alloc by returning the allocated request Date: Thu, 21 Jul 2016 16:07:59 +0300 Message-ID: <1469106479.4821.24.camel@linux.intel.com> References: <1469020330-1071-1-git-send-email-chris@chris-wilson.co.uk> <1469020330-1071-10-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 4BB096E09F for ; Thu, 21 Jul 2016 13:08:19 +0000 (UTC) In-Reply-To: <1469020330-1071-10-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 T24ga2UsIDIwMTYtMDctMjAgYXQgMTQ6MTIgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJ ZiBpcyBzaW1wbGVyIGFuZCBsZWFkcyB0byBtb3JlIHJlYWRhYmxlIGNvZGUgdGhyb3VnaCB0aGUg Y2FsbHN0YWNrIGlmCj4gdGhlIGFsbG9jYXRpb24gcmV0dXJucyB0aGUgYWxsb2NhdGVkIHN0cnVj dCB0aHJvdWdoIHRoZSByZXR1cm4gdmFsdWUuCj4gCj4gVGhlIGltcG9ydGFuY2Ugb2YgdGhpcyBp cyB0aGF0IGl0IG5vIGxvbmdlciBsb29rcyBsaWtlIHdlIGFjY2lkZW50YWxseQo+IGFsbG9jYXRl IHJlcXVlc3RzIGFzIHNpZGUtZWZmZWN0IG9mIGNhbGxpbmcgY2VydGFpbiBmdW5jdGlvbnMuCj4g Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5owqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfMKgwqAzICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgfCA3NSArKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyB8IDEyICsrLS0t Cj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmPCoMKgwqDCoHwgNTgg KysrKysrKystLS0tLS0tLS0tLS0tLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJh Y2UuaMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAxMyArKystLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuY8KgwqDCoMKgwqDCoMKgfCAzNiArKysrKystLS0tLS0tLQo+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKg wqAyICstCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vdmVybGF5LmPCoMKgwqDCoMKg wqDCoHwgMjAgKysrKy0tLS0KPiDCoDggZmlsZXMgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwg MTQwIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGYzMmVj NmRiNWJmYS4uM2Y2NzQzMTU3N2UzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAg LTMxNjgsOCArMzE2OCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9vYmplY3RfdW5w aW5fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gwqAKPiDCoGludCBfX211 c3RfY2hlY2sgaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cj4gwqBpbnQgaTkxNV9nZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAtCQkJwqBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0bywKPiAtCQkJwqBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKip0b19yZXEpOwo+ICsJCQnCoHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqdG8pOwo+IMKgdm9pZCBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZShz dHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiDCoAkJCcKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSk7Cj4gwqBpbnQgaTkxNV9nZW1fZHVtYl9jcmVhdGUoc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXYsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggOTVkYmNmZDk0 YTgwLi43N2Q3YzBiMDEyZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMjg0 Miw1MSArMjg0MiwzNSBAQCBvdXQ6Cj4gwqAKPiDCoHN0YXRpYyBpbnQKPiDCoF9faTkxNV9nZW1f b2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQnCoMKgwqDC oMKgwqDCoHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnRvLAo+IC0JCcKgwqDCoMKgwqDCoMKgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpmcm9tX3JlcSwKPiAtCQnCoMKgwqDCoMKgwqDCoHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqKnRvX3JlcSkKPiArCQnCoMKgwqDCoMKgwqDCoHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8sCj4gKwkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmZyb20pCj4gwqB7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpmcm9tOwo+IMKgCWludCByZXQ7Cj4gwqAKPiAtCWZyb20gPSBpOTE1X2dlbV9yZXF1ZXN0 X2dldF9lbmdpbmUoZnJvbV9yZXEpOwo+IC0JaWYgKHRvID09IGZyb20pCj4gKwlpZiAodG8tPmVu Z2luZSA9PSBmcm9tLT5lbmdpbmUpCj4gwqAJCXJldHVybiAwOwo+IMKgCj4gLQlpZiAoaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQoZnJvbV9yZXEpKQo+ICsJaWYgKGk5MTVfZ2VtX3JlcXVlc3Rf Y29tcGxldGVkKGZyb20pKQo+IMKgCQlyZXR1cm4gMDsKPiDCoAo+IMKgCWlmICghaTkxNS5zZW1h cGhvcmVzKSB7Cj4gLQkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KG9i ai0+YmFzZS5kZXYpOwo+IC0JCXJldCA9IF9faTkxNV93YWl0X3JlcXVlc3QoZnJvbV9yZXEsCj4g LQkJCQkJwqDCoGk5MTUtPm1tLmludGVycnVwdGlibGUsCj4gKwkJcmV0ID0gX19pOTE1X3dhaXRf cmVxdWVzdChmcm9tLAo+ICsJCQkJCcKgwqBmcm9tLT5pOTE1LT5tbS5pbnRlcnJ1cHRpYmxlLAo+ IMKgCQkJCQnCoMKgTlVMTCwKPiDCoAkJCQkJwqDCoE5PX1dBSVRCT09TVCk7Cj4gwqAJCWlmIChy ZXQpCj4gwqAJCQlyZXR1cm4gcmV0Owo+IMKgCj4gLQkJaTkxNV9nZW1fb2JqZWN0X3JldGlyZV9y ZXF1ZXN0KG9iaiwgZnJvbV9yZXEpOwo+ICsJCWk5MTVfZ2VtX29iamVjdF9yZXRpcmVfcmVxdWVz dChvYmosIGZyb20pOwo+IMKgCX0gZWxzZSB7Cj4gLQkJaW50IGlkeCA9IGludGVsX2VuZ2luZV9z eW5jX2luZGV4KGZyb20sIHRvKTsKPiAtCQl1MzIgc2Vxbm8gPSBpOTE1X2dlbV9yZXF1ZXN0X2dl dF9zZXFubyhmcm9tX3JlcSk7Cj4gKwkJaW50IGlkeCA9IGludGVsX2VuZ2luZV9zeW5jX2luZGV4 KGZyb20tPmVuZ2luZSwgdG8tPmVuZ2luZSk7Cj4gKwkJdTMyIHNlcW5vID0gaTkxNV9nZW1fcmVx dWVzdF9nZXRfc2Vxbm8oZnJvbSk7Cj4gwqAKPiAtCQlXQVJOX09OKCF0b19yZXEpOwo+IC0KPiAt CQlpZiAoc2Vxbm8gPD0gZnJvbS0+c2VtYXBob3JlLnN5bmNfc2Vxbm9baWR4XSkKPiArCQlpZiAo c2Vxbm8gPD0gZnJvbS0+ZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFub1tpZHhdKQo+IMKgCQkJ cmV0dXJuIDA7Cj4gwqAKPiAtCQlpZiAoKnRvX3JlcSA9PSBOVUxMKSB7Cj4gLQkJCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+IC0KPiAtCQkJcmVxID0gaTkxNV9nZW1fcmVxdWVz dF9hbGxvYyh0bywgTlVMTCk7Cj4gLQkJCWlmIChJU19FUlIocmVxKSkKPiAtCQkJCXJldHVybiBQ VFJfRVJSKHJlcSk7Cj4gLQo+IC0JCQkqdG9fcmVxID0gcmVxOwo+IC0JCX0KPiAtCj4gLQkJdHJh Y2VfaTkxNV9nZW1fcmluZ19zeW5jX3RvKCp0b19yZXEsIGZyb20sIGZyb21fcmVxKTsKPiAtCQly ZXQgPSB0by0+c2VtYXBob3JlLnN5bmNfdG8oKnRvX3JlcSwgZnJvbSwgc2Vxbm8pOwo+ICsJCXRy YWNlX2k5MTVfZ2VtX3Jpbmdfc3luY190byh0bywgZnJvbSk7CgpXaWxsIHNvbWVib2R5IGdvIG51 dHMgZm9yIGNoYW5naW5nIHRoZSB0cmFjaW5nIGp1c3QgbGlrZSBzbz8gSSByZW1lbWJlcgpzb21l Ym9keSB0cmVhdGluZyBpdCBzb21ld2hhdCBvZiBhbiBBQkkuCgo+ICsJCXJldCA9IHRvLT5lbmdp bmUtPnNlbWFwaG9yZS5zeW5jX3RvKHRvLCBmcm9tLT5lbmdpbmUsIHNlcW5vKTsKPiDCoAkJaWYg KHJldCkKPiDCoAkJCXJldHVybiByZXQ7Cj4gwqAKPiBAQCAtMjg5NCw4ICsyODc4LDggQEAgX19p OTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IMKg CQnCoCogbWlnaHQgaGF2ZSBqdXN0IGNhdXNlZCBzZXFubyB3cmFwIHVuZGVyCj4gwqAJCcKgKiB0 aGUgcmFkYXIuCj4gwqAJCcKgKi8KPiAtCQlmcm9tLT5zZW1hcGhvcmUuc3luY19zZXFub1tpZHhd ID0KPiAtCQkJaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2JqLT5sYXN0X3JlYWRfcmVxW2Zy b20tPmlkXSk7Cj4gKwkJZnJvbS0+ZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFub1tpZHhdID0K PiArCQkJaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2JqLT5sYXN0X3JlYWRfcmVxW2Zyb20t PmVuZ2luZS0+aWRdKTsKPiDCoAl9Cj4gwqAKPiDCoAlyZXR1cm4gMDsKPiBAQCAtMjkwNSwxNyAr Mjg4OSwxMiBAQCBfX2k5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmosCj4gwqAgKiBpOTE1X2dlbV9vYmplY3Rfc3luYyAtIHN5bmMgYW4gb2JqZWN0IHRv IGEgcmluZy4KPiDCoCAqCj4gwqAgKiBAb2JqOiBvYmplY3Qgd2hpY2ggbWF5IGJlIGluIHVzZSBv biBhbm90aGVyIHJpbmcuCj4gLSAqIEB0bzogcmluZyB3ZSB3aXNoIHRvIHVzZSB0aGUgb2JqZWN0 IG9uLiBNYXkgYmUgTlVMTC4KPiAtICogQHRvX3JlcTogcmVxdWVzdCB3ZSB3aXNoIHRvIHVzZSB0 aGUgb2JqZWN0IGZvci4gU2VlIGJlbG93Lgo+IC0gKsKgwqDCoMKgwqDCoMKgwqDCoMKgVGhpcyB3 aWxsIGJlIGFsbG9jYXRlZCBhbmQgcmV0dXJuZWQgaWYgYSByZXF1ZXN0IGlzCj4gLSAqwqDCoMKg wqDCoMKgwqDCoMKgwqByZXF1aXJlZCBidXQgbm90IHBhc3NlZCBpbi4KPiArICogQHRvOiByZXF1 ZXN0IHdlIGFyZSB3aXNoaW5nIHRvIHVzZQo+IMKgICoKPiDCoCAqIFRoaXMgY29kZSBpcyBtZWFu dCB0byBhYnN0cmFjdCBvYmplY3Qgc3luY2hyb25pemF0aW9uIHdpdGggdGhlIEdQVS4KPiAtICog Q2FsbGluZyB3aXRoIE5VTEwgaW1wbGllcyBzeW5jaHJvbml6aW5nIHRoZSBvYmplY3Qgd2l0aCB0 aGUgQ1BVCj4gLSAqIHJhdGhlciB0aGFuIGEgcGFydGljdWxhciBHUFUgcmluZy4gQ29uY2VwdHVh bGx5IHdlIHNlcmlhbGlzZSB3cml0ZXMKPiAtICogYmV0d2VlbiBlbmdpbmVzIGluc2lkZSB0aGUg R1BVLiBXZSBvbmx5IGFsbG93IG9uZSBlbmdpbmUgdG8gd3JpdGUKPiAtICogaW50byBhIGJ1ZmZl ciBhdCBhbnkgdGltZSwgYnV0IG11bHRpcGxlIHJlYWRlcnMuIFRvIGVuc3VyZSBlYWNoIGhhcwo+ IC0gKiBhIGNvaGVyZW50IHZpZXcgb2YgbWVtb3J5LCB3ZSBtdXN0Ogo+ICsgKiBDb25jZXB0dWFs bHkgd2Ugc2VyaWFsaXNlIHdyaXRlcyBiZXR3ZWVuIGVuZ2luZXMgaW5zaWRlIHRoZSBHUFUuCj4g KyAqIFdlIG9ubHkgYWxsb3cgb25lIGVuZ2luZSB0byB3cml0ZSBpbnRvIGEgYnVmZmVyIGF0IGFu eSB0aW1lLCBidXQKPiArICogbXVsdGlwbGUgcmVhZGVycy4gVG8gZW5zdXJlIGVhY2ggaGFzIGEg Y29oZXJlbnQgdmlldyBvZiBtZW1vcnksIHdlIG11c3Q6Cj4gwqAgKgo+IMKgICogLSBJZiB0aGVy ZSBpcyBhbiBvdXRzdGFuZGluZyB3cml0ZSByZXF1ZXN0IHRvIHRoZSBvYmplY3QsIHRoZSBuZXcK PiDCoCAqwqDCoMKgcmVxdWVzdCBtdXN0IHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlIChlaXRoZXIg Q1BVIG9yIGluIGh3LCByZXF1ZXN0cwo+IEBAIC0yOTI0LDIyICsyOTAzLDExIEBAIF9faTkxNV9n ZW1fb2JqZWN0X3N5bmMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiDCoCAqIC0g SWYgd2UgYXJlIGEgd3JpdGUgcmVxdWVzdCAocGVuZGluZ193cml0ZV9kb21haW4gaXMgc2V0KSwg dGhlIG5ldwo+IMKgICrCoMKgwqByZXF1ZXN0IG11c3Qgd2FpdCBmb3Igb3V0c3RhbmRpbmcgcmVh ZCByZXF1ZXN0cyB0byBjb21wbGV0ZS4KPiDCoCAqCj4gLSAqIEZvciBDUFUgc3luY2hyb25pc2F0 aW9uIChOVUxMIHRvKSBubyByZXF1ZXN0IGlzIHJlcXVpcmVkLiBGb3Igc3luY2luZyB3aXRoCj4g LSAqIHJpbmdzIHRvX3JlcSBtdXN0IGJlIG5vbi1OVUxMLiBIb3dldmVyLCBhIHJlcXVlc3QgZG9l cyBub3QgaGF2ZSB0byBiZQo+IC0gKiBwcmUtYWxsb2NhdGVkLiBJZiAqdG9fcmVxIGlzIE5VTEwg YW5kIHN5bmMgY29tbWFuZHMgd2lsbCBiZSBlbWl0dGVkIHRoZW4gYQo+IC0gKiByZXF1ZXN0IHdp bGwgYmUgYWxsb2NhdGVkIGF1dG9tYXRpY2FsbHkgYW5kIHJldHVybmVkIHRocm91Z2ggKnRvX3Jl cS4gTm90ZQo+IC0gKiB0aGF0IGl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXQgY29tbWFuZHMgd2ls bCBiZSBlbWl0dGVkIChiZWNhdXNlIHRoZSBzeXN0ZW0KPiAtICogbWlnaHQgYWxyZWFkeSBiZSBp ZGxlKS4gSGVuY2UgdGhlcmUgaXMgbm8gbmVlZCB0byBjcmVhdGUgYSByZXF1ZXN0IHRoYXQKPiAt ICogbWlnaHQgbmV2ZXIgaGF2ZSBhbnkgd29yayBzdWJtaXR0ZWQuIE5vdGUgZnVydGhlciB0aGF0 IGlmIGEgcmVxdWVzdCBpcwo+IC0gKiByZXR1cm5lZCBpbiAqdG9fcmVxLCBpdCBpcyB0aGUgcmVz cG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlciB0byBzdWJtaXQKPiAtICogdGhhdCByZXF1ZXN0IChh ZnRlciBwb3RlbnRpYWxseSBhZGRpbmcgbW9yZSB3b3JrIHRvIGl0KS4KPiAtICoKPiDCoCAqIFJl dHVybnMgMCBpZiBzdWNjZXNzZnVsLCBlbHNlIHByb3BhZ2F0ZXMgdXAgdGhlIGxvd2VyIGxheWVy IGVycm9yLgo+IMKgICovCj4gwqBpbnQKPiDCoGk5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnRvLAo+IC0JCcKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKip0 b19yZXEpCj4gKwkJwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8pCj4g wqB7Cj4gwqAJY29uc3QgYm9vbCByZWFkb25seSA9IG9iai0+YmFzZS5wZW5kaW5nX3dyaXRlX2Rv bWFpbiA9PSAwOwo+IMKgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxW0k5MTVfTlVN X0VOR0lORVNdOwo+IEBAIC0yOTQ4LDkgKzI5MTYsNiBAQCBpOTE1X2dlbV9vYmplY3Rfc3luYyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IMKgCWlmICghb2JqLT5hY3RpdmUpCj4g wqAJCXJldHVybiAwOwo+IMKgCj4gLQlpZiAodG8gPT0gTlVMTCkKPiAtCQlyZXR1cm4gaTkxNV9n ZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKG9iaiwgcmVhZG9ubHkpOwo+IC0KPiDCoAluID0gMDsK PiDCoAlpZiAocmVhZG9ubHkpIHsKPiDCoAkJaWYgKG9iai0+bGFzdF93cml0ZV9yZXEpCj4gQEAg LTI5NjEsNyArMjkyNiw3IEBAIGk5MTVfZ2VtX29iamVjdF9zeW5jKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCj4gwqAJCQkJcmVxW24rK10gPSBvYmotPmxhc3RfcmVhZF9yZXFbaV07 Cj4gwqAJfQo+IMKgCWZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKPiAtCQlyZXQgPSBfX2k5MTVf Z2VtX29iamVjdF9zeW5jKG9iaiwgdG8sIHJlcVtpXSwgdG9fcmVxKTsKPiArCQlyZXQgPSBfX2k5 MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgdG8sIHJlcVtpXSk7Cj4gwqAJCWlmIChyZXQpCj4gwqAJ CQlyZXR1cm4gcmV0Owo+IMKgCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhl Y2J1ZmZlci5jCj4gaW5kZXggMmE0ODQxMjU2ZjhlLi41Y2VhOTVjNmY5OGIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gQEAgLTk4MSw3ICs5ODEs NyBAQCBpOTE1X2dlbV9leGVjYnVmZmVyX21vdmVfdG9fZ3B1KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAo+IMKgCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1h LT5vYmo7Cj4gwqAKPiDCoAkJaWYgKG9iai0+YWN0aXZlICYgb3RoZXJfcmluZ3MpIHsKPiAtCQkJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMob2JqLCByZXEtPmVuZ2luZSwgJnJlcSk7Cj4gKwkJ CXJldCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgcmVxKTsKPiDCoAkJCWlmIChyZXQpCj4g wqAJCQkJcmV0dXJuIHJldDsKPiDCoAkJfQo+IEBAIC0xNDI2LDcgKzE0MjYsNiBAQCBpOTE1X2dl bV9kb19leGVjYnVmZmVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gwqB7 Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ IMKgCXN0cnVjdCBpOTE1X2dndHQgKmdndHQgPSAmZGV2X3ByaXYtPmdndHQ7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSA9IE5VTEw7Cj4gwqAJc3RydWN0IGViX3ZtYXMgKmVi Owo+IMKgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpiYXRjaF9vYmo7Cj4gwqAJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgc2hhZG93X2V4ZWNfZW50cnk7Cj4gQEAgLTE2MTQs MTMgKzE2MTMsMTMgQEAgaTkxNV9nZW1fZG9fZXhlY2J1ZmZlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAo+IMKgCQlwYXJhbXMtPmJhdGNoX29ial92bV9vZmZzZXQgPSBpOTE1 X2dlbV9vYmpfb2Zmc2V0KGJhdGNoX29iaiwgdm0pOwo+IMKgCj4gwqAJLyogQWxsb2NhdGUgYSBy ZXF1ZXN0IGZvciB0aGlzIGJhdGNoIGJ1ZmZlciBuaWNlIGFuZCBlYXJseS4gKi8KPiAtCXJlcSA9 IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBjdHgpOwo+IC0JaWYgKElTX0VSUihyZXEp KSB7Cj4gLQkJcmV0ID0gUFRSX0VSUihyZXEpOwo+ICsJcGFyYW1zLT5yZXF1ZXN0ID0gaTkxNV9n ZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4gKwlpZiAoSVNfRVJSKHBhcmFtcy0+cmVx dWVzdCkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKHBhcmFtcy0+cmVxdWVzdCk7Cj4gwqAJCWdvdG8g ZXJyX2JhdGNoX3VucGluOwo+IMKgCX0KPiDCoAo+IC0JcmV0ID0gaTkxNV9nZW1fcmVxdWVzdF9h ZGRfdG9fY2xpZW50KHJlcSwgZmlsZSk7Cj4gKwlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2FkZF90 b19jbGllbnQocGFyYW1zLT5yZXF1ZXN0LCBmaWxlKTsKPiDCoAlpZiAocmV0KQo+IMKgCQlnb3Rv IGVycl9yZXF1ZXN0Owo+IMKgCj4gQEAgLTE2MzYsNyArMTYzNSw2IEBAIGk5MTVfZ2VtX2RvX2V4 ZWNidWZmZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiDCoAlwYXJhbXMt PmRpc3BhdGNoX2ZsYWdzwqDCoMKgwqDCoMKgwqDCoMKgwqA9IGRpc3BhdGNoX2ZsYWdzOwo+IMKg CXBhcmFtcy0+YmF0Y2hfb2JqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgPSBiYXRjaF9v Ymo7Cj4gwqAJcGFyYW1zLT5jdHjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqA9IGN0eDsKPiAtCXBhcmFtcy0+cmVxdWVzdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqA9IHJlcTsKCk5vdCBzdXJlIHdoeSB5b3UgZXNwZWNpYWxseSB3YW50IHRvIGFsd2F5 cyB1c2UgcGFyYW1zLT5yZXF1ZXN0IGZvcm0/Cgo+IMKgCj4gwqAJcmV0ID0gZGV2X3ByaXYtPmd0 LmV4ZWNidWZfc3VibWl0KHBhcmFtcywgYXJncywgJmViLT52bWFzKTsKPiDCoGVycl9yZXF1ZXN0 Ogo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiBpbmRleCAzYTU2NmFi ZjUyMTkuLjIxNTNiNGZlNGExZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9y ZXF1ZXN0LmMKPiBAQCAtMjkyLDEwICsyOTIsMjEgQEAgc3RhdGljIGludCBpOTE1X2dlbV9nZXRf c2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgKnNlcW5vKQo+IMKg CXJldHVybiAwOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbmxpbmUgaW50Cj4gLV9faTkxNV9nZW1f cmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCcKgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAtCQkJwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKipyZXFfb3V0KQo+ICsvKioKPiArICogaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyAtIGFs bG9jYXRlIGEgcmVxdWVzdCBzdHJ1Y3R1cmUKPiArICoKPiArICogQGVuZ2luZTogZW5naW5lIHRo YXQgd2Ugd2lzaCB0byBpc3N1ZSB0aGUgcmVxdWVzdCBvbi4KPiArICogQGN0eDogY29udGV4dCB0 aGF0IHRoZSByZXF1ZXN0IHdpbGwgYmUgYXNzb2NpYXRlZCB3aXRoLgo+ICsgKsKgwqDCoMKgwqDC oMKgVGhpcyBjYW4gYmUgTlVMTCBpZiB0aGUgcmVxdWVzdCBpcyBub3QgZGlyZWN0bHkgcmVsYXRl ZCB0bwo+ICsgKsKgwqDCoMKgwqDCoMKgYW55IHNwZWNpZmljIHVzZXIgY29udGV4dCwgaW4gd2hp Y2ggY2FzZSB0aGlzIGZ1bmN0aW9uIHdpbGwKPiArICrCoMKgwqDCoMKgwqDCoGNob29zZSBhbiBh cHByb3ByaWF0ZSBjb250ZXh0IHRvIHVzZS4KPiArICoKPiArICogUmV0dXJucyBhIHBvaW50ZXIg dG8gdGhlIGFsbG9jYXRlZCByZXF1ZXN0IGlmIHN1Y2Nlc3NmdWwsCj4gKyAqIG9yIGFuIGVycm9y IGNvZGUgaWYgbm90Lgo+ICsgKi8KPiArc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICoKPiAr aTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4g KwkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+IMKgewo+IMKg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiDCoAl1 bnNpZ25lZCBpbnQgcmVzZXRfY291bnRlciA9IGk5MTVfcmVzZXRfY291bnRlcigmZGV2X3ByaXYt PmdwdV9lcnJvcik7Cj4gQEAgLTMwMywxOCArMzE0LDEzIEBAIF9faTkxNV9nZW1fcmVxdWVzdF9h bGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gwqAJdTMyIHNlcW5vOwo+IMKg CWludCByZXQ7Cj4gwqAKPiAtCWlmICghcmVxX291dCkKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAt Cj4gLQkqcmVxX291dCA9IE5VTEw7Cj4gLQo+IMKgCS8qIEFCSTogQmVmb3JlIHVzZXJzcGFjZSBh Y2Nlc3NlcyB0aGUgR1BVIChlLmcuIGV4ZWNidWZmZXIpLCByZXBvcnQKPiDCoAnCoCogRUlPIGlm IHRoZSBHUFUgaXMgYWxyZWFkeSB3ZWRnZWQsIG9yIEVBR0FJTiB0byBkcm9wIHRoZSBzdHJ1Y3Rf bXV0ZXgKPiDCoAnCoCogYW5kIHJlc3RhcnQuCj4gwqAJwqAqLwo+IMKgCXJldCA9IGk5MTVfZ2Vt X2NoZWNrX3dlZGdlKHJlc2V0X2NvdW50ZXIsIGRldl9wcml2LT5tbS5pbnRlcnJ1cHRpYmxlKTsK PiDCoAlpZiAocmV0KQo+IC0JCXJldHVybiByZXQ7Cj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsK PiDCoAo+IMKgCS8qIE1vdmUgdGhlIG9sZGVzdCByZXF1ZXN0IHRvIHRoZSBzbGFiLWNhY2hlIChp ZiBub3QgaW4gdXNlISkgKi8KPiDCoAlpZiAoIWxpc3RfZW1wdHkoJmVuZ2luZS0+cmVxdWVzdF9s aXN0KSkgewo+IEBAIC0zMjYsNyArMzMyLDcgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiDCoAo+IMKgCXJlcSA9IGttZW1fY2FjaGVf emFsbG9jKGRldl9wcml2LT5yZXF1ZXN0cywgR0ZQX0tFUk5FTCk7Cj4gwqAJaWYgKCFyZXEpCj4g LQkJcmV0dXJuIC1FTk9NRU07Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gwqAKPiDC oAlyZXQgPSBpOTE1X2dlbV9nZXRfc2Vxbm8oZGV2X3ByaXYsICZzZXFubyk7Cj4gwqAJaWYgKHJl dCkKPiBAQCAtMzU5LDM5ICszNjUsMTMgQEAgX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiDCoAlpZiAocmV0KQo+IMKgCQlnb3RvIGVycl9j dHg7Cj4gwqAKPiAtCSpyZXFfb3V0ID0gcmVxOwo+IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gcmVx Owo+IMKgCj4gwqBlcnJfY3R4Ogo+IMKgCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Cj4gwqBl cnI6Cj4gwqAJa21lbV9jYWNoZV9mcmVlKGRldl9wcml2LT5yZXF1ZXN0cywgcmVxKTsKPiAtCXJl dHVybiByZXQ7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jIC0g YWxsb2NhdGUgYSByZXF1ZXN0IHN0cnVjdHVyZQo+IC0gKgo+IC0gKiBAZW5naW5lOiBlbmdpbmUg dGhhdCB3ZSB3aXNoIHRvIGlzc3VlIHRoZSByZXF1ZXN0IG9uLgo+IC0gKiBAY3R4OiBjb250ZXh0 IHRoYXQgdGhlIHJlcXVlc3Qgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGguCj4gLSAqwqDCoMKgwqDC oMKgwqBUaGlzIGNhbiBiZSBOVUxMIGlmIHRoZSByZXF1ZXN0IGlzIG5vdCBkaXJlY3RseSByZWxh dGVkIHRvCj4gLSAqwqDCoMKgwqDCoMKgwqBhbnkgc3BlY2lmaWMgdXNlciBjb250ZXh0LCBpbiB3 aGljaCBjYXNlIHRoaXMgZnVuY3Rpb24gd2lsbAo+IC0gKsKgwqDCoMKgwqDCoMKgY2hvb3NlIGFu IGFwcHJvcHJpYXRlIGNvbnRleHQgdG8gdXNlLgo+IC0gKgo+IC0gKiBSZXR1cm5zIGEgcG9pbnRl ciB0byB0aGUgYWxsb2NhdGVkIHJlcXVlc3QgaWYgc3VjY2Vzc2Z1bCwKPiAtICogb3IgYW4gZXJy b3IgY29kZSBpZiBub3QuCj4gLSAqLwo+IC1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKgo+ IC1pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK PiAtCQnCoMKgwqDCoMKgwqDCoHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gLXsKPiAt CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxOwo+IC0JaW50IGVycjsKPiAtCj4gLQlp ZiAoIWN0eCkKPiAtCQljdHggPSBlbmdpbmUtPmk5MTUtPmtlcm5lbF9jb250ZXh0Owo+IC0JZXJy ID0gX19pOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4LCAmcmVxKTsKPiAtCXJldHVy biBlcnIgPyBFUlJfUFRSKGVycikgOiByZXE7Cj4gKwlyZXR1cm4gRVJSX1BUUihyZXQpOwo+IMKg fQo+IMKgCj4gwqBzdGF0aWMgdm9pZCBpOTE1X2dlbV9tYXJrX2J1c3koY29uc3Qgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3RyYWNlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBpbmRl eCAwMDcxMTJkMWUwNDkuLjllNDNjMGFhNmUzYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3RyYWNlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Ry YWNlLmgKPiBAQCAtNDQ5LDEwICs0NDksOSBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9ldmljdF92 bSwKPiDCoCk7Cj4gwqAKPiDCoFRSQUNFX0VWRU5UKGk5MTVfZ2VtX3Jpbmdfc3luY190bywKPiAt CcKgwqDCoMKgVFBfUFJPVE8oc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0b19yZXEsCj4g LQkJwqDCoMKgwqDCoHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmZyb20sCj4gLQkJwqDCoMKgwqDC oHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKSwKPiAtCcKgwqDCoMKgVFBfQVJHUyh0 b19yZXEsIGZyb20sIHJlcSksCj4gKwnCoMKgwqDCoFRQX1BST1RPKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqdG8sCj4gKwkJwqDCoMKgwqDCoHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqZnJvbSksCj4gKwnCoMKgwqDCoFRQX0FSR1ModG8sIGZyb20pLAo+IMKgCj4gwqAJwqDCoMKg wqBUUF9TVFJVQ1RfX2VudHJ5KAo+IMKgCQkJwqDCoMKgwqDCoF9fZmllbGQodTMyLCBkZXYpCj4g QEAgLTQ2Myw5ICs0NjIsOSBAQCBUUkFDRV9FVkVOVChpOTE1X2dlbV9yaW5nX3N5bmNfdG8sCj4g wqAKPiDCoAnCoMKgwqDCoFRQX2Zhc3RfYXNzaWduKAo+IMKgCQkJwqDCoMKgX19lbnRyeS0+ZGV2 ID0gZnJvbS0+aTkxNS0+ZHJtLnByaW1hcnktPmluZGV4Owo+IC0JCQnCoMKgwqBfX2VudHJ5LT5z eW5jX2Zyb20gPSBmcm9tLT5pZDsKPiAtCQkJwqDCoMKgX19lbnRyeS0+c3luY190byA9IHRvX3Jl cS0+ZW5naW5lLT5pZDsKPiAtCQkJwqDCoMKgX19lbnRyeS0+c2Vxbm8gPSByZXEtPmZlbmNlLnNl cW5vOwo+ICsJCQnCoMKgwqBfX2VudHJ5LT5zeW5jX2Zyb20gPSBmcm9tLT5lbmdpbmUtPmlkOwo+ ICsJCQnCoMKgwqBfX2VudHJ5LT5zeW5jX3RvID0gdG8tPmVuZ2luZS0+aWQ7Cj4gKwkJCcKgwqDC oF9fZW50cnktPnNlcW5vID0gZnJvbS0+ZmVuY2Uuc2Vxbm87Cj4gwqAJCQnCoMKgwqApLAo+IMKg Cj4gwqAJwqDCoMKgwqBUUF9wcmludGsoImRldj0ldSwgc3luYy1mcm9tPSV1LCBzeW5jLXRvPSV1 LCBzZXFubz0ldSIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGJm ZjE3MmM0NWZmNy4uNWQ0NDIwYjY3NjQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+IEBAIC0xMTU4Myw3ICsxMTU4Myw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19w YWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+IMKgCXN0cnVjdCBpbnRlbF9mbGlwX3dv cmsgKndvcms7Cj4gwqAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+IMKgCWJvb2wg bW1pb19mbGlwOwo+IC0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0ID0gTlVM TDsKPiArCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPiDCoAlpbnQgcmV0 Owo+IMKgCj4gwqAJLyoKPiBAQCAtMTE2OTAsMjIgKzExNjkwLDYgQEAgc3RhdGljIGludCBpbnRl bF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gwqAKPiDCoAltbWlvX2Zs aXAgPSB1c2VfbW1pb19mbGlwKGVuZ2luZSwgb2JqKTsKPiDCoAo+IC0JLyogV2hlbiB1c2luZyBD UyBmbGlwcywgd2Ugd2FudCB0byBlbWl0IHNlbWFwaG9yZXMgYmV0d2VlbiByaW5ncy4KPiAtCcKg KiBIb3dldmVyLCB3aGVuIHVzaW5nIG1taW8gZmxpcHMgd2Ugd2lsbCBjcmVhdGUgYSB0YXNrIHRv IGRvIHRoZQo+IC0JwqAqIHN5bmNocm9uaXNhdGlvbiwgc28gYWxsIHdlIHdhbnQgaGVyZSBpcyB0 byBwaW4gdGhlIGZyYW1lYnVmZmVyCj4gLQnCoCogaW50byB0aGUgZGlzcGxheSBwbGFuZSBhbmQg c2tpcCBhbnkgd2FpdHMuCj4gLQnCoCovCj4gLQlpZiAoIW1taW9fZmxpcCkgewo+IC0JCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgZW5naW5lLCAmcmVxdWVzdCk7Cj4gLQkJaWYgKCFy ZXQgJiYgIXJlcXVlc3QpIHsKPiAtCQkJcmVxdWVzdCA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2Mo ZW5naW5lLCBOVUxMKTsKPiAtCQkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKHJlcXVlc3QpOwo+IC0J CX0KPiAtCj4gLQkJaWYgKHJldCkKPiAtCQkJZ290byBjbGVhbnVwX3BlbmRpbmc7Cj4gLQl9Cj4g LQo+IMKgCXJldCA9IGludGVsX3Bpbl9hbmRfZmVuY2VfZmJfb2JqKGZiLCBwcmltYXJ5LT5zdGF0 ZS0+cm90YXRpb24pOwo+IMKgCWlmIChyZXQpCj4gwqAJCWdvdG8gY2xlYW51cF9wZW5kaW5nOwo+ IEBAIC0xMTcyMywxNCArMTE3MDcsMjQgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxp cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gwqAKPiDCoAkJc2NoZWR1bGVfd29yaygmd29yay0+ bW1pb193b3JrKTsKPiDCoAl9IGVsc2Ugewo+IC0JCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZ3 b3JrLT5mbGlwX3F1ZXVlZF9yZXEsIHJlcXVlc3QpOwo+ICsJCXJlcXVlc3QgPSBpOTE1X2dlbV9y ZXF1ZXN0X2FsbG9jKGVuZ2luZSwgZW5naW5lLT5sYXN0X2NvbnRleHQpOwo+ICsJCWlmIChJU19F UlIocmVxdWVzdCkpIHsKPiArCQkJcmV0ID0gUFRSX0VSUihyZXF1ZXN0KTsKPiArCQkJZ290byBj bGVhbnVwX3VucGluOwo+ICsJCX0KPiArCj4gKwkJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3N5bmMo b2JqLCByZXF1ZXN0KTsKPiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGNsZWFudXBfcmVxdWVzdDsK PiArCj4gwqAJCXJldCA9IGRldl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXAoZGV2LCBjcnRjLCBm Yiwgb2JqLCByZXF1ZXN0LAo+IMKgCQkJCQkJwqDCoMKgcGFnZV9mbGlwX2ZsYWdzKTsKPiDCoAkJ aWYgKHJldCkKPiAtCQkJZ290byBjbGVhbnVwX3VucGluOwo+ICsJCQlnb3RvIGNsZWFudXBfcmVx dWVzdDsKPiDCoAo+IMKgCQlpbnRlbF9tYXJrX3BhZ2VfZmxpcF9hY3RpdmUoaW50ZWxfY3J0Yywg d29yayk7Cj4gwqAKPiArCQl3b3JrLT5mbGlwX3F1ZXVlZF9yZXEgPSBpOTE1X2dlbV9yZXF1ZXN0 X2dldChyZXF1ZXN0KTsKCklmIEkgdW5kZXJzdG9vZCBpdCBjb3JyZWN0bHksIHJlc3VsdCBzaG91 bGQgYmUgZXF1aXZhbGVudCwgbm8KZnVuY3Rpb25hbCBjaGFuZ2VzLgoKUmVnYXJkcywgSm9vbmFz Cgo+IMKgCQlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcXVlc3QpOwo+IMKgCX0KPiDCoAo+ IEBAIC0xMTc0NSwxMSArMTE3MzksMTEgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxp cChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gwqAKPiDCoAlyZXR1cm4gMDsKPiDCoAo+ICtjbGVh bnVwX3JlcXVlc3Q6Cj4gKwlpOTE1X2FkZF9yZXF1ZXN0X25vX2ZsdXNoKHJlcXVlc3QpOwo+IMKg Y2xlYW51cF91bnBpbjoKPiDCoAlpbnRlbF91bnBpbl9mYl9vYmooZmIsIGNydGMtPnByaW1hcnkt PnN0YXRlLT5yb3RhdGlvbik7Cj4gwqBjbGVhbnVwX3BlbmRpbmc6Cj4gLQlpZiAoIUlTX0VSUl9P Ul9OVUxMKHJlcXVlc3QpKQo+IC0JCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVxdWVzdCk7 Cj4gwqAJYXRvbWljX2RlYygmaW50ZWxfY3J0Yy0+dW5waW5fd29ya19jb3VudCk7Cj4gwqAJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gwqBjbGVhbnVwOgo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gaW5kZXggMzE1OGExYTM4NjQ0Li42Y2QwZTI0ZWQ1MGMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC02NTUsNyArNjU1LDcgQEAgc3RhdGljIGludCBl eGVjbGlzdHNfbW92ZV90b19ncHUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEsCj4g wqAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKPiDCoAo+IMKg CQlpZiAob2JqLT5hY3RpdmUgJiBvdGhlcl9yaW5ncykgewo+IC0JCQlyZXQgPSBpOTE1X2dlbV9v YmplY3Rfc3luYyhvYmosIHJlcS0+ZW5naW5lLCAmcmVxKTsKPiArCQkJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3N5bmMob2JqLCByZXEpOwo+IMKgCQkJaWYgKHJldCkKPiDCoAkJCQlyZXR1cm4gcmV0 Owo+IMKgCQl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJsYXkuYwo+IGluZGV4IGE1MDcx ZTI4MTA4OC4uMzU2YTFmNmY5NWFhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX292ZXJsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX292ZXJs YXkuYwo+IEBAIC0yMjksMTEgKzIyOSwxOCBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfZG9f d2FpdF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5LAo+IMKgCXJldHVybiAw Owo+IMKgfQo+IMKgCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmFsbG9j X3JlcXVlc3Qoc3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG92ZXJsYXktPmk5MTU7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSAmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+ICsKPiArCXJl dHVybiBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgZGV2X3ByaXYtPmtlcm5lbF9jb250 ZXh0KTsKPiArfQo+ICsKPiDCoC8qIG92ZXJsYXkgbmVlZHMgdG8gYmUgZGlzYWJsZSBpbiBPQ01E IHJlZyAqLwo+IMKgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29uKHN0cnVjdCBpbnRlbF9vdmVy bGF5ICpvdmVybGF5KQo+IMKgewo+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG92ZXJsYXktPmk5MTU7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSAm ZGV2X3ByaXYtPmVuZ2luZVtSQ1NdOwo+IMKgCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxOwo+IMKgCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+IMKgCWludCByZXQ7Cj4gQEAgLTI0 MSw3ICsyNDgsNyBAQCBzdGF0aWMgaW50IGludGVsX292ZXJsYXlfb24oc3RydWN0IGludGVsX292 ZXJsYXkgKm92ZXJsYXkpCj4gwqAJV0FSTl9PTihvdmVybGF5LT5hY3RpdmUpOwo+IMKgCVdBUk5f T04oSVNfSTgzMChkZXZfcHJpdikgJiYgIShkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFf Rk9SQ0UpKTsKPiDCoAo+IC0JcmVxID0gaTkxNV9nZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIE5V TEwpOwo+ICsJcmVxID0gYWxsb2NfcmVxdWVzdChvdmVybGF5KTsKPiDCoAlpZiAoSVNfRVJSKHJl cSkpCj4gwqAJCXJldHVybiBQVFJfRVJSKHJlcSk7Cj4gwqAKPiBAQCAtMjY4LDcgKzI3NSw2IEBA IHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9jb250aW51ZShzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAq b3ZlcmxheSwKPiDCoAkJCQnCoMKgYm9vbCBsb2FkX3BvbHlwaGFzZV9maWx0ZXIpCj4gwqB7Cj4g wqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKPiAt CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5lW1JDU107 Cj4gwqAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4gwqAJc3RydWN0IGludGVs X3JpbmcgKnJpbmc7Cj4gwqAJdTMyIGZsaXBfYWRkciA9IG92ZXJsYXktPmZsaXBfYWRkcjsKPiBA QCAtMjg1LDcgKzI5MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9jb250aW51ZShzdHJ1 Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSwKPiDCoAlpZiAodG1wICYgKDEgPDwgMTcpKQo+IMKg CQlEUk1fREVCVUcoIm92ZXJsYXkgdW5kZXJydW4sIERPVlNUQTogJXhcbiIsIHRtcCk7Cj4gwqAK PiAtCXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBOVUxMKTsKPiArCXJlcSA9 IGFsbG9jX3JlcXVlc3Qob3ZlcmxheSk7Cj4gwqAJaWYgKElTX0VSUihyZXEpKQo+IMKgCQlyZXR1 cm4gUFRSX0VSUihyZXEpOwo+IMKgCj4gQEAgLTMzOCw3ICszNDQsNiBAQCBzdGF0aWMgdm9pZCBp bnRlbF9vdmVybGF5X29mZl90YWlsKHN0cnVjdCBpbnRlbF9vdmVybGF5ICpvdmVybGF5KQo+IMKg c3RhdGljIGludCBpbnRlbF9vdmVybGF5X29mZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zlcmxh eSkKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBvdmVybGF5 LT5pOTE1Owo+IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gJmRldl9wcml2LT5l bmdpbmVbUkNTXTsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTsKPiDCoAlz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPiDCoAl1MzIgZmxpcF9hZGRyID0gb3ZlcmxheS0+Zmxp cF9hZGRyOwo+IEBAIC0zNTIsNyArMzU3LDcgQEAgc3RhdGljIGludCBpbnRlbF9vdmVybGF5X29m ZihzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3ZlcmxheSkKPiDCoAnCoCogb2YgdGhlIGh3LiBEbyBp dCBpbiBib3RoIGNhc2VzICovCj4gwqAJZmxpcF9hZGRyIHw9IE9GQ19VUERBVEU7Cj4gwqAKPiAt CXJlcSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBOVUxMKTsKPiArCXJlcSA9IGFs bG9jX3JlcXVlc3Qob3ZlcmxheSk7Cj4gwqAJaWYgKElTX0VSUihyZXEpKQo+IMKgCQlyZXR1cm4g UFRSX0VSUihyZXEpOwo+IMKgCj4gQEAgLTQxMiw3ICs0MTcsNiBAQCBzdGF0aWMgaW50IGludGVs X292ZXJsYXlfcmVjb3Zlcl9mcm9tX2ludGVycnVwdChzdHJ1Y3QgaW50ZWxfb3ZlcmxheSAqb3Zl cmxheSkKPiDCoHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWQoc3RydWN0 IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gb3ZlcmxheS0+aTkxNTsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSA9ICZkZXZfcHJpdi0+ZW5naW5lW1JDU107Cj4gwqAJaW50IHJldDsKPiDCoAo+IMKg CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPiBAQCAt NDI4LDcgKzQzMiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfb3ZlcmxheV9yZWxlYXNlX29sZF92aWQo c3RydWN0IGludGVsX292ZXJsYXkgKm92ZXJsYXkpCj4gwqAJCXN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxOwo+IMKgCQlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKPiDCoAo+IC0JCXJl cSA9IGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MoZW5naW5lLCBOVUxMKTsKPiArCQlyZXEgPSBhbGxv Y19yZXF1ZXN0KG92ZXJsYXkpOwo+IMKgCQlpZiAoSVNfRVJSKHJlcSkpCj4gwqAJCQlyZXR1cm4g UFRSX0VSUihyZXEpOwo+IMKgCi0tIApKb29uYXMgTGFodGluZW4KT3BlbiBTb3VyY2UgVGVjaG5v bG9neSBDZW50ZXIKSW50ZWwgQ29ycG9yYXRpb24KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==