From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 1/5] drm: introduce sync objects (v2) Date: Fri, 12 May 2017 10:34:53 +1000 Message-ID: <20170512003457.24936-2-airlied@gmail.com> References: <20170512003457.24936-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170512003457.24936-1-airlied-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClN5bmMgb2JqZWN0cyBhcmUg bmV3IHRvcGxldmVsIGRybSBvYmplY3QsIHRoYXQgY29udGFpbiBhCnBvaW50ZXIgdG8gYSBmZW5j ZS4gVGhpcyBmZW5jZSBjYW4gYmUgdXBkYXRlZCB2aWEgY29tbWFuZApzdWJtaXNzaW9uIGlvY3Rs cyB2aWEgZHJpdmVycy4KClRoZXJlIGlzIGFsc28gYSBnZW5lcmljIHdhaXQgb2JqIEFQSSBtb2Rl bGxlZCBvbiB0aGUgdnVsa2FuCndhaXQgQVBJICh3aXRoIGNvZGUgbW9kZWxsZWQgb24gc29tZSBh bWRncHUgY29kZSkuCgpUaGVzZSBvYmplY3RzIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gb3BhcXVl IGZkIHRoYXQgY2FuIGJlCnBhc3NlcyBiZXR3ZWVuIHByb2Nlc3Nlcy4KCnYyOiByZW5hbWUgcmVm ZXJlbmNlL3VucmVmZXJlbmNlIHRvIHB1dC9nZXQgKENocmlzKQpmaXggbGVha2VkIHJlZmVyZW5j ZSAoRGF2aWQgWmhvdSkKZHJvcCBtdXRleCBpbiBmYXZvdXIgb2YgY21weGNoZyAoQ2hyaXMpCmRv Y3VtZW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldAp1c2UgRU5PRU5UIGZvciBzeW5jb2JqIGxvb2t1 cC4KClNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+CgpmaXh1 cAotLS0KIERvY3VtZW50YXRpb24vZ3B1L2RybS1pbnRlcm5hbHMucnN0IHwgICAzICsKIERvY3Vt ZW50YXRpb24vZ3B1L2RybS1tbS5yc3QgICAgICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9N YWtlZmlsZSAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYyAg ICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggICAgICB8ICAx MyArKwogZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jICAgICAgICAgfCAgMTIgKysKIGRyaXZl cnMvZ3B1L2RybS9kcm1fc3luY29iai5jICAgICAgIHwgMzg1ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICAgICAgICAgICAgfCAg IDUgKwogaW5jbHVkZS9kcm0vZHJtX2Rydi5oICAgICAgICAgICAgICAgfCAgIDEgKwogaW5jbHVk ZS9kcm0vZHJtX3N5bmNvYmouaCAgICAgICAgICAgfCAgODcgKysrKysrKysKIGluY2x1ZGUvdWFw aS9kcm0vZHJtLmggICAgICAgICAgICAgIHwgIDI1ICsrKwogMTEgZmlsZXMgY2hhbmdlZCwgNTQ2 IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vZHJtX3N5bmNvYmouYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2Ry bV9zeW5jb2JqLmgKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxz LnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1pbnRlcm5hbHMucnN0CmluZGV4IGUzNTkyMGQu LjJlYTNiY2UgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1pbnRlcm5hbHMucnN0 CisrKyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1pbnRlcm5hbHMucnN0CkBAIC05OCw2ICs5OCw5 IEBAIERSSVZFUl9BVE9NSUMKICAgICBpbXBsZW1lbnQgYXBwcm9wcmlhdGUgb2JqLT5hdG9taWNf Z2V0X3Byb3BlcnR5KCkgdmZ1bmNzIGZvciBhbnkKICAgICBtb2Rlc2V0IG9iamVjdHMgd2l0aCBk cml2ZXIgc3BlY2lmaWMgcHJvcGVydGllcy4KIAorRFJJVkVSX1NZTkNPQkoKKyAgICBEcml2ZXIg c3VwcG9ydCBkcm0gc3luYyBvYmplY3RzLgorCiBNYWpvciwgTWlub3IgYW5kIFBhdGNobGV2ZWwK IH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9u L2dwdS9kcm0tbW0ucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdAppbmRleCBmNTc2 MGIxLi4yOGFlYmU4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0Cisr KyBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKQEAgLTQ4MywzICs0ODMsOSBAQCBEUk0g Q2FjaGUgSGFuZGxpbmcKIAogLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fY2Fj aGUuYwogICAgOmV4cG9ydDoKKworRFJNIFN5bmMgT2JqZWN0cworPT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmou YworICAgOmV4cG9ydDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9NYWtlZmlsZQppbmRleCAzZWU5NTc5Li5iNWU1NjVjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxl CkBAIC0xNiw3ICsxNiw3IEBAIGRybS15ICAgICAgIDo9CWRybV9hdXRoLm8gZHJtX2J1ZnMubyBk cm1fY2FjaGUubyBcCiAJCWRybV9mcmFtZWJ1ZmZlci5vIGRybV9jb25uZWN0b3IubyBkcm1fYmxl bmQubyBcCiAJCWRybV9lbmNvZGVyLm8gZHJtX21vZGVfb2JqZWN0Lm8gZHJtX3Byb3BlcnR5Lm8g XAogCQlkcm1fcGxhbmUubyBkcm1fY29sb3JfbWdtdC5vIGRybV9wcmludC5vIFwKLQkJZHJtX2R1 bWJfYnVmZmVycy5vIGRybV9tb2RlX2NvbmZpZy5vCisJCWRybV9kdW1iX2J1ZmZlcnMubyBkcm1f bW9kZV9jb25maWcubyBkcm1fc3luY29iai5vCiAKIGRybS0kKENPTkZJR19EUk1fTElCX1JBTkRP TSkgKz0gbGliL2RybV9yYW5kb20ubwogZHJtLSQoQ09ORklHX0RSTV9WTSkgKz0gZHJtX3ZtLm8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jIGIvZHJpdmVycy9ncHUvZHJt L2RybV9mb3BzLmMKaW5kZXggYWZkZjViMS4uOWE2MWRmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9mb3BzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mb3BzLmMKQEAgLTIx OSw2ICsyMTksOSBAQCBzdGF0aWMgaW50IGRybV9vcGVuX2hlbHBlcihzdHJ1Y3QgZmlsZSAqZmls cCwgc3RydWN0IGRybV9taW5vciAqbWlub3IpCiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUo ZGV2LCBEUklWRVJfR0VNKSkKIAkJZHJtX2dlbV9vcGVuKGRldiwgcHJpdik7CiAKKwlpZiAoZHJt X2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSkKKwkJZHJtX3N5bmNvYmpf b3Blbihwcml2KTsKKwogCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BS SU1FKSkKIAkJZHJtX3ByaW1lX2luaXRfZmlsZV9wcml2YXRlKCZwcml2LT5wcmltZSk7CiAKQEAg LTI2Niw2ICsyNjksOCBAQCBzdGF0aWMgaW50IGRybV9vcGVuX2hlbHBlcihzdHJ1Y3QgZmlsZSAq ZmlscCwgc3RydWN0IGRybV9taW5vciAqbWlub3IpCiBvdXRfcHJpbWVfZGVzdHJveToKIAlpZiAo ZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9QUklNRSkpCiAJCWRybV9wcmltZV9k ZXN0cm95X2ZpbGVfcHJpdmF0ZSgmcHJpdi0+cHJpbWUpOworCWlmIChkcm1fY29yZV9jaGVja19m ZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlkcm1fc3luY29ial9yZWxlYXNlKHByaXYp OwogCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCiAJCWRybV9n ZW1fcmVsZWFzZShkZXYsIHByaXYpOwogCXB1dF9waWQocHJpdi0+cGlkKTsKQEAgLTQwMCw2ICs0 MDUsOSBAQCBpbnQgZHJtX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbHApCiAJCWRybV9wcm9wZXJ0eV9kZXN0cm95X3VzZXJfYmxvYnMoZGV2LCBmaWxlX3ByaXYp OwogCX0KIAorCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkop KQorCQlkcm1fc3luY29ial9yZWxlYXNlKGZpbGVfcHJpdik7CisKIAlpZiAoZHJtX2NvcmVfY2hl Y2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKQogCQlkcm1fZ2VtX3JlbGVhc2UoZGV2LCBmaWxl X3ByaXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKaW5kZXggZjM3Mzg4Yy4uNDRlZjkwMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1faW50ZXJuYWwuaApAQCAtMTQyLDQgKzE0MiwxNyBAQCBzdGF0aWMgaW5saW5lIGlu dCBkcm1fZGVidWdmc19jcnRjX2NyY19hZGQoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXJl dHVybiAwOwogfQorCiAjZW5kaWYKKworLyogZHJtX3N5bmNvYmouYyAqLwordm9pZCBkcm1fc3lu Y29ial9vcGVuKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK3ZvaWQgZHJtX3N5bmNv YmpfcmVsZWFzZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5bmNv YmpfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkg ICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK2ludCBkcm1fc3luY29ial9kZXN0 cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgICAgICBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5bmNvYmpfaGFuZGxlX3Rv X2ZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICAgc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOworaW50IGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRs ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1faW9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwppbmRleCBhN2M2MWMyLi42 ZGE3YWRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCkBAIC0yNDAsNiArMjQwLDkgQEAgc3RhdGljIGludCBk cm1fZ2V0Y2FwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV8KIAkJcmVxLT52YWx1ZSB8PSBkZXYtPmRyaXZlci0+cHJpbWVfZmRfdG9faGFu ZGxlID8gRFJNX1BSSU1FX0NBUF9JTVBPUlQgOiAwOwogCQlyZXEtPnZhbHVlIHw9IGRldi0+ZHJp dmVyLT5wcmltZV9oYW5kbGVfdG9fZmQgPyBEUk1fUFJJTUVfQ0FQX0VYUE9SVCA6IDA7CiAJCXJl dHVybiAwOworCWNhc2UgRFJNX0NBUF9TWU5DT0JKOgorCQlyZXEtPnZhbHVlID0gZHJtX2NvcmVf Y2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKTsKKwkJcmV0dXJuIDA7CiAJfQogCiAJ LyogT3RoZXIgY2FwcyBvbmx5IHdvcmsgd2l0aCBLTVMgZHJpdmVycyAqLwpAQCAtNjQxLDYgKzY0 NCwxNSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGRybV9pb2N0bHNbXSA9 IHsKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0FUT01JQywgZHJtX21vZGVfYXRvbWlj X2lvY3RsLCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJRFJN X0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9DUkVBVEVQUk9QQkxPQiwgZHJtX21vZGVfY3JlYXRl YmxvYl9pb2N0bCwgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKIAlEUk1fSU9DVExf REVGKERSTV9JT0NUTF9NT0RFX0RFU1RST1lQUk9QQkxPQiwgZHJtX21vZGVfZGVzdHJveWJsb2Jf aW9jdGwsIERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCisKKwlEUk1fSU9DVExfREVG KERSTV9JT0NUTF9TWU5DT0JKX0NSRUFURSwgZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsLAorCQkg ICAgICBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRihEUk1f SU9DVExfU1lOQ09CSl9ERVNUUk9ZLCBkcm1fc3luY29ial9kZXN0cm95X2lvY3RsLAorCQkgICAg ICBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRihEUk1fSU9D VExfU1lOQ09CSl9IQU5ETEVfVE9fRkQsIGRybV9zeW5jb2JqX2hhbmRsZV90b19mZF9pb2N0bCwK KwkJICAgICAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUYo RFJNX0lPQ1RMX1NZTkNPQkpfRkRfVE9fSEFORExFLCBkcm1fc3luY29ial9mZF90b19oYW5kbGVf aW9jdGwsCisJCSAgICAgIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKIH07CiAKICNk ZWZpbmUgRFJNX0NPUkVfSU9DVExfQ09VTlQJQVJSQVlfU0laRSggZHJtX2lvY3RscyApCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fc3luY29iai5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzNWU5ODcK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpAQCAtMCww ICsxLDM4NSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFJlZCBIYXQKKyAqCisgKiBQZXJtaXNz aW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRh aW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5k IHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQg dG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRo ZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNs dWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFM TAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkg Q0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqCisgKi8K KworLyoqCisgKiBET0M6IE92ZXJ2aWV3CisgKgorICogRFJNIHN5bmNocm9uaXNhdGlvbiBvYmpl Y3RzIChzeW5jb2JqKSBhcmUgYSBwZXJzaXN0ZW50IG9iamVjdHMsCisgKiB0aGF0IGNvbnRhaW4g YW4gb3B0aW9uYWwgZmVuY2UuIFRoZSBmZW5jZSBjYW4gYmUgdXBkYXRlZCB3aXRoIGEgbmV3Cisg KiBmZW5jZSwgb3IgYmUgTlVMTC4KKyAqCisgKiBzeW5jb2JqJ3MgY2FuIGJlIGV4cG9ydCB0byBm ZCdzIGFuZCBiYWNrLCB0aGVzZSBmZCdzIGFyZSBvcGFxdWUgYW5kCisgKiBoYXZlIG5vIG90aGVy IHVzZSBjYXNlLCBleGNlcHQgcGFzc2luZyB0aGUgc3luY29iaiBiZXR3ZWVuIHByb2Nlc3Nlcy4K KyAqCisgKiBUT0RPOiBzeW5jX2ZpbGUgaW50ZXJhY3Rpb25zLCB3YWl0aW5nCisgKgorICogVGhl aXIgcHJpbWFyeSB1c2UtY2FzZSBpcyB0byBpbXBsZW1lbnQgVnVsa2FuIGZlbmNlcyBhbmQgc2Vt YXBob3Jlcy4KKyAqCisgKiBzeW5jb2JqIGhhdmUgYSBrcmVmIHJlZmVyZW5jZSBjb3VudCwgYnV0 IGFsc28gaGF2ZSBhbiBvcHRpb25hbCBmaWxlLgorICogVGhlIGZpbGUgaXMgb25seSBjcmVhdGVk IG9uY2UgdGhlIHN5bmNvYmogaXMgZXhwb3J0ZWQuCisgKiBUaGUgZmlsZSB0YWtlcyBhIHJlZmVy ZW5jZSBvbiB0aGUga3JlZi4KKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRl IDxsaW51eC9maWxlLmg+CisjaW5jbHVkZSA8bGludXgvZnMuaD4KKyNpbmNsdWRlIDxsaW51eC9h bm9uX2lub2Rlcy5oPgorCisjaW5jbHVkZSAiZHJtX2ludGVybmFsLmgiCisjaW5jbHVkZSA8ZHJt L2RybV9zeW5jb2JqLmg+CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX3N5bmNvYmogKmRybV9zeW5jb2Jq X2ZpbmQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkJCSAgIHUzMiBoYW5kbGUp Cit7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqOworCisJc3Bpbl9sb2NrKCZmaWxlX3By aXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisKKwkvKiBDaGVjayBpZiB3ZSBjdXJyZW50bHkg aGF2ZSBhIHJlZmVyZW5jZSBvbiB0aGUgb2JqZWN0ICovCisJc3luY29iaiA9IGlkcl9maW5kKCZm aWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRyLCBoYW5kbGUpOworCWlmIChzeW5jb2JqKQorCQlkcm1f c3luY29ial9nZXQoc3luY29iaik7CisKKwlzcGluX3VubG9jaygmZmlsZV9wcml2YXRlLT5zeW5j b2JqX3RhYmxlX2xvY2spOworCisJcmV0dXJuIHN5bmNvYmo7Cit9CisKKy8qKgorICogZHJtX3N5 bmNvYmpfcmVwbGFjZV9mZW5jZSAtIGxvb2t1cCBhbmQgcmVwbGFjZSBmZW5jZSBpbiBhIHN5bmMg b2JqZWN0LgorICogQGZpbGVfcHJpdmF0ZSAtIGRybSBmaWxlIHByaXZhdGUgcG9pbnRlci4KKyAq IEBoYW5kbGUgLSBzeW5jb2JqIGhhbmRsZSB0byBsb29rdXAKKyAqIEBmZW5jZSAtIGZlbmNlIHRv IGluc3RhbGwgaW4gc3luYyBmaWxlLgorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2Vzcywgb3Ig LUVOT0VOVCB3aGVuIHRoZSBoYW5kbGUgZG9lc24ndCBwb2ludCBhdCBhIHZhbGlkIHNlbSBmaWxl LgorICoKKyAqIFRoaXMgbG9va3MgdXAgYSBzeW5jIG9iamVjdCBhbmQgcmVwbGFjZXMgdGhlIGZl bmNlIG9uIGl0LCBmcmVlaW5nCisgKiB0aGUgb2xkIG9uZS4KKyAqLworaW50IGRybV9zeW5jb2Jq X3JlcGxhY2VfZmVuY2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkgICAgICB1 MzIgaGFuZGxlLAorCQkJICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJc3RydWN0 IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmluZChmaWxlX3ByaXZhdGUsIGhh bmRsZSk7CisJc3RydWN0IGRtYV9mZW5jZSAqb2xkX2ZlbmNlID0gTlVMTDsKKworCWlmICghc3lu Y29iaikKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlpZiAoZmVuY2UpCisJCWRtYV9mZW5jZV9nZXQo ZmVuY2UpOworCW9sZF9mZW5jZSA9IHhjaGcoJnN5bmNvYmotPmZlbmNlLCBmZW5jZSk7CisKKwlk bWFfZmVuY2VfcHV0KG9sZF9mZW5jZSk7CisJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOworCisJ cmV0dXJuIDA7Cit9CitFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UpOwor CisvKioKKyAqIGRybV9zeW5jb2JqX2ZlbmNlX2dldCAtIGxvb2t1cCBzeW5jIG9iamVjdCBhbmQg cmVmZXJlbmNlIGZlbmNlCisgKiBAZmlsZV9wcml2YXRlIC0gZHJtIGZpbGUgcHJpdmF0ZSBwb2lu dGVyLgorICogQGhhbmRsZSAtIHN5bmNvYmogaGFuZGxlIHRvIGxvb2t1cAorICogQGZlbmNlIC0g cmV0dXJuZWQgcmVmZXJlbmNlZCBmZW5jZQorICogUmV0dXJuczoKKyAqIDAgb24gc3VjY2Vzcywg b3IgLUVOT0VOVCB3aGVyZSBzeW5jb2JqIGlzIGludmFsaWQsCisgKiBvciAtRUlOVkFMIHdoZW4g dGhlIHN5bmNvYmogaGFzIG5vIGZlbmNlLgorICoKKyAqIFRoaXMgcmV0dXJucyBhIHJlZmVyZW5j ZSB0byB1bmRlcmx5aW5nIGZlbmNlIGJhY2tpbmcgdGhlCisgKiBzeW5jb2JqIGlmIG9uZSBleGlz dHMuCisgKi8KK2ludCBkcm1fc3luY29ial9mZW5jZV9nZXQoc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXZhdGUsCisJCQkgIHUzMiBoYW5kbGUsCisJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5j ZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZp bGVfcHJpdmF0ZSwgaGFuZGxlKTsKKwlpbnQgcmV0ID0gMDsKKworCWlmICghc3luY29iaikKKwkJ cmV0dXJuIC1FTk9FTlQ7CisKKwkqZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHN5bmNvYmotPmZlbmNl KTsKKwlpZiAoISpmZW5jZSkgeworCQlyZXQgPSAtRUlOVkFMOworCX0KKwlkcm1fc3luY29ial9w dXQoc3luY29iaik7CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpf ZmVuY2VfZ2V0KTsKKwordm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQor eworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGNvbnRhaW5lcl9vZihrcmVmLAorCQkJ CQkJICAgc3RydWN0IGRybV9zeW5jb2JqLAorCQkJCQkJICAgcmVmY291bnQpOworCWRtYV9mZW5j ZV9wdXQoc3luY29iai0+ZmVuY2UpOworCWtmcmVlKHN5bmNvYmopOworfQorCitzdGF0aWMgaW50 IGRybV9zeW5jb2JqX2NyZWF0ZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKKwkJCSAg ICAgIHUzMiAqaGFuZGxlKQoreworCWludCByZXQ7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqOworCisJc3luY29iaiA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBkcm1fc3luY29iaiksIEdG UF9LRVJORUwpOworCWlmICghc3luY29iaikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlrcmVmX2lu aXQoJnN5bmNvYmotPnJlZmNvdW50KTsKKworCWlkcl9wcmVsb2FkKEdGUF9LRVJORUwpOworCXNw aW5fbG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworCXJldCA9IGlkcl9h bGxvYygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkciwgc3luY29iaiwgMSwgMCwgR0ZQX05PV0FJ VCk7CisJc3Bpbl91bmxvY2soJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKwor CWlkcl9wcmVsb2FkX2VuZCgpOworCisJaWYgKHJldCA8IDApIHsKKwkJZHJtX3N5bmNvYmpfcHV0 KHN5bmNvYmopOworCQlyZXR1cm4gcmV0OworCX0KKworCSpoYW5kbGUgPSByZXQ7CisJcmV0dXJu IDA7Cit9CisKK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZGVzdHJveShzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGVfcHJpdmF0ZSwKKwkJCSAgICAgICB1MzIgaGFuZGxlKQoreworCXN0cnVjdCBkcm1fc3lu Y29iaiAqc3luY29iajsKKworCXNwaW5fbG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxl X2xvY2spOworCXN5bmNvYmogPSBpZHJfcmVtb3ZlKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRy LCBoYW5kbGUpOworCXNwaW5fdW5sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9j ayk7CisKKwlpZiAoIXN5bmNvYmopCisJCXJldHVybiAtRU5PRU5UOworCisJZHJtX3N5bmNvYmpf cHV0KHN5bmNvYmopOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX2Zp bGVfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlz dHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBmaWxlLT5wcml2YXRlX2RhdGE7CisKKwlkcm1f c3luY29ial9wdXQoc3luY29iaik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZmlsZV9vcGVyYXRpb25zIGRybV9zeW5jb2JqX2ZpbGVfZm9wcyA9IHsKKwkucmVsZWFzZSA9 IGRybV9zeW5jb2JqX2ZpbGVfcmVsZWFzZSwKK307CisKK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpf YWxsb2NfZmlsZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCit7CisJc3RydWN0IGZpbGUg KmZpbGUgPSBhbm9uX2lub2RlX2dldGZpbGUoInN5bmNvYmpfZmlsZSIsCisJCQkJCSAgICAgICAm ZHJtX3N5bmNvYmpfZmlsZV9mb3BzLAorCQkJCQkgICAgICAgc3luY29iaiwgMCk7CisJaWYgKElT X0VSUihmaWxlKSkKKwkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CisKKwlkcm1fc3luY29ial9nZXQo c3luY29iaik7CisJaWYgKGNtcHhjaGcoJnN5bmNvYmotPmZpbGUsIE5VTEwsIGZpbGUpKSB7CisJ CS8qIGxvc3QgdGhlIHJhY2UgKi8KKwkJZnB1dChmaWxlKTsKKwl9CisKKwlyZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBkcm1fc3luY29ial9oYW5kbGVfdG9fZmQoc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXZhdGUsCisJCQkJICAgIHUzMiBoYW5kbGUsIGludCAqcF9mZCkKK3sKKwlzdHJ1Y3Qg ZHJtX3N5bmNvYmogKnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJpdmF0ZSwgaGFu ZGxlKTsKKwlpbnQgcmV0OworCWludCBmZDsKKworCWlmICghc3luY29iaikKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlmZCA9IGdldF91bnVzZWRfZmRfZmxhZ3MoT19DTE9FWEVDKTsKKwlpZiAoZmQg PCAwKSB7CisJCWRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTsKKwkJcmV0dXJuIGZkOworCX0KKwor CWlmICghc3luY29iai0+ZmlsZSkgeworCQlyZXQgPSBkcm1fc3luY29ial9hbGxvY19maWxlKHN5 bmNvYmopOworCQlpZiAocmV0KQorCQkJZ290byBvdXRfcHV0X2ZkOworCX0KKwlmZF9pbnN0YWxs KGZkLCBzeW5jb2JqLT5maWxlKTsKKwlkcm1fc3luY29ial9wdXQoc3luY29iaik7CisJKnBfZmQg PSBmZDsKKwlyZXR1cm4gMDsKK291dF9wdXRfZmQ6CisJcHV0X3VudXNlZF9mZChmZCk7CisJZHJt X3N5bmNvYmpfcHV0KHN5bmNvYmopOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBzdHJ1Y3Qg ZHJtX3N5bmNvYmogKmRybV9zeW5jb2JqX2ZkZ2V0KGludCBmZCkKK3sKKwlzdHJ1Y3QgZmlsZSAq ZmlsZSA9IGZnZXQoZmQpOworCisJaWYgKCFmaWxlKQorCQlyZXR1cm4gTlVMTDsKKwlpZiAoZmls ZS0+Zl9vcCAhPSAmZHJtX3N5bmNvYmpfZmlsZV9mb3BzKQorCQlnb3RvIGVycjsKKworCXJldHVy biBmaWxlLT5wcml2YXRlX2RhdGE7CitlcnI6CisJZnB1dChmaWxlKTsKKwlyZXR1cm4gTlVMTDsK K307CisKK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmRfdG9faGFuZGxlKHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2YXRlLAorCQkJCSAgICBpbnQgZmQsIHUzMiAqaGFuZGxlKQoreworCXN0cnVj dCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9zeW5jb2JqX2ZkZ2V0KGZkKTsKKwlpbnQgcmV0 OworCisJaWYgKCFzeW5jb2JqKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIHRha2UgYSByZWZl cmVuY2UgdG8gcHV0IGluIHRoZSBpZHIgKi8KKwlkcm1fc3luY29ial9nZXQoc3luY29iaik7CisK KwlpZHJfcHJlbG9hZChHRlBfS0VSTkVMKTsKKwlzcGluX2xvY2soJmZpbGVfcHJpdmF0ZS0+c3lu Y29ial90YWJsZV9sb2NrKTsKKwlyZXQgPSBpZHJfYWxsb2MoJmZpbGVfcHJpdmF0ZS0+c3luY29i al9pZHIsIHN5bmNvYmosIDEsIDAsIEdGUF9OT1dBSVQpOworCXNwaW5fdW5sb2NrKCZmaWxlX3By aXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisJaWRyX3ByZWxvYWRfZW5kKCk7CisKKwlpZiAo cmV0IDwgMCkgeworCQlmcHV0KHN5bmNvYmotPmZpbGUpOworCQlyZXR1cm4gcmV0OworCX0KKwkq aGFuZGxlID0gcmV0OworCXJldHVybiAwOworfQorCisvKioKKyAqIGRybV9zeW5jb2JqX29wZW4g LSBpbml0YWxpemVzIHN5bmNvYmogZmlsZS1wcml2YXRlIHN0cnVjdHVyZXMgYXQgZGV2bm9kZSBv cGVuIHRpbWUKKyAqIEBkZXY6IGRybV9kZXZpY2Ugd2hpY2ggaXMgYmVpbmcgb3BlbmVkIGJ5IHVz ZXJzcGFjZQorICogQGZpbGVfcHJpdmF0ZTogZHJtIGZpbGUtcHJpdmF0ZSBzdHJ1Y3R1cmUgdG8g c2V0IHVwCisgKgorICogQ2FsbGVkIGF0IGRldmljZSBvcGVuIHRpbWUsIHNldHMgdXAgdGhlIHN0 cnVjdHVyZSBmb3IgaGFuZGxpbmcgcmVmY291bnRpbmcKKyAqIG9mIHN5bmMgb2JqZWN0cy4KKyAq Lwordm9pZAorZHJtX3N5bmNvYmpfb3BlbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSkK K3sKKwlpZHJfaW5pdCgmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkcik7CisJc3Bpbl9sb2NrX2lu aXQoJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKK30KKworc3RhdGljIGludAor ZHJtX3N5bmNvYmpfcmVsZWFzZV9oYW5kbGUoaW50IGlkLCB2b2lkICpwdHIsIHZvaWQgKmRhdGEp Cit7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gcHRyOworCisJZHJtX3N5bmNvYmpf cHV0KHN5bmNvYmopOworCXJldHVybiAwOworfQorCisvKioKKyAqIGRybV9zeW5jb2JqX3JlbGVh c2UgLSByZWxlYXNlIGZpbGUtcHJpdmF0ZSBzeW5jIG9iamVjdCByZXNvdXJjZXMKKyAqIEBkZXY6 IGRybV9kZXZpY2Ugd2hpY2ggaXMgYmVpbmcgY2xvc2VkIGJ5IHVzZXJzcGFjZQorICogQGZpbGVf cHJpdmF0ZTogZHJtIGZpbGUtcHJpdmF0ZSBzdHJ1Y3R1cmUgdG8gY2xlYW4gdXAKKyAqCisgKiBD YWxsZWQgYXQgY2xvc2UgdGltZSB3aGVuIHRoZSBmaWxwIGlzIGdvaW5nIGF3YXkuCisgKgorICog UmVsZWFzZXMgYW55IHJlbWFpbmluZyByZWZlcmVuY2VzIG9uIG9iamVjdHMgYnkgdGhpcyBmaWxw LgorICovCit2b2lkCitkcm1fc3luY29ial9yZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2YXRlKQoreworCWlkcl9mb3JfZWFjaCgmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkciwKKwkJ ICAgICAmZHJtX3N5bmNvYmpfcmVsZWFzZV9oYW5kbGUsIGZpbGVfcHJpdmF0ZSk7CisJaWRyX2Rl c3Ryb3koJmZpbGVfcHJpdmF0ZS0+c3luY29ial9pZHIpOworfQorCitpbnQKK2RybV9zeW5jb2Jq X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQoreworCXN0cnVjdCBkcm1fc3luY29ial9jcmVh dGUgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJ VkVSX1NZTkNPQkopKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCS8qIG5vIHZhbGlkIGZsYWdzIHll dCAqLworCWlmIChhcmdzLT5mbGFncykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gZHJt X3N5bmNvYmpfY3JlYXRlKGZpbGVfcHJpdmF0ZSwKKwkJCQkgICZhcmdzLT5oYW5kbGUpOworfQor CitpbnQKK2RybV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKKwkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3Ry dWN0IGRybV9zeW5jb2JqX2Rlc3Ryb3kgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1fY29yZV9j aGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlyZXR1cm4gLUVOT0RFVjsKKwor CS8qIG1ha2Ugc3VyZSBwYWRkaW5nIGlzIGVtcHR5ICovCisJaWYgKGFyZ3MtPnBhZCkKKwkJcmV0 dXJuIC1FSU5WQUw7CisJcmV0dXJuIGRybV9zeW5jb2JqX2Rlc3Ryb3koZmlsZV9wcml2YXRlLCBh cmdzLT5oYW5kbGUpOworfQorCitpbnQKK2RybV9zeW5jb2JqX2hhbmRsZV90b19mZF9pb2N0bChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgIHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2YXRlKQoreworCXN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUgKmFyZ3MgPSBk YXRhOworCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkop KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBkcm1fc3luY29ial9oYW5kbGVfdG9fZmQo ZmlsZV9wcml2YXRlLCBhcmdzLT5oYW5kbGUsCisJCQkJCSZhcmdzLT5mZCk7Cit9CisKK2ludAor ZHJtX3N5bmNvYmpfZmRfdG9faGFuZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCisJCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3Ry dWN0IGRybV9zeW5jb2JqX2hhbmRsZSAqYXJncyA9IGRhdGE7CisKKwlpZiAoIWRybV9jb3JlX2No ZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVybiAtRU5PREVWOworCisJ cmV0dXJuIGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZShmaWxlX3ByaXZhdGUsIGFyZ3MtPmZkLAor CQkJCQkmYXJncy0+aGFuZGxlKTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAuaCBi L2luY2x1ZGUvZHJtL2RybVAuaAppbmRleCA2MTA1YzA1Li4xZDQ4ZjZmIDEwMDY0NAotLS0gYS9p bmNsdWRlL2RybS9kcm1QLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC00MDUsNiArNDA1 LDExIEBAIHN0cnVjdCBkcm1fZmlsZSB7CiAJLyoqIExvY2sgZm9yIHN5bmNocm9uaXphdGlvbiBv ZiBhY2Nlc3MgdG8gb2JqZWN0X2lkci4gKi8KIAlzcGlubG9ja190IHRhYmxlX2xvY2s7CiAKKwkv KiogTWFwcGluZyBvZiBzeW5jIG9iamVjdCBoYW5kbGVzIHRvIG9iamVjdCBwb2ludGVycy4gKi8K KwlzdHJ1Y3QgaWRyIHN5bmNvYmpfaWRyOworCS8qKiBMb2NrIGZvciBzeW5jaHJvbml6YXRpb24g b2YgYWNjZXNzIHRvIHN5bmNvYmpfaWRyLiAqLworCXNwaW5sb2NrX3Qgc3luY29ial90YWJsZV9s b2NrOworCiAJc3RydWN0IGZpbGUgKmZpbHA7CiAJdm9pZCAqZHJpdmVyX3ByaXY7CiAKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcnYuaCBiL2luY2x1ZGUvZHJtL2RybV9kcnYuaAppbmRl eCA1Njk5ZjQyLi40OGZmMDZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKKysr IGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCkBAIC01Myw2ICs1Myw3IEBAIHN0cnVjdCBkcm1fbW9k ZV9jcmVhdGVfZHVtYjsKICNkZWZpbmUgRFJJVkVSX1JFTkRFUgkJCTB4ODAwMAogI2RlZmluZSBE UklWRVJfQVRPTUlDCQkJMHgxMDAwMAogI2RlZmluZSBEUklWRVJfS01TX0xFR0FDWV9DT05URVhU CTB4MjAwMDAKKyNkZWZpbmUgRFJJVkVSX1NZTkNPQkogICAgICAgICAgICAgICAgICAweDQwMDAw CiAKIC8qKgogICogc3RydWN0IGRybV9kcml2ZXIgLSBEUk0gZHJpdmVyIHN0cnVjdHVyZQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCBiL2luY2x1ZGUvZHJtL2RybV9zeW5j b2JqLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE5Njc0NQotLS0gL2Rl di9udWxsCisrKyBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKQEAgLTAsMCArMSw4NyBAQAor LyoKKyAqIENvcHlyaWdodCDCqSAyMDE3IFJlZCBIYXQKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQor ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMg dG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNl bnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28s IHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBF WFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBX QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhF IEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERB TUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09O VFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4g Q09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT CisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqCisgKi8KKyNpZm5kZWYg X19EUk1fU1lOQ09CSl9IX18KKyNkZWZpbmUgX19EUk1fU1lOQ09CSl9IX18KKworI2luY2x1ZGUg ImxpbnV4L2RtYS1mZW5jZS5oIgorCisvKioKKyAqIHN0cnVjdCBkcm1fc3luY29iaiAtIHN5bmMg b2JqZWN0LgorICoKKyAqIFRoaXMgc3RydWN0dXJlIGRlZmluZXMgYSBnZW5lcmljIHN5bmMgb2Jq ZWN0IHdoaWNoIHdyYXBzIGEgZG1hIGZlbmNlLgorICovCitzdHJ1Y3QgZHJtX3N5bmNvYmogewor CS8qKgorCSAqIEByZWZjb3VudDoKKwkgKgorCSAqIFJlZmVyZW5jZSBjb3VudCBvZiB0aGlzIG9i amVjdC4KKwkgKi8KKwlzdHJ1Y3Qga3JlZiByZWZjb3VudDsKKwkvKioKKwkgKiBAZmVuY2U6CisJ ICogTlVMTCBvciBhIHBvaW50ZXIgdG8gdGhlIGZlbmNlIGJvdW5kIHRvIHRoaXMgb2JqZWN0Lgor CSAqLworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOworCS8qKgorCSAqIEBmaWxlCisJICogYSBm aWxlIGJhY2tpbmcgZm9yIHRoaXMgc3luY29iai4KKwkgKi8KKwlzdHJ1Y3QgZmlsZSAqZmlsZTsK K307CisKK3ZvaWQgZHJtX3N5bmNvYmpfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZik7CisKKy8qKgor ICogZHJtX3N5bmNvYmpfZ2V0IC0gYWNxdWlyZSBhIHN5bmNvYmogcmVmZXJlbmNlCisgKiBAb2Jq OiBzeW5jIG9iamVjdAorICoKKyAqIFRoaXMgYWNxdWlyZXMgYWRkaXRpb25hbCByZWZlcmVuY2Ug dG8gQG9iai4gSXQgaXMgaWxsZWdhbCB0byBjYWxsIHRoaXMKKyAqIHdpdGhvdXQgYWxyZWFkeSBo b2xkaW5nIGEgcmVmZXJlbmNlLiBObyBsb2NrcyByZXF1aXJlZC4KKyAqLworc3RhdGljIGlubGlu ZSB2b2lkCitkcm1fc3luY29ial9nZXQoc3RydWN0IGRybV9zeW5jb2JqICpvYmopCit7CisJa3Jl Zl9nZXQoJm9iai0+cmVmY291bnQpOworfQorCisvKioKKyAqIGRybV9zeW5jb2JqX3B1dCAtIHJl bGVhc2UgYSByZWZlcmVuY2UgdG8gYSBzeW5jIG9iamVjdC4KKyAqIEBvYmo6IHN5bmMgb2JqZWN0 LgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2RybV9zeW5jb2JqX3B1dChzdHJ1Y3QgZHJtX3N5 bmNvYmogKm9iaikKK3sKKwlrcmVmX3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX3N5bmNvYmpfZnJl ZSk7Cit9CisKK2ludCBkcm1fc3luY29ial9mZW5jZV9nZXQoc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXZhdGUsCisJCQkgIHUzMiBoYW5kbGUsCisJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5j ZSk7CitpbnQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdmF0ZSwKKwkJCSAgICAgIHUzMiBoYW5kbGUsCisJCQkgICAgICBzdHJ1Y3QgZG1hX2ZlbmNl ICpmZW5jZSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaCBi L2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKaW5kZXggYjJjNTI4NC4uZGQwYjk5YyAxMDA2NDQKLS0t IGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCkBA IC02NDcsNiArNjQ3LDcgQEAgc3RydWN0IGRybV9nZW1fb3BlbiB7CiAjZGVmaW5lIERSTV9DQVBf Q1VSU09SX0hFSUdIVAkJMHg5CiAjZGVmaW5lIERSTV9DQVBfQURERkIyX01PRElGSUVSUwkweDEw CiAjZGVmaW5lIERSTV9DQVBfUEFHRV9GTElQX1RBUkdFVAkweDExCisjZGVmaW5lIERSTV9DQVBf U1lOQ09CSgkJMHgxMwogCiAvKiogRFJNX0lPQ1RMX0dFVF9DQVAgaW9jdGwgYXJndW1lbnQgdHlw ZSAqLwogc3RydWN0IGRybV9nZXRfY2FwIHsKQEAgLTY5Niw2ICs2OTcsMjUgQEAgc3RydWN0IGRy bV9wcmltZV9oYW5kbGUgewogCV9fczMyIGZkOwogfTsKIAorc3RydWN0IGRybV9zeW5jb2JqX2Ny ZWF0ZSB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIGZsYWdzOworfTsKKworc3RydWN0IGRybV9z eW5jb2JqX2Rlc3Ryb3kgeworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1 Y3QgZHJtX3N5bmNvYmpfaGFuZGxlIHsKKwlfX3UzMiBoYW5kbGU7CisJLyoqIEZsYWdzLi4gb25s eSBhcHBsaWNhYmxlIGZvciBoYW5kbGUtPmZkICovCisJX191MzIgZmxhZ3M7CisKKwlfX3MzMiBm ZDsKKwlfX3UzMiBwYWQ7Cit9OworCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKIH0KICNlbmRp ZgpAQCAtODE0LDYgKzgzNCwxMSBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgRFJNX0lPQ1RMX01P REVfQ1JFQVRFUFJPUEJMT0IJRFJNX0lPV1IoMHhCRCwgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9i bG9iKQogI2RlZmluZSBEUk1fSU9DVExfTU9ERV9ERVNUUk9ZUFJPUEJMT0IJRFJNX0lPV1IoMHhC RSwgc3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfYmxvYikKIAorI2RlZmluZSBEUk1fSU9DVExfU1lO Q09CSl9DUkVBVEUJRFJNX0lPV1IoMHhCRiwgc3RydWN0IGRybV9zeW5jb2JqX2NyZWF0ZSkKKyNk ZWZpbmUgRFJNX0lPQ1RMX1NZTkNPQkpfREVTVFJPWQlEUk1fSU9XUigweEMwLCBzdHJ1Y3QgZHJt X3N5bmNvYmpfZGVzdHJveSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NZTkNPQkpfSEFORExFX1RPX0ZE CURSTV9JT1dSKDB4QzEsIHN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUpCisjZGVmaW5lIERSTV9J T0NUTF9TWU5DT0JKX0ZEX1RPX0hBTkRMRQlEUk1fSU9XUigweEMyLCBzdHJ1Y3QgZHJtX3N5bmNv YmpfaGFuZGxlKQorCiAvKioKICAqIERldmljZSBzcGVjaWZpYyBpb2N0bHMgc2hvdWxkIG9ubHkg YmUgaW4gdGhlaXIgcmVzcGVjdGl2ZSBoZWFkZXJzCiAgKiBUaGUgZGV2aWNlIHNwZWNpZmljIGlv Y3RsIHJhbmdlIGlzIGZyb20gMHg0MCB0byAweDlmLgotLSAKMi45LjMKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFt ZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=