From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2 5/9] drm/i915: Squash repeated awaits on the same fence Date: Wed, 12 Apr 2017 13:48:21 +0100 Message-ID: <20170412124825.21741-5-chris@chris-wilson.co.uk> References: <20170412124825.21741-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-wr0-x243.google.com (mail-wr0-x243.google.com [IPv6:2a00:1450:400c:c0c::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8342A6E6EC for ; Wed, 12 Apr 2017 12:48:33 +0000 (UTC) Received: by mail-wr0-x243.google.com with SMTP id u18so4060129wrc.1 for ; Wed, 12 Apr 2017 05:48:33 -0700 (PDT) In-Reply-To: <20170412124825.21741-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 VHJhY2sgdGhlIGxhdGVzdCBmZW5jZSB3YWl0ZWQgdXBvbiBvbiBlYWNoIGNvbnRleHQsIGFuZCBv bmx5IGFkZCBhIG5ldwphc3luY2hyb25vdXMgd2FpdCBpZiB0aGUgbmV3IGZlbmNlIGlzIG1vcmUg cmVjZW50IHRoYW4gdGhlIHJlY29yZGVkCmZlbmNlIGZvciB0aGF0IGNvbnRleHQuIFRoaXMgcmVx dWlyZXMgdXMgdG8gZmlsdGVyIG91dCB1bm9yZGVyZWQKdGltZWxpbmVzLCB3aGljaCBhcmUgbm90 ZWQgYnkgRE1BX0ZFTkNFX05PX0NPTlRFWFQuIEhvd2V2ZXIsIGluIHRoZQphYnNlbmNlIG9mIGEg dW5pdmVyc2FsIGlkZW50aWZpZXIsIHdlIGhhdmUgdG8gdXNlIG91ciBvd24KaTkxNS0+bW0udW5v cmRlcmVkX3RpbWVsaW5lIHRva2VuLgoKdjI6IFRocm93IGFyb3VuZCB0aGUgZGVidWcgY3J1dGNo ZXMKdjM6IElubGluZSB0aGUgbGlrZWx5IGNhc2Ugb2YgdGhlIHByZS1hbGxvY2F0aW9uIGNhY2hl IGJlaW5nIGZ1bGwuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdp bHNvbi5jby51az4KQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+ CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jICAgICAgICAgICAgfCAg NzIgKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuYyAgICAg ICAgICAgfCAyMTcgKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV90aW1lbGluZS5oICAgICAgICAgICB8ICAzNCArKysrCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fdGltZWxpbmUuYyB8IDEyNyArKysrKysrKysrKysKIC4u Li9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaCAgIHwgICAxICsK IDUgZmlsZXMgY2hhbmdlZCwgNDI0IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV90 aW1lbGluZS5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVx dWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCmluZGV4IDMx ODc0YTM4NzUyZS4uNmU2ODM4N2FhMDk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9yZXF1ZXN0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f cmVxdWVzdC5jCkBAIC03MTQsOSArNzE0LDcgQEAgaW50CiBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0 X2RtYV9mZW5jZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAkJCQkgc3RydWN0 IGRtYV9mZW5jZSAqZmVuY2UpCiB7Ci0Jc3RydWN0IGRtYV9mZW5jZV9hcnJheSAqYXJyYXk7CiAJ aW50IHJldDsKLQlpbnQgaTsKIAogCWlmICh0ZXN0X2JpdChETUFfRkVOQ0VfRkxBR19TSUdOQUxF RF9CSVQsICZmZW5jZS0+ZmxhZ3MpKQogCQlyZXR1cm4gMDsKQEAgLTcyOCwzOSArNzI2LDU5IEBA IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLAogCWlmIChmZW5jZS0+Y29udGV4dCA9PSByZXEtPmZlbmNlLmNvbnRleHQpCiAJ CXJldHVybiAwOwogCi0JaWYgKGRtYV9mZW5jZV9pc19pOTE1KGZlbmNlKSkKLQkJcmV0dXJuIGk5 MTVfZ2VtX3JlcXVlc3RfYXdhaXRfcmVxdWVzdChyZXEsIHRvX3JlcXVlc3QoZmVuY2UpKTsKKwkv KiBTcXVhc2ggcmVwZWF0ZWQgd2FpdHMgdG8gdGhlIHNhbWUgdGltZWxpbmVzLCBwaWNraW5nIHRo ZSBsYXRlc3QgKi8KKwlpZiAoZmVuY2UtPmNvbnRleHQgIT0gcmVxLT5pOTE1LT5tbS51bm9yZGVy ZWRfdGltZWxpbmUpIHsKKwkJaWYgKGludGVsX3RpbWVsaW5lX3N5bmNfZ2V0KHJlcS0+dGltZWxp bmUsCisJCQkJCSAgICBmZW5jZS0+Y29udGV4dCwKKwkJCQkJICAgIGZlbmNlLT5zZXFubykpCisJ CQlyZXR1cm4gMDsKIAotCWlmICghZG1hX2ZlbmNlX2lzX2FycmF5KGZlbmNlKSkgeworCQlyZXQg PSBpbnRlbF90aW1lbGluZV9zeW5jX3Jlc2VydmUocmVxLT50aW1lbGluZSk7CisJCWlmICh1bmxp a2VseShyZXQpKQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlpZiAoZG1hX2ZlbmNlX2lzX2k5MTUo ZmVuY2UpKSB7CisJCXJldCA9IGk5MTVfZ2VtX3JlcXVlc3RfYXdhaXRfcmVxdWVzdChyZXEsIHRv X3JlcXVlc3QoZmVuY2UpKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCX0gZWxz ZSBpZiAoIWRtYV9mZW5jZV9pc19hcnJheShmZW5jZSkpIHsKIAkJcmV0ID0gaTkxNV9zd19mZW5j ZV9hd2FpdF9kbWFfZmVuY2UoJnJlcS0+c3VibWl0LAogCQkJCQkJICAgIGZlbmNlLCBJOTE1X0ZF TkNFX1RJTUVPVVQsCiAJCQkJCQkgICAgR0ZQX0tFUk5FTCk7Ci0JCXJldHVybiByZXQgPCAwID8g cmV0IDogMDsKLQl9Ci0KLQkvKiBOb3RlIHRoYXQgaWYgdGhlIGZlbmNlLWFycmF5IHdhcyBjcmVh dGVkIGluIHNpZ25hbC1vbi1hbnkgbW9kZSwKLQkgKiB3ZSBzaG91bGQgKm5vdCogZGVjb21wb3Nl IGl0IGludG8gaXRzIGluZGl2aWR1YWwgZmVuY2VzLiBIb3dldmVyLAotCSAqIHdlIGRvbid0IGN1 cnJlbnRseSBzdG9yZSB3aGljaCBtb2RlIHRoZSBmZW5jZS1hcnJheSBpcyBvcGVyYXRpbmcKLQkg KiBpbi4gRm9ydHVuYXRlbHksIHRoZSBvbmx5IHVzZXIgb2Ygc2lnbmFsLW9uLWFueSBpcyBwcml2 YXRlIHRvCi0JICogYW1kZ3B1IGFuZCB3ZSBzaG91bGQgbm90IHNlZSBhbnkgaW5jb21pbmcgZmVu Y2UtYXJyYXkgZnJvbQotCSAqIHN5bmMtZmlsZSBiZWluZyBpbiBzaWduYWwtb24tYW55IG1vZGUu Ci0JICovCi0KLQlhcnJheSA9IHRvX2RtYV9mZW5jZV9hcnJheShmZW5jZSk7Ci0JZm9yIChpID0g MDsgaSA8IGFycmF5LT5udW1fZmVuY2VzOyBpKyspIHsKLQkJc3RydWN0IGRtYV9mZW5jZSAqY2hp bGQgPSBhcnJheS0+ZmVuY2VzW2ldOwotCi0JCWlmIChkbWFfZmVuY2VfaXNfaTkxNShjaGlsZCkp Ci0JCQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3QocmVxLAotCQkJCQkJCSAg ICAgdG9fcmVxdWVzdChjaGlsZCkpOwotCQllbHNlCi0JCQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3 YWl0X2RtYV9mZW5jZSgmcmVxLT5zdWJtaXQsCi0JCQkJCQkJICAgIGNoaWxkLCBJOTE1X0ZFTkNF X1RJTUVPVVQsCi0JCQkJCQkJICAgIEdGUF9LRVJORUwpOwogCQlpZiAocmV0IDwgMCkKIAkJCXJl dHVybiByZXQ7CisJfSBlbHNlIHsKKwkJc3RydWN0IGRtYV9mZW5jZV9hcnJheSAqYXJyYXkgPSB0 b19kbWFfZmVuY2VfYXJyYXkoZmVuY2UpOworCQlpbnQgaTsKKworCQkvKiBOb3RlIHRoYXQgaWYg dGhlIGZlbmNlLWFycmF5IHdhcyBjcmVhdGVkIGluIHNpZ25hbC1vbi1hbnkgbW9kZSwKKwkJICog d2Ugc2hvdWxkICpub3QqIGRlY29tcG9zZSBpdCBpbnRvIGl0cyBpbmRpdmlkdWFsIGZlbmNlcy4g SG93ZXZlciwKKwkJICogd2UgZG9uJ3QgY3VycmVudGx5IHN0b3JlIHdoaWNoIG1vZGUgdGhlIGZl bmNlLWFycmF5IGlzIG9wZXJhdGluZworCQkgKiBpbi4gRm9ydHVuYXRlbHksIHRoZSBvbmx5IHVz ZXIgb2Ygc2lnbmFsLW9uLWFueSBpcyBwcml2YXRlIHRvCisJCSAqIGFtZGdwdSBhbmQgd2Ugc2hv dWxkIG5vdCBzZWUgYW55IGluY29taW5nIGZlbmNlLWFycmF5IGZyb20KKwkJICogc3luYy1maWxl IGJlaW5nIGluIHNpZ25hbC1vbi1hbnkgbW9kZS4KKwkJICovCisKKwkJZm9yIChpID0gMDsgaSA8 IGFycmF5LT5udW1fZmVuY2VzOyBpKyspIHsKKwkJCXN0cnVjdCBkbWFfZmVuY2UgKmNoaWxkID0g YXJyYXktPmZlbmNlc1tpXTsKKworCQkJaWYgKGRtYV9mZW5jZV9pc19pOTE1KGNoaWxkKSkKKwkJ CQlyZXQgPSBpOTE1X2dlbV9yZXF1ZXN0X2F3YWl0X3JlcXVlc3QocmVxLAorCQkJCQkJCQkgICAg IHRvX3JlcXVlc3QoY2hpbGQpKTsKKwkJCWVsc2UKKwkJCQlyZXQgPSBpOTE1X3N3X2ZlbmNlX2F3 YWl0X2RtYV9mZW5jZSgmcmVxLT5zdWJtaXQsCisJCQkJCQkJCSAgICBjaGlsZCwgSTkxNV9GRU5D RV9USU1FT1VULAorCQkJCQkJCQkgICAgR0ZQX0tFUk5FTCk7CisJCQlpZiAocmV0IDwgMCkKKwkJ CQlyZXR1cm4gcmV0OworCQl9CiAJfQogCisJaWYgKGZlbmNlLT5jb250ZXh0ICE9IHJlcS0+aTkx NS0+bW0udW5vcmRlcmVkX3RpbWVsaW5lKQorCQlpbnRlbF90aW1lbGluZV9zeW5jX3NldChyZXEt PnRpbWVsaW5lLAorCQkJCQlmZW5jZS0+Y29udGV4dCwgZmVuY2UtPnNlcW5vKTsKKwogCXJldHVy biAwOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1l bGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGltZWxpbmUuYwppbmRleCBi NTk2Y2E3ZWUwNTguLmMyNWVkZmRlNDgzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fdGltZWxpbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aW1lbGluZS5jCkBAIC0yNCw2ICsyNCwyMTcgQEAKIAogI2luY2x1ZGUgImk5MTVfZHJ2Lmgi CiAKKyNkZWZpbmUgU0hJRlQgaWxvZzIoTlNFUU1BUCkKKyNkZWZpbmUgTUFTSyAoTlNFUU1BUCAt IDEpCisKK3N0YXRpYyB2b2lkIHNlcW1hcF9mcmVlX2xheWVycyhzdHJ1Y3Qgc2VxbWFwX2xheWVy ICpwKQoreworCXVuc2lnbmVkIGludCBpOworCisJaWYgKHAtPmhlaWdodCkgeworCQlmb3IgKDsg KGkgPSBmZnMocC0+Yml0bWFwKSk7IHAtPmJpdG1hcCAmPSB+MHUgPDwgaSkKKwkJCXNlcW1hcF9m cmVlX2xheWVycyhwLT5zbG90W2kgLSAxXSk7CisJfQorCisJa2ZyZWUocCk7Cit9CisKK3N0YXRp YyB2b2lkIHNlcW1hcF9mcmVlKHN0cnVjdCBzZXFtYXAgKnNlcW1hcCkKK3sKKwlpZiAoc2VxbWFw LT50b3ApCisJCXNlcW1hcF9mcmVlX2xheWVycyhzZXFtYXAtPnRvcCk7CisKKwl3aGlsZSAoc2Vx bWFwLT5mcmVlZCkgeworCQlzdHJ1Y3Qgc2VxbWFwX2xheWVyICpwOworCisJCXAgPSBwdHJfbWFz a19iaXRzKHNlcW1hcC0+ZnJlZWQsIFNFUU1BUF9DT1VOVF9CSVRTKTsKKwkJc2VxbWFwLT5mcmVl ZCA9IHAtPnBhcmVudDsKKwkJa2ZyZWUocCk7CisJfQorfQorCitfX21hbGxvYyBzdGF0aWMgc3Ry dWN0IHNlcW1hcF9sYXllciAqCitzZXFtYXBfYWxsb2NfbGF5ZXIoc3RydWN0IHNlcW1hcCAqc2hh cmVkKQoreworCXN0cnVjdCBzZXFtYXBfbGF5ZXIgKnA7CisKKwlHRU1fQlVHX09OKCFzaGFyZWQt PmZyZWVkKTsKKworCXAgPSBwdHJfbWFza19iaXRzKHNoYXJlZC0+ZnJlZWQsIFNFUU1BUF9DT1VO VF9CSVRTKTsKKwlzaGFyZWQtPmZyZWVkID0gcC0+cGFyZW50OworCisJcmV0dXJuIHA7Cit9CisK K3N0YXRpYyBpbnQgbGF5ZXJfaWR4KGNvbnN0IHN0cnVjdCBzZXFtYXBfbGF5ZXIgKnAsIHU2NCBp ZCkKK3sKKwlyZXR1cm4gKGlkID4+IHAtPmhlaWdodCkgJiBNQVNLOworfQorCitib29sIGludGVs X3RpbWVsaW5lX3N5bmNfZ2V0KHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsIHU2NCBpZCwgdTMy IHNlcW5vKQoreworCXN0cnVjdCBzZXFtYXAgKnNoYXJlZCA9ICZ0bC0+c3luYzsKKwlzdHJ1Y3Qg c2VxbWFwX2xheWVyICpwOworCXVuc2lnbmVkIGludCBpZHg7CisKKwlwID0gc2hhcmVkLT5oaW50 OworCWlmICghcCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKChpZCA+PiBTSElGVCkgPT0gcC0+ cHJlZml4KQorCQlnb3RvIGZvdW5kOworCisJcCA9IHNoYXJlZC0+dG9wOworCWRvIHsKKwkJaWYg KChpZCA+PiBwLT5oZWlnaHQgPj4gU0hJRlQpICE9IHAtPnByZWZpeCkKKwkJCXJldHVybiBmYWxz ZTsKKworCQlpZiAoIXAtPmhlaWdodCkKKwkJCWJyZWFrOworCisJCXAgPSBwLT5zbG90W2xheWVy X2lkeChwLCBpZCldOworCQlpZiAoIXApCisJCQlyZXR1cm4gZmFsc2U7CisJfSB3aGlsZSAoMSk7 CisKKwlzaGFyZWQtPmhpbnQgPSBwOworZm91bmQ6CisJaWR4ID0gaWQgJiBNQVNLOworCWlmICgh KHAtPmJpdG1hcCAmIEJJVChpZHgpKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIGk5MTVf c2Vxbm9fcGFzc2VkKCh1aW50cHRyX3QpcC0+c2xvdFtpZHhdLCBzZXFubyk7Cit9CisKK3ZvaWQg aW50ZWxfdGltZWxpbmVfc3luY19zZXQoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwgdTY0IGlk LCB1MzIgc2Vxbm8pCit7CisJc3RydWN0IHNlcW1hcCAqc2hhcmVkID0gJnRsLT5zeW5jOworCXN0 cnVjdCBzZXFtYXBfbGF5ZXIgKnAsICpjdXI7CisJdW5zaWduZWQgaW50IGlkeDsKKworCS8qIFdl IGV4cGVjdCB0byBiZSBjYWxsZWQgaW4gc2VxdWVuY2UgZm9sbG93aW5nIGEgIF9nZXQoaWQpLCB3 aGljaAorCSAqIHNob3VsZCBoYXZlIHByZWxvYWRlZCB0aGUgLT5oaW50IGZvciB1cy4KKwkgKi8K KwlwID0gc2hhcmVkLT5oaW50OworCWlmIChsaWtlbHkocCAmJiAoaWQgPj4gU0hJRlQpID09IHAt PnByZWZpeCkpCisJCWdvdG8gZm91bmRfbGF5ZXI7CisKKwlpZiAoIXApIHsKKwkJR0VNX0JVR19P TihzaGFyZWQtPnRvcCk7CisJCWN1ciA9IHNlcW1hcF9hbGxvY19sYXllcihzaGFyZWQpOworCQlj dXItPnBhcmVudCA9IE5VTEw7CisJCXNoYXJlZC0+dG9wID0gY3VyOworCQlnb3RvIG5ld19sYXll cjsKKwl9CisKKwkvKiBObyBzaG9ydGN1dCwgd2UgaGF2ZSB0byBkZXNjZW5kIHRoZSB0cmVlIHRv IGZpbmQgdGhlIHJpZ2h0IGxheWVyCisJICogY29udGFpbmluZyB0aGlzIGZlbmNlLgorCSAqCisJ ICogRWFjaCBsYXllciBpbiB0aGUgdHJlZSBob2xkcyAxNiAoTlNFUU1BUCkgcG9pbnRlcnMsIGVp dGhlciBmZW5jZXMKKwkgKiBvciBsb3dlciBsYXllcnMuIExlYWYgbm9kZXMgKGhlaWdodCA9IDAp IGNvbnRhaW4gdGhlIGZlbmNlcywgYWxsCisJICogb3RoZXIgbm9kZXMgKGhlaWdodCA+IDApIGFy ZSBpbnRlcm5hbCBsYXllcnMgdGhhdCBwb2ludCB0byBhIGxvd2VyCisJICogbm9kZS4gRWFjaCBp bnRlcm5hbCBsYXllciBoYXMgYXQgbGVhc3QgMiBkZXNjZW5kZW50cy4KKwkgKgorCSAqIFN0YXJ0 aW5nIGF0IHRoZSB0b3AsIHdlIGNoZWNrIHdoZXRoZXIgdGhlIGN1cnJlbnQgcHJlZml4IG1hdGNo ZXMuIElmCisJICogaXQgZG9lc24ndCwgd2UgaGF2ZSBnb25lIHBhc3NlZCBvdXIgbGF5ZXIgYW5k IG5lZWQgdG8gaW5zZXJ0IGEgam9pbgorCSAqIGludG8gdGhlIHRyZWUsIGFuZCBhIG5ldyBsZWFm IG5vZGUgYXMgYSBkZXNjZW5kZW50IGFzIHdlbGwgYXMgdGhlCisJICogb3JpZ2luYWwgbGF5ZXIu CisJICoKKwkgKiBUaGUgbWF0Y2hpbmcgcHJlZml4IG1lYW5zIHdlIGFyZSBzdGlsbCBmb2xsb3dp bmcgdGhlIHJpZ2h0IGJyYW5jaAorCSAqIG9mIHRoZSB0cmVlLiBJZiBpdCBoYXMgaGVpZ2h0IDAs IHdlIGhhdmUgZm91bmQgb3VyIGxlYWYgYW5kIGp1c3QKKwkgKiBuZWVkIHRvIHJlcGxhY2UgdGhl IGZlbmNlIHNsb3Qgd2l0aCBvdXJzZWx2ZXMuIElmIHRoZSBoZWlnaHQgaXMKKwkgKiBub3QgemVy bywgb3VyIHNsb3QgY29udGFpbnMgdGhlIG5leHQgbGF5ZXIgaW4gdGhlIHRyZWUgKHVubGVzcwor CSAqIGl0IGlzIGVtcHR5LCBpbiB3aGljaCBjYXNlIHdlIGNhbiBhZGQgb3Vyc2VsdmVzIGFzIGEg bmV3IGxlYWYpLgorCSAqIEFzIGRlc2NlbmQgdGhlIHRyZWUgdGhlIHByZWZpeCBncm93cyAoYW5k IGhlaWdodCBkZWNyZWFzZXMpLgorCSAqLworCXAgPSBzaGFyZWQtPnRvcDsKKwlkbyB7CisJCWlm ICgoaWQgPj4gcC0+aGVpZ2h0ID4+IFNISUZUKSAhPSBwLT5wcmVmaXgpIHsKKwkJCS8qIGluc2Vy dCBhIGpvaW4gYWJvdmUgdGhlIGN1cnJlbnQgbGF5ZXIgKi8KKwkJCWN1ciA9IHNlcW1hcF9hbGxv Y19sYXllcihzaGFyZWQpOworCQkJY3VyLT5oZWlnaHQgPSBBTElHTihmbHM2NCgoaWQgPj4gcC0+ aGVpZ2h0ID4+IFNISUZUKSBeIHAtPnByZWZpeCksCisJCQkJCSAgICBTSElGVCkgKyBwLT5oZWln aHQ7CisJCQljdXItPnByZWZpeCA9IGlkID4+IGN1ci0+aGVpZ2h0ID4+IFNISUZUOworCisJCQlp ZiAocC0+cGFyZW50KQorCQkJCXAtPnBhcmVudC0+c2xvdFtsYXllcl9pZHgocC0+cGFyZW50LCBp ZCldID0gY3VyOworCQkJZWxzZQorCQkJCXNoYXJlZC0+dG9wID0gY3VyOworCQkJY3VyLT5wYXJl bnQgPSBwLT5wYXJlbnQ7CisKKwkJCWlkeCA9IHAtPnByZWZpeCA+PiAoY3VyLT5oZWlnaHQgLSBw LT5oZWlnaHQgLSBTSElGVCkgJiBNQVNLOworCQkJY3VyLT5zbG90W2lkeF0gPSBwOworCQkJY3Vy LT5iaXRtYXAgfD0gQklUKGlkeCk7CisJCQlwLT5wYXJlbnQgPSBjdXI7CisJCX0gZWxzZSBpZiAo IXAtPmhlaWdodCkgeworCQkJLyogbWF0Y2hpbmcgYmFzZSBsYXllciAqLworCQkJc2hhcmVkLT5o aW50ID0gcDsKKwkJCWdvdG8gZm91bmRfbGF5ZXI7CisJCX0gZWxzZSB7CisJCQkvKiBkZXNjZW5k IGludG8gdGhlIG5leHQgbGF5ZXIgKi8KKwkJCWlkeCA9IGxheWVyX2lkeChwLCBpZCk7CisJCQlj dXIgPSBwLT5zbG90W2lkeF07CisJCQlpZiAodW5saWtlbHkoIWN1cikpIHsKKwkJCQljdXIgPSBz ZXFtYXBfYWxsb2NfbGF5ZXIoc2hhcmVkKTsKKwkJCQlwLT5zbG90W2lkeF0gPSBjdXI7CisJCQkJ cC0+Yml0bWFwIHw9IEJJVChpZHgpOworCQkJCWN1ci0+cGFyZW50ID0gcDsKKwkJCQlnb3RvIG5l d19sYXllcjsKKwkJCX0KKwkJfQorCisJCXAgPSBjdXI7CisJfSB3aGlsZSAoMSk7CisKK2ZvdW5k X2xheWVyOgorCUdFTV9CVUdfT04ocC0+aGVpZ2h0KTsKKwlHRU1fQlVHX09OKHAtPnByZWZpeCAh PSBpZCA+PiBTSElGVCk7CisJaWR4ID0gaWQgJiBNQVNLOworCXAtPnNsb3RbaWR4XSA9ICh2b2lk ICopKHVpbnRwdHJfdClzZXFubzsKKwlwLT5iaXRtYXAgfD0gQklUKGlkeCk7CisJR0VNX0JVR19P TihzaGFyZWQtPmhpbnQgIT0gcCk7CisJcmV0dXJuOworCituZXdfbGF5ZXI6CisJR0VNX0JVR19P TihjdXItPmhlaWdodCk7CisJY3VyLT5wcmVmaXggPSBpZCA+PiBTSElGVDsKKwlpZHggPSBpZCAm IE1BU0s7CisJY3VyLT5zbG90W2lkeF0gPSAodm9pZCAqKSh1aW50cHRyX3Qpc2Vxbm87CisJY3Vy LT5iaXRtYXAgPSBCSVQoaWR4KTsKKwlzaGFyZWQtPmhpbnQgPSBjdXI7CisJcmV0dXJuOworfQor CitpbnQgX19pbnRlbF90aW1lbGluZV9zeW5jX3Jlc2VydmUoc3RydWN0IGludGVsX3RpbWVsaW5l ICp0bCkKK3sKKwlzdHJ1Y3Qgc2VxbWFwICpzaGFyZWQgPSAmdGwtPnN5bmM7CisJaW50IGNvdW50 OworCisJbWlnaHRfc2xlZXAoKTsKKworCS8qIFRvIGd1YXJhbnRlZSBiZWluZyBhYmxlIHRvIHJl cGxhY2UgYSBmZW5jZSBpbiB0aGUgcmFkaXh0cmVlLAorCSAqIHdlIG5lZWQgYXQgbW9zdCAyIGxh eWVyczogb25lIHRvIGNyZWF0ZSBhIGpvaW4gaW4gdGhlIHRyZWUsCisJICogYW5kIG9uZSB0byBj b250YWluIHRoZSBmZW5jZS4gVHlwaWNhbGx5IHdlIGV4cGVjdCB0byByZXVzZQorCSAqIGEgbGF5 ZXIgYW5kIHNvIGF2b2lkIGFueSBpbnNlcnRpb25zLgorCSAqCisJICogV2UgdXNlIHRoZSBsb3cg Yml0cyBvZiB0aGUgZnJlZWQgbGlzdCB0byB0cmFjayBpdHMgbGVuZ3RoCisJICogc2luY2Ugd2Ug b25seSBuZWVkIGEgY291cGxlIG9mIGJpdHMuCisJICovCisJY291bnQgPSBwdHJfdW5tYXNrX2Jp dHMoc2hhcmVkLT5mcmVlZCwgU0VRTUFQX0NPVU5UX0JJVFMpOworCXdoaWxlIChjb3VudCsrIDwg MikgeworCQlzdHJ1Y3Qgc2VxbWFwX2xheWVyICpwOworCisJCXAgPSBremFsbG9jKHNpemVvZigq cCksIEdGUF9LRVJORUwpOworCQlpZiAodW5saWtlbHkoIXApKQorCQkJcmV0dXJuIC1FTk9NRU07 CisKKwkJcC0+cGFyZW50ID0gc2hhcmVkLT5mcmVlZDsKKwkJc2hhcmVkLT5mcmVlZCA9IHB0cl9w YWNrX2JpdHMocCwgY291bnQsIFNFUU1BUF9DT1VOVF9CSVRTKTsKKwl9CisKKwlyZXR1cm4gMDsK K30KKwogc3RhdGljIGludCBfX2k5MTVfZ2VtX3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCiAJCQkJICAgIHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxp bmUsCiAJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCkBAIC05MSw4ICszMDIsMTQgQEAgdm9pZCBp OTE1X2dlbV90aW1lbGluZV9maW5pKHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGltZWxpbmUp CiAJCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPSAmdGltZWxpbmUtPmVuZ2luZVtpXTsKIAog CQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ0bC0+cmVxdWVzdHMpKTsKKworCQlzZXFtYXBfZnJl ZSgmdGwtPnN5bmMpOwogCX0KIAogCWxpc3RfZGVsKCZ0aW1lbGluZS0+bGluayk7CiAJa2ZyZWUo dGltZWxpbmUtPm5hbWUpOwogfQorCisjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VM RlRFU1QpCisjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfZ2VtX3RpbWVsaW5lLmMiCisjZW5kaWYK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5lLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90aW1lbGluZS5oCmluZGV4IDZjNTNlMTRjYWIy YS4uNGNiNTk3NDAxODAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV90aW1lbGluZS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbWVsaW5l LmgKQEAgLTI2LDExICsyNiwzMCBAQAogI2RlZmluZSBJOTE1X0dFTV9USU1FTElORV9ICiAKICNp bmNsdWRlIDxsaW51eC9saXN0Lmg+CisjaW5jbHVkZSA8bGludXgvcmFkaXgtdHJlZS5oPgogCisj aW5jbHVkZSAiaTkxNV91dGlscy5oIgogI2luY2x1ZGUgImk5MTVfZ2VtX3JlcXVlc3QuaCIKIAog c3RydWN0IGk5MTVfZ2VtX3RpbWVsaW5lOwogCisjZGVmaW5lIE5TRVFNQVAgMTYKKworc3RydWN0 IHNlcW1hcF9sYXllciB7CisJdTY0IHByZWZpeDsKKwl1bnNpZ25lZCBpbnQgaGVpZ2h0OworCXVu c2lnbmVkIGludCBiaXRtYXA7CisJc3RydWN0IHNlcW1hcF9sYXllciAqcGFyZW50OworCXZvaWQg KnNsb3RbTlNFUU1BUF07Cit9OworCitzdHJ1Y3Qgc2VxbWFwIHsKKwlzdHJ1Y3Qgc2VxbWFwX2xh eWVyICpoaW50OworCXN0cnVjdCBzZXFtYXBfbGF5ZXIgKnRvcDsKKwlzdHJ1Y3Qgc2VxbWFwX2xh eWVyICpmcmVlZDsKKyNkZWZpbmUgU0VRTUFQX0NPVU5UX0JJVFMgMgorfTsKKwogc3RydWN0IGlu dGVsX3RpbWVsaW5lIHsKIAl1NjQgZmVuY2VfY29udGV4dDsKIAl1MzIgc2Vxbm87CkBAIC01NSw2 ICs3NCw4IEBAIHN0cnVjdCBpbnRlbF90aW1lbGluZSB7CiAJICogc3RydWN0X211dGV4LgogCSAq LwogCXN0cnVjdCBpOTE1X2dlbV9hY3RpdmUgbGFzdF9yZXF1ZXN0OworCisJc3RydWN0IHNlcW1h cCBzeW5jOwogCXUzMiBzeW5jX3NlcW5vW0k5MTVfTlVNX0VOR0lORVNdOwogCiAJc3RydWN0IGk5 MTVfZ2VtX3RpbWVsaW5lICpjb21tb247CkBAIC03NSw0ICs5NiwxNyBAQCBpbnQgaTkxNV9nZW1f dGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIGludCBpOTE1X2dl bV90aW1lbGluZV9pbml0X19nbG9iYWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwog dm9pZCBpOTE1X2dlbV90aW1lbGluZV9maW5pKHN0cnVjdCBpOTE1X2dlbV90aW1lbGluZSAqdGwp OwogCitib29sIGludGVsX3RpbWVsaW5lX3N5bmNfZ2V0KHN0cnVjdCBpbnRlbF90aW1lbGluZSAq dGwsIHU2NCBpZCwgdTMyIHNlcW5vKTsKKworaW50IF9faW50ZWxfdGltZWxpbmVfc3luY19yZXNl cnZlKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpOworc3RhdGljIGlubGluZSBpbnQgaW50ZWxf dGltZWxpbmVfc3luY19yZXNlcnZlKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpCit7CisJaWYg KGxpa2VseShwdHJfdW5tYXNrX2JpdHModGwtPnN5bmMuZnJlZWQsIFNFUU1BUF9DT1VOVF9CSVRT KSA9PSAyKSkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gX19pbnRlbF90aW1lbGluZV9zeW5jX3Jl c2VydmUodGwpOworfQorCit2b2lkIGludGVsX3RpbWVsaW5lX3N5bmNfc2V0KHN0cnVjdCBpbnRl bF90aW1lbGluZSAqdGwsIHU2NCBpZCwgdTMyIHNlcW5vKTsKKwogI2VuZGlmCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fdGltZWxpbmUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV90aW1lbGluZS5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTVlMmIyZTYzMDgxCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX3RpbWVsaW5l LmMKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNyBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq CisgKi8KKworI2luY2x1ZGUgIi4uL2k5MTVfc2VsZnRlc3QuaCIKKyNpbmNsdWRlICJtb2NrX2dl bV9kZXZpY2UuaCIKKworc3RhdGljIGludCBpZ3Rfc2VxbWFwKHZvaWQgKmFyZykKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKKwljb25zdCBzdHJ1Y3QgeworCQljb25z dCBjaGFyICpuYW1lOworCQl1MzIgc2Vxbm87CisJCWJvb2wgZXhwZWN0ZWQ7CisJCWJvb2wgc2V0 OworCX0gcGFzc1tdID0geworCQl7ICJ1bnNldCIsIDAsIGZhbHNlLCBmYWxzZSB9LAorCQl7ICJu ZXciLCAwLCBmYWxzZSwgdHJ1ZSB9LAorCQl7ICIwYSIsIDAsIHRydWUsIHRydWUgfSwKKwkJeyAi MWEiLCAxLCBmYWxzZSwgdHJ1ZSB9LAorCQl7ICIxYiIsIDEsIHRydWUsIHRydWUgfSwKKwkJeyAi MGIiLCAwLCB0cnVlLCBmYWxzZSB9LAorCQl7ICIyYSIsIDIsIGZhbHNlLCB0cnVlIH0sCisJCXsg IjQiLCA0LCBmYWxzZSwgdHJ1ZSB9LAorCQl7ICJJTlRfTUFYIiwgSU5UX01BWCwgZmFsc2UsIHRy dWUgfSwKKwkJeyAiSU5UX01BWC0xIiwgSU5UX01BWC0xLCB0cnVlLCBmYWxzZSB9LAorCQl7ICJJ TlRfTUFYKzEiLCAodTMyKUlOVF9NQVgrMSwgZmFsc2UsIHRydWUgfSwKKwkJeyAiSU5UX01BWCIs IElOVF9NQVgsIHRydWUsIGZhbHNlIH0sCisJCXsgIlVJTlRfTUFYIiwgVUlOVF9NQVgsIGZhbHNl LCB0cnVlIH0sCisJCXsgIndyYXAiLCAwLCBmYWxzZSwgdHJ1ZSB9LAorCQl7ICJ1bndyYXAiLCBV SU5UX01BWCwgdHJ1ZSwgZmFsc2UgfSwKKwkJe30sCisJfSwgKnA7CisJc3RydWN0IGludGVsX3Rp bWVsaW5lICp0bDsKKwlpbnQgb3JkZXIsIG9mZnNldDsKKwlpbnQgcmV0OworCisJdGwgPSAmaTkx NS0+Z3QuZ2xvYmFsX3RpbWVsaW5lLmVuZ2luZVtSQ1NdOworCWZvciAocCA9IHBhc3M7IHAtPm5h bWU7IHArKykgeworCQlmb3IgKG9yZGVyID0gMTsgb3JkZXIgPCA2NDsgb3JkZXIrKykgeworCQkJ Zm9yIChvZmZzZXQgPSAtMTsgb2Zmc2V0IDw9IChvcmRlciA+IDEpOyBvZmZzZXQrKykgeworCQkJ CXU2NCBjdHggPSBCSVRfVUxMKG9yZGVyKSArIG9mZnNldDsKKworCQkJCWlmIChpbnRlbF90aW1l bGluZV9zeW5jX2dldCh0bCwKKwkJCQkJCQkgICAgY3R4LAorCQkJCQkJCSAgICBwLT5zZXFubykg IT0gcC0+ZXhwZWN0ZWQpIHsKKwkJCQkJcHJfZXJyKCIxOiAlcyhjdHg9JWxsdSwgc2Vxbm89JXUp IGV4cGVjdGVkIHBhc3NlZCAlcyBidXQgZmFpbGVkXG4iLAorCQkJCQkgICAgICAgcC0+bmFtZSwg Y3R4LCBwLT5zZXFubywgeWVzbm8ocC0+ZXhwZWN0ZWQpKTsKKwkJCQkJcmV0dXJuIC1FSU5WQUw7 CisJCQkJfQorCisJCQkJaWYgKHAtPnNldCkgeworCQkJCQlyZXQgPSBpbnRlbF90aW1lbGluZV9z eW5jX3Jlc2VydmUodGwpOworCQkJCQlpZiAocmV0KQorCQkJCQkJcmV0dXJuIHJldDsKKworCQkJ CQlpbnRlbF90aW1lbGluZV9zeW5jX3NldCh0bCwgY3R4LCBwLT5zZXFubyk7CisJCQkJfQorCQkJ fQorCQl9CisJfQorCisJdGwgPSAmaTkxNS0+Z3QuZ2xvYmFsX3RpbWVsaW5lLmVuZ2luZVtCQ1Nd OworCWZvciAob3JkZXIgPSAxOyBvcmRlciA8IDY0OyBvcmRlcisrKSB7CisJCWZvciAob2Zmc2V0 ID0gLTE7IG9mZnNldCA8PSAob3JkZXIgPiAxKTsgb2Zmc2V0KyspIHsKKwkJCXU2NCBjdHggPSBC SVRfVUxMKG9yZGVyKSArIG9mZnNldDsKKworCQkJZm9yIChwID0gcGFzczsgcC0+bmFtZTsgcCsr KSB7CisJCQkJaWYgKGludGVsX3RpbWVsaW5lX3N5bmNfZ2V0KHRsLAorCQkJCQkJCSAgICBjdHgs CisJCQkJCQkJICAgIHAtPnNlcW5vKSAhPSBwLT5leHBlY3RlZCkgeworCQkJCQlwcl9lcnIoIjI6 ICVzKGN0eD0lbGx1LCBzZXFubz0ldSkgZXhwZWN0ZWQgcGFzc2VkICVzIGJ1dCBmYWlsZWRcbiIs CisJCQkJCSAgICAgICBwLT5uYW1lLCBjdHgsIHAtPnNlcW5vLCB5ZXNubyhwLT5leHBlY3RlZCkp OworCQkJCQlyZXR1cm4gLUVJTlZBTDsKKwkJCQl9CisKKwkJCQlpZiAocC0+c2V0KSB7CisJCQkJ CXJldCA9IGludGVsX3RpbWVsaW5lX3N5bmNfcmVzZXJ2ZSh0bCk7CisJCQkJCWlmIChyZXQpCisJ CQkJCQlyZXR1cm4gcmV0OworCisJCQkJCWludGVsX3RpbWVsaW5lX3N5bmNfc2V0KHRsLCBjdHgs IHAtPnNlcW5vKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50 IGk5MTVfZ2VtX3RpbWVsaW5lX21vY2tfc2VsZnRlc3RzKHZvaWQpCit7CisJc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKKwkJU1VCVEVTVChpZ3Rfc2VxbWFwKSwK Kwl9OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCWludCBlcnI7CisKKwlpOTE1 ID0gbW9ja19nZW1fZGV2aWNlKCk7CisJaWYgKCFpOTE1KQorCQlyZXR1cm4gLUVOT01FTTsKKwor CWVyciA9IGk5MTVfc3VidGVzdHModGVzdHMsIGk5MTUpOworCWRybV9kZXZfdW5yZWYoJmk5MTUt PmRybSk7CisKKwlyZXR1cm4gZXJyOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgKaW5kZXggYmU5YTllYmY1NjkyLi44ZDBm NTBjMjVkZjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1 X21vY2tfc2VsZnRlc3RzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfbW9ja19zZWxmdGVzdHMuaApAQCAtMTIsNiArMTIsNyBAQCBzZWxmdGVzdChzYW5pdHljaGVj aywgaTkxNV9tb2NrX3Nhbml0eWNoZWNrKSAvKiBrZWVwIGZpcnN0IChpZ3Qgc2VsZmNoZWNrKSAq Lwogc2VsZnRlc3Qoc2NhdHRlcmxpc3QsIHNjYXR0ZXJsaXN0X21vY2tfc2VsZnRlc3RzKQogc2Vs ZnRlc3QodW5jb3JlLCBpbnRlbF91bmNvcmVfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChicmVh ZGNydW1icywgaW50ZWxfYnJlYWRjcnVtYnNfbW9ja19zZWxmdGVzdHMpCitzZWxmdGVzdCh0aW1l bGluZXMsIGk5MTVfZ2VtX3RpbWVsaW5lX21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3QocmVxdWVz dHMsIGk5MTVfZ2VtX3JlcXVlc3RfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChvYmplY3RzLCBp OTE1X2dlbV9vYmplY3RfbW9ja19zZWxmdGVzdHMpCiBzZWxmdGVzdChkbWFidWYsIGk5MTVfZ2Vt X2RtYWJ1Zl9tb2NrX3NlbGZ0ZXN0cykKLS0gCjIuMTEuMAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==