From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: [PATCH 3/3] drm: Add DRM_MODESET_LOCK_BEGIN/END helpers Date: Tue, 27 Nov 2018 17:46:40 -0500 Message-ID: <20181127224654.48331-3-sean@poorly.run> References: <20181127224654.48331-1-sean@poorly.run> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-yw1-xc42.google.com (mail-yw1-xc42.google.com [IPv6:2607:f8b0:4864:20::c42]) by gabe.freedesktop.org (Postfix) with ESMTPS id B0BC56E0F4 for ; Tue, 27 Nov 2018 22:47:03 +0000 (UTC) Received: by mail-yw1-xc42.google.com with SMTP id h193so8654394ywc.4 for ; Tue, 27 Nov 2018 14:47:03 -0800 (PST) In-Reply-To: <20181127224654.48331-1-sean@poorly.run> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Maxime Ripard , David Airlie , Sean Paul , Sean Paul List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+CgpUaGlzIHBhdGNoIGFkZHMg YSBjb3VwbGUgb2YgaGVscGVycyB0byByZW1vdmUgdGhlIGJvaWxlcnBsYXRlIGludm9sdmVkCmlu IGdyYWJiaW5nIGFsbCBvZiB0aGUgbW9kZXNldCBsb2Nrcy4KCkkndmUgYWxzbyBjb252ZXJ0ZWQg dGhlIG9idmlvdXMgY2FzZXMgaW4gZHJtIGNvcmUgdG8gdXNlIHRoZSBoZWxwZXJzLgoKVGhlIG9u bHkgcmVtYWluaW5nIGluc3RhbmNlIG9mIGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eCgpIGlzIGlu CmRybV9mcmFtZWJ1ZmZlci4gSXQncyBjb21wbGljYXRlZCBieSB0aGUgc3RhdGUgY2xlYXIgdGhh dCBvY2N1cnMgb24KZGVhZGxvY2suIEFUTSwgdGhlcmUncyBubyB3YXkgdG8gaW5qZWN0IGNvZGUg aW4gdGhlIGRlYWRsb2NrIHBhdGggd2l0aAp0aGUgaGVscGVycywgc28gaXQncyB1bmZpdCBmb3Ig Y29udmVyc2lvbi4KCkNjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWxAZmZ3bGwuY2g+ClNpZ25lZC1v ZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIHwgNTIgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYyAgICB8IDE0ICsrLS0tLS0tCiBkcml2 ZXJzL2dwdS9kcm0vZHJtX2NydGMuYyAgICAgICAgICB8IDE1ICsrLS0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vZHJtX3BsYW5lLmMgICAgICAgICB8IDE2ICsrLS0tLS0tLQogaW5jbHVkZS9kcm0vZHJt X21vZGVzZXRfbG9jay5oICAgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog NSBmaWxlcyBjaGFuZ2VkLCA3MiBpbnNlcnRpb25zKCspLCA3OSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCmluZGV4IDE1YTc1YjlmMTg1ZmEuLjk5NzczNWVlYTlh YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCkBAIC0zMTI0LDIzICszMTI0LDEz IEBAIHZvaWQgZHJtX2F0b21pY19oZWxwZXJfc2h1dGRvd24oc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4OwogCWludCByZXQ7CiAKLQlk cm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Ci0Jd2hpbGUgKDEpIHsKLQkJcmV0ID0g ZHJtX21vZGVzZXRfbG9ja19hbGxfY3R4KGRldiwgJmN0eCk7Ci0JCWlmICghcmV0KQotCQkJcmV0 ID0gX19kcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX2FsbChkZXYsICZjdHgsIHRydWUpOwotCi0J CWlmIChyZXQgIT0gLUVERUFETEspCi0JCQlicmVhazsKLQotCQlkcm1fbW9kZXNldF9iYWNrb2Zm KCZjdHgpOwotCX0KKwlEUk1fTU9ERVNFVF9MT0NLX0FMTF9CRUdJTihkZXYsIHJldCwgY3R4LCAw KTsKIAorCXJldCA9IF9fZHJtX2F0b21pY19oZWxwZXJfZGlzYWJsZV9hbGwoZGV2LCAmY3R4LCB0 cnVlKTsKIAlpZiAocmV0KQogCQlEUk1fRVJST1IoIkRpc2FibGluZyBhbGwgY3J0YydzIGR1cmlu ZyB1bmxvYWQgZmFpbGVkIHdpdGggJWlcbiIsIHJldCk7CiAKLQlkcm1fbW9kZXNldF9kcm9wX2xv Y2tzKCZjdHgpOwotCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKKwlEUk1fTU9ERVNF VF9MT0NLX0FMTF9FTkQocmV0LCBjdHgpOwogfQogRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2hl bHBlcl9zaHV0ZG93bik7CiAKQEAgLTMxNzUsMTQgKzMxNjUsNyBAQCBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqZHJtX2F0b21pY19oZWxwZXJfc3VzcGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKIAlpbnQgZXJyOwogCi0JZHJtX21v ZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwotCi1yZXRyeToKLQllcnIgPSBkcm1fbW9kZXNl dF9sb2NrX2FsbF9jdHgoZGV2LCAmY3R4KTsKLQlpZiAoZXJyIDwgMCkgewotCQlzdGF0ZSA9IEVS Ul9QVFIoZXJyKTsKLQkJZ290byB1bmxvY2s7Ci0JfQorCURSTV9NT0RFU0VUX0xPQ0tfQUxMX0JF R0lOKGRldiwgZXJyLCBjdHgsIDApOwogCiAJc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9kdXBs aWNhdGVfc3RhdGUoZGV2LCAmY3R4KTsKIAlpZiAoSVNfRVJSKHN0YXRlKSkKQEAgLTMxOTEsMTgg KzMxNzQsMTQgQEAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKmRybV9hdG9taWNfaGVscGVyX3N1 c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAllcnIgPSBkcm1fYXRvbWljX2hlbHBlcl9k aXNhYmxlX2FsbChkZXYsICZjdHgpOwogCWlmIChlcnIgPCAwKSB7CiAJCWRybV9hdG9taWNfc3Rh dGVfcHV0KHN0YXRlKTsKLQkJc3RhdGUgPSBFUlJfUFRSKGVycik7CiAJCWdvdG8gdW5sb2NrOwog CX0KIAogdW5sb2NrOgotCWlmIChQVFJfRVJSKHN0YXRlKSA9PSAtRURFQURMSykgewotCQlkcm1f bW9kZXNldF9iYWNrb2ZmKCZjdHgpOwotCQlnb3RvIHJldHJ5OwotCX0KKwlEUk1fTU9ERVNFVF9M T0NLX0FMTF9FTkQoZXJyLCBjdHgpOworCWlmIChlcnIpCisJCXJldHVybiBFUlJfUFRSKGVycik7 CiAKLQlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwotCWRybV9tb2Rlc2V0X2FjcXVpcmVf ZmluaSgmY3R4KTsKIAlyZXR1cm4gc3RhdGU7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX3N1c3BlbmQpOwpAQCAtMzI3MiwyMyArMzI1MSwxMiBAQCBpbnQgZHJtX2F0b21pY19o ZWxwZXJfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlkcm1fbW9kZV9jb25maWdf cmVzZXQoZGV2KTsKIAotCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKLQl3aGls ZSAoMSkgewotCQllcnIgPSBkcm1fbW9kZXNldF9sb2NrX2FsbF9jdHgoZGV2LCAmY3R4KTsKLQkJ aWYgKGVycikKLQkJCWdvdG8gb3V0OworCURSTV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lOKGRldiwg ZXJyLCBjdHgsIDApOwogCi0JCWVyciA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9kdXBsaWNh dGVkX3N0YXRlKHN0YXRlLCAmY3R4KTsKLW91dDoKLQkJaWYgKGVyciAhPSAtRURFQURMSykKLQkJ CWJyZWFrOwotCi0JCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Ci0JfQorCWVyciA9IGRybV9h dG9taWNfaGVscGVyX2NvbW1pdF9kdXBsaWNhdGVkX3N0YXRlKHN0YXRlLCAmY3R4KTsKIAogCXN0 YXRlLT5hY3F1aXJlX2N0eCA9IE5VTEw7Ci0JZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsK LQlkcm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7CisJRFJNX01PREVTRVRfTE9DS19BTExf RU5EKGVyciwgY3R4KTsKIAlkcm1fYXRvbWljX3N0YXRlX3B1dChzdGF0ZSk7CiAKIAlyZXR1cm4g ZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jb2xvcl9tZ210LmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwppbmRleCA1ODFjYzM3ODgyMjMwLi45YzY4Mjcx NzFkNzk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vZHJtX2NvbG9yX21nbXQuYwpAQCAtMjU1LDExICsyNTUsNyBAQCBp bnQgZHJtX21vZGVfZ2FtbWFfc2V0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYg KGNydGNfbHV0LT5nYW1tYV9zaXplICE9IGNydGMtPmdhbW1hX3NpemUpCiAJCXJldHVybiAtRUlO VkFMOwogCi0JZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwotcmV0cnk6Ci0JcmV0 ID0gZHJtX21vZGVzZXRfbG9ja19hbGxfY3R4KGRldiwgJmN0eCk7Ci0JaWYgKHJldCkKLQkJZ290 byBvdXQ7CisJRFJNX01PREVTRVRfTE9DS19BTExfQkVHSU4oZGV2LCByZXQsIGN0eCwgMCk7CiAK IAlzaXplID0gY3J0Y19sdXQtPmdhbW1hX3NpemUgKiAoc2l6ZW9mKHVpbnQxNl90KSk7CiAJcl9i YXNlID0gY3J0Yy0+Z2FtbWFfc3RvcmU7CkBAIC0yODQsMTMgKzI4MCw3IEBAIGludCBkcm1fbW9k ZV9nYW1tYV9zZXRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICAgIGNydGMt PmdhbW1hX3NpemUsICZjdHgpOwogCiBvdXQ6Ci0JaWYgKHJldCA9PSAtRURFQURMSykgewotCQlk cm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwotCQlnb3RvIHJldHJ5OwotCX0KLQlkcm1fbW9kZXNl dF9kcm9wX2xvY2tzKCZjdHgpOwotCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKLQor CURSTV9NT0RFU0VUX0xPQ0tfQUxMX0VORChyZXQsIGN0eCk7CiAJcmV0dXJuIHJldDsKIAogfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2NydGMuYwppbmRleCBhZjRiOTRjZThlOTQyLi40YjNkNDUyMzk0MDdlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NydGMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Ny dGMuYwpAQCAtNTk5LDExICs1OTksOCBAQCBpbnQgZHJtX21vZGVfc2V0Y3J0YyhzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXBsYW5lID0gY3J0Yy0+cHJpbWFyeTsKIAogCW11 dGV4X2xvY2soJmNydGMtPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwotCWRybV9tb2Rlc2V0X2Fj cXVpcmVfaW5pdCgmY3R4LCBEUk1fTU9ERVNFVF9BQ1FVSVJFX0lOVEVSUlVQVElCTEUpOwotcmV0 cnk6Ci0JcmV0ID0gZHJtX21vZGVzZXRfbG9ja19hbGxfY3R4KGNydGMtPmRldiwgJmN0eCk7Ci0J aWYgKHJldCkKLQkJZ290byBvdXQ7CisJRFJNX01PREVTRVRfTE9DS19BTExfQkVHSU4oZGV2LCBy ZXQsIGN0eCwKKwkJCQkgICBEUk1fTU9ERVNFVF9BQ1FVSVJFX0lOVEVSUlVQVElCTEUpOwogCiAJ aWYgKGNydGNfcmVxLT5tb2RlX3ZhbGlkKSB7CiAJCS8qIElmIHdlIGhhdmUgYSBtb2RlIHdlIG5l ZWQgYSBmcmFtZWJ1ZmZlci4gKi8KQEAgLTc2OCwxMyArNzY1LDcgQEAgaW50IGRybV9tb2RlX3Nl dGNydGMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlmYiA9IE5VTEw7CiAJ bW9kZSA9IE5VTEw7CiAKLQlpZiAocmV0ID09IC1FREVBRExLKSB7Ci0JCXJldCA9IGRybV9tb2Rl c2V0X2JhY2tvZmYoJmN0eCk7Ci0JCWlmICghcmV0KQotCQkJZ290byByZXRyeTsKLQl9Ci0JZHJt X21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKLQlkcm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0 eCk7CisJRFJNX01PREVTRVRfTE9DS19BTExfRU5EKHJldCwgY3R4KTsKIAltdXRleF91bmxvY2so JmNydGMtPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwogCiAJcmV0dXJuIHJldDsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcGxh bmUuYwppbmRleCA2Nzk0NTVlMzY4Mjk4Li4zNzQ3MmVkYjRmMzAzIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX3BsYW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9wbGFuZS5j CkBAIC03NjcsMTEgKzc2Nyw4IEBAIHN0YXRpYyBpbnQgc2V0cGxhbmVfaW50ZXJuYWwoc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsCiAJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsK IAlpbnQgcmV0OwogCi0JZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIERSTV9NT0RFU0VU X0FDUVVJUkVfSU5URVJSVVBUSUJMRSk7Ci1yZXRyeToKLQlyZXQgPSBkcm1fbW9kZXNldF9sb2Nr X2FsbF9jdHgocGxhbmUtPmRldiwgJmN0eCk7Ci0JaWYgKHJldCkKLQkJZ290byBmYWlsOworCURS TV9NT0RFU0VUX0xPQ0tfQUxMX0JFR0lOKHBsYW5lLT5kZXYsIHJldCwgY3R4LAorCQkJCSAgIERS TV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBUSUJMRSk7CiAKIAlpZiAoZHJtX2Rydl91c2VzX2F0 b21pY19tb2Rlc2V0KHBsYW5lLT5kZXYpKQogCQlyZXQgPSBfX3NldHBsYW5lX2F0b21pYyhwbGFu ZSwgY3J0YywgZmIsCkBAIC03ODIsMTQgKzc3OSw3IEBAIHN0YXRpYyBpbnQgc2V0cGxhbmVfaW50 ZXJuYWwoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkJCSAgY3J0Y194LCBjcnRjX3ksIGNy dGNfdywgY3J0Y19oLAogCQkJCQkgIHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oLCAmY3R4KTsK IAotZmFpbDoKLQlpZiAocmV0ID09IC1FREVBRExLKSB7Ci0JCXJldCA9IGRybV9tb2Rlc2V0X2Jh Y2tvZmYoJmN0eCk7Ci0JCWlmICghcmV0KQotCQkJZ290byByZXRyeTsKLQl9Ci0JZHJtX21vZGVz ZXRfZHJvcF9sb2NrcygmY3R4KTsKLQlkcm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7CisJ RFJNX01PREVTRVRfTE9DS19BTExfRU5EKHJldCwgY3R4KTsKIAogCXJldHVybiByZXQ7CiB9CmRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbW9kZXNldF9sb2NrLmggYi9pbmNsdWRlL2RybS9k cm1fbW9kZXNldF9sb2NrLmgKaW5kZXggYTY4NWQxYmIyMWYyNi4uNjIxM2ExMTQ0NTYzMyAxMDA2 NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX21vZGVzZXRfbG9jay5oCisrKyBiL2luY2x1ZGUvZHJt L2RybV9tb2Rlc2V0X2xvY2suaApAQCAtMTMwLDQgKzEzMCw1OCBAQCB2b2lkIGRybV93YXJuX29u X21vZGVzZXRfbm90X2FsbF9sb2NrZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBpbnQgZHJt X21vZGVzZXRfbG9ja19hbGxfY3R4KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkgICAgIHN0 cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KTsKIAorLyoqCisgKiBEUk1fTU9ERVNF VF9MT0NLX0FMTF9CRUdJTiAtIEhlbHBlciB0byBhY3F1aXJlIG1vZGVzZXQgbG9ja3MKKyAqIEBk ZXY6IGRybSBkZXZpY2UKKyAqIEByZXQ6IGxvY2FsIHJldC9lcnIvZXRjIHZhcmlhYmxlIHRvIHRy YWNrIGVycm9yIHN0YXR1cworICogQGN0eDogbG9jYWwgbW9kZXNldCBhY3F1aXJlIGNvbnRleHQs IHdpbGwgYmUgZGVyZWZlcmVuY2VkCisgKiBAZmxhZ3M6IERSTV9NT0RFU0VUX0FDUVVJUkVfKiBm bGFncyB0byBwYXNzIHRvIGFjcXVpcmVfaW5pdCgpCisgKgorICogVXNlIHRoZXNlIG1hY3JvcyB0 byBzaW1wbGlmeSBncmFiYmluZyBhbGwgbW9kZXNldCBsb2NrcyB1c2luZyBhIGxvY2FsCisgKiBj b250ZXh0LiBUaGlzIGhhcyB0aGUgYWR2YW50YWdlIG9mIHJlZHVjaW5nIGJvaWxlcnBsYXRlLCBi dXQgYWxzbyBwcm9wZXJseQorICogY2hlY2tpbmcgcmV0dXJuIHZhbHVlcyB3aGVyZSBhcHByb3By aWF0ZS4KKyAqCisgKiBBbnkgY29kZSBydW4gYmV0d2VlbiBCRUdJTiBhbmQgRU5EIHdpbGwgYmUg aG9sZGluZyB0aGUgbW9kZXNldCBsb2Nrcy4KKyAqCisgKiBUaGlzIG11c3QgYmUgcGFpcmVkIHdp dGggRFJNX01PREVTRVRfTE9DQUxfQUxMX0VORC4gV2Ugd2lsbCBqdW1wIGJhY2sgYW5kCisgKiBm b3J0aCBiZXR3ZWVuIHRoZSBsYWJlbHMgb24gZGVhZGxvY2sgYW5kIGVycm9yIGNvbmRpdGlvbnMu CisgKgorICogUmV0dXJuczogVGhlIG9ubHkgcG9zc2libGUgdmFsdWUgb2YgcmV0IGltbWVkaWF0 ZWx5IGFmdGVyCisgKgkgICAgRFJNX01PREVTRVRfTE9DS19BTExfQkVHSU4gaXMgMCwgc28gbm8g ZXJyb3IgY2hlY2tpbmcgaXMgbmVjZXNzYXJ5LgorICovCisjZGVmaW5lIERSTV9NT0RFU0VUX0xP Q0tfQUxMX0JFR0lOKGRldiwgcmV0LCBjdHgsIGZsYWdzKQkJXAorCWRybV9tb2Rlc2V0X2FjcXVp cmVfaW5pdCgmY3R4LCBmbGFncyk7CQkJCVwKK21vZGVzZXRfbG9ja19yZXRyeToJCQkJCQkJXAor CXJldCA9IGRybV9tb2Rlc2V0X2xvY2tfYWxsX2N0eChkZXYsICZjdHgpOwkJCVwKKwlpZiAocmV0 KQkJCQkJCQlcCisJCWdvdG8gbW9kZXNldF9sb2NrX2ZhaWw7CisKKy8qKgorICogRFJNX01PREVT RVRfTE9DS19BTExfRU5EIC0gSGVscGVyIHRvIHJlbGVhc2UgYW5kIGNsZWFudXAgbW9kZXNldCBs b2NrcworICogQHJldDogbG9jYWwgcmV0L2Vyci9ldGMgdmFyaWFibGUgdG8gdHJhY2sgZXJyb3Ig c3RhdHVzCisgKiBAY3R4OiBsb2NhbCBtb2Rlc2V0IGFjcXVpcmUgY29udGV4dCwgd2lsbCBiZSBk ZXJlZmVyZW5jZWQKKyAqCisgKiBUaGUgb3RoZXIgc2lkZSBvZiBEUk1fTU9ERVNFVF9MT0NLX0FM TF9CRUdJTi4gSXQgd2lsbCBib3VuY2UgYmFjayB0byBCRUdJTiBpZgorICogcmV0IGlzIC1FREVB RExLLgorICoKKyAqIEl0J3MgaW1wb3J0YW50IHRoYXQgeW91IHVzZSB0aGUgc2FtZSByZXQgdmFy aWFibGUgZm9yIGJlZ2luIGFuZCBlbmQgc28KKyAqIGRlYWRsb2NrIGNvbmRpdGlvbnMgYXJlIHBy b3Blcmx5IGhhbmRsZWQuCisgKgorICogUmV0dXJuczogcmV0IHdpbGwgYmUgdW50b3VjaGVkIHVu bGVzcyBpdCBpcyAtRURFQURMSy4gVGhhdCBtZWFucyB0aGF0IGlmIHlvdQorICoJICAgIHN1Y2Nl c3NmdWxseSBhY3F1aXJlIHRoZSBsb2NrcywgcmV0IHdpbGwgYmUgd2hhdGV2ZXIgeW91ciBjb2Rl IHNldHMKKyAqCSAgICBpdCB0by4gSWYgdGhlcmUgaXMgYSBkZWFkbG9jayBvciBvdGhlciBmYWls dXJlIHdpdGggYWNxdWlyZSBvcgorICoJICAgIGJhY2tvZmYsIHJldCB3aWxsIGJlIHNldCB0byB0 aGF0IGZhaWx1cmUuIEluIGJvdGggb2YgdGhlc2UgY2FzZXMgdGhlCisgKgkgICAgY29kZSBiZXR3 ZWVuIEJFR0lOL0VORCB3aWxsIG5vdCBiZSBydW4sIHNvIHRoZSBmYWlsdXJlIHdpbGwgcmVmbGVj dAorICoJICAgIHRoZSBpbmFiaWxpdHkgdG8gZ3JhYiB0aGUgbG9ja3MuCisgKi8KKyNkZWZpbmUg RFJNX01PREVTRVRfTE9DS19BTExfRU5EKHJldCwgY3R4KQkJCQlcCittb2Rlc2V0X2xvY2tfZmFp bDoJCQkJCQkJXAorCWlmIChyZXQgPT0gLUVERUFETEspIHsJCQkJCQlcCisJCXJldCA9IGRybV9t b2Rlc2V0X2JhY2tvZmYoJmN0eCk7CQkJXAorCQlpZiAoIXJldCkJCQkJCQlcCisJCQlnb3RvIG1v ZGVzZXRfbG9ja19yZXRyeTsJCQlcCisJfQkJCQkJCQkJXAorCWRybV9tb2Rlc2V0X2Ryb3BfbG9j a3MoJmN0eCk7CQkJCQlcCisJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOworCiAjZW5k aWYgLyogRFJNX01PREVTRVRfTE9DS19IXyAqLwotLSAKU2VhbiBQYXVsLCBTb2Z0d2FyZSBFbmdp bmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAo=