From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH] Revert "drm/i915/skl: New ddb allocation algorithm" Date: Wed, 14 Jun 2017 14:47:06 +0300 Message-ID: <1497440826.14142.2.camel@gmail.com> References: <1497376350-3400-1-git-send-email-rodrigo.vivi@intel.com> <20170613180705.GJ19328@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pg0-x241.google.com (mail-pg0-x241.google.com [IPv6:2607:f8b0:400e:c05::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 502B489D67 for ; Wed, 14 Jun 2017 11:47:13 +0000 (UTC) Received: by mail-pg0-x241.google.com with SMTP id v14so23389026pgn.1 for ; Wed, 14 Jun 2017 04:47:13 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi , Matt Roper Cc: intel-gfx , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyMDE3LTA2LTEzIGF0IDEyOjA2IC0wNzAwLCBSb2RyaWdvIFZpdmkgd3JvdGU6Cj4g T24gVHVlLCBKdW4gMTMsIDIwMTcgYXQgMTE6MDcgQU0sIE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5y b3BlckBpbnRlbC5jb20+IHdyb3RlOgo+ID4gT24gVHVlLCBKdW4gMTMsIDIwMTcgYXQgMTA6NTI6 MzBBTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdyb3RlOgo+ID4gPiBUaGlzIHJldmVydHMgY29tbWl0 IGJiOWQ4NWY2ZTlkZThmZWY1MjM2YzA3NjUzMGVhYjY3YTJmMjQzMWIuCj4gPiA+IAo+ID4gPiBO ZXcgZGRiIGFsbG9jYXRpb24gYWxnb3JpdGhtIGlzIGEgc2hvdyBzdG9wcGVyIG9uIG15IFNLTCBz eXN0ZW0uCj4gPiA+IAo+ID4gPiBCZXNpZGVzIG5vdCBiZSBhYmxlIHRvIGdldCBleHRlcm5hbCBE UCA0a0A2MCAodGhyb3VnaCBVU0IgdHlwZSBDKSwKPiA+ID4gSXQgZnVsbHkgaGFuZyBteSBzY3Jl ZW4gd2hlbiB1bnBsdWdnaW5nIHRoZSBVU0IgdHlwZSBDLgo+ID4gPiAKPiA+ID4gQ2M6IE1haGVz aCBLdW1hciA8bWFoZXNoMS5rdW1hckBpbnRlbC5jb20+Cj4gPiA+IENjOiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4gPiBDYzogTWF0dCBS b3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KPiA+ID4gU2lnbmVkLW9mZi1ieTogUm9k cmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ID4gCj4gPiBJcyB0aGVyZSBhIGJ1 Z3ppbGxhIGVudHJ5IHdpdGggZGV0YWlscy9sb2dzIGZyb20gdGhlIGZhaWx1cmUgd2UgY2FuCj4g PiByZWZlciB0bz8KPiAKPiBub3BlLCBzaW5jZSBJIGtub3cgaXQgd2FzIHdvcmtpbmcgZmV3IHdl ZWtzIGFnbyBhbmQgdGhlbiBzdG9wcGVkCj4gd29ya2luZyBJIHdlbnQgZGlyZWN0bHkKPiB0byBi aXNlY3Qgc28gSSBjb3VsZCBnZXQgbXkgc3lzdGVtIHVzYWJsZSBxdWlja2x5IGFnYWluLgo+IAo+ IEJ1dCB5ZXMsIEkgbmVlZCB0byBvcGVuIGEgcHJvcGVyIGJ1Z3ppbGxhIGFuZCBwcm92aWRlIGxv Z3MuCj4gU2hvdWxkIHdlIHJldmVydCBmaXJzdCBhbmQgZ3JhYiBsb2dzIGxhdHRlciBvciB3ZSBh cmUgZ29pbmcgdG8gdHJ5IHRvCj4gYW5hbHlzZSBsb2dzIGFuZCBmaXg/Cj4gCj4gQW55d2F5cyB0 aGlzIGlzIGEgYmlnIHNob3cgc3RvcHBlciBzbyBJIGJlbGlldmUgd2UgcmV2ZXJ0IGF0IGxlYXN0 Cj4gYmVmb3JlIG5leHQgcHVsbCByZXF1ZXN0LgoKVGhpcyBwYXRjaCBhbHNvIGNhdXNlcyBhcnRp ZmFjdHMgaW4gZHVhbCBzY3JlZW4gc2V0dXBzLiBBbGwgdGhlIHNjYW5saW5lcyBiZWxvdwp0aGUg bW91c2UgY3Vyc29yIGFyZSB3cm9uZywgc29tZXRpbWVzIGNvbnRhaW5pbmcgYSBzaGFkZSBvZiBn cmF5IGFuZCBvdGhlcnMKcmVwZWF0aW5nIHRoZSBpbWFnZSBhYm92ZS4gSSd2ZSBzZWVuIHRoaXMg aW4gQVBMIGFuZCBHTEsgdXNpbmcgRFNJK0hETUksCmVEUCtIRE1JIGFuZCBEU0krRFAuIEluIHRo ZSBEUCBjYXNlLCBob3dldmVyLCB0aGUgc2NyZWVuIGdvZXMgYmxhbmsgYW5kIHJlcG9ydHMKbGFj ayBvZiBzaWduYWwuCgpJJ3ZlIG5vdGljZWQgZmlmbyB1bmRlcnJ1biBtZXNzYWdlcy4gSSBjb21w YXJlZCB0aGUgZGRiIGFsbG9jYXRpb24gaW4gR0xLIHdpdGggYQp3b3JraW5nIGFuZCBub24td29y a2luZyBrZXJuZWwsIGJ1dCB0aGV5IHdlcmUgdGhlIHNhbWUuCgpBbmRlcgoKPiAKPiBXaGVuIHlv dSBzYXkgeW91IGNhbid0IGdldCBEUCA0a0A2MCwgYXJlIHlvdSBzZWVpbmcgbWVzc2FnZXMKPiA+ IGluIGRtZXNnIGFib3V0IHRoZSBzZXR1cCBiZWluZyBvdXRzaWRlIHN5c3RlbSB3YXRlcm1hcmsg bGltaXRhdGlvbnMgb3IKPiA+IGFyZSB5b3UganVzdCBnZXR0aW5nIGEgYmxhY2sgc2NyZWVuPwo+ IAo+IGp1c3QgZ2V0dGluZyBhIGJsYW5rIHNjcmVlbiBvbiBEUCB3aGVuIHBsdWdnaW5nIHVzYi1j IGFuZCBhIGxvY2tlZC11cAo+IHNjcmVlbiBvbiBlRFAgd2hlbiByZW1vdmluZyB1c2ItYy4KPiAK PiA+IAo+ID4gCj4gPiBNYXR0Cj4gPiAKPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5jIHwgMjU3ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAxNTkgZGVsZXRp b25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiA+ID4gaW5kZXggYWE5 ZDhjZS4uZGM0Mjc1ZCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gPiA+ IEBAIC00MTQwLDQxICs0MTQwLDEzIEBAIGludCBza2xfY2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0 ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiA+ID4gICAgICAgbWluaW11bVtQTEFO RV9DVVJTT1JdID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9uKG51bV9hY3RpdmUpOwo+ID4gPiAgfQo+ ID4gPiAKPiA+ID4gLXN0YXRpYyB2b2lkCj4gPiA+IC1za2xfZW5hYmxlX3BsYW5lX3dtX2xldmVs cyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IC0gICAgICAg ICAgICAgICAgICAgICAgICB1aW50MTZfdCBwbGFuZV9kZGIsCj4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICAgICB1aW50MTZfdCBtYXhfbGV2ZWwsCj4gPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSkKPiA+ID4gLXsKPiA+ID4gLSAgICAgaW50IGxl dmVsOwo+ID4gPiAtICAgICAvKgo+ID4gPiAtICAgICAgKiBOb3cgZW5hYmxlIGFsbCBsZXZlbHMg aW4gV00gc3RydWN0dXJlIHdoaWNoIGNhbiBiZSBlbmFibGVkCj4gPiA+IC0gICAgICAqIHVzaW5n IGN1cnJlbnQgRERCIGFsbG9jYXRpb24KPiA+ID4gLSAgICAgICovCj4gPiA+IC0gICAgIGZvciAo bGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsgbGV2ZWwgPj0gMDsgbGV2ZWwtLSkg ewo+ID4gPiAtICAgICAgICAgICAgIHN0cnVjdCBza2xfd21fbGV2ZWwgKmxldmVsX3dtID0gJndt LT53bVtsZXZlbF07Cj4gPiA+IC0KPiA+ID4gLSAgICAgICAgICAgICBpZiAobGV2ZWwgPiBtYXhf bGV2ZWwgfHwgbGV2ZWxfd20tPnBsYW5lX3Jlc19iID09IDAKPiA+ID4gLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfHwgbGV2ZWxfd20tPnBsYW5lX3Jlc19sID49IDMxCj4gPiA+ IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGxldmVsX3dtLT5wbGFuZV9y ZXNfYiA+PSBwbGFuZV9kZGIpIHsKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIGxldmVsX3dt LT5wbGFuZV9lbiA9IGZhbHNlOwo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgbGV2ZWxfd20t PnBsYW5lX3Jlc19iID0gMDsKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIGxldmVsX3dtLT5w bGFuZV9yZXNfbCA9IDA7Cj4gPiA+IC0gICAgICAgICAgICAgfSBlbHNlIHsKPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgIGxldmVsX3dtLT5wbGFuZV9lbiA9IHRydWU7Cj4gPiA+IC0gICAgICAg ICAgICAgfQo+ID4gPiAtICAgICB9Cj4gPiA+IC19Cj4gPiA+IC0KPiA+ID4gIHN0YXRpYyBpbnQK PiA+ID4gIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlLAo+ID4gPiAtICAgICAgICAgICAgICAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93 bSwKPiA+ID4gICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpk ZGIgLyogb3V0ICovKQo+ID4gPiAgewo+ID4gPiAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUgPSBjc3RhdGUtPmJhc2Uuc3RhdGU7Cj4gPiA+ICAgICAgIHN0cnVjdCBkcm1fY3J0 YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ID4gPiAgICAgICBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4gPiAtICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiA+ICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+ID4gICAgICAgZW51bSBwaXBlIHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+ID4gPiAgICAgICBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAq YWxsb2MgPSAmY3N0YXRlLT53bS5za2wuZGRiOwo+ID4gPiBAQCAtNDE4Nyw5ICs0MTU5LDYgQEAg aW50IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRl bF9jcnRjLAo+ID4gPiAgICAgICB1bnNpZ25lZCBwbGFuZV9kYXRhX3JhdGVbSTkxNV9NQVhfUExB TkVTXSA9IHt9Owo+ID4gPiAgICAgICB1bnNpZ25lZCBwbGFuZV95X2RhdGFfcmF0ZVtJOTE1X01B WF9QTEFORVNdID0ge307Cj4gPiA+ICAgICAgIHVpbnQxNl90IHRvdGFsX21pbl9ibG9ja3MgPSAw Owo+ID4gPiAtICAgICB1aW50MTZfdCB0b3RhbF9sZXZlbF9kZGI7Cj4gPiA+IC0gICAgIHVpbnQx Nl90IHBsYW5lX2Jsb2NrcyA9IDA7Cj4gPiA+IC0gICAgIGludCBtYXhfbGV2ZWwsIGxldmVsOwo+ ID4gPiAKPiA+ID4gICAgICAgLyogQ2xlYXIgdGhlIHBhcnRpdGlvbmluZyBmb3IgZGlzYWJsZWQg cGxhbmVzLiAqLwo+ID4gPiAgICAgICBtZW1zZXQoZGRiLT5wbGFuZVtwaXBlXSwgMCwgc2l6ZW9m KGRkYi0+cGxhbmVbcGlwZV0pKTsKPiA+ID4gQEAgLTQyMjgsNDggKzQxOTcsMTAgQEAgaW50IHNr bF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj LAo+ID4gPiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiAgICAgICB9Cj4gPiA+ IAo+ID4gPiAtICAgICBhbGxvY19zaXplIC09IG1pbmltdW1bUExBTkVfQ1VSU09SXTsKPiA+ID4g LSAgICAgZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLnN0YXJ0ID0gYWxsb2MtPmVuZCAt Cj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG1pbmltdW1bUExBTkVfQ1VSU09SXTsKPiA+ID4gKyAgICAgYWxsb2Nfc2l6ZSAtPSB0b3Rh bF9taW5fYmxvY2tzOwo+ID4gPiArICAgICBkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0u c3RhcnQgPSBhbGxvYy0+ZW5kIC0gbWluaW11bVtQTEFORV9DVVJTT1JdOwo+ID4gPiAgICAgICBk ZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0uZW5kID0gYWxsb2MtPmVuZDsKPiA+ID4gCj4g PiA+IC0gICAgIGZvciAobGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsgbGV2ZWwg Pj0gMDsgbGV2ZWwtLSkgewo+ID4gPiAtICAgICAgICAgICAgIHRvdGFsX2xldmVsX2RkYiA9IDA7 Cj4gPiA+IC0gICAgICAgICAgICAgZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRj LCBwbGFuZV9pZCkgewo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgLyoKPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAqIFRPRE86IFdlIHNob3VsZCBjYWxjdWxhdGUgd2F0ZXJtYXJrIHZh bHVlcyBmb3IgWS9VVgo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICogcGxhbmUgYm90aCBp biBjYXNlIG9mIE5WMTIgZm9ybWF0IGFuZCB1c2UgYm90aCB2YWx1ZXMKPiA+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAqIGZvciBkZGIgY2FsY3VsYXRpb24uIE5WMTIgaXMgZGlzYWJsZWQgYXMg b2Ygbm93LCBTbwo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICogdXNpbmcgb25seSBzaW5n bGUvVVYgcGxhbmUgdmFsdWUgaGVyZS4KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAqLwo+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNrbF9wbGFuZV93bSAqd20gPSAmcGlw ZV93bS0+cGxhbmVzW3BsYW5lX2lkXTsKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIHVpbnQx Nl90IHBsYW5lX3Jlc19iID0gd20tPndtW2xldmVsXS5wbGFuZV9yZXNfYjsKPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgIHVpbnQxNl90IG1pbiA9IG1pbmltdW1bcGxhbmVfaWRdICsgeV9taW5p bXVtW3BsYW5lX2lkXTsKPiA+ID4gLQo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgaWYgKHBs YW5lX2lkID09IFBMQU5FX0NVUlNPUikKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWU7Cj4gPiA+IC0KPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIHRvdGFsX2xl dmVsX2RkYiArPSBtYXgocGxhbmVfcmVzX2IsIG1pbik7Cj4gPiA+IC0gICAgICAgICAgICAgfQo+ ID4gPiAtCj4gPiA+IC0gICAgICAgICAgICAgLyoKPiA+ID4gLSAgICAgICAgICAgICAgKiBJZiBU aGlzIGxldmVsIGNhbiBzdWNjZXNzZnVsbHkgYmUgZW5hYmxlZCB3aXRoIHRoZQo+ID4gPiAtICAg ICAgICAgICAgICAqIHBpcGUncyBjdXJyZW50IEREQiBhbGxvY2F0aW9uLCB0aGVuIGFsbCBsb3dl ciBsZXZlbHMgYXJlCj4gPiA+IC0gICAgICAgICAgICAgICogZ3VhcmFudGVlZCB0byBzdWNjZWVk IGFzIHdlbGwuCj4gPiA+IC0gICAgICAgICAgICAgICovCj4gPiA+IC0gICAgICAgICAgICAgaWYg KHRvdGFsX2xldmVsX2RkYiA8PSBhbGxvY19zaXplKQo+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4gPiA+IC0gICAgIH0KPiA+ID4gLQo+ID4gPiAtICAgICBpZiAoKGxldmVsIDwg MCkgfHwgKHRvdGFsX21pbl9ibG9ja3MgPiBhbGxvY19zaXplKSkgewo+ID4gPiAtICAgICAgICAg ICAgIERSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gZXhjZWVk cyBzeXN0ZW0gRERCIGxpbWl0YXRpb25zIik7Cj4gPiA+IC0gICAgICAgICAgICAgRFJNX0RFQlVH X0tNUygibWluaW11bSByZXF1aXJlZCAlZC8lZFxuIiwgKGxldmVsIDwgMCkgPwo+ID4gPiAtICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9sZXZlbF9kZGIgOiB0b3RhbF9taW5fYmxv Y2tzLCBhbGxvY19zaXplKTsKPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+ ID4gLSAgICAgfQo+ID4gPiAtICAgICBtYXhfbGV2ZWwgPSBsZXZlbDsKPiA+ID4gLSAgICAgYWxs b2Nfc2l6ZSAtPSB0b3RhbF9sZXZlbF9kZGI7Cj4gPiA+IC0KPiA+ID4gICAgICAgLyoKPiA+ID4g ICAgICAgICogMi4gRGlzdHJpYnV0ZSB0aGUgcmVtYWluaW5nIHNwYWNlIGluIHByb3BvcnRpb24g dG8gdGhlIGFtb3VudCBvZgo+ID4gPiAgICAgICAgKiBkYXRhIGVhY2ggcGxhbmUgbmVlZHMgdG8g ZmV0Y2ggZnJvbSBtZW1vcnkuCj4gPiA+IEBAIC00Mjc5LDI0ICs0MjEwLDEzIEBAIGludCBza2xf Y2hlY2tfcGlwZV9tYXhfcGl4ZWxfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywK PiA+ID4gICAgICAgdG90YWxfZGF0YV9yYXRlID0gc2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRh X3JhdGUoY3N0YXRlLAo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBwbGFuZV9kYXRhX3JhdGUsCj4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lX3lfZGF0YV9y YXRlKTsKPiA+ID4gLSAgICAgLyoKPiA+ID4gLSAgICAgICogUExBTkVfQ1VSU09SIGRhdGEgcmF0 ZSBpcyBub3QgaW5jbHVkZWQgaW4gdG90YWxfZGF0YV9yYXRlLgo+ID4gPiAtICAgICAgKiBJZiBv bmx5IGN1cnNvciBwbGFuZSBpcyBlbmFibGVkIHdlIGhhdmUgdG8gZW5hYmxlIGl0cyBXTSBsZXZl bHMKPiA+ID4gLSAgICAgICogZXhwbGljaXRseSBiZWZvcmUgcmV0dXJuaW5nLiBDdXJzb3IgaGFz IGZpeGVkIGRkYiBhbGxvY2F0aW9uLAo+ID4gPiAtICAgICAgKiBTbyBpdCdzIG9rIHRvIGFsd2F5 cyBjaGVjayBjdXJzb3IgV00gZW5hYmxpbmcgYmVmb3JlIHJldHVybi4KPiA+ID4gLSAgICAgICov Cj4gPiA+IC0gICAgIHBsYW5lX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLT5wbGFu ZVtwaXBlXVtQTEFORV9DVVJTT1JdKTsKPiA+ID4gLSAgICAgc2tsX2VuYWJsZV9wbGFuZV93bV9s ZXZlbHMoZGV2X3ByaXYsIHBsYW5lX2Jsb2NrcywgbWF4X2xldmVsLAo+ID4gPiAtICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmcGlwZV93bS0+cGxhbmVzW1BMQU5FX0NVUlNPUl0pOwo+ ID4gPiAgICAgICBpZiAodG90YWxfZGF0YV9yYXRlID09IDApCj4gPiA+ICAgICAgICAgICAgICAg cmV0dXJuIDA7Cj4gPiA+IAo+ID4gPiAgICAgICBzdGFydCA9IGFsbG9jLT5zdGFydDsKPiA+ID4g ICAgICAgZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+ ID4gPiAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBkYXRhX3JhdGUsIHlfZGF0YV9yYXRlOwo+ ID4gPiAtICAgICAgICAgICAgIHVpbnQxNl90IHBsYW5lX2Jsb2NrcyA9IDAsIHlfcGxhbmVfYmxv Y2tzID0gMDsKPiA+ID4gLSAgICAgICAgICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9ICZw aXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOwo+ID4gPiAtICAgICAgICAgICAgIHVpbnQxNl90IHBs YW5lX3Jlc19iID0gd20tPndtW21heF9sZXZlbF0ucGxhbmVfcmVzX2I7Cj4gPiA+ICsgICAgICAg ICAgICAgdWludDE2X3QgcGxhbmVfYmxvY2tzLCB5X3BsYW5lX2Jsb2NrcyA9IDA7Cj4gPiA+IAo+ ID4gPiAgICAgICAgICAgICAgIGlmIChwbGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpCj4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gQEAgLTQzMDgsMzYgKzQyMjgsMzMg QEAgaW50IHNrbF9jaGVja19waXBlX21heF9waXhlbF9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjLAo+ID4gPiAgICAgICAgICAgICAgICAqIHByb21vdGUgdGhlIGV4cHJlc3Npb24g dG8gNjQgYml0cyB0byBhdm9pZCBvdmVyZmxvd2luZywgdGhlCj4gPiA+ICAgICAgICAgICAgICAg ICogcmVzdWx0IGlzIDwgYXZhaWxhYmxlIGFzIGRhdGFfcmF0ZSAvIHRvdGFsX2RhdGFfcmF0ZSA8 IDEKPiA+ID4gICAgICAgICAgICAgICAgKi8KPiA+ID4gKyAgICAgICAgICAgICBwbGFuZV9ibG9j a3MgPSBtaW5pbXVtW3BsYW5lX2lkXTsKPiA+ID4gKyAgICAgICAgICAgICBwbGFuZV9ibG9ja3Mg Kz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqIGRhdGFfcmF0ZSwKPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9kYXRhX3JhdGUpOwo+ID4gPiAK PiA+ID4gICAgICAgICAgICAgICAvKiBMZWF2ZSBkaXNhYmxlZCBwbGFuZXMgYXQgKDAsMCkgKi8K PiA+ID4gICAgICAgICAgICAgICBpZiAoZGF0YV9yYXRlKSB7Cj4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICBwbGFuZV9ibG9ja3MgPSBtYXgobWluaW11bVtwbGFuZV9pZF0sIHBsYW5lX3Jlc19i KTsKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIHBsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1 aW50NjRfdClhbGxvY19zaXplICoKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhX3JhdGUsIHRvdGFsX2RhdGFfcmF0ZSk7Cj4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICBkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXS5zdGFydCA9IHN0YXJ0Owo+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0uZW5kID0gc3Rh cnQgKyBwbGFuZV9ibG9ja3M7Cj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICBzdGFydCArPSBw bGFuZV9ibG9ja3M7Cj4gPiA+ICAgICAgICAgICAgICAgfQo+ID4gPiAKPiA+ID4gKyAgICAgICAg ICAgICBzdGFydCArPSBwbGFuZV9ibG9ja3M7Cj4gPiA+ICsKPiA+ID4gICAgICAgICAgICAgICAv Kgo+ID4gPiAgICAgICAgICAgICAgICAqIGFsbG9jYXRpb24gZm9yIHlfcGxhbmUgcGFydCBvZiBw bGFuYXIgZm9ybWF0Ogo+ID4gPiAtICAgICAgICAgICAgICAqIFRPRE86IE9uY2Ugd2Ugc3RhcnQg Y2FsY3VsYXRpbmcgd2F0ZXJtYXJrIHZhbHVlcyBmb3IgWS9VVgo+ID4gPiAtICAgICAgICAgICAg ICAqIHBsYW5lIGJvdGggY29uc2lkZXIgaXQgZm9yIGluaXRpYWwgYWxsb3dlZCB3bSBibG9ja3Mu Cj4gPiA+ICAgICAgICAgICAgICAgICovCj4gPiA+ICAgICAgICAgICAgICAgeV9kYXRhX3JhdGUg PSBwbGFuZV95X2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gPiA+IAo+ID4gPiArICAgICAgICAgICAg IHlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW3BsYW5lX2lkXTsKPiA+ID4gKyAgICAgICAgICAg ICB5X3BsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogeV9kYXRh X3JhdGUsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxf ZGF0YV9yYXRlKTsKPiA+ID4gKwo+ID4gPiAgICAgICAgICAgICAgIGlmICh5X2RhdGFfcmF0ZSkg ewo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgeV9wbGFuZV9ibG9ja3MgPSB5X21pbmltdW1b cGxhbmVfaWRdOwo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgeV9wbGFuZV9ibG9ja3MgKz0g ZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqCj4gPiA+IC0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeV9kYXRhX3JhdGUsIHRvdGFsX2RhdGFfcmF0ZSk7Cj4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICBkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLnN0YXJ0ID0g c3RhcnQ7Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBkZGItPnlfcGxhbmVbcGlwZV1bcGxh bmVfaWRdLmVuZCA9IHN0YXJ0ICsgeV9wbGFuZV9ibG9ja3M7Cj4gPiA+IC0gICAgICAgICAgICAg ICAgICAgICBzdGFydCArPSB5X3BsYW5lX2Jsb2NrczsKPiA+ID4gICAgICAgICAgICAgICB9Cj4g PiA+IC0gICAgICAgICAgICAgc2tsX2VuYWJsZV9wbGFuZV93bV9sZXZlbHMoZGV2X3ByaXYsCj4g PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhbmVfYmxvY2tz LAo+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9sZXZl bCwKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3bSk7Cj4g PiA+ICsKPiA+ID4gKyAgICAgICAgICAgICBzdGFydCArPSB5X3BsYW5lX2Jsb2NrczsKPiA+ID4g ICAgICAgfQo+ID4gPiAKPiA+ID4gICAgICAgcmV0dXJuIDA7Cj4gPiA+IEBAIC00NDI3LDkgKzQz NDQsMTEgQEAgc3RhdGljIHVpbnRfZml4ZWRfMTZfMTZfdCBza2xfd21fbWV0aG9kMih1aW50MzJf dCBwaXhlbF9yYXRlLAo+ID4gPiAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25z dCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiA+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqaW50ZWxfcHN0YXRlLAo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 MTZfdCBkZGJfYWxsb2NhdGlvbiwKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IGxldmVsLAo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MTZfdCAq b3V0X2Jsb2NrcywgLyogb3V0ICovCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpbnQ4X3QgKm91dF9saW5lcyAvKiBvdXQgKi8pCj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVpbnQ4X3QgKm91dF9saW5lcywgLyogb3V0ICovCj4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgKmVuYWJsZWQgLyogb3V0ICovKQo+ID4gPiAgewo+ID4g PiAgICAgICBzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUoaW50ZWxf cHN0YXRlLT5iYXNlLnBsYW5lKTsKPiA+ID4gICAgICAgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqcHN0YXRlID0gJmludGVsX3BzdGF0ZS0+YmFzZTsKPiA+ID4gQEAgLTQ0NTIsOCArNDM3 MSwxMCBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gICAgICAgYm9vbCB5X3RpbGVkLCB4X3RpbGVk Owo+ID4gPiAKPiA+ID4gICAgICAgaWYgKGxhdGVuY3kgPT0gMCB8fAo+ID4gPiAtICAgICAgICAg IWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRlLCBpbnRlbF9wc3RhdGUpKQo+ID4gPiArICAg ICAgICAgIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRlLCBpbnRlbF9wc3RhdGUpKSB7Cj4g PiA+ICsgICAgICAgICAgICAgKmVuYWJsZWQgPSBmYWxzZTsKPiA+ID4gICAgICAgICAgICAgICBy ZXR1cm4gMDsKPiA+ID4gKyAgICAgfQo+ID4gPiAKPiA+ID4gICAgICAgeV90aWxlZCA9IGZiLT5t b2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+ID4gPiAgICAgICAgICAgICAg ICAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRDsKPiA+ID4gQEAgLTQ1 NDEsNiArNDQ2Miw5IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgICAgICAgICAgICAgIGlmICgo Y3BwICogY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90YWwgLyA1MTIgPCAxKSAm Jgo+ID4gPiAgICAgICAgICAgICAgICAgICAocGxhbmVfYnl0ZXNfcGVyX2xpbmUgLyA1MTIgPCAx KSkKPiA+ID4gICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkX3Jlc3VsdCA9IG1ldGhvZDI7 Cj4gPiA+ICsgICAgICAgICAgICAgZWxzZSBpZiAoKGRkYl9hbGxvY2F0aW9uICYmIGRkYl9hbGxv Y2F0aW9uIC8KPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIGZpeGVkXzE2XzE2X3RvX3UzMl9y b3VuZF91cChwbGFuZV9ibG9ja3NfcGVyX2xpbmUpKSA+PSAxKQo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgc2VsZWN0ZWRfcmVzdWx0ID0gbWluX2ZpeGVkXzE2XzE2KG1ldGhvZDEsIG1ldGhv ZDIpOwo+ID4gPiAgICAgICAgICAgICAgIGVsc2UgaWYgKGxhdGVuY3kgPj0gbGluZXRpbWVfdXMp Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZF9yZXN1bHQgPSBtaW5fZml4ZWRf MTZfMTYobWV0aG9kMSwgbWV0aG9kMik7Cj4gPiA+ICAgICAgICAgICAgICAgZWxzZQo+ID4gPiBA QCAtNDU2MCw0MiArNDQ4NCw2NCBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gICAgICAgICAgICAg ICB9Cj4gPiA+ICAgICAgIH0KPiA+ID4gCj4gPiA+IC0gICAgIGlmIChyZXNfbGluZXMgPj0gMzEg JiYgbGV2ZWwgPT0gMCkgewo+ID4gPiAtICAgICAgICAgICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lID0gcHN0YXRlLT5wbGFuZTsKPiA+ID4gKyAgICAgaWYgKHJlc19ibG9ja3MgPj0gZGRiX2Fs bG9jYXRpb24gfHwgcmVzX2xpbmVzID4gMzEpIHsKPiA+ID4gKyAgICAgICAgICAgICAqZW5hYmxl ZCA9IGZhbHNlOwo+ID4gPiAKPiA+ID4gLSAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJSZXF1 ZXN0ZWQgZGlzcGxheSBjb25maWd1cmF0aW9uIGV4Y2VlZHMgc3lzdGVtIHdhdGVybWFyayBsaW1p dGF0aW9uc1xuIik7Cj4gPiA+IC0gICAgICAgICAgICAgRFJNX0RFQlVHX0tNUygiW1BMQU5FOiVk OiVzXSBsaW5lcyByZXF1aXJlZCA9ICV1LzMxXG4iLAo+ID4gPiAtICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsIHJlc19saW5lcyk7Cj4gPiA+ IC0gICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICsgICAgICAgICAgICAgLyoKPiA+ ID4gKyAgICAgICAgICAgICAgKiBJZiB0aGVyZSBhcmUgbm8gdmFsaWQgbGV2ZWwgMCB3YXRlcm1h cmtzLCB0aGVuIHdlIGNhbid0Cj4gPiA+ICsgICAgICAgICAgICAgICogc3VwcG9ydCB0aGlzIGRp c3BsYXkgY29uZmlndXJhdGlvbi4KPiA+ID4gKyAgICAgICAgICAgICAgKi8KPiA+ID4gKyAgICAg ICAgICAgICBpZiAobGV2ZWwpIHsKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAw Owo+ID4gPiArICAgICAgICAgICAgIH0gZWxzZSB7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHBzdGF0ZS0+cGxhbmU7Cj4gPiA+ICsKPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5IGNv bmZpZ3VyYXRpb24gZXhjZWVkcyBzeXN0ZW0gd2F0ZXJtYXJrIGxpbWl0YXRpb25zXG4iKTsKPiA+ ID4gKyAgICAgICAgICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIltQTEFORTolZDolc10gYmxv Y2tzIHJlcXVpcmVkID0gJXUvJXUsIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIsCj4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYW5lLT5iYXNlLmlkLCBwbGFuZS0+ bmFtZSwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzX2Jsb2Nr cywgZGRiX2FsbG9jYXRpb24sIHJlc19saW5lcyk7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLUVJTlZBTDsKPiA+ID4gKyAgICAgICAgICAgICB9Cj4gPiA+ICAgICAgIH0KPiA+ ID4gCj4gPiA+ICAgICAgICpvdXRfYmxvY2tzID0gcmVzX2Jsb2NrczsKPiA+ID4gICAgICAgKm91 dF9saW5lcyA9IHJlc19saW5lczsKPiA+ID4gKyAgICAgKmVuYWJsZWQgPSB0cnVlOwo+ID4gPiAK PiA+ID4gICAgICAgcmV0dXJuIDA7Cj4gPiA+ICB9Cj4gPiA+IAo+ID4gPiAgc3RhdGljIGludAo+ ID4gPiAgc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiA+ID4gKyAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpkZGIsCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNzdGF0ZSwKPiA+ID4gICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKPiA+ID4gICAgICAgICAgICAgICAgICAgICBz dHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSkKPiA+ID4gIHsKPiA+ID4gKyAgICAgc3RydWN0IGludGVs X2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKPiA+ ID4gKyAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBpbnRlbF9wc3RhdGUtPmJhc2UucGxh bmU7Cj4gPiA+ICsgICAgIHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZSk7Cj4gPiA+ICsgICAgIHVpbnQxNl90IGRkYl9ibG9ja3M7Cj4gPiA+ICsg ICAgIGVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+ID4gICAgICAgaW50IGxl dmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsKPiA+ID4gICAgICAg aW50IHJldDsKPiA+ID4gCj4gPiA+ICAgICAgIGlmIChXQVJOX09OKCFpbnRlbF9wc3RhdGUtPmJh c2UuZmIpKQo+ID4gPiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gPiAKPiA+ID4g KyAgICAgZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLT5wbGFuZVtwaXBlXVtp bnRlbF9wbGFuZS0+aWRdKTsKPiA+ID4gKwo+ID4gPiAgICAgICBmb3IgKGxldmVsID0gMDsgbGV2 ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Cj4gPiA+ICAgICAgICAgICAgICAgc3RydWN0IHNr bF93bV9sZXZlbCAqcmVzdWx0ID0gJndtLT53bVtsZXZlbF07Cj4gPiA+IAo+ID4gPiAgICAgICAg ICAgICAgIHJldCA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRldl9wcml2LAo+ID4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNzdGF0ZSwKPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbF9wc3RhdGUsCj4gPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGRiX2Jsb2NrcywKPiA+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbCwKPiA+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0LT5wbGFuZV9yZXNfYiwK PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVzdWx0LT5w bGFuZV9yZXNfbCk7Cj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJnJlc3VsdC0+cGxhbmVfcmVzX2wsCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJnJlc3VsdC0+cGxhbmVfZW4pOwo+ID4gPiAgICAgICAgICAgICAgIGlm IChyZXQpCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiAgICAg ICB9Cj4gPiA+IEBAIC00NjYxLDcgKzQ2MDcsOCBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9waXBl X3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiA+IAo+ID4gPiAgICAgICAg ICAgICAgIHdtID0gJnBpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07Cj4gPiA+IAo+ID4gPiAtICAg ICAgICAgICAgIHJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVscyhkZXZfcHJpdiwgY3N0YXRlLCBp bnRlbF9wc3RhdGUsIHdtKTsKPiA+ID4gKyAgICAgICAgICAgICByZXQgPSBza2xfY29tcHV0ZV93 bV9sZXZlbHMoZGV2X3ByaXYsIGRkYiwgY3N0YXRlLAo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnRlbF9wc3RhdGUsIHdtKTsKPiA+ID4gICAgICAgICAg ICAgICBpZiAocmV0KQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ ID4gICAgICAgICAgICAgICBza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKGNzdGF0ZSwgJndtLT50 cmFuc193bSk7Cj4gPiA+IEBAIC00Nzc0LDQ1ICs0NzIxLDYgQEAgYm9vbCBza2xfZGRiX2FsbG9j YXRpb25fb3ZlcmxhcHMoY29uc3Qgc3RydWN0IHNrbF9kZGJfZW50cnkgKiplbnRyaWVzLAo+ID4g PiAgICAgICByZXR1cm4gZmFsc2U7Cj4gPiA+ICB9Cj4gPiA+IAo+ID4gPiAtc3RhdGljIGludAo+ ID4gPiAtc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNr bF9waXBlX3dtICpvbGRfcGlwZV93bSwKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20pCj4gPiA+IC17Cj4gPiA+IC0gICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKPiA+ID4g LSAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4gPiA+IC0gICAgIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ID4gPiAtICAgICBzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiA+IC0g ICAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ ID4gLSAgICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRl bF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+ID4gPiAtICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0 aW9uICpuZXdfZGRiID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKPiA+ID4gLSAgICAg c3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqY3VyX2RkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3 LmRkYjsKPiA+ID4gLSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4g PiA+IC0gICAgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4gPiAtICAgICBlbnVtIHBpcGUg cGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPiA+IC0KPiA+ID4gLSAgICAgV0FSTl9PTighZHJt X2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0YykpOwo+ID4gPiAtCj4g PiA+IC0gICAgIGRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNzdGF0ZS0+YmFz ZS5wbGFuZV9tYXNrKSB7Cj4gPiA+IC0gICAgICAgICAgICAgZW51bSBwbGFuZV9pZCBwbGFuZV9p ZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKS0+aWQ7Cj4gPiA+IC0gICAgICAgICAgICAgY29uc3Qg c3RydWN0IHNrbF9wbGFuZV93bSAqd20gPSAmcGlwZV93bS0+cGxhbmVzW3BsYW5lX2lkXTsKPiA+ ID4gLSAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpvbGRfd20gPSAmb2xk X3BpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07Cj4gPiA+IC0KPiA+ID4gLSAgICAgICAgICAgICBp ZiAoKHNrbF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwK PiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X2RkYi0+cGxh bmVbcGlwZV1bcGxhbmVfaWRdKSAmJgo+ID4gPiAtICAgICAgICAgICAgICAgICBza2xfZGRiX2Vu dHJ5X2VxdWFsKCZjdXJfZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSwKPiA+ID4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X2RkYi0+eV9wbGFuZVtwaXBlXVtw bGFuZV9pZF0pKSAmJgo+ID4gPiAtICAgICAgICAgICAgICAgICAhbWVtY21wKHdtLCBvbGRfd20s IHNpemVvZihzdHJ1Y3Qgc2tsX3BsYW5lX3dtKSkpCj4gPiA+IC0gICAgICAgICAgICAgICAgICAg ICBjb250aW51ZTsKPiA+ID4gLQo+ID4gPiAtICAgICAgICAgICAgIHBsYW5lX3N0YXRlID0gZHJt X2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiA+ID4gLSAgICAgICAgICAg ICBpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkKPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBQVFJfRVJSKHBsYW5lX3N0YXRlKTsKPiA+ID4gLSAgICAgfQo+ID4gPiAtCj4gPiA+IC0g ICAgIHJldHVybiAwOwo+ID4gPiAtfQo+ID4gPiAtCj4gPiA+ICBzdGF0aWMgaW50IHNrbF91cGRh dGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiA+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bSAqb2xkX3BpcGVfd20s Cj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBp cGVfd20sIC8qIG91dCAqLwo+ID4gPiBAQCAtNDgyNiwxNyArNDczNCw2IEBAIHN0YXRpYyBpbnQg c2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ID4gPiAg ICAgICBpZiAocmV0KQo+ID4gPiAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+IAo+ID4g PiAtICAgICByZXQgPSBza2xfYWxsb2NhdGVfcGlwZV9kZGIoaW50ZWxfY3N0YXRlLCBwaXBlX3dt LCBkZGIpOwo+ID4gPiAtICAgICBpZiAocmV0KQo+ID4gPiAtICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4gPiA+IC0gICAgIC8qCj4gPiA+IC0gICAgICAqIFRPRE86IFBsYW5lcyBhcmUgaW5jbHVk ZWQgaW4gc3RhdGUgdG8gYXJtIFdNIHJlZ2lzdGVycy4KPiA+ID4gLSAgICAgICogU2NvcGUgdG8g b3B0aW1pemUgZnVydGhlciwgYnkganVzdCByZXdyaXRpbmcgcGxhbmUgc3VyZiByZWdpc3Rlci4K PiA+ID4gLSAgICAgICovCj4gPiA+IC0gICAgIHJldCA9IHNrbF9kZGJfYWRkX2FmZmVjdGVkX3Bs YW5lcyhpbnRlbF9jc3RhdGUsIG9sZF9waXBlX3dtLCBwaXBlX3dtKTsKPiA+ID4gLSAgICAgaWYg KHJldCkKPiA+ID4gLSAgICAgICAgICAgICByZXR1cm4gcmV0Owo+ID4gPiAtCj4gPiA+ICAgICAg IGlmICghbWVtY21wKG9sZF9waXBlX3dtLCBwaXBlX3dtLCBzaXplb2YoKnBpcGVfd20pKSkKPiA+ ID4gICAgICAgICAgICAgICAqY2hhbmdlZCA9IGZhbHNlOwo+ID4gPiAgICAgICBlbHNlCj4gPiA+ IEBAIC00ODU5LDcgKzQ3NTYsNDEgQEAgc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20oc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4gPiA+ICB9Cj4gPiA+IAo+ID4gPiAgc3RhdGlj IGludAo+ID4gPiAtc2tsX2luY2x1ZGVfYWZmZWN0ZWRfY3J0Y3Moc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ID4gPiArc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gPiA+ICt7Cj4gPiA+ICsgICAgIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKPiA+ID4gKyAgICAgc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7Cj4gPiA+ICsgICAgIHN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ID4gPiArICAgICBzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiA+ICsgICAgIHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ID4gKyAgICAg c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNf c3RhdGUoc3RhdGUpOwo+ID4gPiArICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpuZXdf ZGRiID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKPiA+ID4gKyAgICAgc3RydWN0IHNr bF9kZGJfYWxsb2NhdGlvbiAqY3VyX2RkYiA9ICZkZXZfcHJpdi0+d20uc2tsX2h3LmRkYjsKPiA+ ID4gKyAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4gPiA+ICsgICAg IHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4gPiArICAgICBlbnVtIHBpcGUgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7Cj4gPiA+ICsKPiA+ID4gKyAgICAgV0FSTl9PTighZHJtX2F0b21pY19n ZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0YykpOwo+ID4gPiArCj4gPiA+ICsgICAg IGRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNzdGF0ZS0+YmFzZS5wbGFuZV9t YXNrKSB7Cj4gPiA+ICsgICAgICAgICAgICAgZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2lu dGVsX3BsYW5lKHBsYW5lKS0+aWQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICBpZiAoc2ts X2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdLAo+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfZGRiLT5wbGFuZVtwaXBl XVtwbGFuZV9pZF0pICYmCj4gPiA+ICsgICAgICAgICAgICAgICAgIHNrbF9kZGJfZW50cnlfZXF1 YWwoJmN1cl9kZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLAo+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lk XSkpCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gKwo+ID4gPiAr ICAgICAgICAgICAgIHBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3Rh dGUsIHBsYW5lKTsKPiA+ID4gKyAgICAgICAgICAgICBpZiAoSVNfRVJSKHBsYW5lX3N0YXRlKSkK PiA+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKHBsYW5lX3N0YXRlKTsK PiA+ID4gKyAgICAgfQo+ID4gPiArCj4gPiA+ICsgICAgIHJldHVybiAwOwo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtzdGF0aWMgaW50Cj4gPiA+ICtza2xfY29tcHV0ZV9kZGIoc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gPiAgewo+ID4gPiAgICAgICBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gc3RhdGUtPmRldjsKPiA+ID4gICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gPiBAQCAtNDkyMyw2ICs0ODU0LDE0IEBAIHN0 YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRl LAo+ID4gPiAgICAgICAgICAgICAgIGNzdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0 ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7Cj4gPiA+ICAgICAgICAgICAgICAgaWYgKElTX0VSUihjc3Rh dGUpKQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY3N0YXRlKTsK PiA+ID4gKwo+ID4gPiArICAgICAgICAgICAgIHJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihj c3RhdGUsIGRkYik7Cj4gPiA+ICsgICAgICAgICAgICAgaWYgKHJldCkKPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gPiA+ICsKPiA+ID4gKyAgICAgICAgICAgICByZXQg PSBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoY3N0YXRlKTsKPiA+ID4gKyAgICAgICAgICAg ICBpZiAocmV0KQo+ID4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiA+ID4g ICAgICAgfQo+ID4gPiAKPiA+ID4gICAgICAgcmV0dXJuIDA7Cj4gPiA+IEBAIC01MDEyLDcgKzQ5 NTEsNyBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNzdGF0ZSwKPiA+ID4gICAgICAgLyogQ2xlYXIgYWxsIGRpcnR5IGZsYWdzICovCj4gPiA+ ICAgICAgIHJlc3VsdHMtPmRpcnR5X3BpcGVzID0gMDsKPiA+ID4gCj4gPiA+IC0gICAgIHJldCA9 IHNrbF9pbmNsdWRlX2FmZmVjdGVkX2NydGNzKHN0YXRlKTsKPiA+ID4gKyAgICAgcmV0ID0gc2ts X2NvbXB1dGVfZGRiKHN0YXRlKTsKPiA+ID4gICAgICAgaWYgKHJldCkKPiA+ID4gICAgICAgICAg ICAgICByZXR1cm4gcmV0Owo+ID4gPiAKPiA+ID4gLS0KPiA+ID4gMS45LjEKPiA+ID4gCj4gPiAK PiA+IC0tCj4gPiBNYXR0IFJvcGVyCj4gPiBHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgo+ID4g SW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVsb3BtZW50Cj4gPiBJbnRlbCBDb3Jwb3JhdGlv bgo+ID4gKDkxNikgMzU2LTI3OTUKPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+IAo+IApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK