From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 3/8] drm: introduce sync objects as sync file objects with no fd (v2) Date: Tue, 11 Apr 2017 13:22:15 +1000 Message-ID: <20170411032220.21101-4-airlied@gmail.com> References: <20170411032220.21101-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170411032220.21101-1-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClN5bmMgb2JqZWN0cyBhcmUg bmV3IHRvcGxldmVsIGRybSBvYmplY3QsIHRoYXQgaGF2ZSB0aGUgc2FtZQpzZW1hbnRpY3MgYXMg c3luY19maWxlIG9iamVjdHMsIGJ1dCB3aXRob3V0IHJlcXVpcmluZyBhbiBmZAp0byBiZSBjb25z dW1lZCB0byBzdXBwb3J0IHRoZW0uCgpUaGlzIHBhdGNoIGp1c3QgZW5hYmxlcyB0aGUgRFJNIGlu dGVyZmFjZSB0byBjcmVhdGUgdGhlc2UKb2JqZWN0cywgaXQgZG9lc24ndCBhY3R1YWxseSBwcm92 aWRlIGFueSBzZW1hcGhvcmUgb2JqZWN0cwpvciBuZXcgZmVhdHVyZXMuCgp2MjogZG8gZ2V0L3B1 dCBvbiB0aGUgc3luYyBmaWxlIGZpbGUgdG8gYXZvaWQgcmFjZSAoRGFuaWVsKQoKUmV2aWV3ZWQt Ynk6IENocmlzdGlhbiBLw7ZuaWcgPGNocmlzdGlhbi5rb2VuaWdAYW1kLmNvbT4KU2lnbmVkLW9m Zi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KLS0tCiBEb2N1bWVudGF0aW9u L2dwdS9kcm0taW50ZXJuYWxzLnJzdCB8ICAgNSArCiBEb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0u cnN0ICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICB8 ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2RybV9mb3BzLmMgICAgICAgICAgfCAgIDggKysKIGRy aXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCAgICAgIHwgIDE1ICsrCiBkcml2ZXJzL2dwdS9k cm0vZHJtX2lvY3RsLmMgICAgICAgICB8ICAxNCArKwogZHJpdmVycy9ncHUvZHJtL2RybV9zeW5j b2JqLmMgICAgICAgfCAyNjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBp bmNsdWRlL2RybS9kcm1QLmggICAgICAgICAgICAgICAgICB8ICAgNSArCiBpbmNsdWRlL2RybS9k cm1fZHJ2LmggICAgICAgICAgICAgICB8ICAgMSArCiBpbmNsdWRlL3VhcGkvZHJtL2RybS5oICAg ICAgICAgICAgICB8ICAyNyArKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAzNDggaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1f c3luY29iai5jCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5y c3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdAppbmRleCBlMzU5MjBkLi43 NDNiNzUxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdAor KysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdApAQCAtOTgsNiArOTgsMTEg QEAgRFJJVkVSX0FUT01JQwogICAgIGltcGxlbWVudCBhcHByb3ByaWF0ZSBvYmotPmF0b21pY19n ZXRfcHJvcGVydHkoKSB2ZnVuY3MgZm9yIGFueQogICAgIG1vZGVzZXQgb2JqZWN0cyB3aXRoIGRy aXZlciBzcGVjaWZpYyBwcm9wZXJ0aWVzLgogCitEUklWRVJfU1lOQ09CSgorICAgIERyaXZlciBz dXBwb3J0IHN5bmMgb2JqZWN0cy4gVGhlc2UgYXJlIGp1c3Qgc3luYyBmaWxlcyB0aGF0IGRvbid0 CisgICAgdXNlIGEgZmlsZSBkZXNjcmlwdG9yLiBUaGV5IGNhbiBiZSB1c2VkIHRvIGltcGxlbWVu dCBWdWxrYW4gc2hhcmVkCisgICAgc2VtYXBob3Jlcy4KKwogTWFqb3IsIE1pbm9yIGFuZCBQYXRj aGxldmVsCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIApkaWZmIC0tZ2l0IGEvRG9jdW1l bnRhdGlvbi9ncHUvZHJtLW1tLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKaW5k ZXggZjU3NjBiMS4uMjhhZWJlOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1t LnJzdAorKysgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0CkBAIC00ODMsMyArNDgzLDkg QEAgRFJNIENhY2hlIEhhbmRsaW5nCiAKIC4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2NhY2hlLmMKICAgIDpleHBvcnQ6CisKK0RSTSBTeW5jIE9iamVjdHMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCisuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9z eW5jb2JqLmMKKyAgIDpleHBvcnQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZp bGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5kZXggM2VlOTU3OS4uYjVlNTY1YyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZQpAQCAtMTYsNyArMTYsNyBAQCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRybV9i dWZzLm8gZHJtX2NhY2hlLm8gXAogCQlkcm1fZnJhbWVidWZmZXIubyBkcm1fY29ubmVjdG9yLm8g ZHJtX2JsZW5kLm8gXAogCQlkcm1fZW5jb2Rlci5vIGRybV9tb2RlX29iamVjdC5vIGRybV9wcm9w ZXJ0eS5vIFwKIAkJZHJtX3BsYW5lLm8gZHJtX2NvbG9yX21nbXQubyBkcm1fcHJpbnQubyBcCi0J CWRybV9kdW1iX2J1ZmZlcnMubyBkcm1fbW9kZV9jb25maWcubworCQlkcm1fZHVtYl9idWZmZXJz Lm8gZHJtX21vZGVfY29uZmlnLm8gZHJtX3N5bmNvYmoubwogCiBkcm0tJChDT05GSUdfRFJNX0xJ Ql9SQU5ET00pICs9IGxpYi9kcm1fcmFuZG9tLm8KIGRybS0kKENPTkZJR19EUk1fVk0pICs9IGRy bV92bS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZm9wcy5jCmluZGV4IGFmZGY1YjEuLjlhNjFkZjIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5j CkBAIC0yMTksNiArMjE5LDkgQEAgc3RhdGljIGludCBkcm1fb3Blbl9oZWxwZXIoc3RydWN0IGZp bGUgKmZpbHAsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQogCWlmIChkcm1fY29yZV9jaGVja19m ZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCiAJCWRybV9nZW1fb3BlbihkZXYsIHByaXYpOwogCisJ aWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCWRybV9z eW5jb2JqX29wZW4ocHJpdik7CisKIAlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERS SVZFUl9QUklNRSkpCiAJCWRybV9wcmltZV9pbml0X2ZpbGVfcHJpdmF0ZSgmcHJpdi0+cHJpbWUp OwogCkBAIC0yNjYsNiArMjY5LDggQEAgc3RhdGljIGludCBkcm1fb3Blbl9oZWxwZXIoc3RydWN0 IGZpbGUgKmZpbHAsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQogb3V0X3ByaW1lX2Rlc3Ryb3k6 CiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfUFJJTUUpKQogCQlkcm1f cHJpbWVfZGVzdHJveV9maWxlX3ByaXZhdGUoJnByaXYtPnByaW1lKTsKKwlpZiAoZHJtX2NvcmVf Y2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSkKKwkJZHJtX3N5bmNvYmpfcmVsZWFz ZShwcml2KTsKIAlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKQog CQlkcm1fZ2VtX3JlbGVhc2UoZGV2LCBwcml2KTsKIAlwdXRfcGlkKHByaXYtPnBpZCk7CkBAIC00 MDAsNiArNDA1LDkgQEAgaW50IGRybV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVj dCBmaWxlICpmaWxwKQogCQlkcm1fcHJvcGVydHlfZGVzdHJveV91c2VyX2Jsb2JzKGRldiwgZmls ZV9wcml2KTsKIAl9CiAKKwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9T WU5DT0JKKSkKKwkJZHJtX3N5bmNvYmpfcmVsZWFzZShmaWxlX3ByaXYpOworCiAJaWYgKGRybV9j b3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkKIAkJZHJtX2dlbV9yZWxlYXNlKGRl diwgZmlsZV9wcml2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5h bC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCmluZGV4IGYzNzM4OGMuLjcwYzI3 YTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTE0Miw0ICsxNDIsMTkgQEAgc3RhdGljIGlu bGluZSBpbnQgZHJtX2RlYnVnZnNfY3J0Y19jcmNfYWRkKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK IHsKIAlyZXR1cm4gMDsKIH0KKwogI2VuZGlmCisKKy8qIGRybV9zeW5jb2JqLmMgKi8KK3ZvaWQg ZHJtX3N5bmNvYmpfb3BlbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7Cit2b2lkIGRy bV9zeW5jb2JqX3JlbGVhc2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOworaW50IGRy bV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5bmNv YmpfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJ ICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOworaW50IGRybV9zeW5jb2JqX2hh bmRsZV90b19mZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJ CSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK2ludCBkcm1fc3luY29ial9mZF90 b19oYW5kbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkg ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5bmNvYmpfaW5mb19p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXZhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9p b2N0bC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCmluZGV4IGE3YzYxYzIuLjRhOGVk NjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2lvY3RsLmMKQEAgLTI0MCw2ICsyNDAsOSBAQCBzdGF0aWMgaW50IGRybV9n ZXRjYXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxl ICpmaWxlXwogCQlyZXEtPnZhbHVlIHw9IGRldi0+ZHJpdmVyLT5wcmltZV9mZF90b19oYW5kbGUg PyBEUk1fUFJJTUVfQ0FQX0lNUE9SVCA6IDA7CiAJCXJlcS0+dmFsdWUgfD0gZGV2LT5kcml2ZXIt PnByaW1lX2hhbmRsZV90b19mZCA/IERSTV9QUklNRV9DQVBfRVhQT1JUIDogMDsKIAkJcmV0dXJu IDA7CisJY2FzZSBEUk1fQ0FQX1NZTkNPQko6CisJCXJlcS0+dmFsdWUgPSBkcm1fY29yZV9jaGVj a19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopOworCQlyZXR1cm4gMDsKIAl9CiAKIAkvKiBP dGhlciBjYXBzIG9ubHkgd29yayB3aXRoIEtNUyBkcml2ZXJzICovCkBAIC02NDEsNiArNjQ0LDE3 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgZHJtX2lvY3Rsc1tdID0gewog CURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfQVRPTUlDLCBkcm1fbW9kZV9hdG9taWNfaW9j dGwsIERSTV9NQVNURVJ8RFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKIAlEUk1fSU9D VExfREVGKERSTV9JT0NUTF9NT0RFX0NSRUFURVBST1BCTE9CLCBkcm1fbW9kZV9jcmVhdGVibG9i X2lvY3RsLCBEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAogCURSTV9JT0NUTF9ERUYo RFJNX0lPQ1RMX01PREVfREVTVFJPWVBST1BCTE9CLCBkcm1fbW9kZV9kZXN0cm95YmxvYl9pb2N0 bCwgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKKworCURSTV9JT0NUTF9ERUYoRFJN X0lPQ1RMX1NZTkNPQkpfQ1JFQVRFLCBkcm1fc3luY29ial9jcmVhdGVfaW9jdGwsCisJCSAgICAg IERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGKERSTV9JT0NU TF9TWU5DT0JKX0RFU1RST1ksIGRybV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGwsCisJCSAgICAgIERS TV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9T WU5DT0JKX0hBTkRMRV9UT19GRCwgZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkX2lvY3RsLAorCQkg ICAgICBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRihEUk1f SU9DVExfU1lOQ09CSl9GRF9UT19IQU5ETEUsIGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZV9pb2N0 bCwKKwkJICAgICAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9E RUYoRFJNX0lPQ1RMX1NZTkNPQkpfSU5GTywgZHJtX3N5bmNvYmpfaW5mb19pb2N0bCwKKwkJICAg ICAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAogfTsKIAogI2RlZmluZSBEUk1fQ09S RV9JT0NUTF9DT1VOVAlBUlJBWV9TSVpFKCBkcm1faW9jdGxzICkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk4NTg5MwotLS0gL2Rldi9udWxs CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCkBAIC0wLDAgKzEsMjY2IEBACisv KgorICogQ29weXJpZ2h0IMKpIDIwMTcgUmVkIEhhdAorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisg KiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxl cyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCBy ZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywg c3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1 YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRX QVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVY UFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MK KyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgorICoKKyAqLworCisvKioKKyAq IERPQzogT3ZlcnZpZXcKKyAqCisgKiBEUk0gc3luY2hyb25pc2F0aW9uIG9iamVjdHMgKHN5bmNv YmopIGFyZSB3cmFwcGVycyBmb3Igc3luY19maWxlIG9iamVjdHMsCisgKiB0aGF0IGRvbid0IHVz ZSBmZCBzcGFjZSwgYW5kIGNhbiBiZSBjb252ZXJ0ZWQgdG8vZnJvbSBzeW5jX2ZpbGUgZmRzLgor ICoKKyAqIERlcGVuZGluZyBvbiB0aGUgc3luYyBvYmplY3QgdHlwZSwgdGhleSBjYW4gZXhwb3Nl IGRpZmZlcmVudCBzeW5jX2ZpbGUKKyAqIHNlbWFudGljcyBhbmQgcmVzdHJpY3Rpb25zLgorICoK KyAqIFRoZWlyIHByaW1hcnkgdXNlLWNhc2UgaXMgdG8gaW1wbGVtZW50IFZ1bGthbiBzaGFyZWQg c2VtYXBob3Jlcy4KKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxsaW51 eC9zeW5jX2ZpbGUuaD4KKyNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKKworc3RhdGljIHN0cnVj dCBzeW5jX2ZpbGUgKmRybV9zeW5jb2JqX2dldChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0 ZSwKKwkJCQkJIHUzMiBoYW5kbGUpCit7CisJc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlOwor CisJc3Bpbl9sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisKKwkvKiBD aGVjayBpZiB3ZSBjdXJyZW50bHkgaGF2ZSBhIHJlZmVyZW5jZSBvbiB0aGUgb2JqZWN0ICovCisJ c3luY19maWxlID0gaWRyX2ZpbmQoJmZpbGVfcHJpdmF0ZS0+c3luY29ial9pZHIsIGhhbmRsZSk7 CisJaWYgKHN5bmNfZmlsZSkKKwkJZ2V0X2ZpbGUoc3luY19maWxlLT5maWxlKTsKKworCXNwaW5f dW5sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisKKwlyZXR1cm4gc3lu Y19maWxlOworfQorCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGVfcHJpdmF0ZSwKKwkJCQkgIHVuc2lnbmVkIHR5cGUsCisJCQkJICB1bnNpZ25lZCBm bGFncywgdTMyICpoYW5kbGUpCit7CisJc3RydWN0IHN5bmNfZmlsZSAqc3luY19maWxlOworCWlu dCByZXQ7CisKKwlyZXQgPSBzeW5jX2ZpbGVfdmFsaWRhdGVfdHlwZV9mbGFncyh0eXBlLCBmbGFn cyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXN5bmNfZmlsZSA9IHN5bmNfZmlsZV9h bGxvYyh0eXBlLCBmbGFncyk7CisJaWYgKCFzeW5jX2ZpbGUpCisJCXJldHVybiAtRU5PTUVNOwor CisJaWRyX3ByZWxvYWQoR0ZQX0tFUk5FTCk7CisJc3Bpbl9sb2NrKCZmaWxlX3ByaXZhdGUtPnN5 bmNvYmpfdGFibGVfbG9jayk7CisJcmV0ID0gaWRyX2FsbG9jKCZmaWxlX3ByaXZhdGUtPnN5bmNv YmpfaWRyLCBzeW5jX2ZpbGUsIDEsIDAsIEdGUF9OT1dBSVQpOworCXNwaW5fdW5sb2NrKCZmaWxl X3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisKKwlpZHJfcHJlbG9hZF9lbmQoKTsKKwor CWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJKmhhbmRsZSA9IHJldDsKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHZvaWQgZHJtX3N5bmNvYmpfZGVzdHJveShzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGVfcHJpdmF0ZSwKKwkJCQl1MzIgaGFuZGxlKQoreworCXN0cnVjdCBzeW5jX2ZpbGUgKnN5 bmNfZmlsZSA9IGRybV9zeW5jb2JqX2dldChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7CisJaWYgKCFz eW5jX2ZpbGUpCisJCXJldHVybjsKKworCXNwaW5fbG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2Jq X3RhYmxlX2xvY2spOworCWlkcl9yZW1vdmUoJmZpbGVfcHJpdmF0ZS0+c3luY29ial9pZHIsIGhh bmRsZSk7CisJc3Bpbl91bmxvY2soJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsK KworCS8qIGRyb3AgbG9va3VwIHJlZmVyZW5jZSAqLworCWZwdXQoc3luY19maWxlLT5maWxlKTsK KwkvKiBkcm9wIGlkciByZWZlcmVuY2UgKi8KKwlmcHV0KHN5bmNfZmlsZS0+ZmlsZSk7Cit9CisK K3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkKHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2YXRlLAorCQkJCSAgICB1MzIgaGFuZGxlLCBpbnQgKmZkKQoreworCXN0cnVjdCBzeW5j X2ZpbGUgKnN5bmNfZmlsZSA9IGRybV9zeW5jb2JqX2dldChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7 CisJaW50IHJldDsKKwlpZiAoIXN5bmNfZmlsZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXQg PSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7CisJaWYgKHJldCA8IDApIHsKKwkJZnB1 dChzeW5jX2ZpbGUtPmZpbGUpOworCQlyZXR1cm4gcmV0OworCX0KKwlmZF9pbnN0YWxsKHJldCwg c3luY19maWxlLT5maWxlKTsKKwkqZmQgPSByZXQ7CisJZnB1dChzeW5jX2ZpbGUtPmZpbGUpOwor CXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZShzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKKwkJCQkgICAgaW50IGZkLCB1MzIgKmhhbmRsZSkK K3sKKwlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUgPSBzeW5jX2ZpbGVfZmRnZXQoZmQpOwor CWludCByZXQ7CisJaWYgKCFzeW5jX2ZpbGUpCisJCXJldHVybiAtRUlOVkFMOworCWlkcl9wcmVs b2FkKEdGUF9LRVJORUwpOworCXNwaW5fbG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxl X2xvY2spOworCXJldCA9IGlkcl9hbGxvYygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkciwgc3lu Y19maWxlLCAxLCAwLCBHRlBfTk9XQUlUKTsKKwlzcGluX3VubG9jaygmZmlsZV9wcml2YXRlLT5z eW5jb2JqX3RhYmxlX2xvY2spOworCWlkcl9wcmVsb2FkX2VuZCgpOworCisJaWYgKHJldCA8IDAp IHsKKwkJZnB1dChzeW5jX2ZpbGUtPmZpbGUpOworCQlyZXR1cm4gcmV0OworCX0KKwkqaGFuZGxl ID0gcmV0OworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX2luZm8oc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkgICAgdTMyIGhhbmRsZSwgdTMyICp0eXBl LCB1MzIgKmZsYWdzKQoreworCXN0cnVjdCBzeW5jX2ZpbGUgKnN5bmNfZmlsZSA9IGRybV9zeW5j b2JqX2dldChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7CisKKwlpZiAoIXN5bmNfZmlsZSkKKwkJcmV0 dXJuIC1FSU5WQUw7CisJKnR5cGUgPSBzeW5jX2ZpbGUtPnR5cGU7CisJKmZsYWdzID0gc3luY19m aWxlLT5mbGFnczsKKwlmcHV0KHN5bmNfZmlsZS0+ZmlsZSk7CisJcmV0dXJuIDA7Cit9CisKKy8q KgorICogZHJtX3N5bmNvYmpfb3BlbiAtIGluaXRhbGl6ZXMgc3luY29iaiBmaWxlLXByaXZhdGUg c3RydWN0dXJlcyBhdCBkZXZub2RlIG9wZW4gdGltZQorICogQGRldjogZHJtX2RldmljZSB3aGlj aCBpcyBiZWluZyBvcGVuZWQgYnkgdXNlcnNwYWNlCisgKiBAZmlsZV9wcml2YXRlOiBkcm0gZmls ZS1wcml2YXRlIHN0cnVjdHVyZSB0byBzZXQgdXAKKyAqCisgKiBDYWxsZWQgYXQgZGV2aWNlIG9w ZW4gdGltZSwgc2V0cyB1cCB0aGUgc3RydWN0dXJlIGZvciBoYW5kbGluZyByZWZjb3VudGluZwor ICogb2Ygc3luYyBvYmplY3RzLgorICovCit2b2lkCitkcm1fc3luY29ial9vcGVuKHN0cnVjdCBk cm1fZmlsZSAqZmlsZV9wcml2YXRlKQoreworCWlkcl9pbml0KCZmaWxlX3ByaXZhdGUtPnN5bmNv YmpfaWRyKTsKKwlzcGluX2xvY2tfaW5pdCgmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxlX2xv Y2spOworfQorCitzdGF0aWMgaW50Citkcm1fc3luY29ial9yZWxlYXNlX2hhbmRsZShpbnQgaWQs IHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3Qgc3luY19maWxlICpzeW5jX2ZpbGUg PSBwdHI7CisKKwlmcHV0KHN5bmNfZmlsZS0+ZmlsZSk7CisJcmV0dXJuIDA7Cit9CisKKy8qKgor ICogZHJtX3N5bmNvYmpfcmVsZWFzZSAtIHJlbGVhc2UgZmlsZS1wcml2YXRlIHN5bmMgb2JqZWN0 IHJlc291cmNlcworICogQGRldjogZHJtX2RldmljZSB3aGljaCBpcyBiZWluZyBjbG9zZWQgYnkg dXNlcnNwYWNlCisgKiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZS1wcml2YXRlIHN0cnVjdHVyZSB0 byBjbGVhbiB1cAorICoKKyAqIENhbGxlZCBhdCBjbG9zZSB0aW1lIHdoZW4gdGhlIGZpbHAgaXMg Z29pbmcgYXdheS4KKyAqCisgKiBSZWxlYXNlcyBhbnkgcmVtYWluaW5nIHJlZmVyZW5jZXMgb24g b2JqZWN0cyBieSB0aGlzIGZpbHAuCisgKi8KK3ZvaWQKK2RybV9zeW5jb2JqX3JlbGVhc2Uoc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJaWRyX2Zvcl9lYWNoKCZmaWxlX3ByaXZh dGUtPnN5bmNvYmpfaWRyLAorCQkgICAgICZkcm1fc3luY29ial9yZWxlYXNlX2hhbmRsZSwgZmls ZV9wcml2YXRlKTsKKwlpZHJfZGVzdHJveSgmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkcik7Cit9 CisKK2ludAorZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCisJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3Ry dWN0IGRybV9zeW5jb2JqX2NyZWF0ZV9pbmZvICphcmdzID0gZGF0YTsKKworCWlmICghZHJtX2Nv cmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSkKKwkJcmV0dXJuIC1FTk9ERVY7 CisKKwlyZXR1cm4gZHJtX3N5bmNvYmpfY3JlYXRlKGZpbGVfcHJpdmF0ZSwgYXJncy0+dHlwZSwK KwkJCQkgYXJncy0+ZmxhZ3MsICZhcmdzLT5oYW5kbGUpOworfQorCitpbnQKK2RybV9zeW5jb2Jq X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAg c3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX2Rl c3Ryb3kgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwg RFJJVkVSX1NZTkNPQkopKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWRybV9zeW5jb2JqX2Rlc3Ry b3koZmlsZV9wcml2YXRlLCBhcmdzLT5oYW5kbGUpOworCXJldHVybiAwOworfQorCisKK2ludAor ZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCisJCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3Ry dWN0IGRybV9zeW5jb2JqX2hhbmRsZSAqYXJncyA9IGRhdGE7CisKKwlpZiAoIWRybV9jb3JlX2No ZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVybiAtRU5PREVWOworCisJ cmV0dXJuIGRybV9zeW5jb2JqX2hhbmRsZV90b19mZChmaWxlX3ByaXZhdGUsIGFyZ3MtPmhhbmRs ZSwKKwkJCQkJJmFyZ3MtPmZkKTsKKworfQorCitpbnQKK2RybV9zeW5jb2JqX2ZkX3RvX2hhbmRs ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQoreworCXN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUg KmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVS X1NZTkNPQkopKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBkcm1fc3luY29ial9mZF90 b19oYW5kbGUoZmlsZV9wcml2YXRlLCBhcmdzLT5mZCwKKwkJCQkJJmFyZ3MtPmhhbmRsZSk7CisK K30KKworaW50Citkcm1fc3luY29ial9pbmZvX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCisJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSkKK3sK KwlzdHJ1Y3QgZHJtX3N5bmNvYmpfY3JlYXRlX2luZm8gKmFyZ3MgPSBkYXRhOworCisJaWYgKCFk cm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlyZXR1cm4gLUVO T0RFVjsKKworCXJldHVybiBkcm1fc3luY29ial9pbmZvKGZpbGVfcHJpdmF0ZSwgYXJncy0+aGFu ZGxlLAorCQkJCSZhcmdzLT50eXBlLCAmYXJncy0+ZmxhZ3MpOworfQpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJtUC5oCmluZGV4IDYxMDVjMDUuLjFkNDhm NmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybVAuaAorKysgYi9pbmNsdWRlL2RybS9kcm1Q LmgKQEAgLTQwNSw2ICs0MDUsMTEgQEAgc3RydWN0IGRybV9maWxlIHsKIAkvKiogTG9jayBmb3Ig c3luY2hyb25pemF0aW9uIG9mIGFjY2VzcyB0byBvYmplY3RfaWRyLiAqLwogCXNwaW5sb2NrX3Qg dGFibGVfbG9jazsKIAorCS8qKiBNYXBwaW5nIG9mIHN5bmMgb2JqZWN0IGhhbmRsZXMgdG8gb2Jq ZWN0IHBvaW50ZXJzLiAqLworCXN0cnVjdCBpZHIgc3luY29ial9pZHI7CisJLyoqIExvY2sgZm9y IHN5bmNocm9uaXphdGlvbiBvZiBhY2Nlc3MgdG8gc3luY29ial9pZHIuICovCisJc3BpbmxvY2tf dCBzeW5jb2JqX3RhYmxlX2xvY2s7CisKIAlzdHJ1Y3QgZmlsZSAqZmlscDsKIAl2b2lkICpkcml2 ZXJfcHJpdjsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Rydi5oIGIvaW5jbHVkZS9k cm0vZHJtX2Rydi5oCmluZGV4IDU2OTlmNDIuLjQ4ZmYwNmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUv ZHJtL2RybV9kcnYuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKQEAgLTUzLDYgKzUzLDcg QEAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iOwogI2RlZmluZSBEUklWRVJfUkVOREVSCQkJ MHg4MDAwCiAjZGVmaW5lIERSSVZFUl9BVE9NSUMJCQkweDEwMDAwCiAjZGVmaW5lIERSSVZFUl9L TVNfTEVHQUNZX0NPTlRFWFQJMHgyMDAwMAorI2RlZmluZSBEUklWRVJfU1lOQ09CSiAgICAgICAg ICAgICAgICAgIDB4NDAwMDAKIAogLyoqCiAgKiBzdHJ1Y3QgZHJtX2RyaXZlciAtIERSTSBkcml2 ZXIgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIGIvaW5jbHVk ZS91YXBpL2RybS9kcm0uaAppbmRleCBiMmM1Mjg0Li4yNmI3ZTg2IDEwMDY0NAotLS0gYS9pbmNs dWRlL3VhcGkvZHJtL2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKQEAgLTY0Nyw2 ICs2NDcsNyBAQCBzdHJ1Y3QgZHJtX2dlbV9vcGVuIHsKICNkZWZpbmUgRFJNX0NBUF9DVVJTT1Jf SEVJR0hUCQkweDkKICNkZWZpbmUgRFJNX0NBUF9BRERGQjJfTU9ESUZJRVJTCTB4MTAKICNkZWZp bmUgRFJNX0NBUF9QQUdFX0ZMSVBfVEFSR0VUCTB4MTEKKyNkZWZpbmUgRFJNX0NBUF9TWU5DT0JK CQkweDEyCiAKIC8qKiBEUk1fSU9DVExfR0VUX0NBUCBpb2N0bCBhcmd1bWVudCB0eXBlICovCiBz dHJ1Y3QgZHJtX2dldF9jYXAgewpAQCAtNjk2LDYgKzY5NywyNiBAQCBzdHJ1Y3QgZHJtX3ByaW1l X2hhbmRsZSB7CiAJX19zMzIgZmQ7CiB9OwogCitzdHJ1Y3QgZHJtX3N5bmNvYmpfY3JlYXRlX2lu Zm8geworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiB0eXBlOworCV9fdTMyIGZsYWdzOworCV9fdTMy IHBhZDsKK307CisKK3N0cnVjdCBkcm1fc3luY29ial9kZXN0cm95IHsKKwlfX3UzMiBoYW5kbGU7 CisJX191MzIgcGFkOworfTsKKworc3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSB7CisJX191MzIg aGFuZGxlOworCS8qKiBGbGFncy4uIG9ubHkgYXBwbGljYWJsZSBmb3IgaGFuZGxlLT5mZCAqLwor CV9fdTMyIGZsYWdzOworCisJX19zMzIgZmQ7Cit9OworCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1 cykKIH0KICNlbmRpZgpAQCAtODE0LDYgKzgzNSwxMiBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUg RFJNX0lPQ1RMX01PREVfQ1JFQVRFUFJPUEJMT0IJRFJNX0lPV1IoMHhCRCwgc3RydWN0IGRybV9t b2RlX2NyZWF0ZV9ibG9iKQogI2RlZmluZSBEUk1fSU9DVExfTU9ERV9ERVNUUk9ZUFJPUEJMT0IJ RFJNX0lPV1IoMHhCRSwgc3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfYmxvYikKIAorI2RlZmluZSBE Uk1fSU9DVExfU1lOQ09CSl9DUkVBVEUJRFJNX0lPV1IoMHhCRiwgc3RydWN0IGRybV9zeW5jb2Jq X2NyZWF0ZV9pbmZvKQorI2RlZmluZSBEUk1fSU9DVExfU1lOQ09CSl9ERVNUUk9ZCURSTV9JT1dS KDB4QzAsIHN0cnVjdCBkcm1fc3luY29ial9kZXN0cm95KQorI2RlZmluZSBEUk1fSU9DVExfU1lO Q09CSl9IQU5ETEVfVE9fRkQJRFJNX0lPV1IoMHhDMSwgc3RydWN0IGRybV9zeW5jb2JqX2hhbmRs ZSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NZTkNPQkpfRkRfVE9fSEFORExFCURSTV9JT1dSKDB4QzIs IHN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUpCisjZGVmaW5lIERSTV9JT0NUTF9TWU5DT0JKX0lO Rk8JCURSTV9JT1dSKDB4QzMsIHN0cnVjdCBkcm1fc3luY29ial9jcmVhdGVfaW5mbykKKwogLyoq CiAgKiBEZXZpY2Ugc3BlY2lmaWMgaW9jdGxzIHNob3VsZCBvbmx5IGJlIGluIHRoZWlyIHJlc3Bl Y3RpdmUgaGVhZGVycwogICogVGhlIGRldmljZSBzcGVjaWZpYyBpb2N0bCByYW5nZSBpcyBmcm9t IDB4NDAgdG8gMHg5Zi4KLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK