From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [RFC 3/8] drm/i915: Handle event stop and destroy for GPU commands submitted Date: Wed, 5 Aug 2015 11:25:39 +0530 Message-ID: <1438754144-20435-4-git-send-email-sourab.gupta@intel.com> References: <1438754144-20435-1-git-send-email-sourab.gupta@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 0CCDE7208A for ; Tue, 4 Aug 2015 22:53:51 -0700 (PDT) In-Reply-To: <1438754144-20435-1-git-send-email-sourab.gupta@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: Insoo Woo , Peter Zijlstra , Jabin Wu , Sourab Gupta List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBo YW5kbGVzIHRoZSBldmVudCBzdG9wIGFuZCBkZXN0cm95IGNhbGxiYWNrcyB0YWtpbmcgaW50byBh Y2NvdW50CnRoZSBmYWN0IHRoYXQgdGhlcmUgbWF5IGJlIGNvbW1hbmRzIHNjaGVkdWxlZCBvbiBH UFUgd2hpY2ggbWF5IHV0aWxpemUgdGhlCmRlc3RpbmF0aW9uIGJ1ZmZlci4KClRoZSBldmVudCBz dG9wIHdvdWxkIGp1c3Qgc2V0IHRoZSBldmVudCBzdGF0ZSwgYW5kIHN0b3AgZm9yd2FyZGluZyBk YXRhIHRvCnVzZXJzcGFjZS4gRnJvbSB1c2Vyc3BhY2UgcGVyc3BlY3RpdmUsIGZvciBhbGwgcHVy cG9zZXMsIHRoZSBldmVudCBzYW1wbGluZwppcyBzdG9wcGVkLkEgc3Vic2VxdWVudCBldmVudCBz dGFydCAod2l0aG91dCBldmVudCBkZXN0cm95KSB3b3VsZCBzdGFydApmb3J3YXJkaW5nIHNhbXBs ZXMgYWdhaW4uCgpUaGUgZXZlbnQgZGVzdHJveSByZWxlYXNlcyB0aGUgbG9jYWwgY29weSBvZiB0 aGUgZGVzdCBidWZmZXIuIEJ1dCBzaW5jZSBpdAppcyBleHBlY3RlZCB0aGF0IHRoZSBhY3RpdmUg cmVmZXJlbmNlIG9mIGJ1ZmZlciBpcyB0YWtlbiB3aGlsZSBpbnNlcnRpbmcKY29tbWFuZHMsIHdl IGNhbiByZXN0IGFzc3VyZWQgdGhhdCBidWZmZXIgaXMgZnJlZWQgdXAgb25seSBhZnRlciBHUFUg aXMKZG9uZSB3aXRoIGl0LgpTdGlsbCB0aGVyZSBpcyBhIG5lZWQgdG8gc2NoZWR1bGUgYSB3b3Jr ZXIgZnJvbSBldmVudCBkZXN0cm95LCBiZWNhdXNlIHdlCm5lZWQgdG8gZG8gc29tZSBmdXJ0aGVy IHN0dWZmIGxpa2UgZnJlZWluZyB1cCByZXF1ZXN0IHJlZmVyZW5jZXMuCgpUaGUgaWRlYWwgc29s dXRpb24gaGVyZSB3b3VsZCBiZSB0byBoYXZlIGEgY2FsbGJhY2sgd2hlbiB0aGUgbGFzdCByZXF1 ZXN0CmlzIGZpbmlzaGVkIG9uIEdQVSwgc28gdGhhdCB3ZSBjYW4gZG8gdGhpcyBzdHVmZiB0aGVy ZSAoV0lQOkNocmlzJwpyZXRpcmUtbm90aWZpY2F0aW9uIG1lY2hhbmlzbSkuIFRpbGwgdGhlIHRp bWUsIGEgd29ya2VyIHRocmVhZCB3aWxsIGRvLgoKQSBzdWJzZXF1ZW50IGV2ZW50IGluaXQgd291 bGQgaGF2ZSB0byB3YWl0IGZvciBwcmV2aW91c2x5IHN1Ym1pdHRlZCBSUEMKY29tbWFuZHMgdG8g Y29tcGxldGUgb3IgcmV0dXJuIC1FQlVTWS4gQ3VycmVudGx5LCBmb3IgdGhlIHNha2Ugb2YKc2lt cGxpY2l0eSwgd2UgYXJlIHJldHVybmluZyAtRUJVU1kgaWYgc3VjaCBhIGNhc2UgaXMgZGV0ZWN0 ZWQuCgpTaWduZWQtb2ZmLWJ5OiBTb3VyYWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAgMiArCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYyB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKSwgMTIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMDgyMzU1ODIuLjU3MTdjYjAg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTY4MCw2ICsxNjgwLDcgQEAgc3RydWN0IGk5 MTVfZ2VuX3BtdV9ub2RlIHsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGhlYWQ7CiAJc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpyZXE7CiAJdTMyIG9mZnNldDsKKwlib29sIGRpc2NhcmQ7CiAJdTMy IGN0eF9pZDsKIH07CiAKQEAgLTIwMTIsNiArMjAxMyw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlIHsKIAkJfSBidWZmZXI7CiAJCXN0cnVjdCBsaXN0X2hlYWQgbm9kZV9saXN0OwogCQlzdHJ1 Y3Qgd29ya19zdHJ1Y3QgZm9yd2FyZF93b3JrOworCQlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZXZlbnRf ZGVzdHJveV93b3JrOwogCX0gZ2VuX3BtdTsKIAogCXZvaWQgKCplbWl0X3Byb2ZpbGluZ19kYXRh W0k5MTVfUFJPRklMRV9NQVhdKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9vYV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYwppbmRleCAz YWRkODYyLi4wNjY0NWYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29h X3BlcmYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYwpAQCAtNDQ4 LDYgKzQ0OCwyMSBAQCBzdGF0aWMgaW50IGk5MTVfZ2VuX3BtdV93YWl0X2dwdShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIGk5 MTVfZ2VuX3BtdV9yZWxlYXNlX3JlcXVlc3RfcmVmKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaTkxNV9nZW5fcG11X25vZGUgKmVudHJ5LCAqbmV4dDsKKwor CWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZQorCQkoZW50cnksIG5leHQsICZkZXZfcHJpdi0+Z2Vu X3BtdS5ub2RlX2xpc3QsIGhlYWQpIHsKKwkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZV9f dW5sb2NrZWQoZW50cnktPnJlcSk7CisKKwkJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+Z2VuX3BtdS5s b2NrKTsKKwkJbGlzdF9kZWwoJmVudHJ5LT5oZWFkKTsKKwkJc3Bpbl91bmxvY2soJmRldl9wcml2 LT5nZW5fcG11LmxvY2spOworCQlrZnJlZShlbnRyeSk7CisJfQorfQorCiBzdGF0aWMgdm9pZCBm b3J3YXJkX29uZV9nZW5fcG11X3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQkJc3RydWN0IGk5MTVfZ2VuX3BtdV9ub2RlICpub2RlKQogewpAQCAtNDk4LDcgKzUx Myw4IEBAIHN0YXRpYyB2b2lkIGZvcndhcmRfZ2VuX3BtdV9zbmFwc2hvdHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlpZiAoIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVk KGVudHJ5LT5yZXEsIHRydWUpKQogCQkJYnJlYWs7CiAKLQkJZm9yd2FyZF9vbmVfZ2VuX3BtdV9z YW1wbGUoZGV2X3ByaXYsIGVudHJ5KTsKKwkJaWYgKCFlbnRyeS0+ZGlzY2FyZCkKKwkJCWZvcndh cmRfb25lX2dlbl9wbXVfc2FtcGxlKGRldl9wcml2LCBlbnRyeSk7CiAKIAkJc3Bpbl9sb2NrKCZk ZXZfcHJpdi0+Z2VuX3BtdS5sb2NrKTsKIAkJbGlzdF9tb3ZlX3RhaWwoJmVudHJ5LT5oZWFkLCAm ZGVmZXJyZWRfbGlzdF9mcmVlKTsKQEAgLTUyMyw2ICs1MzksMTMgQEAgc3RhdGljIHZvaWQgZm9y d2FyZF9nZW5fcG11X3dvcmtfZm4oc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KIAkJY29udGFpbmVyX29mKF9fd29yaywgdHlw ZW9mKCpkZXZfcHJpdiksIGdlbl9wbXUuZm9yd2FyZF93b3JrKTsKIAorCXNwaW5fbG9jaygmZGV2 X3ByaXYtPmdlbl9wbXUubG9jayk7CisJaWYgKGRldl9wcml2LT5nZW5fcG11LmV2ZW50X2FjdGl2 ZSAhPSB0cnVlKSB7CisJCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+Z2VuX3BtdS5sb2NrKTsKKwkJ cmV0dXJuOworCX0KKwlzcGluX3VubG9jaygmZGV2X3ByaXYtPmdlbl9wbXUubG9jayk7CisKIAlm b3J3YXJkX2dlbl9wbXVfc25hcHNob3RzKGRldl9wcml2KTsKIH0KIApAQCAtNjcwLDEyICs2OTMs NiBAQCBzdGF0aWMgdm9pZCBnZW5fYnVmZmVyX2Rlc3Ryb3koc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCiAJaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oaTkxNS0+Z2VuX3BtdS5idWZm ZXIub2JqKTsKIAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmaTkxNS0+Z2VuX3BtdS5idWZm ZXIub2JqLT5iYXNlKTsKIAltdXRleF91bmxvY2soJmk5MTUtPmRldi0+c3RydWN0X211dGV4KTsK LQotCXNwaW5fbG9jaygmaTkxNS0+Z2VuX3BtdS5sb2NrKTsKLQlpOTE1LT5nZW5fcG11LmJ1ZmZl ci5vYmogPSBOVUxMOwotCWk5MTUtPmdlbl9wbXUuYnVmZmVyLmd0dF9vZmZzZXQgPSAwOwotCWk5 MTUtPmdlbl9wbXUuYnVmZmVyLmFkZHIgPSBOVUxMOwotCXNwaW5fdW5sb2NrKCZpOTE1LT5nZW5f cG11LmxvY2spOwogfQogCiBzdGF0aWMgdm9pZCBpOTE1X2dlbl9ldmVudF9kZXN0cm95KHN0cnVj dCBwZXJmX2V2ZW50ICpldmVudCkKQEAgLTY4NSwxMCArNzAyLDQ0IEBAIHN0YXRpYyB2b2lkIGk5 MTVfZ2VuX2V2ZW50X2Rlc3Ryb3koc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCiAJV0FSTl9P TihldmVudC0+cGFyZW50KTsKIAotCWdlbl9idWZmZXJfZGVzdHJveShpOTE1KTsKKwljYW5jZWxf d29ya19zeW5jKCZpOTE1LT5nZW5fcG11LmZvcndhcmRfd29yayk7CiAKIAlCVUdfT04oaTkxNS0+ Z2VuX3BtdS5leGNsdXNpdmVfZXZlbnQgIT0gZXZlbnQpOwogCWk5MTUtPmdlbl9wbXUuZXhjbHVz aXZlX2V2ZW50ID0gTlVMTDsKKworCS8qIFdlIGNhbiBkZWZlcmVuY2Ugb3VyIGxvY2FsIGNvcHkg b2YgZGVzdCBidWZmZXIgaGVyZSwgc2luY2UKKwkgKiBhbiBhY3RpdmUgcmVmZXJlbmNlIG9mIGJ1 ZmZlciB3b3VsZCBiZSB0YWtlbiB3aGlsZQorCSAqIGluc2VydGluZyBjb21tYW5kcy4gU28gdGhl IGJ1ZmZlciB3b3VsZCBiZSBmcmVlZCB1cCBvbmx5CisJICogYWZ0ZXIgR1BVIGlzIGRvbmUgd2l0 aCBpdC4KKwkgKi8KKwlnZW5fYnVmZmVyX2Rlc3Ryb3koaTkxNSk7CisKKwlzY2hlZHVsZV93b3Jr KCZpOTE1LT5nZW5fcG11LmV2ZW50X2Rlc3Ryb3lfd29yayk7Cit9CisKK3N0YXRpYyB2b2lkIGk5 MTVfZ2VuX3BtdV9ldmVudF9kZXN0cm95X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmsp Cit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KKwkJY29udGFpbmVyX29m KF9fd29yaywgdHlwZW9mKCpkZXZfcHJpdiksCisJCQlnZW5fcG11LmV2ZW50X2Rlc3Ryb3lfd29y ayk7CisJaW50IHJldDsKKworCXJldCA9IGk5MTVfZ2VuX3BtdV93YWl0X2dwdShkZXZfcHJpdik7 CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwlpOTE1X2dlbl9wbXVfcmVsZWFzZV9yZXF1ZXN0 X3JlZihkZXZfcHJpdik7CisKK291dDoKKwkvKgorCSAqIERvbmUgaGVyZSwgYXMgdGhpcyBleGNs dWRlcyBhIG5ldyBldmVudCB0aWxsIHdlJ3ZlIGRvbmUgcHJvY2Vzc2luZworCSAqIHRoZSBvbGQg b25lCisJICovCisJc3Bpbl9sb2NrKCZkZXZfcHJpdi0+Z2VuX3BtdS5sb2NrKTsKKwlkZXZfcHJp di0+Z2VuX3BtdS5idWZmZXIub2JqID0gTlVMTDsKKwlkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIu Z3R0X29mZnNldCA9IDA7CisJZGV2X3ByaXYtPmdlbl9wbXUuYnVmZmVyLmFkZHIgPSBOVUxMOwor CXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+Z2VuX3BtdS5sb2NrKTsKIH0KIAogc3RhdGljIGludCBh bGxvY19vYmooc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LApAQCAtMTQxMSw2ICsx NDYyLDcgQEAgc3RhdGljIGludCBpOTE1X2dlbl9ldmVudF9pbml0KHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQogCQljb250 YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCpkZXZfcHJpdiksIGdlbl9wbXUucG11KTsKKwl1 bnNpZ25lZCBsb25nIGxvY2tfZmxhZ3M7CiAJaW50IHJldCA9IDA7CiAKIAlpZiAoZXZlbnQtPmF0 dHIudHlwZSAhPSBldmVudC0+cG11LT50eXBlKQpAQCAtMTQxOSw4ICsxNDcxLDEyIEBAIHN0YXRp YyBpbnQgaTkxNV9nZW5fZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJLyog VG8gYXZvaWQgdGhlIGNvbXBsZXhpdHkgb2YgaGF2aW5nIHRvIGFjY3VyYXRlbHkgZmlsdGVyCiAJ ICogZGF0YSBhbmQgbWFyc2hhbCB0byB0aGUgYXBwcm9wcmlhdGUgY2xpZW50CiAJICogd2UgY3Vy cmVudGx5IG9ubHkgYWxsb3cgZXhjbHVzaXZlIGFjY2VzcyAqLwotCWlmIChkZXZfcHJpdi0+Z2Vu X3BtdS5idWZmZXIub2JqKQorCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+Z2VuX3BtdS5s b2NrLCBsb2NrX2ZsYWdzKTsKKwlpZiAoZGV2X3ByaXYtPmdlbl9wbXUuYnVmZmVyLm9iaikgewor CQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+Z2VuX3BtdS5sb2NrLCBsb2NrX2Zs YWdzKTsKIAkJcmV0dXJuIC1FQlVTWTsKKwl9CisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2 X3ByaXYtPmdlbl9wbXUubG9jaywgbG9ja19mbGFncyk7CiAKIAkvKgogCSAqIFdlIG5lZWQgdG8g Y2hlY2sgZm9yIENBUF9TWVNfQURNSU4gY2FwYWJpbGl0eSBhcyB3ZSBwcm9maWxlIGFsbApAQCAt MTQ2MCwxNCArMTUxNiwxNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dlbl9ldmVudF9zdG9wKHN0cnVj dCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9CiAJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmRldl9w cml2KSwgZ2VuX3BtdS5wbXUpOworCXN0cnVjdCBpOTE1X2dlbl9wbXVfbm9kZSAqZW50cnk7CisK KwlocnRpbWVyX2NhbmNlbCgmZGV2X3ByaXYtPmdlbl9wbXUudGltZXIpOworCXNjaGVkdWxlX3dv cmsoJmRldl9wcml2LT5nZW5fcG11LmZvcndhcmRfd29yayk7CiAKIAlzcGluX2xvY2soJmRldl9w cml2LT5nZW5fcG11LmxvY2spOwogCWRldl9wcml2LT5nZW5fcG11LmV2ZW50X2FjdGl2ZSA9IGZh bHNlOworCWxpc3RfZm9yX2VhY2hfZW50cnkoZW50cnksICZkZXZfcHJpdi0+Z2VuX3BtdS5ub2Rl X2xpc3QsIGhlYWQpCisJCWVudHJ5LT5kaXNjYXJkID0gdHJ1ZTsKIAlzcGluX3VubG9jaygmZGV2 X3ByaXYtPmdlbl9wbXUubG9jayk7CiAKLQlocnRpbWVyX2NhbmNlbCgmZGV2X3ByaXYtPmdlbl9w bXUudGltZXIpOwotCXNjaGVkdWxlX3dvcmsoJmRldl9wcml2LT5nZW5fcG11LmZvcndhcmRfd29y ayk7Ci0KIAlldmVudC0+aHcuc3RhdGUgPSBQRVJGX0hFU19TVE9QUEVEOwogfQogCkBAIC0xNjU0 LDYgKzE3MTMsOSBAQCB2b2lkIGk5MTVfZ2VuX3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQogCWk5MTUtPmdlbl9wbXUudGltZXIuZnVuY3Rpb24gPSBocnRpbWVyX3NhbXBsZV9n ZW47CiAKIAlJTklUX1dPUksoJmk5MTUtPmdlbl9wbXUuZm9yd2FyZF93b3JrLCBmb3J3YXJkX2dl bl9wbXVfd29ya19mbik7CisJSU5JVF9XT1JLKCZpOTE1LT5nZW5fcG11LmV2ZW50X2Rlc3Ryb3lf d29yaywKKwkJCWk5MTVfZ2VuX3BtdV9ldmVudF9kZXN0cm95X3dvcmspOworCiAJc3Bpbl9sb2Nr X2luaXQoJmk5MTUtPmdlbl9wbXUubG9jayk7CiAKIAlpOTE1LT5nZW5fcG11LnBtdS5jYXBhYmls aXRpZXMgID0gUEVSRl9QTVVfQ0FQX0lTX0RFVklDRTsKQEAgLTE2ODQsNiArMTc0Niw3IEBAIHZv aWQgaTkxNV9nZW5fcG11X3VucmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJcmV0 dXJuOwogCiAJY2FuY2VsX3dvcmtfc3luYygmaTkxNS0+Z2VuX3BtdS5mb3J3YXJkX3dvcmspOwor CWNhbmNlbF93b3JrX3N5bmMoJmk5MTUtPmdlbl9wbXUuZXZlbnRfZGVzdHJveV93b3JrKTsKIAog CXBlcmZfcG11X3VucmVnaXN0ZXIoJmk5MTUtPmdlbl9wbXUucG11KTsKIAlpOTE1LT5nZW5fcG11 LnBtdS5ldmVudF9pbml0ID0gTlVMTDsKLS0gCjEuOC41LjEKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==