From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v8 1/2] drm/i915: Refactor intel_can_enable_sagv Date: Fri, 25 Oct 2019 13:24:14 +0300 Message-ID: <20191025102414.GF1208@intel.com> References: <20191025095352.3891-1-stanislav.lisovskiy@intel.com> <20191025095352.3891-2-stanislav.lisovskiy@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 308BB6E967 for ; Fri, 25 Oct 2019 10:24:18 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191025095352.3891-2-stanislav.lisovskiy@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stanislav Lisovskiy Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBPY3QgMjUsIDIwMTkgYXQgMTI6NTM6NTFQTSArMDMwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiBDdXJyZW50bHkgaW50ZWxfY2FuX2VuYWJsZV9zYWd2IGZ1bmN0aW9uIGNv bnRhaW5zCj4gYSBtaXggb2Ygd29ya2Fyb3VuZHMgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXMKPiBz b21lIG9mIHRoZW0gYXJlIG5vdCB2YWxpZCBmb3IgZ2VucyA+PSAxMSBhbHJlYWR5LAo+IHNvIGxl dHMgc3BsaXQgaXQgaW50byBzZXBhcmF0ZSBmdW5jdGlvbnMuCj4gCj4gdjI6Cj4gICAgIC0gUmV3 b3JrIHdhdGVybWFyayBjYWxjdWxhdGlvbiBhbGdvcml0aG0gdG8KPiAgICAgICBhdHRlbXB0IHRv IGNhbGN1bGF0ZSBMZXZlbCAwIHdhdGVybWFyawo+ICAgICAgIHdpdGggYWRkZWQgc2FndiBibG9j ayB0aW1lIGxhdGVuY3kgYW5kCj4gICAgICAgY2hlY2sgaWYgaXQgZml0cyBpbiBEQnVmIGluIG9y ZGVyIHRvCj4gICAgICAgZGV0ZXJtaW5lIGlmIFNBR1YgY2FuIGJlIGVuYWJsZWQgYWxyZWFkeQo+ ICAgICAgIGF0IHRoaXMgc3RhZ2UsIGp1c3QgYXMgQlNwZWMgNDkzMjUgc3RhdGVzLgo+ICAgICAg IGlmIHRoYXQgZmFpbHMgcm9sbGJhY2sgdG8gdXN1YWwgTGV2ZWwgMAo+ICAgICAgIGxhdGVuY3kg YW5kIGRpc2FibGUgU0FHVi4KPiAgICAgLSBSZW1vdmUgdW5uZWVkZWQgdGFicyhKYW1lcyBBdXNt dXMpCj4gCj4gdjM6IFJlYmFzZWQgdGhlIHBhdGNoCj4gCj4gdjQ6IC0gQWRkZWQgYmFjayBpbnRl cmxhY2VkIGNoZWNrIGZvciBHZW4xMiBhbmQKPiAgICAgICBhZGRlZCBzZXBhcmF0ZSBmdW5jdGlv biBmb3IgVEdMIFNBR1YgY2hlY2sKPiAgICAgICAodGhhbmtzIHRvIEphbWVzIEF1c211cyBmb3Ig c3BvdHRpbmcpCj4gICAgIC0gUmVtb3ZlZCB1bm5lZWRlZCBnZW4gY2hlY2sKPiAgICAgLSBFeHRy YWN0ZWQgR2VuMTIgU0FHViBkZWNpc2lvbiBtYWtpbmcgY29kZQo+ICAgICAgIHRvIGEgc2VwYXJh dGUgZnVuY3Rpb24gZnJvbSBza2xfY29tcHV0ZV93bQo+IAo+IFNpZ25lZC1vZmYtYnk6IFN0YW5p c2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5saXNvdnNraXlAaW50ZWwuY29tPgo+IENjOiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPgo+IENjOiBKYW1lcyBBdXNtdXMg PGphbWVzLmF1c211c0BpbnRlbC5jb20+Cj4gLS0tCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXlfdHlwZXMuaCAgICB8ICAgOCArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgICAgICAgICAgICAgICB8IDI1NCArKysrKysrKysrKysrKysrKy0KPiAgMiBmaWxl cyBjaGFuZ2VkLCAyNTQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IGlu ZGV4IDgzNTgxNTJlNDAzZS4uZjA5YzgwYzk2NDcwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBAQCAtNDkwLDYgKzQ5 MCwxMyBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsKPiAgCSAqLwo+ICAJdTggYWN0aXZl X3BpcGVfY2hhbmdlczsKPiAgCj4gKwkvKgo+ICsJICogRm9yIEdlbjEyIG9ubHkgYWZ0ZXIgY2Fs Y3VsYXRpbmcgd2F0ZXJtYXJrcyB3aXRoCj4gKwkgKiBhZGRpdGlvbmFsIGxhdGVuY3ksIHdlIGNh biBkZXRlcm1pbmUgaWYgU0FHViBjYW4gYmUgZW5hYmxlZAo+ICsJICogb3Igbm90IGZvciB0aGF0 IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4KPiArCSAqLwo+ICsJYm9vbCBnZW4xMl9jYW5fc2Fn djsKPiArCj4gIAl1OCBhY3RpdmVfcGlwZXM7Cj4gIAkvKiBtaW5pbXVtIGFjY2VwdGFibGUgY2Rj bGsgZm9yIGVhY2ggcGlwZSAqLwo+ICAJaW50IG1pbl9jZGNsa1tJOTE1X01BWF9QSVBFU107Cj4g QEAgLTY0Miw2ICs2NDksNyBAQCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtIHsKPiAgCXN0cnVjdCBza2xf d21fbGV2ZWwgd21bOF07Cj4gIAlzdHJ1Y3Qgc2tsX3dtX2xldmVsIHV2X3dtWzhdOwo+ICAJc3Ry dWN0IHNrbF93bV9sZXZlbCB0cmFuc193bTsKPiArCXN0cnVjdCBza2xfd21fbGV2ZWwgc2Fndl93 bV9sMDsKCnNhZ3Zfd20wIChvciBtYXliZSBldmVuIGp1c3Qgc2Fndl93bSkgd291bGQgYmUgYSBi aXQgbGVzcyB1Z2x5Cm5hbWUgSSB0aGluay4KCj4gIAlib29sIGlzX3BsYW5hcjsKPiAgfTsKPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggMzYyMjM0NDQ5MDg3Li5iNjFlYjZhYWE4 OWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMzc1MSw3ICszNzUxLDcgQEAg aW50ZWxfZGlzYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CXJldHVybiAwOwo+ICB9Cj4gIAo+IC1ib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArYm9vbCBza2xfY2FuX2VuYWJsZV9zYWd2KHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gc3RhdGUtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwo+IEBAIC0zODE3LDYgKzM4MTcsOTUgQEAgYm9vbCBpbnRl bF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAly ZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiArYm9vbCBpY2xfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gc3RhdGUtPmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gKwlpbnQgbGV2ZWwsIGxhdGVuY3k7 Cj4gKwlpbnQgaTsKPiArCWludCBwbGFuZV9pZDsKPiArCj4gKwlpZiAoIWludGVsX2hhc19zYWd2 KGRldl9wcml2KSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHRoZXJl IGFyZSBubyBhY3RpdmUgQ1JUQ3MsIG5vIGFkZGl0aW9uYWwgY2hlY2tzIG5lZWQgYmUgcGVyZm9y bWVkCj4gKwkgKi8KPiArCWlmIChod2VpZ2h0OChzdGF0ZS0+YWN0aXZlX3BpcGVzKSA9PSAwKQo+ ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLAo+ICsJCQkJCSAgICAgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiArCQl1bnNp Z25lZCBpbnQgZmxhZ3MgPSBjcnRjLT5iYXNlLnN0YXRlLT5hZGp1c3RlZF9tb2RlLmZsYWdzOwo+ ICsKPiArCQlpZiAoZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPiArCQkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkKPiArCQkJ Y29udGludWU7CgpEbyB3ZSB1c2UgYWN0aXZlIG9yIGVuYWJsZSBlbHNld2hlcmUgdG8gZGVjaWRl IHdoZXRoZXIgdG8gY29tcHV0ZSB3bXMKZm9yIGEgcGlwZT8gU2hvdWxkIGJlIGNvbnNpc3RlbnQg aGVyZSBzbyB3ZSBkb24ndCBnZXQgaW50byBzb21lIHdvbmt5CnN0YXRlIHdoZXJlIHdlIGRpZG4n dCBjb21wdXRlIG5vcm1hbCB3bXMgYnV0IGFyZSBjb21wdXRpbmcgdGhlIHNhZ3Ygd20uCgo+ICsK PiArCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMsIHBsYW5lX2lkKSB7Cj4gKwkJCXN0 cnVjdCBza2xfcGxhbmVfd20gKndtID0KPiArCQkJCSZuZXdfY3J0Y19zdGF0ZS0+d20uc2tsLm9w dGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiArCj4gKwkJCS8qIFNraXAgdGhpcyBwbGFuZSBpZiBp dCdzIG5vdCBlbmFibGVkICovCj4gKwkJCWlmICghd20tPndtWzBdLnBsYW5lX2VuKQo+ICsJCQkJ Y29udGludWU7Cj4gKwo+ICsJCQkvKiBGaW5kIHRoZSBoaWdoZXN0IGVuYWJsZWQgd20gbGV2ZWwg Zm9yIHRoaXMgcGxhbmUgKi8KPiArCQkJZm9yIChsZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2 X3ByaXYpOwo+ICsJCQkgICAgICF3bS0+d21bbGV2ZWxdLnBsYW5lX2VuOyAtLWxldmVsKSB7Cj4g KwkJCX0KPiArCj4gKwkJCWxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxd Owo+ICsKPiArCQkJLyoKPiArCQkJICogSWYgYW55IG9mIHRoZSBwbGFuZXMgb24gdGhpcyBwaXBl IGRvbid0IGVuYWJsZQo+ICsJCQkgKiB3bSBsZXZlbHMgdGhhdCBpbmN1ciBtZW1vcnkgbGF0ZW5j aWVzIGhpZ2hlciB0aGFuCj4gKwkJCSAqIHNhZ3ZfYmxvY2tfdGltZV91cyB3ZSBjYW4ndCBlbmFi bGUgU0FHVi4KPiArCQkJICovCj4gKwkJCWlmIChsYXRlbmN5IDwgZGV2X3ByaXYtPnNhZ3ZfYmxv Y2tfdGltZV91cykKPiArCQkJCXJldHVybiBmYWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0 dXJuIHRydWU7Cj4gK30KPiArCj4gK2Jvb2wgdGdsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gKwlpbnQgaTsK PiArCj4gKwlpZiAoIXN0YXRlLT5nZW4xMl9jYW5fc2FndikKPiArCQlyZXR1cm4gZmFsc2U7Cj4g Kwo+ICsJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsCj4gKwkJ CQkJICAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCXVuc2lnbmVkIGludCBmbGFncyA9IGNy dGMtPmJhc2Uuc3RhdGUtPmFkanVzdGVkX21vZGUuZmxhZ3M7Cj4gKwo+ICsJCWlmIChmbGFncyAm IERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwly ZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBzdGF0ZS0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gKwo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIp Cj4gKwkJcmV0dXJuIHRnbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpOwo+ICsJZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA9PSAxMSkKPiArCQlyZXR1cm4gaWNsX2Nhbl9lbmFibGVfc2Fndihz dGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHNrbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpOwoKV2h5IGRv IHdlIGhhdmUgdGhyZWUgc2VwYXJhdGUgY29kZSBwYXRocyBub3c/IEkgYmVsaWV2ZSB0aGVyZSBz aG91bGQgYmUKanVzdCB0d28uCgpBbHNvIGlmIHlvdSBnbyB0byB0aGUgdHJvdWJsZSBvZiBhZGRp bmcgZGV2X3ByaXYtPi4uY2FuX3NhZ3YganVzdCBtYWtlCml0IHdvcmsgZm9yIGFsbCBwbGF0Zm9y bXMuCgo+ICt9Cj4gKwo+ICBzdGF0aWMgdTE2IGludGVsX2dldF9kZGJfc2l6ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICAgICBjb25zdCB1NjQgdG90YWxfZGF0YV9y YXRlLAo+IEBAIC0zOTM2LDYgKzQwMjUsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3dtX3Bh cmFtcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBp bnQgY29sb3JfcGxhbmUpOwo+ICBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBpbnQgbGV2ZWws Cj4gKwkJCQkgdTMyIGxhdGVuY3ksCj4gIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMg KndwLAo+ICAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9wcmV2LAo+ICAJ CQkJIHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8pOwo+IEBAIC0zOTU4LDcg KzQwNDgsOSBAQCBza2xfY3Vyc29yX2FsbG9jYXRpb24oY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAlXQVJOX09OKHJldCk7Cj4gIAo+ICAJZm9yIChsZXZlbCA9 IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0JCXNrbF9jb21wdXRlX3BsYW5l X3dtKGNydGNfc3RhdGUsIGxldmVsLCAmd3AsICZ3bSwgJndtKTsKPiArCQl1MzIgbGF0ZW5jeSA9 IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4gKwkJc2tsX2NvbXB1dGVfcGxhbmVf d20oY3J0Y19zdGF0ZSwgbGV2ZWwsIGxhdGVuY3ksICZ3cCwgJndtLCAmd20pOwo+ICsKPiAgCQlp ZiAod20ubWluX2RkYl9hbGxvYyA9PSBVMTZfTUFYKQo+ICAJCQlicmVhazsKPiAgCj4gQEAgLTQz MTAsNiArNDQwMiw2OCBAQCBpY2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXJldHVybiB0b3RhbF9kYXRhX3JhdGU7 Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQKPiArdGdsX2NoZWNrX3BpcGVfZml0c19zYWd2X3dtKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCSAgICAgIHN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IGNydGNfc3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBza2xfZGRiX2VudHJ5 ICphbGxvYyA9ICZjcnRjX3N0YXRlLT53bS5za2wuZGRiOwo+ICsJdTE2IGFsbG9jX3NpemU7Cj4g Kwl1MTYgdG90YWxbSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ICsJdTY0IHRvdGFsX2RhdGFfcmF0 ZTsKPiArCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gKwlpbnQgbnVtX2FjdGl2ZTsKPiArCXU2 NCBwbGFuZV9kYXRhX3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ICsJdTMyIGJsb2NrczsK PiArCj4gKwkvKgo+ICsJICogTm8gbmVlZCB0byBjaGVjayBnZW4gaGVyZSwgd2UgY2FsbCB0aGlz IG9ubHkgZm9yIGdlbjEyCj4gKwkgKi8KPiArCXRvdGFsX2RhdGFfcmF0ZSA9Cj4gKwkJaWNsX2dl dF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3J0Y19zdGF0ZSwKPiArCQkJCQkJIHBsYW5lX2Rh dGFfcmF0ZSk7Cj4gKwo+ICsJc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXZf cHJpdiwgY3J0Y19zdGF0ZSwKPiArCQkJCQkgICB0b3RhbF9kYXRhX3JhdGUsCj4gKwkJCQkJICAg ZGRiLCBhbGxvYywgJm51bV9hY3RpdmUpOwo+ICsJYWxsb2Nfc2l6ZSA9IHNrbF9kZGJfZW50cnlf c2l6ZShhbGxvYyk7Cj4gKwlpZiAoYWxsb2Nfc2l6ZSA9PSAwKQo+ICsJCXJldHVybiAtRU5PU1BD Owo+ICsKPiArCS8qIEFsbG9jYXRlIGZpeGVkIG51bWJlciBvZiBibG9ja3MgZm9yIGN1cnNvci4g Ki8KPiArCXRvdGFsW1BMQU5FX0NVUlNPUl0gPSBza2xfY3Vyc29yX2FsbG9jYXRpb24oY3J0Y19z dGF0ZSwgbnVtX2FjdGl2ZSk7Cj4gKwlhbGxvY19zaXplIC09IHRvdGFsW1BMQU5FX0NVUlNPUl07 Cj4gKwljcnRjX3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3lbUExBTkVfQ1VSU09SXS5zdGFydCA9 Cj4gKwkJYWxsb2MtPmVuZCAtIHRvdGFsW1BMQU5FX0NVUlNPUl07Cj4gKwljcnRjX3N0YXRlLT53 bS5za2wucGxhbmVfZGRiX3lbUExBTkVfQ1VSU09SXS5lbmQgPSBhbGxvYy0+ZW5kOwo+ICsKPiAr CS8qCj4gKwkgKiBEbyBjaGVjayBpZiB3ZSBjYW4gZml0IEwwICsgc2Fndl9ibG9ja190aW1lIGFu ZAo+ICsJICogZGlzYWJsZSBTQUdWIGlmIHdlIGNhbid0Lgo+ICsJICovCj4gKwlibG9ja3MgPSAw Owo+ICsJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+ ICsJCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KPiArCQkJJmNydGNfc3RhdGUtPndt LnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07Cj4gKwo+ICsJCWlmIChwbGFuZV9pZCA9PSBQ TEFORV9DVVJTT1IpIHsKPiArCQkJaWYgKFdBUk5fT04od20tPnNhZ3Zfd21fbDAubWluX2RkYl9h bGxvYyA+Cj4gKwkJCQkgICAgdG90YWxbUExBTkVfQ1VSU09SXSkpIHsKPiArCQkJCWJsb2NrcyA9 IFUzMl9NQVg7Cj4gKwkJCQlicmVhazsKPiArCQkJfQo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4g Kwo+ICsJCWJsb2NrcyArPSB3bS0+c2Fndl93bV9sMC5taW5fZGRiX2FsbG9jOwo+ICsJCWlmIChi bG9ja3MgPiBhbGxvY19zaXplKQo+ICsJCQlyZXR1cm4gLUVOT1NQQzsKPiArCX0KPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50Cj4gIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICAgICBzdHJ1Y3Qgc2tsX2Rk Yl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKQo+IEBAIC00NzM5LDEyICs0ODkzLDEyIEBAIHN0 YXRpYyBib29sIHNrbF93bV9oYXNfbGluZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBpbnQgbGV2ZWwpCj4gIAo+ICBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBpbnQgbGV2 ZWwsCj4gKwkJCQkgdTMyIGxhdGVuY3ksCj4gIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJh bXMgKndwLAo+ICAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9wcmV2LAo+ ICAJCQkJIHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8pCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjLT5kZXYpOwo+IC0JdTMyIGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lb bGV2ZWxdOwo+ICAJdWludF9maXhlZF8xNl8xNl90IG1ldGhvZDEsIG1ldGhvZDI7Cj4gIAl1aW50 X2ZpeGVkXzE2XzE2X3Qgc2VsZWN0ZWRfcmVzdWx0Owo+ICAJdTMyIHJlc19ibG9ja3MsIHJlc19s aW5lcywgbWluX2RkYl9hbGxvYyA9IDA7Cj4gQEAgLTQ4NjUsMTkgKzUwMTksNDQgQEAgc3RhdGlj IHZvaWQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIHN0YXRpYyB2b2lkCj4gIHNrbF9jb21wdXRlX3dtX2xldmVscyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICAgICBjb25zdCBz dHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd21fcGFyYW1zLAo+IC0JCSAgICAgIHN0cnVjdCBza2xfd21f bGV2ZWwgKmxldmVscykKPiArCQkgICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpwbGFuZV93bSwK PiArCQkgICAgICBib29sIHl1dikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gIAlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICsJLyoKPiArCSAq IENoZWNrIHdoaWNoIGtpbmQgb2YgcGxhbmUgaXMgaXQgYW5kIGJhc2VkIG9uIHRoYXQgY2FsY3Vs YXRlCj4gKwkgKiBjb3JyZXNwb25kZW50IFdNIGxldmVscy4KPiArCSAqLwo+ICsJc3RydWN0IHNr bF93bV9sZXZlbCAqbGV2ZWxzID0geXV2ID8gcGxhbmVfd20tPnV2X3dtIDogcGxhbmVfd20tPndt Owo+ICAJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0X3ByZXYgPSAmbGV2ZWxzWzBdOwo+ICAK PiAgCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAgCQlz dHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQgPSAmbGV2ZWxzW2xldmVsXTsKPiArCQl1MzIgbGF0 ZW5jeSA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4gIAo+IC0JCXNrbF9jb21w dXRlX3BsYW5lX3dtKGNydGNfc3RhdGUsIGxldmVsLCB3bV9wYXJhbXMsCj4gLQkJCQkgICAgIHJl c3VsdF9wcmV2LCByZXN1bHQpOwo+ICsJCXNrbF9jb21wdXRlX3BsYW5lX3dtKGNydGNfc3RhdGUs IGxldmVsLCBsYXRlbmN5LAo+ICsJCQkJICAgICB3bV9wYXJhbXMsIHJlc3VsdF9wcmV2LCByZXN1 bHQpOwo+ICAKPiAgCQlyZXN1bHRfcHJldiA9IHJlc3VsdDsKPiArCQlpZiAobGV2ZWwgPT0gMCkg ewo+ICsJCQkvKgo+ICsJCQkgKiBGb3IgR2VuMTIgaWYgaXQgaXMgYW4gTDAgd2UgbmVlZCB0byBh bHNvCj4gKwkJCSAqIGNvbnNpZGVyIHNhZ3ZfYmxvY2tfdGltZSB3aGVuIGNhbGN1bGF0aW5nCj4g KwkJCSAqIEwwIHdhdGVybWFyayAtIHdlIHdpbGwgbmVlZCB0aGF0IHdoZW4gbWFraW5nCj4gKwkJ CSAqIGEgZGVjaXNpb24gd2hldGhlciBlbmFibGUgU0FHViBvciBub3QuCj4gKwkJCSAqIEZvciBv bGRlciBnZW5zIHdlIGFncmVlZCB0byBjb3B5IEwwIHZhbHVlIGZvcgo+ICsJCQkgKiBjb21wYXRp YmlsaXR5Lgo+ICsJCQkgKi8KPiArCQkJaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSkg ewo+ICsJCQkJbGF0ZW5jeSArPSBkZXZfcHJpdi0+c2Fndl9ibG9ja190aW1lX3VzOwo+ICsJCQkJ c2tsX2NvbXB1dGVfcGxhbmVfd20oY3J0Y19zdGF0ZSwgbGV2ZWwsIGxhdGVuY3ksCj4gKwkJCQkg ICAgIHdtX3BhcmFtcywgcmVzdWx0X3ByZXYsCj4gKwkJCQkgICAgJnBsYW5lX3dtLT5zYWd2X3dt X2wwKTsKPiArCQkJfSBlbHNlCj4gKwkJCQltZW1jcHkoJnBsYW5lX3dtLT5zYWd2X3dtX2wwLCAm bGV2ZWxzWzBdLAo+ICsJCQkJCXNpemVvZihzdHJ1Y3Qgc2tsX3dtX2xldmVsKSk7CgpQdXR0aW5n IHRoaXMgc3R1ZmYgaW5zaWRlIHRoZSBsb29wIHNlZW1zIGEgYml0IHNpbGx5LgoKPiArCQl9Cj4g IAl9Cj4gIH0KPiAgCj4gQEAgLTQ5NzEsNyArNTE1MCw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxk X3BsYW5lX3dtX3NpbmdsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlza2xfY29tcHV0ZV93bV9sZXZlbHMo Y3J0Y19zdGF0ZSwgJndtX3BhcmFtcywgd20tPndtKTsKPiArCXNrbF9jb21wdXRlX3dtX2xldmVs cyhjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bSwgZmFsc2UpOwo+ICAJc2tsX2NvbXB1dGVfdHJh bnNpdGlvbl93bShjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bSk7Cj4gIAo+ICAJcmV0dXJuIDA7 Cj4gQEAgLTQ5OTMsNyArNTE3Miw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3V2 KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKHJldCkKPiAgCQly ZXR1cm4gcmV0Owo+ICAKPiAtCXNrbF9jb21wdXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCAmd21f cGFyYW1zLCB3bS0+dXZfd20pOwo+ICsJc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNydGNfc3RhdGUs ICZ3bV9wYXJhbXMsIHdtLCB0cnVlKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC01NTQx LDkgKzU3MjAsNjIgQEAgc3RhdGljIGludCBza2xfd21fYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtz dGF0aWMgdm9pZCB0Z2xfY2hlY2tfYW5kX3NldF9zYWd2KHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmJhc2Uu ZGV2Owo+ICsJY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgPSAmc3RhdGUt PndtX3Jlc3VsdHMuZGRiOwo+ICsJaW50IHJldCwgaTsKPiArCj4gKwkvKgo+ICsJICogTGV0cyBh c3N1bWUgd2UgY2FuIHRvbGVyYXRlIFNBR1YgZm9yIG5vdywKPiArCSAqIHVudGlsIHdhdGVybWFy ayBjYWxjdWxhdGlvbnMgcHJvdmUgdGhlIG9wcG9zaXRlCj4gKwkgKiBpZiBhbnkgb2YgdGhlIHBp cGUgcGxhbmVzIGluIHRoZSBzdGF0ZSB3aWxsCj4gKwkgKiBmYWlsIHRoZSByZXF1aXJlbWVudHMg aXQgd2lsbCBiZSBhc3NpZ25lZCB0byBmYWxzZQo+ICsJICogaW4gc2tsX2NvbXB1dGVfZGRiLgo+ ICsJICovCj4gKwlzdGF0ZS0+Z2VuMTJfY2FuX3NhZ3YgPSB0cnVlOwo+ICsKPiArCWZvcl9lYWNo X29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwK PiArCQkJCQkgICAgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiArCQlyZXQgPSB0Z2xfY2hlY2tfcGlw ZV9maXRzX3NhZ3Zfd20obmV3X2NydGNfc3RhdGUsIGRkYik7Cj4gKwkJaWYgKHJldCkgewo+ICsJ CQlzdGF0ZS0+Z2VuMTJfY2FuX3NhZ3YgPSBmYWxzZTsKPiArCQkJYnJlYWs7Cj4gKwkJfQoKVGhp cyBpcyBub3QgZ29pbmcgdG8gd29yay4gV2UgbmVlZCB0aGUgaW5mcm9tYXRpb24gZnJvbSBfYWxs XyBwaXBlcywgbm90Cmp1c3QgdGhlIG9uZXMgaW4gdGhlIHN0YXRlLiBXZSBwcm9iYWJseSB3YW50 IHRvIG1ha2UgdGhhdCBjYW5fc2FndiB0aGluZwphIGJpdG1hc2sgb2YgcGlwZXMgc28gdGhhdCB3 ZSBkb24ndCBoYXZlIHRvIGhhdmUgYWxsIHBpcGVzIGluIHRoZSBzdGF0ZS4KCj4gKwl9Cj4gKwo+ ICsJaWYgKHN0YXRlLT5nZW4xMl9jYW5fc2Fndikgewo+ICsJCS8qCj4gKwkJICogSWYgd2UgZGV0 ZXJtaW5lZCB0aGF0IHdlIGNhbiBhY3R1YWxseSBlbmFibGUgU0FHViwgdGhlbgo+ICsJCSAqIGFj dHVhbGx5IHVzZSB0aG9zZSBsZXZlbHMgdGdsX2NoZWNrX3BpcGVfZml0c19zYWd2X3dtCj4gKwkJ ICogaGFzIGFscmVhZHkgdGFrZW4gY2FyZSBvZiBjaGVja2luZyBpZiBMMCArIHNhZ3YgYmxvY2sg dGltZQo+ICsJCSAqIGZpdHMgaW50byBkZGIuCj4gKwkJICovCj4gKwkJZm9yX2VhY2hfb2xkbmV3 X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+ICsJCQkJ CSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l Owo+ICsJCQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRj LCBwbGFuZSkgewo+ICsJCQkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAr CQkJCXN0cnVjdCBza2xfcGxhbmVfd20gKnBsYW5lX3dtID0gXAo+ICsJCQkJICAgICZuZXdfY3J0 Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiArCQkJCXN0cnVjdCBz a2xfd21fbGV2ZWwgKnNhZ3Zfd20wID0gJnBsYW5lX3dtLT5zYWd2X3dtX2wwOwo+ICsJCQkJc3Ry dWN0IHNrbF93bV9sZXZlbCAqbDBfd20wID0gJnBsYW5lX3dtLT53bVswXTsKPiArCj4gKwkJCQlt ZW1jcHkobDBfd20wLCBzYWd2X3dtMCwgc2l6ZW9mKHN0cnVjdCBza2xfd21fbGV2ZWwpKTsKPiAr CQkJfQo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiAgc3RhdGljIGludAo+ICBza2xfY29tcHV0ZV93 bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRldjsKPiArCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjOwo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+IEBAIC01NTUzLDYgKzU3ODUs OSBAQCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAg CS8qIENsZWFyIGFsbCBkaXJ0eSBmbGFncyAqLwo+ICAJcmVzdWx0cy0+ZGlydHlfcGlwZXMgPSAw Owo+ICAKPiArCS8qIElmIHdlIGV4aXQgYmVmb3JlIGNoZWNrIGlzIGRvbmUgKi8KPiArCXN0YXRl LT5nZW4xMl9jYW5fc2FndiA9IGZhbHNlOwo+ICsKPiAgCXJldCA9IHNrbF9kZGJfYWRkX2FmZmVj dGVkX3BpcGVzKHN0YXRlKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiBAQCAtNTU3 OSw2ICs1ODE0LDkgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4gIAkJCXJlc3VsdHMtPmRpcnR5X3BpcGVzIHw9IEJJVChjcnRjLT5waXBlKTsKPiAg CX0KPiAgCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKPiArCQl0Z2xfY2hlY2tf YW5kX3NldF9zYWd2KHN0YXRlKTsKPiArCj4gIAlyZXQgPSBza2xfY29tcHV0ZV9kZGIoc3RhdGUp Owo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+IC0tIAo+IDIuMTcuMQoKLS0gClZpbGxl IFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZng= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9C77CA9EA0 for ; Fri, 25 Oct 2019 10:24:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id B77B920578 for ; Fri, 25 Oct 2019 10:24:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B77B920578 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 241AE6E967; Fri, 25 Oct 2019 10:24:19 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 308BB6E967 for ; Fri, 25 Oct 2019 10:24:18 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Oct 2019 03:24:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,228,1569308400"; d="scan'208";a="204515689" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by FMSMGA003.fm.intel.com with SMTP; 25 Oct 2019 03:24:14 -0700 Received: by stinkbox (sSMTP sendmail emulation); Fri, 25 Oct 2019 13:24:14 +0300 Date: Fri, 25 Oct 2019 13:24:14 +0300 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= To: Stanislav Lisovskiy Message-ID: <20191025102414.GF1208@intel.com> References: <20191025095352.3891-1-stanislav.lisovskiy@intel.com> <20191025095352.3891-2-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191025095352.3891-2-stanislav.lisovskiy@intel.com> User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [Intel-gfx] [PATCH v8 1/2] drm/i915: Refactor intel_can_enable_sagv X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: intel-gfx@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191025102414.-Tq-h7a4IyDk1zytvZV9ZRwEQb39lFeTEi0Sq_3y3Ms@z> T24gRnJpLCBPY3QgMjUsIDIwMTkgYXQgMTI6NTM6NTFQTSArMDMwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiBDdXJyZW50bHkgaW50ZWxfY2FuX2VuYWJsZV9zYWd2IGZ1bmN0aW9uIGNv bnRhaW5zCj4gYSBtaXggb2Ygd29ya2Fyb3VuZHMgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXMKPiBz b21lIG9mIHRoZW0gYXJlIG5vdCB2YWxpZCBmb3IgZ2VucyA+PSAxMSBhbHJlYWR5LAo+IHNvIGxl dHMgc3BsaXQgaXQgaW50byBzZXBhcmF0ZSBmdW5jdGlvbnMuCj4gCj4gdjI6Cj4gICAgIC0gUmV3 b3JrIHdhdGVybWFyayBjYWxjdWxhdGlvbiBhbGdvcml0aG0gdG8KPiAgICAgICBhdHRlbXB0IHRv IGNhbGN1bGF0ZSBMZXZlbCAwIHdhdGVybWFyawo+ICAgICAgIHdpdGggYWRkZWQgc2FndiBibG9j ayB0aW1lIGxhdGVuY3kgYW5kCj4gICAgICAgY2hlY2sgaWYgaXQgZml0cyBpbiBEQnVmIGluIG9y ZGVyIHRvCj4gICAgICAgZGV0ZXJtaW5lIGlmIFNBR1YgY2FuIGJlIGVuYWJsZWQgYWxyZWFkeQo+ ICAgICAgIGF0IHRoaXMgc3RhZ2UsIGp1c3QgYXMgQlNwZWMgNDkzMjUgc3RhdGVzLgo+ICAgICAg IGlmIHRoYXQgZmFpbHMgcm9sbGJhY2sgdG8gdXN1YWwgTGV2ZWwgMAo+ICAgICAgIGxhdGVuY3kg YW5kIGRpc2FibGUgU0FHVi4KPiAgICAgLSBSZW1vdmUgdW5uZWVkZWQgdGFicyhKYW1lcyBBdXNt dXMpCj4gCj4gdjM6IFJlYmFzZWQgdGhlIHBhdGNoCj4gCj4gdjQ6IC0gQWRkZWQgYmFjayBpbnRl cmxhY2VkIGNoZWNrIGZvciBHZW4xMiBhbmQKPiAgICAgICBhZGRlZCBzZXBhcmF0ZSBmdW5jdGlv biBmb3IgVEdMIFNBR1YgY2hlY2sKPiAgICAgICAodGhhbmtzIHRvIEphbWVzIEF1c211cyBmb3Ig c3BvdHRpbmcpCj4gICAgIC0gUmVtb3ZlZCB1bm5lZWRlZCBnZW4gY2hlY2sKPiAgICAgLSBFeHRy YWN0ZWQgR2VuMTIgU0FHViBkZWNpc2lvbiBtYWtpbmcgY29kZQo+ICAgICAgIHRvIGEgc2VwYXJh dGUgZnVuY3Rpb24gZnJvbSBza2xfY29tcHV0ZV93bQo+IAo+IFNpZ25lZC1vZmYtYnk6IFN0YW5p c2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5saXNvdnNraXlAaW50ZWwuY29tPgo+IENjOiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPgo+IENjOiBKYW1lcyBBdXNtdXMg PGphbWVzLmF1c211c0BpbnRlbC5jb20+Cj4gLS0tCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXlfdHlwZXMuaCAgICB8ICAgOCArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgICAgICAgICAgICAgICB8IDI1NCArKysrKysrKysrKysrKysrKy0KPiAgMiBmaWxl cyBjaGFuZ2VkLCAyNTQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IGlu ZGV4IDgzNTgxNTJlNDAzZS4uZjA5YzgwYzk2NDcwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBAQCAtNDkwLDYgKzQ5 MCwxMyBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsKPiAgCSAqLwo+ICAJdTggYWN0aXZl X3BpcGVfY2hhbmdlczsKPiAgCj4gKwkvKgo+ICsJICogRm9yIEdlbjEyIG9ubHkgYWZ0ZXIgY2Fs Y3VsYXRpbmcgd2F0ZXJtYXJrcyB3aXRoCj4gKwkgKiBhZGRpdGlvbmFsIGxhdGVuY3ksIHdlIGNh biBkZXRlcm1pbmUgaWYgU0FHViBjYW4gYmUgZW5hYmxlZAo+ICsJICogb3Igbm90IGZvciB0aGF0 IHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4KPiArCSAqLwo+ICsJYm9vbCBnZW4xMl9jYW5fc2Fn djsKPiArCj4gIAl1OCBhY3RpdmVfcGlwZXM7Cj4gIAkvKiBtaW5pbXVtIGFjY2VwdGFibGUgY2Rj bGsgZm9yIGVhY2ggcGlwZSAqLwo+ICAJaW50IG1pbl9jZGNsa1tJOTE1X01BWF9QSVBFU107Cj4g QEAgLTY0Miw2ICs2NDksNyBAQCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtIHsKPiAgCXN0cnVjdCBza2xf d21fbGV2ZWwgd21bOF07Cj4gIAlzdHJ1Y3Qgc2tsX3dtX2xldmVsIHV2X3dtWzhdOwo+ICAJc3Ry dWN0IHNrbF93bV9sZXZlbCB0cmFuc193bTsKPiArCXN0cnVjdCBza2xfd21fbGV2ZWwgc2Fndl93 bV9sMDsKCnNhZ3Zfd20wIChvciBtYXliZSBldmVuIGp1c3Qgc2Fndl93bSkgd291bGQgYmUgYSBi aXQgbGVzcyB1Z2x5Cm5hbWUgSSB0aGluay4KCj4gIAlib29sIGlzX3BsYW5hcjsKPiAgfTsKPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXggMzYyMjM0NDQ5MDg3Li5iNjFlYjZhYWE4 OWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiBAQCAtMzc1MSw3ICszNzUxLDcgQEAg aW50ZWxfZGlzYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg CXJldHVybiAwOwo+ICB9Cj4gIAo+IC1ib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArYm9vbCBza2xfY2FuX2VuYWJsZV9zYWd2KHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gc3RhdGUtPmJhc2UuZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwo+IEBAIC0zODE3LDYgKzM4MTcsOTUgQEAgYm9vbCBpbnRl bF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAly ZXR1cm4gdHJ1ZTsKPiAgfQo+ICAKPiArYm9vbCBpY2xfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBp bnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gc3RhdGUtPmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gKwlpbnQgbGV2ZWwsIGxhdGVuY3k7 Cj4gKwlpbnQgaTsKPiArCWludCBwbGFuZV9pZDsKPiArCj4gKwlpZiAoIWludGVsX2hhc19zYWd2 KGRldl9wcml2KSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ICsJLyoKPiArCSAqIElmIHRoZXJl IGFyZSBubyBhY3RpdmUgQ1JUQ3MsIG5vIGFkZGl0aW9uYWwgY2hlY2tzIG5lZWQgYmUgcGVyZm9y bWVkCj4gKwkgKi8KPiArCWlmIChod2VpZ2h0OChzdGF0ZS0+YWN0aXZlX3BpcGVzKSA9PSAwKQo+ ICsJCXJldHVybiB0cnVlOwo+ICsKPiArCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLAo+ICsJCQkJCSAgICAgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiArCQl1bnNp Z25lZCBpbnQgZmxhZ3MgPSBjcnRjLT5iYXNlLnN0YXRlLT5hZGp1c3RlZF9tb2RlLmZsYWdzOwo+ ICsKPiArCQlpZiAoZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKPiArCQkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSkKPiArCQkJ Y29udGludWU7CgpEbyB3ZSB1c2UgYWN0aXZlIG9yIGVuYWJsZSBlbHNld2hlcmUgdG8gZGVjaWRl IHdoZXRoZXIgdG8gY29tcHV0ZSB3bXMKZm9yIGEgcGlwZT8gU2hvdWxkIGJlIGNvbnNpc3RlbnQg aGVyZSBzbyB3ZSBkb24ndCBnZXQgaW50byBzb21lIHdvbmt5CnN0YXRlIHdoZXJlIHdlIGRpZG4n dCBjb21wdXRlIG5vcm1hbCB3bXMgYnV0IGFyZSBjb21wdXRpbmcgdGhlIHNhZ3Ygd20uCgo+ICsK PiArCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMsIHBsYW5lX2lkKSB7Cj4gKwkJCXN0 cnVjdCBza2xfcGxhbmVfd20gKndtID0KPiArCQkJCSZuZXdfY3J0Y19zdGF0ZS0+d20uc2tsLm9w dGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiArCj4gKwkJCS8qIFNraXAgdGhpcyBwbGFuZSBpZiBp dCdzIG5vdCBlbmFibGVkICovCj4gKwkJCWlmICghd20tPndtWzBdLnBsYW5lX2VuKQo+ICsJCQkJ Y29udGludWU7Cj4gKwo+ICsJCQkvKiBGaW5kIHRoZSBoaWdoZXN0IGVuYWJsZWQgd20gbGV2ZWwg Zm9yIHRoaXMgcGxhbmUgKi8KPiArCQkJZm9yIChsZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2 X3ByaXYpOwo+ICsJCQkgICAgICF3bS0+d21bbGV2ZWxdLnBsYW5lX2VuOyAtLWxldmVsKSB7Cj4g KwkJCX0KPiArCj4gKwkJCWxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxd Owo+ICsKPiArCQkJLyoKPiArCQkJICogSWYgYW55IG9mIHRoZSBwbGFuZXMgb24gdGhpcyBwaXBl IGRvbid0IGVuYWJsZQo+ICsJCQkgKiB3bSBsZXZlbHMgdGhhdCBpbmN1ciBtZW1vcnkgbGF0ZW5j aWVzIGhpZ2hlciB0aGFuCj4gKwkJCSAqIHNhZ3ZfYmxvY2tfdGltZV91cyB3ZSBjYW4ndCBlbmFi bGUgU0FHVi4KPiArCQkJICovCj4gKwkJCWlmIChsYXRlbmN5IDwgZGV2X3ByaXYtPnNhZ3ZfYmxv Y2tfdGltZV91cykKPiArCQkJCXJldHVybiBmYWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0 dXJuIHRydWU7Cj4gK30KPiArCj4gK2Jvb2wgdGdsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgaW50 ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gKwlpbnQgaTsK PiArCj4gKwlpZiAoIXN0YXRlLT5nZW4xMl9jYW5fc2FndikKPiArCQlyZXR1cm4gZmFsc2U7Cj4g Kwo+ICsJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsCj4gKwkJ CQkJICAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCXVuc2lnbmVkIGludCBmbGFncyA9IGNy dGMtPmJhc2Uuc3RhdGUtPmFkanVzdGVkX21vZGUuZmxhZ3M7Cj4gKwo+ICsJCWlmIChmbGFncyAm IERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwly ZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBzdGF0ZS0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7Cj4gKwo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIp Cj4gKwkJcmV0dXJuIHRnbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpOwo+ICsJZWxzZSBpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA9PSAxMSkKPiArCQlyZXR1cm4gaWNsX2Nhbl9lbmFibGVfc2Fndihz dGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHNrbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpOwoKV2h5IGRv IHdlIGhhdmUgdGhyZWUgc2VwYXJhdGUgY29kZSBwYXRocyBub3c/IEkgYmVsaWV2ZSB0aGVyZSBz aG91bGQgYmUKanVzdCB0d28uCgpBbHNvIGlmIHlvdSBnbyB0byB0aGUgdHJvdWJsZSBvZiBhZGRp bmcgZGV2X3ByaXYtPi4uY2FuX3NhZ3YganVzdCBtYWtlCml0IHdvcmsgZm9yIGFsbCBwbGF0Zm9y bXMuCgo+ICt9Cj4gKwo+ICBzdGF0aWMgdTE2IGludGVsX2dldF9kZGJfc2l6ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICAgICBjb25zdCB1NjQgdG90YWxfZGF0YV9y YXRlLAo+IEBAIC0zOTM2LDYgKzQwMjUsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3dtX3Bh cmFtcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBp bnQgY29sb3JfcGxhbmUpOwo+ICBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBpbnQgbGV2ZWws Cj4gKwkJCQkgdTMyIGxhdGVuY3ksCj4gIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMg KndwLAo+ICAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9wcmV2LAo+ICAJ CQkJIHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8pOwo+IEBAIC0zOTU4LDcg KzQwNDgsOSBAQCBza2xfY3Vyc29yX2FsbG9jYXRpb24oY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gIAlXQVJOX09OKHJldCk7Cj4gIAo+ICAJZm9yIChsZXZlbCA9 IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0JCXNrbF9jb21wdXRlX3BsYW5l X3dtKGNydGNfc3RhdGUsIGxldmVsLCAmd3AsICZ3bSwgJndtKTsKPiArCQl1MzIgbGF0ZW5jeSA9 IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4gKwkJc2tsX2NvbXB1dGVfcGxhbmVf d20oY3J0Y19zdGF0ZSwgbGV2ZWwsIGxhdGVuY3ksICZ3cCwgJndtLCAmd20pOwo+ICsKPiAgCQlp ZiAod20ubWluX2RkYl9hbGxvYyA9PSBVMTZfTUFYKQo+ICAJCQlicmVhazsKPiAgCj4gQEAgLTQz MTAsNiArNDQwMiw2OCBAQCBpY2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCXJldHVybiB0b3RhbF9kYXRhX3JhdGU7 Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQKPiArdGdsX2NoZWNrX3BpcGVfZml0c19zYWd2X3dtKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCSAgICAgIHN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8pCj4gK3sKPiArCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9IGNydGNfc3RhdGUtPmJhc2UuY3J0YzsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiArCXN0cnVjdCBza2xfZGRiX2VudHJ5 ICphbGxvYyA9ICZjcnRjX3N0YXRlLT53bS5za2wuZGRiOwo+ICsJdTE2IGFsbG9jX3NpemU7Cj4g Kwl1MTYgdG90YWxbSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ICsJdTY0IHRvdGFsX2RhdGFfcmF0 ZTsKPiArCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQ7Cj4gKwlpbnQgbnVtX2FjdGl2ZTsKPiArCXU2 NCBwbGFuZV9kYXRhX3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9Owo+ICsJdTMyIGJsb2NrczsK PiArCj4gKwkvKgo+ICsJICogTm8gbmVlZCB0byBjaGVjayBnZW4gaGVyZSwgd2UgY2FsbCB0aGlz IG9ubHkgZm9yIGdlbjEyCj4gKwkgKi8KPiArCXRvdGFsX2RhdGFfcmF0ZSA9Cj4gKwkJaWNsX2dl dF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3J0Y19zdGF0ZSwKPiArCQkJCQkJIHBsYW5lX2Rh dGFfcmF0ZSk7Cj4gKwo+ICsJc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXZf cHJpdiwgY3J0Y19zdGF0ZSwKPiArCQkJCQkgICB0b3RhbF9kYXRhX3JhdGUsCj4gKwkJCQkJICAg ZGRiLCBhbGxvYywgJm51bV9hY3RpdmUpOwo+ICsJYWxsb2Nfc2l6ZSA9IHNrbF9kZGJfZW50cnlf c2l6ZShhbGxvYyk7Cj4gKwlpZiAoYWxsb2Nfc2l6ZSA9PSAwKQo+ICsJCXJldHVybiAtRU5PU1BD Owo+ICsKPiArCS8qIEFsbG9jYXRlIGZpeGVkIG51bWJlciBvZiBibG9ja3MgZm9yIGN1cnNvci4g Ki8KPiArCXRvdGFsW1BMQU5FX0NVUlNPUl0gPSBza2xfY3Vyc29yX2FsbG9jYXRpb24oY3J0Y19z dGF0ZSwgbnVtX2FjdGl2ZSk7Cj4gKwlhbGxvY19zaXplIC09IHRvdGFsW1BMQU5FX0NVUlNPUl07 Cj4gKwljcnRjX3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3lbUExBTkVfQ1VSU09SXS5zdGFydCA9 Cj4gKwkJYWxsb2MtPmVuZCAtIHRvdGFsW1BMQU5FX0NVUlNPUl07Cj4gKwljcnRjX3N0YXRlLT53 bS5za2wucGxhbmVfZGRiX3lbUExBTkVfQ1VSU09SXS5lbmQgPSBhbGxvYy0+ZW5kOwo+ICsKPiAr CS8qCj4gKwkgKiBEbyBjaGVjayBpZiB3ZSBjYW4gZml0IEwwICsgc2Fndl9ibG9ja190aW1lIGFu ZAo+ICsJICogZGlzYWJsZSBTQUdWIGlmIHdlIGNhbid0Lgo+ICsJICovCj4gKwlibG9ja3MgPSAw Owo+ICsJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewo+ ICsJCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KPiArCQkJJmNydGNfc3RhdGUtPndt LnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07Cj4gKwo+ICsJCWlmIChwbGFuZV9pZCA9PSBQ TEFORV9DVVJTT1IpIHsKPiArCQkJaWYgKFdBUk5fT04od20tPnNhZ3Zfd21fbDAubWluX2RkYl9h bGxvYyA+Cj4gKwkJCQkgICAgdG90YWxbUExBTkVfQ1VSU09SXSkpIHsKPiArCQkJCWJsb2NrcyA9 IFUzMl9NQVg7Cj4gKwkJCQlicmVhazsKPiArCQkJfQo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4g Kwo+ICsJCWJsb2NrcyArPSB3bS0+c2Fndl93bV9sMC5taW5fZGRiX2FsbG9jOwo+ICsJCWlmIChi bG9ja3MgPiBhbGxvY19zaXplKQo+ICsJCQlyZXR1cm4gLUVOT1NQQzsKPiArCX0KPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICBzdGF0aWMgaW50Cj4gIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICAgICBzdHJ1Y3Qgc2tsX2Rk Yl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKQo+IEBAIC00NzM5LDEyICs0ODkzLDEyIEBAIHN0 YXRpYyBib29sIHNrbF93bV9oYXNfbGluZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBpbnQgbGV2ZWwpCj4gIAo+ICBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBpbnQgbGV2 ZWwsCj4gKwkJCQkgdTMyIGxhdGVuY3ksCj4gIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJh bXMgKndwLAo+ICAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9wcmV2LAo+ ICAJCQkJIHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8pCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjLT5kZXYpOwo+IC0JdTMyIGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lb bGV2ZWxdOwo+ICAJdWludF9maXhlZF8xNl8xNl90IG1ldGhvZDEsIG1ldGhvZDI7Cj4gIAl1aW50 X2ZpeGVkXzE2XzE2X3Qgc2VsZWN0ZWRfcmVzdWx0Owo+ICAJdTMyIHJlc19ibG9ja3MsIHJlc19s aW5lcywgbWluX2RkYl9hbGxvYyA9IDA7Cj4gQEAgLTQ4NjUsMTkgKzUwMTksNDQgQEAgc3RhdGlj IHZvaWQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIHN0YXRpYyB2b2lkCj4gIHNrbF9jb21wdXRlX3dtX2xldmVscyhjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkgICAgICBjb25zdCBz dHJ1Y3Qgc2tsX3dtX3BhcmFtcyAqd21fcGFyYW1zLAo+IC0JCSAgICAgIHN0cnVjdCBza2xfd21f bGV2ZWwgKmxldmVscykKPiArCQkgICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpwbGFuZV93bSwK PiArCQkgICAgICBib29sIHl1dikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT5iYXNlLmNydGMtPmRldik7Cj4gIAlpbnQgbGV2 ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICsJLyoKPiArCSAq IENoZWNrIHdoaWNoIGtpbmQgb2YgcGxhbmUgaXMgaXQgYW5kIGJhc2VkIG9uIHRoYXQgY2FsY3Vs YXRlCj4gKwkgKiBjb3JyZXNwb25kZW50IFdNIGxldmVscy4KPiArCSAqLwo+ICsJc3RydWN0IHNr bF93bV9sZXZlbCAqbGV2ZWxzID0geXV2ID8gcGxhbmVfd20tPnV2X3dtIDogcGxhbmVfd20tPndt Owo+ICAJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0X3ByZXYgPSAmbGV2ZWxzWzBdOwo+ICAK PiAgCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKPiAgCQlz dHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQgPSAmbGV2ZWxzW2xldmVsXTsKPiArCQl1MzIgbGF0 ZW5jeSA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4gIAo+IC0JCXNrbF9jb21w dXRlX3BsYW5lX3dtKGNydGNfc3RhdGUsIGxldmVsLCB3bV9wYXJhbXMsCj4gLQkJCQkgICAgIHJl c3VsdF9wcmV2LCByZXN1bHQpOwo+ICsJCXNrbF9jb21wdXRlX3BsYW5lX3dtKGNydGNfc3RhdGUs IGxldmVsLCBsYXRlbmN5LAo+ICsJCQkJICAgICB3bV9wYXJhbXMsIHJlc3VsdF9wcmV2LCByZXN1 bHQpOwo+ICAKPiAgCQlyZXN1bHRfcHJldiA9IHJlc3VsdDsKPiArCQlpZiAobGV2ZWwgPT0gMCkg ewo+ICsJCQkvKgo+ICsJCQkgKiBGb3IgR2VuMTIgaWYgaXQgaXMgYW4gTDAgd2UgbmVlZCB0byBh bHNvCj4gKwkJCSAqIGNvbnNpZGVyIHNhZ3ZfYmxvY2tfdGltZSB3aGVuIGNhbGN1bGF0aW5nCj4g KwkJCSAqIEwwIHdhdGVybWFyayAtIHdlIHdpbGwgbmVlZCB0aGF0IHdoZW4gbWFraW5nCj4gKwkJ CSAqIGEgZGVjaXNpb24gd2hldGhlciBlbmFibGUgU0FHViBvciBub3QuCj4gKwkJCSAqIEZvciBv bGRlciBnZW5zIHdlIGFncmVlZCB0byBjb3B5IEwwIHZhbHVlIGZvcgo+ICsJCQkgKiBjb21wYXRp YmlsaXR5Lgo+ICsJCQkgKi8KPiArCQkJaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSkg ewo+ICsJCQkJbGF0ZW5jeSArPSBkZXZfcHJpdi0+c2Fndl9ibG9ja190aW1lX3VzOwo+ICsJCQkJ c2tsX2NvbXB1dGVfcGxhbmVfd20oY3J0Y19zdGF0ZSwgbGV2ZWwsIGxhdGVuY3ksCj4gKwkJCQkg ICAgIHdtX3BhcmFtcywgcmVzdWx0X3ByZXYsCj4gKwkJCQkgICAgJnBsYW5lX3dtLT5zYWd2X3dt X2wwKTsKPiArCQkJfSBlbHNlCj4gKwkJCQltZW1jcHkoJnBsYW5lX3dtLT5zYWd2X3dtX2wwLCAm bGV2ZWxzWzBdLAo+ICsJCQkJCXNpemVvZihzdHJ1Y3Qgc2tsX3dtX2xldmVsKSk7CgpQdXR0aW5n IHRoaXMgc3R1ZmYgaW5zaWRlIHRoZSBsb29wIHNlZW1zIGEgYml0IHNpbGx5LgoKPiArCQl9Cj4g IAl9Cj4gIH0KPiAgCj4gQEAgLTQ5NzEsNyArNTE1MCw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxk X3BsYW5lX3dtX3NpbmdsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAg CWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQlza2xfY29tcHV0ZV93bV9sZXZlbHMo Y3J0Y19zdGF0ZSwgJndtX3BhcmFtcywgd20tPndtKTsKPiArCXNrbF9jb21wdXRlX3dtX2xldmVs cyhjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bSwgZmFsc2UpOwo+ICAJc2tsX2NvbXB1dGVfdHJh bnNpdGlvbl93bShjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bSk7Cj4gIAo+ICAJcmV0dXJuIDA7 Cj4gQEAgLTQ5OTMsNyArNTE3Miw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3V2 KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJaWYgKHJldCkKPiAgCQly ZXR1cm4gcmV0Owo+ICAKPiAtCXNrbF9jb21wdXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCAmd21f cGFyYW1zLCB3bS0+dXZfd20pOwo+ICsJc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNydGNfc3RhdGUs ICZ3bV9wYXJhbXMsIHdtLCB0cnVlKTsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC01NTQx LDkgKzU3MjAsNjIgQEAgc3RhdGljIGludCBza2xfd21fYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtz dGF0aWMgdm9pZCB0Z2xfY2hlY2tfYW5kX3NldF9zYWd2KHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmJhc2Uu ZGV2Owo+ICsJY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xk X2NydGNfc3RhdGU7Cj4gKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgPSAmc3RhdGUt PndtX3Jlc3VsdHMuZGRiOwo+ICsJaW50IHJldCwgaTsKPiArCj4gKwkvKgo+ICsJICogTGV0cyBh c3N1bWUgd2UgY2FuIHRvbGVyYXRlIFNBR1YgZm9yIG5vdywKPiArCSAqIHVudGlsIHdhdGVybWFy ayBjYWxjdWxhdGlvbnMgcHJvdmUgdGhlIG9wcG9zaXRlCj4gKwkgKiBpZiBhbnkgb2YgdGhlIHBp cGUgcGxhbmVzIGluIHRoZSBzdGF0ZSB3aWxsCj4gKwkgKiBmYWlsIHRoZSByZXF1aXJlbWVudHMg aXQgd2lsbCBiZSBhc3NpZ25lZCB0byBmYWxzZQo+ICsJICogaW4gc2tsX2NvbXB1dGVfZGRiLgo+ ICsJICovCj4gKwlzdGF0ZS0+Z2VuMTJfY2FuX3NhZ3YgPSB0cnVlOwo+ICsKPiArCWZvcl9lYWNo X29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwK PiArCQkJCQkgICAgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiArCQlyZXQgPSB0Z2xfY2hlY2tfcGlw ZV9maXRzX3NhZ3Zfd20obmV3X2NydGNfc3RhdGUsIGRkYik7Cj4gKwkJaWYgKHJldCkgewo+ICsJ CQlzdGF0ZS0+Z2VuMTJfY2FuX3NhZ3YgPSBmYWxzZTsKPiArCQkJYnJlYWs7Cj4gKwkJfQoKVGhp cyBpcyBub3QgZ29pbmcgdG8gd29yay4gV2UgbmVlZCB0aGUgaW5mcm9tYXRpb24gZnJvbSBfYWxs XyBwaXBlcywgbm90Cmp1c3QgdGhlIG9uZXMgaW4gdGhlIHN0YXRlLiBXZSBwcm9iYWJseSB3YW50 IHRvIG1ha2UgdGhhdCBjYW5fc2FndiB0aGluZwphIGJpdG1hc2sgb2YgcGlwZXMgc28gdGhhdCB3 ZSBkb24ndCBoYXZlIHRvIGhhdmUgYWxsIHBpcGVzIGluIHRoZSBzdGF0ZS4KCj4gKwl9Cj4gKwo+ ICsJaWYgKHN0YXRlLT5nZW4xMl9jYW5fc2Fndikgewo+ICsJCS8qCj4gKwkJICogSWYgd2UgZGV0 ZXJtaW5lZCB0aGF0IHdlIGNhbiBhY3R1YWxseSBlbmFibGUgU0FHViwgdGhlbgo+ICsJCSAqIGFj dHVhbGx5IHVzZSB0aG9zZSBsZXZlbHMgdGdsX2NoZWNrX3BpcGVfZml0c19zYWd2X3dtCj4gKwkJ ICogaGFzIGFscmVhZHkgdGFrZW4gY2FyZSBvZiBjaGVja2luZyBpZiBMMCArIHNhZ3YgYmxvY2sg dGltZQo+ICsJCSAqIGZpdHMgaW50byBkZGIuCj4gKwkJICovCj4gKwkJZm9yX2VhY2hfb2xkbmV3 X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAo+ICsJCQkJ CSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l Owo+ICsJCQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRj LCBwbGFuZSkgewo+ICsJCQkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKPiAr CQkJCXN0cnVjdCBza2xfcGxhbmVfd20gKnBsYW5lX3dtID0gXAo+ICsJCQkJICAgICZuZXdfY3J0 Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiArCQkJCXN0cnVjdCBz a2xfd21fbGV2ZWwgKnNhZ3Zfd20wID0gJnBsYW5lX3dtLT5zYWd2X3dtX2wwOwo+ICsJCQkJc3Ry dWN0IHNrbF93bV9sZXZlbCAqbDBfd20wID0gJnBsYW5lX3dtLT53bVswXTsKPiArCj4gKwkJCQlt ZW1jcHkobDBfd20wLCBzYWd2X3dtMCwgc2l6ZW9mKHN0cnVjdCBza2xfd21fbGV2ZWwpKTsKPiAr CQkJfQo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiAgc3RhdGljIGludAo+ICBza2xfY29tcHV0ZV93 bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgewo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRldjsKPiArCWNvbnN0IHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjOwo+ICAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ICAJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwo+IEBAIC01NTUzLDYgKzU3ODUs OSBAQCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAg CS8qIENsZWFyIGFsbCBkaXJ0eSBmbGFncyAqLwo+ICAJcmVzdWx0cy0+ZGlydHlfcGlwZXMgPSAw Owo+ICAKPiArCS8qIElmIHdlIGV4aXQgYmVmb3JlIGNoZWNrIGlzIGRvbmUgKi8KPiArCXN0YXRl LT5nZW4xMl9jYW5fc2FndiA9IGZhbHNlOwo+ICsKPiAgCXJldCA9IHNrbF9kZGJfYWRkX2FmZmVj dGVkX3BpcGVzKHN0YXRlKTsKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiBAQCAtNTU3 OSw2ICs1ODE0LDkgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4gIAkJCXJlc3VsdHMtPmRpcnR5X3BpcGVzIHw9IEJJVChjcnRjLT5waXBlKTsKPiAg CX0KPiAgCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKPiArCQl0Z2xfY2hlY2tf YW5kX3NldF9zYWd2KHN0YXRlKTsKPiArCj4gIAlyZXQgPSBza2xfY29tcHV0ZV9kZGIoc3RhdGUp Owo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+IC0tIAo+IDIuMTcuMQoKLS0gClZpbGxl IFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZng=