From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Airlie Subject: [PATCH 5/7] drm: introduce sync objects as wrappers for sem files Date: Thu, 13 Apr 2017 11:41:42 +1000 Message-ID: <20170413014144.637-6-airlied@gmail.com> References: <20170413014144.637-1-airlied@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170413014144.637-1-airlied@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClN5bmMgb2JqZWN0cyBhcmUg bmV3IHRvcGxldmVsIGRybSBvYmplY3QsIHRoYXQgaGF2ZSB0aGUgc2FtZQpzZW1hbnRpY3MgYXMg c2VtX2ZpbGUgb2JqZWN0cywgYnV0IHdpdGhvdXQgcmVxdWlyaW5nIGFuIGZkCnRvIGJlIGNvbnN1 bWVkIHRvIHN1cHBvcnQgdGhlbS4KClRoaXMgcGF0Y2gganVzdCBlbmFibGVzIHRoZSBEUk0gaW50 ZXJmYWNlIHRvIGNyZWF0ZSB0aGVzZQpvYmplY3RzLCBpdCBkb2Vzbid0IGFjdHVhbGx5IHByb3Zp ZGUgYW55IHNlbWFwaG9yZSBvYmplY3RzCm9yIG5ldyBmZWF0dXJlcy4KClNpZ25lZC1vZmYtYnk6 IERhdmUgQWlybGllIDxhaXJsaWVkQHJlZGhhdC5jb20+Ci0tLQogRG9jdW1lbnRhdGlvbi9ncHUv ZHJtLWludGVybmFscy5yc3QgfCAgIDUgKwogRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1tLnJzdCAg ICAgICAgfCAgIDYgKwogZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jICAgICAgICAgfCAgIDQg Ky0KIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJz L2dwdS9kcm0vZHJtX2ZvcHMuYyAgICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vZHJt X2ludGVybmFsLmggICAgICB8ICAxMyArKwogZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5jICAg ICAgICAgfCAgMTIgKysKIGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jICAgICAgIHwgMjg1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVkZS9kcm0vZHJtUC5o ICAgICAgICAgICAgICAgICAgfCAgIDUgKwogaW5jbHVkZS9kcm0vZHJtX2Rydi5oICAgICAgICAg ICAgICAgfCAgIDEgKwogaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaCAgICAgICAgICAgfCAgMzYg KysrKysKIGluY2x1ZGUvdWFwaS9kcm0vZHJtLmggICAgICAgICAgICAgIHwgIDI1ICsrKysKIDEy IGZpbGVzIGNoYW5nZWQsIDM5OSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCiBjcmVhdGUgbW9kZSAx MDA2NDQgaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRp b24vZ3B1L2RybS1pbnRlcm5hbHMucnN0IGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFs cy5yc3QKaW5kZXggZTM1OTIwZC4uNzQzYjc1MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9n cHUvZHJtLWludGVybmFscy5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWludGVybmFs cy5yc3QKQEAgLTk4LDYgKzk4LDExIEBAIERSSVZFUl9BVE9NSUMKICAgICBpbXBsZW1lbnQgYXBw cm9wcmlhdGUgb2JqLT5hdG9taWNfZ2V0X3Byb3BlcnR5KCkgdmZ1bmNzIGZvciBhbnkKICAgICBt b2Rlc2V0IG9iamVjdHMgd2l0aCBkcml2ZXIgc3BlY2lmaWMgcHJvcGVydGllcy4KIAorRFJJVkVS X1NZTkNPQkoKKyAgICBEcml2ZXIgc3VwcG9ydCBzeW5jIG9iamVjdHMuIFRoZXNlIGFyZSBqdXN0 IHN5bmMgZmlsZXMgdGhhdCBkb24ndAorICAgIHVzZSBhIGZpbGUgZGVzY3JpcHRvci4gVGhleSBj YW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgVnVsa2FuIHNoYXJlZAorICAgIHNlbWFwaG9yZXMuCisK IE1ham9yLCBNaW5vciBhbmQgUGF0Y2hsZXZlbAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QgYi9Eb2N1bWVudGF0 aW9uL2dwdS9kcm0tbW0ucnN0CmluZGV4IGY1NzYwYjEuLjI4YWViZTggMTAwNjQ0Ci0tLSBhL0Rv Y3VtZW50YXRpb24vZ3B1L2RybS1tbS5yc3QKKysrIGIvRG9jdW1lbnRhdGlvbi9ncHUvZHJtLW1t LnJzdApAQCAtNDgzLDMgKzQ4Myw5IEBAIERSTSBDYWNoZSBIYW5kbGluZwogCiAuLiBrZXJuZWwt ZG9jOjogZHJpdmVycy9ncHUvZHJtL2RybV9jYWNoZS5jCiAgICA6ZXhwb3J0OgorCitEUk0gU3lu YyBPYmplY3RzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLi4ga2VybmVsLWRvYzo6 IGRyaXZlcnMvZ3B1L2RybS9kcm1fc3luY29iai5jCisgICA6ZXhwb3J0OgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5jIGIvZHJpdmVycy9kbWEtYnVmL3N5bmNfZmlsZS5j CmluZGV4IGE4OGQ3ODYuLjczNGQ2MWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9zeW5j X2ZpbGUuYworKysgYi9kcml2ZXJzL2RtYS1idWYvc3luY19maWxlLmMKQEAgLTQ4NSw3ICs0ODUs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzZW1fZmlsZV9mb3BzID0g ewogCS5yZWxlYXNlID0gc2VtX2ZpbGVfcmVsZWFzZSwKIH07CiAKLXN0cnVjdCBzZW1fZmlsZSAq c2VtX2ZpbGVfYWxsb2Modm9pZCkKK3N0cnVjdCBzZW1fZmlsZSAqc2VtX2ZpbGVfY3JlYXRlKHZv aWQpCiB7CiAJc3RydWN0IHNlbV9maWxlICpzZW1fZmlsZTsKIAlpbnQgcmV0OwpAQCAtNTA4LDcg KzUwOCw3IEBAIHN0cnVjdCBzZW1fZmlsZSAqc2VtX2ZpbGVfYWxsb2Modm9pZCkKIAlrZnJlZShz ZW1fZmlsZSk7CiAJcmV0dXJuIE5VTEw7CiB9Ci1FWFBPUlRfU1lNQk9MKHNlbV9maWxlX2FsbG9j KTsKK0VYUE9SVF9TWU1CT0woc2VtX2ZpbGVfY3JlYXRlKTsKIAogc3RydWN0IHNlbV9maWxlICpz ZW1fZmlsZV9mZGdldChpbnQgZmQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKaW5kZXggM2VlOTU3OS4uYjVlNTY1YyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQpAQCAtMTYsNyArMTYsNyBAQCBkcm0teSAgICAgICA6PQlkcm1fYXV0aC5vIGRy bV9idWZzLm8gZHJtX2NhY2hlLm8gXAogCQlkcm1fZnJhbWVidWZmZXIubyBkcm1fY29ubmVjdG9y Lm8gZHJtX2JsZW5kLm8gXAogCQlkcm1fZW5jb2Rlci5vIGRybV9tb2RlX29iamVjdC5vIGRybV9w cm9wZXJ0eS5vIFwKIAkJZHJtX3BsYW5lLm8gZHJtX2NvbG9yX21nbXQubyBkcm1fcHJpbnQubyBc Ci0JCWRybV9kdW1iX2J1ZmZlcnMubyBkcm1fbW9kZV9jb25maWcubworCQlkcm1fZHVtYl9idWZm ZXJzLm8gZHJtX21vZGVfY29uZmlnLm8gZHJtX3N5bmNvYmoubwogCiBkcm0tJChDT05GSUdfRFJN X0xJQl9SQU5ET00pICs9IGxpYi9kcm1fcmFuZG9tLm8KIGRybS0kKENPTkZJR19EUk1fVk0pICs9 IGRybV92bS5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZvcHMuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fZm9wcy5jCmluZGV4IGFmZGY1YjEuLjlhNjFkZjIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9wcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZm9w cy5jCkBAIC0yMTksNiArMjE5LDkgQEAgc3RhdGljIGludCBkcm1fb3Blbl9oZWxwZXIoc3RydWN0 IGZpbGUgKmZpbHAsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQogCWlmIChkcm1fY29yZV9jaGVj a19mZWF0dXJlKGRldiwgRFJJVkVSX0dFTSkpCiAJCWRybV9nZW1fb3BlbihkZXYsIHByaXYpOwog CisJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikpCisJCWRy bV9zeW5jb2JqX29wZW4ocHJpdik7CisKIAlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYs IERSSVZFUl9QUklNRSkpCiAJCWRybV9wcmltZV9pbml0X2ZpbGVfcHJpdmF0ZSgmcHJpdi0+cHJp bWUpOwogCkBAIC0yNjYsNiArMjY5LDggQEAgc3RhdGljIGludCBkcm1fb3Blbl9oZWxwZXIoc3Ry dWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBkcm1fbWlub3IgKm1pbm9yKQogb3V0X3ByaW1lX2Rlc3Ry b3k6CiAJaWYgKGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfUFJJTUUpKQogCQlk cm1fcHJpbWVfZGVzdHJveV9maWxlX3ByaXZhdGUoJnByaXYtPnByaW1lKTsKKwlpZiAoZHJtX2Nv cmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9TWU5DT0JKKSkKKwkJZHJtX3N5bmNvYmpfcmVs ZWFzZShwcml2KTsKIAlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZFUl9HRU0p KQogCQlkcm1fZ2VtX3JlbGVhc2UoZGV2LCBwcml2KTsKIAlwdXRfcGlkKHByaXYtPnBpZCk7CkBA IC00MDAsNiArNDA1LDkgQEAgaW50IGRybV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmaWxwKQogCQlkcm1fcHJvcGVydHlfZGVzdHJveV91c2VyX2Jsb2JzKGRldiwg ZmlsZV9wcml2KTsKIAl9CiAKKwlpZiAoZHJtX2NvcmVfY2hlY2tfZmVhdHVyZShkZXYsIERSSVZF Ul9TWU5DT0JKKSkKKwkJZHJtX3N5bmNvYmpfcmVsZWFzZShmaWxlX3ByaXYpOworCiAJaWYgKGRy bV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfR0VNKSkKIAkJZHJtX2dlbV9yZWxlYXNl KGRldiwgZmlsZV9wcml2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRl cm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oCmluZGV4IGYzNzM4OGMuLjQ0 ZWY5MDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1faW50ZXJuYWwuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgKQEAgLTE0Miw0ICsxNDIsMTcgQEAgc3RhdGlj IGlubGluZSBpbnQgZHJtX2RlYnVnZnNfY3J0Y19jcmNfYWRkKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YykKIHsKIAlyZXR1cm4gMDsKIH0KKwogI2VuZGlmCisKKy8qIGRybV9zeW5jb2JqLmMgKi8KK3Zv aWQgZHJtX3N5bmNvYmpfb3BlbihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7Cit2b2lk IGRybV9zeW5jb2JqX3JlbGVhc2Uoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOworaW50 IGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpk YXRhLAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CitpbnQgZHJtX3N5 bmNvYmpfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAor CQkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUpOworaW50IGRybV9zeW5jb2Jq X2hhbmRsZV90b19mZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAor CQkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKTsKK2ludCBkcm1fc3luY29ial9m ZF90b19oYW5kbGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJ CQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2lvY3RsLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2lvY3RsLmMKaW5kZXgg YTdjNjFjMi4uNmRhN2FkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9pb2N0bC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faW9jdGwuYwpAQCAtMjQwLDYgKzI0MCw5IEBAIHN0 YXRpYyBpbnQgZHJtX2dldGNhcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfCiAJCXJlcS0+dmFsdWUgfD0gZGV2LT5kcml2ZXItPnByaW1l X2ZkX3RvX2hhbmRsZSA/IERSTV9QUklNRV9DQVBfSU1QT1JUIDogMDsKIAkJcmVxLT52YWx1ZSB8 PSBkZXYtPmRyaXZlci0+cHJpbWVfaGFuZGxlX3RvX2ZkID8gRFJNX1BSSU1FX0NBUF9FWFBPUlQg OiAwOwogCQlyZXR1cm4gMDsKKwljYXNlIERSTV9DQVBfU1lOQ09CSjoKKwkJcmVxLT52YWx1ZSA9 IGRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSik7CisJCXJldHVybiAw OwogCX0KIAogCS8qIE90aGVyIGNhcHMgb25seSB3b3JrIHdpdGggS01TIGRyaXZlcnMgKi8KQEAg LTY0MSw2ICs2NDQsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBkcm1f aW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9BVE9NSUMsIGRybV9t b2RlX2F0b21pY19pb2N0bCwgRFJNX01BU1RFUnxEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NL RUQpLAogCURSTV9JT0NUTF9ERUYoRFJNX0lPQ1RMX01PREVfQ1JFQVRFUFJPUEJMT0IsIGRybV9t b2RlX2NyZWF0ZWJsb2JfaW9jdGwsIERSTV9DT05UUk9MX0FMTE9XfERSTV9VTkxPQ0tFRCksCiAJ RFJNX0lPQ1RMX0RFRihEUk1fSU9DVExfTU9ERV9ERVNUUk9ZUFJPUEJMT0IsIGRybV9tb2RlX2Rl c3Ryb3libG9iX2lvY3RsLCBEUk1fQ09OVFJPTF9BTExPV3xEUk1fVU5MT0NLRUQpLAorCisJRFJN X0lPQ1RMX0RFRihEUk1fSU9DVExfU1lOQ09CSl9DUkVBVEUsIGRybV9zeW5jb2JqX2NyZWF0ZV9p b2N0bCwKKwkJICAgICAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NU TF9ERUYoRFJNX0lPQ1RMX1NZTkNPQkpfREVTVFJPWSwgZHJtX3N5bmNvYmpfZGVzdHJveV9pb2N0 bCwKKwkJICAgICAgRFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9E RUYoRFJNX0lPQ1RMX1NZTkNPQkpfSEFORExFX1RPX0ZELCBkcm1fc3luY29ial9oYW5kbGVfdG9f ZmRfaW9jdGwsCisJCSAgICAgIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1f SU9DVExfREVGKERSTV9JT0NUTF9TWU5DT0JKX0ZEX1RPX0hBTkRMRSwgZHJtX3N5bmNvYmpfZmRf dG9faGFuZGxlX2lvY3RsLAorCQkgICAgICBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyks CiB9OwogCiAjZGVmaW5lIERSTV9DT1JFX0lPQ1RMX0NPVU5UCUFSUkFZX1NJWkUoIGRybV9pb2N0 bHMgKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3N5bmNvYmouYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45Y2Q3NjhhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5jb2Jq LmMKQEAgLTAsMCArMSwyODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNyBSZWQgSGF0Cisg KgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGlu IHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1p dGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlz aCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg U29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUg aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u czoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9u IG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1 ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0 d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4g Tk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJ QUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwor ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEF1dGhv cnM6CisgKgorICovCisKKy8qKgorICogRE9DOiBPdmVydmlldworICoKKyAqIERSTSBzeW5jaHJv bmlzYXRpb24gb2JqZWN0cyAoc3luY29iaikgYXJlIHdyYXBwZXJzIGZvciBzZW1fZmlsZSBvYmpl Y3RzLAorICogdGhhdCBkb24ndCB1c2UgZmQgc3BhY2UsIGFuZCBjYW4gYmUgY29udmVydGVkIHRv L2Zyb20gc2VtX2ZpbGUgZmRzLgorICoKKyAqIERlcGVuZGluZyBvbiB0aGUgc3luYyBvYmplY3Qg dHlwZSwgdGhleSBjYW4gZXhwb3NlIGRpZmZlcmVudCBzZW1fZmlsZQorICogc2VtYW50aWNzIGFu ZCByZXN0cmljdGlvbnMuCisgKgorICogVGhlaXIgcHJpbWFyeSB1c2UtY2FzZSBpcyB0byBpbXBs ZW1lbnQgVnVsa2FuIHNoYXJlZCBzZW1hcGhvcmVzLgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgorI2luY2x1ZGUgPGxpbnV4L3N5bmNfZmlsZS5oPgorI2luY2x1ZGUgImRybV9pbnRlcm5h bC5oIgorI2luY2x1ZGUgPGRybS9kcm1fc3luY29iai5oPgorCitzdGF0aWMgc3RydWN0IHNlbV9m aWxlICpkcm1fc3luY29ial9nZXQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkJ CSB1MzIgaGFuZGxlKQoreworCXN0cnVjdCBzZW1fZmlsZSAqc2VtX2ZpbGU7CisKKwlzcGluX2xv Y2soJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKworCS8qIENoZWNrIGlmIHdl IGN1cnJlbnRseSBoYXZlIGEgcmVmZXJlbmNlIG9uIHRoZSBvYmplY3QgKi8KKwlzZW1fZmlsZSA9 IGlkcl9maW5kKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRyLCBoYW5kbGUpOworCWlmIChzZW1f ZmlsZSkKKwkJZ2V0X2ZpbGUoc2VtX2ZpbGUtPmJhc2UuZmlsZSk7CisKKwlzcGluX3VubG9jaygm ZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworCisJcmV0dXJuIHNlbV9maWxlOwor fQorCisvKioKKyAqIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2UgLSBsb29rdXAgYW5kIHJlcGxh Y2UgZmVuY2UgaW4gYSBzeW5jIG9iamVjdC4KKyAqIEBmaWxlX3ByaXZhdGUgLSBkcm0gZmlsZSBw cml2YXRlIHBvaW50ZXIuCisgKiBAaGFuZGxlIC0gc3luY29iaiBoYW5kbGUgdG8gbG9va3VwCisg KiBAZmVuY2UgLSBmZW5jZSB0byBpbnN0YWxsIGluIHN5bmMgZmlsZS4KKyAqIFJldHVybnM6Cisg KiAwIG9uIHN1Y2Nlc3MsIG9yIC1FSU5WQUwgd2hlbiB0aGUgaGFuZGxlIGRvZXNuJ3QgcG9pbnQg YXQgYSB2YWxpZCBzZW0gZmlsZS4KKyAqCisgKiBUaGlzIGxvb2tzIHVwIGEgc3luYyBvYmplY3Qg YW5kIHJlcGxhY2VzIHRoZSBmZW5jZSBvbiBpdCwgZnJlZWluZworICogdGhlIG9sZCBvbmUuCisg Ki8KK2ludCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9w cml2YXRlLAorCQkJICAgICAgdTMyIGhhbmRsZSwKKwkJCSAgICAgIHN0cnVjdCBkbWFfZmVuY2Ug KmZlbmNlKQoreworCXN0cnVjdCBzZW1fZmlsZSAqc2VtX2ZpbGUgPSBkcm1fc3luY29ial9nZXQo ZmlsZV9wcml2YXRlLCBoYW5kbGUpOworCXN0cnVjdCBkbWFfZmVuY2UgKm9sZF9mZW5jZSA9IE5V TEw7CisJaW50IHI7CisKKwlpZiAoIXNlbV9maWxlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXIg PSBzZW1fZmlsZV9yZXBsYWNlX2ZlbmNlKHNlbV9maWxlLCBmZW5jZSwgJm9sZF9mZW5jZSk7CisJ ZG1hX2ZlbmNlX3B1dChvbGRfZmVuY2UpOworCXJldHVybiByOworfQorRVhQT1JUX1NZTUJPTChk cm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKTsKKworaW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldChz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKKwkJCSAgdTMyIGhhbmRsZSwKKwkJCSAgc3Ry dWN0IGRtYV9mZW5jZSAqKmZlbmNlKQoreworCXN0cnVjdCBzZW1fZmlsZSAqc2VtX2ZpbGUgPSBk cm1fc3luY29ial9nZXQoZmlsZV9wcml2YXRlLCBoYW5kbGUpOworCisJaWYgKCFzZW1fZmlsZSkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwkqZmVuY2UgPSBzZW1fZmlsZV9nZXRfZmVuY2Uoc2VtX2Zp bGUpOworCWlmICghKmZlbmNlKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlyZXR1cm4gMDsKK30KK0VY UE9SVF9TWU1CT0woZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KTsKKworc3RhdGljIGludCBkcm1fc3lu Y29ial9jcmVhdGUoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUsCisJCQkgICAgICB1MzIg KmhhbmRsZSkKK3sKKwlzdHJ1Y3Qgc2VtX2ZpbGUgKnNlbV9maWxlOworCWludCByZXQ7CisKKwlz ZW1fZmlsZSA9IHNlbV9maWxlX2NyZWF0ZSgpOworCWlmICghc2VtX2ZpbGUpCisJCXJldHVybiAt RU5PTUVNOworCisJaWRyX3ByZWxvYWQoR0ZQX0tFUk5FTCk7CisJc3Bpbl9sb2NrKCZmaWxlX3By aXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisJcmV0ID0gaWRyX2FsbG9jKCZmaWxlX3ByaXZh dGUtPnN5bmNvYmpfaWRyLCBzZW1fZmlsZSwgMSwgMCwgR0ZQX05PV0FJVCk7CisJc3Bpbl91bmxv Y2soJmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKworCWlkcl9wcmVsb2FkX2Vu ZCgpOworCisJaWYgKHJldCA8IDApIHsKKwkJZnB1dChzZW1fZmlsZS0+YmFzZS5maWxlKTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwkqaGFuZGxlID0gcmV0OworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGRybV9zeW5jb2JqX2Rlc3Ryb3koc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXZhdGUs CisJCQkgICAgICAgdTMyIGhhbmRsZSkKK3sKKwlzdHJ1Y3Qgc2VtX2ZpbGUgKnNlbV9maWxlOwor CisJc3Bpbl9sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisJc2VtX2Zp bGUgPSBpZHJfcmVtb3ZlKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfaWRyLCBoYW5kbGUpOworCXNw aW5fdW5sb2NrKCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVfbG9jayk7CisKKwlpZiAoIXNl bV9maWxlKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWZwdXQoc2VtX2ZpbGUtPmJhc2UuZmlsZSk7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZHJtX3N5bmNvYmpfaGFuZGxlX3RvX2ZkKHN0 cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAorCQkJCSAgICB1MzIgaGFuZGxlLCBpbnQgKmZk KQoreworCXN0cnVjdCBzZW1fZmlsZSAqc2VtX2ZpbGUgPSBkcm1fc3luY29ial9nZXQoZmlsZV9w cml2YXRlLCBoYW5kbGUpOworCWludCByZXQ7CisJaWYgKCFzZW1fZmlsZSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlyZXQgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKE9fQ0xPRVhFQyk7CisJaWYgKHJl dCA8IDApIHsKKwkJZnB1dChzZW1fZmlsZS0+YmFzZS5maWxlKTsKKwkJcmV0dXJuIHJldDsKKwl9 CisJZmRfaW5zdGFsbChyZXQsIHNlbV9maWxlLT5iYXNlLmZpbGUpOworCSpmZCA9IHJldDsKKwkv KiBsZWF2ZSByZWZlcmVuY2Ugd2l0aCBmZCAqLworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwK KwkJCQkgICAgaW50IGZkLCB1MzIgKmhhbmRsZSkKK3sKKwlzdHJ1Y3Qgc2VtX2ZpbGUgKnNlbV9m aWxlID0gc2VtX2ZpbGVfZmRnZXQoZmQpOworCWludCByZXQ7CisJaWYgKCFzZW1fZmlsZSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlpZHJfcHJlbG9hZChHRlBfS0VSTkVMKTsKKwlzcGluX2xvY2so JmZpbGVfcHJpdmF0ZS0+c3luY29ial90YWJsZV9sb2NrKTsKKwlyZXQgPSBpZHJfYWxsb2MoJmZp bGVfcHJpdmF0ZS0+c3luY29ial9pZHIsIHNlbV9maWxlLCAxLCAwLCBHRlBfTk9XQUlUKTsKKwlz cGluX3VubG9jaygmZmlsZV9wcml2YXRlLT5zeW5jb2JqX3RhYmxlX2xvY2spOworCWlkcl9wcmVs b2FkX2VuZCgpOworCisJaWYgKHJldCA8IDApIHsKKwkJZnB1dChzZW1fZmlsZS0+YmFzZS5maWxl KTsKKwkJcmV0dXJuIHJldDsKKwl9CisJKmhhbmRsZSA9IHJldDsKKwlyZXR1cm4gMDsKK30KKwor LyoqCisgKiBkcm1fc3luY29ial9vcGVuIC0gaW5pdGFsaXplcyBzeW5jb2JqIGZpbGUtcHJpdmF0 ZSBzdHJ1Y3R1cmVzIGF0IGRldm5vZGUgb3BlbiB0aW1lCisgKiBAZGV2OiBkcm1fZGV2aWNlIHdo aWNoIGlzIGJlaW5nIG9wZW5lZCBieSB1c2Vyc3BhY2UKKyAqIEBmaWxlX3ByaXZhdGU6IGRybSBm aWxlLXByaXZhdGUgc3RydWN0dXJlIHRvIHNldCB1cAorICoKKyAqIENhbGxlZCBhdCBkZXZpY2Ug b3BlbiB0aW1lLCBzZXRzIHVwIHRoZSBzdHJ1Y3R1cmUgZm9yIGhhbmRsaW5nIHJlZmNvdW50aW5n CisgKiBvZiBzeW5jIG9iamVjdHMuCisgKi8KK3ZvaWQKK2RybV9zeW5jb2JqX29wZW4oc3RydWN0 IGRybV9maWxlICpmaWxlX3ByaXZhdGUpCit7CisJaWRyX2luaXQoJmZpbGVfcHJpdmF0ZS0+c3lu Y29ial9pZHIpOworCXNwaW5fbG9ja19pbml0KCZmaWxlX3ByaXZhdGUtPnN5bmNvYmpfdGFibGVf bG9jayk7Cit9CisKK3N0YXRpYyBpbnQKK2RybV9zeW5jb2JqX3JlbGVhc2VfaGFuZGxlKGludCBp ZCwgdm9pZCAqcHRyLCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBzZW1fZmlsZSAqc2VtX2ZpbGUg PSBwdHI7CisKKwlmcHV0KHNlbV9maWxlLT5iYXNlLmZpbGUpOworCXJldHVybiAwOworfQorCisv KioKKyAqIGRybV9zeW5jb2JqX3JlbGVhc2UgLSByZWxlYXNlIGZpbGUtcHJpdmF0ZSBzeW5jIG9i amVjdCByZXNvdXJjZXMKKyAqIEBkZXY6IGRybV9kZXZpY2Ugd2hpY2ggaXMgYmVpbmcgY2xvc2Vk IGJ5IHVzZXJzcGFjZQorICogQGZpbGVfcHJpdmF0ZTogZHJtIGZpbGUtcHJpdmF0ZSBzdHJ1Y3R1 cmUgdG8gY2xlYW4gdXAKKyAqCisgKiBDYWxsZWQgYXQgY2xvc2UgdGltZSB3aGVuIHRoZSBmaWxw IGlzIGdvaW5nIGF3YXkuCisgKgorICogUmVsZWFzZXMgYW55IHJlbWFpbmluZyByZWZlcmVuY2Vz IG9uIG9iamVjdHMgYnkgdGhpcyBmaWxwLgorICovCit2b2lkCitkcm1fc3luY29ial9yZWxlYXNl KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQoreworCWlkcl9mb3JfZWFjaCgmZmlsZV9w cml2YXRlLT5zeW5jb2JqX2lkciwKKwkJICAgICAmZHJtX3N5bmNvYmpfcmVsZWFzZV9oYW5kbGUs IGZpbGVfcHJpdmF0ZSk7CisJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdmF0ZS0+c3luY29ial9pZHIp OworfQorCitpbnQKK2RybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAorCQkJIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQorewor CXN0cnVjdCBkcm1fc3luY29ial9jcmVhdGUgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1fY29y ZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlyZXR1cm4gLUVOT0RFVjsK KworCS8qIG5vIHZhbGlkIGZsYWdzIHlldCAqLworCWlmIChhcmdzLT5mbGFncykKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlyZXR1cm4gZHJtX3N5bmNvYmpfY3JlYXRlKGZpbGVfcHJpdmF0ZSwKKwkJ CQkgICZhcmdzLT5oYW5kbGUpOworfQorCitpbnQKK2RybV9zeW5jb2JqX2Rlc3Ryb3lfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXZhdGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX2Rlc3Ryb3kgKmFyZ3MgPSBk YXRhOworCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0dXJlKGRldiwgRFJJVkVSX1NZTkNPQkop KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCS8qIG1ha2Ugc3VyZSBwYWRkaW5nIGlzIGVtcHR5ICov CisJaWYgKGFyZ3MtPnBhZCkKKwkJcmV0dXJuIC1FSU5WQUw7CisJcmV0dXJuIGRybV9zeW5jb2Jq X2Rlc3Ryb3koZmlsZV9wcml2YXRlLCBhcmdzLT5oYW5kbGUpOworfQorCitpbnQKK2RybV9zeW5j b2JqX2hhbmRsZV90b19mZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAorCQkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlKQoreworCXN0cnVjdCBkcm1f c3luY29ial9oYW5kbGUgKmFyZ3MgPSBkYXRhOworCisJaWYgKCFkcm1fY29yZV9jaGVja19mZWF0 dXJlKGRldiwgRFJJVkVSX1NZTkNPQkopKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXJldHVybiBk cm1fc3luY29ial9oYW5kbGVfdG9fZmQoZmlsZV9wcml2YXRlLCBhcmdzLT5oYW5kbGUsCisJCQkJ CSZhcmdzLT5mZCk7Cit9CisKK2ludAorZHJtX3N5bmNvYmpfZmRfdG9faGFuZGxlX2lvY3RsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICAgc3RydWN0IGRybV9maWxl ICpmaWxlX3ByaXZhdGUpCit7CisJc3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSAqYXJncyA9IGRh dGE7CisKKwlpZiAoIWRybV9jb3JlX2NoZWNrX2ZlYXR1cmUoZGV2LCBEUklWRVJfU1lOQ09CSikp CisJCXJldHVybiAtRU5PREVWOworCisJcmV0dXJuIGRybV9zeW5jb2JqX2ZkX3RvX2hhbmRsZShm aWxlX3ByaXZhdGUsIGFyZ3MtPmZkLAorCQkJCQkmYXJncy0+aGFuZGxlKTsKK30KZGlmZiAtLWdp dCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAppbmRleCA2MTA1YzA1 Li4xZDQ4ZjZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1QLmgKKysrIGIvaW5jbHVkZS9k cm0vZHJtUC5oCkBAIC00MDUsNiArNDA1LDExIEBAIHN0cnVjdCBkcm1fZmlsZSB7CiAJLyoqIExv Y2sgZm9yIHN5bmNocm9uaXphdGlvbiBvZiBhY2Nlc3MgdG8gb2JqZWN0X2lkci4gKi8KIAlzcGlu bG9ja190IHRhYmxlX2xvY2s7CiAKKwkvKiogTWFwcGluZyBvZiBzeW5jIG9iamVjdCBoYW5kbGVz IHRvIG9iamVjdCBwb2ludGVycy4gKi8KKwlzdHJ1Y3QgaWRyIHN5bmNvYmpfaWRyOworCS8qKiBM b2NrIGZvciBzeW5jaHJvbml6YXRpb24gb2YgYWNjZXNzIHRvIHN5bmNvYmpfaWRyLiAqLworCXNw aW5sb2NrX3Qgc3luY29ial90YWJsZV9sb2NrOworCiAJc3RydWN0IGZpbGUgKmZpbHA7CiAJdm9p ZCAqZHJpdmVyX3ByaXY7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcnYuaCBiL2lu Y2x1ZGUvZHJtL2RybV9kcnYuaAppbmRleCA1Njk5ZjQyLi40OGZmMDZiIDEwMDY0NAotLS0gYS9p bmNsdWRlL2RybS9kcm1fZHJ2LmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2Rydi5oCkBAIC01Myw2 ICs1Myw3IEBAIHN0cnVjdCBkcm1fbW9kZV9jcmVhdGVfZHVtYjsKICNkZWZpbmUgRFJJVkVSX1JF TkRFUgkJCTB4ODAwMAogI2RlZmluZSBEUklWRVJfQVRPTUlDCQkJMHgxMDAwMAogI2RlZmluZSBE UklWRVJfS01TX0xFR0FDWV9DT05URVhUCTB4MjAwMDAKKyNkZWZpbmUgRFJJVkVSX1NZTkNPQkog ICAgICAgICAgICAgICAgICAweDQwMDAwCiAKIC8qKgogICogc3RydWN0IGRybV9kcml2ZXIgLSBE Uk0gZHJpdmVyIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmou aCBiL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNzE0YjY1OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvZHJtL2RybV9zeW5j b2JqLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3IFJlZCBIYXQK KyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJs aXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2Fy ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRp b25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5j bHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNv ZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VU IFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUg TElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H CisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICogQXV0 aG9yczoKKyAqCisgKi8KKyNpZm5kZWYgX19EUk1fU1lOQ09CSl9IX18KKyNkZWZpbmUgX19EUk1f U1lOQ09CSl9IX18KKworaW50IGRybV9zeW5jb2JqX2ZlbmNlX2dldChzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGVfcHJpdmF0ZSwKKwkJCSAgdTMyIGhhbmRsZSwKKwkJCSAgc3RydWN0IGRtYV9mZW5jZSAq KmZlbmNlKTsKK2ludCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2YXRlLAorCQkJICAgICAgdTMyIGhhbmRsZSwKKwkJCSAgICAgIHN0cnVjdCBkbWFf ZmVuY2UgKmZlbmNlKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2Ry bS5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm0uaAppbmRleCBiMmM1Mjg0Li5kZDBiOTljIDEwMDY0 NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vZHJt LmgKQEAgLTY0Nyw2ICs2NDcsNyBAQCBzdHJ1Y3QgZHJtX2dlbV9vcGVuIHsKICNkZWZpbmUgRFJN X0NBUF9DVVJTT1JfSEVJR0hUCQkweDkKICNkZWZpbmUgRFJNX0NBUF9BRERGQjJfTU9ESUZJRVJT CTB4MTAKICNkZWZpbmUgRFJNX0NBUF9QQUdFX0ZMSVBfVEFSR0VUCTB4MTEKKyNkZWZpbmUgRFJN X0NBUF9TWU5DT0JKCQkweDEzCiAKIC8qKiBEUk1fSU9DVExfR0VUX0NBUCBpb2N0bCBhcmd1bWVu dCB0eXBlICovCiBzdHJ1Y3QgZHJtX2dldF9jYXAgewpAQCAtNjk2LDYgKzY5NywyNSBAQCBzdHJ1 Y3QgZHJtX3ByaW1lX2hhbmRsZSB7CiAJX19zMzIgZmQ7CiB9OwogCitzdHJ1Y3QgZHJtX3N5bmNv YmpfY3JlYXRlIHsKKwlfX3UzMiBoYW5kbGU7CisJX191MzIgZmxhZ3M7Cit9OworCitzdHJ1Y3Qg ZHJtX3N5bmNvYmpfZGVzdHJveSB7CisJX191MzIgaGFuZGxlOworCV9fdTMyIHBhZDsKK307CisK K3N0cnVjdCBkcm1fc3luY29ial9oYW5kbGUgeworCV9fdTMyIGhhbmRsZTsKKwkvKiogRmxhZ3Mu LiBvbmx5IGFwcGxpY2FibGUgZm9yIGhhbmRsZS0+ZmQgKi8KKwlfX3UzMiBmbGFnczsKKworCV9f czMyIGZkOworCV9fdTMyIHBhZDsKK307CisKICNpZiBkZWZpbmVkKF9fY3BsdXNwbHVzKQogfQog I2VuZGlmCkBAIC04MTQsNiArODM0LDExIEBAIGV4dGVybiAiQyIgewogI2RlZmluZSBEUk1fSU9D VExfTU9ERV9DUkVBVEVQUk9QQkxPQglEUk1fSU9XUigweEJELCBzdHJ1Y3QgZHJtX21vZGVfY3Jl YXRlX2Jsb2IpCiAjZGVmaW5lIERSTV9JT0NUTF9NT0RFX0RFU1RST1lQUk9QQkxPQglEUk1fSU9X UigweEJFLCBzdHJ1Y3QgZHJtX21vZGVfZGVzdHJveV9ibG9iKQogCisjZGVmaW5lIERSTV9JT0NU TF9TWU5DT0JKX0NSRUFURQlEUk1fSU9XUigweEJGLCBzdHJ1Y3QgZHJtX3N5bmNvYmpfY3JlYXRl KQorI2RlZmluZSBEUk1fSU9DVExfU1lOQ09CSl9ERVNUUk9ZCURSTV9JT1dSKDB4QzAsIHN0cnVj dCBkcm1fc3luY29ial9kZXN0cm95KQorI2RlZmluZSBEUk1fSU9DVExfU1lOQ09CSl9IQU5ETEVf VE9fRkQJRFJNX0lPV1IoMHhDMSwgc3RydWN0IGRybV9zeW5jb2JqX2hhbmRsZSkKKyNkZWZpbmUg RFJNX0lPQ1RMX1NZTkNPQkpfRkRfVE9fSEFORExFCURSTV9JT1dSKDB4QzIsIHN0cnVjdCBkcm1f c3luY29ial9oYW5kbGUpCisKIC8qKgogICogRGV2aWNlIHNwZWNpZmljIGlvY3RscyBzaG91bGQg b25seSBiZSBpbiB0aGVpciByZXNwZWN0aXZlIGhlYWRlcnMKICAqIFRoZSBkZXZpY2Ugc3BlY2lm aWMgaW9jdGwgcmFuZ2UgaXMgZnJvbSAweDQwIHRvIDB4OWYuCi0tIAoyLjkuMwoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==