From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [CI 08/10] drm/i915/scheduler: Execute requests in order of priorities Date: Mon, 14 Nov 2016 20:41:03 +0000 Message-ID: <20161114204105.29171-8-chris@chris-wilson.co.uk> References: <20161114204105.29171-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id B5FA56E513 for ; Mon, 14 Nov 2016 20:41:16 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id a20so18909665wme.2 for ; Mon, 14 Nov 2016 12:41:16 -0800 (PST) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id j6sm30628364wjk.25.2016.11.14.12.41.13 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 14 Nov 2016 12:41:13 -0800 (PST) In-Reply-To: <20161114204105.29171-1-chris@chris-wilson.co.uk> 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 VHJhY2sgdGhlIHByaW9yaXR5IG9mIGVhY2ggcmVxdWVzdCBhbmQgdXNlIGl0IHRvIGRldGVybWlu ZSB0aGUgb3JkZXIgaW4Kd2hpY2ggd2Ugc3VibWl0IHJlcXVlc3RzIHRvIHRoZSBoYXJkd2FyZSB2 aWEgZXhlY2xpc3RzLgoKVGhlIHByaW9yaXR5IG9mIHRoZSByZXF1ZXN0IGlzIGRldGVybWluZWQg YnkgdGhlIHVzZXIgKGV2ZW50dWFsbHkgdmlhCnRoZSBjb250ZXh0KSBidXQgbWF5IGJlIG92ZXJy aWRkZW4gYXQgYW55IHRpbWUgYnkgdGhlIGRyaXZlci4gV2hlbiB3ZSBzZXQKdGhlIHByaW9yaXR5 IG9mIHRoZSByZXF1ZXN0LCB3ZSBidW1wIHRoZSBwcmlvcml0eSBvZiBhbGwgb2YgaXRzCmRlcGVu ZGVuY2llcyB0byBtYXRjaCAtIHNvIHRoYXQgYSBoaWdoIHByaW9yaXR5IGRyYXdpbmcgb3BlcmF0 aW9uIGlzIG5vdApzdHVjayBiZWhpbmQgYSBiYWNrZ3JvdW5kIHRhc2suCgpXaGVuIHRoZSByZXF1 ZXN0IGlzIHJlYWR5IHRvIGV4ZWN1dGUgKGkuZS4gd2UgaGF2ZSBzaWduYWxlZCB0aGUgc3VibWl0 CmZlbmNlIGZvbGxvd2luZyBjb21wbGV0aW9uIG9mIGFsbCBpdHMgZGVwZW5kZW5jaWVzLCBpbmNs dWRpbmcgdGhpcmQKcGFydHkgZmVuY2VzKSwgd2UgcHV0IHRoZSByZXF1ZXN0IGludG8gYSBwcmlv cml0eSBzb3J0ZWQgcmJ0cmVlIHRvIGJlCnN1Ym1pdHRlZCB0byB0aGUgaGFyZHdhcmUuIElmIHRo ZSByZXF1ZXN0IGlzIGhpZ2hlciBwcmlvcml0eSB0aGFuIGFsbApwZW5kaW5nIHJlcXVlc3RzLCBp dCB3aWxsIGJlIHN1Ym1pdHRlZCBvbiB0aGUgbmV4dCBjb250ZXh0LXN3aXRjaAppbnRlcnJ1cHQg YXMgc29vbiBhcyB0aGUgaGFyZHdhcmUgaGFzIGNvbXBsZXRlZCB0aGUgY3VycmVudCByZXF1ZXN0 LiBXZQpkbyBub3QgY3VycmVudGx5IHByZWVtcHQgYW55IGN1cnJlbnQgZXhlY3V0aW9uIHRvIGlt bWVkaWF0ZWx5IHJ1biBhIHZlcnkKaGlnaCBwcmlvcml0eSByZXF1ZXN0LCBhdCBsZWFzdCBub3Qg eWV0LgoKT25lIG1vcmUgbGltaXRhdGlvbiwgaXMgdGhhdCB0aGlzIGlzIGZpcnN0IGltcGxlbWVu dGF0aW9uIGlzIGZvcgpleGVjbGlzdHMgb25seSBzbyBjdXJyZW50bHkgbGltaXRlZCB0byBnZW44 L2dlbjkuCgp2MjogUmVwbGFjZSByZWN1cnNpdmUgcHJpb3JpdHkgaW5oZXJpdGFuY2UgYnVtcGlu ZyB3aXRoIGFuIGl0ZXJhdGl2ZQpkZXB0aC1maXJzdCBzZWFyY2ggbGlzdC4KdjM6IGxpc3RfbmV4 dF9lbnRyeSgpIGZvciB3YWxraW5nIGxpc3RzCnY0OiBFeHBsYWluIGhvdyB0aGUgZGZzIHNvbHZl cyB0aGUgcmVjdXJzaW9uIHByb2JsZW0gd2l0aCBQSS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3Vs aW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyAgICAgICAgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMgICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVxdWVzdC5jICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuaCAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICAgICB8 ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgMTUx ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmggICAgfCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgMTY1IGluc2VydGlv bnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5k ZXggMDNlM2MyYWZiYjA2Li4xY2M5NzFjYjZjYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCkBAIC02MzEsOCArNjMxLDkgQEAgc3RhdGljIHZvaWQgcHJpbnRfcmVxdWVzdChzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sCiAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEsCiAJ CQkgIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlzZXFfcHJpbnRmKG0sICIlcyV4IFsleDoleF0g QCAlZDogJXNcbiIsIHByZWZpeCwKKwlzZXFfcHJpbnRmKG0sICIlcyV4IFsleDoleF0gcHJpbz0l ZCBAICVkbXM6ICVzXG4iLCBwcmVmaXgsCiAJCSAgIHJxLT5nbG9iYWxfc2Vxbm8sIHJxLT5jdHgt Pmh3X2lkLCBycS0+ZmVuY2Uuc2Vxbm8sCisJCSAgIHJxLT5wcmlvdHJlZS5wcmlvcml0eSwKIAkJ ICAgamlmZmllc190b19tc2VjcyhqaWZmaWVzIC0gcnEtPmVtaXR0ZWRfamlmZmllcyksCiAJCSAg IHJxLT50aW1lbGluZS0+Y29tbW9uLT5uYW1lKTsKIH0KQEAgLTMyMTYsNiArMzIxNyw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNl ZCkKIAogCQlpZiAoaTkxNS5lbmFibGVfZXhlY2xpc3RzKSB7CiAJCQl1MzIgcHRyLCByZWFkLCB3 cml0ZTsKKwkJCXN0cnVjdCByYl9ub2RlICpyYjsKIAogCQkJc2VxX3ByaW50ZihtLCAiXHRFeGVj bGlzdCBzdGF0dXM6IDB4JTA4eCAlMDh4XG4iLAogCQkJCSAgIEk5MTVfUkVBRChSSU5HX0VYRUNM SVNUX1NUQVRVU19MTyhlbmdpbmUpKSwKQEAgLTMyNTUsNyArMzI1Nyw4IEBAIHN0YXRpYyBpbnQg aTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJCXJj dV9yZWFkX3VubG9jaygpOwogCiAJCQlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5s b2NrKTsKLQkJCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVl LCBleGVjbGlzdF9saW5rKSB7CisJCQlmb3IgKHJiID0gZW5naW5lLT5leGVjbGlzdF9maXJzdDsg cmI7IHJiID0gcmJfbmV4dChyYikpIHsKKwkJCQlycSA9IHJiX2VudHJ5KHJiLCB0eXBlb2YoKnJx KSwgcHJpb3RyZWUubm9kZSk7CiAJCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRRICIpOwog CQkJfQogCQkJc3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCmluZGV4IGZhZWNjZTNjNGQyMS4uN2E0M2YyYTczNTUyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTI3MjEsMTAgKzI3MjEsMTEgQEAgc3RhdGljIHZvaWQgaTkx NV9nZW1fY2xlYW51cF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiAJ CXNwaW5fbG9ja19pcnFzYXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7CiAKLQkJ SU5JVF9MSVNUX0hFQUQoJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOwogCQlpOTE1X2dlbV9yZXF1 ZXN0X3B1dChlbmdpbmUtPmV4ZWNsaXN0X3BvcnRbMF0ucmVxdWVzdCk7CiAJCWk5MTVfZ2VtX3Jl cXVlc3RfcHV0KGVuZ2luZS0+ZXhlY2xpc3RfcG9ydFsxXS5yZXF1ZXN0KTsKIAkJbWVtc2V0KGVu Z2luZS0+ZXhlY2xpc3RfcG9ydCwgMCwgc2l6ZW9mKGVuZ2luZS0+ZXhlY2xpc3RfcG9ydCkpOwor CQllbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlID0gUkJfUk9PVDsKKwkJZW5naW5lLT5leGVjbGlzdF9m aXJzdCA9IE5VTEw7CiAKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZW5naW5lLT50aW1lbGlu ZS0+bG9jaywgZmxhZ3MpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3Qu YwppbmRleCA3OGM4N2Q5NGQyMDUuLjEzNTc0YTFlMjliMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlcXVlc3QuYwpAQCAtMTMyLDYgKzEzMiw3IEBAIF9faTkxNV9wcmlvdHJlZV9h ZGRfZGVwZW5kZW5jeShzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQsCiAJCQkgICAgICAgc3RydWN0 IGk5MTVfZGVwZW5kZW5jeSAqZGVwLAogCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7 CisJSU5JVF9MSVNUX0hFQUQoJmRlcC0+ZGZzX2xpbmspOwogCWxpc3RfYWRkKCZkZXAtPndhaXRf bGluaywgJnNpZ25hbC0+d2FpdGVyc19saXN0KTsKIAlsaXN0X2FkZCgmZGVwLT5zaWduYWxfbGlu aywgJnB0LT5zaWduYWxlcnNfbGlzdCk7CiAJZGVwLT5zaWduYWxlciA9IHNpZ25hbDsKQEAgLTE1 OCw2ICsxNTksOCBAQCBpOTE1X3ByaW90cmVlX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIHN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCkKIHsKIAlzdHJ1Y3QgaTkxNV9kZXBlbmRl bmN5ICpkZXAsICpuZXh0OwogCisJR0VNX0JVR19PTighUkJfRU1QVFlfTk9ERSgmcHQtPm5vZGUp KTsKKwogCS8qIEV2ZXJ5b25lIHdlIGRlcGVuZGVkIHVwb24gKHRoZSBmZW5jZXMgd2Ugd2FpdCB0 byBiZSBzaWduYWxlZCkKIAkgKiBzaG91bGQgcmV0aXJlIGJlZm9yZSB1cyBhbmQgcmVtb3ZlIHRo ZW1zZWx2ZXMgZnJvbSBvdXIgbGlzdC4KIAkgKiBIb3dldmVyLCByZXRpcmVtZW50IGlzIHJ1biBp bmRlcGVuZGVudGx5IG9uIGVhY2ggdGltZWxpbmUgYW5kCkBAIC0xODIsNiArMTg1LDggQEAgaTkx NV9wcmlvdHJlZV9pbml0KHN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCkKIHsKIAlJTklUX0xJU1Rf SEVBRCgmcHQtPnNpZ25hbGVyc19saXN0KTsKIAlJTklUX0xJU1RfSEVBRCgmcHQtPndhaXRlcnNf bGlzdCk7CisJUkJfQ0xFQVJfTk9ERSgmcHQtPm5vZGUpOworCXB0LT5wcmlvcml0eSA9IElOVF9N SU47CiB9CiAKIHZvaWQgaTkxNV9nZW1fcmV0aXJlX25vb3Aoc3RydWN0IGk5MTVfZ2VtX2FjdGl2 ZSAqYWN0aXZlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVx dWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5oCmluZGV4IDk0 M2MzOWQyYTYyYS4uZTJiMDc3ZGYyZGEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVxdWVzdC5oCkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kgewogCXN0 cnVjdCBpOTE1X3ByaW90cmVlICpzaWduYWxlcjsKIAlzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9s aW5rOwogCXN0cnVjdCBsaXN0X2hlYWQgd2FpdF9saW5rOworCXN0cnVjdCBsaXN0X2hlYWQgZGZz X2xpbms7CiAJdW5zaWduZWQgbG9uZyBmbGFnczsKICNkZWZpbmUgSTkxNV9ERVBFTkRFTkNZX0FM TE9DIEJJVCgwKQogfTsKQEAgLTY0LDYgKzY1LDEwIEBAIHN0cnVjdCBpOTE1X2RlcGVuZGVuY3kg ewogc3RydWN0IGk5MTVfcHJpb3RyZWUgewogCXN0cnVjdCBsaXN0X2hlYWQgc2lnbmFsZXJzX2xp c3Q7IC8qIHRob3NlIGJlZm9yZSB1cywgd2UgZGVwZW5kIHVwb24gKi8KIAlzdHJ1Y3QgbGlzdF9o ZWFkIHdhaXRlcnNfbGlzdDsgLyogdGhvc2UgYWZ0ZXIgdXMsIHRoZXkgZGVwZW5kIHVwb24gdXMg Ki8KKwlzdHJ1Y3QgcmJfbm9kZSBub2RlOworCWludCBwcmlvcml0eTsKKyNkZWZpbmUgSTkxNV9Q UklPUklUWV9NQVggMTAyNAorI2RlZmluZSBJOTE1X1BSSU9SSVRZX01JTiAoLUk5MTVfUFJJT1JJ VFlfTUFYKQogfTsKIAogLyoqCkBAIC0xOTQsOSArMTk5LDYgQEAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXY7CiAJ LyoqIGZpbGVfcHJpdiBsaXN0IGVudHJ5IGZvciB0aGlzIHJlcXVlc3QgKi8KIAlzdHJ1Y3QgbGlz dF9oZWFkIGNsaWVudF9saXN0OwotCi0JLyoqIExpbmsgaW4gdGhlIGV4ZWNsaXN0IHN1Ym1pc3Np b24gcXVldWUsIGd1YXJkZWQgYnkgZXhlY2xpc3RfbG9jay4gKi8KLQlzdHJ1Y3QgbGlzdF9oZWFk IGV4ZWNsaXN0X2xpbms7CiB9OwogCiBleHRlcm4gY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMg aTkxNV9mZW5jZV9vcHM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMKaW5kZXggOTQyZjUwMDBkMzcyLi40NDYyMTEyNzI1ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKQEAgLTE1MzIsNiArMTUzMiw3IEBAIGludCBpOTE1 X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJLyogVGFrZSBvdmVyIGZyb20gbWFudWFsIGNvbnRyb2wgb2YgRUxTUCAoZXhlY2xpc3RzKSAq LwogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewogCQllbmdpbmUtPnN1 Ym1pdF9yZXF1ZXN0ID0gaTkxNV9ndWNfc3VibWl0OworCQllbmdpbmUtPnNjaGVkdWxlID0gTlVM TDsKIAogCQkvKiBSZXBsYXkgdGhlIGN1cnJlbnQgc2V0IG9mIHByZXZpb3VzbHkgc3VibWl0dGVk IHJlcXVlc3RzICovCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggYzkxNzFhMDU4NDc4Li4zZGE0ZDQ2NmUzMzIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0yMzksNyArMjM5LDgg QEAgc3RhdGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfdGltZWxpbmUoc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKQogICovCiB2b2lkIGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewotCUlOSVRfTElTVF9IRUFEKCZlbmdpbmUt PmV4ZWNsaXN0X3F1ZXVlKTsKKwllbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlID0gUkJfUk9PVDsKKwll bmdpbmUtPmV4ZWNsaXN0X2ZpcnN0ID0gTlVMTDsKIAogCWludGVsX2VuZ2luZV9pbml0X3RpbWVs aW5lKGVuZ2luZSk7CiAJaW50ZWxfZW5naW5lX2luaXRfaGFuZ2NoZWNrKGVuZ2luZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2xyYy5jCmluZGV4IGQxYWVhNzQ2MjUxNS4uMmExNGNlNzU0MjY4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtNDMyLDkgKzQzMiwxMCBAQCBzdGF0aWMgYm9vbCBj YW5fbWVyZ2VfY3R4KGNvbnN0IHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpwcmV2LAogCiBzdGF0 aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiB7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpjdXJzb3IsICpsYXN0OworCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqbGFzdDsKIAlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9y dCA9IGVuZ2luZS0+ZXhlY2xpc3RfcG9ydDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOworCXN0cnVj dCByYl9ub2RlICpyYjsKIAlib29sIHN1Ym1pdCA9IGZhbHNlOwogCiAJbGFzdCA9IHBvcnQtPnJl cXVlc3Q7CkBAIC00NzEsNyArNDcyLDExIEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19kZXF1ZXVl KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAkgKi8KIAogCXNwaW5fbG9ja19pcnFz YXZlKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrLCBmbGFncyk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRy eShjdXJzb3IsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLCBleGVjbGlzdF9saW5rKSB7CisJcmIg PSBlbmdpbmUtPmV4ZWNsaXN0X2ZpcnN0OworCXdoaWxlIChyYikgeworCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKmN1cnNvciA9CisJCQlyYl9lbnRyeShyYiwgdHlwZW9mKCpjdXJzb3Ip LCBwcmlvdHJlZS5ub2RlKTsKKwogCQkvKiBDYW4gd2UgY29tYmluZSB0aGlzIHJlcXVlc3Qgd2l0 aCB0aGUgY3VycmVudCBwb3J0PyBJdCBoYXMgdG8KIAkJICogYmUgdGhlIHNhbWUgY29udGV4dC9y aW5nYnVmZmVyIGFuZCBub3QgaGF2ZSBhbnkgZXhjZXB0aW9ucwogCQkgKiAoZS5nLiBHVlQgc2F5 aW5nIG5ldmVyIHRvIGNvbWJpbmUgY29udGV4dHMpLgpAQCAtNTAzLDYgKzUwOCwxMSBAQCBzdGF0 aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp CiAJCQlwb3J0Kys7CiAJCX0KIAorCQlyYiA9IHJiX25leHQocmIpOworCQlyYl9lcmFzZSgmY3Vy c29yLT5wcmlvdHJlZS5ub2RlLCAmZW5naW5lLT5leGVjbGlzdF9xdWV1ZSk7CisJCVJCX0NMRUFS X05PREUoJmN1cnNvci0+cHJpb3RyZWUubm9kZSk7CisJCWN1cnNvci0+cHJpb3RyZWUucHJpb3Jp dHkgPSBJTlRfTUFYOworCiAJCS8qIFdlIGtlZXAgdGhlIHByZXZpb3VzIGNvbnRleHQgYWxpdmUg dW50aWwgd2UgcmV0aXJlIHRoZQogCQkgKiBmb2xsb3dpbmcgcmVxdWVzdC4gVGhpcyBlbnN1cmVz IHRoYXQgYW55IHRoZSBjb250ZXh0IG9iamVjdAogCQkgKiBpcyBzdGlsbCBwaW5uZWQgZm9yIGFu eSByZXNpZHVhbCB3cml0ZXMgdGhlIEhXIG1ha2VzIGludG8gaXQKQEAgLTUxNywxMSArNTI3LDgg QEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQogCQlzdWJtaXQgPSB0cnVlOwogCX0KIAlpZiAoc3VibWl0KSB7Ci0JCS8qIERlY291 cGxlIGFsbCB0aGUgcmVxdWVzdHMgc3VibWl0dGVkIGZyb20gdGhlIHF1ZXVlICovCi0JCWVuZ2lu ZS0+ZXhlY2xpc3RfcXVldWUubmV4dCA9ICZjdXJzb3ItPmV4ZWNsaXN0X2xpbms7Ci0JCWN1cnNv ci0+ZXhlY2xpc3RfbGluay5wcmV2ID0gJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWU7Ci0KIAkJaTkx NV9nZW1fcmVxdWVzdF9hc3NpZ24oJnBvcnQtPnJlcXVlc3QsIGxhc3QpOworCQllbmdpbmUtPmV4 ZWNsaXN0X2ZpcnN0ID0gcmI7CiAJfQogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmVuZ2luZS0+ dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKIApAQCAtNjI2LDYgKzYzMywzMiBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIodW5zaWduZWQgbG9uZyBkYXRhKQogCWludGVsX3VuY29y ZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBlbmdpbmUtPmZ3X2RvbWFpbnMpOwogfQogCitzdGF0 aWMgYm9vbCBpbnNlcnRfcmVxdWVzdChzdHJ1Y3QgaTkxNV9wcmlvdHJlZSAqcHQsIHN0cnVjdCBy Yl9yb290ICpyb290KQoreworCXN0cnVjdCByYl9ub2RlICoqcCwgKnJiOworCWJvb2wgZmlyc3Qg PSB0cnVlOworCisJLyogbW9zdCBwb3NpdGl2ZSBwcmlvcml0eSBpcyBzY2hlZHVsZWQgZmlyc3Qs IGVxdWFsIHByaW9yaXRpZXMgZmlmbyAqLworCXJiID0gTlVMTDsKKwlwID0gJnJvb3QtPnJiX25v ZGU7CisJd2hpbGUgKCpwKSB7CisJCXN0cnVjdCBpOTE1X3ByaW90cmVlICpwb3M7CisKKwkJcmIg PSAqcDsKKwkJcG9zID0gcmJfZW50cnkocmIsIHR5cGVvZigqcG9zKSwgbm9kZSk7CisJCWlmIChw dC0+cHJpb3JpdHkgPiBwb3MtPnByaW9yaXR5KSB7CisJCQlwID0gJnJiLT5yYl9sZWZ0OworCQl9 IGVsc2UgeworCQkJcCA9ICZyYi0+cmJfcmlnaHQ7CisJCQlmaXJzdCA9IGZhbHNlOworCQl9CisJ fQorCXJiX2xpbmtfbm9kZSgmcHQtPm5vZGUsIHJiLCBwKTsKKwlyYl9pbnNlcnRfY29sb3IoJnB0 LT5ub2RlLCByb290KTsKKworCXJldHVybiBmaXJzdDsKK30KKwogc3RhdGljIHZvaWQgZXhlY2xp c3RzX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkK IHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXF1ZXN0LT5lbmdpbmU7CkBA IC02MzQsMTMgKzY2NywxMTIgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX3N1Ym1pdF9yZXF1ZXN0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAkvKiBXaWxsIGJlIGNhbGxl ZCBmcm9tIGlycS1jb250ZXh0IHdoZW4gdXNpbmcgZm9yZWlnbiBmZW5jZXMuICovCiAJc3Bpbl9s b2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKIAotCWxpc3RfYWRk X3RhaWwoJnJlcXVlc3QtPmV4ZWNsaXN0X2xpbmssICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKTsK KwlpZiAoaW5zZXJ0X3JlcXVlc3QoJnJlcXVlc3QtPnByaW90cmVlLCAmZW5naW5lLT5leGVjbGlz dF9xdWV1ZSkpCisJCWVuZ2luZS0+ZXhlY2xpc3RfZmlyc3QgPSAmcmVxdWVzdC0+cHJpb3RyZWUu bm9kZTsKIAlpZiAoZXhlY2xpc3RzX2Vsc3BfaWRsZShlbmdpbmUpKQogCQl0YXNrbGV0X2hpX3Nj aGVkdWxlKCZlbmdpbmUtPmlycV90YXNrbGV0KTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmVuZ2luZS0+dGltZWxpbmUtPmxvY2ssIGZsYWdzKTsKIH0KIAorc3RhdGljIHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKgorcHRfbG9ja19lbmdpbmUoc3RydWN0IGk5MTVfcHJpb3RyZWUgKnB0LCBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpsb2NrZWQpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOworCisJZW5naW5lID0gY29udGFpbmVyX29mKHB0LAorCQkJICAgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0LAorCQkJICAgICAgcHJpb3RyZWUpLT5lbmdpbmU7CisJaWYg KGVuZ2luZSAhPSBsb2NrZWQpIHsKKwkJaWYgKGxvY2tlZCkKKwkJCXNwaW5fdW5sb2NrX2lycSgm bG9ja2VkLT50aW1lbGluZS0+bG9jayk7CisJCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxp bmUtPmxvY2spOworCX0KKworCXJldHVybiBlbmdpbmU7Cit9CisKK3N0YXRpYyB2b2lkIGV4ZWNs aXN0c19zY2hlZHVsZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsIGludCBw cmlvKQoreworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IE5VTEw7CisJc3RydWN0 IGk5MTVfZGVwZW5kZW5jeSAqZGVwLCAqcDsKKwlzdHJ1Y3QgaTkxNV9kZXBlbmRlbmN5IHN0YWNr OworCUxJU1RfSEVBRChkZnMpOworCisJaWYgKHByaW8gPD0gUkVBRF9PTkNFKHJlcXVlc3QtPnBy aW90cmVlLnByaW9yaXR5KSkKKwkJcmV0dXJuOworCisJLyogTmVlZCBCS0wgaW4gb3JkZXIgdG8g dXNlIHRoZSB0ZW1wb3JhcnkgbGluayBpbnNpZGUgaTkxNV9kZXBlbmRlbmN5ICovCisJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmcmVxdWVzdC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlzdGFj ay5zaWduYWxlciA9ICZyZXF1ZXN0LT5wcmlvdHJlZTsKKwlsaXN0X2FkZCgmc3RhY2suZGZzX2xp bmssICZkZnMpOworCisJLyogUmVjdXJzaXZlbHkgYnVtcCBhbGwgZGVwZW5kZW50IHByaW9yaXRp ZXMgdG8gbWF0Y2ggdGhlIG5ldyByZXF1ZXN0LgorCSAqCisJICogQSBuYWl2ZSBhcHByb2FjaCB3 b3VsZCBiZSB0byB1c2UgcmVjdXJzaW9uOgorCSAqIHN0YXRpYyB2b2lkIHVwZGF0ZV9wcmlvcml0 aWVzKHN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCwgcHJpbykgeworCSAqIAlsaXN0X2Zvcl9lYWNo X2VudHJ5KGRlcCwgJnB0LT5zaWduYWxlcnNfbGlzdCwgc2lnbmFsX2xpbmspCisJICogCQl1cGRh dGVfcHJpb3JpdGllcyhkZXAtPnNpZ25hbCwgcHJpbykKKwkgKiAJaW5zZXJ0X3JlcXVlc3QocHQp OworCSAqIH0KKwkgKiBidXQgdGhhdCBtYXkgaGF2ZSB1bmxpbWl0ZWQgcmVjdXJzaW9uIGRlcHRo IGFuZCBzbyBydW5zIGEgdmVyeQorCSAqIHJlYWwgcmlzayBvZiBvdmVydW5uaW5nIHRoZSBrZXJu ZWwgc3RhY2suIEluc3RlYWQsIHdlIGJ1aWxkCisJICogYSBmbGF0IGxpc3Qgb2YgYWxsIGRlcGVu ZGVuY2llcyBzdGFydGluZyB3aXRoIHRoZSBjdXJyZW50IHJlcXVlc3QuCisJICogQXMgd2Ugd2Fs ayB0aGUgbGlzdCBvZiBkZXBlbmRlbmNpZXMsIHdlIGFkZCBhbGwgb2YgaXRzIGRlcGVuZGVuY2ll cworCSAqIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QgKHRoaXMgbWF5IGluY2x1ZGUgYW4gYWxyZWFk eSB2aXNpdGVkCisJICogcmVxdWVzdCkgYW5kIGNvbnRpbnVlIHRvIHdhbGsgb253YXJkcyBvbnRv IHRoZSBuZXcgZGVwZW5kZW5jaWVzLiBUaGUKKwkgKiBlbmQgcmVzdWx0IGlzIGEgdG9wb2xvZ2lj YWwgbGlzdCBvZiByZXF1ZXN0cyBpbiByZXZlcnNlIG9yZGVyLCB0aGUKKwkgKiBsYXN0IGVsZW1l bnQgaW4gdGhlIGxpc3QgaXMgdGhlIHJlcXVlc3Qgd2UgbXVzdCBleGVjdXRlIGZpcnN0LgorCSAq LworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXAsIHAsICZkZnMsIGRmc19saW5rKSB7CisJ CXN0cnVjdCBpOTE1X3ByaW90cmVlICpwdCA9IGRlcC0+c2lnbmFsZXI7CisKKwkJbGlzdF9mb3Jf ZWFjaF9lbnRyeShwLCAmcHQtPnNpZ25hbGVyc19saXN0LCBzaWduYWxfbGluaykKKwkJCWlmIChw cmlvID4gUkVBRF9PTkNFKHAtPnNpZ25hbGVyLT5wcmlvcml0eSkpCisJCQkJbGlzdF9tb3ZlX3Rh aWwoJnAtPmRmc19saW5rLCAmZGZzKTsKKworCQlwID0gbGlzdF9uZXh0X2VudHJ5KGRlcCwgZGZz X2xpbmspOworCQlpZiAoIVJCX0VNUFRZX05PREUoJnB0LT5ub2RlKSkKKwkJCWNvbnRpbnVlOwor CisJCWVuZ2luZSA9IHB0X2xvY2tfZW5naW5lKHB0LCBlbmdpbmUpOworCisJCS8qIElmIGl0IGlz IG5vdCBhbHJlYWR5IGluIHRoZSByYnRyZWUsIHdlIGNhbiB1cGRhdGUgdGhlCisJCSAqIHByaW9y aXR5IGlucGxhY2UgYW5kIHNraXAgb3ZlciBpdCAoYW5kIGl0cyBkZXBlbmRlbmNpZXMpCisJCSAq IGlmIGl0IGlzIHJlZmVyZW5jZWQgKmFnYWluKiBhcyB3ZSBkZXNjZW5kIHRoZSBkZnMuCisJCSAq LworCQlpZiAocHJpbyA+IHB0LT5wcmlvcml0eSAmJiBSQl9FTVBUWV9OT0RFKCZwdC0+bm9kZSkp IHsKKwkJCXB0LT5wcmlvcml0eSA9IHByaW87CisJCQlsaXN0X2RlbF9pbml0KCZkZXAtPmRmc19s aW5rKTsKKwkJfQorCX0KKworCS8qIEZpZm8gYW5kIGRlcHRoLWZpcnN0IHJlcGxhY2VtZW50IGVu c3VyZSBvdXIgZGVwcyBleGVjdXRlIGJlZm9yZSB1cyAqLworCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZV9yZXZlcnNlKGRlcCwgcCwgJmRmcywgZGZzX2xpbmspIHsKKwkJc3RydWN0IGk5MTVfcHJp b3RyZWUgKnB0ID0gZGVwLT5zaWduYWxlcjsKKworCQlJTklUX0xJU1RfSEVBRCgmZGVwLT5kZnNf bGluayk7CisKKwkJZW5naW5lID0gcHRfbG9ja19lbmdpbmUocHQsIGVuZ2luZSk7CisKKwkJaWYg KHByaW8gPD0gcHQtPnByaW9yaXR5KQorCQkJY29udGludWU7CisKKwkJR0VNX0JVR19PTihSQl9F TVBUWV9OT0RFKCZwdC0+bm9kZSkpOworCisJCXB0LT5wcmlvcml0eSA9IHByaW87CisJCXJiX2Vy YXNlKCZwdC0+bm9kZSwgJmVuZ2luZS0+ZXhlY2xpc3RfcXVldWUpOworCQlpZiAoaW5zZXJ0X3Jl cXVlc3QocHQsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlKSkKKwkJCWVuZ2luZS0+ZXhlY2xpc3Rf Zmlyc3QgPSAmcHQtPm5vZGU7CisJfQorCisJaWYgKGVuZ2luZSkKKwkJc3Bpbl91bmxvY2tfaXJx KCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKKworCS8qIFhYWCBEbyB3ZSBuZWVkIHRvIHByZWVt cHQgdG8gbWFrZSByb29tIGZvciB1cyBhbmQgb3VyIGRlcHM/ICovCit9CisKIGludCBpbnRlbF9s b2dpY2FsX3JpbmdfYWxsb2NfcmVxdWVzdF9leHRyYXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXF1ZXN0KQogewogCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVl c3QtPmVuZ2luZTsKQEAgLTE2NzcsOCArMTgwOSwxMCBAQCB2b2lkIGludGVsX2V4ZWNsaXN0c19l bmFibGVfc3VibWlzc2lvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwog Ci0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQorCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewogCQllbmdpbmUtPnN1Ym1pdF9yZXF1ZXN0ID0gZXhl Y2xpc3RzX3N1Ym1pdF9yZXF1ZXN0OworCQllbmdpbmUtPnNjaGVkdWxlID0gZXhlY2xpc3RzX3Nj aGVkdWxlOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTE2OTEsNiArMTgyNSw3IEBAIGxvZ2lj YWxfcmluZ19kZWZhdWx0X3ZmdW5jcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJ ZW5naW5lLT5lbWl0X2JyZWFkY3J1bWIgPSBnZW44X2VtaXRfYnJlYWRjcnVtYjsKIAllbmdpbmUt PmVtaXRfYnJlYWRjcnVtYl9zeiA9IGdlbjhfZW1pdF9icmVhZGNydW1iX3N6OwogCWVuZ2luZS0+ c3VibWl0X3JlcXVlc3QgPSBleGVjbGlzdHNfc3VibWl0X3JlcXVlc3Q7CisJZW5naW5lLT5zY2hl ZHVsZSA9IGV4ZWNsaXN0c19zY2hlZHVsZTsKIAogCWVuZ2luZS0+aXJxX2VuYWJsZSA9IGdlbjhf bG9naWNhbF9yaW5nX2VuYWJsZV9pcnE7CiAJZW5naW5lLT5pcnFfZGlzYWJsZSA9IGdlbjhfbG9n aWNhbF9yaW5nX2Rpc2FibGVfaXJxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5oCmluZGV4IGI5NTgzOTQxZWI2Yi4uMzQ2NmI0ZTc3ZTdjIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC0zNDgsNyArMzQ4LDggQEAgc3RydWN0IGludGVsX2Vu Z2luZV9jcyB7CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKIAkJdW5z aWduZWQgaW50IGNvdW50OwogCX0gZXhlY2xpc3RfcG9ydFsyXTsKLQlzdHJ1Y3QgbGlzdF9oZWFk IGV4ZWNsaXN0X3F1ZXVlOworCXN0cnVjdCByYl9yb290IGV4ZWNsaXN0X3F1ZXVlOworCXN0cnVj dCByYl9ub2RlICpleGVjbGlzdF9maXJzdDsKIAl1bnNpZ25lZCBpbnQgZndfZG9tYWluczsKIAli b29sIGRpc2FibGVfbGl0ZV9yZXN0b3JlX3dhOwogCWJvb2wgcHJlZW1wdF93YTsKLS0gCjIuMTAu MgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==