From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC v4 2/2] drm/i915: Select engines via class and instance in execbuffer2 Date: Thu, 18 May 2017 15:58:26 +0100 Message-ID: <20170518145826.29150-1-tvrtko.ursulin@linux.intel.com> References: <20170517154057.20350-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-wr0-x242.google.com (mail-wr0-x242.google.com [IPv6:2a00:1450:400c:c0c::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id AAB3C6E596 for ; Thu, 18 May 2017 14:58:38 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id 6so6688700wrb.1 for ; Thu, 18 May 2017 07:58:38 -0700 (PDT) In-Reply-To: <20170517154057.20350-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 Cc: Ben Widawsky , intel-vaapi-media@lists.01.org, mesa-dev@lists.freedesktop.org, Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkJ1aWxkaW5n IG9uIHRvcCBvZiB0aGUgcHJldmlvdXMgcGF0Y2ggd2hpY2ggZXhwb3J0ZWQgdGhlIGNvbmNlcHQK b2YgZW5naW5lIGNsYXNzZXMgYW5kIGluc3RhbmNlcywgd2UgY2FuIGFsc28gdXNlIHRoaXMgaW5z dGVhZCBvZgp0aGUgY3VycmVudCBhd2t3YXJkIGVuZ2luZSBzZWxlY3Rpb24gdUFQSS4KClRoaXMg aXMgcHJpbWFyaWx5IGludGVyZXN0aW5nIGZvciB0aGUgVkNTIGVuZ2luZSBzZWxlY3Rpb24gd2hp Y2gKaXMgYSkgY3VycmVudGx5IGRvbmUgdmlhIGRpc2pvaW50IHNldCBvZiBmbGFncywgYW5kIGIp IHRoZQpjdXJyZW50IEk5MTVfRVhFQ19CU0QgZmxhZ3MgaGFzIGRpZmZlcmVudCBzZW1hbnRpY3Mg ZGVwZW5kaW5nIG9uCnRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIHdoaWNoIGlzIGJhZC4KClByb3Bv c2VkIGlkZWEgaGVyZSBpcyB0byByZXNlcnZlIDgtYml0cyBvZiBmbGFncywgdG8gcGFzcyBpbiB0 aGUKZW5naW5lIGluc3RhbmNlLCByZS11c2UgdGhlIGV4aXN0aW5nIGVuZ2luZSBzZWxlY3Rpb24g Yml0cyBmb3IKdGhlIGNsYXNzIHNlbGVjdGlvbiwgYW5kIGEgbmV3IGZsYWcgbmFtZWQKSTkxNV9F WEVDX0NMQVNTX0lOU1RBTkNFIHRvIHRlbGwgdGhlIGtlcm5lbCB0aGlzIG5ldyBlbmdpbmUKc2Vs ZWN0aW9uIEFQSSBpcyBpbiB1c2UuCgpUaGUgbmV3IHVBUEkgYWxzbyByZW1vdmVzIGFjY2VzcyB0 byB0aGUgd2VhayBWQ1MgZW5naW5lCmJhbGFuY2luZyBhcyBjdXJyZW50bHkgZXhpc3RpbmcgaW4g dGhlIGRyaXZlci4KCkV4YW1wbGUgdXNhZ2UgdG8gc2VuZCBhIGNvbW1hbmQgdG8gVkNTMDoKCiAg ZWIuZmxhZ3MgPSBpOTE1X2V4ZWNidWZmZXIyX2VuZ2luZShJOTE1X0VOR0lORV9DTEFTU19WSURF T19ERUNPREUsIDApOwoKT3IgdG8gc2VuZCBhIGNvbW1hbmQgdG8gVkNTMToKCiAgZWIuZmxhZ3Mg PSBpOTE1X2V4ZWNidWZmZXIyX2VuZ2luZShJOTE1X0VOR0lORV9DTEFTU19WSURFT19ERUNPREUs IDEpOwoKdjI6CiAqIEZpeCB1bmtub3duIGZsYWdzIG1hc2suCiAqIFVzZSBJOTE1X0VYRUNfUklO R19NQVNLIGZvciBjbGFzcy4gKENocmlzIFdpbHNvbikKCnYzOgogKiBBZGQgYSBtYXAgZm9yIGZh c3QgY2xhc3MtaW5zdGFuY2UgZW5naW5lIGxvb2t1cC4gKENocmlzIFdpbHNvbikKCnY0OgogKiBV cGRhdGUgY29tbWl0IHRvIHJlZmxlY3QgdjMuCiAqIEV4cG9ydCBpbnRlbF9lbmdpbmVfbG9va3Vw IGZvciBvdGhlciB1c2Vycy4gKENocmlzIFdpbHNvbikKICogU3BsaXQgb3V0IHNvbWUgd2FybnMu IChDaHJpcyBXaWxzb24pCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVy c3VsaW5AaW50ZWwuY29tPgpDYzogQmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0PgpDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBEYW5pZWwgVmV0dGVy IDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxh aHRpbmVuQGxpbnV4LmludGVsLmNvbT4KQ2M6IEpvbiBCbG9vbWZpZWxkIDxqb24uYmxvb21maWVs ZEBpbnRlbC5jb20+CkNjOiBEYW5pZWwgQ2hhcmxlcyA8ZGFuaWVsLmNoYXJsZXNAaW50ZWwuY29t PgpDYzogIlJvZ296aGtpbiwgRG1pdHJ5IFYiIDxkbWl0cnkudi5yb2dvemhraW5AaW50ZWwuY29t PgpDYzogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KQ2M6ICJHb25nLCBaaGlw ZW5nIiA8emhpcGVuZy5nb25nQGludGVsLmNvbT4KQ2M6IGludGVsLXZhYXBpLW1lZGlhQGxpc3Rz LjAxLm9yZwpDYzogbWVzYS1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCi0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAgICB8ICAzICsrKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgMjAgKysrKysrKysrKysrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICAzICsr KwogaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgIHwgMTIgKysrKysr KysrKystCiA2IGZpbGVzIGNoYW5nZWQsIDU4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAxZTA4YjgyYzQ4MjMuLjUzYjQxOTYzZjY3MiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMTE1LDYgKzIxMTUsNyBAQCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IHBjaV9kZXYgKmJyaWRnZV9kZXY7CiAJc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmtlcm5lbF9jb250ZXh0OwogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZVtJOTE1X05VTV9FTkdJTkVTXTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmVfY2xhc3NbTUFYX0VOR0lORV9DTEFTUyArIDFdW01BWF9FTkdJTkVfSU5TVEFOQ0UgKyAxXTsK IAlzdHJ1Y3QgaTkxNV92bWEgKnNlbWFwaG9yZTsKIAogCXN0cnVjdCBkcm1fZG1hX2hhbmRsZSAq c3RhdHVzX3BhZ2VfZG1haDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYwppbmRleCBhZjE5NjU3NzRlN2IuLjAwNmM4MDQ2YWY1ZiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMTQ5Miw2ICsxNDkyLDIzIEBAIGdlbjhf ZGlzcGF0Y2hfYnNkX2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ cmV0dXJuIGZpbGVfcHJpdi0+YnNkX2VuZ2luZTsKIH0KIAorc3RhdGljIHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKgorZWJfc2VsZWN0X2VuZ2luZV9jbGFzc19pbnN0YW5jZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyICph cmdzKQoreworCXU4IGNsYXNzID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNLOwor CWV4dGVybiB1OCB1c2VyX2NsYXNzX21hcFtJOTE1X0VOR0lORV9DTEFTU19NQVhdOworCXU4IGlu c3RhbmNlOworCisJaWYgKGNsYXNzID49IEFSUkFZX1NJWkUodXNlcl9jbGFzc19tYXApKQorCQly ZXR1cm4gTlVMTDsKKworCWluc3RhbmNlID0gKGFyZ3MtPmZsYWdzID4+IEk5MTVfRVhFQ19JTlNU QU5DRV9TSElGVCkgJiYKKwkJICAgSTkxNV9FWEVDX0lOU1RBTkNFX01BU0s7CisKKwlyZXR1cm4g aW50ZWxfZW5naW5lX2xvb2t1cChpOTE1LCB1c2VyX2NsYXNzX21hcFtjbGFzc10sIGluc3RhbmNl KTsKK30KKwogI2RlZmluZSBJOTE1X1VTRVJfUklOR1MgKDQpCiAKIHN0YXRpYyBjb25zdCBlbnVt IGludGVsX2VuZ2luZV9pZCB1c2VyX3JpbmdfbWFwW0k5MTVfVVNFUl9SSU5HUyArIDFdID0gewpA QCAtMTUxMCw2ICsxNTI3LDkgQEAgZWJfc2VsZWN0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAJdW5zaWduZWQgaW50IHVzZXJfcmluZ19pZCA9IGFyZ3MtPmZsYWdz ICYgSTkxNV9FWEVDX1JJTkdfTUFTSzsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 CiAKKwlpZiAoYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfQ0xBU1NfSU5TVEFOQ0UpCisJCXJldHVy biBlYl9zZWxlY3RfZW5naW5lX2NsYXNzX2luc3RhbmNlKGRldl9wcml2LCBhcmdzKTsKKwogCWlm ICh1c2VyX3JpbmdfaWQgPiBJOTE1X1VTRVJfUklOR1MpIHsKIAkJRFJNX0RFQlVHKCJleGVjYnVm IHdpdGggdW5rbm93biByaW5nOiAldVxuIiwgdXNlcl9yaW5nX2lkKTsKIAkJcmV0dXJuIE5VTEw7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAppbmRleCA4OTg4OGFkYjlhZjEuLmZhNGEzODQxYzRhZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC05Miw2ICs5Miw5IEBAIHN0YXRpYyBpbmxpbmUg Ym9vbCBpOTE1X21taW9fcmVnX3ZhbGlkKGk5MTVfcmVnX3QgcmVnKQogI2RlZmluZSBWSURFT19F TkhBTkNFTUVOVF9DTEFTUwkyCiAjZGVmaW5lIENPUFlfRU5HSU5FX0NMQVNTCTMKICNkZWZpbmUg T1RIRVJfQ0xBU1MJCTQKKyNkZWZpbmUgTUFYX0VOR0lORV9DTEFTUwk0CisKKyNkZWZpbmUgTUFY X0VOR0lORV9JTlNUQU5DRQkxCiAKIC8qIFBDSSBjb25maWcgc3BhY2UgKi8KIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA4ZDM3MGM1ZDA3YmMuLjhmMzE1MTRiMDFk NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTE5OCw2ICsxOTgs MTUgQEAgaW50ZWxfZW5naW5lX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAlHRU1fQlVHX09OKGluZm8tPmNsYXNzID49IEFSUkFZX1NJWkUoaW50ZWxfZW5naW5lX2Ns YXNzZXMpKTsKIAljbGFzc19pbmZvID0gJmludGVsX2VuZ2luZV9jbGFzc2VzW2luZm8tPmNsYXNz XTsKIAorCWlmIChHRU1fV0FSTl9PTihpbmZvLT5jbGFzcyA+IE1BWF9FTkdJTkVfQ0xBU1MpKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChHRU1fV0FSTl9PTihpbmZvLT5pbnN0YW5jZSA+IE1B WF9FTkdJTkVfSU5TVEFOQ0UpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChHRU1fV0FSTl9P TihkZXZfcHJpdi0+ZW5naW5lX2NsYXNzW2luZm8tPmNsYXNzXVtpbmZvLT5pbnN0YW5jZV0pKQor CQlyZXR1cm4gLUVJTlZBTDsKKwogCUdFTV9CVUdfT04oZGV2X3ByaXYtPmVuZ2luZVtpZF0pOwog CWVuZ2luZSA9IGt6YWxsb2Moc2l6ZW9mKCplbmdpbmUpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWVu Z2luZSkKQEAgLTIyNSw3ICsyMzQsOSBAQCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJQVRPTUlDX0lOSVRfTk9USUZJRVJfSEVBRCgmZW5n aW5lLT5jb250ZXh0X3N0YXR1c19ub3RpZmllcik7CiAKKwlkZXZfcHJpdi0+ZW5naW5lX2NsYXNz W2luZm8tPmNsYXNzXVtpbmZvLT5pbnN0YW5jZV0gPSBlbmdpbmU7CiAJZGV2X3ByaXYtPmVuZ2lu ZVtpZF0gPSBlbmdpbmU7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMTM1MCw2ICsxMzYxLDE1IEBA IGludCBpOTE1X2dlbV9lbmdpbmVfaW5mb19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCXJldHVybiAwOwogfQogCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKK2lu dGVsX2VuZ2luZV9sb29rdXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNz LCB1OCBpbnN0YW5jZSkKK3sKKwlpZiAoY2xhc3MgPiBNQVhfRU5HSU5FX0NMQVNTIHx8IGluc3Rh bmNlID4gTUFYX0VOR0lORV9JTlNUQU5DRSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gaTkx NS0+ZW5naW5lX2NsYXNzW2NsYXNzXVtpbnN0YW5jZV07Cit9CisKICNpZiBJU19FTkFCTEVEKENP TkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19lbmdpbmUu YyIKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCmluZGV4IDZh YTIwYWM4Y2RlMy4uNjkyODIzYjMzZDc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCkBAIC03MzQsNCArNzM0LDcgQEAgYm9vbCBpbnRlbF9lbmdpbmVzX2FyZV9pZGxl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX2VuZ2luZXNf bWFya19pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIHZvaWQgaW50ZWxfZW5n aW5lc19yZXNldF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUpOwogCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKK2ludGVsX2VuZ2luZV9sb29rdXAoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHU4IGNsYXNzLCB1OCBpbnN0YW5jZSk7CisKICNl bmRpZiAvKiBfSU5URUxfUklOR0JVRkZFUl9IXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IDhmMDky NmVkYzQ0Zi4uYTQ4ZWY0MjZmNjBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVf ZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCkBAIC05MDYsNyArOTA2LDEy IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgewogICovCiAjZGVmaW5lIEk5MTVf RVhFQ19GRU5DRV9PVVQJCSgxPDwxNykKIAotI2RlZmluZSBfX0k5MTVfRVhFQ19VTktOT1dOX0ZM QUdTICgtKEk5MTVfRVhFQ19GRU5DRV9PVVQ8PDEpKQorI2RlZmluZSBJOTE1X0VYRUNfQ0xBU1Nf SU5TVEFOQ0UJKDE8PDE4KQorCisjZGVmaW5lIEk5MTVfRVhFQ19JTlNUQU5DRV9TSElGVAkoMTkp CisjZGVmaW5lIEk5MTVfRVhFQ19JTlNUQU5DRV9NQVNLCQkoMHhmZiA8PCBJOTE1X0VYRUNfSU5T VEFOQ0VfU0hJRlQpCisKKyNkZWZpbmUgX19JOTE1X0VYRUNfVU5LTk9XTl9GTEFHUyAoLSgoMSA8 PCAyNykgPDwgMSkpCiAKICNkZWZpbmUgSTkxNV9FWEVDX0NPTlRFWFRfSURfTUFTSwkoMHhmZmZm ZmZmZikKICNkZWZpbmUgaTkxNV9leGVjYnVmZmVyMl9zZXRfY29udGV4dF9pZChlYjIsIGNvbnRl eHQpIFwKQEAgLTkxNCw2ICs5MTksMTEgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVy MiB7CiAjZGVmaW5lIGk5MTVfZXhlY2J1ZmZlcjJfZ2V0X2NvbnRleHRfaWQoZWIyKSBcCiAJKChl YjIpLnJzdmQxICYgSTkxNV9FWEVDX0NPTlRFWFRfSURfTUFTSykKIAorI2RlZmluZSBpOTE1X2V4 ZWNidWZmZXIyX2VuZ2luZShjbGFzcywgaW5zdGFuY2UpIFwKKwkoSTkxNV9FWEVDX0NMQVNTX0lO U1RBTkNFIHwgXAorCShjbGFzcykgfCBcCisJKChpbnN0YW5jZSkgPDwgSTkxNV9FWEVDX0lOU1RB TkNFX1NISUZUKSkKKwogc3RydWN0IGRybV9pOTE1X2dlbV9waW4gewogCS8qKiBIYW5kbGUgb2Yg dGhlIGJ1ZmZlciB0byBiZSBwaW5uZWQuICovCiAJX191MzIgaGFuZGxlOwotLSAKMi45LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=