From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC 1/2] drm/i915: Select engines via class and instance in execbuffer2 Date: Wed, 21 Jun 2017 10:13:56 +0100 Message-ID: <20170621091357.1408-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-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 28A6B6E054 for ; Wed, 21 Jun 2017 09:14:35 +0000 (UTC) Received: by mail-wr0-x243.google.com with SMTP id x23so24783384wrb.0 for ; Wed, 21 Jun 2017 02:14:35 -0700 (PDT) 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, 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 IChDaHJpcyBXaWxzb24pCgp2NToKICogRml4ZWQgc2hpZnQgYW5kIG1hc2sgbG9naWMuCiAqIFJl YmFzZWQgdG8gYmUgc3RhbmRhbG9uZS4KClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0 dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBCZW4gV2lkYXdza3kgPGJlbkBid2lkYXdzay5u ZXQ+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IERhbmll bCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgpDYzogSm9vbmFzIExhaHRpbmVuIDxq b29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgpDYzogSm9uIEJsb29tZmllbGQgPGpvbi5i bG9vbWZpZWxkQGludGVsLmNvbT4KQ2M6ICJSb2dvemhraW4sIERtaXRyeSBWIiA8ZG1pdHJ5LnYu cm9nb3poa2luQGludGVsLmNvbT4KQ2M6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5j b20+CkNjOiAiR29uZywgWmhpcGVuZyIgPHpoaXBlbmcuZ29uZ0BpbnRlbC5jb20+CkNjOiBpbnRl bC12YWFwaS1tZWRpYUBsaXN0cy4wMS5vcmcKLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9l eGVjYnVmZmVyLmMgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAgICB8ICAzICsrKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAgIHwgMjAgKysrKysrKysrKysrKysrKysrKysKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICB8ICAzICsrKwogaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysr KysrKysrLQogNiBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMzBlODk0NTZmYzYxLi4zMjVlMWYzMjVmNjAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjEzNyw2ICsyMTM3LDcgQEAgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgewogCXN0cnVjdCBwY2lfZGV2ICpicmlkZ2VfZGV2OwogCXN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICprZXJuZWxfY29udGV4dDsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmVbSTkxNV9OVU1fRU5HSU5FU107CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lX2NsYXNzW01BWF9FTkdJTkVfQ0xBU1MgKyAxXVtNQVhfRU5HSU5FX0lOU1RBTkNFICsgMV07 CiAJc3RydWN0IGk5MTVfdm1hICpzZW1hcGhvcmU7CiAKIAlzdHJ1Y3QgZHJtX2RtYV9oYW5kbGUg KnN0YXR1c19wYWdlX2RtYWg7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVm ZmVyLmMKaW5kZXggYjI0NTc1NTY1OTFjLi4wMGMzNjNhODAxY2IgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKQEAgLTIwNDksNiArMjA0OSwzMCBAQCBnZW44 X2Rpc3BhdGNoX2JzZF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CXJldHVybiBmaWxlX3ByaXYtPmJzZF9lbmdpbmU7CiB9CiAKK3N0YXRpYyB1OCB1c2VyX2NsYXNz X21hcFtJOTE1X0VOR0lORV9DTEFTU19NQVhdID0geworCVtJOTE1X0VOR0lORV9DTEFTU19PVEhF Ul0gPSBPVEhFUl9DTEFTUywKKwlbSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSXSA9IFJFTkRFUl9D TEFTUywKKwlbSTkxNV9FTkdJTkVfQ0xBU1NfQ09QWV0gPSBDT1BZX0VOR0lORV9DTEFTUywKKwlb STkxNV9FTkdJTkVfQ0xBU1NfVklERU9dID0gVklERU9fREVDT0RFX0NMQVNTLAorCVtJOTE1X0VO R0lORV9DTEFTU19WSURFT19FTkhBTkNFXSA9IFZJREVPX0VOSEFOQ0VNRU5UX0NMQVNTLAorfTsK Kworc3RhdGljIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgorZWJfc2VsZWN0X2VuZ2luZV9jbGFz c19pbnN0YW5jZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKKwkJCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2V4ZWNidWZmZXIyICphcmdzKQoreworCXU4IGNsYXNzID0gYXJncy0+ZmxhZ3Mg JiBJOTE1X0VYRUNfUklOR19NQVNLOworCXU4IGluc3RhbmNlOworCisJaWYgKGNsYXNzID49IEFS UkFZX1NJWkUodXNlcl9jbGFzc19tYXApKQorCQlyZXR1cm4gTlVMTDsKKworCWluc3RhbmNlID0g KGFyZ3MtPmZsYWdzICYgSTkxNV9FWEVDX0lOU1RBTkNFX01BU0spID4+CisJCSAgIEk5MTVfRVhF Q19JTlNUQU5DRV9TSElGVDsKKworCXJldHVybiBpbnRlbF9lbmdpbmVfbG9va3VwKGk5MTUsIHVz ZXJfY2xhc3NfbWFwW2NsYXNzXSwgaW5zdGFuY2UpOworfQorCiAjZGVmaW5lIEk5MTVfVVNFUl9S SU5HUyAoNCkKIAogc3RhdGljIGNvbnN0IGVudW0gaW50ZWxfZW5naW5lX2lkIHVzZXJfcmluZ19t YXBbSTkxNV9VU0VSX1JJTkdTICsgMV0gPSB7CkBAIC0yMDY3LDYgKzIwOTEsOSBAQCBlYl9zZWxl Y3RfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl1bnNpZ25lZCBp bnQgdXNlcl9yaW5nX2lkID0gYXJncy0+ZmxhZ3MgJiBJOTE1X0VYRUNfUklOR19NQVNLOwogCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAorCWlmIChhcmdzLT5mbGFncyAmIEk5MTVf RVhFQ19DTEFTU19JTlNUQU5DRSkKKwkJcmV0dXJuIGViX3NlbGVjdF9lbmdpbmVfY2xhc3NfaW5z dGFuY2UoZGV2X3ByaXYsIGFyZ3MpOworCiAJaWYgKHVzZXJfcmluZ19pZCA+IEk5MTVfVVNFUl9S SU5HUykgewogCQlEUk1fREVCVUcoImV4ZWNidWYgd2l0aCB1bmtub3duIHJpbmc6ICV1XG4iLCB1 c2VyX3JpbmdfaWQpOwogCQlyZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4 IGM4NjQ3Y2ZhODFiYS4uODM0NjczYzllZTZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAg LTk1LDYgKzk1LDkgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfbW1pb19yZWdfdmFsaWQoaTkx NV9yZWdfdCByZWcpCiAjZGVmaW5lIFZJREVPX0VOSEFOQ0VNRU5UX0NMQVNTCTIKICNkZWZpbmUg Q09QWV9FTkdJTkVfQ0xBU1MJMwogI2RlZmluZSBPVEhFUl9DTEFTUwkJNAorI2RlZmluZSBNQVhf RU5HSU5FX0NMQVNTCTQKKworI2RlZmluZSBNQVhfRU5HSU5FX0lOU1RBTkNFCTEKIAogLyogUENJ IGNvbmZpZyBzcGFjZSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmlu ZGV4IDNiNDZjMWY3Yjg4Yi4uOTM0NjY3NjFlYmQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYwpAQCAtMTk3LDYgKzE5NywxNSBAQCBpbnRlbF9lbmdpbmVfc2V0dXAoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCUdFTV9CVUdfT04oaW5mby0+Y2xhc3Mg Pj0gQVJSQVlfU0laRShpbnRlbF9lbmdpbmVfY2xhc3NlcykpOwogCWNsYXNzX2luZm8gPSAmaW50 ZWxfZW5naW5lX2NsYXNzZXNbaW5mby0+Y2xhc3NdOwogCisJaWYgKEdFTV9XQVJOX09OKGluZm8t PmNsYXNzID4gTUFYX0VOR0lORV9DTEFTUykpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKEdF TV9XQVJOX09OKGluZm8tPmluc3RhbmNlID4gTUFYX0VOR0lORV9JTlNUQU5DRSkpCisJCXJldHVy biAtRUlOVkFMOworCisJaWYgKEdFTV9XQVJOX09OKGRldl9wcml2LT5lbmdpbmVfY2xhc3NbaW5m by0+Y2xhc3NdW2luZm8tPmluc3RhbmNlXSkpCisJCXJldHVybiAtRUlOVkFMOworCiAJR0VNX0JV R19PTihkZXZfcHJpdi0+ZW5naW5lW2lkXSk7CiAJZW5naW5lID0ga3phbGxvYyhzaXplb2YoKmVu Z2luZSksIEdGUF9LRVJORUwpOwogCWlmICghZW5naW5lKQpAQCAtMjI0LDcgKzIzMyw5IEBAIGlu dGVsX2VuZ2luZV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlB VE9NSUNfSU5JVF9OT1RJRklFUl9IRUFEKCZlbmdpbmUtPmNvbnRleHRfc3RhdHVzX25vdGlmaWVy KTsKIAorCWRldl9wcml2LT5lbmdpbmVfY2xhc3NbaW5mby0+Y2xhc3NdW2luZm8tPmluc3RhbmNl XSA9IGVuZ2luZTsKIAlkZXZfcHJpdi0+ZW5naW5lW2lkXSA9IGVuZ2luZTsKKwogCXJldHVybiAw OwogfQogCkBAIC0xMzMyLDYgKzEzNDMsMTUgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX21hcmtfaWRs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAl9CiB9CiAKK3N0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKgoraW50ZWxfZW5naW5lX2xvb2t1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwgdTggY2xhc3MsIHU4IGluc3RhbmNlKQoreworCWlmIChjbGFzcyA+IE1BWF9FTkdJTkVf Q0xBU1MgfHwgaW5zdGFuY2UgPiBNQVhfRU5HSU5FX0lOU1RBTkNFKQorCQlyZXR1cm4gTlVMTDsK KworCXJldHVybiBpOTE1LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2luc3RhbmNlXTsKK30KKwogI2lm IElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQogI2luY2x1ZGUgInNlbGZ0ZXN0 cy9tb2NrX2VuZ2luZS5jIgogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVm ZmVyLmgKaW5kZXggZDMzYzkzNDQ0YzBkLi5jNDA4ZDNkNWNjODAgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTczNSw0ICs3MzUsNyBAQCBib29sIGludGVsX2Vu Z2luZXNfYXJlX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQg aW50ZWxfZW5naW5lc19tYXJrX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwog dm9pZCBpbnRlbF9lbmdpbmVzX3Jlc2V0X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSk7CiAKK3N0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgoraW50ZWxfZW5n aW5lX2xvb2t1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTggY2xhc3MsIHU4IGlu c3RhbmNlKTsKKwogI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hfICovCmRpZmYgLS1naXQg YS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJt LmgKaW5kZXggN2NjYmQ2YTJiYmUwLi4zMGZlYzJjOGZjOTUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv dWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAg LTkyNyw3ICs5MjcsMTMgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiB7CiAgKiBl bGVtZW50KS4KICAqLwogI2RlZmluZSBJOTE1X0VYRUNfQkFUQ0hfRklSU1QJCSgxPDwxOCkKLSNk ZWZpbmUgX19JOTE1X0VYRUNfVU5LTk9XTl9GTEFHUyAoLShJOTE1X0VYRUNfQkFUQ0hfRklSU1Q8 PDEpKQorCisjZGVmaW5lIEk5MTVfRVhFQ19DTEFTU19JTlNUQU5DRQkoMTw8MTkpCisKKyNkZWZp bmUgSTkxNV9FWEVDX0lOU1RBTkNFX1NISUZUCSgyMCkKKyNkZWZpbmUgSTkxNV9FWEVDX0lOU1RB TkNFX01BU0sJCSgweGZmIDw8IEk5MTVfRVhFQ19JTlNUQU5DRV9TSElGVCkKKworI2RlZmluZSBf X0k5MTVfRVhFQ19VTktOT1dOX0ZMQUdTICgtKCgxIDw8IDI3KSA8PCAxKSkKIAogI2RlZmluZSBJ OTE1X0VYRUNfQ09OVEVYVF9JRF9NQVNLCSgweGZmZmZmZmZmKQogI2RlZmluZSBpOTE1X2V4ZWNi dWZmZXIyX3NldF9jb250ZXh0X2lkKGViMiwgY29udGV4dCkgXApAQCAtOTM1LDYgKzk0MSwyMCBA QCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIHsKICNkZWZpbmUgaTkxNV9leGVjYnVm ZmVyMl9nZXRfY29udGV4dF9pZChlYjIpIFwKIAkoKGViMikucnN2ZDEgJiBJOTE1X0VYRUNfQ09O VEVYVF9JRF9NQVNLKQogCitlbnVtIGRybV9pOTE1X2dlbV9lbmdpbmVfY2xhc3MgeworCUk5MTVf RU5HSU5FX0NMQVNTX09USEVSID0gMCwKKwlJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIgPSAxLAor CUk5MTVfRU5HSU5FX0NMQVNTX0NPUFkgPSAyLAorCUk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPID0g MywKKwlJOTE1X0VOR0lORV9DTEFTU19WSURFT19FTkhBTkNFID0gNCwKKwlJOTE1X0VOR0lORV9D TEFTU19NQVggLyogbm9uLUFCSSAqLworfTsKKworI2RlZmluZSBpOTE1X2V4ZWNidWZmZXIyX2Vu Z2luZShjbGFzcywgaW5zdGFuY2UpIFwKKwkoSTkxNV9FWEVDX0NMQVNTX0lOU1RBTkNFIHwgXAor CShjbGFzcykgfCBcCisJKChpbnN0YW5jZSkgPDwgSTkxNV9FWEVDX0lOU1RBTkNFX1NISUZUKSkK Kwogc3RydWN0IGRybV9pOTE1X2dlbV9waW4gewogCS8qKiBIYW5kbGUgb2YgdGhlIGJ1ZmZlciB0 byBiZSBwaW5uZWQuICovCiAJX191MzIgaGFuZGxlOwotLSAKMi45LjQKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=