From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 8/8] drm/i915: Expose RPCS (SSEU) configuration to userspace Date: Tue, 14 Aug 2018 15:40:58 +0100 Message-ID: <20180814144058.19286-9-tvrtko.ursulin@linux.intel.com> References: <20180814144058.19286-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id 225CA6E0B3 for ; Tue, 14 Aug 2018 14:41:13 +0000 (UTC) Received: by mail-wr1-x444.google.com with SMTP id v14-v6so17446626wro.5 for ; Tue, 14 Aug 2018 07:41:13 -0700 (PDT) In-Reply-To: <20180814144058.19286-1-tvrtko.ursulin@linux.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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpXZSB3YW50IHRv IGFsbG93IHVzZXJzcGFjZSB0byByZWNvbmZpZ3VyZSB0aGUgc3Vic2xpY2UgY29uZmlndXJhdGlv biBmb3IKaXRzIG93biB1c2UgY2FzZS4gVG8gZG8gc28sIHdlIGV4cG9zZSBhIGNvbnRleHQgcGFy YW1ldGVyIHRvIGFsbG93CmFkanVzdG1lbnQgb2YgdGhlIFJQQ1MgcmVnaXN0ZXIgc3RvcmVkIHdp dGhpbiB0aGUgY29udGV4dCBpbWFnZSAoYW5kCmN1cnJlbnRseSBub3QgYWNjZXNzaWJsZSB2aWEg TFJJKS4gSWYgdGhlIGNvbnRleHQgaXMgYWRqdXN0ZWQgYmVmb3JlCmZpcnN0IHVzZSwgdGhlIGFk anVzdG1lbnQgaXMgZm9yICJmcmVlIjsgb3RoZXJ3aXNlIGlmIHRoZSBjb250ZXh0IGlzCmFjdGl2 ZSB3ZSBmbHVzaCB0aGUgY29udGV4dCBvZmYgdGhlIEdQVSAoc3RhbGxpbmcgYWxsIHVzZXJzKSBh bmQgZm9yY2luZwp0aGUgR1BVIHRvIHNhdmUgdGhlIGNvbnRleHQgdG8gbWVtb3J5IHdoZXJlIHdl IGNhbiBtb2RpZnkgaXQgYW5kIHNvCmVuc3VyZSB0aGF0IHRoZSByZWdpc3RlciBpcyByZWxvYWRl ZCBvbiBuZXh0IGV4ZWN1dGlvbi4KClRoZSBvdmVyaGVhZCBvZiBtYW5hZ2luZyBhZGRpdGlvbmFs IEVVIHN1YnNsaWNlcyBjYW4gYmUgc2lnbmlmaWNhbnQsCmVzcGVjaWFsbHkgaW4gbXVsdGktY29u dGV4dCB3b3JrbG9hZHMuIE5vbi1HUEdQVSBjb250ZXh0cyBzaG91bGQKcHJlZmVyYWJseSBkaXNh YmxlIHRoZSBzdWJzbGljZXMgaXQgaXMgbm90IHVzaW5nLCBhbmQgb3RoZXJzIHNob3VsZApmaW5l LXR1bmUgdGhlIG51bWJlciB0byBtYXRjaCB0aGVpciB3b3JrbG9hZC4KCldlIGV4cG9zZSBjb21w bGV0ZSBjb250cm9sIG92ZXIgdGhlIFJQQ1MgcmVnaXN0ZXIsIGFsbG93aW5nCmNvbmZpZ3VyYXRp b24gb2Ygc2xpY2Uvc3Vic2xpY2UsIHZpYSBtYXNrcyBwYWNrZWQgaW50byBhIHU2NCBmb3IKc2lt cGxpY2l0eS4gRm9yIGV4YW1wbGUsCgoJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt IGFyZzsKCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHNzZXUgPSB7IC5j bGFzcyA9IDAsCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAuaW5zdGFuY2UgPSAwLCB9OwoKCW1lbXNldCgmYXJnLCAwLCBzaXplb2YoYXJnKSk7Cglhcmcu Y3R4X2lkID0gY3R4OwoJYXJnLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1NTRVU7Cglhcmcu dmFsdWUgPSAodWludHB0cl90KSAmc3NldTsKCWlmIChkcm1Jb2N0bChmZCwgRFJNX0lPQ1RMX0k5 MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0sICZhcmcpID09IDApIHsKCQlzc2V1LnBhY2tlZC5zdWJz bGljZV9tYXNrID0gMDsKCgkJZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhU X1NFVFBBUkFNLCAmYXJnKTsKCX0KCmNvdWxkIGJlIHVzZWQgdG8gZGlzYWJsZSBhbGwgc3Vic2xp Y2VzIHdoZXJlIHN1cHBvcnRlZC4KCnYyOiBGaXggb2Zmc2V0IG9mIENUWF9SX1BXUl9DTEtfU1RB VEUgaW4gaW50ZWxfbHJfY29udGV4dF9zZXRfc3NldSgpIChMaW9uZWwpCgp2MzogQWRkIGFiaWxp dHkgdG8gcHJvZ3JhbSB0aGlzIHBlciBlbmdpbmUgKENocmlzKQoKdjQ6IE1vdmUgbW9zdCBnZXRf c3NldSgpIGludG8gaTkxNV9nZW1fY29udGV4dC5jIChMaW9uZWwpCgp2NTogVmFsaWRhdGUgc3Nl dSBjb25maWd1cmF0aW9uIGFnYWluc3QgdGhlIGRldmljZSdzIGNhcGFiaWxpdGllcyAoTGlvbmVs KQoKdjY6IENoYW5nZSBjb250ZXh0IHBvd2VyZ2F0aW5nIHNldHRpbmdzIHRocm91Z2ggTUlfU0RN IG9uIGtlcm5lbCBjb250ZXh0IChDaHJpcykKCnY3OiBTeW5jaHJvbml6ZSB0aGUgcmVxdWVzdHMg Zm9sbG93aW5nIGEgcG93ZXJnYXRpbmcgc2V0dGluZyBjaGFuZ2UgdXNpbmcgYSBnbG9iYWwKICAg IGRlcGVuZGVuY3kgKENocmlzKQogICAgSXRlcmF0ZSB0aW1lbGluZXMgdGhyb3VnaCBkZXZfcHJp di5ndC5hY3RpdmVfcmluZ3MgKFR2cnRrbykKICAgIERpc2FibGUgUlBDUyBjb25maWd1cmF0aW9u IHNldHRpbmcgZm9yIG5vbiBjYXBhYmxlIHVzZXJzIChMaW9uZWwvVHZydGtvKQoKdjg6IHMvdW5p b24gaW50ZWxfc3NldS9zdHJ1Y3QgaW50ZWxfc3NldS8gKExpb25lbCkKICAgIHMvZGV2X3ByaXYv aTkxNS8gKFR2cnRrbykKICAgIENoYW5nZSB1YXBpIGNsYXNzL2luc3RhbmNlIGZpZWxkcyB0byB1 MTYgKFR2cnRrbykKICAgIEJ1bXAgbWFzayBmaWVsZHMgdG8gNjRiaXRzIChMaW9uZWwpCiAgICBE b24ndCByZXR1cm4gRVBFUk0gd2hlbiBkeW5hbWljIHNzZXUgaXMgZGlzYWJsZWQgKFR2cnRrbykK CnY5OiBJbXBvcnQgY29udGV4dCBpbWFnZSBpbnRvIGtlcm5lbCBjb250ZXh0J3MgcHBndHQgb25s eSB3aGVuCiAgICByZWNvbmZpZ3VyaW5nIHBvd2VyZ2F0ZWQgc2xpY2Uvc3Vic2xpY2VzIChDaHJp cykKICAgIFVzZSBhbGlhc2luZyBwcGd0dCB3aGVuIG5lZWRlZCAoTWljaGVsKQoKVHZydGtvIFVy c3VsaW46Cgp2MTA6CiAqIFVwZGF0ZSBmb3IgdXBzdHJlYW0gY2hhbmdlcy4KICogUmVxdWVzdCBz dWJtaXQgbmVlZHMgYSBSUE0gcmVmZXJlbmNlLgogKiBSZWplY3Qgb24gIUZVTExfUFBHVFQgZm9y IHNpbXBsaWNpdHkuCiAqIFB1bGwgb3V0IGdldC9zZXQgcGFyYW0gdG8gaGVscGVycyBmb3IgcmVh ZGFiaWxpdHkgYW5kIGxlc3MgaW5kZW50LgogKiBVc2UgaTkxNV9yZXF1ZXN0X2F3YWl0X2RtYV9m ZW5jZSBpbiBhZGRfZ2xvYmFsX2JhcnJpZXIgdG8gc2tpcCB3YWl0cwogICBvbiB0aGUgc2FtZSB0 aW1lbGluZSBhbmQgYXZvaWQgR0VNX0JVR19PTi4KICogTm8gbmVlZCB0byBleHBsaWNpdGx5IGFz c2lnbiBhIE5VTEwgcG9pbnRlciB0byBlbmdpbmUgaW4gbGVnYWN5IG1vZGUuCiAqIE5vIG5lZWQg dG8gbW92ZSBnZW44X21ha2VfcnBjcyB1cC4KICogRmFjdG9yZWQgb3V0IGdsb2JhbCBiYXJyaWVy IGFzIHByZXAgcGF0Y2guCiAqIEFsbG93IHRvIG9ubHkgQ0FQX1NZU19BRE1JTiBpZiAhR2VuMTEu CgpCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9 MTAwODk5Cklzc3VlOiBodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbWVkaWEtZHJpdmVyL2lzc3Vl cy8yNjcKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+ClNpZ25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGlu QGludGVsLmNvbT4KQ2M6IERtaXRyeSBSb2dvemhraW4gPGRtaXRyeS52LnJvZ296aGtpbkBpbnRl bC5jb20+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzog WmhpcGVuZyBHb25nIDx6aGlwZW5nLmdvbmdAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVu IDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28g VXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICB8ICA1NSArKysrKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgIDQgKwogaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwgIDQzICsrKysrKwogNCBmaWxlcyBjaGFuZ2Vk LCAyODggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYwppbmRleCA4YTEyOTg0ZTc0OTUuLjZkNjIyMDYzNGU5ZSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtNzczLDYgKzc3Myw5MSBAQCBp bnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQKK2k5MTVfZ2VtX2NvbnRl eHRfcmVjb25maWd1cmVfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkJCSAg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSAgc3RydWN0IGludGVsX3NzZXUg c3NldSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKKwlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKKwlpbnQg cmV0OworCisJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisK KwkvKiBTdWJtaXR0aW5nIHJlcXVlc3RzIGV0YyBuZWVkcyB0aGUgaHcgYXdha2UuICovCisJaW50 ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7CisKKwlpOTE1X3JldGlyZV9yZXF1ZXN0cyhpOTE1KTsK KworCS8qIE5vdyB1c2UgdGhlIFJDUyB0byBhY3R1YWxseSByZWNvbmZpZ3VyZS4gKi8KKwllbmdp bmUgPSBpOTE1LT5lbmdpbmVbUkNTXTsKKworCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2lu ZSwgaTkxNS0+a2VybmVsX2NvbnRleHQpOworCWlmIChJU19FUlIocnEpKSB7CisJCXJldCA9IFBU Ul9FUlIocnEpOworCQlnb3RvIG91dF9wdXQ7CisJfQorCisJcmV0ID0gZW5naW5lLT5lbWl0X3Jw Y3NfY29uZmlnKHJxLCBjdHgsIHNzZXUpOworCWlmIChyZXQpCisJCWdvdG8gb3V0X2FkZDsKKwor CS8qIFF1ZXVlIHRoaXMgc3dpdGNoIGFmdGVyIGFsbCBvdGhlciBhY3Rpdml0eSAqLworCWxpc3Rf Zm9yX2VhY2hfZW50cnkocmluZywgJmk5MTUtPmd0LmFjdGl2ZV9yaW5ncywgYWN0aXZlX2xpbmsp IHsKKwkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldjsKKworCQlwcmV2ID0gbGFzdF9yZXF1ZXN0 X29uX2VuZ2luZShyaW5nLT50aW1lbGluZSwgZW5naW5lKTsKKwkJaWYgKHByZXYpCisJCQlpOTE1 X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dmcCgmcnEtPnN1Ym1pdCwKKwkJCQkJCQkgJnByZXYt PnN1Ym1pdCwKKwkJCQkJCQkgSTkxNV9GRU5DRV9HRlApOworCX0KKworCWk5MTVfZ2VtX3NldF9n bG9iYWxfYmFycmllcihpOTE1LCBycSk7CisKK291dF9hZGQ6CisJaTkxNV9yZXF1ZXN0X2FkZChy cSk7CitvdXRfcHV0OgorCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGludCBnZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LAorCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICphcmdzKQoreworCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHVzZXJfc3NldTsKKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCisJ aWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUsIHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1 ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVybiAtRUZBVUxUOworCisJaWYg KHVzZXJfc3NldS5yc3ZkMSB8fCB1c2VyX3NzZXUucnN2ZDIpCisJCXJldHVybiAtRUlOVkFMOwor CisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0eC0+aTkxNSwKKwkJCQkJICB1 c2VyX3NzZXUuY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1Lmluc3RhbmNlKTsKKwlpZiAoIWVuZ2lu ZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdp bmUpOworCisJdXNlcl9zc2V1LnNsaWNlX21hc2sgPSBjZS0+c3NldS5zbGljZV9tYXNrOworCXVz ZXJfc3NldS5zdWJzbGljZV9tYXNrID0gY2UtPnNzZXUuc3Vic2xpY2VfbWFzazsKKwl1c2VyX3Nz ZXUubWluX2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsK Kwl1c2VyX3NzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5tYXhfZXVzX3Blcl9z dWJzbGljZTsKKworCWlmIChjb3B5X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKGFyZ3MtPnZhbHVl KSwgJnVzZXJfc3NldSwKKwkJCSBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVybiAtRUZBVUxU OworCisJcmV0dXJuIDA7Cit9CisKIGludCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZSkKIHsKQEAgLTgxMCw2ICs4OTUsOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9n ZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWNhc2Ug STkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZOgogCQlhcmdzLT52YWx1ZSA9IGN0eC0+c2NoZWQu cHJpb3JpdHk7CiAJCWJyZWFrOworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6CisJCXJl dCA9IGdldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1F SU5WQUw7CiAJCWJyZWFrOwpAQCAtODE5LDYgKzkwNywxMDEgQEAgaW50IGk5MTVfZ2VtX2NvbnRl eHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAly ZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50CitfX3VzZXJfdG9fY29udGV4dF9zc2V1KGNvbnN0 IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpkZXZpY2UsCisJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSAqdXNlciwKKwkJICAgICAgIHN0cnVjdCBpbnRl bF9zc2V1ICpjb250ZXh0KQoreworCS8qIE5vIHplcm9zIGluIGFueSBmaWVsZC4gKi8KKwlpZiAo IXVzZXItPnNsaWNlX21hc2sgfHwgIXVzZXItPnN1YnNsaWNlX21hc2sgfHwKKwkgICAgIXVzZXIt Pm1pbl9ldXNfcGVyX3N1YnNsaWNlIHx8ICF1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwkvKiBNYXggPiBtaW4uICovCisJaWYgKHVzZXItPm1heF9ldXNf cGVyX3N1YnNsaWNlIDwgdXNlci0+bWluX2V1c19wZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlO VkFMOworCisJLyogQ2hlY2sgdmFsaWRpdHkgYWdhaW5zdCBoYXJkd2FyZS4gKi8KKwlpZiAodXNl ci0+c2xpY2VfbWFzayAmIH5kZXZpY2UtPnNsaWNlX21hc2spCisJCXJldHVybiAtRUlOVkFMOwor CisJaWYgKHVzZXItPnN1YnNsaWNlX21hc2sgJiB+ZGV2aWNlLT5zdWJzbGljZV9tYXNrWzBdKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICh1c2VyLT5tYXhfZXVzX3Blcl9zdWJzbGljZSA+IGRl dmljZS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpCisJCXJldHVybiAtRUlOVkFMOworCisJY29udGV4 dC0+c2xpY2VfbWFzayA9IHVzZXItPnNsaWNlX21hc2s7CisJY29udGV4dC0+c3Vic2xpY2VfbWFz ayA9IHVzZXItPnN1YnNsaWNlX21hc2s7CisJY29udGV4dC0+bWluX2V1c19wZXJfc3Vic2xpY2Ug PSB1c2VyLT5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwljb250ZXh0LT5tYXhfZXVzX3Blcl9zdWJz bGljZSA9IHVzZXItPm1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgc2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW1fc3NldSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l OworCXN0cnVjdCBpbnRlbF9zc2V1IGN0eF9zc2V1OworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNp emUpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKCFVU0VTX0ZVTExfUFBHVFQoaTkxNSkpCisJ CXJldHVybiAtRU5PREVWOworCisJaWYgKCFJU19HRU4xMShpOTE1KSAmJiAhY2FwYWJsZShDQVBf U1lTX0FETUlOKSkKKwkJcmV0dXJuIC1FUEVSTTsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNl cl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJf c3NldSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUucnN2ZDEgfHwgdXNl cl9zc2V1LnJzdmQyKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2lu ZV9sb29rdXBfdXNlcihpOTE1LAorCQkJCQkgIHVzZXJfc3NldS5jbGFzcywKKwkJCQkJICB1c2Vy X3NzZXUuaW5zdGFuY2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlm ICghZW5naW5lLT5lbWl0X3JwY3NfY29uZmlnKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldCA9 IF9fdXNlcl90b19jb250ZXh0X3NzZXUoJklOVEVMX0lORk8oaTkxNSktPnNzZXUsICZ1c2VyX3Nz ZXUsCisJCQkJICAgICAmY3R4X3NzZXUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlj ZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBlbmdpbmUpOworCisJLyogTm90aGluZyB0byBkbyBp ZiB1bm1vZGlmaWVkLiAqLworCWlmICghbWVtY21wKCZjZS0+c3NldSwgJmN0eF9zc2V1LCBzaXpl b2YoY3R4X3NzZXUpKSkKKwkJcmV0dXJuIDA7CisKKwlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3Jl Y29uZmlndXJlX3NzZXUoY3R4LCBlbmdpbmUsIGN0eF9zc2V1KTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJLyoKKwkgKiBDb3B5IHRoZSBjb25maWd1cmF0aW9uIHRvIGFsbCBlbmdpbmVz LiBPdXIgaGFyZHdhcmUgZG9lc24ndAorCSAqIGN1cnJlbnRseSBzdXBwb3J0IGRpZmZlcmVudCBj b25maWd1cmF0aW9ucyBmb3IgZWFjaCBlbmdpbmUuCisJICovCisJZm9yX2VhY2hfZW5naW5lKGVu Z2luZSwgaTkxNSwgaWQpIHsKKwkJY2UgPSB0b19pbnRlbF9jb250ZXh0KGN0eCwgZW5naW5lKTsK KwkJY2UtPnNzZXUgPSBjdHhfc3NldTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGk5MTVf Z2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQogewpAQCAtODg0LDcgKzEwNjcs OSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCWN0eC0+c2NoZWQucHJpb3JpdHkgPSBwcmlvcml0eTsK IAkJfQogCQlicmVhazsKLQorCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6CisJCXJldCA9 IHNldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldCA9IC1FSU5W QUw7CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwppbmRleCA4YTI5OTdiZTdlZjcu LjBmNzgwYzY2NmU5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTIyMzIsNiArMjIz Miw2MCBAQCBzdGF0aWMgdm9pZCBnZW44X2VtaXRfYnJlYWRjcnVtYl9yY3Moc3RydWN0IGk5MTVf cmVxdWVzdCAqcmVxdWVzdCwgdTMyICpjcykKIH0KIHN0YXRpYyBjb25zdCBpbnQgZ2VuOF9lbWl0 X2JyZWFkY3J1bWJfcmNzX3N6ID0gOCArIFdBX1RBSUxfRFdPUkRTOwogCitzdGF0aWMgaW50IGdl bjhfZW1pdF9ycGNzX2NvbmZpZyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCQkgc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCQkgc3RydWN0IGludGVsX3NzZXUgc3NldSkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHJxLT5pOTE1OworCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSA9IHRvX2ludGVsX2NvbnRleHQoY3R4LCBpOTE1LT5lbmdpbmVbUkNTXSk7 CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJdTY0IG9mZnNldDsKKwl1MzIgKmNzOworCWludCBl cnI7CisKKwkvKiBMZXQgdGhlIGRlZmVycmVkIHN0YXRlIGFsbG9jYXRpb24gdGFrZSBjYXJlIG9m IHRoaXMuICovCisJaWYgKCFjZS0+c3RhdGUpCisJCXJldHVybiAwOworCisJdm1hID0gaTkxNV92 bWFfaW5zdGFuY2UoY2UtPnN0YXRlLT5vYmosCisJCQkJJmk5MTUtPmtlcm5lbF9jb250ZXh0LT5w cGd0dC0+dm0sCisJCQkJTlVMTCk7CisJaWYgKElTX0VSUih2bWEpKQorCQlyZXR1cm4gUFRSX0VS Uih2bWEpOworCisJZXJyID0gaTkxNV92bWFfcGluKHZtYSwgMCwgMCwgUElOX1VTRVIpOworCWlm IChlcnIpIHsKKwkJaTkxNV92bWFfY2xvc2Uodm1hKTsKKwkJcmV0dXJuIGVycjsKKwl9CisKKwll cnIgPSBpOTE1X3ZtYV9tb3ZlX3RvX2FjdGl2ZSh2bWEsIHJxLCBFWEVDX09CSkVDVF9XUklURSk7 CisJaWYgKHVubGlrZWx5KGVycikpIHsKKwkJaTkxNV92bWFfY2xvc2Uodm1hKTsKKwkJcmV0dXJu IGVycjsKKwl9CisKKwlpOTE1X3ZtYV91bnBpbih2bWEpOworCisJY3MgPSBpbnRlbF9yaW5nX2Jl Z2luKHJxLCA0KTsKKwlpZiAoSVNfRVJSKGNzKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3MpOworCisJ b2Zmc2V0ID0gdm1hLT5ub2RlLnN0YXJ0ICsKKwkJTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFICsK KwkJKENUWF9SX1BXUl9DTEtfU1RBVEUgKyAxKSAqIDQ7CisKKwkqY3MrKyA9IE1JX1NUT1JFX0RX T1JEX0lNTV9HRU40OworCSpjcysrID0gbG93ZXJfMzJfYml0cyhvZmZzZXQpOworCSpjcysrID0g dXBwZXJfMzJfYml0cyhvZmZzZXQpOworCSpjcysrID0gZ2VuOF9tYWtlX3JwY3MoJklOVEVMX0lO Rk8oaTkxNSktPnNzZXUsCisJCQkgICAgICAgaW50ZWxfZW5naW5lX3ByZXBhcmVfc3NldShycS0+ ZW5naW5lLCBzc2V1KSk7CisKKwlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKKworCXJldHVy biAwOworfQorCiBzdGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29udGV4dChzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICpycSkKIHsKIAlpbnQgcmV0OwpAQCAtMjMyNCw2ICsyMzc4LDcgQEAgbG9naWNhbF9y aW5nX2RlZmF1bHRfdmZ1bmNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAllbmdp bmUtPmVtaXRfZmx1c2ggPSBnZW44X2VtaXRfZmx1c2g7CiAJZW5naW5lLT5lbWl0X2JyZWFkY3J1 bWIgPSBnZW44X2VtaXRfYnJlYWRjcnVtYjsKIAllbmdpbmUtPmVtaXRfYnJlYWRjcnVtYl9zeiA9 IGdlbjhfZW1pdF9icmVhZGNydW1iX3N6OworCWVuZ2luZS0+ZW1pdF9ycGNzX2NvbmZpZyA9IGdl bjhfZW1pdF9ycGNzX2NvbmZpZzsKIAogCWVuZ2luZS0+c2V0X2RlZmF1bHRfc3VibWlzc2lvbiA9 IGludGVsX2V4ZWNsaXN0c19zZXRfZGVmYXVsdF9zdWJtaXNzaW9uOwogCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggOTA5MDg4NWQ1N2RlLi5hY2I4YjZmZTkxMmEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTQ3Nyw2ICs0Nzcs MTAgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7CiAJdm9pZAkJKCplbWl0X2JyZWFkY3J1bWIp KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgKmNzKTsKIAlpbnQJCWVtaXRfYnJlYWRjcnVt Yl9zejsKIAorCWludAkJKCplbWl0X3JwY3NfY29uZmlnKShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwKKwkJCQkJICAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCQkJCSAgICBzdHJ1 Y3QgaW50ZWxfc3NldSBzc2V1KTsKKwogCS8qIFBhc3MgdGhlIHJlcXVlc3QgdG8gdGhlIGhhcmR3 YXJlIHF1ZXVlIChlLmcuIGRpcmVjdGx5IGludG8KIAkgKiB0aGUgbGVnYWN5IHJpbmdidWZmZXIg b3IgdG8gdGhlIGVuZCBvZiBhbiBleGVjbGlzdCkuCiAJICoKZGlmZiAtLWdpdCBhL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCBh NDQ0NmY0NTIwNDAuLmUxOTVjMzhiMTVhNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMTQ3OCw5ICsx NDc4LDUyIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CiAjZGVmaW5lICAg STkxNV9DT05URVhUX01BWF9VU0VSX1BSSU9SSVRZCTEwMjMgLyogaW5jbHVzaXZlICovCiAjZGVm aW5lICAgSTkxNV9DT05URVhUX0RFRkFVTFRfUFJJT1JJVFkJCTAKICNkZWZpbmUgICBJOTE1X0NP TlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkJLTEwMjMgLyogaW5jbHVzaXZlICovCisJLyoKKwkgKiBX aGVuIHVzaW5nIHRoZSBmb2xsb3dpbmcgcGFyYW0sIHZhbHVlIHNob3VsZCBiZSBhIHBvaW50ZXIg dG8KKwkgKiBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1LgorCSAqLworI2RlZmluZSBJ OTE1X0NPTlRFWFRfUEFSQU1fU1NFVQkJMHg3CiAJX191NjQgdmFsdWU7CiB9OwogCitzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB7CisJLyoKKwkgKiBFbmdpbmUgY2xhc3Mg JiBpbnN0YW5jZSB0byBiZSBjb25maWd1cmVkIG9yIHF1ZXJpZWQuCisJICovCisJX191MTYgY2xh c3M7CisJX191MTYgaW5zdGFuY2U7CisKKwkvKgorCSAqIFVudXNlZCBmb3Igbm93LiBNdXN0IGJl IGNsZWFyZWQgdG8gemVyby4KKwkgKi8KKwlfX3UzMiByc3ZkMTsKKworCS8qCisJICogTWFzayBv ZiBzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhIHN1 YnNldAorCSAqIG9mIHRoZSBiaXRtYXNrIHZhbHVlIHJldHVybmVkIGZvciBJOTE1X1BBUkFNX1NM SUNFX01BU0suCisJICovCisJX191NjQgc2xpY2VfbWFzazsKKworCS8qCisJICogTWFzayBvZiBz dWJzbGljZXMgdG8gZW5hYmxlIGZvciB0aGUgY29udGV4dC4gVmFsaWQgdmFsdWVzIGFyZSBhCisJ ICogc3Vic2V0IG9mIHRoZSBiaXRtYXNrIHZhbHVlIHJldHVybiBieSBJOTE1X1BBUkFNX1NVQlNM SUNFX01BU0suCisJICovCisJX191NjQgc3Vic2xpY2VfbWFzazsKKworCS8qCisJICogTWluaW11 bS9NYXhpbXVtIG51bWJlciBvZiBFVXMgdG8gZW5hYmxlIHBlciBzdWJzbGljZSBmb3IgdGhlCisJ ICogY29udGV4dC4gbWluX2V1c19wZXJfc3Vic2xpY2UgbXVzdCBiZSBpbmZlcmlvciBvciBlcXVh bCB0bworCSAqIG1heF9ldXNfcGVyX3N1YnNsaWNlLgorCSAqLworCV9fdTE2IG1pbl9ldXNfcGVy X3N1YnNsaWNlOworCV9fdTE2IG1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJLyoKKwkgKiBVbnVz ZWQgZm9yIG5vdy4gTXVzdCBiZSBjbGVhcmVkIHRvIHplcm8uCisJICovCisJX191MzIgcnN2ZDI7 Cit9OworCiBlbnVtIGRybV9pOTE1X29hX2Zvcm1hdCB7CiAJSTkxNV9PQV9GT1JNQVRfQTEzID0g MSwJICAgIC8qIEhTVyBvbmx5ICovCiAJSTkxNV9PQV9GT1JNQVRfQTI5LAkgICAgLyogSFNXIG9u bHkgKi8KLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==