From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sagar Arun Kamble Subject: [PATCH v12 06/17] drm/i915/guc/slpc: Allocate/initialize/release SLPC shared data Date: Fri, 30 Mar 2018 14:01:51 +0530 Message-ID: <1522398722-12161-7-git-send-email-sagar.a.kamble@intel.com> References: <1522398722-12161-1-git-send-email-sagar.a.kamble@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 27E306E85A for ; Fri, 30 Mar 2018 08:28:41 +0000 (UTC) In-Reply-To: <1522398722-12161-1-git-send-email-sagar.a.kamble@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Sujaritha Sundaresan , Tom O'Rourke List-Id: intel-gfx@lists.freedesktop.org UG9wdWxhdGUgU0xQQyBzaGFyZWQgZGF0YSB3aXRoIHJlcXVpcmVkIGRlZmF1bHQgdmFsdWVzIGZv ciBzbGljZSBjb3VudCwKcG93ZXIgc291cmNlL3BsYW4sIElBIHBlcmYgTVNScy4KCnYxOiBVcGRh dGUgZm9yIFNMUEMgaW50ZXJmYWNlIHZlcnNpb24gMjAxNS4yLjQuIGludGVsX3NscGNfYWN0aXZl KCkKICAgIHJldHVybnMgMSBpZiBzbHBjIGluaXRpYWxpemVkIChQYXVsbykKICAgIGNoYW5nZSBk ZWZhdWx0IGhvc3Rfb3MgdG8gIldpbmRvd3MiCiAgICBTcGVsbGluZyBmaXhlcyAoU2FnYXIgYW5k IE5pY2sgSG9hdGgpLiBBZGRlZCBXQVJOIGZvciBjaGVja2luZyBpZgogICAgdXBwZXIgMzJiaXRz IG9mIEdUVCBvZmZzZXQgb2Ygc2hhcmVkIG9iamVjdCBhcmUgemVyby4gKENocmlzKQogICAgVXBk YXRlZCBjb21taXQgbWVzc2FnZSBhbmQgbW92ZWQgUE9XRVJfUExBTiBhbmQgUE9XRVJfU09VUkNF IGRlZm4uCiAgICBmcm9tIGxhdGVyIHBhdGNoLiAoQWthc2gpCiAgICBBZGQgc3RydWN0X211dGV4 IGxvY2tpbmcgd2hpbGUgYWxsb2NhdGluZy9yZWxlYXNpbmcgc2xwYyBzaGFyZWQKICAgIG9iamVj dC4gVGhpcyB3YXMgY2F1Z2h0IGJ5IENJIEJBVC4gQWRkaW5nIFNMUEMgc3RhdGUgdmFyaWFibGUg dG8KICAgIGRldGVybWluZSBpZiBpdCBpcyBhY3RpdmUgYXMgaXQgbm90IGp1c3QgZGVwZW5kZW50 IG9uIHNoYXJlZCBkYXRhCiAgICBzZXR1cC4gUmViYXNlIHdpdGggZ3VjX2FsbG9jYXRlX3ZtYSBy ZWxhdGVkIGNoYW5nZXMuCgp2MjogV0FSTl9PTiBmb3IgcGxhdGZvcm1fc2t1IHZhbGlkaXR5IGFu ZCBzcGFjZSBjaGFuZ2VzLihEYXZpZCkKICAgIENoZWNrcGF0Y2ggdXBkYXRlLgoKdjM6IEZpeGlu ZyBXQVJOSU5HIGluIGlndEBkcnZfbW9kdWxlX3JlbG9hZF9iYXNpYyBmb3VuZCBpbiB0cnlib3Qg QkFUCiAgICB3aXRoIFNMUEMgRW5hYmxlZC4KCnY0OiBVcGRhdGVkIHN1cHBvcnQgZm9yIEd1QyB2 OS4gcy9zbGljZV90b3RhbC9od2VpZ2h0OChzbGljZV9tYXNrKS8oRGF2ZSkuCgp2NTogU0xQQyB2 bWEgbWFwIGNoYW5nZXMgYW5kIHJlbW92ZWQgZXhwbGljaXQgdHlwZSBjb252ZXJzaW9ucy4oQ2hy aXMpLgogICAgcy9mcmVxX3Vuc2xpY2VfbWF4fG1pbi91bnNsaWNlX19tYXh8bWluX2ZyZXEuCgp2 NjogQ29tbWl0IG1lc3NhZ2UgdXBkYXRlLiBzL21zcl92YWx1ZS92YWwgZm9yIHJldXNlIGxhdGVy LgoKdjc6IFNldCBkZWZhdWx0IHZhbHVlcyBmb3IgdGFza3MgYW5kIG1pbiBmcmVxdWVuY3kgcGFy YW1ldGVycy4gTW92ZWQgaW5pdAogICAgd2l0aCBhbGxvY2F0aW9uIG9mIGRhdGEgc28gdGhhdCBw b3N0IEd1QyBsb2FkIGVhcmxpZXIgcGFyYW1zIHBlcnNpc3QuCgp2ODogQWRkZWQgY2hlY2sgZm9y IFNMUEMgc3RhdHVzIGR1cmluZyBjbGVhbnVwIG9mIHNoYXJlZCBkYXRhLiBTTFBDCiAgICBkaXNh YmxpbmcgaXMgYXN5bmNocm9ub3VzIGFuZCBzaG91bGQgY29tcGxldGUgd2l0aGluIDEwdXMuCgp2 OTogRW5hYmxpbmcgQmFsYW5jZXIgdGFzayBpbiBTTFBDLgoKdjEwOiBSZWJhc2UuCgp2MTE6IFJl YmFzZS4gQWRkZWQgbG9jayBzcGVjaWZpYyB0byBTTFBDLgoKU2lnbmVkLW9mZi1ieTogVG9tIE8n Um91cmtlIDxUb20uTydSb3Vya2VAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBTYWdhciBBcnVu IEthbWJsZSA8c2FnYXIuYS5rYW1ibGVAaW50ZWwuY29tPgpDYzogQ2hyaXMgV2lsc29uIDxjaHJp c0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5l bkBsaW51eC5pbnRlbC5jb20+CkNjOiBSYWRvc2xhdyBTendpY2h0ZW5iZXJnIDxyYWRvc2xhdy5z endpY2h0ZW5iZXJnQGludGVsLmNvbT4KQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpk ZWN6a29AaW50ZWwuY29tPgpDYzogU3VqYXJpdGhhIFN1bmRhcmVzYW4gPHN1amFyaXRoYS5zdW5k YXJlc2FuQGludGVsLmNvbT4KQ2M6IEplZmYgTWNHZWUgPGplZmYubWNnZWVAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgfCAgIDUgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3NscGMuYyB8IDIwNCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfc2xwYy5oIHwg ICAzICsKIDMgZmlsZXMgY2hhbmdlZCwgMjEyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAppbmRleCA1MTc2ODAxLi5kMTdlNzc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK QEAgLTI0MTYsNiArMjQxNiwxMSBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAogI2RlZmluZSBJU19BTFBIQV9TVVBQT1JUKGludGVsX2luZm8p ICgoaW50ZWxfaW5mbyktPmlzX2FscGhhX3N1cHBvcnQpCiAKKyNkZWZpbmUgSVNfVUxYX1NLVShk ZXZfcHJpdikJKElTX1NLTF9VTFgoZGV2X3ByaXYpIHx8IElTX0tCTF9VTFgoZGV2X3ByaXYpKQor I2RlZmluZSBJU19VTFRfU0tVKGRldl9wcml2KQkoSVNfU0tMX1VMVChkZXZfcHJpdikgfHwgXAor CQkJCSBJU19LQkxfVUxUKGRldl9wcml2KSB8fCBcCisJCQkJIElTX0NGTF9VTFQoZGV2X3ByaXYp KQorCiAjZGVmaW5lIFNLTF9SRVZJRF9BMAkJMHgwCiAjZGVmaW5lIFNLTF9SRVZJRF9CMAkJMHgx CiAjZGVmaW5lIFNLTF9SRVZJRF9DMAkJMHgyCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfc2xwYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3Ns cGMuYwppbmRleCA2M2YxMDBjLi45NzRhM2MwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfc2xwYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Y19zbHBjLmMKQEAgLTQsMTAgKzQsMjAzIEBACiAgKiBDb3B5cmlnaHQgwqkgMjAxNS0yMDE4IElu dGVsIENvcnBvcmF0aW9uCiAgKi8KIAorI2luY2x1ZGUgPGFzbS9tc3ItaW5kZXguaD4KKworI2lu Y2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaW50ZWxfZ3VjX3NscGMuaCIKIAorc3RhdGlj IGlubGluZSBzdHJ1Y3QgaW50ZWxfZ3VjICpzbHBjX3RvX2d1YyhzdHJ1Y3QgaW50ZWxfZ3VjX3Ns cGMgKnNscGMpCit7CisJcmV0dXJuIGNvbnRhaW5lcl9vZihzbHBjLCBzdHJ1Y3QgaW50ZWxfZ3Vj LCBzbHBjKTsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBzbHBjX2dldF9wbGF0Zm9ybV9za3Uo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWVudW0gc2xwY19wbGF0Zm9y bV9za3UgcGxhdGZvcm1fc2t1OworCisJaWYgKElTX1VMWF9TS1UoZGV2X3ByaXYpKQorCQlwbGF0 Zm9ybV9za3UgPSBTTFBDX1BMQVRGT1JNX1NLVV9VTFg7CisJZWxzZSBpZiAoSVNfVUxUX1NLVShk ZXZfcHJpdikpCisJCXBsYXRmb3JtX3NrdSA9IFNMUENfUExBVEZPUk1fU0tVX1VMVDsKKwllbHNl CisJCXBsYXRmb3JtX3NrdSA9IFNMUENfUExBVEZPUk1fU0tVX0RUOworCisJV0FSTl9PTihwbGF0 Zm9ybV9za3UgPiAweEZGKTsKKworCXJldHVybiBwbGF0Zm9ybV9za3U7Cit9CisKK3N0YXRpYyB1 bnNpZ25lZCBpbnQgc2xwY19nZXRfc2xpY2VfY291bnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQoreworCXVuc2lnbmVkIGludCBzbGljZV9jb3VudCA9IDE7CisKKwlpZiAoSVNf U0tZTEFLRShkZXZfcHJpdikpCisJCXNsaWNlX2NvdW50ID0gaHdlaWdodDgoSU5URUxfSU5GTyhk ZXZfcHJpdiktPnNzZXUuc2xpY2VfbWFzayk7CisKKwlyZXR1cm4gc2xpY2VfY291bnQ7Cit9CisK K3N0YXRpYyB2b2lkIHNscGNfbWVtX3NldF9wYXJhbShzdHJ1Y3Qgc2xwY19zaGFyZWRfZGF0YSAq ZGF0YSwKKwkJCSAgICAgICB1MzIgaWQsCisJCQkgICAgICAgdTMyIHZhbHVlKQoreworCWRhdGEt Pm92ZXJyaWRlX3BhcmFtc19zZXRfYml0c1tpZCA+PiA1XSB8PSAoMSA8PCAoaWQgJSAzMikpOwor CWRhdGEtPm92ZXJyaWRlX3BhcmFtc192YWx1ZXNbaWRdID0gdmFsdWU7Cit9CisKK3N0YXRpYyB2 b2lkIHNscGNfbWVtX3Vuc2V0X3BhcmFtKHN0cnVjdCBzbHBjX3NoYXJlZF9kYXRhICpkYXRhLAor CQkJCSB1MzIgaWQpCit7CisJZGF0YS0+b3ZlcnJpZGVfcGFyYW1zX3NldF9iaXRzW2lkID4+IDVd ICY9ICh+KDEgPDwgKGlkICUgMzIpKSk7CisJZGF0YS0+b3ZlcnJpZGVfcGFyYW1zX3ZhbHVlc1tp ZF0gPSAwOworfQorCitzdGF0aWMgaW50IHNscGNfbWVtX3Rhc2tfY29udHJvbChzdHJ1Y3Qgc2xw Y19zaGFyZWRfZGF0YSAqZGF0YSwKKwkJCQkgdTY0IHZhbCwgdTMyIGVuYWJsZV9pZCwgdTMyIGRp c2FibGVfaWQpCit7CisJaW50IHJldCA9IDA7CisKKwlpZiAodmFsID09IFNMUENfUEFSQU1fVEFT S19ERUZBVUxUKSB7CisJCS8qIHNldCBkZWZhdWx0ICovCisJCXNscGNfbWVtX3Vuc2V0X3BhcmFt KGRhdGEsIGVuYWJsZV9pZCk7CisJCXNscGNfbWVtX3Vuc2V0X3BhcmFtKGRhdGEsIGRpc2FibGVf aWQpOworCX0gZWxzZSBpZiAodmFsID09IFNMUENfUEFSQU1fVEFTS19FTkFCTEVEKSB7CisJCS8q IHNldCBlbmFibGUgKi8KKwkJc2xwY19tZW1fc2V0X3BhcmFtKGRhdGEsIGVuYWJsZV9pZCwgMSk7 CisJCXNscGNfbWVtX3Vuc2V0X3BhcmFtKGRhdGEsIGRpc2FibGVfaWQpOworCX0gZWxzZSBpZiAo dmFsID09IFNMUENfUEFSQU1fVEFTS19ESVNBQkxFRCkgeworCQkvKiBzZXQgZGlzYWJsZSAqLwor CQlzbHBjX21lbV9zZXRfcGFyYW0oZGF0YSwgZGlzYWJsZV9pZCwgMSk7CisJCXNscGNfbWVtX3Vu c2V0X3BhcmFtKGRhdGEsIGVuYWJsZV9pZCk7CisJfSBlbHNlIHsKKwkJcmV0ID0gLUVJTlZBTDsK Kwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBzbHBjX3NoYXJlZF9kYXRhX2lu aXQoc3RydWN0IGludGVsX2d1Y19zbHBjICpzbHBjKQoreworCXN0cnVjdCBpbnRlbF9ndWMgKmd1 YyA9IHNscGNfdG9fZ3VjKHNscGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGd1Y190b19pOTE1KGd1Yyk7CisJc3RydWN0IHNscGNfcGxhdGZvcm1faW5mbyAqcGxhdGZv cm1faW5mbzsKKwlzdHJ1Y3Qgc2xwY19zaGFyZWRfZGF0YSAqZGF0YTsKKwlzdHJ1Y3QgcGFnZSAq cGFnZTsKKwl1NjQgdmFsOworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmc2xwYy0+bG9jayk7CisK KwlwYWdlID0gaTkxNV92bWFfZmlyc3RfcGFnZShzbHBjLT52bWEpOworCWRhdGEgPSBrbWFwX2F0 b21pYyhwYWdlKTsKKwlwbGF0Zm9ybV9pbmZvID0gJmRhdGEtPnBsYXRmb3JtX2luZm87CisKKwlt ZW1zZXQoZGF0YSwgMCwgc2l6ZW9mKHN0cnVjdCBzbHBjX3NoYXJlZF9kYXRhKSk7CisKKwlkYXRh LT5zaGFyZWRfZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVjdCBzbHBjX3NoYXJlZF9kYXRhKTsKKwlk YXRhLT5nbG9iYWxfc3RhdGUgPSBTTFBDX0dMT0JBTF9TVEFURV9OT1RfUlVOTklORzsKKwlwbGF0 Zm9ybV9pbmZvLT5za3UgPSBzbHBjX2dldF9wbGF0Zm9ybV9za3UoZGV2X3ByaXYpOworCXBsYXRm b3JtX2luZm8tPnNsaWNlX2NvdW50ID0gc2xwY19nZXRfc2xpY2VfY291bnQoZGV2X3ByaXYpOwor CXBsYXRmb3JtX2luZm8tPnBvd2VyX3BsYW5fc291cmNlID0KKwkJCVNMUENfUE9XRVJfUExBTl9T T1VSQ0UoU0xQQ19QT1dFUl9QTEFOX0JBTEFOQ0VELAorCQkJCQkgICAgICAgU0xQQ19QT1dFUl9T T1VSQ0VfQUMpOworCisJcmRtc3JsKE1TUl9UVVJCT19SQVRJT19MSU1JVCwgdmFsKTsKKwlwbGF0 Zm9ybV9pbmZvLT5wMF9mcmVxID0gdmFsOworCXJkbXNybChNU1JfUExBVEZPUk1fSU5GTywgdmFs KTsKKwlwbGF0Zm9ybV9pbmZvLT5wMV9mcmVxID0gdmFsID4+IDg7CisJcGxhdGZvcm1faW5mby0+ cGVfZnJlcSA9IHZhbCA+PiA0MDsKKwlwbGF0Zm9ybV9pbmZvLT5wbl9mcmVxID0gdmFsID4+IDQ4 OworCisJLyogRW5hYmxlIG9ubHkgR1RQRVJGIHRhc2ssIERpc2FibGUgb3RoZXJzICovCisJdmFs ID0gU0xQQ19QQVJBTV9UQVNLX0VOQUJMRUQ7CisJc2xwY19tZW1fdGFza19jb250cm9sKGRhdGEs IHZhbCwKKwkJCSAgICAgIFNMUENfUEFSQU1fVEFTS19FTkFCTEVfR1RQRVJGLAorCQkJICAgICAg U0xQQ19QQVJBTV9UQVNLX0RJU0FCTEVfR1RQRVJGKTsKKworCXNscGNfbWVtX3Rhc2tfY29udHJv bChkYXRhLCB2YWwsCisJCQkgICAgICBTTFBDX1BBUkFNX1RBU0tfRU5BQkxFX0JBTEFOQ0VSLAor CQkJICAgICAgU0xQQ19QQVJBTV9UQVNLX0RJU0FCTEVfQkFMQU5DRVIpOworCisJdmFsID0gU0xQ Q19QQVJBTV9UQVNLX0RJU0FCTEVEOworCXNscGNfbWVtX3Rhc2tfY29udHJvbChkYXRhLCB2YWws CisJCQkgICAgICBTTFBDX1BBUkFNX1RBU0tfRU5BQkxFX0RDQywKKwkJCSAgICAgIFNMUENfUEFS QU1fVEFTS19ESVNBQkxFX0RDQyk7CisKKwlzbHBjX21lbV9zZXRfcGFyYW0oZGF0YSwKKwkJCSAg IFNMUENfUEFSQU1fR1RQRVJGX1RIUkVTSE9MRF9NQVhfRlBTLAorCQkJICAgMCk7CisKKwlzbHBj X21lbV9zZXRfcGFyYW0oZGF0YSwKKwkJCSAgIFNMUENfUEFSQU1fR1RQRVJGX0VOQUJMRV9GUkFN RVJBVEVfU1RBTExJTkcsCisJCQkgICAwKTsKKworCXNscGNfbWVtX3NldF9wYXJhbShkYXRhLAor CQkJICAgU0xQQ19QQVJBTV9HTE9CQUxfRU5BQkxFX0lBX0dUX0JBTEFOQ0lORywKKwkJCSAgIDEp OworCisJc2xwY19tZW1fc2V0X3BhcmFtKGRhdGEsCisJCQkgICBTTFBDX1BBUkFNX0dMT0JBTF9F TkFCTEVfQURBUFRJVkVfQlVSU1RfVFVSQk8sCisJCQkgICAwKTsKKworCXNscGNfbWVtX3NldF9w YXJhbShkYXRhLAorCQkJICAgU0xQQ19QQVJBTV9HTE9CQUxfRU5BQkxFX0VWQUxfTU9ERSwKKwkJ CSAgIDApOworCisJc2xwY19tZW1fc2V0X3BhcmFtKGRhdGEsCisJCQkgICBTTFBDX1BBUkFNX0dM T0JBTF9FTkFCTEVfQkFMQU5DRVJfSU5fTk9OX0dBTUlOR19NT0RFLAorCQkJICAgMSk7CisKKwlz bHBjX21lbV9zZXRfcGFyYW0oZGF0YSwKKwkJCSAgIFNMUENfUEFSQU1fR0xPQkFMX01JTl9HVF9V TlNMSUNFX0ZSRVFfTUhaLAorCQkJICAgaW50ZWxfZ3B1X2ZyZXEoZGV2X3ByaXYsCisJCQkJCSAg ZGV2X3ByaXYtPmd0X3BtLnJwcy5lZmZpY2llbnRfZnJlcSkpOworCisJc2xwY19tZW1fc2V0X3Bh cmFtKGRhdGEsCisJCQkgICBTTFBDX1BBUkFNX0dMT0JBTF9NSU5fR1RfU0xJQ0VfRlJFUV9NSFos CisJCQkgICBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwKKwkJCQkJICBkZXZfcHJpdi0+Z3RfcG0u cnBzLmVmZmljaWVudF9mcmVxKSk7CisKKwlrdW5tYXBfYXRvbWljKGRhdGEpOworfQorCisvKioK KyAqIGludGVsX2d1Y19zbHBjX2luaXQoKSAtIEluaXRpYWxpemUgdGhlIFNMUEMgc2hhcmVkIGRh dGEgc3RydWN0dXJlLgorICogQHNscGM6IHBvaW50ZXIgdG8gaW50ZWxfZ3VjX3NscGMuCisgKgor ICogVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSBvYmplY3QgdG8gYmUgc2hhcmVkIHdpdGggR3VD IFNMUEMgYW5kCisgKiBpbml0aWFsaXplIGl0IHdpdGggcmVxdWlyZWQgaW5pdGlhbCBwYXJhbWV0 ZXIgdmFsdWVzIGZvciB2YXJpb3VzCisgKiBTTFBDIGtub2JzIHN1Y2ggYXMgbWluIGZyZXF1ZW5j eSBsaW1pdCwgZW5hYmxpbmcvZGlzYWJsaW5nIG9mIFNMUEMKKyAqIHRhc2tzIGV0Yy4KKyAqCisg KiBSZXR1cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gZXJyb3IgY29kZSBvbiBmYWlsdXJlLgor ICovCisKIGludCBpbnRlbF9ndWNfc2xwY19pbml0KHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xw YykKIHsKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSBzbHBjX3RvX2d1YyhzbHBjKTsKKwl1MzIg c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVjdCBzbHBjX3NoYXJlZF9kYXRhKSk7CisJc3Ry dWN0IGk5MTVfdm1hICp2bWE7CisKKwltdXRleF9pbml0KCZzbHBjLT5sb2NrKTsKKworCW11dGV4 X2xvY2soJnNscGMtPmxvY2spOworCisJdm1hID0gc2xwYy0+dm1hOworCWlmICghdm1hKSB7CisJ CS8qIEFsbG9jYXRlIHNoYXJlZCBkYXRhIHN0cnVjdHVyZSAqLworCQl2bWEgPSBpbnRlbF9ndWNf YWxsb2NhdGVfdm1hKGd1Yywgc2l6ZSk7CisJCWlmIChJU19FUlIodm1hKSkgeworCQkJRFJNX0VS Uk9SKCJTaGFyZWQgZGF0YSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CisJCQltdXRleF91bmxvY2so JnNscGMtPmxvY2spOworCQkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwkJfQorCQlzbHBjLT52bWEg PSB2bWE7CisJfQorCisJc2xwY19zaGFyZWRfZGF0YV9pbml0KHNscGMpOworCisJbXV0ZXhfdW5s b2NrKCZzbHBjLT5sb2NrKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0yMCw2ICsyMTMsMTcgQEAg dm9pZCBpbnRlbF9ndWNfc2xwY19kaXNhYmxlKHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xwYykK IHsKIH0KIAorLyoqCisgKiBpbnRlbF9ndWNfc2xwY19maW5pKCkgLSBSZWxlYXNlIHRoZSBTTFBD IHNoYXJlZCBkYXRhIHN0cnVjdHVyZS4KKyAqIEBzbHBjOiBwb2ludGVyIHRvIGludGVsX2d1Y19z bHBjLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZWxlYXNlIHRoZSBzaGFyZWQgZGF0YS4g U0xQQyBuZWVkcyB0byBiZSBkaXNhYmxlZAorICogcHJpb3IgdG8gdGhpcy4KKyAqLwogdm9pZCBp bnRlbF9ndWNfc2xwY19maW5pKHN0cnVjdCBpbnRlbF9ndWNfc2xwYyAqc2xwYykKIHsKKwkvKiBS ZWxlYXNlIHNoYXJlZCBkYXRhIHN0cnVjdHVyZSAqLworCW11dGV4X2xvY2soJnNscGMtPmxvY2sp OworCWk5MTVfdm1hX3VucGluX2FuZF9yZWxlYXNlKCZzbHBjLT52bWEpOworCW11dGV4X3VubG9j aygmc2xwYy0+bG9jayk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfc2xwYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX3NscGMuaAppbmRl eCA4MTI1MGMwLi44N2RhYzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfc2xwYy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zbHBjLmgK QEAgLTksNiArOSw5IEBACiAjaW5jbHVkZSA8aW50ZWxfZ3VjX3NscGNfZndpZi5oPgogCiBzdHJ1 Y3QgaW50ZWxfZ3VjX3NscGMgeworCS8qIFByb3RlY3RzIGFjY2VzcyB0byB2bWEgYW5kIFNMUEMg YWN0aW9ucyAqLworCXN0cnVjdCBtdXRleCBsb2NrOworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwog fTsKIAogaW50IGludGVsX2d1Y19zbHBjX2luaXQoc3RydWN0IGludGVsX2d1Y19zbHBjICpzbHBj KTsKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK