From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 13/18] drm/i915: Move the global sync optimisation to the timeline Date: Wed, 14 Sep 2016 07:52:45 +0100 Message-ID: <20160914065250.15482-14-chris@chris-wilson.co.uk> References: <20160914065250.15482-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-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3B30F6E712 for ; Wed, 14 Sep 2016 06:53:14 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id b187so1020339wme.0 for ; Tue, 13 Sep 2016 23:53:14 -0700 (PDT) In-Reply-To: <20160914065250.15482-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 Q3VycmVudGx5IHdlIHRyeSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBzeW5jaHJvbmlzYXRpb25z IChub3cgdGhlCm51bWJlciBvZiByZXF1ZXN0cyB3ZSBuZWVkIHRvIHdhaXQgdXBvbikgYnkgbm90 aW5nIHRoYXQgaWYgd2UgaGF2ZQplYXJsaWVyIHdhaXRlZCB1cG9uIGEgcmVxdWVzdCwgYWxsIHN1 YnNlcXVlbnQgcmVxdWVzdHMgaW4gdGhlIHRpbWVsaW5lCndpbGwgYmUgYWZ0ZXIgdGhlIHdhaXQu IFRoaXMgb25seSBhcHBsaWVzIHRvIHJlcXVlc3RzIGluIHRoaXMgdGltZWxpbmUsCmFzIG90aGVy IHRpbWVsaW5lcyB3aWxsIG5vdCBiZSBvcmRlcmVkIGJ5IHRoYXQgd2FpdGVyLgoKU2lnbmVkLW9m Zi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICB8ICA5IC0tLS0tLS0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8ICAxIC0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyAgfCAxNiArKysrKysrKysrKy0tLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5oIHwgIDEgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICB8IDIzICsrKysrKystLS0tLS0tLS0tLS0tLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgIHwgIDIgLS0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyAgfCAgMyAtLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgfCAgMiAtLQogOCBmaWxlcyBjaGFuZ2VkLCAxOSBp bnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCmluZGV4IGIzMjVlYzNiNWEwOS4uZjdjNWUwOTEyMmFiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwpAQCAtMzE1NSwxNSArMzE1NSw2IEBAIHN0YXRpYyBpbnQgaTkxNV9zZW1h cGhvcmVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQlzZXFfcHV0 YyhtLCAnXG4nKTsKIAl9CiAKLQlzZXFfcHV0cyhtLCAiXG5TeW5jIHNlcW5vOlxuIik7Ci0JZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYpIHsKLQkJZm9yIChqID0gMDsgaiA8IG51bV9y aW5nczsgaisrKQotCQkJc2VxX3ByaW50ZihtLCAiICAweCUwOHggIiwKLQkJCQkgICBlbmdpbmUt PnNlbWFwaG9yZS5zeW5jX3NlcW5vW2pdKTsKLQkJc2VxX3B1dGMobSwgJ1xuJyk7Ci0JfQotCXNl cV9wdXRjKG0sICdcbicpOwotCiAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwogCW11 dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCXJldHVybiAwOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKaW5kZXggYmJiOGE1ZTM4ZWNmLi5mNjBkMmUxNzAzM2QgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaApAQCAtNzgxLDcgKzc4MSw2IEBAIHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0 ZSB7CiAJCXUzMiBjcHVfcmluZ190YWlsOwogCiAJCXUzMiBsYXN0X3NlcW5vOwotCQl1MzIgc2Vt YXBob3JlX3NlcW5vW0k5MTVfTlVNX0VOR0lORVMgLSAxXTsKIAogCQkvKiBSZWdpc3RlciBzdGF0 ZSAqLwogCQl1MzIgc3RhcnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMK aW5kZXggZjI4MDllMzY0ZmQ3Li43NGUxYTg3NTk4OGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZXF1ZXN0LmMKQEAgLTIzOSw3ICsyMzksOCBAQCBzdGF0aWMgaW50IGk5MTVfZ2Vt X2luaXRfZ2xvYmFsX3NlcW5vKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ CQkgICAgICB1MzIgc2Vxbm8pCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwot CWludCByZXQ7CisJc3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lICp0bDsKKwlpbnQgcmV0LCBpOwog CiAJLyogQ2FyZWZ1bGx5IHJldGlyZSBhbGwgcmVxdWVzdHMgd2l0aG91dCB3cml0aW5nIHRvIHRo ZSByaW5ncyAqLwogCXJldCA9IGk5MTVfZ2VtX3dhaXRfZm9yX2lkbGUoZGV2X3ByaXYsCkBAIC0y NjIsNiArMjYzLDEyIEBAIHN0YXRpYyBpbnQgaTkxNV9nZW1faW5pdF9nbG9iYWxfc2Vxbm8oc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGRldl9wcml2KQogCQlpbnRlbF9lbmdpbmVfaW5pdF9nbG9iYWxfc2Vxbm8oZW5naW5lLCBzZXFu byk7CiAKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRsLCAmZGV2X3ByaXYtPmd0LnRpbWVsaW5lcywg bGluaykgeworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh0bC0+ZW5naW5lKTsgaSsrKQor CQkJbWVtc2V0KHRsLT5lbmdpbmVbaV0uc3luY19zZXFubywgMCwKKwkJCSAgICAgICBzaXplb2Yo dGwtPmVuZ2luZVtpXS5zeW5jX3NlcW5vKSk7CisJfQorCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ1 NCw3ICs0NjEsNyBAQCBzdGF0aWMgaW50CiBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3Qo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0bywKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3JlcXVlc3QgKmZyb20pCiB7Ci0JaW50IGlkeCwgcmV0OworCWludCByZXQ7CiAKIAlH RU1fQlVHX09OKHRvID09IGZyb20pOwogCkBAIC00NzQsOCArNDgxLDcgQEAgaTkxNV9nZW1fcmVx dWVzdF9hd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8sCiAJCXJl dHVybiByZXQgPCAwID8gcmV0IDogMDsKIAl9CiAKLQlpZHggPSBpbnRlbF9lbmdpbmVfc3luY19p bmRleChmcm9tLT5lbmdpbmUsIHRvLT5lbmdpbmUpOwotCWlmIChmcm9tLT5nbG9iYWxfc2Vxbm8g PD0gZnJvbS0+ZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFub1tpZHhdKQorCWlmIChmcm9tLT5n bG9iYWxfc2Vxbm8gPD0gdG8tPnRpbWVsaW5lLT5zeW5jX3NlcW5vW2Zyb20tPmVuZ2luZS0+aWRd KQogCQlyZXR1cm4gMDsKIAogCXRyYWNlX2k5MTVfZ2VtX3Jpbmdfc3luY190byh0bywgZnJvbSk7 CkBAIC00OTMsNyArNDk5LDcgQEAgaTkxNV9nZW1fcmVxdWVzdF9hd2FpdF9yZXF1ZXN0KHN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqdG8sCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCWZyb20t PmVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm9baWR4XSA9IGZyb20tPmdsb2JhbF9zZXFubzsK Kwl0by0+dGltZWxpbmUtPnN5bmNfc2Vxbm9bZnJvbS0+ZW5naW5lLT5pZF0gPSBmcm9tLT5nbG9i YWxfc2Vxbm87CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90 aW1lbGluZS5oCmluZGV4IGMzY2JhZjI4ZTk1OS4uOTZjNzY1YmEzYWJjIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgc3RydWN0IGlu dGVsX3RpbWVsaW5lIHsKIAkgKiBzdHJ1Y3RfbXV0ZXguCiAJICovCiAJc3RydWN0IGk5MTVfZ2Vt X2FjdGl2ZSBsYXN0X3JlcXVlc3Q7CisJdTMyIHN5bmNfc2Vxbm9bSTkxNV9OVU1fRU5HSU5FU107 CiAKIAlzdHJ1Y3QgaTkxNV9nZW1fdGltZWxpbmUgKmNvbW1vbjsKIH07CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ncHVfZXJyb3IuYwppbmRleCA2NTc2MWMxNmFjNDguLmZjNjJiZDBjZTE3ZCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC0yNjMsMTYgKzI2MywxMyBAQCBz dGF0aWMgdm9pZCBlcnJvcl9wcmludF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRl X2J1ZiAqbSwKIAlpZiAoSU5URUxfR0VOKG0tPmk5MTUpID49IDYpIHsKIAkJZXJyX3ByaW50Ziht LCAiICBSQyBQU01JOiAweCUwOHhcbiIsIGVlLT5yY19wc21pKTsKIAkJZXJyX3ByaW50ZihtLCAi ICBGQVVMVF9SRUc6IDB4JTA4eFxuIiwgZWUtPmZhdWx0X3JlZyk7Ci0JCWVycl9wcmludGYobSwg IiAgU1lOQ18wOiAweCUwOHggW2xhc3Qgc3luY2VkIDB4JTA4eF1cbiIsCi0JCQkgICBlZS0+c2Vt YXBob3JlX21ib3hlc1swXSwKLQkJCSAgIGVlLT5zZW1hcGhvcmVfc2Vxbm9bMF0pOwotCQllcnJf cHJpbnRmKG0sICIgIFNZTkNfMTogMHglMDh4IFtsYXN0IHN5bmNlZCAweCUwOHhdXG4iLAotCQkJ ICAgZWUtPnNlbWFwaG9yZV9tYm94ZXNbMV0sCi0JCQkgICBlZS0+c2VtYXBob3JlX3NlcW5vWzFd KTsKKwkJZXJyX3ByaW50ZihtLCAiICBTWU5DXzA6IDB4JTA4eFxuIiwKKwkJCSAgIGVlLT5zZW1h cGhvcmVfbWJveGVzWzBdKTsKKwkJZXJyX3ByaW50ZihtLCAiICBTWU5DXzE6IDB4JTA4eFxuIiwK KwkJCSAgIGVlLT5zZW1hcGhvcmVfbWJveGVzWzFdKTsKIAkJaWYgKEhBU19WRUJPWChtLT5pOTE1 KSkgewotCQkJZXJyX3ByaW50ZihtLCAiICBTWU5DXzI6IDB4JTA4eCBbbGFzdCBzeW5jZWQgMHgl MDh4XVxuIiwKLQkJCQkgICBlZS0+c2VtYXBob3JlX21ib3hlc1syXSwKLQkJCQkgICBlZS0+c2Vt YXBob3JlX3NlcW5vWzJdKTsKKwkJCWVycl9wcmludGYobSwgIiAgU1lOQ18yOiAweCUwOHhcbiIs CisJCQkJICAgZWUtPnNlbWFwaG9yZV9tYm94ZXNbMl0pOwogCQl9CiAJfQogCWlmIChVU0VTX1BQ R1RUKG0tPmk5MTUpKSB7CkBAIC05MDUsNyArOTAyLDYgQEAgc3RhdGljIHZvaWQgZ2VuOF9yZWNv cmRfc2VtYXBob3JlX3N0YXRlKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZSAqZXJyb3IsCiAJ CWlkeCA9IGludGVsX2VuZ2luZV9zeW5jX2luZGV4KGVuZ2luZSwgdG8pOwogCiAJCWVlLT5zZW1h cGhvcmVfbWJveGVzW2lkeF0gPSB0bXBbc2lnbmFsX29mZnNldF07Ci0JCWVlLT5zZW1hcGhvcmVf c2Vxbm9baWR4XSA9IGVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm9baWR4XTsKIAl9CiB9CiAK QEAgLTkxNiwxNCArOTEyLDkgQEAgc3RhdGljIHZvaWQgZ2VuNl9yZWNvcmRfc2VtYXBob3JlX3N0 YXRlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogCWVlLT5zZW1hcGhvcmVfbWJv eGVzWzBdID0gSTkxNV9SRUFEKFJJTkdfU1lOQ18wKGVuZ2luZS0+bW1pb19iYXNlKSk7CiAJZWUt PnNlbWFwaG9yZV9tYm94ZXNbMV0gPSBJOTE1X1JFQUQoUklOR19TWU5DXzEoZW5naW5lLT5tbWlv X2Jhc2UpKTsKLQllZS0+c2VtYXBob3JlX3NlcW5vWzBdID0gZW5naW5lLT5zZW1hcGhvcmUuc3lu Y19zZXFub1swXTsKLQllZS0+c2VtYXBob3JlX3NlcW5vWzFdID0gZW5naW5lLT5zZW1hcGhvcmUu c3luY19zZXFub1sxXTsKLQotCWlmIChIQVNfVkVCT1goZGV2X3ByaXYpKSB7CisJaWYgKEhBU19W RUJPWChkZXZfcHJpdikpCiAJCWVlLT5zZW1hcGhvcmVfbWJveGVzWzJdID0KIAkJCUk5MTVfUkVB RChSSU5HX1NZTkNfMihlbmdpbmUtPm1taW9fYmFzZSkpOwotCQllZS0+c2VtYXBob3JlX3NlcW5v WzJdID0gZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFub1syXTsKLQl9CiB9CiAKIHN0YXRpYyB2 b2lkIGVycm9yX3JlY29yZF9lbmdpbmVfd2FpdGVycyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDg3ZmVhZWZm NDMwNC4uYWM4YWRhNjEzMjExIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu YwpAQCAtMTkxLDggKzE5MSw2IEBAIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZ2xvYmFsX3NlcW5v KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKQogCQkJCSAgICAgICBJ OTE1X05VTV9FTkdJTkVTICogZ2VuOF9zZW1hcGhvcmVfc2Vxbm9fc2l6ZSk7CiAJCWt1bm1hcChw YWdlKTsKIAl9Ci0JbWVtc2V0KGVuZ2luZS0+c2VtYXBob3JlLnN5bmNfc2Vxbm8sIDAsCi0JICAg ICAgIHNpemVvZihlbmdpbmUtPnNlbWFwaG9yZS5zeW5jX3NlcW5vKSk7CiAKIAlpbnRlbF93cml0 ZV9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVfR0VNX0hXU19JTkRFWCwgc2Vxbm8pOwogCWlmIChl bmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCmluZGV4IDgzZDJhM2Y3MmNlMS4uOWNlN2I1YmJlNjcwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCkBAIC0yMDQxLDkgKzIwNDEsNiBAQCBzdGF0aWMgaW50 IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CiAJaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihlbmdpbmUpOwogCi0JbWVtc2V0KGVuZ2luZS0+ c2VtYXBob3JlLnN5bmNfc2Vxbm8sIDAsCi0JICAgICAgIHNpemVvZihlbmdpbmUtPnNlbWFwaG9y ZS5zeW5jX3NlcW5vKSk7Ci0KIAlyZXQgPSBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oZW5naW5l KTsKIAlpZiAocmV0KQogCQlnb3RvIGVycm9yOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmlu Z2J1ZmZlci5oCmluZGV4IGEyZjljN2Q2MDM4MS4uNzExNGVmMTQ5MzQzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCkBAIC0yODQsOCArMjg0LDYgQEAgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyB7CiAJICogIGllLiB0cmFuc3Bvc2Ugb2YgZih4LCB5KQogCSAqLwogCXN0 cnVjdCB7Ci0JCXUzMglzeW5jX3NlcW5vW0k5MTVfTlVNX0VOR0lORVMtMV07Ci0KIAkJdW5pb24g ewogI2RlZmluZSBHRU42X1NFTUFQSE9SRV9MQVNUCVZFQ1NfSFcKICNkZWZpbmUgR0VONl9OVU1f U0VNQVBIT1JFUwkoR0VONl9TRU1BUEhPUkVfTEFTVCArIDEpCi0tIAoyLjkuMwoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==