From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 1/5] drm: introduce sync objects (v4) Date: Thu, 1 Jun 2017 11:06:39 +1000 Message-ID: <20170601010643.28616-2-airlied@gmail.com> References: <20170601010643.28616-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170601010643.28616-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 ZSAoRGF2aWQgWmhvdSkKZHJvcCBtdXRleCBpbiBmYXZvdXIgb2YgY21weGNoZyAoQ2hyaXMpCnYz OiBjbGVhbnVwcyBmcm9tIGRhbnZldCwgcmViYXNlIG9uIGRybV9mb3BzIHJlbmFtZQpjaGVjayBm ZF9mbGFncyBpcyAwIGluIGlvY3Rscy4KdjQ6IGV4cG9ydCBmaW5kL2ZyZWUsIGNoYW5nZSByZXBs YWNlIGZlbmNlIHRvIHRha2UgYQpzeW5jb2JqLiBJbiBvcmRlciB0byBzdXBwb3J0IGxvb2t1cCBm aXJzdCwgcmVwbGFjZQpsYXRlciBzZW1hbnRpY3Mgd2hpY2ggc2VlbSBpbiB0aGUgZW5kIHRvIGJl IGNsZWFuZXIuCgpSZXZpZXdlZC1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+ ClNpZ25lZC1vZmYtYnk6IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Ci0tLQogRG9j dW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5yc3QgfCAgIDMgKwogRG9jdW1lbnRhdGlvbi9n cHUvZHJtLW1tLnJzdCAgICAgICAgfCAgMTIgKysKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAg ICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYyAgICAgICAgICB8 ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggICAgICB8ICAxMyArKwogZHJp dmVycy9ncHUvZHJtL2RybV9pb2N0bC5jICAgICAgICAgfCAgMTIgKysKIGRyaXZlcnMvZ3B1L2Ry bS9kcm1fc3luY29iai5jICAgICAgIHwgMzgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwogaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICAgICAgICAgICAgfCAgIDEgLQogaW5j bHVkZS9kcm0vZHJtX2Rydi5oICAgICAgICAgICAgICAgfCAgIDEgKwogaW5jbHVkZS9kcm0vZHJt X2ZpbGUuaCAgICAgICAgICAgICAgfCAgIDUgKwogaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCAg ICAgICAgICAgfCAgOTAgKysrKysrKysrCiBpbmNsdWRlL3VhcGkvZHJtL2RybS5oICAgICAgICAg ICAgICB8ICAyNCArKysKIDEyIGZpbGVzIGNoYW5nZWQsIDU1MSBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29i ai5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAoKZGlmZiAt LWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1pbnRlcm5hbHMucnN0IGIvRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWludGVybmFscy5yc3QKaW5kZXggYmFiZmI2MS4uMmIyM2Q3OCAxMDA2NDQKLS0t IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5yc3QKKysrIGIvRG9jdW1lbnRhdGlv bi9ncHUvZHJtLWludGVybmFscy5yc3QKQEAgLTk4LDYgKzk4LDkgQEAgRFJJVkVSX0FUT01JQwog ICAgIGltcGxlbWVudCBhcHByb3ByaWF0ZSBvYmotPmF0b21pY19nZXRfcHJvcGVydHkoKSB2ZnVu Y3MgZm9yIGFueQogICAgIG1vZGVzZXQgb2JqZWN0cyB3aXRoIGRyaXZlciBzcGVjaWZpYyBwcm9w ZXJ0aWVzLgogCitEUklWRVJfU1lOQ09CSgorICAgIERyaXZlciBzdXBwb3J0IGRybSBzeW5jIG9i amVjdHMuCisKIE1ham9yLCBNaW5vciBhbmQgUGF0Y2hsZXZlbAogfn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QgYi9E b2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0CmluZGV4IDk2YjljMzQuLjk0MTI3OTggMTAwNjQ0 Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9n cHUvZHJtLW1tLnJzdApAQCAtNDg0LDMgKzQ4NCwxNSBAQCBEUk0gQ2FjaGUgSGFuZGxpbmcKIAog Li4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fY2FjaGUuYwogICAgOmV4cG9ydDoK KworRFJNIFN5bmMgT2JqZWN0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIGtl cm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYworICAgOmRvYzogT3ZlcnZp ZXcKKworLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKKyAgIDpleHBv cnQ6CisKKy4uIGtlcm5lbC1kb2M6OiBkcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYworICAg OmV4cG9ydDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZQppbmRleCA1OWYwZjliLi42ZjQyMTg4IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0x Niw3ICsxNiw3IEBAIGRybS15ICAgICAgIDo9CWRybV9hdXRoLm8gZHJtX2J1ZnMubyBkcm1fY2Fj aGUubyBcCiAJCWRybV9mcmFtZWJ1ZmZlci5vIGRybV9jb25uZWN0b3IubyBkcm1fYmxlbmQubyBc CiAJCWRybV9lbmNvZGVyLm8gZHJtX21vZGVfb2JqZWN0Lm8gZHJtX3Byb3BlcnR5Lm8gXAogCQlk cm1fcGxhbmUubyBkcm1fY29sb3JfbWdtdC5vIGRybV9wcmludC5vIFwKLQkJZHJtX2R1bWJfYnVm ZmVycy5vIGRybV9tb2RlX2NvbmZpZy5vCisJCWRybV9kdW1iX2J1ZmZlcnMubyBkcm1fbW9kZV9j b25maWcubyBkcm1fc3luY29iai5vCiAKIGRybS0kKENPTkZJR19EUk1fTElCX1JBTkRPTSkgKz0g bGliL2RybV9yYW5kb20ubwogZHJtLSQoQ09ORklHX0RSTV9WTSkgKz0gZHJtX3ZtLm8KZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmlsZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9m aWxlLmMKaW5kZXggMzc4M2I2NS4uYTIwZDZhOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2RybV9maWxlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMKQEAgLTIyOSw2ICsy MjksOSBAQCBzdGF0aWMgaW50IGRybV9vcGVuX2hlbHBlcihzdHJ1Y3QgZmlsZSAqZmlscCwgc3Ry dWN0IGRybV9taW5vciAqbWlub3IpCiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfR0VNKSkKIAkJZHJtX2dlbV9vcGVuKGRldiwgcHJpdik7CiAKKwlpZiAoZHJtX2NvcmVf Y2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSkKKwkJZHJtX3N5bmNvYmpfb3Blbihw cml2KTsKKwogCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkK IAkJZHJtX3ByaW1lX2luaXRfZmlsZV9wcml2YXRlKCZwcml2LT5wcmltZSk7CiAKQEAgLTI3Niw2 ICsyNzksOCBAQCBzdGF0aWMgaW50IGRybV9vcGVuX2hlbHBlcihzdHJ1Y3QgZmlsZSAqZmlscCwg c3RydWN0IGRybV9taW5vciAqbWlub3IpCiBvdXRfcHJpbWVfZGVzdHJveToKIAlpZiAoZHJtX2Nv cmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9QUklNRSkpCiAJCWRybV9wcmltZV9kZXN0cm95 X2ZpbGVfcHJpdmF0ZSgmcHJpdi0+cHJpbWUpOworCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJl KGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlkcm1fc3luY29ial9yZWxlYXNlKHByaXYpOwogCWlm IChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCiAJCWRybV9nZW1fcmVs ZWFzZShkZXYsIHByaXYpOwogCXB1dF9waWQocHJpdi0+cGlkKTsKQEAgLTM5OCw2ICs0MDMsOSBA QCBpbnQgZHJtX3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHAp CiAJCWRybV9wcm9wZXJ0eV9kZXN0cm95X3VzZXJfYmxvYnMoZGV2LCBmaWxlX3ByaXYpOwogCX0K IAorCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlk cm1fc3luY29ial9yZWxlYXNlKGZpbGVfcHJpdik7CisKIAlpZiAoZHJtX2NvcmVfY2hlY2tfZmVh dHVyZShkZXYsIERSSVZFUl9HRU0pKQogCQlkcm1fZ2VtX3JlbGVhc2UoZGV2LCBmaWxlX3ByaXYp OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmggYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2ludGVybmFsLmgKaW5kZXggM2Q4ZThmOC4uM2ZkZWYyYyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1faW50ZXJuYWwuaApAQCAtMTQyLDQgKzE0MiwxNyBAQCBzdGF0aWMgaW5saW5lIGludCBkcm1f ZGVidWdmc19jcnRjX2NyY19hZGQoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXJldHVybiAw OwogfQorCiAjZW5kaWYKKworLyogZHJtX3N5bmNvYmouYyAqLwordm9pZCBkcm1fc3luY29ial9v cGVuKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK3ZvaWQgZHJtX3N5bmNvYmpfcmVs ZWFzZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5bmNvYmpfY3Jl YXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgICAgIHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK2ludCBkcm1fc3luY29ial9kZXN0cm95X2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgICAgICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICAgc3RydWN0IGRy bV9maWxlICpmaWxlX3ByaXZhdGUpOworaW50IGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlsZV9wcml2YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9j dGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwppbmRleCA4NjVlM2VlLi5mMWU1Njgx IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9pb2N0bC5jCkBAIC0yNDEsNiArMjQxLDkgQEAgc3RhdGljIGludCBkcm1fZ2V0 Y2FwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV8KIAkJcmVxLT52YWx1ZSB8PSBkZXYtPmRyaXZlci0+cHJpbWVfZmRfdG9faGFuZGxlID8g RFJNX1BSSU1FX0NBUF9JTVBPUlQgOiAwOwogCQlyZXEtPnZhbHVlIHw9IGRldi0+ZHJpdmVyLT5w cmltZV9oYW5kbGVfdG9fZmQgPyBEUk1fUFJJTUVfQ0FQX0VYUE9SVCA6IDA7CiAJCXJldHVybiAw OworCWNhc2UgRFJNX0NBUF9TWU5DT0JKOgorCQlyZXEtPnZhbHVlID0gZHJtX2NvcmVfY2hlY2tf ZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKTsKKwkJcmV0dXJuIDA7CiAJfQogCiAJLyogT3Ro ZXIgY2FwcyBvbmx5IHdvcmsgd2l0aCBLTVMgZHJpdmVycyAqLwpAQCAtNjQ1LDYgKzY0OCwxNSBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGRybV9pb2N0bHNbXSA9IHsKIAlE Uk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0FUT01JQywgZHJtX21vZGVfYXRvbWljX2lvY3Rs LCBEUk1fTUFTVEVSfERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJRFJNX0lPQ1RM X0RFRihEUk1fSU9DVExfTU9ERV9DUkVBVEVQUk9QQkxPQiwgZHJtX21vZGVfY3JlYXRlYmxvYl9p b2N0bCwgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKIAlEUk1fSU9DVExfREVGKERS TV9JT0NUTF9NT0RFX0RFU1RST1lQUk9QQkxPQiwgZHJtX21vZGVfZGVzdHJveWJsb2JfaW9jdGws IERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCisKKwlEUk1fSU9DVExfREVGKERSTV9J T0NUTF9TWU5DT0JKX0NSRUFURSwgZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsLAorCQkgICAgICBE Uk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExf U1lOQ09CSl9ERVNUUk9ZLCBkcm1fc3luY29ial9kZXN0cm95X2lvY3RsLAorCQkgICAgICBEUk1f VU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lO Q09CSl9IQU5ETEVfVE9fRkQsIGRybV9zeW5jb2JqX2hhbmRsZV90b19mZF9pb2N0bCwKKwkJICAg ICAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUYoRFJNX0lP Q1RMX1NZTkNPQkpfRkRfVE9fSEFORExFLCBkcm1fc3luY29ial9mZF90b19oYW5kbGVfaW9jdGws CisJCSAgICAgIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKIH07CiAKICNkZWZpbmUg RFJNX0NPUkVfSU9DVExfQ09VTlQJQVJSQVlfU0laRSggZHJtX2lvY3RscyApCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lu Y29iai5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzYmIxOTcKLS0tIC9k ZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwpAQCAtMCwwICsxLDM4 MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDE3IFJlZCBIYXQKKyAqCisgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24g ZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhv dXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJs aWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBl cm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBT T0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5E LCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRI RSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICog VEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s IERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAqCisgKi8KKworLyoq CisgKiBET0M6IE92ZXJ2aWV3CisgKgorICogRFJNIHN5bmNocm9uaXNhdGlvbiBvYmplY3RzIChz eW5jb2JqKSBhcmUgYSBwZXJzaXN0ZW50IG9iamVjdHMsCisgKiB0aGF0IGNvbnRhaW4gYW4gb3B0 aW9uYWwgZmVuY2UuIFRoZSBmZW5jZSBjYW4gYmUgdXBkYXRlZCB3aXRoIGEgbmV3CisgKiBmZW5j ZSwgb3IgYmUgTlVMTC4KKyAqCisgKiBzeW5jb2JqJ3MgY2FuIGJlIGV4cG9ydCB0byBmZCdzIGFu ZCBiYWNrLCB0aGVzZSBmZCdzIGFyZSBvcGFxdWUgYW5kCisgKiBoYXZlIG5vIG90aGVyIHVzZSBj YXNlLCBleGNlcHQgcGFzc2luZyB0aGUgc3luY29iaiBiZXR3ZWVuIHByb2Nlc3Nlcy4KKyAqCisg KiBUaGVpciBwcmltYXJ5IHVzZS1jYXNlIGlzIHRvIGltcGxlbWVudCBWdWxrYW4gZmVuY2VzIGFu ZCBzZW1hcGhvcmVzLgorICoKKyAqIHN5bmNvYmogaGF2ZSBhIGtyZWYgcmVmZXJlbmNlIGNvdW50 LCBidXQgYWxzbyBoYXZlIGFuIG9wdGlvbmFsIGZpbGUuCisgKiBUaGUgZmlsZSBpcyBvbmx5IGNy ZWF0ZWQgb25jZSB0aGUgc3luY29iaiBpcyBleHBvcnRlZC4KKyAqIFRoZSBmaWxlIHRha2VzIGEg cmVmZXJlbmNlIG9uIHRoZSBrcmVmLgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2lu Y2x1ZGUgPGxpbnV4L2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9mcy5oPgorI2luY2x1ZGUgPGxp bnV4L2Fub25faW5vZGVzLmg+CisKKyNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIKKyNpbmNsdWRl IDxkcm0vZHJtX3N5bmNvYmouaD4KKworLyoqCisgKiBkcm1fc3luY29ial9maW5kIC0gbG9va3Vw IGFuZCByZWZlcmVuY2UgYSBzeW5jIG9iamVjdC4KKyAqIEBmaWxlX3ByaXZhdGUgLSBkcm0gZmls ZSBwcml2YXRlIHBvaW50ZXIKKyAqIEBoYW5kbGUgLSBzeW5jIG9iamVjdCBoYW5kbGUgdG8gbG9v a3VwLgorICoKKyAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHN5bmNvYmogcG9pbnRlZCB0 byBieSBoYW5kbGUgb3IgTlVMTC4KKyAqLworc3RydWN0IGRybV9zeW5jb2JqICpkcm1fc3luY29i al9maW5kKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJCSAgICAgdTMyIGhhbmRs ZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7CisKKwlzcGluX2xvY2soJmZpbGVf cHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKworCS8qIENoZWNrIGlmIHdlIGN1cnJlbnRs eSBoYXZlIGEgcmVmZXJlbmNlIG9uIHRoZSBvYmplY3QgKi8KKwlzeW5jb2JqID0gaWRyX2ZpbmQo JmZpbGVfcHJpdmF0ZS0+c3luY29ial9pZHIsIGhhbmRsZSk7CisJaWYgKHN5bmNvYmopCisJCWRy bV9zeW5jb2JqX2dldChzeW5jb2JqKTsKKworCXNwaW5fdW5sb2NrKCZmaWxlX3ByaXZhdGUtPnN5 bmNvYmpfdGFibGVfbG9jayk7CisKKwlyZXR1cm4gc3luY29iajsKK30KK0VYUE9SVF9TWU1CT0wo ZHJtX3N5bmNvYmpfZmluZCk7CisKKy8qKgorICogZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSAt IHJlcGxhY2UgZmVuY2UgaW4gYSBzeW5jIG9iamVjdC4KKyAqIEBmaWxlX3ByaXZhdGUgLSBkcm0g ZmlsZSBwcml2YXRlIHBvaW50ZXIuCisgKiBAc3luY29iaiAtIFN5bmMgb2JqZWN0IHRvIHJlcGxh Y2UgZmVuY2UgaW4KKyAqIEBmZW5jZSAtIGZlbmNlIHRvIGluc3RhbGwgaW4gc3luYyBmaWxlLgor ICoKKyAqIFRoaXMgcmVwbGFjZXMgdGhlIGZlbmNlIG9uIGEgc3luYyBvYmplY3QuCisgKi8KK3Zv aWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0 ZSwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCisJCQkgICAgICAgc3Ry dWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJc3RydWN0IGRtYV9mZW5jZSAqb2xkX2ZlbmNlID0g TlVMTDsKKworCWlmIChmZW5jZSkKKwkJZG1hX2ZlbmNlX2dldChmZW5jZSk7CisJb2xkX2ZlbmNl ID0geGNoZygmc3luY29iai0+ZmVuY2UsIGZlbmNlKTsKKworCWRtYV9mZW5jZV9wdXQob2xkX2Zl bmNlKTsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSk7CisKK2lu dCBkcm1fc3luY29ial9mZW5jZV9nZXQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJ CQkgIHUzMiBoYW5kbGUsCisJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKK3sKKwlzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBkcm1fc3luY29ial9maW5kKGZpbGVfcHJpdmF0ZSwg aGFuZGxlKTsKKwlpbnQgcmV0ID0gMDsKKworCWlmICghc3luY29iaikKKwkJcmV0dXJuIC1FTk9F TlQ7CisKKwkqZmVuY2UgPSBkbWFfZmVuY2VfZ2V0KHN5bmNvYmotPmZlbmNlKTsKKwlpZiAoISpm ZW5jZSkgeworCQlyZXQgPSAtRUlOVkFMOworCX0KKwlkcm1fc3luY29ial9wdXQoc3luY29iaik7 CisJcmV0dXJuIHJldDsKK30KK0VYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KTsK KworLyoqCisgKiBkcm1fc3luY29ial9mcmVlIC0gZnJlZSBhIHN5bmMgb2JqZWN0LgorICogQGty ZWYgLSBrcmVmIHRvIGZyZWUuCisgKgorICogT25seSB0byBiZSBjYWxsZWQgZnJvbSBrcmVmX3B1 dCBpbiBkcm1fc3luY29ial9wdXQuCisgKi8KK3ZvaWQgZHJtX3N5bmNvYmpfZnJlZShzdHJ1Y3Qg a3JlZiAqa3JlZikKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBjb250YWluZXJf b2Yoa3JlZiwKKwkJCQkJCSAgIHN0cnVjdCBkcm1fc3luY29iaiwKKwkJCQkJCSAgIHJlZmNvdW50 KTsKKwlkbWFfZmVuY2VfcHV0KHN5bmNvYmotPmZlbmNlKTsKKwlrZnJlZShzeW5jb2JqKTsKK30K K0VYUE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZnJlZSk7CisKK3N0YXRpYyBpbnQgZHJtX3N5bmNv YmpfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJICAgICAgdTMyICpo YW5kbGUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmo7CisKKwlz eW5jb2JqID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGRybV9zeW5jb2JqKSwgR0ZQX0tFUk5FTCk7 CisJaWYgKCFzeW5jb2JqKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWtyZWZfaW5pdCgmc3luY29i ai0+cmVmY291bnQpOworCisJaWRyX3ByZWxvYWQoR0ZQX0tFUk5FTCk7CisJc3Bpbl9sb2NrKCZm aWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisJcmV0ID0gaWRyX2FsbG9jKCZmaWxl X3ByaXZhdGUtPnN5bmNvYmpfaWRyLCBzeW5jb2JqLCAxLCAwLCBHRlBfTk9XQUlUKTsKKwlzcGlu X3VubG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworCisJaWRyX3ByZWxv YWRfZW5kKCk7CisKKwlpZiAocmV0IDwgMCkgeworCQlkcm1fc3luY29ial9wdXQoc3luY29iaik7 CisJCXJldHVybiByZXQ7CisJfQorCisJKmhhbmRsZSA9IHJldDsKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBkcm1fc3luY29ial9kZXN0cm95KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 YXRlLAorCQkJICAgICAgIHUzMiBoYW5kbGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5j b2JqOworCisJc3Bpbl9sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisJ c3luY29iaiA9IGlkcl9yZW1vdmUoJmZpbGVfcHJpdmF0ZS0+c3luY29ial9pZHIsIGhhbmRsZSk7 CisJc3Bpbl91bmxvY2soJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKworCWlm ICghc3luY29iaikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlkcm1fc3luY29ial9wdXQoc3luY29i aik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmlsZV9yZWxlYXNl KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1f c3luY29iaiAqc3luY29iaiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKworCWRybV9zeW5jb2JqX3B1 dChzeW5jb2JqKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29w ZXJhdGlvbnMgZHJtX3N5bmNvYmpfZmlsZV9mb3BzID0geworCS5yZWxlYXNlID0gZHJtX3N5bmNv YmpfZmlsZV9yZWxlYXNlLAorfTsKKworc3RhdGljIGludCBkcm1fc3luY29ial9hbGxvY19maWxl KHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKK3sKKwlzdHJ1Y3QgZmlsZSAqZmlsZSA9IGFu b25faW5vZGVfZ2V0ZmlsZSgic3luY29ial9maWxlIiwKKwkJCQkJICAgICAgICZkcm1fc3luY29i al9maWxlX2ZvcHMsCisJCQkJCSAgICAgICBzeW5jb2JqLCAwKTsKKwlpZiAoSVNfRVJSKGZpbGUp KQorCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKKworCWRybV9zeW5jb2JqX2dldChzeW5jb2JqKTsK KwlpZiAoY21weGNoZygmc3luY29iai0+ZmlsZSwgTlVMTCwgZmlsZSkpIHsKKwkJLyogbG9zdCB0 aGUgcmFjZSAqLworCQlmcHV0KGZpbGUpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMg aW50IGRybV9zeW5jb2JqX2hhbmRsZV90b19mZChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0 ZSwKKwkJCQkgICAgdTMyIGhhbmRsZSwgaW50ICpwX2ZkKQoreworCXN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBoYW5kbGUpOworCWlu dCByZXQ7CisJaW50IGZkOworCisJaWYgKCFzeW5jb2JqKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CWZkID0gZ2V0X3VudXNlZF9mZF9mbGFncyhPX0NMT0VYRUMpOworCWlmIChmZCA8IDApIHsKKwkJ ZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOworCQlyZXR1cm4gZmQ7CisJfQorCisJaWYgKCFzeW5j b2JqLT5maWxlKSB7CisJCXJldCA9IGRybV9zeW5jb2JqX2FsbG9jX2ZpbGUoc3luY29iaik7CisJ CWlmIChyZXQpCisJCQlnb3RvIG91dF9wdXRfZmQ7CisJfQorCWZkX2luc3RhbGwoZmQsIHN5bmNv YmotPmZpbGUpOworCWRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTsKKwkqcF9mZCA9IGZkOworCXJl dHVybiAwOworb3V0X3B1dF9mZDoKKwlwdXRfdW51c2VkX2ZkKGZkKTsKKwlkcm1fc3luY29ial9w dXQoc3luY29iaik7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fc3luY29i aiAqZHJtX3N5bmNvYmpfZmRnZXQoaW50IGZkKQoreworCXN0cnVjdCBmaWxlICpmaWxlID0gZmdl dChmZCk7CisKKwlpZiAoIWZpbGUpCisJCXJldHVybiBOVUxMOworCWlmIChmaWxlLT5mX29wICE9 ICZkcm1fc3luY29ial9maWxlX2ZvcHMpCisJCWdvdG8gZXJyOworCisJcmV0dXJuIGZpbGUtPnBy aXZhdGVfZGF0YTsKK2VycjoKKwlmcHV0KGZpbGUpOworCXJldHVybiBOVUxMOworfTsKKworc3Rh dGljIGludCBkcm1fc3luY29ial9mZF90b19oYW5kbGUoc3RydWN0IGRybV9maWxlICpmaWxlX3By aXZhdGUsCisJCQkJICAgIGludCBmZCwgdTMyICpoYW5kbGUpCit7CisJc3RydWN0IGRybV9zeW5j b2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmRnZXQoZmQpOworCWludCByZXQ7CisKKwlpZiAo IXN5bmNvYmopCisJCXJldHVybiAtRUlOVkFMOworCisJLyogdGFrZSBhIHJlZmVyZW5jZSB0byBw dXQgaW4gdGhlIGlkciAqLworCWRybV9zeW5jb2JqX2dldChzeW5jb2JqKTsKKworCWlkcl9wcmVs b2FkKEdGUF9LRVJORUwpOworCXNwaW5fbG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxl X2xvY2spOworCXJldCA9IGlkcl9hbGxvYygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkciwgc3lu Y29iaiwgMSwgMCwgR0ZQX05PV0FJVCk7CisJc3Bpbl91bmxvY2soJmZpbGVfcHJpdmF0ZS0+c3lu Y29ial90YWJsZV9sb2NrKTsKKwlpZHJfcHJlbG9hZF9lbmQoKTsKKworCWlmIChyZXQgPCAwKSB7 CisJCWZwdXQoc3luY29iai0+ZmlsZSk7CisJCXJldHVybiByZXQ7CisJfQorCSpoYW5kbGUgPSBy ZXQ7CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZHJtX3N5bmNvYmpfb3BlbiAtIGluaXRhbGl6 ZXMgc3luY29iaiBmaWxlLXByaXZhdGUgc3RydWN0dXJlcyBhdCBkZXZub2RlIG9wZW4gdGltZQor ICogQGRldjogZHJtX2RldmljZSB3aGljaCBpcyBiZWluZyBvcGVuZWQgYnkgdXNlcnNwYWNlCisg KiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZS1wcml2YXRlIHN0cnVjdHVyZSB0byBzZXQgdXAKKyAq CisgKiBDYWxsZWQgYXQgZGV2aWNlIG9wZW4gdGltZSwgc2V0cyB1cCB0aGUgc3RydWN0dXJlIGZv ciBoYW5kbGluZyByZWZjb3VudGluZworICogb2Ygc3luYyBvYmplY3RzLgorICovCit2b2lkCitk cm1fc3luY29ial9vcGVuKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQoreworCWlkcl9p bml0KCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRyKTsKKwlzcGluX2xvY2tfaW5pdCgmZmlsZV9w cml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworfQorCitzdGF0aWMgaW50Citkcm1fc3luY29i al9yZWxlYXNlX2hhbmRsZShpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBwdHI7CisKKwlkcm1fc3luY29ial9wdXQoc3luY29i aik7CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZHJtX3N5bmNvYmpfcmVsZWFzZSAtIHJlbGVh c2UgZmlsZS1wcml2YXRlIHN5bmMgb2JqZWN0IHJlc291cmNlcworICogQGRldjogZHJtX2Rldmlj ZSB3aGljaCBpcyBiZWluZyBjbG9zZWQgYnkgdXNlcnNwYWNlCisgKiBAZmlsZV9wcml2YXRlOiBk cm0gZmlsZS1wcml2YXRlIHN0cnVjdHVyZSB0byBjbGVhbiB1cAorICoKKyAqIENhbGxlZCBhdCBj bG9zZSB0aW1lIHdoZW4gdGhlIGZpbHAgaXMgZ29pbmcgYXdheS4KKyAqCisgKiBSZWxlYXNlcyBh bnkgcmVtYWluaW5nIHJlZmVyZW5jZXMgb24gb2JqZWN0cyBieSB0aGlzIGZpbHAuCisgKi8KK3Zv aWQKK2RybV9zeW5jb2JqX3JlbGVhc2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7 CisJaWRyX2Zvcl9lYWNoKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRyLAorCQkgICAgICZkcm1f c3luY29ial9yZWxlYXNlX2hhbmRsZSwgZmlsZV9wcml2YXRlKTsKKwlpZHJfZGVzdHJveSgmZmls ZV9wcml2YXRlLT5zeW5jb2JqX2lkcik7Cit9CisKK2ludAorZHJtX3N5bmNvYmpfY3JlYXRlX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX2NyZWF0ZSAqYXJncyA9 IGRhdGE7CisKKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09C SikpCisJCXJldHVybiAtRU5PREVWOworCisJLyogbm8gdmFsaWQgZmxhZ3MgeWV0ICovCisJaWYg KGFyZ3MtPmZsYWdzKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiBkcm1fc3luY29ial9j cmVhdGUoZmlsZV9wcml2YXRlLAorCQkJCSAgJmFyZ3MtPmhhbmRsZSk7Cit9CisKK2ludAorZHJt X3N5bmNvYmpfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAorCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5 bmNvYmpfZGVzdHJveSAqYXJncyA9IGRhdGE7CisKKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1 cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVybiAtRU5PREVWOworCisJLyogbWFrZSBz dXJlIHBhZGRpbmcgaXMgZW1wdHkgKi8KKwlpZiAoYXJncy0+cGFkKQorCQlyZXR1cm4gLUVJTlZB TDsKKwlyZXR1cm4gZHJtX3N5bmNvYmpfZGVzdHJveShmaWxlX3ByaXZhdGUsIGFyZ3MtPmhhbmRs ZSk7Cit9CisKK2ludAorZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3By aXZhdGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSAqYXJncyA9IGRhdGE7CisKKwlp ZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVy biAtRU5PREVWOworCisJaWYgKGFyZ3MtPnBhZCB8fCBhcmdzLT5mbGFncykKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlyZXR1cm4gZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkKGZpbGVfcHJpdmF0ZSwg YXJncy0+aGFuZGxlLAorCQkJCQkmYXJncy0+ZmQpOworfQorCitpbnQKK2RybV9zeW5jb2JqX2Zk X3RvX2hhbmRsZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJ CSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQoreworCXN0cnVjdCBkcm1fc3luY29i al9oYW5kbGUgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRl diwgRFJJVkVSX1NZTkNPQkopKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChhcmdzLT5wYWQg fHwgYXJncy0+ZmxhZ3MpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIGRybV9zeW5jb2Jq X2ZkX3RvX2hhbmRsZShmaWxlX3ByaXZhdGUsIGFyZ3MtPmZkLAorCQkJCQkmYXJncy0+aGFuZGxl KTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAu aAppbmRleCBlMWRhYTRmLi40ZmFkOWYyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1QLmgK KysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC0zMTksNyArMzE5LDYgQEAgc3RydWN0IHBjaV9j b250cm9sbGVyOwogCiAjZGVmaW5lIERSTV9JRl9WRVJTSU9OKG1haiwgbWluKSAobWFqIDw8IDE2 IHwgbWluKQogCi0KIC8qIEZsYWdzIGFuZCByZXR1cm4gY29kZXMgZm9yIGdldF92YmxhbmtfdGlt ZXN0YW1wKCkgZHJpdmVyIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBEUk1fQ0FMTEVEX0ZST01fVkJM SVJRIDEKICNkZWZpbmUgRFJNX1ZCTEFOS1RJTUVfU0NBTk9VVFBPU19NRVRIT0QgKDEgPDwgMCkK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcnYuaCBiL2luY2x1ZGUvZHJtL2RybV9kcnYu aAppbmRleCA1M2I5ODMyLi4xYzY2YzFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZHJ2 LmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCkBAIC01Myw2ICs1Myw3IEBAIHN0cnVjdCBk cm1fbW9kZV9jcmVhdGVfZHVtYjsKICNkZWZpbmUgRFJJVkVSX1JFTkRFUgkJCTB4ODAwMAogI2Rl ZmluZSBEUklWRVJfQVRPTUlDCQkJMHgxMDAwMAogI2RlZmluZSBEUklWRVJfS01TX0xFR0FDWV9D T05URVhUCTB4MjAwMDAKKyNkZWZpbmUgRFJJVkVSX1NZTkNPQkogICAgICAgICAgICAgICAgICAw eDQwMDAwCiAKIC8qKgogICogc3RydWN0IGRybV9kcml2ZXIgLSBEUk0gZHJpdmVyIHN0cnVjdHVy ZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaCBiL2luY2x1ZGUvZHJtL2RybV9m aWxlLmgKaW5kZXggNWRkMjdhZS4uY2VhNzM1NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJt X2ZpbGUuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZmlsZS5oCkBAIC0yMzEsNiArMjMxLDExIEBA IHN0cnVjdCBkcm1fZmlsZSB7CiAJLyoqIEB0YWJsZV9sb2NrOiBQcm90ZWN0cyBAb2JqZWN0X2lk ci4gKi8KIAlzcGlubG9ja190IHRhYmxlX2xvY2s7CiAKKwkvKiogQHN5bmNvYmpfaWRyOiBNYXBw aW5nIG9mIHN5bmMgb2JqZWN0IGhhbmRsZXMgdG8gb2JqZWN0IHBvaW50ZXJzLiAqLworCXN0cnVj dCBpZHIgc3luY29ial9pZHI7CisJLyoqIEBzeW5jb2JqX3RhYmxlX2xvY2s6IFByb3RlY3RzIEBz eW5jb2JqX2lkci4gKi8KKwlzcGlubG9ja190IHN5bmNvYmpfdGFibGVfbG9jazsKKwogCS8qKiBA ZmlscDogUG9pbnRlciB0byB0aGUgY29yZSBmaWxlIHN0cnVjdHVyZS4gKi8KIAlzdHJ1Y3QgZmls ZSAqZmlscDsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCBiL2luY2x1 ZGUvZHJtL2RybV9zeW5jb2JqLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MmMzNjEwYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKQEAg LTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3IFJlZCBIYXQKKyAqCisgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K KyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0 cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorICoK KyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNl IChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4g YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3YXJlLgor ICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9S IE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0aG9yczoKKyAq CisgKi8KKyNpZm5kZWYgX19EUk1fU1lOQ09CSl9IX18KKyNkZWZpbmUgX19EUk1fU1lOQ09CSl9I X18KKworI2luY2x1ZGUgImxpbnV4L2RtYS1mZW5jZS5oIgorCisvKioKKyAqIHN0cnVjdCBkcm1f c3luY29iaiAtIHN5bmMgb2JqZWN0LgorICoKKyAqIFRoaXMgc3RydWN0dXJlIGRlZmluZXMgYSBn ZW5lcmljIHN5bmMgb2JqZWN0IHdoaWNoIHdyYXBzIGEgZG1hIGZlbmNlLgorICovCitzdHJ1Y3Qg ZHJtX3N5bmNvYmogeworCS8qKgorCSAqIEByZWZjb3VudDoKKwkgKgorCSAqIFJlZmVyZW5jZSBj b3VudCBvZiB0aGlzIG9iamVjdC4KKwkgKi8KKwlzdHJ1Y3Qga3JlZiByZWZjb3VudDsKKwkvKioK KwkgKiBAZmVuY2U6CisJICogTlVMTCBvciBhIHBvaW50ZXIgdG8gdGhlIGZlbmNlIGJvdW5kIHRv IHRoaXMgb2JqZWN0LgorCSAqLworCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOworCS8qKgorCSAq IEBmaWxlOgorCSAqIGEgZmlsZSBiYWNraW5nIGZvciB0aGlzIHN5bmNvYmouCisJICovCisJc3Ry dWN0IGZpbGUgKmZpbGU7Cit9OworCit2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGtyZWYg KmtyZWYpOworCisvKioKKyAqIGRybV9zeW5jb2JqX2dldCAtIGFjcXVpcmUgYSBzeW5jb2JqIHJl ZmVyZW5jZQorICogQG9iajogc3luYyBvYmplY3QKKyAqCisgKiBUaGlzIGFjcXVpcmVzIGFkZGl0 aW9uYWwgcmVmZXJlbmNlIHRvIEBvYmouIEl0IGlzIGlsbGVnYWwgdG8gY2FsbCB0aGlzCisgKiB3 aXRob3V0IGFscmVhZHkgaG9sZGluZyBhIHJlZmVyZW5jZS4gTm8gbG9ja3MgcmVxdWlyZWQuCisg Ki8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZHJtX3N5bmNvYmpfZ2V0KHN0cnVjdCBkcm1fc3luY29i aiAqb2JqKQoreworCWtyZWZfZ2V0KCZvYmotPnJlZmNvdW50KTsKK30KKworLyoqCisgKiBkcm1f c3luY29ial9wdXQgLSByZWxlYXNlIGEgcmVmZXJlbmNlIHRvIGEgc3luYyBvYmplY3QuCisgKiBA b2JqOiBzeW5jIG9iamVjdC4KKyAqLworc3RhdGljIGlubGluZSB2b2lkCitkcm1fc3luY29ial9w dXQoc3RydWN0IGRybV9zeW5jb2JqICpvYmopCit7CisJa3JlZl9wdXQoJm9iai0+cmVmY291bnQs IGRybV9zeW5jb2JqX2ZyZWUpOworfQorCitzdHJ1Y3QgZHJtX3N5bmNvYmogKmRybV9zeW5jb2Jq X2ZpbmQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkJICAgICB1MzIgaGFuZGxl KTsKK3ZvaWQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVf cHJpdmF0ZSwKKwkJCSAgICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCisJCQkgICAg ICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpOworaW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldChz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKKwkJCSAgdTMyIGhhbmRsZSwKKwkJCSAgc3Ry dWN0IGRtYV9mZW5jZSAqKmZlbmNlKTsKK3ZvaWQgZHJtX3N5bmNvYmpfZnJlZShzdHJ1Y3Qga3Jl ZiAqa3JlZik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaCBi L2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKaW5kZXggNDJkOWY2NC4uOTZjNWM3OCAxMDA2NDQKLS0t IGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCkBA IC02NDgsNiArNjQ4LDcgQEAgc3RydWN0IGRybV9nZW1fb3BlbiB7CiAjZGVmaW5lIERSTV9DQVBf QURERkIyX01PRElGSUVSUwkweDEwCiAjZGVmaW5lIERSTV9DQVBfUEFHRV9GTElQX1RBUkdFVAkw eDExCiAjZGVmaW5lIERSTV9DQVBfQ1JUQ19JTl9WQkxBTktfRVZFTlQJMHgxMgorI2RlZmluZSBE Uk1fQ0FQX1NZTkNPQkoJCTB4MTMKIAogLyoqIERSTV9JT0NUTF9HRVRfQ0FQIGlvY3RsIGFyZ3Vt ZW50IHR5cGUgKi8KIHN0cnVjdCBkcm1fZ2V0X2NhcCB7CkBAIC02OTcsNiArNjk4LDI0IEBAIHN0 cnVjdCBkcm1fcHJpbWVfaGFuZGxlIHsKIAlfX3MzMiBmZDsKIH07CiAKK3N0cnVjdCBkcm1fc3lu Y29ial9jcmVhdGUgeworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBmbGFnczsKK307CisKK3N0cnVj dCBkcm1fc3luY29ial9kZXN0cm95IHsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgcGFkOworfTsK Kworc3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIGZs YWdzOworCisJX19zMzIgZmQ7CisJX191MzIgcGFkOworfTsKKwogI2lmIGRlZmluZWQoX19jcGx1 c3BsdXMpCiB9CiAjZW5kaWYKQEAgLTgxNSw2ICs4MzQsMTEgQEAgZXh0ZXJuICJDIiB7CiAjZGVm aW5lIERSTV9JT0NUTF9NT0RFX0NSRUFURVBST1BCTE9CCURSTV9JT1dSKDB4QkQsIHN0cnVjdCBk cm1fbW9kZV9jcmVhdGVfYmxvYikKICNkZWZpbmUgRFJNX0lPQ1RMX01PREVfREVTVFJPWVBST1BC TE9CCURSTV9JT1dSKDB4QkUsIHN0cnVjdCBkcm1fbW9kZV9kZXN0cm95X2Jsb2IpCiAKKyNkZWZp bmUgRFJNX0lPQ1RMX1NZTkNPQkpfQ1JFQVRFCURSTV9JT1dSKDB4QkYsIHN0cnVjdCBkcm1fc3lu Y29ial9jcmVhdGUpCisjZGVmaW5lIERSTV9JT0NUTF9TWU5DT0JKX0RFU1RST1kJRFJNX0lPV1Io MHhDMCwgc3RydWN0IGRybV9zeW5jb2JqX2Rlc3Ryb3kpCisjZGVmaW5lIERSTV9JT0NUTF9TWU5D T0JKX0hBTkRMRV9UT19GRAlEUk1fSU9XUigweEMxLCBzdHJ1Y3QgZHJtX3N5bmNvYmpfaGFuZGxl KQorI2RlZmluZSBEUk1fSU9DVExfU1lOQ09CSl9GRF9UT19IQU5ETEUJRFJNX0lPV1IoMHhDMiwg c3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSkKKwogLyoqCiAgKiBEZXZpY2Ugc3BlY2lmaWMgaW9j dGxzIHNob3VsZCBvbmx5IGJlIGluIHRoZWlyIHJlc3BlY3RpdmUgaGVhZGVycwogICogVGhlIGRl dmljZSBzcGVjaWZpYyBpb2N0bCByYW5nZSBpcyBmcm9tIDB4NDAgdG8gMHg5Zi4KLS0gCjIuOS40 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4 IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK