From mboxrd@z Thu Jan 1 00:00:00 1970 From: James Ausmus Subject: Re: [PATCH v6 1/2] drm/i915: Refactor intel_can_enable_sagv Date: Thu, 24 Oct 2019 15:45:53 -0700 Message-ID: <20191024224552.GA9255@jausmus-gentoo-dev6.jf.intel.com> References: <20191023090804.26607-1-stanislav.lisovskiy@intel.com> <20191023090804.26607-2-stanislav.lisovskiy@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7EC6A6E83C for ; Thu, 24 Oct 2019 22:44:44 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20191023090804.26607-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, martin.peres@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBPY3QgMjMsIDIwMTkgYXQgMTI6MDg6MDNQTSArMDMwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiBDdXJyZW50bHkgaW50ZWxfY2FuX2VuYWJsZV9zYWd2IGZ1bmN0aW9uIGNv bnRhaW5zCj4gYSBtaXggb2Ygd29ya2Fyb3VuZHMgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXMKPiBz b21lIG9mIHRoZW0gYXJlIG5vdCB2YWxpZCBmb3IgZ2VucyA+PSAxMSBhbHJlYWR5LAo+IHNvIGxl dHMgc3BsaXQgaXQgaW50byBzZXBhcmF0ZSBmdW5jdGlvbnMuCj4gCj4gdjI6Cj4gICAgIC0gUmV3 b3JrIHdhdGVybWFyayBjYWxjdWxhdGlvbiBhbGdvcml0aG0gdG8KPiAgICAgICBhdHRlbXB0IHRv IGNhbGN1bGF0ZSBMZXZlbCAwIHdhdGVybWFyawo+ICAgICAgIHdpdGggYWRkZWQgc2FndiBibG9j ayB0aW1lIGxhdGVuY3kgYW5kCj4gICAgICAgY2hlY2sgaWYgaXQgZml0cyBpbiBEQnVmIGluIG9y ZGVyIHRvCj4gICAgICAgZGV0ZXJtaW5lIGlmIFNBR1YgY2FuIGJlIGVuYWJsZWQgYWxyZWFkeQo+ ICAgICAgIGF0IHRoaXMgc3RhZ2UsIGp1c3QgYXMgQlNwZWMgNDkzMjUgc3RhdGVzLgo+ICAgICAg IGlmIHRoYXQgZmFpbHMgcm9sbGJhY2sgdG8gdXN1YWwgTGV2ZWwgMAo+ICAgICAgIGxhdGVuY3kg YW5kIGRpc2FibGUgU0FHVi4KPiAgICAgLSBSZW1vdmUgdW5uZWVkZWQgdGFicyhKYW1lcyBBdXNt dXMpCj4gCj4gdjM6IFJlYmFzZWQgdGhlIHBhdGNoCj4gCj4gU2lnbmVkLW9mZi1ieTogU3Rhbmlz bGF2IExpc292c2tpeSA8c3RhbmlzbGF2Lmxpc292c2tpeUBpbnRlbC5jb20+Cj4gQ2M6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBpbnRlbC5jb20+Cj4gQ2M6IEphbWVzIEF1c211cyA8 amFtZXMuYXVzbXVzQGludGVsLmNvbT4KPiAtLS0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgICA4ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyAgICAgICAgICAgICAgIHwgMjI4ICsrKysrKysrKysrKysrKysrLQo+ICAyIGZpbGVz IGNoYW5nZWQsIDIyOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gaW5k ZXggODM1ODE1MmU0MDNlLi5mMDljODBjOTY0NzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IEBAIC00OTAsNiArNDkw LDEzIEBAIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgewo+ICAJICovCj4gIAl1OCBhY3RpdmVf cGlwZV9jaGFuZ2VzOwo+ICAKPiArCS8qCj4gKwkgKiBGb3IgR2VuMTIgb25seSBhZnRlciBjYWxj dWxhdGluZyB3YXRlcm1hcmtzIHdpdGgKPiArCSAqIGFkZGl0aW9uYWwgbGF0ZW5jeSwgd2UgY2Fu IGRldGVybWluZSBpZiBTQUdWIGNhbiBiZSBlbmFibGVkCj4gKwkgKiBvciBub3QgZm9yIHRoYXQg cGFydGljdWxhciBjb25maWd1cmF0aW9uLgo+ICsJICovCj4gKwlib29sIGdlbjEyX2Nhbl9zYWd2 Owo+ICsKPiAgCXU4IGFjdGl2ZV9waXBlczsKPiAgCS8qIG1pbmltdW0gYWNjZXB0YWJsZSBjZGNs ayBmb3IgZWFjaCBwaXBlICovCj4gIAlpbnQgbWluX2NkY2xrW0k5MTVfTUFYX1BJUEVTXTsKPiBA QCAtNjQyLDYgKzY0OSw3IEBAIHN0cnVjdCBza2xfcGxhbmVfd20gewo+ICAJc3RydWN0IHNrbF93 bV9sZXZlbCB3bVs4XTsKPiAgCXN0cnVjdCBza2xfd21fbGV2ZWwgdXZfd21bOF07Cj4gIAlzdHJ1 Y3Qgc2tsX3dtX2xldmVsIHRyYW5zX3dtOwo+ICsJc3RydWN0IHNrbF93bV9sZXZlbCBzYWd2X3dt X2wwOwo+ICAJYm9vbCBpc19wbGFuYXI7Cj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u Ywo+IGluZGV4IDM2MjIzNDQ0OTA4Ny4uYzA0MTllNGQ4M2RlIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gQEAgLTM3NTEsNyArMzc1MSw3IEBAIGludGVsX2Rpc2FibGVfc2FndihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAt Ym9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gK2Jvb2wgc2tsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRl djsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiBAQCAtMzgxNyw2ICszODE3LDc1IEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4g K2Jvb2wgaWNsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRldjsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlOwo+ICsJaW50IGxldmVsLCBsYXRlbmN5Owo+ICsJaW50IGk7Cj4gKwlpbnQgcGxh bmVfaWQ7Cj4gKwo+ICsJaWYgKCFpbnRlbF9oYXNfc2FndihkZXZfcHJpdikpCj4gKwkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCS8qCj4gKwkgKiBJZiB0aGVyZSBhcmUgbm8gYWN0aXZlIENSVENzLCBu byBhZGRpdGlvbmFsIGNoZWNrcyBuZWVkIGJlIHBlcmZvcm1lZAo+ICsJICovCj4gKwlpZiAoaHdl aWdodDgoc3RhdGUtPmFjdGl2ZV9waXBlcykgPT0gMCkKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4g Kwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywKPiArCQkJCQkg ICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gKwo+ICsJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5h ZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gKwkJCXJldHVy biBmYWxzZTsKPiArCj4gKwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMsIHBsYW5l X2lkKSB7Cj4gKwkJCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KPiArCQkJCSZuZXdfY3J0Y19z dGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiArCj4gKwkJCS8qIFNraXAg dGhpcyBwbGFuZSBpZiBpdCdzIG5vdCBlbmFibGVkICovCj4gKwkJCWlmICghd20tPndtWzBdLnBs YW5lX2VuKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQkvKiBGaW5kIHRoZSBoaWdoZXN0IGVu YWJsZWQgd20gbGV2ZWwgZm9yIHRoaXMgcGxhbmUgKi8KPiArCQkJZm9yIChsZXZlbCA9IGlsa193 bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICsJCQkgICAgICF3bS0+d21bbGV2ZWxdLnBsYW5lX2Vu OyAtLWxldmVsKQo+ICsJCQkgICAgIHsgfQo+ICsKPiArCQkJbGF0ZW5jeSA9IGRldl9wcml2LT53 bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4gKwo+ICsJCQkvKgo+ICsJCQkgKiBJZiBhbnkgb2YgdGhl IHBsYW5lcyBvbiB0aGlzIHBpcGUgZG9uJ3QgZW5hYmxlIHdtIGxldmVscyB0aGF0Cj4gKwkJCSAq IGluY3VyIG1lbW9yeSBsYXRlbmNpZXMgaGlnaGVyIHRoYW4gc2Fndl9ibG9ja190aW1lX3VzIHdl Cj4gKwkJCSAqIGNhbid0IGVuYWJsZSBTQUdWLgo+ICsJCQkgKi8KPiArCQkJaWYgKGxhdGVuY3kg PCBkZXZfcHJpdi0+c2Fndl9ibG9ja190aW1lX3VzKQo+ICsJCQkJcmV0dXJuIGZhbHNlOwo+ICsJ CX0KPiArCX0KPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArYm9vbCBpbnRlbF9jYW5f ZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwo+ICsJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTIpCj4gKwkJcmV0dXJuIHN0YXRlLT5nZW4xMl9jYW5fc2FndjsKClRo aXMgbG9zZXMgdGhlIGludGVybGFjZWQgbW9kZSBjaGVjayB0aGF0IHRoZSBza2wgYW5kIGljbCBm dW5jdGlvbnMKaGF2ZSwgd2hpY2ggaXMgc3RpbGwgbmVlZGVkIGZvciBUR0wKCgo+ICsJZWxzZSBp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA9PSAxMSkKPiArCQlyZXR1cm4gaWNsX2Nhbl9lbmFibGVf c2FndihzdGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHNrbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpOwo+ ICt9Cj4gKwo+ICBzdGF0aWMgdTE2IGludGVsX2dldF9kZGJfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICAgICBjb25zdCB1NjQgdG90YWxfZGF0YV9yYXRlLAo+ IEBAIC0zOTM2LDYgKzQwMDUsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3dtX3BhcmFtcyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBpbnQgY29s b3JfcGxhbmUpOwo+ICBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBpbnQgbGV2ZWwsCj4gKwkJ CQkgdTMyIGxhdGVuY3ksCj4gIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMgKndwLAo+ ICAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9wcmV2LAo+ICAJCQkJIHN0 cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8pOwo+IEBAIC0zOTU4LDcgKzQwMjgs OCBAQCBza2xfY3Vyc29yX2FsbG9jYXRpb24oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAlXQVJOX09OKHJldCk7Cj4gIAo+ICAJZm9yIChsZXZlbCA9IDA7IGxl dmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0JCXNrbF9jb21wdXRlX3BsYW5lX3dtKGNy dGNfc3RhdGUsIGxldmVsLCAmd3AsICZ3bSwgJndtKTsKPiArCQl1MzIgbGF0ZW5jeSA9IGRldl9w cml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4gKwkJc2tsX2NvbXB1dGVfcGxhbmVfd20oY3J0 Y19zdGF0ZSwgbGV2ZWwsIGxhdGVuY3ksICZ3cCwgJndtLCAmd20pOwo+ICAJCWlmICh3bS5taW5f ZGRiX2FsbG9jID09IFUxNl9NQVgpCj4gIAkJCWJyZWFrOwo+ICAKPiBAQCAtNDMxMCw2ICs0Mzgx LDczIEBAIGljbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJcmV0dXJuIHRvdGFsX2RhdGFfcmF0ZTsKPiAgfQo+ICAK PiArc3RhdGljIGludAo+ICt0Z2xfY2hlY2tfcGlwZV9maXRzX3NhZ3Zfd20oc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2Nh dGlvbiAqZGRiIC8qIG91dCAqLykKPiArewo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0g JmNydGNfc3RhdGUtPndtLnNrbC5kZGI7Cj4gKwl1MTYgYWxsb2Nfc2l6ZTsKPiArCXUxNiB0b3Rh bFtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gKwl1NjQgdG90YWxfZGF0YV9yYXRlOwo+ICsJZW51 bSBwbGFuZV9pZCBwbGFuZV9pZDsKPiArCWludCBudW1fYWN0aXZlOwo+ICsJdTY0IHBsYW5lX2Rh dGFfcmF0ZVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gKwl1NjQgdXZfcGxhbmVfZGF0YV9yYXRl W0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPiArCXUzMiBibG9ja3M7Cj4gKwo+ICsJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTEpCj4gKwkJdG90YWxfZGF0YV9yYXRlID0KPiArCQkJaWNsX2dl dF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3J0Y19zdGF0ZSwKPiArCQkJCQkJCSBwbGFuZV9k YXRhX3JhdGUpOwoKVGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IG9ubHkgY2FsbGVkIG9uIGdlbjEy KyAtIGNvdWxkIGRyb3AgdGhlIGlmCmNoZWNrLCBhbmQgdGhlIGVudGlyZSBlbHNlIGJsb2NrLgoK Cj4gKwllbHNlCj4gKwkJdG90YWxfZGF0YV9yYXRlID0KPiArCQkJc2tsX2dldF90b3RhbF9yZWxh dGl2ZV9kYXRhX3JhdGUoY3J0Y19zdGF0ZSwKPiArCQkJCQkJCSBwbGFuZV9kYXRhX3JhdGUsCj4g KwkJCQkJCQkgdXZfcGxhbmVfZGF0YV9yYXRlKTsKPiArCj4gKwo+ICsJc2tsX2RkYl9nZXRfcGlw ZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgdG90YWxfZGF0YV9yYXRl LAo+ICsJCQkJCSAgIGRkYiwgYWxsb2MsICZudW1fYWN0aXZlKTsKPiArCWFsbG9jX3NpemUgPSBz a2xfZGRiX2VudHJ5X3NpemUoYWxsb2MpOwo+ICsJaWYgKGFsbG9jX3NpemUgPT0gMCkKPiArCQly ZXR1cm4gLUVOT1NQQzsKPiArCj4gKwkvKiBBbGxvY2F0ZSBmaXhlZCBudW1iZXIgb2YgYmxvY2tz IGZvciBjdXJzb3IuICovCj4gKwl0b3RhbFtQTEFORV9DVVJTT1JdID0gc2tsX2N1cnNvcl9hbGxv Y2F0aW9uKGNydGNfc3RhdGUsIG51bV9hY3RpdmUpOwo+ICsJYWxsb2Nfc2l6ZSAtPSB0b3RhbFtQ TEFORV9DVVJTT1JdOwo+ICsJY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NV UlNPUl0uc3RhcnQgPQo+ICsJCWFsbG9jLT5lbmQgLSB0b3RhbFtQTEFORV9DVVJTT1JdOwo+ICsJ Y3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NVUlNPUl0uZW5kID0gYWxsb2Mt PmVuZDsKPiArCj4gKwkvKgo+ICsJICogRG8gY2hlY2sgaWYgd2UgY2FuIGZpdCBMMCArIHNhZ3Zf YmxvY2tfdGltZSBhbmQKPiArCSAqIGRpc2FibGUgU0FHViBpZiB3ZSBjYW4ndC4KPiArCSAqLwo+ ICsJYmxvY2tzID0gMDsKPiArCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0Yywg cGxhbmVfaWQpIHsKPiArCQljb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9Cj4gKwkJCSZj cnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVfaWRdOwo+ICsKPiArCQlpZiAo cGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKSB7Cj4gKwkJCWlmIChXQVJOX09OKHdtLT5zYWd2X3dt X2wwLm1pbl9kZGJfYWxsb2MgPgo+ICsJCQkJICAgIHRvdGFsW1BMQU5FX0NVUlNPUl0pKSB7Cj4g KwkJCQlibG9ja3MgPSBVMzJfTUFYOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCQkJY29udGlu dWU7Cj4gKwkJfQo+ICsKPiArCQlibG9ja3MgKz0gd20tPnNhZ3Zfd21fbDAubWluX2RkYl9hbGxv YzsKPiArCQlpZiAoYmxvY2tzID4gYWxsb2Nfc2l6ZSkgewo+ICsJCQlyZXR1cm4gLUVOT1NQQzsK PiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludAo+ICBza2xf YWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAkJICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLykKPiBAQCAt NDczOSwxMiArNDg3NywxMiBAQCBzdGF0aWMgYm9vbCBza2xfd21faGFzX2xpbmVzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGxldmVsKQo+ICAKPiAgc3RhdGljIHZvaWQg c2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4gIAkJCQkgaW50IGxldmVsLAo+ICsJCQkJIHUzMiBsYXRlbmN5LAo+ICAJCQkJIGNv bnN0IHN0cnVjdCBza2xfd21fcGFyYW1zICp3cCwKPiAgCQkJCSBjb25zdCBzdHJ1Y3Qgc2tsX3dt X2xldmVsICpyZXN1bHRfcHJldiwKPiAgCQkJCSBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQg Lyogb3V0ICovKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiAtCXUzMiBsYXRlbmN5ID0gZGV2 X3ByaXYtPndtLnNrbF9sYXRlbmN5W2xldmVsXTsKPiAgCXVpbnRfZml4ZWRfMTZfMTZfdCBtZXRo b2QxLCBtZXRob2QyOwo+ICAJdWludF9maXhlZF8xNl8xNl90IHNlbGVjdGVkX3Jlc3VsdDsKPiAg CXUzMiByZXNfYmxvY2tzLCByZXNfbGluZXMsIG1pbl9kZGJfYWxsb2MgPSAwOwo+IEBAIC00ODY1 LDE5ICs1MDAzLDQ1IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgdm9pZAo+ICBza2xf Y29tcHV0ZV93bV9sZXZlbHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gIAkJICAgICAgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMgKndtX3BhcmFtcywKPiAt CQkgICAgICBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpsZXZlbHMpCj4gKwkJICAgICAgc3RydWN0IHNr bF9wbGFuZV93bSAqcGxhbmVfd20sCj4gKwkJICAgICAgYm9vbCB5dXYpCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjLT5kZXYpOwo+ICAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRl dl9wcml2KTsKPiArCS8qCj4gKwkgKiBDaGVjayB3aGljaCBraW5kIG9mIHBsYW5lIGlzIGl0IGFu ZCBiYXNlZCBvbiB0aGF0IGNhbGN1bGF0ZQo+ICsJICogY29ycmVzcG9uZGVudCBXTSBsZXZlbHMu Cj4gKwkgKi8KPiArCXN0cnVjdCBza2xfd21fbGV2ZWwgKmxldmVscyA9IHl1diA/IHBsYW5lX3dt LT51dl93bSA6IHBsYW5lX3dtLT53bTsKPiAgCXN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9w cmV2ID0gJmxldmVsc1swXTsKPiAgCj4gIAlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xl dmVsOyBsZXZlbCsrKSB7Cj4gIAkJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0ID0gJmxldmVs c1tsZXZlbF07Cj4gKwkJdTMyIGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2 ZWxdOwo+ICAKPiAtCQlza2xfY29tcHV0ZV9wbGFuZV93bShjcnRjX3N0YXRlLCBsZXZlbCwgd21f cGFyYW1zLAo+IC0JCQkJICAgICByZXN1bHRfcHJldiwgcmVzdWx0KTsKPiArCQlza2xfY29tcHV0 ZV9wbGFuZV93bShjcnRjX3N0YXRlLCBsZXZlbCwgbGF0ZW5jeSwKPiArCQkJCSAgICAgd21fcGFy YW1zLCByZXN1bHRfcHJldiwgcmVzdWx0KTsKPiAgCj4gIAkJcmVzdWx0X3ByZXYgPSByZXN1bHQ7 Cj4gKwkJaWYgKGxldmVsID09IDApIHsKPiArCQkJLyoKPiArCQkJICogRm9yIEdlbjEyIGlmIGl0 IGlzIGFuIEwwIHdlIG5lZWQgdG8gYWxzbwo+ICsJCQkgKiBjb25zaWRlciBzYWd2X2Jsb2NrX3Rp bWUgd2hlbiBjYWxjdWxhdGluZwo+ICsJCQkgKiBMMCB3YXRlcm1hcmsgLSB3ZSB3aWxsIG5lZWQg dGhhdCB3aGVuIG1ha2luZwo+ICsJCQkgKiBhIGRlY2lzaW9uIHdoZXRoZXIgZW5hYmxlIFNBR1Yg b3Igbm90Lgo+ICsJCQkgKiBGb3Igb2xkZXIgZ2VucyB3ZSBhZ3JlZWQgdG8gY29weSBMMCB2YWx1 ZSBmb3IKPiArCQkJICogY29tcGF0aWJpbGl0eS4KPiArCQkJICovCj4gKwkJCWlmICgoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMikpIHsKPiArCQkJCWxhdGVuY3kgKz0gZGV2X3ByaXYtPnNhZ3Zf YmxvY2tfdGltZV91czsKPiArCQkJCXNrbF9jb21wdXRlX3BsYW5lX3dtKGNydGNfc3RhdGUsIGxl dmVsLCBsYXRlbmN5LAo+ICsJCQkJICAgICB3bV9wYXJhbXMsIHJlc3VsdF9wcmV2LAo+ICsJCQkJ ICAgICZwbGFuZV93bS0+c2Fndl93bV9sMCk7Cj4gKwkJCX0KPiArCQkJZWxzZSAKPiArCQkJCW1l bWNweSgmcGxhbmVfd20tPnNhZ3Zfd21fbDAsICZsZXZlbHNbMF0sCj4gKwkJCQkJc2l6ZW9mKHN0 cnVjdCBza2xfd21fbGV2ZWwpKTsKPiArCQl9Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTQ5NzEsNyAr NTEzNSw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsK PiAgCj4gLQlza2xfY29tcHV0ZV93bV9sZXZlbHMoY3J0Y19zdGF0ZSwgJndtX3BhcmFtcywgd20t PndtKTsKPiArCXNrbF9jb21wdXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3 bSwgZmFsc2UpOwo+ICAJc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjcnRjX3N0YXRlLCAmd21f cGFyYW1zLCB3bSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTQ5OTMsNyArNTE1Nyw3IEBAIHN0 YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3V2KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCXNrbF9jb21w dXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bS0+dXZfd20pOwo+ICsJc2ts X2NvbXB1dGVfd21fbGV2ZWxzKGNydGNfc3RhdGUsICZ3bV9wYXJhbXMsIHdtLCB0cnVlKTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC01NTQ0LDEwICs1NzA4LDEzIEBAIHN0YXRpYyBpbnQg c2tsX3dtX2FkZF9hZmZlY3RlZF9wbGFuZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gIHN0YXRpYyBpbnQKPiAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4gIHsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFz ZS5kZXY7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBza2xfZGRiX3ZhbHVlcyAqcmVzdWx0cyA9ICZzdGF0 ZS0+d21fcmVzdWx0czsKPiArCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiA9ICZzdGF0 ZS0+d21fcmVzdWx0cy5kZGI7Cj4gIAlpbnQgcmV0LCBpOwo+ICAKPiAgCS8qIENsZWFyIGFsbCBk aXJ0eSBmbGFncyAqLwo+IEBAIC01NTU3LDYgKzU3MjQsOCBAQCBza2xfY29tcHV0ZV93bShzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJl dDsKPiAgCj4gKwlzdGF0ZS0+Z2VuMTJfY2FuX3NhZ3YgPSBmYWxzZTsKPiArCj4gIAkvKgo+ICAJ ICogQ2FsY3VsYXRlIFdNJ3MgZm9yIGFsbCBwaXBlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgdHJh bnNhY3Rpb24uCj4gIAkgKiBOb3RlIHRoYXQgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGlwZXMgbWF5 IGhhdmUgYWRkZWQgbW9yZSBDUlRDJ3MgdGhhdAo+IEBAIC01NTc5LDYgKzU3NDgsNDkgQEAgc2ts X2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJCXJlc3Vs dHMtPmRpcnR5X3BpcGVzIHw9IEJJVChjcnRjLT5waXBlKTsKPiAgCX0KPiAgCj4gKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDEyKQo+ICsJCWdvdG8gY29tcHV0ZV9kZGI7CgpJIHVuZGVyc3Rh bmQgd2h5IHlvdSBhcmUgZ290bydpbmcgdG8gYXZvaWQgdGhlIGV4dHJhIGluZGVudCBiZWxvdyAt IGNhbgp0aGUgYmxvY2sgYmV0d2VlbiBoZXJlIGFuZCBjb21wdXRlX2RkYiBqdXN0IGJlIGV4dHJh Y3RlZCB0byBhIHNlcGFyYXRlCmZ1bmN0aW9uIGluc3RlYWQ/CgotSmFtZXMKCj4gKwo+ICsJLyoK PiArCSAqIExldHMgYXNzdW1lIHdlIGNhbiB0b2xlcmF0ZSBTQUdWIGZvciBub3csCj4gKwkgKiB1 bnRpbCB3YXRlcm1hcmsgY2FsY3VsYXRpb25zIHByb3ZlIHRoZSBvcHBvc2l0ZQo+ICsJICogaWYg YW55IG9mIHRoZSBwaXBlIHBsYW5lcyBpbiB0aGUgc3RhdGUgd2lsbAo+ICsJICogZmFpbCB0aGUg cmVxdWlyZW1lbnRzIGl0IHdpbGwgYmUgYXNzaWduZWQgdG8gZmFsc2UKPiArCSAqIGluIHNrbF9j b21wdXRlX2RkYi4KPiArCSAqLwo+ICsJc3RhdGUtPmdlbjEyX2Nhbl9zYWd2ID0gdHJ1ZTsKPiAr Cj4gKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsCj4gKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gKwkJcmV0ID0g dGdsX2NoZWNrX3BpcGVfZml0c19zYWd2X3dtKG5ld19jcnRjX3N0YXRlLCBkZGIpOwo+ICsJCWlm IChyZXQpIHsKPiArCQkJc3RhdGUtPmdlbjEyX2Nhbl9zYWd2ID0gZmFsc2U7Cj4gKwkJCWJyZWFr Owo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoc3RhdGUtPmdlbjEyX2Nhbl9zYWd2KSB7Cj4gKwkJ LyoKPiArCQkgKiBJZiB3ZSBkZXRlcm1pbmVkIHRoYXQgd2UgY2FuIGFjdHVhbGx5IGVuYWJsZSBT QUdWLCB0aGVuCj4gKwkJICogYWN0dWFsbHkgdXNlIHRob3NlIGxldmVscyB0Z2xfY2hlY2tfcGlw ZV9maXRzX3NhZ3Zfd20KPiArCQkgKiBoYXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9mIGNoZWNraW5n IGlmIEwwICsgc2FndiBibG9jayB0aW1lCj4gKwkJICogZml0cyBpbnRvIGRkYi4KPiArCQkgKi8K PiArCQlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsCj4gKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gKwkJCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmU7Cj4gKwkJCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMo JmRldl9wcml2LT5kcm0sIGNydGMsIHBsYW5lKSB7Cj4gKwkJCQllbnVtIHBsYW5lX2lkIHBsYW5l X2lkID0gcGxhbmUtPmlkOwo+ICsJCQkJc3RydWN0IHNrbF9wbGFuZV93bSAqcGxhbmVfd20gPSBc Cj4gKwkJCQkgICAgJm5ld19jcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVf aWRdOwo+ICsJCQkJc3RydWN0IHNrbF93bV9sZXZlbCAqc2Fndl93bTAgPSAmcGxhbmVfd20tPnNh Z3Zfd21fbDA7Cj4gKwkJCQlzdHJ1Y3Qgc2tsX3dtX2xldmVsICpsMF93bTAgPSAmcGxhbmVfd20t PndtWzBdOwo+ICsJCQkJbWVtY3B5KGwwX3dtMCwgc2Fndl93bTAsIHNpemVvZihzdHJ1Y3Qgc2ts X3dtX2xldmVsKSk7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwo+ICtjb21wdXRlX2RkYjoKPiAg CXJldCA9IHNrbF9jb21wdXRlX2RkYihzdGF0ZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiBy ZXQ7Cj4gLS0gCj4gMi4xNy4xCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeA== 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 03949CA9EAF for ; Thu, 24 Oct 2019 22:44:47 +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 D385E21872 for ; Thu, 24 Oct 2019 22:44:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D385E21872 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=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 3E7746E877; Thu, 24 Oct 2019 22:44:46 +0000 (UTC) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7EC6A6E83C for ; Thu, 24 Oct 2019 22:44:44 +0000 (UTC) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Oct 2019 15:44:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,226,1569308400"; d="scan'208";a="373366618" Received: from jausmus-gentoo-dev6.jf.intel.com ([10.54.75.43]) by orsmga005.jf.intel.com with ESMTP; 24 Oct 2019 15:44:43 -0700 Date: Thu, 24 Oct 2019 15:45:53 -0700 From: James Ausmus To: Stanislav Lisovskiy Message-ID: <20191024224552.GA9255@jausmus-gentoo-dev6.jf.intel.com> References: <20191023090804.26607-1-stanislav.lisovskiy@intel.com> <20191023090804.26607-2-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20191023090804.26607-2-stanislav.lisovskiy@intel.com> User-Agent: Mutt/1.11.4 (2019-03-13) Subject: Re: [Intel-gfx] [PATCH v6 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, martin.peres@intel.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191024224553.BibEraVNLrlPucec5FU8P3RNj9zpmB9VUxjKiFC6I60@z> T24gV2VkLCBPY3QgMjMsIDIwMTkgYXQgMTI6MDg6MDNQTSArMDMwMCwgU3RhbmlzbGF2IExpc292 c2tpeSB3cm90ZToKPiBDdXJyZW50bHkgaW50ZWxfY2FuX2VuYWJsZV9zYWd2IGZ1bmN0aW9uIGNv bnRhaW5zCj4gYSBtaXggb2Ygd29ya2Fyb3VuZHMgZm9yIGRpZmZlcmVudCBwbGF0Zm9ybXMKPiBz b21lIG9mIHRoZW0gYXJlIG5vdCB2YWxpZCBmb3IgZ2VucyA+PSAxMSBhbHJlYWR5LAo+IHNvIGxl dHMgc3BsaXQgaXQgaW50byBzZXBhcmF0ZSBmdW5jdGlvbnMuCj4gCj4gdjI6Cj4gICAgIC0gUmV3 b3JrIHdhdGVybWFyayBjYWxjdWxhdGlvbiBhbGdvcml0aG0gdG8KPiAgICAgICBhdHRlbXB0IHRv IGNhbGN1bGF0ZSBMZXZlbCAwIHdhdGVybWFyawo+ICAgICAgIHdpdGggYWRkZWQgc2FndiBibG9j ayB0aW1lIGxhdGVuY3kgYW5kCj4gICAgICAgY2hlY2sgaWYgaXQgZml0cyBpbiBEQnVmIGluIG9y ZGVyIHRvCj4gICAgICAgZGV0ZXJtaW5lIGlmIFNBR1YgY2FuIGJlIGVuYWJsZWQgYWxyZWFkeQo+ ICAgICAgIGF0IHRoaXMgc3RhZ2UsIGp1c3QgYXMgQlNwZWMgNDkzMjUgc3RhdGVzLgo+ICAgICAg IGlmIHRoYXQgZmFpbHMgcm9sbGJhY2sgdG8gdXN1YWwgTGV2ZWwgMAo+ICAgICAgIGxhdGVuY3kg YW5kIGRpc2FibGUgU0FHVi4KPiAgICAgLSBSZW1vdmUgdW5uZWVkZWQgdGFicyhKYW1lcyBBdXNt dXMpCj4gCj4gdjM6IFJlYmFzZWQgdGhlIHBhdGNoCj4gCj4gU2lnbmVkLW9mZi1ieTogU3Rhbmlz bGF2IExpc292c2tpeSA8c3RhbmlzbGF2Lmxpc292c2tpeUBpbnRlbC5jb20+Cj4gQ2M6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBpbnRlbC5jb20+Cj4gQ2M6IEphbWVzIEF1c211cyA8 amFtZXMuYXVzbXVzQGludGVsLmNvbT4KPiAtLS0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgICA4ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyAgICAgICAgICAgICAgIHwgMjI4ICsrKysrKysrKysrKysrKysrLQo+ICAyIGZpbGVz IGNoYW5nZWQsIDIyOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gaW5k ZXggODM1ODE1MmU0MDNlLi5mMDljODBjOTY0NzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IEBAIC00OTAsNiArNDkw LDEzIEBAIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgewo+ICAJICovCj4gIAl1OCBhY3RpdmVf cGlwZV9jaGFuZ2VzOwo+ICAKPiArCS8qCj4gKwkgKiBGb3IgR2VuMTIgb25seSBhZnRlciBjYWxj dWxhdGluZyB3YXRlcm1hcmtzIHdpdGgKPiArCSAqIGFkZGl0aW9uYWwgbGF0ZW5jeSwgd2UgY2Fu IGRldGVybWluZSBpZiBTQUdWIGNhbiBiZSBlbmFibGVkCj4gKwkgKiBvciBub3QgZm9yIHRoYXQg cGFydGljdWxhciBjb25maWd1cmF0aW9uLgo+ICsJICovCj4gKwlib29sIGdlbjEyX2Nhbl9zYWd2 Owo+ICsKPiAgCXU4IGFjdGl2ZV9waXBlczsKPiAgCS8qIG1pbmltdW0gYWNjZXB0YWJsZSBjZGNs ayBmb3IgZWFjaCBwaXBlICovCj4gIAlpbnQgbWluX2NkY2xrW0k5MTVfTUFYX1BJUEVTXTsKPiBA QCAtNjQyLDYgKzY0OSw3IEBAIHN0cnVjdCBza2xfcGxhbmVfd20gewo+ICAJc3RydWN0IHNrbF93 bV9sZXZlbCB3bVs4XTsKPiAgCXN0cnVjdCBza2xfd21fbGV2ZWwgdXZfd21bOF07Cj4gIAlzdHJ1 Y3Qgc2tsX3dtX2xldmVsIHRyYW5zX3dtOwo+ICsJc3RydWN0IHNrbF93bV9sZXZlbCBzYWd2X3dt X2wwOwo+ICAJYm9vbCBpc19wbGFuYXI7Cj4gIH07Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u Ywo+IGluZGV4IDM2MjIzNDQ0OTA4Ny4uYzA0MTllNGQ4M2RlIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCj4gQEAgLTM3NTEsNyArMzc1MSw3IEBAIGludGVsX2Rpc2FibGVfc2FndihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAt Ym9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4gK2Jvb2wgc2tsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICpzdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRl djsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiBAQCAtMzgxNyw2ICszODE3LDc1IEBAIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAgCj4g K2Jvb2wgaWNsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRldjsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjOwo+ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlOwo+ICsJaW50IGxldmVsLCBsYXRlbmN5Owo+ICsJaW50IGk7Cj4gKwlpbnQgcGxh bmVfaWQ7Cj4gKwo+ICsJaWYgKCFpbnRlbF9oYXNfc2FndihkZXZfcHJpdikpCj4gKwkJcmV0dXJu IGZhbHNlOwo+ICsKPiArCS8qCj4gKwkgKiBJZiB0aGVyZSBhcmUgbm8gYWN0aXZlIENSVENzLCBu byBhZGRpdGlvbmFsIGNoZWNrcyBuZWVkIGJlIHBlcmZvcm1lZAo+ICsJICovCj4gKwlpZiAoaHdl aWdodDgoc3RhdGUtPmFjdGl2ZV9waXBlcykgPT0gMCkKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCj4g Kwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywKPiArCQkJCQkg ICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gKwo+ICsJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5h ZGp1c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCj4gKwkJCXJldHVy biBmYWxzZTsKPiArCj4gKwkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gKwkJ CWNvbnRpbnVlOwo+ICsKPiArCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGNydGMsIHBsYW5l X2lkKSB7Cj4gKwkJCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KPiArCQkJCSZuZXdfY3J0Y19z dGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKPiArCj4gKwkJCS8qIFNraXAg dGhpcyBwbGFuZSBpZiBpdCdzIG5vdCBlbmFibGVkICovCj4gKwkJCWlmICghd20tPndtWzBdLnBs YW5lX2VuKQo+ICsJCQkJY29udGludWU7Cj4gKwo+ICsJCQkvKiBGaW5kIHRoZSBoaWdoZXN0IGVu YWJsZWQgd20gbGV2ZWwgZm9yIHRoaXMgcGxhbmUgKi8KPiArCQkJZm9yIChsZXZlbCA9IGlsa193 bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOwo+ICsJCQkgICAgICF3bS0+d21bbGV2ZWxdLnBsYW5lX2Vu OyAtLWxldmVsKQo+ICsJCQkgICAgIHsgfQo+ICsKPiArCQkJbGF0ZW5jeSA9IGRldl9wcml2LT53 bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4gKwo+ICsJCQkvKgo+ICsJCQkgKiBJZiBhbnkgb2YgdGhl IHBsYW5lcyBvbiB0aGlzIHBpcGUgZG9uJ3QgZW5hYmxlIHdtIGxldmVscyB0aGF0Cj4gKwkJCSAq IGluY3VyIG1lbW9yeSBsYXRlbmNpZXMgaGlnaGVyIHRoYW4gc2Fndl9ibG9ja190aW1lX3VzIHdl Cj4gKwkJCSAqIGNhbid0IGVuYWJsZSBTQUdWLgo+ICsJCQkgKi8KPiArCQkJaWYgKGxhdGVuY3kg PCBkZXZfcHJpdi0+c2Fndl9ibG9ja190aW1lX3VzKQo+ICsJCQkJcmV0dXJuIGZhbHNlOwo+ICsJ CX0KPiArCX0KPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArYm9vbCBpbnRlbF9jYW5f ZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwo+ICsJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTIpCj4gKwkJcmV0dXJuIHN0YXRlLT5nZW4xMl9jYW5fc2FndjsKClRo aXMgbG9zZXMgdGhlIGludGVybGFjZWQgbW9kZSBjaGVjayB0aGF0IHRoZSBza2wgYW5kIGljbCBm dW5jdGlvbnMKaGF2ZSwgd2hpY2ggaXMgc3RpbGwgbmVlZGVkIGZvciBUR0wKCgo+ICsJZWxzZSBp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA9PSAxMSkKPiArCQlyZXR1cm4gaWNsX2Nhbl9lbmFibGVf c2FndihzdGF0ZSk7Cj4gKwo+ICsJcmV0dXJuIHNrbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpOwo+ ICt9Cj4gKwo+ICBzdGF0aWMgdTE2IGludGVsX2dldF9kZGJfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJCQkgICAgICBjb25zdCB1NjQgdG90YWxfZGF0YV9yYXRlLAo+ IEBAIC0zOTM2LDYgKzQwMDUsNyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3dtX3BhcmFtcyhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBpbnQgY29s b3JfcGxhbmUpOwo+ICBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCSBpbnQgbGV2ZWwsCj4gKwkJ CQkgdTMyIGxhdGVuY3ksCj4gIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMgKndwLAo+ ICAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9wcmV2LAo+ICAJCQkJIHN0 cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8pOwo+IEBAIC0zOTU4LDcgKzQwMjgs OCBAQCBza2xfY3Vyc29yX2FsbG9jYXRpb24oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCj4gIAlXQVJOX09OKHJldCk7Cj4gIAo+ICAJZm9yIChsZXZlbCA9IDA7IGxl dmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykgewo+IC0JCXNrbF9jb21wdXRlX3BsYW5lX3dtKGNy dGNfc3RhdGUsIGxldmVsLCAmd3AsICZ3bSwgJndtKTsKPiArCQl1MzIgbGF0ZW5jeSA9IGRldl9w cml2LT53bS5za2xfbGF0ZW5jeVtsZXZlbF07Cj4gKwkJc2tsX2NvbXB1dGVfcGxhbmVfd20oY3J0 Y19zdGF0ZSwgbGV2ZWwsIGxhdGVuY3ksICZ3cCwgJndtLCAmd20pOwo+ICAJCWlmICh3bS5taW5f ZGRiX2FsbG9jID09IFUxNl9NQVgpCj4gIAkJCWJyZWFrOwo+ICAKPiBAQCAtNDMxMCw2ICs0Mzgx LDczIEBAIGljbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJcmV0dXJuIHRvdGFsX2RhdGFfcmF0ZTsKPiAgfQo+ICAK PiArc3RhdGljIGludAo+ICt0Z2xfY2hlY2tfcGlwZV9maXRzX3NhZ3Zfd20oc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2Nh dGlvbiAqZGRiIC8qIG91dCAqLykKPiArewo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5kZXYpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0g JmNydGNfc3RhdGUtPndtLnNrbC5kZGI7Cj4gKwl1MTYgYWxsb2Nfc2l6ZTsKPiArCXUxNiB0b3Rh bFtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gKwl1NjQgdG90YWxfZGF0YV9yYXRlOwo+ICsJZW51 bSBwbGFuZV9pZCBwbGFuZV9pZDsKPiArCWludCBudW1fYWN0aXZlOwo+ICsJdTY0IHBsYW5lX2Rh dGFfcmF0ZVtJOTE1X01BWF9QTEFORVNdID0ge307Cj4gKwl1NjQgdXZfcGxhbmVfZGF0YV9yYXRl W0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKPiArCXUzMiBibG9ja3M7Cj4gKwo+ICsJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTEpCj4gKwkJdG90YWxfZGF0YV9yYXRlID0KPiArCQkJaWNsX2dl dF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3J0Y19zdGF0ZSwKPiArCQkJCQkJCSBwbGFuZV9k YXRhX3JhdGUpOwoKVGhpcyBmdW5jdGlvbiBpcyBhbHJlYWR5IG9ubHkgY2FsbGVkIG9uIGdlbjEy KyAtIGNvdWxkIGRyb3AgdGhlIGlmCmNoZWNrLCBhbmQgdGhlIGVudGlyZSBlbHNlIGJsb2NrLgoK Cj4gKwllbHNlCj4gKwkJdG90YWxfZGF0YV9yYXRlID0KPiArCQkJc2tsX2dldF90b3RhbF9yZWxh dGl2ZV9kYXRhX3JhdGUoY3J0Y19zdGF0ZSwKPiArCQkJCQkJCSBwbGFuZV9kYXRhX3JhdGUsCj4g KwkJCQkJCQkgdXZfcGxhbmVfZGF0YV9yYXRlKTsKPiArCj4gKwo+ICsJc2tsX2RkYl9nZXRfcGlw ZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgdG90YWxfZGF0YV9yYXRl LAo+ICsJCQkJCSAgIGRkYiwgYWxsb2MsICZudW1fYWN0aXZlKTsKPiArCWFsbG9jX3NpemUgPSBz a2xfZGRiX2VudHJ5X3NpemUoYWxsb2MpOwo+ICsJaWYgKGFsbG9jX3NpemUgPT0gMCkKPiArCQly ZXR1cm4gLUVOT1NQQzsKPiArCj4gKwkvKiBBbGxvY2F0ZSBmaXhlZCBudW1iZXIgb2YgYmxvY2tz IGZvciBjdXJzb3IuICovCj4gKwl0b3RhbFtQTEFORV9DVVJTT1JdID0gc2tsX2N1cnNvcl9hbGxv Y2F0aW9uKGNydGNfc3RhdGUsIG51bV9hY3RpdmUpOwo+ICsJYWxsb2Nfc2l6ZSAtPSB0b3RhbFtQ TEFORV9DVVJTT1JdOwo+ICsJY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NV UlNPUl0uc3RhcnQgPQo+ICsJCWFsbG9jLT5lbmQgLSB0b3RhbFtQTEFORV9DVVJTT1JdOwo+ICsJ Y3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W1BMQU5FX0NVUlNPUl0uZW5kID0gYWxsb2Mt PmVuZDsKPiArCj4gKwkvKgo+ICsJICogRG8gY2hlY2sgaWYgd2UgY2FuIGZpdCBMMCArIHNhZ3Zf YmxvY2tfdGltZSBhbmQKPiArCSAqIGRpc2FibGUgU0FHViBpZiB3ZSBjYW4ndC4KPiArCSAqLwo+ ICsJYmxvY2tzID0gMDsKPiArCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0Yywg cGxhbmVfaWQpIHsKPiArCQljb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9Cj4gKwkJCSZj cnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVfaWRdOwo+ICsKPiArCQlpZiAo cGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKSB7Cj4gKwkJCWlmIChXQVJOX09OKHdtLT5zYWd2X3dt X2wwLm1pbl9kZGJfYWxsb2MgPgo+ICsJCQkJICAgIHRvdGFsW1BMQU5FX0NVUlNPUl0pKSB7Cj4g KwkJCQlibG9ja3MgPSBVMzJfTUFYOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCQkJY29udGlu dWU7Cj4gKwkJfQo+ICsKPiArCQlibG9ja3MgKz0gd20tPnNhZ3Zfd21fbDAubWluX2RkYl9hbGxv YzsKPiArCQlpZiAoYmxvY2tzID4gYWxsb2Nfc2l6ZSkgewo+ICsJCQlyZXR1cm4gLUVOT1NQQzsK PiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludAo+ICBza2xf YWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4g IAkJICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLykKPiBAQCAt NDczOSwxMiArNDg3NywxMiBAQCBzdGF0aWMgYm9vbCBza2xfd21faGFzX2xpbmVzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IGxldmVsKQo+ICAKPiAgc3RhdGljIHZvaWQg c2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCj4gIAkJCQkgaW50IGxldmVsLAo+ICsJCQkJIHUzMiBsYXRlbmN5LAo+ICAJCQkJIGNv bnN0IHN0cnVjdCBza2xfd21fcGFyYW1zICp3cCwKPiAgCQkJCSBjb25zdCBzdHJ1Y3Qgc2tsX3dt X2xldmVsICpyZXN1bHRfcHJldiwKPiAgCQkJCSBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQg Lyogb3V0ICovKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNydGNfc3RhdGUtPmJhc2UuY3J0Yy0+ZGV2KTsKPiAtCXUzMiBsYXRlbmN5ID0gZGV2 X3ByaXYtPndtLnNrbF9sYXRlbmN5W2xldmVsXTsKPiAgCXVpbnRfZml4ZWRfMTZfMTZfdCBtZXRo b2QxLCBtZXRob2QyOwo+ICAJdWludF9maXhlZF8xNl8xNl90IHNlbGVjdGVkX3Jlc3VsdDsKPiAg CXUzMiByZXNfYmxvY2tzLCByZXNfbGluZXMsIG1pbl9kZGJfYWxsb2MgPSAwOwo+IEBAIC00ODY1 LDE5ICs1MDAzLDQ1IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICBzdGF0aWMgdm9pZAo+ICBza2xf Y29tcHV0ZV93bV9sZXZlbHMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCj4gIAkJICAgICAgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMgKndtX3BhcmFtcywKPiAt CQkgICAgICBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpsZXZlbHMpCj4gKwkJICAgICAgc3RydWN0IHNr bF9wbGFuZV93bSAqcGxhbmVfd20sCj4gKwkJICAgICAgYm9vbCB5dXYpCj4gIHsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFzZS5j cnRjLT5kZXYpOwo+ICAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRl dl9wcml2KTsKPiArCS8qCj4gKwkgKiBDaGVjayB3aGljaCBraW5kIG9mIHBsYW5lIGlzIGl0IGFu ZCBiYXNlZCBvbiB0aGF0IGNhbGN1bGF0ZQo+ICsJICogY29ycmVzcG9uZGVudCBXTSBsZXZlbHMu Cj4gKwkgKi8KPiArCXN0cnVjdCBza2xfd21fbGV2ZWwgKmxldmVscyA9IHl1diA/IHBsYW5lX3dt LT51dl93bSA6IHBsYW5lX3dtLT53bTsKPiAgCXN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9w cmV2ID0gJmxldmVsc1swXTsKPiAgCj4gIAlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xl dmVsOyBsZXZlbCsrKSB7Cj4gIAkJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0ID0gJmxldmVs c1tsZXZlbF07Cj4gKwkJdTMyIGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2 ZWxdOwo+ICAKPiAtCQlza2xfY29tcHV0ZV9wbGFuZV93bShjcnRjX3N0YXRlLCBsZXZlbCwgd21f cGFyYW1zLAo+IC0JCQkJICAgICByZXN1bHRfcHJldiwgcmVzdWx0KTsKPiArCQlza2xfY29tcHV0 ZV9wbGFuZV93bShjcnRjX3N0YXRlLCBsZXZlbCwgbGF0ZW5jeSwKPiArCQkJCSAgICAgd21fcGFy YW1zLCByZXN1bHRfcHJldiwgcmVzdWx0KTsKPiAgCj4gIAkJcmVzdWx0X3ByZXYgPSByZXN1bHQ7 Cj4gKwkJaWYgKGxldmVsID09IDApIHsKPiArCQkJLyoKPiArCQkJICogRm9yIEdlbjEyIGlmIGl0 IGlzIGFuIEwwIHdlIG5lZWQgdG8gYWxzbwo+ICsJCQkgKiBjb25zaWRlciBzYWd2X2Jsb2NrX3Rp bWUgd2hlbiBjYWxjdWxhdGluZwo+ICsJCQkgKiBMMCB3YXRlcm1hcmsgLSB3ZSB3aWxsIG5lZWQg dGhhdCB3aGVuIG1ha2luZwo+ICsJCQkgKiBhIGRlY2lzaW9uIHdoZXRoZXIgZW5hYmxlIFNBR1Yg b3Igbm90Lgo+ICsJCQkgKiBGb3Igb2xkZXIgZ2VucyB3ZSBhZ3JlZWQgdG8gY29weSBMMCB2YWx1 ZSBmb3IKPiArCQkJICogY29tcGF0aWJpbGl0eS4KPiArCQkJICovCj4gKwkJCWlmICgoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMikpIHsKPiArCQkJCWxhdGVuY3kgKz0gZGV2X3ByaXYtPnNhZ3Zf YmxvY2tfdGltZV91czsKPiArCQkJCXNrbF9jb21wdXRlX3BsYW5lX3dtKGNydGNfc3RhdGUsIGxl dmVsLCBsYXRlbmN5LAo+ICsJCQkJICAgICB3bV9wYXJhbXMsIHJlc3VsdF9wcmV2LAo+ICsJCQkJ ICAgICZwbGFuZV93bS0+c2Fndl93bV9sMCk7Cj4gKwkJCX0KPiArCQkJZWxzZSAKPiArCQkJCW1l bWNweSgmcGxhbmVfd20tPnNhZ3Zfd21fbDAsICZsZXZlbHNbMF0sCj4gKwkJCQkJc2l6ZW9mKHN0 cnVjdCBza2xfd21fbGV2ZWwpKTsKPiArCQl9Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTQ5NzEsNyAr NTEzNSw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3NpbmdsZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsK PiAgCj4gLQlza2xfY29tcHV0ZV93bV9sZXZlbHMoY3J0Y19zdGF0ZSwgJndtX3BhcmFtcywgd20t PndtKTsKPiArCXNrbF9jb21wdXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3 bSwgZmFsc2UpOwo+ICAJc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjcnRjX3N0YXRlLCAmd21f cGFyYW1zLCB3bSk7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTQ5OTMsNyArNTE1Nyw3IEBAIHN0 YXRpYyBpbnQgc2tsX2J1aWxkX3BsYW5lX3dtX3V2KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAo+ICAJaWYgKHJldCkKPiAgCQlyZXR1cm4gcmV0Owo+ICAKPiAtCXNrbF9jb21w dXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bS0+dXZfd20pOwo+ICsJc2ts X2NvbXB1dGVfd21fbGV2ZWxzKGNydGNfc3RhdGUsICZ3bV9wYXJhbXMsIHdtLCB0cnVlKTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IEBAIC01NTQ0LDEwICs1NzA4LDEzIEBAIHN0YXRpYyBpbnQg c2tsX3dtX2FkZF9hZmZlY3RlZF9wbGFuZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCj4gIHN0YXRpYyBpbnQKPiAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUpCj4gIHsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+YmFz ZS5kZXY7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKPiAgCXN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpv bGRfY3J0Y19zdGF0ZTsKPiAgCXN0cnVjdCBza2xfZGRiX3ZhbHVlcyAqcmVzdWx0cyA9ICZzdGF0 ZS0+d21fcmVzdWx0czsKPiArCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiA9ICZzdGF0 ZS0+d21fcmVzdWx0cy5kZGI7Cj4gIAlpbnQgcmV0LCBpOwo+ICAKPiAgCS8qIENsZWFyIGFsbCBk aXJ0eSBmbGFncyAqLwo+IEBAIC01NTU3LDYgKzU3MjQsOCBAQCBza2xfY29tcHV0ZV93bShzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJl dDsKPiAgCj4gKwlzdGF0ZS0+Z2VuMTJfY2FuX3NhZ3YgPSBmYWxzZTsKPiArCj4gIAkvKgo+ICAJ ICogQ2FsY3VsYXRlIFdNJ3MgZm9yIGFsbCBwaXBlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgdHJh bnNhY3Rpb24uCj4gIAkgKiBOb3RlIHRoYXQgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGlwZXMgbWF5 IGhhdmUgYWRkZWQgbW9yZSBDUlRDJ3MgdGhhdAo+IEBAIC01NTc5LDYgKzU3NDgsNDkgQEAgc2ts X2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gIAkJCXJlc3Vs dHMtPmRpcnR5X3BpcGVzIHw9IEJJVChjcnRjLT5waXBlKTsKPiAgCX0KPiAgCj4gKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA8IDEyKQo+ICsJCWdvdG8gY29tcHV0ZV9kZGI7CgpJIHVuZGVyc3Rh bmQgd2h5IHlvdSBhcmUgZ290bydpbmcgdG8gYXZvaWQgdGhlIGV4dHJhIGluZGVudCBiZWxvdyAt IGNhbgp0aGUgYmxvY2sgYmV0d2VlbiBoZXJlIGFuZCBjb21wdXRlX2RkYiBqdXN0IGJlIGV4dHJh Y3RlZCB0byBhIHNlcGFyYXRlCmZ1bmN0aW9uIGluc3RlYWQ/CgotSmFtZXMKCj4gKwo+ICsJLyoK PiArCSAqIExldHMgYXNzdW1lIHdlIGNhbiB0b2xlcmF0ZSBTQUdWIGZvciBub3csCj4gKwkgKiB1 bnRpbCB3YXRlcm1hcmsgY2FsY3VsYXRpb25zIHByb3ZlIHRoZSBvcHBvc2l0ZQo+ICsJICogaWYg YW55IG9mIHRoZSBwaXBlIHBsYW5lcyBpbiB0aGUgc3RhdGUgd2lsbAo+ICsJICogZmFpbCB0aGUg cmVxdWlyZW1lbnRzIGl0IHdpbGwgYmUgYXNzaWduZWQgdG8gZmFsc2UKPiArCSAqIGluIHNrbF9j b21wdXRlX2RkYi4KPiArCSAqLwo+ICsJc3RhdGUtPmdlbjEyX2Nhbl9zYWd2ID0gdHJ1ZTsKPiAr Cj4gKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsCj4gKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gKwkJcmV0ID0g dGdsX2NoZWNrX3BpcGVfZml0c19zYWd2X3dtKG5ld19jcnRjX3N0YXRlLCBkZGIpOwo+ICsJCWlm IChyZXQpIHsKPiArCQkJc3RhdGUtPmdlbjEyX2Nhbl9zYWd2ID0gZmFsc2U7Cj4gKwkJCWJyZWFr Owo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoc3RhdGUtPmdlbjEyX2Nhbl9zYWd2KSB7Cj4gKwkJ LyoKPiArCQkgKiBJZiB3ZSBkZXRlcm1pbmVkIHRoYXQgd2UgY2FuIGFjdHVhbGx5IGVuYWJsZSBT QUdWLCB0aGVuCj4gKwkJICogYWN0dWFsbHkgdXNlIHRob3NlIGxldmVscyB0Z2xfY2hlY2tfcGlw ZV9maXRzX3NhZ3Zfd20KPiArCQkgKiBoYXMgYWxyZWFkeSB0YWtlbiBjYXJlIG9mIGNoZWNraW5n IGlmIEwwICsgc2FndiBibG9jayB0aW1lCj4gKwkJICogZml0cyBpbnRvIGRkYi4KPiArCQkgKi8K PiArCQlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xk X2NydGNfc3RhdGUsCj4gKwkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gKwkJCXN0cnVj dCBpbnRlbF9wbGFuZSAqcGxhbmU7Cj4gKwkJCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMo JmRldl9wcml2LT5kcm0sIGNydGMsIHBsYW5lKSB7Cj4gKwkJCQllbnVtIHBsYW5lX2lkIHBsYW5l X2lkID0gcGxhbmUtPmlkOwo+ICsJCQkJc3RydWN0IHNrbF9wbGFuZV93bSAqcGxhbmVfd20gPSBc Cj4gKwkJCQkgICAgJm5ld19jcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5wbGFuZXNbcGxhbmVf aWRdOwo+ICsJCQkJc3RydWN0IHNrbF93bV9sZXZlbCAqc2Fndl93bTAgPSAmcGxhbmVfd20tPnNh Z3Zfd21fbDA7Cj4gKwkJCQlzdHJ1Y3Qgc2tsX3dtX2xldmVsICpsMF93bTAgPSAmcGxhbmVfd20t PndtWzBdOwo+ICsJCQkJbWVtY3B5KGwwX3dtMCwgc2Fndl93bTAsIHNpemVvZihzdHJ1Y3Qgc2ts X3dtX2xldmVsKSk7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwo+ICtjb21wdXRlX2RkYjoKPiAg CXJldCA9IHNrbF9jb21wdXRlX2RkYihzdGF0ZSk7Cj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiBy ZXQ7Cj4gLS0gCj4gMi4xNy4xCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeA==