From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 10/11] drm/i915/skl: New ddb allocation algorithm Date: Fri, 12 May 2017 15:24:39 -0700 Message-ID: <20170512222439.GA4577@mdroper-desk.amr.corp.intel.com> References: <20170508114902.18965-1-mahesh1.kumar@intel.com> <20170508114902.18965-11-mahesh1.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id D605F6E024 for ; Fri, 12 May 2017 22:24:40 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170508114902.18965-11-mahesh1.kumar@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mahesh Kumar Cc: intel-gfx@lists.freedesktop.org, paulo.r.zanoni@intel.com, maarten.lankhorst@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMDgsIDIwMTcgYXQgMDU6MTk6MDFQTSArMDUzMCwgTWFoZXNoIEt1bWFyIHdy b3RlOgo+IFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBuZXcgRERCIGFsbG9jYXRpb24gYWxnb3JpdGht IGFzIHBlciBIVyB0ZWFtCj4gcmVjb21tZW5kYXRpb24uIFRoaXMgYWxnbyB0YWtlY2FyZSBvZiBz Y2VuYXJpbyB3aGVyZSB3ZSBhbGxvY2F0ZSBsZXNzIEREQgo+IGZvciB0aGUgcGxhbmVzIHdpdGgg bG93ZXIgcmVsYXRpdmUgcGl4ZWwgcmF0ZSwgYnV0IHRoZXkgcmVxdWlyZSBtb3JlIEREQgo+IHRv IHdvcmsuCj4gSXQgYWxzbyB0YWtlcyBjYXJlIG9mIGVuYWJsaW5nIHNhbWUgd2F0ZXJtYXJrIGxl dmVsIGZvciBlYWNoCj4gcGxhbmUgaW4gY3J0YywgZm9yIGVmZmljaWVudCBwb3dlciBzYXZpbmcu Cj4gCj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAgLSBSZWJhc2Ugb24gdG9wIG9mIFBhdWxvJ3MgcGF0 Y2ggc2VyaWVzCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiAgLSBGaXggdGhlIGZvciBsb29wIGNv bmRpdGlvbiB0byBlbmFibGUgV00KPiAKPiBDaGFuZ2VzIHNpbmNlIHYzOgo+ICAtIEZpeCBjcmFz aCBpbiBjdXJzb3IgaS1nLXQgcmVwb3J0ZWQgYnkgTWFhcnRlbgo+ICAtIFJlYmFzZSBhZnRlciBh ZGRyZXNzaW5nIFBhdWxvJ3MgY29tbWVudHMKPiAgLSBGZXcgb3RoZXIgVUxUIGZpeGVzCj4gQ2hh bmdlcyBzaW5jZSB2NDoKPiAgLSBSZWJhc2Ugb24gZHJtLXRpcAo+ICAtIEFkZGVkIHNlcGFyYXRl IGZ1bmN0aW9uIHRvIGVuYWJsZSBXTSBsZXZlbHMKPiBDaGFuZ2VzIHNpbmNlIHY0Ogo+ICAtIEZp eCBhIGNyYXNoIGlkZW50aWZpZWQgaW4gc2tsLTY3NzBIUSBzeXN0ZW0KPiAKPiBTaWduZWQtb2Zm LWJ5OiBNYWhlc2ggS3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIHwgMjUzICsrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tLS0tLS0KPiAgMSBmaWxlIGNoYW5nZWQsIDE1MiBpbnNlcnRpb25zKCspLCAx MDEgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggYmNmNWQy NTIzZTRhLi45MjYwMGNmNDJlMTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAt MzU3MywxMyArMzU3Myw0MSBAQCBza2xfZGRiX2NhbGNfbWluKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjc3RhdGUsIGludCBudW1fYWN0aXZlLAo+ICAJbWluaW11bVtQTEFORV9DVVJT T1JdID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9uKG51bV9hY3RpdmUpOwo+ICB9Cj4gIAo+ICtzdGF0 aWMgdm9pZAo+ICtza2xfZW5hYmxlX3BsYW5lX3dtX2xldmVscyhjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCSAgIHVpbnQxNl90IHBsYW5lX2RkYiwKPiArCQkJ ICAgdWludDE2X3QgbWF4X2xldmVsLAo+ICsJCQkgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSkK PiArewo+ICsJaW50IGxldmVsOwo+ICsJLyoKPiArCSAqIE5vdyBlbmFibGUgYWxsIGxldmVscyBp biBXTSBzdHJ1Y3R1cmUgd2hpY2ggY2FuIGJlIGVuYWJsZWQKPiArCSAqIHVzaW5nIGN1cnJlbnQg RERCIGFsbG9jYXRpb24KPiArCSAqLwo+ICsJZm9yIChsZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwo ZGV2X3ByaXYpOyBsZXZlbCA+PSAwOyBsZXZlbC0tKSB7Cj4gKwkJc3RydWN0IHNrbF93bV9sZXZl bCAqbGV2ZWxfd20gPSAmd20tPndtW2xldmVsXTsKPiArCj4gKwkJaWYgKGxldmVsID4gbWF4X2xl dmVsIHx8IGxldmVsX3dtLT5wbGFuZV9yZXNfYiA9PSAwCj4gKwkJCQkgICAgICB8fCBsZXZlbF93 bS0+cGxhbmVfcmVzX2wgPj0gMzEKPiArCQkJCSAgICAgIHx8IGxldmVsX3dtLT5wbGFuZV9yZXNf YiA+PSBwbGFuZV9kZGIpIHsKPiArCQkJbGV2ZWxfd20tPnBsYW5lX2VuID0gZmFsc2U7Cj4gKwkJ CWxldmVsX3dtLT5wbGFuZV9yZXNfYiA9IDA7Cj4gKwkJCWxldmVsX3dtLT5wbGFuZV9yZXNfbCA9 IDA7Cj4gKwkJfSBlbHNlIHsKPiArCQkJbGV2ZWxfd20tPnBsYW5lX2VuID0gdHJ1ZTsKPiArCQl9 Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQKPiAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gLQkJICAgICAgc3RydWN0IHNrbF9kZGJf YWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLykKPiArCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxv Y2F0aW9uICpkZGIgLyogb3V0ICovLAo+ICsJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlw ZV93bSkKPiAgewo+ICAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3N0YXRlLT5i YXNlLnN0YXRlOwo+ICAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7 Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJZW51bSBwaXBlIHBpcGUg PSBpbnRlbF9jcnRjLT5waXBlOwo+ICAJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmNz dGF0ZS0+d20uc2tsLmRkYjsKPiBAQCAtMzU5Miw2ICszNjIwLDggQEAgc2tsX2FsbG9jYXRlX3Bp cGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAl1bnNpZ25lZCBwbGFu ZV9kYXRhX3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ICAJdW5zaWduZWQgcGxhbmVfeV9k YXRhX3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ICAJdWludDE2X3QgdG90YWxfbWluX2Js b2NrcyA9IDA7Cj4gKwl1aW50MTZfdCB0b3RhbF9sZXZlbF9kZGI7Cj4gKwlpbnQgbWF4X2xldmVs LCBsZXZlbDsKPiAgCj4gIAkvKiBDbGVhciB0aGUgcGFydGl0aW9uaW5nIGZvciBkaXNhYmxlZCBw bGFuZXMuICovCj4gIAltZW1zZXQoZGRiLT5wbGFuZVtwaXBlXSwgMCwgc2l6ZW9mKGRkYi0+cGxh bmVbcGlwZV0pKTsKPiBAQCAtMzYzMCwxMCArMzY2MCw0MyBAQCBza2xfYWxsb2NhdGVfcGlwZV9k ZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKPiAgCQlyZXR1cm4tRUlOVkFMOwo+ ICAJfQo+ICAKPiAtCWFsbG9jX3NpemUgLT0gdG90YWxfbWluX2Jsb2NrczsKPiAtCWRkYi0+cGxh bmVbcGlwZV1bUExBTkVfQ1VSU09SXS5zdGFydCA9IGFsbG9jLT5lbmQgLSBtaW5pbXVtW1BMQU5F X0NVUlNPUl07Cj4gKwlhbGxvY19zaXplIC09IG1pbmltdW1bUExBTkVfQ1VSU09SXTsKPiArCWRk Yi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXS5zdGFydCA9IGFsbG9jLT5lbmQgLQo+ICsJCQkJ CQkJbWluaW11bVtQTEFORV9DVVJTT1JdOwo+ICAJZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJT T1JdLmVuZCA9IGFsbG9jLT5lbmQ7Cj4gIAo+ICsJZm9yIChsZXZlbCA9IGlsa193bV9tYXhfbGV2 ZWwoZGV2X3ByaXYpOyBsZXZlbCA+PSAwOyBsZXZlbC0tKSB7CgpXaHkgZG8gd2Ugd2FsayBiYWNr d2FyZHMgaGVyZSAobWF4IGxldmVsIGRvd24gdG8gMCk/ICBTaG91bGRuJ3Qgd2UgYmUKZ29pbmcg dGhlIG90aGVyIGRpcmVjdGlvbiBzbyB0aGF0IHdlIGFsbG9jYXRlIGJsb2NrcyBmb3IgV00wLCB0 aGVuIG1vdmUKb24gdG8gdGhlIGhpZ2hlciBsZXZlbHMgdW50aWwgd2UgZXZlbnR1YWxseSBmYWls PyAgTWF5YmUgSSdtIG1pc3NpbmcKc29tZXRoaW5nLi4uCgo+ICsJCXRvdGFsX2xldmVsX2RkYiA9 IDA7Cj4gKwkJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkg ewo+ICsJCQkvKgo+ICsJCQkgKiBUT0RPOiBXZSBzaG91bGQgY2FsY3VsYXRlIHdhdGVybWFyayB2 YWx1ZXMgZm9yIFkvVVYKPiArCQkJICogcGxhbmUgYm90aCBpbiBjYXNlIG9mIE5WMTIgZm9ybWF0 IGFuZCB1c2UgYm90aCB2YWx1ZXMKPiArCQkJICogZm9yIGRkYiBjYWxjdWxhdGlvbi4gTlYxMiBp cyBkaXNhYmxlZCBhcyBvZiBub3csIFNvCj4gKwkJCSAqIHVzaW5nIG9ubHkgc2luZ2xlL1VWIHBs YW5lIHZhbHVlIGhlcmUuCj4gKwkJCSAqLwo+ICsJCQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9 ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOwo+ICsJCQl1aW50MTZfdCBwbGFuZV9yZXNfYiA9 IHdtLT53bVtsZXZlbF0ucGxhbmVfcmVzX2I7Cj4gKwkJCXVpbnQxNl90IG1pbiA9IG1pbmltdW1b cGxhbmVfaWRdICsgeV9taW5pbXVtW3BsYW5lX2lkXTsKPiArCj4gKwkJCWlmIChwbGFuZV9pZCA9 PSBQTEFORV9DVVJTT1IpCj4gKwkJCQljb250aW51ZTsKPiArCj4gKwkJCXRvdGFsX2xldmVsX2Rk YiArPSBtYXgocGxhbmVfcmVzX2IsIG1pbik7Cj4gKwkJfQo+ICsKPiArCQlpZiAodG90YWxfbGV2 ZWxfZGRiIDw9IGFsbG9jX3NpemUpCj4gKwkJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWlmICgobGV2 ZWwgPCAwKSB8fCAodG90YWxfbWluX2Jsb2NrcyA+IGFsbG9jX3NpemUpKSB7CgpJZiB3ZSBoYWQg cGxlbnR5IG9mIEREQiBzcGFjZSBhbmQgY291bGQgZW5hYmxlIGV2ZXJ5IHNpbmdsZSBsZXZlbCwg dGhlCmJhY2t3YXJkcyB3YWxrIGFib3ZlIHdvdWxkIGxlYXZlIGxldmVsPS0xIHdoZW4gdGhlIGxv b3AgZW5kcy4gIFNvIHRoZW4Kd2UnZCBjb21wbGFpbiBoZXJlIHRoYXQgd2UnZCBleGNlZWRlZCBs aW1pdGF0aW9ucyBhbmQgZmFpbCB0aGUgY29tbWl0LAp3aGljaCBkb2Vzbid0IHNlZW0gcmlnaHQu CgoKTWF0dAoKPiArCQlEUk1fREVCVUdfS01TKCJSZXF1ZXN0ZWQgZGlzcGxheSBjb25maWd1cmF0 aW9uIGV4Y2VlZHMgc3lzdGVtIEREQiBsaW1pdGF0aW9ucyIpOwo+ICsJCURSTV9ERUJVR19LTVMo Im1pbmltdW0gcmVxdWlyZWQgJWQvJWRcbiIsIChsZXZlbCA8IDApID8KPiArCQkJCXRvdGFsX2xl dmVsX2RkYiA6IHRvdGFsX21pbl9ibG9ja3MsIGFsbG9jX3NpemUpOwo+ICsJCXJldHVybiAtRUlO VkFMOwo+ICsJfQo+ICsJbWF4X2xldmVsID0gbGV2ZWw7Cj4gKwlhbGxvY19zaXplIC09IHRvdGFs X2xldmVsX2RkYjsKPiArCj4gIAkvKgo+ICAJICogMi4gRGlzdHJpYnV0ZSB0aGUgcmVtYWluaW5n IHNwYWNlIGluIHByb3BvcnRpb24gdG8gdGhlIGFtb3VudCBvZgo+ICAJICogZGF0YSBlYWNoIHBs YW5lIG5lZWRzIHRvIGZldGNoIGZyb20gbWVtb3J5Lgo+IEBAIC0zNjQ5LDEwICszNzEyLDE3IEBA IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ ICAJc3RhcnQgPSBhbGxvYy0+c3RhcnQ7Cj4gIAlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGlu dGVsX2NydGMsIHBsYW5lX2lkKSB7Cj4gIAkJdW5zaWduZWQgaW50IGRhdGFfcmF0ZSwgeV9kYXRh X3JhdGU7Cj4gLQkJdWludDE2X3QgcGxhbmVfYmxvY2tzLCB5X3BsYW5lX2Jsb2NrcyA9IDA7Cj4g LQo+IC0JCWlmIChwbGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpCj4gKwkJdWludDE2X3QgcGxhbmVf YmxvY2tzID0gMCwgeV9wbGFuZV9ibG9ja3MgPSAwOwo+ICsJCXN0cnVjdCBza2xfcGxhbmVfd20g KndtID0gJnBpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07Cj4gKwkJdWludDE2X3QgcGxhbmVfcmVz X2IgPSB3bS0+d21bbWF4X2xldmVsXS5wbGFuZV9yZXNfYjsKPiArCj4gKwkJaWYgKHBsYW5lX2lk ID09IFBMQU5FX0NVUlNPUikgewo+ICsJCQlwbGFuZV9ibG9ja3MgPQo+ICsJCQkJc2tsX2RkYl9l bnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSk7Cj4gKwkJCXNrbF9lbmFibGVf cGxhbmVfd21fbGV2ZWxzKGRldl9wcml2LCBwbGFuZV9ibG9ja3MsCj4gKwkJCQkJCSAgIG1heF9s ZXZlbCwgd20pOwo+ICAJCQljb250aW51ZTsKPiArCQl9Cj4gIAo+ICAJCWRhdGFfcmF0ZSA9IHBs YW5lX2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gIAo+IEBAIC0zNjYxLDMzICszNzMxLDM2IEBAIHNr bF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAJ CSAqIHByb21vdGUgdGhlIGV4cHJlc3Npb24gdG8gNjQgYml0cyB0byBhdm9pZCBvdmVyZmxvd2lu ZywgdGhlCj4gIAkJICogcmVzdWx0IGlzIDwgYXZhaWxhYmxlIGFzIGRhdGFfcmF0ZSAvIHRvdGFs X2RhdGFfcmF0ZSA8IDEKPiAgCQkgKi8KPiAtCQlwbGFuZV9ibG9ja3MgPSBtaW5pbXVtW3BsYW5l X2lkXTsKPiAtCQlwbGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAq IGRhdGFfcmF0ZSwKPiAtCQkJCQl0b3RhbF9kYXRhX3JhdGUpOwo+ICAKPiAgCQkvKiBMZWF2ZSBk aXNhYmxlZCBwbGFuZXMgYXQgKDAsMCkgKi8KPiAgCQlpZiAoZGF0YV9yYXRlKSB7Cj4gKwkJCXBs YW5lX2Jsb2NrcyA9IG1heChtaW5pbXVtW3BsYW5lX2lkXSwgcGxhbmVfcmVzX2IpOwo+ICsJCQlw bGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqCj4gKwkJCQkJZGF0 YV9yYXRlLCB0b3RhbF9kYXRhX3JhdGUpOwo+ICAJCQlkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lk XS5zdGFydCA9IHN0YXJ0Owo+ICAJCQlkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXS5lbmQgPSBz dGFydCArIHBsYW5lX2Jsb2NrczsKPiArCQkJc3RhcnQgKz0gcGxhbmVfYmxvY2tzOwo+ICAJCX0K PiAgCj4gLQkJc3RhcnQgKz0gcGxhbmVfYmxvY2tzOwo+IC0KPiAgCQkvKgo+ICAJCSAqIGFsbG9j YXRpb24gZm9yIHlfcGxhbmUgcGFydCBvZiBwbGFuYXIgZm9ybWF0Ogo+ICsJCSAqIFRPRE86IE9u Y2Ugd2Ugc3RhcnQgY2FsY3VsYXRpbmcgd2F0ZXJtYXJrIHZhbHVlcyBmb3IgWS9VVgo+ICsJCSAq IHBsYW5lIGJvdGggY29uc2lkZXIgaXQgZm9yIGluaXRpYWwgYWxsb3dlZCB3bSBibG9ja3MuCj4g IAkJICovCj4gIAkJeV9kYXRhX3JhdGUgPSBwbGFuZV95X2RhdGFfcmF0ZVtwbGFuZV9pZF07Cj4g IAo+IC0JCXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW3BsYW5lX2lkXTsKPiAtCQl5X3BsYW5l X2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogeV9kYXRhX3JhdGUsCj4g LQkJCQkJdG90YWxfZGF0YV9yYXRlKTsKPiAtCj4gIAkJaWYgKHlfZGF0YV9yYXRlKSB7Cj4gKwkJ CXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW3BsYW5lX2lkXTsKPiArCQkJeV9wbGFuZV9ibG9j a3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqCj4gKwkJCQkJeV9kYXRhX3JhdGUs IHRvdGFsX2RhdGFfcmF0ZSk7Cj4gIAkJCWRkYi0+eV9wbGFuZVtwaXBlXVtwbGFuZV9pZF0uc3Rh cnQgPSBzdGFydDsKPiAgCQkJZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXS5lbmQgPSBzdGFy dCArIHlfcGxhbmVfYmxvY2tzOwo+ICsJCQlzdGFydCArPSB5X3BsYW5lX2Jsb2NrczsKPiAgCQl9 Cj4gLQo+IC0JCXN0YXJ0ICs9IHlfcGxhbmVfYmxvY2tzOwo+ICsJCXNrbF9lbmFibGVfcGxhbmVf d21fbGV2ZWxzKGRldl9wcml2LAo+ICsJCQkJCSAgIHBsYW5lX2Jsb2NrcywKPiArCQkJCQkgICBt YXhfbGV2ZWwsCj4gKwkJCQkJICAgd20pOwo+ICAJfQo+ICAKPiAgCXJldHVybiAwOwo+IEBAIC0z Nzc2LDExICszODQ5LDkgQEAgc3RhdGljIHVpbnQzMl90IHNrbF9hZGp1c3RlZF9wbGFuZV9waXhl bF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3QKPiAgc3RhdGljIGludCBz a2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAJCQkJY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGUsCj4gLQkJCQl1aW50MTZfdCBk ZGJfYWxsb2NhdGlvbiwKPiAgCQkJCWludCBsZXZlbCwKPiAgCQkJCXVpbnQxNl90ICpvdXRfYmxv Y2tzLCAvKiBvdXQgKi8KPiAtCQkJCXVpbnQ4X3QgKm91dF9saW5lcywgLyogb3V0ICovCj4gLQkJ CQlib29sICplbmFibGVkIC8qIG91dCAqLykKPiArCQkJCXVpbnQ4X3QgKm91dF9saW5lcyAvKiBv dXQgKi8pCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFu ZShpbnRlbF9wc3RhdGUtPmJhc2UucGxhbmUpOwo+ICAJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqcHN0YXRlID0gJmludGVsX3BzdGF0ZS0+YmFzZTsKPiBAQCAtMzgwMywxMCArMzg3NCw4 IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJYm9vbCB5X3RpbGVkLCB4X3RpbGVkOwo+ICAKPiAgCWlm IChsYXRlbmN5ID09IDAgfHwKPiAtCSAgICAhaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjc3RhdGUs IGludGVsX3BzdGF0ZSkpIHsKPiAtCQkqZW5hYmxlZCA9IGZhbHNlOwo+ICsJICAgICFpbnRlbF93 bV9wbGFuZV92aXNpYmxlKGNzdGF0ZSwgaW50ZWxfcHN0YXRlKSkKPiAgCQlyZXR1cm4gMDsKPiAt CX0KPiAgCj4gIAl5X3RpbGVkID0gZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJ TEVEIHx8Cj4gIAkJICBmYi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOwo+ IEBAIC0zODkyLDkgKzM5NjEsNiBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlpZiAoKGNwcCAqIGNz dGF0ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsIC8gNTEyIDwgMSkgJiYKPiAgCQkg ICAgKHBsYW5lX2J5dGVzX3Blcl9saW5lIC8gNTEyIDwgMSkpCj4gIAkJCXNlbGVjdGVkX3Jlc3Vs dCA9IG1ldGhvZDI7Cj4gLQkJZWxzZSBpZiAoKGRkYl9hbGxvY2F0aW9uICYmIGRkYl9hbGxvY2F0 aW9uIC8KPiAtCQkJZml4ZWRfMTZfMTZfdG9fdTMyX3JvdW5kX3VwKHBsYW5lX2Jsb2Nrc19wZXJf bGluZSkpID49IDEpCj4gLQkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZF8xNl8xNihtZXRo b2QxLCBtZXRob2QyKTsKPiAgCQllbHNlIGlmIChsYXRlbmN5ID49IGxpbmV0aW1lX3VzKQo+ICAJ CQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwo+ICAJCWVsc2UKPiBAQCAtMzkxNCw2NCArMzk4 MCw0MSBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQl9Cj4gIAl9Cj4gIAo+IC0JaWYgKHJlc19ibG9j a3MgPj0gZGRiX2FsbG9jYXRpb24gfHwgcmVzX2xpbmVzID4gMzEpIHsKPiAtCQkqZW5hYmxlZCA9 IGZhbHNlOwo+IC0KPiAtCQkvKgo+IC0JCSAqIElmIHRoZXJlIGFyZSBubyB2YWxpZCBsZXZlbCAw IHdhdGVybWFya3MsIHRoZW4gd2UgY2FuJ3QKPiAtCQkgKiBzdXBwb3J0IHRoaXMgZGlzcGxheSBj b25maWd1cmF0aW9uLgo+IC0JCSAqLwo+IC0JCWlmIChsZXZlbCkgewo+IC0JCQlyZXR1cm4gMDsK PiAtCQl9IGVsc2Ugewo+IC0JCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHBzdGF0ZS0+cGxh bmU7Cj4gKwlpZiAocmVzX2xpbmVzID49IDMxICYmIGxldmVsID09IDApIHsKPiArCQlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSA9IHBzdGF0ZS0+cGxhbmU7Cj4gIAo+IC0JCQlEUk1fREVCVUdfS01T KCJSZXF1ZXN0ZWQgZGlzcGxheSBjb25maWd1cmF0aW9uIGV4Y2VlZHMgc3lzdGVtIHdhdGVybWFy ayBsaW1pdGF0aW9uc1xuIik7Cj4gLQkJCURSTV9ERUJVR19LTVMoIltQTEFORTolZDolc10gYmxv Y2tzIHJlcXVpcmVkID0gJXUvJXUsIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIsCj4gLQkJCQkg ICAgICBwbGFuZS0+YmFzZS5pZCwgcGxhbmUtPm5hbWUsCj4gLQkJCQkgICAgICByZXNfYmxvY2tz LCBkZGJfYWxsb2NhdGlvbiwgcmVzX2xpbmVzKTsKPiAtCQkJcmV0dXJuIC1FSU5WQUw7Cj4gLQkJ fQo+ICsJCURSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb24gZXhj ZWVkcyBzeXN0ZW0gd2F0ZXJtYXJrIGxpbWl0YXRpb25zXG4iKTsKPiArCQlEUk1fREVCVUdfS01T KCJbUExBTkU6JWQ6JXNdIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFcbiIsCj4gKwkJCQlwbGFuZS0+ YmFzZS5pZCwgcGxhbmUtPm5hbWUsIHJlc19saW5lcyk7Cj4gIAl9Cj4gIAo+ICAJKm91dF9ibG9j a3MgPSByZXNfYmxvY2tzOwo+ICAJKm91dF9saW5lcyA9IHJlc19saW5lczsKPiAtCSplbmFibGVk ID0gdHJ1ZTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAgc3RhdGljIGludAo+ICBza2xf Y29tcHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gLQkJICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCj4gIAkJICAgICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAJCSAgICAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGUsCj4gIAkJICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dt ICp3bSkKPiAgewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKPiAtCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lID0gaW50 ZWxfcHN0YXRlLT5iYXNlLnBsYW5lOwo+IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFu ZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiAtCXVpbnQxNl90IGRkYl9ibG9ja3M7Cj4gLQll bnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gIAlpbnQgbGV2ZWwsIG1heF9sZXZl bCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICAJaW50IHJldDsKPiAgCj4gIAlpZiAo V0FSTl9PTighaW50ZWxfcHN0YXRlLT5iYXNlLmZiKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAg Cj4gLQlkZGJfYmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW2lu dGVsX3BsYW5lLT5pZF0pOwo+IC0KPiAgCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKPiAgCQlzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQgPSAmd20tPndt W2xldmVsXTsKPiAgCj4gIAkJcmV0ID0gc2tsX2NvbXB1dGVfcGxhbmVfd20oZGV2X3ByaXYsCj4g IAkJCQkJICAgY3N0YXRlLAo+ICAJCQkJCSAgIGludGVsX3BzdGF0ZSwKPiAtCQkJCQkgICBkZGJf YmxvY2tzLAo+ICAJCQkJCSAgIGxldmVsLAo+ICAJCQkJCSAgICZyZXN1bHQtPnBsYW5lX3Jlc19i LAo+IC0JCQkJCSAgICZyZXN1bHQtPnBsYW5lX3Jlc19sLAo+IC0JCQkJCSAgICZyZXN1bHQtPnBs YW5lX2VuKTsKPiArCQkJCQkgICAmcmVzdWx0LT5wbGFuZV9yZXNfbCk7Cj4gIAkJaWYgKHJldCkK PiAgCQkJcmV0dXJuIHJldDsKPiAgCX0KPiBAQCAtNDAzNyw4ICs0MDgwLDcgQEAgc3RhdGljIGlu dCBza2xfYnVpbGRfcGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAK PiAgCQl3bSA9ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOwo+ICAKPiAtCQlyZXQgPSBza2xf Y29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgZGRiLCBjc3RhdGUsCj4gLQkJCQkJICAgaW50ZWxf cHN0YXRlLCB3bSk7Cj4gKwkJcmV0ID0gc2tsX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGNz dGF0ZSwgaW50ZWxfcHN0YXRlLCB3bSk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0dXJuIHJldDsK PiAgCj4gQEAgLTQxNTIsNiArNDE5NCw0NSBAQCBib29sIHNrbF9kZGJfYWxsb2NhdGlvbl9vdmVy bGFwcyhjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqKmVudHJpZXMsCj4gIAlyZXR1cm4gZmFs c2U7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQKPiArc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVz KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCj4gKwkJCSAgICBjb25zdCBzdHJ1Y3Qg c2tsX3BpcGVfd20gKm9sZF9waXBlX3dtLAo+ICsJCQkgICAgY29uc3Qgc3RydWN0IHNrbF9waXBl X3dtICpwaXBlX3dtKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBj c3RhdGUtPmJhc2Uuc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRl djsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+ICsJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUo c3RhdGUpOwo+ICsJc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqbmV3X2RkYiA9ICZpbnRlbF9z dGF0ZS0+d21fcmVzdWx0cy5kZGI7Cj4gKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpjdXJf ZGRiID0gJmRldl9wcml2LT53bS5za2xfaHcuZGRiOwo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiArCWVudW0gcGlw ZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiArCj4gKwlXQVJOX09OKCFkcm1fYXRvbWljX2dl dF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKSk7Cj4gKwo+ICsJZHJtX2Zvcl9lYWNo X3BsYW5lX21hc2socGxhbmUsIGRldiwgY3N0YXRlLT5iYXNlLnBsYW5lX21hc2spIHsKPiArCQll bnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZDsKPiArCQlj b25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRd Owo+ICsJCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKm9sZF93bSA9ICZvbGRfcGlwZV93bS0+ cGxhbmVzW3BsYW5lX2lkXTsKPiArCj4gKwkJaWYgKChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJf ZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4gKwkJCQkJJm5ld19kZGItPnBsYW5lW3BpcGVd W3BsYW5lX2lkXSkgJiYKPiArCQkgICAgc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0+eV9w bGFuZVtwaXBlXVtwbGFuZV9pZF0sCj4gKwkJCQkJJm5ld19kZGItPnlfcGxhbmVbcGlwZV1bcGxh bmVfaWRdKSkgJiYKPiArCQkgICAgIW1lbWNtcCh3bSwgb2xkX3dtLCBzaXplb2Yoc3RydWN0IHNr bF9wbGFuZV93bSkpKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJcGxhbmVfc3RhdGUgPSBkcm1f YXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+ICsJCWlmIChJU19FUlIocGxh bmVfc3RhdGUpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihwbGFuZV9zdGF0ZSk7Cj4gKwl9Cj4gKwo+ ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dtKHN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlLAo+ICAJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2ts X3BpcGVfd20gKm9sZF9waXBlX3dtLAo+ICAJCQkgICAgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBp cGVfd20sIC8qIG91dCAqLwo+IEBAIC00MTY1LDYgKzQyNDYsMTggQEAgc3RhdGljIGludCBza2xf dXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCj4gIAlpZiAocmV0 KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ICsJcmV0ID0gc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGlu dGVsX2NzdGF0ZSwgZGRiLCBwaXBlX3dtKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsK PiArCS8qCj4gKwkgKiBUT0RPOiBEbyB3ZSBzdGlsbCBuZWVkIHRvIGFkZCBwbGFuZXMgaW4gc3Rh dGUsIEFzIFdNIHVwZGF0ZSBpcwo+ICsJICogbm90IHBhcnQgb2YgdXBkYXRlX3BsYW5lIGFueW1v cmUsIFNvIHdtIGZvciBwbGFuZXMgY2FuIGJlIHVwZGF0ZWQKPiArCSAqIGlycmVzcGVjdGl2ZSBv ZiB1cGRhZGVfcGxhbmUgY2FsbC4KPiArCSAqLwo+ICsJcmV0ID0gc2tsX2RkYl9hZGRfYWZmZWN0 ZWRfcGxhbmVzKGludGVsX2NzdGF0ZSwgb2xkX3BpcGVfd20sIHBpcGVfd20pOwo+ICsJaWYgKHJl dCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiAgCWlmICghbWVtY21wKG9sZF9waXBlX3dtLCBwaXBl X3dtLCBzaXplb2YoKnBpcGVfd20pKSkKPiAgCQkqY2hhbmdlZCA9IGZhbHNlOwo+ICAJZWxzZQo+ IEBAIC00MTg3LDQxICs0MjgwLDcgQEAgcGlwZXNfbW9kaWZpZWQoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50Cj4gLXNrbF9kZGJfYWRkX2FmZmVj dGVkX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQo+IC17Cj4gLQlzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBjc3RhdGUtPmJhc2Uuc3RhdGU7Cj4gLQlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwo+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxf c3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwo+IC0Jc3RydWN0IHNrbF9kZGJf YWxsb2NhdGlvbiAqbmV3X2RkYiA9ICZpbnRlbF9zdGF0ZS0+d21fcmVzdWx0cy5kZGI7Cj4gLQlz dHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpjdXJfZGRiID0gJmRldl9wcml2LT53bS5za2xfaHcu ZGRiOwo+IC0Jc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4gLQlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZTsKPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsK PiAtCj4gLQlXQVJOX09OKCFkcm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRl LCBjcnRjKSk7Cj4gLQo+IC0JZHJtX2Zvcl9lYWNoX3BsYW5lX21hc2socGxhbmUsIGRldiwgY3N0 YXRlLT5iYXNlLnBsYW5lX21hc2spIHsKPiAtCQllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9f aW50ZWxfcGxhbmUocGxhbmUpLT5pZDsKPiAtCj4gLQkJaWYgKHNrbF9kZGJfZW50cnlfZXF1YWwo JmN1cl9kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwKPiAtCQkJCQkmbmV3X2RkYi0+cGxhbmVb cGlwZV1bcGxhbmVfaWRdKSAmJgo+IC0JCSAgICBza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRi LT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSwKPiAtCQkJCQkmbmV3X2RkYi0+eV9wbGFuZVtwaXBl XVtwbGFuZV9pZF0pKQo+IC0JCQljb250aW51ZTsKPiAtCj4gLQkJcGxhbmVfc3RhdGUgPSBkcm1f YXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwo+IC0JCWlmIChJU19FUlIocGxh bmVfc3RhdGUpKQo+IC0JCQlyZXR1cm4gUFRSX0VSUihwbGFuZV9zdGF0ZSk7Cj4gLQl9Cj4gLQo+ IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQKPiAtc2tsX2NvbXB1dGVfZGRiKHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArc2tsX2luY2x1ZGVfYWZmZWN0ZWRfY3J0 YyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBzdGF0ZS0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+IEBAIC00Mjg1LDE0ICs0MzQ0LDYgQEAgc2tsX2NvbXB1dGVf ZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCQljc3RhdGUgPSBpbnRlbF9h dG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOwo+ICAJCWlmIChJU19FUlIo Y3N0YXRlKSkKPiAgCQkJcmV0dXJuIFBUUl9FUlIoY3N0YXRlKTsKPiAtCj4gLQkJcmV0ID0gc2ts X2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgZGRiKTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1 cm4gcmV0Owo+IC0KPiAtCQlyZXQgPSBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoY3N0YXRl KTsKPiAtCQlpZiAocmV0KQo+IC0JCQlyZXR1cm4gcmV0Owo+ICAJfQo+ICAKPiAgCXJldHVybiAw Owo+IEBAIC00MzczLDcgKzQ0MjQsNyBAQCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gIAkvKiBDbGVhciBhbGwgZGlydHkgZmxhZ3MgKi8KPiAgCXJlc3Vs dHMtPmRpcnR5X3BpcGVzID0gMDsKPiAgCj4gLQlyZXQgPSBza2xfY29tcHV0ZV9kZGIoc3RhdGUp Owo+ICsJcmV0ID0gc2tsX2luY2x1ZGVfYWZmZWN0ZWRfY3J0YyhzdGF0ZSk7Cj4gIAlpZiAocmV0 KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0tIAo+IDIuMTEuMAo+IAoKLS0gCk1hdHQgUm9wZXIK R3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKSW9URyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVs b3BtZW50CkludGVsIENvcnBvcmF0aW9uCig5MTYpIDM1Ni0yNzk1Cl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=