From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 1/5] drm: introduce sync objects (v3) Date: Mon, 29 May 2017 17:30:29 +1000 Message-ID: <20170529073033.10903-2-airlied@gmail.com> References: <20170529073033.10903-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170529073033.10903-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: dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClN5bmMgb2JqZWN0cyBhcmUg bmV3IHRvcGxldmVsIGRybSBvYmplY3QsIHRoYXQgY29udGFpbiBhCnBvaW50ZXIgdG8gYSBmZW5j ZS4gVGhpcyBmZW5jZSBjYW4gYmUgdXBkYXRlZCB2aWEgY29tbWFuZApzdWJtaXNzaW9uIGlvY3Rs cyB2aWEgZHJpdmVycy4KClRoZXJlIGlzIGFsc28gYSBnZW5lcmljIHdhaXQgb2JqIEFQSSBtb2Rl bGxlZCBvbiB0aGUgdnVsa2FuCndhaXQgQVBJICh3aXRoIGNvZGUgbW9kZWxsZWQgb24gc29tZSBh bWRncHUgY29kZSkuCgpUaGVzZSBvYmplY3RzIGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gb3BhcXVl IGZkIHRoYXQgY2FuIGJlCnBhc3NlcyBiZXR3ZWVuIHByb2Nlc3Nlcy4KCnYyOiByZW5hbWUgcmVm ZXJlbmNlL3VucmVmZXJlbmNlIHRvIHB1dC9nZXQgKENocmlzKQpmaXggbGVha2VkIHJlZmVyZW5j ZSAoRGF2aWQgWmhvdSkKZHJvcCBtdXRleCBpbiBmYXZvdXIgb2YgY21weGNoZyAoQ2hyaXMpCnYz OiBjbGVhbnVwcyBmcm9tIGRhbnZldCwgcmViYXNlIG9uIGRybV9mb3BzIHJlbmFtZQpjaGVjayBm ZF9mbGFncyBpcyAwIGluIGlvY3Rscy4KClJldmlld2VkLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVs QGNocm9taXVtLm9yZz4KU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0 LmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdCB8ICAgMyArCiBE b2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0ICAgICAgICB8ICAxMiArKwogZHJpdmVycy9ncHUv ZHJtL01ha2VmaWxlICAgICAgICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmls ZS5jICAgICAgICAgIHwgICA4ICsKIGRyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaCAgICAg IHwgIDEzICsrCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMgICAgICAgICB8ICAxMiArKwog ZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgICAgICAgfCAzNzcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiBpbmNsdWRlL2RybS9kcm1QLmggICAgICAgICAgICAgICAg ICB8ICAgMSAtCiBpbmNsdWRlL2RybS9kcm1fZHJ2LmggICAgICAgICAgICAgICB8ICAgMSArCiBp bmNsdWRlL2RybS9kcm1fZmlsZS5oICAgICAgICAgICAgICB8ICAgNSArCiBpbmNsdWRlL2RybS9k cm1fc3luY29iai5oICAgICAgICAgICB8ICA4NyArKysrKysrKysKIGluY2x1ZGUvdWFwaS9kcm0v ZHJtLmggICAgICAgICAgICAgIHwgIDI0ICsrKwogMTIgZmlsZXMgY2hhbmdlZCwgNTQzIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2RybV9zeW5jb2JqLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fc3lu Y29iai5oCgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFscy5yc3Qg Yi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdAppbmRleCBiYWJmYjYxLi4yYjIz ZDc4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdAorKysg Yi9Eb2N1bWVudGF0aW9uL2dwdS9kcm0taW50ZXJuYWxzLnJzdApAQCAtOTgsNiArOTgsOSBAQCBE UklWRVJfQVRPTUlDCiAgICAgaW1wbGVtZW50IGFwcHJvcHJpYXRlIG9iai0+YXRvbWljX2dldF9w cm9wZXJ0eSgpIHZmdW5jcyBmb3IgYW55CiAgICAgbW9kZXNldCBvYmplY3RzIHdpdGggZHJpdmVy IHNwZWNpZmljIHByb3BlcnRpZXMuCiAKK0RSSVZFUl9TWU5DT0JKCisgICAgRHJpdmVyIHN1cHBv cnQgZHJtIHN5bmMgb2JqZWN0cy4KKwogTWFqb3IsIE1pbm9yIGFuZCBQYXRjaGxldmVsCiB+fn5+ fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ncHUv ZHJtLW1tLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKaW5kZXggOTZiOWMzNC4u OTQxMjc5OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdAorKysgYi9E b2N1bWVudGF0aW9uL2dwdS9kcm0tbW0ucnN0CkBAIC00ODQsMyArNDg0LDE1IEBAIERSTSBDYWNo ZSBIYW5kbGluZwogCiAuLiBrZXJuZWwtZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9jYWNoZS5j CiAgICA6ZXhwb3J0OgorCitEUk0gU3luYyBPYmplY3RzCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCisg ICA6ZG9jOiBPdmVydmlldworCisuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9kcm0vZHJtX3N5bmNv YmouaAorICAgOmV4cG9ydDoKKworLi4ga2VybmVsLWRvYzo6IGRyaXZlcnMvZ3B1L2RybS9kcm1f c3luY29iai5jCisgICA6ZXhwb3J0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IDU5ZjBmOWIuLjZmNDIxODggMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0v TWFrZWZpbGUKQEAgLTE2LDcgKzE2LDcgQEAgZHJtLXkgICAgICAgOj0JZHJtX2F1dGgubyBkcm1f YnVmcy5vIGRybV9jYWNoZS5vIFwKIAkJZHJtX2ZyYW1lYnVmZmVyLm8gZHJtX2Nvbm5lY3Rvci5v IGRybV9ibGVuZC5vIFwKIAkJZHJtX2VuY29kZXIubyBkcm1fbW9kZV9vYmplY3QubyBkcm1fcHJv cGVydHkubyBcCiAJCWRybV9wbGFuZS5vIGRybV9jb2xvcl9tZ210Lm8gZHJtX3ByaW50Lm8gXAot CQlkcm1fZHVtYl9idWZmZXJzLm8gZHJtX21vZGVfY29uZmlnLm8KKwkJZHJtX2R1bWJfYnVmZmVy cy5vIGRybV9tb2RlX2NvbmZpZy5vIGRybV9zeW5jb2JqLm8KIAogZHJtLSQoQ09ORklHX0RSTV9M SUJfUkFORE9NKSArPSBsaWIvZHJtX3JhbmRvbS5vCiBkcm0tJChDT05GSUdfRFJNX1ZNKSArPSBk cm1fdm0ubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9maWxlLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2ZpbGUuYwppbmRleCAzNzgzYjY1Li5hMjBkNmE5IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZpbGUu YwpAQCAtMjI5LDYgKzIyOSw5IEBAIHN0YXRpYyBpbnQgZHJtX29wZW5faGVscGVyKHN0cnVjdCBm aWxlICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKIAlpZiAoZHJtX2NvcmVfY2hlY2tf ZmVhdHVyZShkZXYsIERSSVZFUl9HRU0pKQogCQlkcm1fZ2VtX29wZW4oZGV2LCBwcml2KTsKIAor CWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlkcm1f c3luY29ial9vcGVuKHByaXYpOworCiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBE UklWRVJfUFJJTUUpKQogCQlkcm1fcHJpbWVfaW5pdF9maWxlX3ByaXZhdGUoJnByaXYtPnByaW1l KTsKIApAQCAtMjc2LDYgKzI3OSw4IEBAIHN0YXRpYyBpbnQgZHJtX29wZW5faGVscGVyKHN0cnVj dCBmaWxlICpmaWxwLCBzdHJ1Y3QgZHJtX21pbm9yICptaW5vcikKIG91dF9wcmltZV9kZXN0cm95 OgogCWlmIChkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1BSSU1FKSkKIAkJZHJt X3ByaW1lX2Rlc3Ryb3lfZmlsZV9wcml2YXRlKCZwcml2LT5wcmltZSk7CisJaWYgKGRybV9jb3Jl X2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCWRybV9zeW5jb2JqX3JlbGVh c2UocHJpdik7CiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkK IAkJZHJtX2dlbV9yZWxlYXNlKGRldiwgcHJpdik7CiAJcHV0X3BpZChwcml2LT5waWQpOwpAQCAt Mzk4LDYgKzQwMyw5IEBAIGludCBkcm1fcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1 Y3QgZmlsZSAqZmlscCkKIAkJZHJtX3Byb3BlcnR5X2Rlc3Ryb3lfdXNlcl9ibG9icyhkZXYsIGZp bGVfcHJpdik7CiAJfQogCisJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJf U1lOQ09CSikpCisJCWRybV9zeW5jb2JqX3JlbGVhc2UoZmlsZV9wcml2KTsKKwogCWlmIChkcm1f Y29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCiAJCWRybV9nZW1fcmVsZWFzZShk ZXYsIGZpbGVfcHJpdik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJu YWwuaCBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAppbmRleCAzZDhlOGY4Li4zZmRl ZjJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCkBAIC0xNDIsNCArMTQyLDE3IEBAIHN0YXRpYyBp bmxpbmUgaW50IGRybV9kZWJ1Z2ZzX2NydGNfY3JjX2FkZChzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiB7CiAJcmV0dXJuIDA7CiB9CisKICNlbmRpZgorCisvKiBkcm1fc3luY29iai5jICovCit2b2lk IGRybV9zeW5jb2JqX29wZW4oc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOwordm9pZCBk cm1fc3luY29ial9yZWxlYXNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK2ludCBk cm1fc3luY29ial9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKKwkJCSAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOworaW50IGRybV9zeW5j b2JqX2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJ CSAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK2ludCBkcm1fc3luY29ial9o YW5kbGVfdG9fZmRfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJ CQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5bmNvYmpfZmRf dG9faGFuZGxlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJ ICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9pb2N0bC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jCmluZGV4IDg2 NWUzZWUuLmYxZTU2ODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMKQEAgLTI0MSw2ICsyNDEsOSBAQCBzdGF0 aWMgaW50IGRybV9nZXRjYXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3Ry dWN0IGRybV9maWxlICpmaWxlXwogCQlyZXEtPnZhbHVlIHw9IGRldi0+ZHJpdmVyLT5wcmltZV9m ZF90b19oYW5kbGUgPyBEUk1fUFJJTUVfQ0FQX0lNUE9SVCA6IDA7CiAJCXJlcS0+dmFsdWUgfD0g ZGV2LT5kcml2ZXItPnByaW1lX2hhbmRsZV90b19mZCA/IERSTV9QUklNRV9DQVBfRVhQT1JUIDog MDsKIAkJcmV0dXJuIDA7CisJY2FzZSBEUk1fQ0FQX1NZTkNPQko6CisJCXJlcS0+dmFsdWUgPSBk cm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopOworCQlyZXR1cm4gMDsK IAl9CiAKIAkvKiBPdGhlciBjYXBzIG9ubHkgd29yayB3aXRoIEtNUyBkcml2ZXJzICovCkBAIC02 NDUsNiArNjQ4LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgZHJtX2lv Y3Rsc1tdID0gewogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfQVRPTUlDLCBkcm1fbW9k ZV9hdG9taWNfaW9jdGwsIERSTV9NQVNURVJ8RFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VE KSwKIAlEUk1fSU9DVExfREVGKERSTV9JT0NUTF9NT0RFX0NSRUFURVBST1BCTE9CLCBkcm1fbW9k ZV9jcmVhdGVibG9iX2lvY3RsLCBEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAogCURS TV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfREVTVFJPWVBST1BCTE9CLCBkcm1fbW9kZV9kZXN0 cm95YmxvYl9pb2N0bCwgRFJNX0NPTlRST0xfQUxMT1d8RFJNX1VOTE9DS0VEKSwKKworCURSTV9J T0NUTF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfQ1JFQVRFLCBkcm1fc3luY29ial9jcmVhdGVfaW9j dGwsCisJCSAgICAgIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExf REVGKERSTV9JT0NUTF9TWU5DT0JKX0RFU1RST1ksIGRybV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGws CisJCSAgICAgIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9DVExfREVG KERSTV9JT0NUTF9TWU5DT0JKX0hBTkRMRV9UT19GRCwgZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2Zk X2lvY3RsLAorCQkgICAgICBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lP Q1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9GRF9UT19IQU5ETEUsIGRybV9zeW5jb2JqX2ZkX3Rv X2hhbmRsZV9pb2N0bCwKKwkJICAgICAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAog fTsKIAogI2RlZmluZSBEUk1fQ09SRV9JT0NUTF9DT1VOVAlBUlJBWV9TSVpFKCBkcm1faW9jdGxz ICkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9zeW5jb2JqLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u YjYxMTQ4MAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5j CkBAIC0wLDAgKzEsMzc3IEBACisvKgorICogQ29weXJpZ2h0IDIwMTcgUmVkIEhhdAorICoKKyAq IFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVy c29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQg ZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3 YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cisg KgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBp biBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdhcmUu CisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFO VFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3JzOgor ICoKKyAqLworCisvKioKKyAqIERPQzogT3ZlcnZpZXcKKyAqCisgKiBEUk0gc3luY2hyb25pc2F0 aW9uIG9iamVjdHMgKHN5bmNvYmopIGFyZSBhIHBlcnNpc3RlbnQgb2JqZWN0cywKKyAqIHRoYXQg Y29udGFpbiBhbiBvcHRpb25hbCBmZW5jZS4gVGhlIGZlbmNlIGNhbiBiZSB1cGRhdGVkIHdpdGgg YSBuZXcKKyAqIGZlbmNlLCBvciBiZSBOVUxMLgorICoKKyAqIHN5bmNvYmoncyBjYW4gYmUgZXhw b3J0IHRvIGZkJ3MgYW5kIGJhY2ssIHRoZXNlIGZkJ3MgYXJlIG9wYXF1ZSBhbmQKKyAqIGhhdmUg bm8gb3RoZXIgdXNlIGNhc2UsIGV4Y2VwdCBwYXNzaW5nIHRoZSBzeW5jb2JqIGJldHdlZW4gcHJv Y2Vzc2VzLgorICoKKyAqIFRoZWlyIHByaW1hcnkgdXNlLWNhc2UgaXMgdG8gaW1wbGVtZW50IFZ1 bGthbiBmZW5jZXMgYW5kIHNlbWFwaG9yZXMuCisgKgorICogc3luY29iaiBoYXZlIGEga3JlZiBy ZWZlcmVuY2UgY291bnQsIGJ1dCBhbHNvIGhhdmUgYW4gb3B0aW9uYWwgZmlsZS4KKyAqIFRoZSBm aWxlIGlzIG9ubHkgY3JlYXRlZCBvbmNlIHRoZSBzeW5jb2JqIGlzIGV4cG9ydGVkLgorICogVGhl IGZpbGUgdGFrZXMgYSByZWZlcmVuY2Ugb24gdGhlIGtyZWYuCisgKi8KKworI2luY2x1ZGUgPGRy bS9kcm1QLmg+CisjaW5jbHVkZSA8bGludXgvZmlsZS5oPgorI2luY2x1ZGUgPGxpbnV4L2ZzLmg+ CisjaW5jbHVkZSA8bGludXgvYW5vbl9pbm9kZXMuaD4KKworI2luY2x1ZGUgImRybV9pbnRlcm5h bC5oIgorI2luY2x1ZGUgPGRybS9kcm1fc3luY29iai5oPgorCitzdGF0aWMgc3RydWN0IGRybV9z eW5jb2JqICpkcm1fc3luY29ial9maW5kKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAor CQkJCQkgICB1MzIgaGFuZGxlKQoreworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iajsKKwor CXNwaW5fbG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworCisJLyogQ2hl Y2sgaWYgd2UgY3VycmVudGx5IGhhdmUgYSByZWZlcmVuY2Ugb24gdGhlIG9iamVjdCAqLworCXN5 bmNvYmogPSBpZHJfZmluZCgmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkciwgaGFuZGxlKTsKKwlp ZiAoc3luY29iaikKKwkJZHJtX3N5bmNvYmpfZ2V0KHN5bmNvYmopOworCisJc3Bpbl91bmxvY2so JmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKworCXJldHVybiBzeW5jb2JqOwor fQorCisvKioKKyAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSBsb29rdXAgYW5kIHJlcGxh Y2UgZmVuY2UgaW4gYSBzeW5jIG9iamVjdC4KKyAqIEBmaWxlX3ByaXZhdGUgLSBkcm0gZmlsZSBw cml2YXRlIHBvaW50ZXIuCisgKiBAaGFuZGxlIC0gc3luY29iaiBoYW5kbGUgdG8gbG9va3VwCisg KiBAZmVuY2UgLSBmZW5jZSB0byBpbnN0YWxsIGluIHN5bmMgZmlsZS4KKyAqIFJldHVybnM6Cisg KiAwIG9uIHN1Y2Nlc3MsIG9yIC1FSU5WQUwgd2hlbiB0aGUgaGFuZGxlIGRvZXNuJ3QgcG9pbnQg YXQgYSB2YWxpZCBzZW0gZmlsZS4KKyAqCisgKiBUaGlzIGxvb2tzIHVwIGEgc3luYyBvYmplY3Qg YW5kIHJlcGxhY2VzIHRoZSBmZW5jZSBvbiBpdCwgZnJlZWluZworICogdGhlIG9sZCBvbmUuCisg Ki8KK2ludCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2YXRlLAorCQkJICAgICAgdTMyIGhhbmRsZSwKKwkJCSAgICAgIHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlKQoreworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9zeW5jb2JqX2Zp bmQoZmlsZV9wcml2YXRlLCBoYW5kbGUpOworCXN0cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZSA9 IE5VTEw7CisKKwlpZiAoIXN5bmNvYmopCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGZlbmNl KQorCQlkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKKwlvbGRfZmVuY2UgPSB4Y2hnKCZzeW5jb2JqLT5m ZW5jZSwgZmVuY2UpOworCisJZG1hX2ZlbmNlX3B1dChvbGRfZmVuY2UpOworCWRybV9zeW5jb2Jq X3B1dChzeW5jb2JqKTsKKworCXJldHVybiAwOworfQorRVhQT1JUX1NZTUJPTChkcm1fc3luY29i al9yZXBsYWNlX2ZlbmNlKTsKKworaW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGVfcHJpdmF0ZSwKKwkJCSAgdTMyIGhhbmRsZSwKKwkJCSAgc3RydWN0IGRtYV9m ZW5jZSAqKmZlbmNlKQoreworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9zeW5j b2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBoYW5kbGUpOworCWludCByZXQgPSAwOworCisJaWYgKCFz eW5jb2JqKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCSpmZW5jZSA9IGRtYV9mZW5jZV9nZXQoc3lu Y29iai0+ZmVuY2UpOworCWlmICghKmZlbmNlKSB7CisJCXJldCA9IC1FSU5WQUw7CisJfQorCWRy bV9zeW5jb2JqX3B1dChzeW5jb2JqKTsKKwlyZXR1cm4gcmV0OworfQorRVhQT1JUX1NZTUJPTChk cm1fc3luY29ial9mZW5jZV9nZXQpOworCit2b2lkIGRybV9zeW5jb2JqX2ZyZWUoc3RydWN0IGty ZWYgKmtyZWYpCit7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gY29udGFpbmVyX29m KGtyZWYsCisJCQkJCQkgICBzdHJ1Y3QgZHJtX3N5bmNvYmosCisJCQkJCQkgICByZWZjb3VudCk7 CisJZG1hX2ZlbmNlX3B1dChzeW5jb2JqLT5mZW5jZSk7CisJa2ZyZWUoc3luY29iaik7Cit9CisK K3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2 YXRlLAorCQkJICAgICAgdTMyICpoYW5kbGUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgZHJtX3N5 bmNvYmogKnN5bmNvYmo7CisKKwlzeW5jb2JqID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGRybV9z eW5jb2JqKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFzeW5jb2JqKQorCQlyZXR1cm4gLUVOT01FTTsK KworCWtyZWZfaW5pdCgmc3luY29iai0+cmVmY291bnQpOworCisJaWRyX3ByZWxvYWQoR0ZQX0tF Uk5FTCk7CisJc3Bpbl9sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisJ cmV0ID0gaWRyX2FsbG9jKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRyLCBzeW5jb2JqLCAxLCAw LCBHRlBfTk9XQUlUKTsKKwlzcGluX3VubG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxl X2xvY2spOworCisJaWRyX3ByZWxvYWRfZW5kKCk7CisKKwlpZiAocmV0IDwgMCkgeworCQlkcm1f c3luY29ial9wdXQoc3luY29iaik7CisJCXJldHVybiByZXQ7CisJfQorCisJKmhhbmRsZSA9IHJl dDsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkcm1fc3luY29ial9kZXN0cm95KHN0cnVj dCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJICAgICAgIHUzMiBoYW5kbGUpCit7CisJc3Ry dWN0IGRybV9zeW5jb2JqICpzeW5jb2JqOworCisJc3Bpbl9sb2NrKCZmaWxlX3ByaXZhdGUtPnN5 bmNvYmpfdGFibGVfbG9jayk7CisJc3luY29iaiA9IGlkcl9yZW1vdmUoJmZpbGVfcHJpdmF0ZS0+ c3luY29ial9pZHIsIGhhbmRsZSk7CisJc3Bpbl91bmxvY2soJmZpbGVfcHJpdmF0ZS0+c3luY29i al90YWJsZV9sb2NrKTsKKworCWlmICghc3luY29iaikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlk cm1fc3luY29ial9wdXQoc3luY29iaik7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZHJt X3N5bmNvYmpfZmlsZV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpm aWxlKQoreworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGZpbGUtPnByaXZhdGVfZGF0 YTsKKworCWRybV9zeW5jb2JqX3B1dChzeW5jb2JqKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZHJtX3N5bmNvYmpfZmlsZV9mb3BzID0gewor CS5yZWxlYXNlID0gZHJtX3N5bmNvYmpfZmlsZV9yZWxlYXNlLAorfTsKKworc3RhdGljIGludCBk cm1fc3luY29ial9hbGxvY19maWxlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKK3sKKwlz dHJ1Y3QgZmlsZSAqZmlsZSA9IGFub25faW5vZGVfZ2V0ZmlsZSgic3luY29ial9maWxlIiwKKwkJ CQkJICAgICAgICZkcm1fc3luY29ial9maWxlX2ZvcHMsCisJCQkJCSAgICAgICBzeW5jb2JqLCAw KTsKKwlpZiAoSVNfRVJSKGZpbGUpKQorCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKKworCWRybV9z eW5jb2JqX2dldChzeW5jb2JqKTsKKwlpZiAoY21weGNoZygmc3luY29iai0+ZmlsZSwgTlVMTCwg ZmlsZSkpIHsKKwkJLyogbG9zdCB0aGUgcmFjZSAqLworCQlmcHV0KGZpbGUpOworCX0KKworCXJl dHVybiAwOworfQorCitzdGF0aWMgaW50IGRybV9zeW5jb2JqX2hhbmRsZV90b19mZChzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKKwkJCQkgICAgdTMyIGhhbmRsZSwgaW50ICpwX2ZkKQor eworCXN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9zeW5jb2JqX2ZpbmQoZmlsZV9w cml2YXRlLCBoYW5kbGUpOworCWludCByZXQ7CisJaW50IGZkOworCisJaWYgKCFzeW5jb2JqKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWZkID0gZ2V0X3VudXNlZF9mZF9mbGFncyhPX0NMT0VYRUMp OworCWlmIChmZCA8IDApIHsKKwkJZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOworCQlyZXR1cm4g ZmQ7CisJfQorCisJaWYgKCFzeW5jb2JqLT5maWxlKSB7CisJCXJldCA9IGRybV9zeW5jb2JqX2Fs bG9jX2ZpbGUoc3luY29iaik7CisJCWlmIChyZXQpCisJCQlnb3RvIG91dF9wdXRfZmQ7CisJfQor CWZkX2luc3RhbGwoZmQsIHN5bmNvYmotPmZpbGUpOworCWRybV9zeW5jb2JqX3B1dChzeW5jb2Jq KTsKKwkqcF9mZCA9IGZkOworCXJldHVybiAwOworb3V0X3B1dF9mZDoKKwlwdXRfdW51c2VkX2Zk KGZkKTsKKwlkcm1fc3luY29ial9wdXQoc3luY29iaik7CisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIHN0cnVjdCBkcm1fc3luY29iaiAqZHJtX3N5bmNvYmpfZmRnZXQoaW50IGZkKQoreworCXN0 cnVjdCBmaWxlICpmaWxlID0gZmdldChmZCk7CisKKwlpZiAoIWZpbGUpCisJCXJldHVybiBOVUxM OworCWlmIChmaWxlLT5mX29wICE9ICZkcm1fc3luY29ial9maWxlX2ZvcHMpCisJCWdvdG8gZXJy OworCisJcmV0dXJuIGZpbGUtPnByaXZhdGVfZGF0YTsKK2VycjoKKwlmcHV0KGZpbGUpOworCXJl dHVybiBOVUxMOworfTsKKworc3RhdGljIGludCBkcm1fc3luY29ial9mZF90b19oYW5kbGUoc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkJICAgIGludCBmZCwgdTMyICpoYW5kbGUp Cit7CisJc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqID0gZHJtX3N5bmNvYmpfZmRnZXQoZmQp OworCWludCByZXQ7CisKKwlpZiAoIXN5bmNvYmopCisJCXJldHVybiAtRUlOVkFMOworCisJLyog dGFrZSBhIHJlZmVyZW5jZSB0byBwdXQgaW4gdGhlIGlkciAqLworCWRybV9zeW5jb2JqX2dldChz eW5jb2JqKTsKKworCWlkcl9wcmVsb2FkKEdGUF9LRVJORUwpOworCXNwaW5fbG9jaygmZmlsZV9w cml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworCXJldCA9IGlkcl9hbGxvYygmZmlsZV9wcml2 YXRlLT5zeW5jb2JqX2lkciwgc3luY29iaiwgMSwgMCwgR0ZQX05PV0FJVCk7CisJc3Bpbl91bmxv Y2soJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKwlpZHJfcHJlbG9hZF9lbmQo KTsKKworCWlmIChyZXQgPCAwKSB7CisJCWZwdXQoc3luY29iai0+ZmlsZSk7CisJCXJldHVybiBy ZXQ7CisJfQorCSpoYW5kbGUgPSByZXQ7CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZHJtX3N5 bmNvYmpfb3BlbiAtIGluaXRhbGl6ZXMgc3luY29iaiBmaWxlLXByaXZhdGUgc3RydWN0dXJlcyBh dCBkZXZub2RlIG9wZW4gdGltZQorICogQGRldjogZHJtX2RldmljZSB3aGljaCBpcyBiZWluZyBv cGVuZWQgYnkgdXNlcnNwYWNlCisgKiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZS1wcml2YXRlIHN0 cnVjdHVyZSB0byBzZXQgdXAKKyAqCisgKiBDYWxsZWQgYXQgZGV2aWNlIG9wZW4gdGltZSwgc2V0 cyB1cCB0aGUgc3RydWN0dXJlIGZvciBoYW5kbGluZyByZWZjb3VudGluZworICogb2Ygc3luYyBv YmplY3RzLgorICovCit2b2lkCitkcm1fc3luY29ial9vcGVuKHN0cnVjdCBkcm1fZmlsZSAqZmls ZV9wcml2YXRlKQoreworCWlkcl9pbml0KCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRyKTsKKwlz cGluX2xvY2tfaW5pdCgmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworfQorCitz dGF0aWMgaW50Citkcm1fc3luY29ial9yZWxlYXNlX2hhbmRsZShpbnQgaWQsIHZvaWQgKnB0ciwg dm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmogPSBwdHI7CisKKwlk cm1fc3luY29ial9wdXQoc3luY29iaik7CisJcmV0dXJuIDA7Cit9CisKKy8qKgorICogZHJtX3N5 bmNvYmpfcmVsZWFzZSAtIHJlbGVhc2UgZmlsZS1wcml2YXRlIHN5bmMgb2JqZWN0IHJlc291cmNl cworICogQGRldjogZHJtX2RldmljZSB3aGljaCBpcyBiZWluZyBjbG9zZWQgYnkgdXNlcnNwYWNl CisgKiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZS1wcml2YXRlIHN0cnVjdHVyZSB0byBjbGVhbiB1 cAorICoKKyAqIENhbGxlZCBhdCBjbG9zZSB0aW1lIHdoZW4gdGhlIGZpbHAgaXMgZ29pbmcgYXdh eS4KKyAqCisgKiBSZWxlYXNlcyBhbnkgcmVtYWluaW5nIHJlZmVyZW5jZXMgb24gb2JqZWN0cyBi eSB0aGlzIGZpbHAuCisgKi8KK3ZvaWQKK2RybV9zeW5jb2JqX3JlbGVhc2Uoc3RydWN0IGRybV9m aWxlICpmaWxlX3ByaXZhdGUpCit7CisJaWRyX2Zvcl9lYWNoKCZmaWxlX3ByaXZhdGUtPnN5bmNv YmpfaWRyLAorCQkgICAgICZkcm1fc3luY29ial9yZWxlYXNlX2hhbmRsZSwgZmlsZV9wcml2YXRl KTsKKwlpZHJfZGVzdHJveSgmZmlsZV9wcml2YXRlLT5zeW5jb2JqX2lkcik7Cit9CisKK2ludAor ZHJtX3N5bmNvYmpfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRh dGEsCisJCQkgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3RydWN0IGRybV9z eW5jb2JqX2NyZWF0ZSAqYXJncyA9IGRhdGE7CisKKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1 cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVybiAtRU5PREVWOworCisJLyogbm8gdmFs aWQgZmxhZ3MgeWV0ICovCisJaWYgKGFyZ3MtPmZsYWdzKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CXJldHVybiBkcm1fc3luY29ial9jcmVhdGUoZmlsZV9wcml2YXRlLAorCQkJCSAgJmFyZ3MtPmhh bmRsZSk7Cit9CisKK2ludAorZHJtX3N5bmNvYmpfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0 ZSkKK3sKKwlzdHJ1Y3QgZHJtX3N5bmNvYmpfZGVzdHJveSAqYXJncyA9IGRhdGE7CisKKwlpZiAo IWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCXJldHVybiAt RU5PREVWOworCisJLyogbWFrZSBzdXJlIHBhZGRpbmcgaXMgZW1wdHkgKi8KKwlpZiAoYXJncy0+ cGFkKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlyZXR1cm4gZHJtX3N5bmNvYmpfZGVzdHJveShmaWxl X3ByaXZhdGUsIGFyZ3MtPmhhbmRsZSk7Cit9CisKK2ludAorZHJtX3N5bmNvYmpfaGFuZGxlX3Rv X2ZkX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICAgc3Ry dWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX2hhbmRs ZSAqYXJncyA9IGRhdGE7CisKKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklW RVJfU1lOQ09CSikpCisJCXJldHVybiAtRU5PREVWOworCisJaWYgKGFyZ3MtPnBhZCB8fCBhcmdz LT5mbGFncykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gZHJtX3N5bmNvYmpfaGFuZGxl X3RvX2ZkKGZpbGVfcHJpdmF0ZSwgYXJncy0+aGFuZGxlLAorCQkJCQkmYXJncy0+ZmQpOworfQor CitpbnQKK2RybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQor eworCXN0cnVjdCBkcm1fc3luY29ial9oYW5kbGUgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1f Y29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlyZXR1cm4gLUVOT0RF VjsKKworCWlmIChhcmdzLT5wYWQgfHwgYXJncy0+ZmxhZ3MpCisJCXJldHVybiAtRUlOVkFMOwor CisJcmV0dXJuIGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZShmaWxlX3ByaXZhdGUsIGFyZ3MtPmZk LAorCQkJCQkmYXJncy0+aGFuZGxlKTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAu aCBiL2luY2x1ZGUvZHJtL2RybVAuaAppbmRleCBlMWRhYTRmLi40ZmFkOWYyIDEwMDY0NAotLS0g YS9pbmNsdWRlL2RybS9kcm1QLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC0zMTksNyAr MzE5LDYgQEAgc3RydWN0IHBjaV9jb250cm9sbGVyOwogCiAjZGVmaW5lIERSTV9JRl9WRVJTSU9O KG1haiwgbWluKSAobWFqIDw8IDE2IHwgbWluKQogCi0KIC8qIEZsYWdzIGFuZCByZXR1cm4gY29k ZXMgZm9yIGdldF92YmxhbmtfdGltZXN0YW1wKCkgZHJpdmVyIGZ1bmN0aW9uLiAqLwogI2RlZmlu ZSBEUk1fQ0FMTEVEX0ZST01fVkJMSVJRIDEKICNkZWZpbmUgRFJNX1ZCTEFOS1RJTUVfU0NBTk9V VFBPU19NRVRIT0QgKDEgPDwgMCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcnYuaCBi L2luY2x1ZGUvZHJtL2RybV9kcnYuaAppbmRleCA1M2I5ODMyLi4xYzY2YzFjIDEwMDY0NAotLS0g YS9pbmNsdWRlL2RybS9kcm1fZHJ2LmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCkBAIC01 Myw2ICs1Myw3IEBAIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYjsKICNkZWZpbmUgRFJJVkVS X1JFTkRFUgkJCTB4ODAwMAogI2RlZmluZSBEUklWRVJfQVRPTUlDCQkJMHgxMDAwMAogI2RlZmlu ZSBEUklWRVJfS01TX0xFR0FDWV9DT05URVhUCTB4MjAwMDAKKyNkZWZpbmUgRFJJVkVSX1NZTkNP QkogICAgICAgICAgICAgICAgICAweDQwMDAwCiAKIC8qKgogICogc3RydWN0IGRybV9kcml2ZXIg LSBEUk0gZHJpdmVyIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2ZpbGUu aCBiL2luY2x1ZGUvZHJtL2RybV9maWxlLmgKaW5kZXggNWRkMjdhZS4uY2VhNzM1NCAxMDA2NDQK LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZpbGUuaAorKysgYi9pbmNsdWRlL2RybS9kcm1fZmlsZS5o CkBAIC0yMzEsNiArMjMxLDExIEBAIHN0cnVjdCBkcm1fZmlsZSB7CiAJLyoqIEB0YWJsZV9sb2Nr OiBQcm90ZWN0cyBAb2JqZWN0X2lkci4gKi8KIAlzcGlubG9ja190IHRhYmxlX2xvY2s7CiAKKwkv KiogQHN5bmNvYmpfaWRyOiBNYXBwaW5nIG9mIHN5bmMgb2JqZWN0IGhhbmRsZXMgdG8gb2JqZWN0 IHBvaW50ZXJzLiAqLworCXN0cnVjdCBpZHIgc3luY29ial9pZHI7CisJLyoqIEBzeW5jb2JqX3Rh YmxlX2xvY2s6IFByb3RlY3RzIEBzeW5jb2JqX2lkci4gKi8KKwlzcGlubG9ja190IHN5bmNvYmpf dGFibGVfbG9jazsKKwogCS8qKiBAZmlscDogUG9pbnRlciB0byB0aGUgY29yZSBmaWxlIHN0cnVj dHVyZS4gKi8KIAlzdHJ1Y3QgZmlsZSAqZmlscDsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX3N5bmNvYmouaCBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMzcyYzM5OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUv ZHJtL2RybV9zeW5jb2JqLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAy MDE3IFJlZCBIYXQKKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9m IGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwK KyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGlu ZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnks IG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl CisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxv d2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMg SVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVE LCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5U QUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hU IEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUu CisgKgorICogQXV0aG9yczoKKyAqCisgKi8KKyNpZm5kZWYgX19EUk1fU1lOQ09CSl9IX18KKyNk ZWZpbmUgX19EUk1fU1lOQ09CSl9IX18KKworI2luY2x1ZGUgImxpbnV4L2RtYS1mZW5jZS5oIgor CisvKioKKyAqIHN0cnVjdCBkcm1fc3luY29iaiAtIHN5bmMgb2JqZWN0LgorICoKKyAqIFRoaXMg c3RydWN0dXJlIGRlZmluZXMgYSBnZW5lcmljIHN5bmMgb2JqZWN0IHdoaWNoIHdyYXBzIGEgZG1h IGZlbmNlLgorICovCitzdHJ1Y3QgZHJtX3N5bmNvYmogeworCS8qKgorCSAqIEByZWZjb3VudDoK KwkgKgorCSAqIFJlZmVyZW5jZSBjb3VudCBvZiB0aGlzIG9iamVjdC4KKwkgKi8KKwlzdHJ1Y3Qg a3JlZiByZWZjb3VudDsKKwkvKioKKwkgKiBAZmVuY2U6CisJICogTlVMTCBvciBhIHBvaW50ZXIg dG8gdGhlIGZlbmNlIGJvdW5kIHRvIHRoaXMgb2JqZWN0LgorCSAqLworCXN0cnVjdCBkbWFfZmVu Y2UgKmZlbmNlOworCS8qKgorCSAqIEBmaWxlOgorCSAqIGEgZmlsZSBiYWNraW5nIGZvciB0aGlz IHN5bmNvYmouCisJICovCisJc3RydWN0IGZpbGUgKmZpbGU7Cit9OworCit2b2lkIGRybV9zeW5j b2JqX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpOworCisvKioKKyAqIGRybV9zeW5jb2JqX2dldCAt IGFjcXVpcmUgYSBzeW5jb2JqIHJlZmVyZW5jZQorICogQG9iajogc3luYyBvYmplY3QKKyAqCisg KiBUaGlzIGFjcXVpcmVzIGFkZGl0aW9uYWwgcmVmZXJlbmNlIHRvIEBvYmouIEl0IGlzIGlsbGVn YWwgdG8gY2FsbCB0aGlzCisgKiB3aXRob3V0IGFscmVhZHkgaG9sZGluZyBhIHJlZmVyZW5jZS4g Tm8gbG9ja3MgcmVxdWlyZWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgdm9pZAorZHJtX3N5bmNvYmpf Z2V0KHN0cnVjdCBkcm1fc3luY29iaiAqb2JqKQoreworCWtyZWZfZ2V0KCZvYmotPnJlZmNvdW50 KTsKK30KKworLyoqCisgKiBkcm1fc3luY29ial9wdXQgLSByZWxlYXNlIGEgcmVmZXJlbmNlIHRv IGEgc3luYyBvYmplY3QuCisgKiBAb2JqOiBzeW5jIG9iamVjdC4KKyAqLworc3RhdGljIGlubGlu ZSB2b2lkCitkcm1fc3luY29ial9wdXQoc3RydWN0IGRybV9zeW5jb2JqICpvYmopCit7CisJa3Jl Zl9wdXQoJm9iai0+cmVmY291bnQsIGRybV9zeW5jb2JqX2ZyZWUpOworfQorCitpbnQgZHJtX3N5 bmNvYmpfZmVuY2VfZ2V0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJICB1MzIg aGFuZGxlLAorCQkJICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpOworaW50IGRybV9zeW5jb2Jq X3JlcGxhY2VfZmVuY2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkgICAgICB1 MzIgaGFuZGxlLAorCQkJICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpOworCisjZW5kaWYK ZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2Ry bS5oCmluZGV4IDQyZDlmNjQuLjk2YzVjNzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0v ZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaApAQCAtNjQ4LDYgKzY0OCw3IEBAIHN0 cnVjdCBkcm1fZ2VtX29wZW4gewogI2RlZmluZSBEUk1fQ0FQX0FEREZCMl9NT0RJRklFUlMJMHgx MAogI2RlZmluZSBEUk1fQ0FQX1BBR0VfRkxJUF9UQVJHRVQJMHgxMQogI2RlZmluZSBEUk1fQ0FQ X0NSVENfSU5fVkJMQU5LX0VWRU5UCTB4MTIKKyNkZWZpbmUgRFJNX0NBUF9TWU5DT0JKCQkweDEz CiAKIC8qKiBEUk1fSU9DVExfR0VUX0NBUCBpb2N0bCBhcmd1bWVudCB0eXBlICovCiBzdHJ1Y3Qg ZHJtX2dldF9jYXAgewpAQCAtNjk3LDYgKzY5OCwyNCBAQCBzdHJ1Y3QgZHJtX3ByaW1lX2hhbmRs ZSB7CiAJX19zMzIgZmQ7CiB9OwogCitzdHJ1Y3QgZHJtX3N5bmNvYmpfY3JlYXRlIHsKKwlfX3Uz MiBoYW5kbGU7CisJX191MzIgZmxhZ3M7Cit9OworCitzdHJ1Y3QgZHJtX3N5bmNvYmpfZGVzdHJv eSB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZDsKK307CisKK3N0cnVjdCBkcm1fc3luY29i al9oYW5kbGUgeworCV9fdTMyIGhhbmRsZTsKKwlfX3UzMiBmbGFnczsKKworCV9fczMyIGZkOwor CV9fdTMyIHBhZDsKK307CisKICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogfQogI2VuZGlmCkBA IC04MTUsNiArODM0LDExIEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBEUk1fSU9DVExfTU9ERV9D UkVBVEVQUk9QQkxPQglEUk1fSU9XUigweEJELCBzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2Jsb2Ip CiAjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0RFU1RST1lQUk9QQkxPQglEUk1fSU9XUigweEJFLCBz dHJ1Y3QgZHJtX21vZGVfZGVzdHJveV9ibG9iKQogCisjZGVmaW5lIERSTV9JT0NUTF9TWU5DT0JK X0NSRUFURQlEUk1fSU9XUigweEJGLCBzdHJ1Y3QgZHJtX3N5bmNvYmpfY3JlYXRlKQorI2RlZmlu ZSBEUk1fSU9DVExfU1lOQ09CSl9ERVNUUk9ZCURSTV9JT1dSKDB4QzAsIHN0cnVjdCBkcm1fc3lu Y29ial9kZXN0cm95KQorI2RlZmluZSBEUk1fSU9DVExfU1lOQ09CSl9IQU5ETEVfVE9fRkQJRFJN X0lPV1IoMHhDMSwgc3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSkKKyNkZWZpbmUgRFJNX0lPQ1RM X1NZTkNPQkpfRkRfVE9fSEFORExFCURSTV9JT1dSKDB4QzIsIHN0cnVjdCBkcm1fc3luY29ial9o YW5kbGUpCisKIC8qKgogICogRGV2aWNlIHNwZWNpZmljIGlvY3RscyBzaG91bGQgb25seSBiZSBp biB0aGVpciByZXNwZWN0aXZlIGhlYWRlcnMKICAqIFRoZSBkZXZpY2Ugc3BlY2lmaWMgaW9jdGwg cmFuZ2UgaXMgZnJvbSAweDQwIHRvIDB4OWYuCi0tIAoyLjkuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==