From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: =?utf-8?q?=5BPATCH=5D_drm/i915=3A_Android_sync_points?= =?utf-8?q?_for_i915?= Date: Thu, 31 Jul 2014 11:58:08 -0700 Message-ID: <1406833088-25801-2-git-send-email-jbarnes@virtuousgeek.org> References: <1406833088-25801-1-git-send-email-jbarnes@virtuousgeek.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from gproxy7-pub.mail.unifiedlayer.com (gproxy7-pub.mail.unifiedlayer.com [70.40.196.235]) by gabe.freedesktop.org (Postfix) with SMTP id 28A246E6B6 for ; Thu, 31 Jul 2014 12:04:47 -0700 (PDT) In-Reply-To: <1406833088-25801-1-git-send-email-jbarnes@virtuousgeek.org> 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: Maarten Lankhorst List-Id: intel-gfx@lists.freedesktop.org RXhwb3NlIGFuIGlvY3RsIHRvIGNyZWF0ZSBBbmRyb2lkIGZlbmNlcyBiYXNlZCBvbiB0aGUgQW5k cm9pZCBzeW5jIHBvaW50CmluZnJhc3RydWN0dXJlICh3aGljaCBpbiB0dXJuIGlzIGJhc2VkIG9u IERNQS1idWYgZmVuY2VzKS4gIEp1c3QgYQpza2V0Y2ggYXQgdGhpcyBwb2ludCwgbm8gdGVzdGlu ZyBoYXMgYmVlbiBkb25lLgoKVGhlcmUgYXJlIGEgY291cGxlIG9mIGdvYWxzIGhlcmU6CiAgMSkg YWxsb3cgYXBwbGljYXRpb25zIGFuZCBsaWJyYXJpZXMgdG8gY3JlYXRlIGZlbmNlcyB3aXRob3V0 IGFuCiAgICAgYXNzb2NpYXRlZCBidWZmZXIKICAyKSByZS11c2UgYSBjb21tb24gQVBJIHNvIHVz ZXJzcGFjZSBkb2Vzbid0IGhhdmUgdG8gaW1wZWRhbmNlIG1pc21hdGNoCiAgICAgYmV0d2VlbiBk aWZmZXJlbnQgZHJpdmVyIGltcGxlbWVudGF0aW9ucyB0b28gbXVjaAogIDMpIGFsbG93IGFwcGxp Y2F0aW9ucyBhbmQgbGlicmFyaWVzIHRvIHVzZSBleHBsaWNpdCBzeW5jaHJvbml6YXRpb24gaWYK ICAgICB0aGV5IGNob29zZSBieSBleHBvc2luZyBmZW5jZXMgZGlyZWN0bHkKClNpZ25lZC1vZmYt Ynk6IEplc3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0dW91c2dlZWsub3JnPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L0tjb25maWcgICAgIHwgICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZSAgICB8ICAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYyAgfCAg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggIHwgICAxMSArKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgfCAgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMgIHwgICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMg fCAgMzAxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL3Vh cGkvZHJtL2k5MTVfZHJtLmggICAgICB8ICAgMjMgKysrCiA4IGZpbGVzIGNoYW5nZWQsIDM1MCBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvS2NvbmZpZwppbmRleCA0ZTM5YWIzLi5j ZDBmMmVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcKQEAgLTYsNiArNiw4IEBAIGNvbmZpZyBEUk1fSTkx NQogCXNlbGVjdCBJTlRFTF9HVFQKIAlzZWxlY3QgQUdQX0lOVEVMIGlmIEFHUAogCXNlbGVjdCBJ TlRFUlZBTF9UUkVFCisJc2VsZWN0IEFORFJPSUQKKwlzZWxlY3QgU1lOQwogCSMgd2UgbmVlZCBz aG1mcyBmb3IgdGhlIHN3YXBwYWJsZSBiYWNraW5nIHN0b3JlLCBhbmQgaW4gcGFydGljdWxhcgog CSMgdGhlIHNobWVtX3JlYWRwYWdlKCkgd2hpY2ggZGVwZW5kcyB1cG9uIHRtcGZzCiAJc2VsZWN0 IFNITUVNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDkxYmQxNjcuLjYxYTNlYjVjIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9NYWtlZmlsZQpAQCAtMjUsNiArMjUsNyBAQCBpOTE1LXkgKz0gaTkxNV9jbWRfcGFyc2Vy Lm8gXAogCSAgaTkxNV9nZW1fZXhlY2J1ZmZlci5vIFwKIAkgIGk5MTVfZ2VtX2d0dC5vIFwKIAkg IGk5MTVfZ2VtLm8gXAorCSAgaTkxNV9zeW5jLm8gXAogCSAgaTkxNV9nZW1fc3RvbGVuLm8gXAog CSAgaTkxNV9nZW1fdGlsaW5nLm8gXAogCSAgaTkxNV9nZW1fdXNlcnB0ci5vIFwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RtYS5jCmluZGV4IDJlN2YwM2EuLjg0MDg2ZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k bWEuYwpAQCAtMjA0Myw2ICsyMDQzLDcgQEAgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGk5 MTVfaW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9SRUdfUkVBRCwgaTkxNV9y ZWdfcmVhZF9pb2N0bCwgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NU TF9ERUZfRFJWKEk5MTVfR0VUX1JFU0VUX1NUQVRTLCBpOTE1X2dldF9yZXNldF9zdGF0c19pb2N0 bCwgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5 MTVfR0VNX1VTRVJQVFIsIGk5MTVfZ2VtX3VzZXJwdHJfaW9jdGwsIERSTV9VTkxPQ0tFRHxEUk1f UkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9GRU5DRSwgaTkxNV9z eW5jX2NyZWF0ZV9mZW5jZV9pb2N0bCwgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAog fTsKIAogaW50IGk5MTVfbWF4X2lvY3RsID0gQVJSQVlfU0laRShpOTE1X2lvY3Rscyk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAppbmRleCBkNjA0ZjRmLi40MGNlNDQ0IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKQEAgLTEzODgsNiArMTM4OCw4IEBAIHN0cnVjdCBpOTE1X2Zyb250YnVmZmVyX3Ry YWNraW5nIHsKIAl1bnNpZ25lZCBmbGlwX2JpdHM7CiB9OwogCitzdHJ1Y3QgaTkxNV9zeW5jX3Rp bWVsaW5lOworCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldjsKIAlzdHJ1Y3Qga21lbV9jYWNoZSAqc2xhYjsKQEAgLTE0MjIsNiArMTQyNCw4IEBAIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc2Vt YXBob3JlX29iajsKIAl1aW50MzJfdCBsYXN0X3NlcW5vLCBuZXh0X3NlcW5vOwogCisJc3RydWN0 IGk5MTVfc3luY190aW1lbGluZSAqc3luY190bFtJOTE1X05VTV9SSU5HU107CisKIAlkcm1fZG1h X2hhbmRsZV90ICpzdGF0dXNfcGFnZV9kbWFoOwogCXN0cnVjdCByZXNvdXJjZSBtY2hfcmVzOwog CkBAIC0yMjc1LDYgKzIyNzksMTMgQEAgdm9pZCBpOTE1X2luaXRfdm0oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogdm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaik7CiB2b2lkIGk5MTVfZ2VtX3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1 X3ZtYSAqdm1hKTsKIAorLyogaTkxNV9zeW5jLmMgKi8KK2ludCBpOTE1X3N5bmNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpOTE1X3N5bmNfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpOTE1X3N5bmNfc2lnbmFsKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpOworaW50IGk5MTVfc3luY19jcmVhdGVfZmVuY2Vf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkgc3RydWN0IGRy bV9maWxlICpmaWxlKTsKKwogI2RlZmluZSBQSU5fTUFQUEFCTEUgMHgxCiAjZGVmaW5lIFBJTl9O T05CTE9DSyAweDIKICNkZWZpbmUgUElOX0dMT0JBTCAweDQKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j CmluZGV4IGRjZDhkN2IuLmNjODI0MDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwpAQCAtNDc3 NSw2ICs0Nzc1LDkgQEAgaW50IGk5MTVfZ2VtX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAkJYXRvbWljX3NldF9tYXNrKEk5MTVfV0VER0VELCAmZGV2X3ByaXYtPmdwdV9lcnJvci5yZXNl dF9jb3VudGVyKTsKIAkJcmV0ID0gMDsKIAl9CisKKwlpOTE1X3N5bmNfaW5pdChkZXZfcHJpdik7 CisKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAogCS8qIEFsbG93IGhhcmR3 YXJlIGJhdGNoYnVmZmVycyB1bmxlc3MgdG9sZCBvdGhlcndpc2UsIGJ1dCBub3QgZm9yIEtNUy4g Ki8KQEAgLTQ5NzAsNiArNDk3Myw4IEBAIHZvaWQgaTkxNV9nZW1fcmVsZWFzZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAJCXJlcXVlc3QtPmZpbGVfcHJp diA9IE5VTEw7CiAJfQogCXNwaW5fdW5sb2NrKCZmaWxlX3ByaXYtPm1tLmxvY2spOworCisJaTkx NV9zeW5jX2ZpbmkoZGV2LT5kZXZfcHJpdmF0ZSk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9pcnEuYwppbmRleCA5OGFiYzIyLi40ODQzNmRjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9jaXJjX2J1Zi5oPgogI2lu Y2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CisjaW5jbHVkZSAi Li4vLi4vLi4vc3RhZ2luZy9hbmRyb2lkL3N5bmMuaCIKICNpbmNsdWRlICJpOTE1X2Rydi5oIgog I2luY2x1ZGUgImk5MTVfdHJhY2UuaCIKICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKQEAgLTEyNjks NiArMTI3MCw3IEBAIHN0YXRpYyB2b2lkIG5vdGlmeV9yaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJCWludGVsX25vdGlmeV9tbWlvX2ZsaXAocmluZyk7CiAKIAl3YWtlX3VwX2FsbCgmcmlu Zy0+aXJxX3F1ZXVlKTsKKwlpOTE1X3N5bmNfc2lnbmFsKHJpbmcpOwogCWk5MTVfcXVldWVfaGFu Z2NoZWNrKGRldik7CiB9CiAKQEAgLTI2MTcsOCArMjYxOSwxMCBAQCBzdGF0aWMgdm9pZCBpOTE1 X2Vycm9yX3dha2VfdXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqLwog CiAJLyogV2FrZSB1cCBfX3dhaXRfc2Vxbm8sIHBvdGVudGlhbGx5IGhvbGRpbmcgZGV2LT5zdHJ1 Y3RfbXV0ZXguICovCi0JZm9yX2VhY2hfcmluZyhyaW5nLCBkZXZfcHJpdiwgaSkKKwlmb3JfZWFj aF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKSB7CiAJCXdha2VfdXBfYWxsKCZyaW5nLT5pcnFfcXVl dWUpOworCQlpOTE1X3N5bmNfc2lnbmFsKHJpbmcpOworCX0KIAogCS8qIFdha2UgdXAgaW50ZWxf Y3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzLCBob2xkaW5nIGNydGMtPm11dGV4LiAqLwogCXdh a2VfdXBfYWxsKCZkZXZfcHJpdi0+cGVuZGluZ19mbGlwX3F1ZXVlKTsKQEAgLTMyNjksNiArMzI3 Myw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQodW5zaWduZWQgbG9uZyBk YXRhKQogCQkJCQkJCURSTV9JTkZPKCJGYWtlIG1pc3NlZCBpcnEgb24gJXNcbiIsCiAJCQkJCQkJ CSByaW5nLT5uYW1lKTsKIAkJCQkJCXdha2VfdXBfYWxsKCZyaW5nLT5pcnFfcXVldWUpOworCQkJ CQkJaTkxNV9zeW5jX3NpZ25hbChyaW5nKTsKIAkJCQkJfQogCQkJCQkvKiBTYWZlZ3VhcmQgYWdh aW5zdCBkcml2ZXIgZmFpbHVyZSAqLwogCQkJCQlyaW5nLT5oYW5nY2hlY2suc2NvcmUgKz0gQlVT WTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3luYy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zeW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYjQwYTRlYwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc3luYy5jCkBAIC0wLDAgKzEsMzAxIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQgSW50 ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdB UkUuCisgKgorICogQXV0aG9yczoKKyAqICAgIEplc3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0dW91 c2dlZWsub3JnPgorICoKKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxk cm0vZHJtX3ZtYV9tYW5hZ2VyLmg+CisjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CisjaW5jbHVk ZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaW50ZWxf ZHJ2LmgiCisjaW5jbHVkZSA8bGludXgvb29tLmg+CisjaW5jbHVkZSA8bGludXgvc2htZW1fZnMu aD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8bGludXgvc3dhcC5oPgorI2lu Y2x1ZGUgPGxpbnV4L3BjaS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4KKyNpbmNsdWRl ICIuLi8uLi8uLi9zdGFnaW5nL2FuZHJvaWQvc3luYy5oIgorCisvKgorICogaTkxNSBmZW5jZXMg b24gc3luYyB0aW1lbGluZXMKKyAqCisgKiBXZSBpbXBsZW1lbnQgc3luYyBwb2ludHMgaW4gdGVy bXMgb2YgaTkxNSBzZXFub3MuICBUaGV5J3JlIGV4cG9zZWQKKyAqIHRocm91Z2ggdGhlIG5ldyBE Uk1fSTkxNV9HRU1fRkVOQ0UgaW9jdGwsIGFuZCBjYW4gYmUgbWl4ZWQgYW5kIG1hdGNoZWQKKyAq IHdpdGggb3RoZXIgQW5kcm9pZCB0aW1lbGluZXMgYW5kIGFnZ3JlZ2F0ZWQgaW50byBzeW5jX2Zl bmNlcywgZXRjLgorICoKKyAqIFRPRE86CisgKiAgIHJlYmFzZSBvbiB0b3Agb2YgQ2hyaXMncyBz ZXFuby9yZXF1ZXN0IHN0dWZmIGFuZCB1c2UgcmVxdWVzdHMKKyAqICAgYWxsb3cgbm9uLVJDUyBm ZW5jZXMgKG5lZWQgcmluZy9jb250ZXh0IGFzc29jaWF0aW9uKQorICovCisKK3N0cnVjdCBpOTE1 X3N5bmNfdGltZWxpbmUgeworCXN0cnVjdCBzeW5jX3RpbWVsaW5lIG9iajsKKwlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsK K307CisKK3N0cnVjdCBpOTE1X3N5bmNfcHQgeworCXN0cnVjdCBzeW5jX3B0IHB0OworCXUzMiBz ZXFubzsKK307CisKK3N0YXRpYyBzdHJ1Y3Qgc3luY19wdCAqaTkxNV9zeW5jX3B0X2NyZWF0ZShz dHJ1Y3QgaTkxNV9zeW5jX3RpbWVsaW5lICp0bCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nID0gdGwtPnJpbmc7CisJc3RydWN0IGk5MTVfc3luY19wdCAqcHQ7CisJaW50IHJldDsK KworCXB0ID0gKHN0cnVjdCBpOTE1X3N5bmNfcHQgKilzeW5jX3B0X2NyZWF0ZSgmdGwtPm9iaiwK KwkJCQkJCSAgIHNpemVvZihzdHJ1Y3QgaTkxNV9zeW5jX3B0KSk7CisJaWYgKCFwdCkKKwkJcmV0 dXJuIE5VTEw7CisKKwlyZXQgPSByaW5nLT5hZGRfcmVxdWVzdChyaW5nKTsKKwlpZiAocmV0KSB7 CisJCURSTV9FUlJPUigiYWRkX3JlcXVlc3QgZmFpbGVkXG4iKTsKKwkJc3luY19wdF9mcmVlKChz dHJ1Y3Qgc3luY19wdCAqKXB0KTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcHQtPnNlcW5vID0g cmluZy0+b3V0c3RhbmRpbmdfbGF6eV9zZXFubzsKKworCXJldHVybiAoc3RydWN0IHN5bmNfcHQg KilwdDsKK30KKworc3RhdGljIHN0cnVjdCBzeW5jX3B0ICppOTE1X3N5bmNfZHVwKHN0cnVjdCBz eW5jX3B0ICpzeW5jX3B0KQoreworCXN0cnVjdCBpOTE1X3N5bmNfcHQgKmRzdCwgKnNyYyA9IChz dHJ1Y3QgaTkxNV9zeW5jX3B0ICopc3luY19wdDsKKwlzdHJ1Y3QgaTkxNV9zeW5jX3RpbWVsaW5l ICpvYmogPQorCQkoc3RydWN0IGk5MTVfc3luY190aW1lbGluZSAqKXN5bmNfcHRfcGFyZW50KHN5 bmNfcHQpOworCisJZHN0ID0gKHN0cnVjdCBpOTE1X3N5bmNfcHQgKilpOTE1X3N5bmNfcHRfY3Jl YXRlKG9iaik7CisJaWYgKCFkc3QpCisJCXJldHVybiBOVUxMOworCisJZHN0LT5zZXFubyA9IHNy Yy0+c2Vxbm87CisKKwlyZXR1cm4gKHN0cnVjdCBzeW5jX3B0ICopZHN0OworfQorCitzdGF0aWMg aW50IGk5MTVfc3luY19zaWduYWxlZChzdHJ1Y3Qgc3luY19wdCAqc3luY19wdCkKK3sKKwlzdHJ1 Y3QgaTkxNV9zeW5jX3B0ICpwdCA9IChzdHJ1Y3QgaTkxNV9zeW5jX3B0ICopc3luY19wdDsKKwlz dHJ1Y3QgaTkxNV9zeW5jX3RpbWVsaW5lICpvYmogPQorCQkoc3RydWN0IGk5MTVfc3luY190aW1l bGluZSAqKXN5bmNfcHRfcGFyZW50KHN5bmNfcHQpOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcgPSBvYmotPnJpbmc7CisKKwlyZXR1cm4gaTkxNV9zZXFub19wYXNzZWQocmluZy0+Z2V0 X3NlcW5vKHJpbmcsIGZhbHNlKSwgcHQtPnNlcW5vKTsKK30KKworc3RhdGljIGludCBpOTE1X3N5 bmNfY29tcGFyZShzdHJ1Y3Qgc3luY19wdCAqcHRhLCBzdHJ1Y3Qgc3luY19wdCAqcHRiKQorewor CXN0cnVjdCBpOTE1X3N5bmNfcHQgKnB0MSA9IChzdHJ1Y3QgaTkxNV9zeW5jX3B0ICopcHRhOwor CXN0cnVjdCBpOTE1X3N5bmNfcHQgKnB0MiA9IChzdHJ1Y3QgaTkxNV9zeW5jX3B0ICopcHRiOwor CXUzMiBhID0gcHQxLT5zZXFubywgYiA9IHB0Mi0+c2Vxbm87CisKKwlpZiAoYSA9PSBiKQorCQly ZXR1cm4gMDsKKworCXJldHVybiAoKHMzMilhIC0gKHMzMiliKSA8IDAgPyAtMSA6IDE7Cit9CisK K3N0YXRpYyBpbnQgaTkxNV9zeW5jX2ZpbGxfZHJpdmVyX2RhdGEoc3RydWN0IHN5bmNfcHQgKnN5 bmNfcHQsIHZvaWQgKmRhdGEsCisJCQkJICAgICAgaW50IHNpemUpCit7CisJc3RydWN0IGk5MTVf c3luY19wdCAqcHQgPSAoc3RydWN0IGk5MTVfc3luY19wdCAqKXN5bmNfcHQ7CisKKwlpZiAoc2l6 ZSA8IHNpemVvZihwdC0+c2Vxbm8pKQorCQlyZXR1cm4gLUVOT01FTTsKKworCW1lbWNweShkYXRh LCAmcHQtPnNlcW5vLCBzaXplb2YocHQtPnNlcW5vKSk7CisKKwlyZXR1cm4gc2l6ZW9mKHB0LT5z ZXFubyk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfc3luY190aW1lbGluZV92YWx1ZV9zdHIoc3Ry dWN0IHN5bmNfdGltZWxpbmUgKnRpbWVsaW5lLAorCQkJCQkgY2hhciAqc3RyLCBpbnQgc2l6ZSkK K3sKKwlzdHJ1Y3QgaTkxNV9zeW5jX3RpbWVsaW5lICpvYmogPSAoc3RydWN0IGk5MTVfc3luY190 aW1lbGluZSAqKXRpbWVsaW5lOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcgPSBvYmot PnJpbmc7CisKKwlzbnByaW50ZihzdHIsIHNpemUsICIldSIsIHJpbmctPmdldF9zZXFubyhyaW5n LCBmYWxzZSkpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3B0X3ZhbHVlX3N0cihzdHJ1Y3Qgc3lu Y19wdCAqc3luY19wdCwgY2hhciAqc3RyLCBpbnQgc2l6ZSkKK3sKKwlzdHJ1Y3QgaTkxNV9zeW5j X3B0ICpwdCA9IChzdHJ1Y3QgaTkxNV9zeW5jX3B0ICopc3luY19wdDsKKworCXNucHJpbnRmKHN0 ciwgc2l6ZSwgIiV1IiwgcHQtPnNlcW5vKTsKK30KKworc3RhdGljIHN0cnVjdCBzeW5jX3RpbWVs aW5lX29wcyBpOTE1X3N5bmNfb3BzID0geworCS5kcml2ZXJfbmFtZSA9IAkJImk5MTVfc3luYyIs CisJLmR1cCA9CQkJaTkxNV9zeW5jX2R1cCwKKwkuaGFzX3NpZ25hbGVkID0JCWk5MTVfc3luY19z aWduYWxlZCwKKwkuY29tcGFyZSA9CQlpOTE1X3N5bmNfY29tcGFyZSwKKwkuZmlsbF9kcml2ZXJf ZGF0YSA9CWk5MTVfc3luY19maWxsX2RyaXZlcl9kYXRhLAorCS50aW1lbGluZV92YWx1ZV9zdHIg PQlpOTE1X3N5bmNfdGltZWxpbmVfdmFsdWVfc3RyLAorCS5wdF92YWx1ZV9zdHIgPQkJaTkxNV9w dF92YWx1ZV9zdHIsCit9OworCisvKioKKyAqIGk5MTVfc3luY19jcmVhdGVfZmVuY2VfaW9jdGwg LSBmZW5jZSBjcmVhdGlvbiBmdW5jdGlvbgorICogQGRldjogZHJtIGRldmljZQorICogQGRhdGE6 IGlvY3RsIGRhdGEKKyAqIEBmaWxlOiBmaWxlIHN0cnVjdAorICoKKyAqIFRoaXMgZnVuY3Rpb24g Y3JlYXRlcyBhIGZlbmNlIGdpdmVuIGEgY29udGV4dCBhbmQgcmluZywgYW5kIHJldHVybnMKKyAq IGl0IHRvIHRoZSBjYWxsZXIgaW4gdGhlIGZvcm0gb2YgYSBmaWxlIGRlc2NyaXB0b3IuCisgKgor ICogVGhlIHJldHVybmVkIGRlc2NyaXB0b3IgaXMgYSBzeW5jIGZlbmNlIGZkLCBhbmQgY2FuIGJl IHVzZWQgd2l0aCBhbGwKKyAqIHRoZSB1c3VhbCBzeW5jIGZlbmNlIG9wZXJhdGlvbnMgKHBvbGws IGlvY3RsLCBldGMpLgorICoKKyAqIFRoZSBwcm9jZXNzIGZkIGxpbWl0IHNob3VsZCBwcmV2ZW50 IGFuIG92ZXJhbGxvY2F0aW9uIG9mIGZlbmNlIG9iamVjdHMsCisgKiB3aGljaCBuZWVkIHRvIGJl IGRlc3Ryb3llZCBtYW51YWxseSB3aXRoIGEgY2xvc2UoKSBjYWxsLgorICovCitpbnQgaTkxNV9z eW5jX2NyZWF0ZV9mZW5jZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAorCQkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Zl bmNlICpmZGF0YSA9IGRhdGE7CisJc3RydWN0IHN5bmNfcHQgKnB0OworCXN0cnVjdCBzeW5jX2Zl bmNlICpmZW5jZTsKKwlzdHJ1Y3QgaTkxNV9zeW5jX3RpbWVsaW5lICpvYmo7CisJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqcmluZzsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4OworCXUzMiBj dHhfaWQgPSBmZGF0YS0+Y3R4X2lkOworCWludCBmZCA9IGdldF91bnVzZWRfZmRfZmxhZ3MoT19D TE9FWEVDKTsKKwlpbnQgcmV0ID0gMDsKKworCWlmIChmaWxlID09IE5VTEwpIHsKKwkJRFJNX0VS Uk9SKCJubyBmaWxlIHByaXY/XG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0g aTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKKwlpZiAocmV0KSB7CisJCURSTV9F UlJPUigibXV0ZXggaW50ZXJydXB0ZWRcbiIpOworCQlnb3RvIG91dDsKKwl9CisKKwljdHggPSBp OTE1X2dlbV9jb250ZXh0X2dldChmaWxlLT5kcml2ZXJfcHJpdiwgY3R4X2lkKTsKKwlpZiAoY3R4 ID09IE5VTEwpIHsKKwkJRFJNX0VSUk9SKCJjb250ZXh0IGxvb2t1cCBmYWlsZWRcbiIpOworCQly ZXQgPSAtRU5PRU5UOworCQlnb3RvIGVycjsKKwl9CisKKwlyaW5nID0gJmRldl9wcml2LT5yaW5n W1JDU107CisKKwlpZiAoIXJpbmcpIHsKKwkJRFJNX0VSUk9SKCJjb250ZXh0IGhhcyBubyBsYXN0 IHJpbmdcbiIpOworCQlyZXQgPSAtRUlPOworCQlnb3RvIGVycjsKKwl9CisKKwlpZiAoIWludGVs X3JpbmdfaW5pdGlhbGl6ZWQocmluZykpIHsKKwkJRFJNX0VSUk9SKCJyaW5nIG5vdCByZWFkeVxu Iik7CisJCXJldCA9IC1FSU87CisJCWdvdG8gZXJyOworCX0KKworCW9iaiA9IGRldl9wcml2LT5z eW5jX3RsW3JpbmctPmlkXTsKKworCXB0ID0gaTkxNV9zeW5jX3B0X2NyZWF0ZShvYmopOworCWlm ICghcHQpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBlcnI7CisJfQorCisJZmRhdGEtPm5h bWVbc2l6ZW9mKGZkYXRhLT5uYW1lKSAtIDFdID0gJ1wwJzsKKwlmZW5jZSA9IHN5bmNfZmVuY2Vf Y3JlYXRlKGZkYXRhLT5uYW1lLCBwdCk7CisJaWYgKCFmZW5jZSkgeworCQlzeW5jX3B0X2ZyZWUo cHQpOworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGVycjsKKwl9CisKKwlmZGF0YS0+ZmQgPSBm ZDsKKworCXN5bmNfZmVuY2VfaW5zdGFsbChmZW5jZSwgZmQpOworCisJbXV0ZXhfdW5sb2NrKCZk ZXYtPnN0cnVjdF9tdXRleCk7CitvdXQ6CisJcmV0dXJuIHJldDsKKworZXJyOgorCW11dGV4X3Vu bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXB1dF91bnVzZWRfZmQoZmQpOworCXJldHVybiBy ZXQ7Cit9CisKKy8qIEZJWE1FOiBoYW5kbGUgaGFuZ3MgKi8KK3ZvaWQgaTkxNV9zeW5jX3NpZ25h bChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisKKwlzeW5jX3RpbWVsaW5l X3NpZ25hbCgmZGV2X3ByaXYtPnN5bmNfdGxbcmluZy0+aWRdLT5vYmopOworfQorCitpbnQgaTkx NV9zeW5jX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmc7CisJc3RydWN0IGk5MTVfc3luY190aW1lbGluZSAqdGw7 CisJaW50IGksIHJldCA9IDA7CisKKwlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKSB7 CisJCXRsID0gKHN0cnVjdCBpOTE1X3N5bmNfdGltZWxpbmUgKikKKwkJCXN5bmNfdGltZWxpbmVf Y3JlYXRlKCZpOTE1X3N5bmNfb3BzLAorCQkJCQkgICAgIHNpemVvZihzdHJ1Y3QgaTkxNV9zeW5j X3RpbWVsaW5lKSwKKwkJCQkJICAgICByaW5nLT5uYW1lKTsKKwkJaWYgKCF0bCkgeworCQkJcmV0 ID0gLUVOT01FTTsKKwkJCWdvdG8gb3V0X2VycjsKKwkJfQorCQl0bC0+ZGV2X3ByaXYgPSBkZXZf cHJpdjsKKwkJdGwtPnJpbmcgPSByaW5nOworCQlkZXZfcHJpdi0+c3luY190bFtyaW5nLT5pZF0g PSB0bDsKKwl9CisKKwlyZXR1cm4gcmV0OworCitvdXRfZXJyOgorCWZvciAoaSA9IDA7IGkgPCBJ OTE1X05VTV9SSU5HUzsgaSsrKQorCQlrZnJlZShkZXZfcHJpdi0+c3luY190bFtpXSk7CisKKwly ZXR1cm4gcmV0OworfQorCit2b2lkIGk5MTVfc3luY19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKK3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBJOTE1X05VTV9S SU5HUzsgaSsrKSB7CisJCXN0cnVjdCBpOTE1X3N5bmNfdGltZWxpbmUgKnRsID0gZGV2X3ByaXYt PnN5bmNfdGxbaV07CisKKwkJc3luY190aW1lbGluZV9kZXN0cm95KCZ0bC0+b2JqKTsKKwl9Cit9 CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmgKaW5kZXggZmY1N2YwNy4uNjViZDI3MSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApA QCAtMjI0LDYgKzIyNCw3IEBAIHR5cGVkZWYgc3RydWN0IF9kcm1faTkxNV9zYXJlYSB7CiAjZGVm aW5lIERSTV9JOTE1X1JFR19SRUFECQkweDMxCiAjZGVmaW5lIERSTV9JOTE1X0dFVF9SRVNFVF9T VEFUUwkweDMyCiAjZGVmaW5lIERSTV9JOTE1X0dFTV9VU0VSUFRSCQkweDMzCisjZGVmaW5lIERS TV9JOTE1X0dFTV9GRU5DRQkJMHgzNAogCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lOSVQJCURS TV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklULCBkcm1faTkxNV9pbml0X3Qp CiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0ZMVVNICQlEUk1fSU8gKCBEUk1fQ09NTUFORF9CQVNF ICsgRFJNX0k5MTVfRkxVU0gpCkBAIC0yNzUsNiArMjc2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2Ry bV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUkVHX1JFQUQJCQlEUk1fSU9X UiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1JFR19SRUFELCBzdHJ1Y3QgZHJtX2k5MTVf cmVnX3JlYWQpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFVF9SRVNFVF9TVEFUUwkJRFJNX0lP V1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRVRfUkVTRVRfU1RBVFMsIHN0cnVjdCBk cm1faTkxNV9yZXNldF9zdGF0cykKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1VTRVJQVFIJ CQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9VU0VSUFRSLCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3VzZXJwdHIpCisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9GRU5D RQkJCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX0ZFTkNFLCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2ZlbmNlKQogCiAvKiBBbGxvdyBkcml2ZXJzIHRvIHN1Ym1pdCBiYXRj aGJ1ZmZlcnMgZGlyZWN0bHkgdG8gaGFyZHdhcmUsIHJlbHlpbmcKICAqIG9uIHRoZSBzZWN1cml0 eSBtZWNoYW5pc21zIHByb3ZpZGVkIGJ5IGhhcmR3YXJlLgpAQCAtMTA2Niw0ICsxMDY4LDI1IEBA IHN0cnVjdCBkcm1faTkxNV9nZW1fdXNlcnB0ciB7CiAJX191MzIgaGFuZGxlOwogfTsKIAorLyoq CisgKiBkcm1faTkxNV9nZW1fZmVuY2UgLSBjcmVhdGUgYSBmZW5jZQorICogQGZkOiBmZCBmb3Ig ZmVuY2UKKyAqIEBjdHhfaWQ6IGNvbnRleHQgSUQgZm9yIGZlbmNlCisgKiBAZmxhZ3M6IGZsYWdz IGZvciBvcGVyYXRpb24KKyAqCisgKiBDcmVhdGVzIGEgZmVuY2UgaW4gQGZkIGFuZCByZXR1cm5z IGl0IHRvIHRoZSBjYWxsZXIuICBUaGlzIGZkIGNhbiBiZQorICogcGFzc2VkIGFyb3VuZCBiZXR3 ZWVuIHByb2Nlc3NlcyBhcyBhbnkgb3RoZXIgZmQsIGFuZCBjYW4gYmUgcG9sbCdkCisgKiBhbmQg cmVhZCBmb3Igc3RhdHVzLgorICoKKyAqIFJFVFVSTlM6CisgKiBBIHZhbGlkIGZkIGluIHRoZSBA ZmQgZmllbGQgb3IgYW4gZXJybm8gb24gZXJyb3IuCisgKi8KK3N0cnVjdCBkcm1faTkxNV9nZW1f ZmVuY2UgeworCV9fczMyIGZkOworCV9fdTMyIGN0eF9pZDsKKwlfX3UzMiBmbGFnczsKKwlfX3Uz MiBwYWQ7CisJY2hhciBuYW1lWzMyXTsKK307CisKICNlbmRpZiAvKiBfVUFQSV9JOTE1X0RSTV9I XyAqLwotLSAKMS43LjkuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK