From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [RFC v3 1/2] drm/i915: Engine discovery uAPI Date: Thu, 18 May 2017 15:57:47 +0100 Message-ID: <20170518145747.29062-1-tvrtko.ursulin@linux.intel.com> References: <20170427091000.3259-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 61F806E595 for ; Thu, 18 May 2017 14:57:57 +0000 (UTC) Received: by mail-wr0-x242.google.com with SMTP id g12so6690841wrg.2 for ; Thu, 18 May 2017 07:57:57 -0700 (PDT) In-Reply-To: <20170427091000.3259-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 RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkVuZ2luZSBk aXNjb3ZlcnkgdUFQSSBhbGxvd3MgdXNlcnNwYWNlIHRvIHByb2JlIGZvciBlbmdpbmUKY29uZmln dXJhdGlvbiBhbmQgZmVhdHVyZXMgd2l0aG91dCBuZWVkaW5nIHRvIG1haW50YWluIHRoZQppbnRl cm5hbCBQQ0kgaWQgYmFzZWQgZGF0YWJhc2UuCgpUaGlzIGVuYWJsZXMgcmVtb3ZhbCBvZiBjb2Rl IGR1cGxpY2F0aW9ucyBhY3Jvc3MgdXNlcnNwYWNlCmNvbXBvbmVudHMuCgpQcm9iaW5nIGlzIGRv bmUgdmlhIHRoZSBuZXcgRFJNX0lPQ1RMX0k5MTVfR0VNX0VOR0lORV9JTkZPIGlvY3RsCndoaWNo IHJldHVybnMgdGhlIG51bWJlciBhbmQgaW5mb3JtYXRpb24gb24gdGhlIHNwZWNpZmllZCBlbmdp bmUKY2xhc3MuCgpDdXJyZW50bHkgb25seSBnZW5lcmFsIGVuZ2luZSBjb25maWd1cmF0aW9uIGFu ZCBIRVZDIGZlYXR1cmUgb2YKdGhlIFZDUyBlbmdpbmUgY2FuIGJlIHByb2JlZCBidXQgdGhlIHVB UEkgaXMgZGVzaWduZWQgdG8gYmUKZ2VuZXJpYyBhbmQgZXh0ZW5zaWJsZS4KCkNvZGUgaXMgYmFz ZWQgYWxtb3N0IGV4YWN0bHkgb24gdGhlIGVhcmxpZXIgcHJvcG9zYWwgb24gdGhlCnRvcGljIGJ5 IEpvbiBCbG9vbWZpZWxkLiBFbmdpbmUgY2xhc3MgYW5kIGluc3RhbmNlIHJlZmFjdG9yaW5nCm1h ZGUgcmVjZW50bHkgYnkgRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyBlbmFibGVkIHRoaXMgdG8gYmUK aW1wbGVtZW50ZWQgaW4gYW4gZWxlZ2FudCBmYXNoaW9uLgoKVG8gcHJvYmUgY29uZmlndXJhdGlv biB1c2Vyc3BhY2Ugc2V0cyB0aGUgZW5naW5lIGNsYXNzIGl0IHdhbnRzCnRvIHF1ZXJ5IChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2VuZ2luZV9pbmZvKSBhbmQgcHJvdmlkZXMgYW4gYXJyYXkKb2YgZHJt X2k5MTVfZW5naW5lX2luZm8gc3RydWN0cyB3aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBieSB0aGUK ZHJpdmVyLiBVc2Vyc3BhY2UgYWxzbyBoYXMgdG8gdGVsbCBpOTE1IGhvdyBtYW55IGVsZW1lbnRz IGFyZSBpbgp0aGUgYXJyYXksIGFuZCB0aGUgZHJpdmVyIHdpbGwgcmVwb3J0IGJhY2sgdGhlIHRv dGFsIG51bWJlciBvZgplbmdpbmUgaW5zdGFuY2VzIGluIGFueSBjYXNlLgoKdjI6CiAqIEFkZCBh IHZlcnNpb24gZmllbGQgYW5kIGNvbnNvbGlkYXRlIHRvIG9uZSBlbmdpbmUgY291bnQuCiAgIChD aHJpcyBXaWxzb24pCiAqIFJlbmFtZSB1QVBJIGZsYWdzIGZvciBWQ1MgZW5naW5lcyB0byBEUk1f STkxNV9FTkdJTkVfQ0xBU1NfVklERU8uCiAgIChHb25nIFpoaXBlbmcpCgp2MzoKICogRHJvcCB0 aGUgRFJNXyBwcmVmaXggZnJvbSB1QVBJIGVudW1zLiAoQ2hyaXMgV2lsc29uKQogKiBPbmx5IHJl c2VydmUgOC1iaXRzIGZvciB0aGUgZW5naW5lIGluZm8gZm9yIHRpbWUgYmVpbmcuCgpTaWduZWQt b2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogQmVu IFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0PgpDYzogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+CkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNv bT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4LmludGVsLmNvbT4K Q2M6IEpvbiBCbG9vbWZpZWxkIDxqb24uYmxvb21maWVsZEBpbnRlbC5jb20+CkNjOiBEYW5pZWwg Q2hhcmxlcyA8ZGFuaWVsLmNoYXJsZXNAaW50ZWwuY29tPgpDYzogIlJvZ296aGtpbiwgRG1pdHJ5 IFYiIDxkbWl0cnkudi5yb2dvemhraW5AaW50ZWwuY29tPgpDYzogT3NjYXIgTWF0ZW8gPG9zY2Fy Lm1hdGVvQGludGVsLmNvbT4KQ2M6ICJHb25nLCBaaGlwZW5nIiA8emhpcGVuZy5nb25nQGludGVs LmNvbT4KQ2M6IGludGVsLXZhYXBpLW1lZGlhQGxpc3RzLjAxLm9yZwpDYzogbWVzYS1kZXZAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCi0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAg ICAgICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICB8ICAz ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyB8IDY0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAg ICAgICAgICAgIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCAx MDkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDcyZmI0N2E0Mzlk Mi4uZGMyNjhmNDFhNjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTI2MjMsNiArMjYy Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgaTkxNV9pb2N0bHNbXSA9 IHsKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05URVhUX0dFVFBBUkFNLCBpOTE1X2dl bV9jb250ZXh0X2dldHBhcmFtX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExf REVGX0RSVihJOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNLCBpOTE1X2dlbV9jb250ZXh0X3NldHBh cmFtX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X1BF UkZfT1BFTiwgaTkxNV9wZXJmX29wZW5faW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9J T0NUTF9ERUZfRFJWKEk5MTVfR0VNX0VOR0lORV9JTkZPLCBpOTE1X2dlbV9lbmdpbmVfaW5mb19p b2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCiB9OwogCiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIg ZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMTc4ODNhODRiOGMxLi4xZTA4 YjgyYzQ4MjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMzUyMSw2ICszNTIxLDkgQEAg aTkxNV9nZW1fY29udGV4dF9sb29rdXBfdGltZWxpbmUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKIGludCBpOTE1X3BlcmZfb3Blbl9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAogCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CiAKK2ludCBpOTE1X2dlbV9l bmdpbmVfaW5mb19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJ ICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CisKIC8qIGk5MTVfZ2VtX2V2aWN0LmMgKi8K IGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtLAogCQkJCQkgIHU2NCBtaW5fc2l6ZSwgdTY0IGFsaWdubWVudCwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggNDEzYmZkOGQ0YmY0Li44ZDM3 MGM1ZDA3YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9j cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0yNSw2 ICsyNSw3IEBACiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpbnRlbF9yaW5nYnVm ZmVyLmgiCiAjaW5jbHVkZSAiaW50ZWxfbHJjLmgiCisjaW5jbHVkZSA8dWFwaS9kcm0vaTkxNV9k cm0uaD4KIAogLyogSGFzd2VsbCBkb2VzIGhhdmUgdGhlIENYVF9TSVpFIHJlZ2lzdGVyIGhvd2V2 ZXIgaXQgZG9lcyBub3QgYXBwZWFyIHRvIGJlCiAgKiB2YWxpZC4gTm93LCBkb2NzIGV4cGxhaW4g aW4gZHdvcmRzIHdoYXQgaXMgaW4gdGhlIGNvbnRleHQgb2JqZWN0LiBUaGUgZnVsbApAQCAtMTI4 Niw2ICsxMjg3LDY5IEBAIHZvaWQgaW50ZWxfZW5naW5lc19tYXJrX2lkbGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCiAJfQogfQogCit1OCB1c2VyX2NsYXNzX21hcFtJOTE1X0VOR0lO RV9DTEFTU19NQVhdID0geworCVtJOTE1X0VOR0lORV9DTEFTU19PVEhFUl0gPSBPVEhFUl9DTEFT UywKKwlbSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSXSA9IFJFTkRFUl9DTEFTUywKKwlbSTkxNV9F TkdJTkVfQ0xBU1NfQ09QWV0gPSBDT1BZX0VOR0lORV9DTEFTUywKKwlbSTkxNV9FTkdJTkVfQ0xB U1NfVklERU9dID0gVklERU9fREVDT0RFX0NMQVNTLAorCVtJOTE1X0VOR0lORV9DTEFTU19WSURF T19FTkhBTkNFXSA9IFZJREVPX0VOSEFOQ0VNRU5UX0NMQVNTLAorfTsKKworaW50IGk5MTVfZ2Vt X2VuZ2luZV9pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJ CQkgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkxNV9nZW1fZW5naW5lX2lu Zm8gKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1faTkxNV9lbmdpbmVfaW5mbyBfX3VzZXIgKnVz ZXJfaW5mbyA9CisJCQkJCXU2NF90b191c2VyX3B0cihhcmdzLT5pbmZvX3B0cik7CisJdW5zaWdu ZWQgaW50IGluZm9fc2l6ZSA9IGFyZ3MtPm51bV9lbmdpbmVzOworCXN0cnVjdCBkcm1faTkxNV9l bmdpbmVfaW5mbyBpbmZvOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKKwl1OCBjbGFzczsKKworCWlmIChhcmdzLT5yc3ZkKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCXN3aXRjaCAoYXJncy0+ZW5naW5lX2NsYXNzKSB7CisJY2FzZSBJ OTE1X0VOR0lORV9DTEFTU19PVEhFUjoKKwljYXNlIEk5MTVfRU5HSU5FX0NMQVNTX1JFTkRFUjoK KwljYXNlIEk5MTVfRU5HSU5FX0NMQVNTX0NPUFk6CisJY2FzZSBJOTE1X0VOR0lORV9DTEFTU19W SURFTzoKKwljYXNlIEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPX0VOSEFOQ0U6CisJCWNsYXNzID0g dXNlcl9jbGFzc19tYXBbYXJncy0+ZW5naW5lX2NsYXNzXTsKKwkJYnJlYWs7CisJY2FzZSBJOTE1 X0VOR0lORV9DTEFTU19NQVg6CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FSU5WQUw7CisJfTsKKwor CWFyZ3MtPm51bV9lbmdpbmVzID0gMDsKKworCWlmIChhcmdzLT52ZXJzaW9uICE9IDEpIHsKKwkJ YXJncy0+dmVyc2lvbiA9IDE7CisJCXJldHVybiAwOworCX0KKworCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGk5MTUsIGlkKSB7CisJCWlmIChjbGFzcyAhPSBlbmdpbmUtPmNsYXNzKQorCQkJY29u dGludWU7CisKKwkJaWYgKCsrYXJncy0+bnVtX2VuZ2luZXMgPiBpbmZvX3NpemUpCisJCQljb250 aW51ZTsKKworCQltZW1zZXQoJmluZm8sIDAsIHNpemVvZihpbmZvKSk7CisJCWluZm8uaW5zdGFu Y2UgPSBlbmdpbmUtPmluc3RhbmNlOworCQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDggJiYgaWQg PT0gVkNTKQorCQkJaW5mby5pbmZvID0gSTkxNV9FTkdJTkVfSEFTX0hFVkM7CisKKwkJaWYgKGNv cHlfdG9fdXNlcih1c2VyX2luZm8rKywgJmluZm8sIHNpemVvZihpbmZvKSkpCisJCQlyZXR1cm4g LUVGQVVMVDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RS TV9JOTE1X1NFTEZURVNUKQogI2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIgogI2Vu ZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3Vh cGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggZjI0YTgwZDJkNDJlLi44ZjA5MjZlZGM0NGYgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmgKQEAgLTI2MCw2ICsyNjAsNyBAQCB0eXBlZGVmIHN0cnVjdCBfZHJtX2k5MTVf c2FyZWEgewogI2RlZmluZSBEUk1fSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTQkweDM0CiAjZGVm aW5lIERSTV9JOTE1X0dFTV9DT05URVhUX1NFVFBBUkFNCTB4MzUKICNkZWZpbmUgRFJNX0k5MTVf UEVSRl9PUEVOCQkweDM2CisjZGVmaW5lIERSTV9JOTE1X0dFTV9FTkdJTkVfSU5GTwkweDM3CiAK ICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfSU5JVAkJRFJNX0lPVyggRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9JOTE1X0lOSVQsIGRybV9pOTE1X2luaXRfdCkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVf RkxVU0gJCURSTV9JTyAoIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9GTFVTSCkKQEAgLTMx NSw2ICszMTYsNyBAQCB0eXBlZGVmIHN0cnVjdCBfZHJtX2k5MTVfc2FyZWEgewogI2RlZmluZSBE Uk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9HRVRQQVJBTQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRf QkFTRSArIERSTV9JOTE1X0dFTV9DT05URVhUX0dFVFBBUkFNLCBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfcGFyYW0pCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX1NFVFBB UkFNCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0NPTlRFWFRfU0VU UEFSQU0sIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSkKICNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfUEVSRl9PUEVOCURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1BF UkZfT1BFTiwgc3RydWN0IGRybV9pOTE1X3BlcmZfb3Blbl9wYXJhbSkKKyNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfR0VNX0VOR0lORV9JTkZPCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STkxNV9HRU1fRU5HSU5FX0lORk8sIHN0cnVjdCBkcm1faTkxNV9nZW1fZW5naW5lX2luZm8pCiAK IC8qIEFsbG93IGRyaXZlcnMgdG8gc3VibWl0IGJhdGNoYnVmZmVycyBkaXJlY3RseSB0byBoYXJk d2FyZSwgcmVseWluZwogICogb24gdGhlIHNlY3VyaXR5IG1lY2hhbmlzbXMgcHJvdmlkZWQgYnkg aGFyZHdhcmUuCkBAIC0xNDM5LDYgKzE0NDEsNDUgQEAgZW51bSBkcm1faTkxNV9wZXJmX3JlY29y ZF90eXBlIHsKIAlEUk1fSTkxNV9QRVJGX1JFQ09SRF9NQVggLyogbm9uLUFCSSAqLwogfTsKIAor ZW51bSBkcm1faTkxNV9nZW1fZW5naW5lX2NsYXNzIHsKKwlJOTE1X0VOR0lORV9DTEFTU19PVEhF UiA9IDAsCisJSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSID0gMSwKKwlJOTE1X0VOR0lORV9DTEFT U19DT1BZID0gMiwKKwlJOTE1X0VOR0lORV9DTEFTU19WSURFTyA9IDMsCisJSTkxNV9FTkdJTkVf Q0xBU1NfVklERU9fRU5IQU5DRSA9IDQsCisJSTkxNV9FTkdJTkVfQ0xBU1NfTUFYIC8qIG5vbi1B QkkgKi8KK307CisKK3N0cnVjdCBkcm1faTkxNV9lbmdpbmVfaW5mbyB7CisJLyoqIEVuZ2luZSBp bnN0YW5jZSBudW1iZXIuICovCisJX191OAlpbnN0YW5jZTsKKworCS8qKiBFbmdpbmUgc3BlY2lm aWMgaW5mby4gKi8KKyNkZWZpbmUgSTkxNV9FTkdJTkVfSEFTX0hFVkMJQklUKDApCisJX191OAlp bmZvOworCisJX191OAlyc3ZkMls2XTsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fZW5naW5l X2luZm8geworCS8qKiBpbi9vdXQ6IFByb3RvY29sIHZlcnNpb24gcmVxdWVzdGVkL3N1cHBvcnRl ZC4gKi8KKwlfX3UzMiB2ZXJzaW9uOworCisJLyoqIGluOiBFbmdpbmUgY2xhc3MgdG8gcHJvYmUg KGVudW0gZHJtX2k5MTVfZ2VtX2VuZ2luZV9jbGFzcykuICovCisJX191MzIgZW5naW5lX2NsYXNz OworCisJLyoqCisJICogaW4vb3V0OiBOdW1iZXIgb2Ygc3RydWN0IGRybV9pOTE1X2VuZ2luZV9p bmZvIGVudHJpZXMgaW4gdGhlIHByb3ZpZGVkCisJICogQGluZm9fcHRyIGFycmF5IGFuZCBhY3R1 YWwgbnVtYmVyIG9mIHN1cHBvcnRlZCBoYXJkd2FyZSBlbmdpbmVzLgorCSAqLworCV9fdTMyIG51 bV9lbmdpbmVzOworCV9fdTMyIHJzdmQ7CisKKwkvKiogaW4vb3V0OiBQb2ludGVyIHRvIGFycmF5 IG9mIHN0cnVjdCBpOTE1X2VuZ2luZV9pbmZvIGVsZW1lbnRzLiAqLworCV9fdTY0IGluZm9fcHRy OworCit9OworCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKIH0KICNlbmRpZgotLSAKMi45LjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=