From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 1/5] drm: introduce sync objects Date: Wed, 26 Apr 2017 13:28:29 +1000 Message-ID: <20170426032833.1455-2-airlied@gmail.com> References: <20170426032833.1455-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170426032833.1455-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 IGZkIHRoYXQgY2FuIGJlCnBhc3NlcyBiZXR3ZWVuIHByb2Nlc3Nlcy4KClRPRE86IGRlZmluZSBz eW5jX2ZpbGUgaW50ZXJhY3Rpb24uCgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEFpcmxpZSA8YWlybGll ZEByZWRoYXQuY29tPgotLS0KIERvY3VtZW50YXRpb24vZ3B1L2RybS1pbnRlcm5hbHMucnN0IHwg ICAzICsKIERvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QgICAgICAgIHwgICA2ICsKIGRyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0v ZHJtX2ZvcHMuYyAgICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFs LmggICAgICB8ICAxMyArKwogZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jICAgICAgICAgfCAg MTIgKysKIGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jICAgICAgIHwgMzc0ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtUC5oICAgICAgICAg ICAgICAgICAgfCAgIDUgKwogaW5jbHVkZS9kcm0vZHJtX2Rydi5oICAgICAgICAgICAgICAgfCAg IDEgKwogaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCAgICAgICAgICAgfCAxMDQgKysrKysrKysr KwogaW5jbHVkZS91YXBpL2RybS9kcm0uaCAgICAgICAgICAgICAgfCAgMjUgKysrCiAxMSBmaWxl cyBjaGFuZ2VkLCA1NTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCiBjcmVhdGUgbW9kZSAxMDA2NDQg aW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1 L2RybS1pbnRlcm5hbHMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5yc3QK aW5kZXggZTM1OTIwZC4uMmVhM2JjZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJt LWludGVybmFscy5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5yc3QK QEAgLTk4LDYgKzk4LDkgQEAgRFJJVkVSX0FUT01JQwogICAgIGltcGxlbWVudCBhcHByb3ByaWF0 ZSBvYmotPmF0b21pY19nZXRfcHJvcGVydHkoKSB2ZnVuY3MgZm9yIGFueQogICAgIG1vZGVzZXQg b2JqZWN0cyB3aXRoIGRyaXZlciBzcGVjaWZpYyBwcm9wZXJ0aWVzLgogCitEUklWRVJfU1lOQ09C SgorICAgIERyaXZlciBzdXBwb3J0IGRybSBzeW5jIG9iamVjdHMuCisKIE1ham9yLCBNaW5vciBh bmQgUGF0Y2hsZXZlbAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKZGlmZiAtLWdpdCBh L0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QgYi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0tbW0u cnN0CmluZGV4IGY1NzYwYjEuLjI4YWViZTggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ3B1 L2RybS1tbS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdApAQCAtNDgzLDMg KzQ4Myw5IEBAIERSTSBDYWNoZSBIYW5kbGluZwogCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9n cHUvZHJtL2RybV9jYWNoZS5jCiAgICA6ZXhwb3J0OgorCitEUk0gU3luYyBPYmplY3RzCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2Ry bS9kcm1fc3luY29iai5jCisgICA6ZXhwb3J0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IDNlZTk1NzkuLmI1ZTU2 NWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dw dS9kcm0vTWFrZWZpbGUKQEAgLTE2LDcgKzE2LDcgQEAgZHJtLXkgICAgICAgOj0JZHJtX2F1dGgu byBkcm1fYnVmcy5vIGRybV9jYWNoZS5vIFwKIAkJZHJtX2ZyYW1lYnVmZmVyLm8gZHJtX2Nvbm5l Y3Rvci5vIGRybV9ibGVuZC5vIFwKIAkJZHJtX2VuY29kZXIubyBkcm1fbW9kZV9vYmplY3QubyBk cm1fcHJvcGVydHkubyBcCiAJCWRybV9wbGFuZS5vIGRybV9jb2xvcl9tZ210Lm8gZHJtX3ByaW50 Lm8gXAotCQlkcm1fZHVtYl9idWZmZXJzLm8gZHJtX21vZGVfY29uZmlnLm8KKwkJZHJtX2R1bWJf YnVmZmVycy5vIGRybV9tb2RlX2NvbmZpZy5vIGRybV9zeW5jb2JqLm8KIAogZHJtLSQoQ09ORklH X0RSTV9MSUJfUkFORE9NKSArPSBsaWIvZHJtX3JhbmRvbS5vCiBkcm0tJChDT05GSUdfRFJNX1ZN KSArPSBkcm1fdm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mb3BzLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYwppbmRleCBhZmRmNWIxLi45YTYxZGYyIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2ZvcHMuYwpAQCAtMjE5LDYgKzIxOSw5IEBAIHN0YXRpYyBpbnQgZHJtX29wZW5faGVscGVyKHN0 cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKIAlpZiAoZHJtX2NvcmVf Y2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKQogCQlkcm1fZ2VtX29wZW4oZGV2LCBwcml2 KTsKIAorCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQor CQlkcm1fc3luY29ial9vcGVuKHByaXYpOworCiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUo ZGV2LCBEUklWRVJfUFJJTUUpKQogCQlkcm1fcHJpbWVfaW5pdF9maWxlX3ByaXZhdGUoJnByaXYt PnByaW1lKTsKIApAQCAtMjY2LDYgKzI2OSw4IEBAIHN0YXRpYyBpbnQgZHJtX29wZW5faGVscGVy KHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKIG91dF9wcmltZV9k ZXN0cm95OgogCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkK IAkJZHJtX3ByaW1lX2Rlc3Ryb3lfZmlsZV9wcml2YXRlKCZwcml2LT5wcmltZSk7CisJaWYgKGRy bV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCWRybV9zeW5jb2Jq X3JlbGVhc2UocHJpdik7CiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf R0VNKSkKIAkJZHJtX2dlbV9yZWxlYXNlKGRldiwgcHJpdik7CiAJcHV0X3BpZChwcml2LT5waWQp OwpAQCAtNDAwLDYgKzQwNSw5IEBAIGludCBkcm1fcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAkJZHJtX3Byb3BlcnR5X2Rlc3Ryb3lfdXNlcl9ibG9icyhk ZXYsIGZpbGVfcHJpdik7CiAJfQogCisJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfU1lOQ09CSikpCisJCWRybV9zeW5jb2JqX3JlbGVhc2UoZmlsZV9wcml2KTsKKwogCWlm IChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCiAJCWRybV9nZW1fcmVs ZWFzZShkZXYsIGZpbGVfcHJpdik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1f aW50ZXJuYWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCBmMzczODhj Li40NGVmOTAzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCkBAIC0xNDIsNCArMTQyLDE3IEBAIHN0 YXRpYyBpbmxpbmUgaW50IGRybV9kZWJ1Z2ZzX2NydGNfY3JjX2FkZChzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiB7CiAJcmV0dXJuIDA7CiB9CisKICNlbmRpZgorCisvKiBkcm1fc3luY29iai5jICov Cit2b2lkIGRybV9zeW5jb2JqX29wZW4oc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOwor dm9pZCBkcm1fc3luY29ial9yZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsK K2ludCBkcm1fc3luY29ial9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKKwkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOworaW50IGRy bV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKKwkJCSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK2ludCBkcm1fc3lu Y29ial9oYW5kbGVfdG9fZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKKwkJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5bmNv YmpfZmRfdG9faGFuZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs CisJCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9pb2N0bC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCmlu ZGV4IGE3YzYxYzIuLjZkYTdhZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9j dGwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMKQEAgLTI0MCw2ICsyNDAsOSBA QCBzdGF0aWMgaW50IGRybV9nZXRjYXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwgc3RydWN0IGRybV9maWxlICpmaWxlXwogCQlyZXEtPnZhbHVlIHw9IGRldi0+ZHJpdmVyLT5w cmltZV9mZF90b19oYW5kbGUgPyBEUk1fUFJJTUVfQ0FQX0lNUE9SVCA6IDA7CiAJCXJlcS0+dmFs dWUgfD0gZGV2LT5kcml2ZXItPnByaW1lX2hhbmRsZV90b19mZCA/IERSTV9QUklNRV9DQVBfRVhQ T1JUIDogMDsKIAkJcmV0dXJuIDA7CisJY2FzZSBEUk1fQ0FQX1NZTkNPQko6CisJCXJlcS0+dmFs dWUgPSBkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopOworCQlyZXR1 cm4gMDsKIAl9CiAKIAkvKiBPdGhlciBjYXBzIG9ubHkgd29yayB3aXRoIEtNUyBkcml2ZXJzICov CkBAIC02NDEsNiArNjQ0LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2Mg ZHJtX2lvY3Rsc1tdID0gewogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfQVRPTUlDLCBk cm1fbW9kZV9hdG9taWNfaW9jdGwsIERSTV9NQVNURVJ8RFJNX0NPTlRST0xfQUxMT1d8RFJNX1VO TE9DS0VEKSwKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0NSRUFURVBST1BCTE9CLCBk cm1fbW9kZV9jcmVhdGVibG9iX2lvY3RsLCBEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQp LAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfREVTVFJPWVBST1BCTE9CLCBkcm1fbW9k ZV9kZXN0cm95YmxvYl9pb2N0bCwgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKKwor CURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfQ1JFQVRFLCBkcm1fc3luY29ial9jcmVh dGVfaW9jdGwsCisJCSAgICAgIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1f SU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0RFU1RST1ksIGRybV9zeW5jb2JqX2Rlc3Ryb3lf aW9jdGwsCisJCSAgICAgIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9D VExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0hBTkRMRV9UT19GRCwgZHJtX3N5bmNvYmpfaGFuZGxl X3RvX2ZkX2lvY3RsLAorCQkgICAgICBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCisJ RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9GRF9UT19IQU5ETEUsIGRybV9zeW5jb2Jq X2ZkX3RvX2hhbmRsZV9pb2N0bCwKKwkJICAgICAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxM T1cpLAogfTsKIAogI2RlZmluZSBEUk1fQ09SRV9JT0NUTF9DT1VOVAlBUlJBWV9TSVpFKCBkcm1f aW9jdGxzICkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJp dmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZTZhOTlkNAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3lu Y29iai5jCkBAIC0wLDAgKzEsMzc0IEBACisvKgorICogQ29weXJpZ2h0IDIwMTcgUmVkIEhhdAor ICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxp c2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhl IFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNs dWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29m dHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQg V0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBC VVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICog RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElO IE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRo b3JzOgorICoKKyAqLworCisvKioKKyAqIERPQzogT3ZlcnZpZXcKKyAqCisgKiBEUk0gc3luY2hy b25pc2F0aW9uIG9iamVjdHMgKHN5bmNvYmopIGFyZSBhIHBlcnNpc3RlbnQgb2JqZWN0cywKKyAq IHRoYXQgY29udGFpbiBhbiBvcHRpb25hbCBmZW5jZS4gVGhlIGZlbmNlIGNhbiBiZSB1cGRhdGVk IHdpdGggYSBuZXcKKyAqIGZlbmNlLCBvciBiZSBOVUxMLgorICoKKyAqIHN5bmNvYmoncyBjYW4g YmUgZXhwb3J0IHRvIGZkJ3MgYW5kIGJhY2ssIHRoZXNlIGZkJ3MgYXJlIG9wYXF1ZSBhbmQKKyAq IGhhdmUgbm8gb3RoZXIgdXNlIGNhc2UsIGV4Y2VwdCBwYXNzaW5nIHRoZSBzeW5jb2JqIGJldHdl ZW4gcHJvY2Vzc2VzLgorICoKKyAqIFRPRE86IHN5bmNfZmlsZSBpbnRlcmFjdGlvbnMsIHdhaXRp bmcKKyAqCisgKiBUaGVpciBwcmltYXJ5IHVzZS1jYXNlIGlzIHRvIGltcGxlbWVudCBWdWxrYW4g ZmVuY2VzIGFuZCBzZW1hcGhvcmVzLgorICoKKyAqIHN5bmNvYmogaGF2ZSBhIGtyZWYgcmVmZXJl bmNlIGNvdW50LCBidXQgYWxzbyBoYXZlIGFuIG9wdGlvbmFsIGZpbGUuCisgKiBUaGUgZmlsZSBp cyBvbmx5IGNyZWF0ZWQgb25jZSB0aGUgc3luY29iaiBpcyBleHBvcnRlZC4KKyAqIFRoZSBmaWxl IHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBrcmVmLgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgorI2luY2x1ZGUgPGxpbnV4L2ZpbGUuaD4KKyNpbmNsdWRlIDxsaW51eC9mcy5oPgorI2lu Y2x1ZGUgPGxpbnV4L2Fub25faW5vZGVzLmg+CisKKyNpbmNsdWRlICJkcm1faW50ZXJuYWwuaCIK KyNpbmNsdWRlIDxkcm0vZHJtX3N5bmNvYmouaD4KKworc3RhdGljIHN0cnVjdCBkcm1fc3luY29i aiAqZHJtX3N5bmNvYmpfZ2V0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJCQkg ICB1MzIgaGFuZGxlKQoreworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajsKKworCXNwaW5f bG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworCisJLyogQ2hlY2sgaWYg d2UgY3VycmVudGx5IGhhdmUgYSByZWZlcmVuY2Ugb24gdGhlIG9iamVjdCAqLworCXN5bmNvYmog PSBpZHJfZmluZCgmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkciwgaGFuZGxlKTsKKwlpZiAoc3lu Y29iaikKKwkJZHJtX3N5bmNvYmpfcmVmZXJlbmNlKHN5bmNvYmopOworCisJc3Bpbl91bmxvY2so JmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKworCXJldHVybiBzeW5jb2JqOwor fQorCisvKioKKyAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSBsb29rdXAgYW5kIHJlcGxh Y2UgZmVuY2UgaW4gYSBzeW5jIG9iamVjdC4KKyAqIEBmaWxlX3ByaXZhdGUgLSBkcm0gZmlsZSBw cml2YXRlIHBvaW50ZXIuCisgKiBAaGFuZGxlIC0gc3luY29iaiBoYW5kbGUgdG8gbG9va3VwCisg KiBAZmVuY2UgLSBmZW5jZSB0byBpbnN0YWxsIGluIHN5bmMgZmlsZS4KKyAqIFJldHVybnM6Cisg KiAwIG9uIHN1Y2Nlc3MsIG9yIC1FSU5WQUwgd2hlbiB0aGUgaGFuZGxlIGRvZXNuJ3QgcG9pbnQg YXQgYSB2YWxpZCBzZW0gZmlsZS4KKyAqCisgKiBUaGlzIGxvb2tzIHVwIGEgc3luYyBvYmplY3Qg YW5kIHJlcGxhY2VzIHRoZSBmZW5jZSBvbiBpdCwgZnJlZWluZworICogdGhlIG9sZCBvbmUuCisg Ki8KK2ludCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2YXRlLAorCQkJICAgICAgdTMyIGhhbmRsZSwKKwkJCSAgICAgIHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlKQoreworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9zeW5jb2JqX2dl dChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7CisJc3RydWN0IGRtYV9mZW5jZSAqb2xkX2ZlbmNlID0g TlVMTDsKKworCWlmICghc3luY29iaikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoZmVuY2Up CisJCWRtYV9mZW5jZV9nZXQoZmVuY2UpOworCW9sZF9mZW5jZSA9IHhjaGcoJnN5bmNvYmotPmZl bmNlLCBmZW5jZSk7CisKKwlkbWFfZmVuY2VfcHV0KG9sZF9mZW5jZSk7CisJZHJtX3N5bmNvYmpf dW5yZWZlcmVuY2Uoc3luY29iaik7CisKKwlyZXR1cm4gMDsKK30KK0VYUE9SVF9TWU1CT0woZHJt X3N5bmNvYmpfcmVwbGFjZV9mZW5jZSk7CisKK2ludCBkcm1fc3luY29ial9mZW5jZV9nZXQoc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkgIHUzMiBoYW5kbGUsCisJCQkgIHN0cnVj dCBkbWFfZmVuY2UgKipmZW5jZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBk cm1fc3luY29ial9nZXQoZmlsZV9wcml2YXRlLCBoYW5kbGUpOworCWludCByZXQgPSAwOworCisJ aWYgKCFzeW5jb2JqKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCSpmZW5jZSA9IGRtYV9mZW5jZV9n ZXQoc3luY29iai0+ZmVuY2UpOworCWlmICghKmZlbmNlKSB7CisJCXJldCA9IC1FSU5WQUw7CisJ fQorCWRybV9zeW5jb2JqX3VucmVmZXJlbmNlKHN5bmNvYmopOworCXJldHVybiByZXQ7Cit9CitF WFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2ZlbmNlX2dldCk7CisKK3ZvaWQgZHJtX3N5bmNvYmpf ZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmog PSBjb250YWluZXJfb2Yoa3JlZiwKKwkJCQkJCSAgIHN0cnVjdCBkcm1fc3luY29iaiwKKwkJCQkJ CSAgIHJlZmNvdW50KTsKKwlrZnJlZShzeW5jb2JqKTsKK30KKworc3RhdGljIGludCBkcm1fc3lu Y29ial9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkgICAgICB1MzIg KmhhbmRsZSkKK3sKKwlpbnQgcmV0OworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajsKKwor CXN5bmNvYmogPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgZHJtX3N5bmNvYmopLCBHRlBfS0VSTkVM KTsKKwlpZiAoIXN5bmNvYmopCisJCXJldHVybiAtRU5PTUVNOworCisJbXV0ZXhfaW5pdCgmc3lu Y29iai0+ZmlsZV9sb2NrKTsKKwlrcmVmX2luaXQoJnN5bmNvYmotPnJlZmNvdW50KTsKKworCWlk cl9wcmVsb2FkKEdGUF9LRVJORUwpOworCXNwaW5fbG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2Jq X3RhYmxlX2xvY2spOworCXJldCA9IGlkcl9hbGxvYygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lk ciwgc3luY29iaiwgMSwgMCwgR0ZQX05PV0FJVCk7CisJc3Bpbl91bmxvY2soJmZpbGVfcHJpdmF0 ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKworCWlkcl9wcmVsb2FkX2VuZCgpOworCisJaWYgKHJl dCA8IDApIHsKKwkJZHJtX3N5bmNvYmpfdW5yZWZlcmVuY2Uoc3luY29iaik7CisJCXJldHVybiBy ZXQ7CisJfQorCisJKmhhbmRsZSA9IHJldDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBk cm1fc3luY29ial9kZXN0cm95KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJICAg ICAgIHUzMiBoYW5kbGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqOworCisJc3Bp bl9sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisJc3luY29iaiA9IGlk cl9yZW1vdmUoJmZpbGVfcHJpdmF0ZS0+c3luY29ial9pZHIsIGhhbmRsZSk7CisJc3Bpbl91bmxv Y2soJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKworCWlmICghc3luY29iaikK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlkcm1fc3luY29ial91bnJlZmVyZW5jZShzeW5jb2JqKTsK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkcm1fc3luY29ial9maWxlX3JlbGVhc2Uoc3Ry dWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9zeW5j b2JqICpzeW5jb2JqID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCisJZHJtX3N5bmNvYmpfdW5yZWZl cmVuY2Uoc3luY29iaik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIGRybV9zeW5jb2JqX2ZpbGVfZm9wcyA9IHsKKwkucmVsZWFzZSA9IGRybV9z eW5jb2JqX2ZpbGVfcmVsZWFzZSwKK307CisKK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfYWxsb2Nf ZmlsZV9sb2NrZWQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQoreworCXN0cnVjdCBmaWxl ICpmaWxlID0gYW5vbl9pbm9kZV9nZXRmaWxlKCJzeW5jb2JqX2ZpbGUiLAorCQkJCQkgICAgICAg JmRybV9zeW5jb2JqX2ZpbGVfZm9wcywKKwkJCQkJICAgICAgIHN5bmNvYmosIDApOworCWlmIChJ U19FUlIoZmlsZSkpCisJCXJldHVybiBQVFJfRVJSKGZpbGUpOworCisJLyogdGhlIGZpbGUgaG9s ZHMgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCAqLworCWRybV9zeW5jb2JqX3JlZmVyZW5jZShz eW5jb2JqKTsKKwlzeW5jb2JqLT5maWxlID0gZmlsZTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGRybV9zeW5jb2JqX2hhbmRsZV90b19mZChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJp dmF0ZSwKKwkJCQkgICAgdTMyIGhhbmRsZSwgaW50ICpwX2ZkKQoreworCXN0cnVjdCBkcm1fc3lu Y29iaiAqc3luY29iaiA9IGRybV9zeW5jb2JqX2dldChmaWxlX3ByaXZhdGUsIGhhbmRsZSk7CisJ aW50IHJldDsKKwlpbnQgZmQ7CisKKwlpZiAoIXN5bmNvYmopCisJCXJldHVybiAtRUlOVkFMOwor CisJZmQgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7CisJaWYgKGZkIDwgMCkgewor CQlkcm1fc3luY29ial91bnJlZmVyZW5jZShzeW5jb2JqKTsKKwkJcmV0dXJuIGZkOworCX0KKwor CW11dGV4X2xvY2soJnN5bmNvYmotPmZpbGVfbG9jayk7CisJaWYgKCFzeW5jb2JqLT5maWxlKSB7 CisJCXJldCA9IGRybV9zeW5jb2JqX2FsbG9jX2ZpbGVfbG9ja2VkKHN5bmNvYmopOworCQlpZiAo cmV0KQorCQkJZ290byBvdXRfdW5sb2NrOworCX0KKwlmZF9pbnN0YWxsKGZkLCBzeW5jb2JqLT5m aWxlKTsKKwltdXRleF91bmxvY2soJnN5bmNvYmotPmZpbGVfbG9jayk7CisJZHJtX3N5bmNvYmpf dW5yZWZlcmVuY2Uoc3luY29iaik7CisJKnBfZmQgPSBmZDsKKwlyZXR1cm4gMDsKK291dF91bmxv Y2s6CisJcHV0X3VudXNlZF9mZChmZCk7CisJbXV0ZXhfdW5sb2NrKCZzeW5jb2JqLT5maWxlX2xv Y2spOworCWRybV9zeW5jb2JqX3VucmVmZXJlbmNlKHN5bmNvYmopOworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX3N5bmNvYmogKmRybV9zeW5jb2JqX2ZkZ2V0KGludCBmZCkK K3sKKwlzdHJ1Y3QgZmlsZSAqZmlsZSA9IGZnZXQoZmQpOworCisJaWYgKCFmaWxlKQorCQlyZXR1 cm4gTlVMTDsKKwlpZiAoZmlsZS0+Zl9vcCAhPSAmZHJtX3N5bmNvYmpfZmlsZV9mb3BzKQorCQln b3RvIGVycjsKKworCXJldHVybiBmaWxlLT5wcml2YXRlX2RhdGE7CitlcnI6CisJZnB1dChmaWxl KTsKKwlyZXR1cm4gTlVMTDsKK307CisKK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfZmRfdG9faGFu ZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJCSAgICBpbnQgZmQsIHUzMiAq aGFuZGxlKQoreworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9zeW5jb2JqX2Zk Z2V0KGZkKTsKKwlpbnQgcmV0OworCisJaWYgKCFzeW5jb2JqKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCS8qIHRha2UgYSByZWZlcmVuY2UgdG8gcHV0IGluIHRoZSBpZHIgKi8KKwlkcm1fc3luY29i al9yZWZlcmVuY2Uoc3luY29iaik7CisKKwlpZHJfcHJlbG9hZChHRlBfS0VSTkVMKTsKKwlzcGlu X2xvY2soJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKwlyZXQgPSBpZHJfYWxs b2MoJmZpbGVfcHJpdmF0ZS0+c3luY29ial9pZHIsIHN5bmNvYmosIDEsIDAsIEdGUF9OT1dBSVQp OworCXNwaW5fdW5sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisJaWRy X3ByZWxvYWRfZW5kKCk7CisKKwlpZiAocmV0IDwgMCkgeworCQlmcHV0KHN5bmNvYmotPmZpbGUp OworCQlyZXR1cm4gcmV0OworCX0KKwkqaGFuZGxlID0gcmV0OworCXJldHVybiAwOworfQorCisv KioKKyAqIGRybV9zeW5jb2JqX29wZW4gLSBpbml0YWxpemVzIHN5bmNvYmogZmlsZS1wcml2YXRl IHN0cnVjdHVyZXMgYXQgZGV2bm9kZSBvcGVuIHRpbWUKKyAqIEBkZXY6IGRybV9kZXZpY2Ugd2hp Y2ggaXMgYmVpbmcgb3BlbmVkIGJ5IHVzZXJzcGFjZQorICogQGZpbGVfcHJpdmF0ZTogZHJtIGZp bGUtcHJpdmF0ZSBzdHJ1Y3R1cmUgdG8gc2V0IHVwCisgKgorICogQ2FsbGVkIGF0IGRldmljZSBv cGVuIHRpbWUsIHNldHMgdXAgdGhlIHN0cnVjdHVyZSBmb3IgaGFuZGxpbmcgcmVmY291bnRpbmcK KyAqIG9mIHN5bmMgb2JqZWN0cy4KKyAqLwordm9pZAorZHJtX3N5bmNvYmpfb3BlbihzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSkKK3sKKwlpZHJfaW5pdCgmZmlsZV9wcml2YXRlLT5zeW5j b2JqX2lkcik7CisJc3Bpbl9sb2NrX2luaXQoJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9s b2NrKTsKK30KKworc3RhdGljIGludAorZHJtX3N5bmNvYmpfcmVsZWFzZV9oYW5kbGUoaW50IGlk LCB2b2lkICpwdHIsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2Jq ID0gcHRyOworCisJZHJtX3N5bmNvYmpfdW5yZWZlcmVuY2Uoc3luY29iaik7CisJcmV0dXJuIDA7 Cit9CisKKy8qKgorICogZHJtX3N5bmNvYmpfcmVsZWFzZSAtIHJlbGVhc2UgZmlsZS1wcml2YXRl IHN5bmMgb2JqZWN0IHJlc291cmNlcworICogQGRldjogZHJtX2RldmljZSB3aGljaCBpcyBiZWlu ZyBjbG9zZWQgYnkgdXNlcnNwYWNlCisgKiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZS1wcml2YXRl IHN0cnVjdHVyZSB0byBjbGVhbiB1cAorICoKKyAqIENhbGxlZCBhdCBjbG9zZSB0aW1lIHdoZW4g dGhlIGZpbHAgaXMgZ29pbmcgYXdheS4KKyAqCisgKiBSZWxlYXNlcyBhbnkgcmVtYWluaW5nIHJl ZmVyZW5jZXMgb24gb2JqZWN0cyBieSB0aGlzIGZpbHAuCisgKi8KK3ZvaWQKK2RybV9zeW5jb2Jq X3JlbGVhc2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJaWRyX2Zvcl9lYWNo KCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRyLAorCQkgICAgICZkcm1fc3luY29ial9yZWxlYXNl X2hhbmRsZSwgZmlsZV9wcml2YXRlKTsKKwlpZHJfZGVzdHJveSgmZmlsZV9wcml2YXRlLT5zeW5j b2JqX2lkcik7Cit9CisKK2ludAorZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZh dGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX2NyZWF0ZSAqYXJncyA9IGRhdGE7CisKKwlpZiAo IWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVybiAt RU5PREVWOworCisJLyogbm8gdmFsaWQgZmxhZ3MgeWV0ICovCisJaWYgKGFyZ3MtPmZsYWdzKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiBkcm1fc3luY29ial9jcmVhdGUoZmlsZV9wcml2 YXRlLAorCQkJCSAgJmFyZ3MtPmhhbmRsZSk7Cit9CisKK2ludAorZHJtX3N5bmNvYmpfZGVzdHJv eV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfZGVzdHJveSAq YXJncyA9IGRhdGE7CisKKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf U1lOQ09CSikpCisJCXJldHVybiAtRU5PREVWOworCisJLyogbWFrZSBzdXJlIHBhZGRpbmcgaXMg ZW1wdHkgKi8KKwlpZiAoYXJncy0+cGFkKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlyZXR1cm4gZHJt X3N5bmNvYmpfZGVzdHJveShmaWxlX3ByaXZhdGUsIGFyZ3MtPmhhbmRsZSk7Cit9CisKK2ludAor ZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCisJCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3Ry dWN0IGRybV9zeW5jb2JqX2hhbmRsZSAqYXJncyA9IGRhdGE7CisKKwlpZiAoIWRybV9jb3JlX2No ZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVybiAtRU5PREVWOworCisJ cmV0dXJuIGRybV9zeW5jb2JqX2hhbmRsZV90b19mZChmaWxlX3ByaXZhdGUsIGFyZ3MtPmhhbmRs ZSwKKwkJCQkJJmFyZ3MtPmZkKTsKK30KKworaW50Citkcm1fc3luY29ial9mZF90b19oYW5kbGVf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkgICBzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfaGFuZGxlICph cmdzID0gZGF0YTsKKworCWlmICghZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9T WU5DT0JKKSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXR1cm4gZHJtX3N5bmNvYmpfZmRfdG9f aGFuZGxlKGZpbGVfcHJpdmF0ZSwgYXJncy0+ZmQsCisJCQkJCSZhcmdzLT5oYW5kbGUpOworfQpk aWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtUC5oIGIvaW5jbHVkZS9kcm0vZHJtUC5oCmluZGV4 IDYxMDVjMDUuLjFkNDhmNmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybVAuaAorKysgYi9p bmNsdWRlL2RybS9kcm1QLmgKQEAgLTQwNSw2ICs0MDUsMTEgQEAgc3RydWN0IGRybV9maWxlIHsK IAkvKiogTG9jayBmb3Igc3luY2hyb25pemF0aW9uIG9mIGFjY2VzcyB0byBvYmplY3RfaWRyLiAq LwogCXNwaW5sb2NrX3QgdGFibGVfbG9jazsKIAorCS8qKiBNYXBwaW5nIG9mIHN5bmMgb2JqZWN0 IGhhbmRsZXMgdG8gb2JqZWN0IHBvaW50ZXJzLiAqLworCXN0cnVjdCBpZHIgc3luY29ial9pZHI7 CisJLyoqIExvY2sgZm9yIHN5bmNocm9uaXphdGlvbiBvZiBhY2Nlc3MgdG8gc3luY29ial9pZHIu ICovCisJc3BpbmxvY2tfdCBzeW5jb2JqX3RhYmxlX2xvY2s7CisKIAlzdHJ1Y3QgZmlsZSAqZmls cDsKIAl2b2lkICpkcml2ZXJfcHJpdjsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Ry di5oIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCmluZGV4IDU2OTlmNDIuLjQ4ZmYwNmIgMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9kcnYuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZHJ2LmgK QEAgLTUzLDYgKzUzLDcgQEAgc3RydWN0IGRybV9tb2RlX2NyZWF0ZV9kdW1iOwogI2RlZmluZSBE UklWRVJfUkVOREVSCQkJMHg4MDAwCiAjZGVmaW5lIERSSVZFUl9BVE9NSUMJCQkweDEwMDAwCiAj ZGVmaW5lIERSSVZFUl9LTVNfTEVHQUNZX0NPTlRFWFQJMHgyMDAwMAorI2RlZmluZSBEUklWRVJf U1lOQ09CSiAgICAgICAgICAgICAgICAgIDB4NDAwMDAKIAogLyoqCiAgKiBzdHJ1Y3QgZHJtX2Ry aXZlciAtIERSTSBkcml2ZXIgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1f c3luY29iai5oIGIvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zY2M0MmI3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9kcm0v ZHJtX3N5bmNvYmouaApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3 IFJlZCBIYXQKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAq IHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3 aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1l cmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29w aWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisg KiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hh bGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0 aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJ TkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ TElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZU V0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisg KgorICogQXV0aG9yczoKKyAqCisgKi8KKyNpZm5kZWYgX19EUk1fU1lOQ09CSl9IX18KKyNkZWZp bmUgX19EUk1fU1lOQ09CSl9IX18KKworI2luY2x1ZGUgImxpbnV4L2RtYS1mZW5jZS5oIgorCisv KioKKyAqIHN0cnVjdCBkcm1fc3luY29iaiAtIHN5bmMgb2JqZWN0LgorICoKKyAqIFRoaXMgc3Ry dWN0dXJlIGRlZmluZXMgYSBnZW5lcmljIHN5bmMgb2JqZWN0IHdoaWNoIHdyYXBzIGEgZG1hIGZl bmNlLgorICovCitzdHJ1Y3QgZHJtX3N5bmNvYmogeworCS8qKgorCSAqIEByZWZjb3VudDoKKwkg KgorCSAqIFJlZmVyZW5jZSBjb3VudCBvZiB0aGlzIG9iamVjdC4KKwkgKi8KKwlzdHJ1Y3Qga3Jl ZiByZWZjb3VudDsKKwkvKioKKwkgKiBAZmVuY2U6CisJICogTlVMTCBvciBhIHBvaW50ZXIgdG8g dGhlIGZlbmNlIGJvdW5kIHRvIHRoaXMgb2JqZWN0LgorCSAqLworCXN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlOworCS8qKgorCSAqIEBmaWxlX2xvY2sKKwkgKiBtdXRleCBwcm90ZWN0aW5nIHRoZSBz dHJ1Y3QgZmlsZSBwb2ludGVyLgorCSAqLworCXN0cnVjdCBtdXRleCBmaWxlX2xvY2s7CisJLyoq CisJICogQGZpbGUKKwkgKiBhIGZpbGUgYmFja2luZyBmb3IgdGhpcyBzeW5jb2JqLgorCSAqLwor CXN0cnVjdCBmaWxlICpmaWxlOworfTsKKwordm9pZCBkcm1fc3luY29ial9mcmVlKHN0cnVjdCBr cmVmICprcmVmKTsKKworLyoqCisgKiBkcm1fZ2VtX29iamVjdF9yZWZlcmVuY2UgLSBhY3F1aXJl IGEgR0VNIEJPIHJlZmVyZW5jZQorICogQG9iajogR0VNIGJ1ZmZlciBvYmplY3QKKyAqCisgKiBU aGlzIGFjcXVpcmVzIGFkZGl0aW9uYWwgcmVmZXJlbmNlIHRvIEBvYmouIEl0IGlzIGlsbGVnYWwg dG8gY2FsbCB0aGlzCisgKiB3aXRob3V0IGFscmVhZHkgaG9sZGluZyBhIHJlZmVyZW5jZS4gTm8g bG9ja3MgcmVxdWlyZWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZHJtX3N5bmNvYmpfcmVm ZXJlbmNlKHN0cnVjdCBkcm1fc3luY29iaiAqb2JqKQoreworCWtyZWZfZ2V0KCZvYmotPnJlZmNv dW50KTsKK30KKworLyoqCisgKiBfX2RybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlIC0gcmF3IGZ1 bmN0aW9uIHRvIHJlbGVhc2UgYSBHRU0gQk8gcmVmZXJlbmNlCisgKiBAb2JqOiBHRU0gYnVmZmVy IG9iamVjdAorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgbWVhbnQgdG8gYmUgdXNlZCBieSBkcml2 ZXJzIHdoaWNoIGFyZSBub3QgZW5jdW1iZXJlZCB3aXRoCisgKiAmZHJtX2RldmljZS5zdHJ1Y3Rf bXV0ZXggbGVnYWN5IGxvY2tpbmcgYW5kIHdoaWNoIGFyZSB1c2luZyB0aGUKKyAqIGdlbV9mcmVl X29iamVjdF91bmxvY2tlZCBjYWxsYmFjay4gSXQgYXZvaWRzIGFsbCB0aGUgbG9ja2luZyBjaGVj a3MgYW5kCisgKiBsb2NraW5nIG92ZXJoZWFkIG9mIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNl KCkgYW5kCisgKiBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZCgpLgorICoKKyAq IERyaXZlcnMgc2hvdWxkIG5ldmVyIGNhbGwgdGhpcyBkaXJlY3RseSBpbiB0aGVpciBjb2RlLiBJ bnN0ZWFkIHRoZXkgc2hvdWxkCisgKiB3cmFwIGl0IHVwIGludG8gYSBgYGRyaXZlcl9nZW1fb2Jq ZWN0X3VucmVmZXJlbmNlKHN0cnVjdCBkcml2ZXJfZ2VtX29iamVjdAorICogKm9iailgYCB3cmFw cGVyIGZ1bmN0aW9uLCBhbmQgdXNlIHRoYXQuIFNoYXJlZCBjb2RlIHNob3VsZCBuZXZlciBjYWxs IHRoaXMsIHRvCisgKiBhdm9pZCBicmVha2luZyBkcml2ZXJzIGJ5IGFjY2lkZW50IHdoaWNoIHN0 aWxsIGRlcGVuZCB1cG9uCisgKiAmZHJtX2RldmljZS5zdHJ1Y3RfbXV0ZXggbG9ja2luZy4KKyAq Lworc3RhdGljIGlubGluZSB2b2lkCitkcm1fc3luY29ial91bnJlZmVyZW5jZShzdHJ1Y3QgZHJt X3N5bmNvYmogKm9iaikKK3sKKwlrcmVmX3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX3N5bmNvYmpf ZnJlZSk7Cit9CisKK2ludCBkcm1fc3luY29ial9mZW5jZV9nZXQoc3RydWN0IGRybV9maWxlICpm aWxlX3ByaXZhdGUsCisJCQkgIHUzMiBoYW5kbGUsCisJCQkgIHN0cnVjdCBkbWFfZmVuY2UgKipm ZW5jZSk7CitpbnQgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGVfcHJpdmF0ZSwKKwkJCSAgICAgIHUzMiBoYW5kbGUsCisJCQkgICAgICBzdHJ1Y3QgZG1hX2Zl bmNlICpmZW5jZSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9kcm0u aCBiL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKaW5kZXggYjJjNTI4NC4uZGQwYjk5YyAxMDA2NDQK LS0tIGEvaW5jbHVkZS91YXBpL2RybS9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybS5o CkBAIC02NDcsNiArNjQ3LDcgQEAgc3RydWN0IGRybV9nZW1fb3BlbiB7CiAjZGVmaW5lIERSTV9D QVBfQ1VSU09SX0hFSUdIVAkJMHg5CiAjZGVmaW5lIERSTV9DQVBfQURERkIyX01PRElGSUVSUwkw eDEwCiAjZGVmaW5lIERSTV9DQVBfUEFHRV9GTElQX1RBUkdFVAkweDExCisjZGVmaW5lIERSTV9D QVBfU1lOQ09CSgkJMHgxMwogCiAvKiogRFJNX0lPQ1RMX0dFVF9DQVAgaW9jdGwgYXJndW1lbnQg dHlwZSAqLwogc3RydWN0IGRybV9nZXRfY2FwIHsKQEAgLTY5Niw2ICs2OTcsMjUgQEAgc3RydWN0 IGRybV9wcmltZV9oYW5kbGUgewogCV9fczMyIGZkOwogfTsKIAorc3RydWN0IGRybV9zeW5jb2Jq X2NyZWF0ZSB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIGZsYWdzOworfTsKKworc3RydWN0IGRy bV9zeW5jb2JqX2Rlc3Ryb3kgeworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBwYWQ7Cit9OworCitz dHJ1Y3QgZHJtX3N5bmNvYmpfaGFuZGxlIHsKKwlfX3UzMiBoYW5kbGU7CisJLyoqIEZsYWdzLi4g b25seSBhcHBsaWNhYmxlIGZvciBoYW5kbGUtPmZkICovCisJX191MzIgZmxhZ3M7CisKKwlfX3Mz MiBmZDsKKwlfX3UzMiBwYWQ7Cit9OworCiAjaWYgZGVmaW5lZChfX2NwbHVzcGx1cykKIH0KICNl bmRpZgpAQCAtODE0LDYgKzgzNCwxMSBAQCBleHRlcm4gIkMiIHsKICNkZWZpbmUgRFJNX0lPQ1RM X01PREVfQ1JFQVRFUFJPUEJMT0IJRFJNX0lPV1IoMHhCRCwgc3RydWN0IGRybV9tb2RlX2NyZWF0 ZV9ibG9iKQogI2RlZmluZSBEUk1fSU9DVExfTU9ERV9ERVNUUk9ZUFJPUEJMT0IJRFJNX0lPV1Io MHhCRSwgc3RydWN0IGRybV9tb2RlX2Rlc3Ryb3lfYmxvYikKIAorI2RlZmluZSBEUk1fSU9DVExf U1lOQ09CSl9DUkVBVEUJRFJNX0lPV1IoMHhCRiwgc3RydWN0IGRybV9zeW5jb2JqX2NyZWF0ZSkK KyNkZWZpbmUgRFJNX0lPQ1RMX1NZTkNPQkpfREVTVFJPWQlEUk1fSU9XUigweEMwLCBzdHJ1Y3Qg ZHJtX3N5bmNvYmpfZGVzdHJveSkKKyNkZWZpbmUgRFJNX0lPQ1RMX1NZTkNPQkpfSEFORExFX1RP X0ZECURSTV9JT1dSKDB4QzEsIHN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUpCisjZGVmaW5lIERS TV9JT0NUTF9TWU5DT0JKX0ZEX1RPX0hBTkRMRQlEUk1fSU9XUigweEMyLCBzdHJ1Y3QgZHJtX3N5 bmNvYmpfaGFuZGxlKQorCiAvKioKICAqIERldmljZSBzcGVjaWZpYyBpb2N0bHMgc2hvdWxkIG9u bHkgYmUgaW4gdGhlaXIgcmVzcGVjdGl2ZSBoZWFkZXJzCiAgKiBUaGUgZGV2aWNlIHNwZWNpZmlj IGlvY3RsIHJhbmdlIGlzIGZyb20gMHg0MCB0byAweDlmLgotLSAKMi45LjMKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0 CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=