From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Hean-Loong, Ong" Subject: [PATCHv9 3/3] ARM:drm ivip Intel FPGA Video and Image Processing Suite Date: Mon, 4 Jun 2018 14:40:04 +0800 Message-ID: <1528094404-3542-4-git-send-email-hean.loong.ong@intel.com> References: <1528094404-3542-1-git-send-email-hean.loong.ong@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1528094404-3542-1-git-send-email-hean.loong.ong@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rob Herring , Dinh Nguyen , Daniel Vetter , Laurent Pinchart , Randy Dunlap Cc: hean.loong.ong@intel.com, devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org List-Id: devicetree@vger.kernel.org RnJvbTogT25nIEhlYW4gTG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4KCkRyaXZlciBm b3IgSW50ZWwgRlBHQSBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2luZyBTdWl0ZSBGcmFtZSBCdWZm ZXIgSUkuClRoZSBkcml2ZXIgb25seSBzdXBwb3J0cyB0aGUgSW50ZWwgQXJyaWExMCBkZXZraXQg YW5kIGl0cyB2YXJpYW50cy4KVGhpcyBkcml2ZXIgY2FuIGJlIGVpdGhlciBsb2FkZWQgc3RhdGlj bGx5IG9yIGluIG1vZHVsZXMuClRoZSBPRiBkZXZpY2UgdHJlZSBiaW5kaW5nIGlzIGxvY2F0ZWQg YXQ6CkRvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kaXNwbGF5L2FsdHIsdmlwLWZi Mi50eHQKClNpZ25lZC1vZmYtYnk6IE9uZyBIZWFuIExvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgICAgICAgICB8ICAgIDIg KwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAgICAgICB8ICAgIDEgKwogZHJpdmVy cy9ncHUvZHJtL2l2aXAvS2NvbmZpZyAgICAgICAgICB8ICAgMTQgKysrCiBkcml2ZXJzL2dwdS9k cm0vaXZpcC9NYWtlZmlsZSAgICAgICAgIHwgICAgOSArKwogZHJpdmVycy9ncHUvZHJtL2l2aXAv aW50ZWxfdmlwX2Nvbm4uYyB8ICAgOTUgKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJt L2l2aXAvaW50ZWxfdmlwX2NvcmUuYyB8ICAxNjEgKysrKysrKysrKysrKysrKysrKysrKysrKysr CiBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfZHJ2LmggIHwgICA1MiArKysrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5jICAgfCAgMTkzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogOCBmaWxlcyBjaGFuZ2VkLCA1MjcgaW5zZXJ0aW9ucygr KSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZp cC9LY29uZmlnCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZp bGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfY29u bi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2Nv cmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9k cnYuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9v Zi5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9k cm0vS2NvbmZpZwppbmRleCBkZWVlZmE3Li5jZGM4ZTFhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwpAQCAtMjA0LDYgKzIw NCw4IEBAIHNvdXJjZSAiZHJpdmVycy9ncHUvZHJtL25vdXZlYXUvS2NvbmZpZyIKIAogc291cmNl ICJkcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnIgogCitzb3VyY2UgImRyaXZlcnMvZ3B1L2Ry bS9pdmlwL0tjb25maWciCisKIGNvbmZpZyBEUk1fVkdFTQogCXRyaXN0YXRlICJWaXJ0dWFsIEdF TSBwcm92aWRlciIKIAlkZXBlbmRzIG9uIERSTQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCmluZGV4IDUwMDkzZmYuLmMwZmJh MWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dw dS9kcm0vTWFrZWZpbGUKQEAgLTYwLDYgKzYwLDcgQEAgb2JqLSQoQ09ORklHX0RSTV9BTURHUFUp Kz0gYW1kL2FtZGdwdS8KIG9iai0kKENPTkZJR19EUk1fTUdBKQkrPSBtZ2EvCiBvYmotJChDT05G SUdfRFJNX0k4MTApCSs9IGk4MTAvCiBvYmotJChDT05GSUdfRFJNX0k5MTUpCSs9IGk5MTUvCitv YmotJChDT05GSUdfRFJNX0lWSVApICs9IGl2aXAvCiBvYmotJChDT05GSUdfRFJNX01HQUcyMDAp ICs9IG1nYWcyMDAvCiBvYmotJChDT05GSUdfRFJNX1ZDNCkgICs9IHZjNC8KIG9iai0kKENPTkZJ R19EUk1fQ0lSUlVTX1FFTVUpICs9IGNpcnJ1cy8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pdmlwL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkMDhiOTAKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaXZpcC9LY29uZmlnCkBAIC0wLDAgKzEsMTQgQEAKK2NvbmZpZyBEUk1fSVZJ UAorICAgICAgICB0cmlzdGF0ZSAiSW50ZWwgRkdQQSBWaWRlbyBhbmQgSW1hZ2UgUHJvY2Vzc2lu ZyIKKyAgICAgICAgZGVwZW5kcyBvbiBEUk0gJiYgT0YKKyAgICAgICAgc2VsZWN0IERSTV9HRU1f Q01BX0hFTFBFUgorICAgICAgICBzZWxlY3QgRFJNX0tNU19IRUxQRVIKKyAgICAgICAgc2VsZWN0 IERSTV9LTVNfRkJfSEVMUEVSCisgICAgICAgIHNlbGVjdCBEUk1fS01TX0NNQV9IRUxQRVIKKyAg ICAgICAgaGVscAorCQkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3UgaGF2ZSBhbiBJbnRlbCBG UEdBIEFycmlhIDEwIHN5c3RlbQorCQkgIGFuZCBhYm92ZSB3aXRoIGFuIEludGVsIERpc3BsYXkg UG9ydCBJUC4gVGhpcyBkb2VzIG5vdCBzdXBwb3J0CisJCSAgbGVnYWN5IEludGVsIEZQR0EgQ3lj bG9uZSBWIGRpc3BsYXkgcG9ydC4gQ3VycmVudGx5IG9ubHkgc2luZ2xlCisJCSAgZnJhbWUgYnVm ZmVyIGlzIHN1cHBvcnRlZC4gTm90ZSB0aGF0IEFDUEkgYW5kIFhfODYgYXJjaGl0ZWN0dXJlCisJ CSAgaXMgbm90IHN1cHBvcnRlZCBmb3IgQXJyaWExMC4gSWYgTSBpcyBzZWxlY3RlZCB0aGUgbW9k dWxlIHdpbGwgYmUKKwkJICBjYWxsZWQgaXZpcC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pdmlwL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2l2aXAvTWFrZWZpbGUKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1NWIwNAotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pdmlwL01ha2VmaWxlCkBAIC0wLDAgKzEsOSBAQAorIworIyBNYWtlZmls ZSBmb3IgdGhlIGRybSBkZXZpY2UgZHJpdmVyLiAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgc3VwcG9y dCBmb3IgdGhlCisjIERpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmUgKERSSSkgaW4gWEZy ZWU4NiA0LjEuMCBhbmQgaGlnaGVyLgorCitjY2ZsYWdzLXkgOj0gLUlpbmNsdWRlL2RybQorCitv YmotJChDT05GSUdfRFJNX0lWSVApICs9IGl2aXAubworaXZpcC1vYmpzIDo9IGludGVsX3ZpcF9v Zi5vIGludGVsX3ZpcF9jb3JlLm8gXAorCWludGVsX3ZpcF9jb25uLm8KZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb25uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaXZp cC9pbnRlbF92aXBfY29ubi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2 YmIwNGMKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBf Y29ubi5jCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBpbnRlbF92aXBfY29ubi5jIC0tIEludGVs IFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJUCkKKyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2 ZXIKKyAqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRl ciBjb21wb25lbnQuCisgKiBNb3JlIGluZm8gb24gdGhlIGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBp biB0aGUgSW50ZWwgVmlkZW8KKyAqIGFuZCBJbWFnZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3Vp ZGUgYXQgdGhpcyBhZGRyZXNzCisgKiBodHRwOi8vd3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91 Zy91Z192aXAucGRmLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMg YW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVy c2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAq CisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1 c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IK KyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBBdXRob3JzOgorICogT25nLCBIZWFuLUxvb25nIDxo ZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+CisgKgorICovCisKKyNpbmNsdWRlIDxsaW51eC9pbml0 Lmg+CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNf aGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgorI2luY2x1ZGUgPGRy bS9kcm1fZW5jb2Rlcl9zbGF2ZS5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+ CisKK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCitpbnRlbHZpcGZiX2RybV9jb25u ZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2Up Cit7CisJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOworfQorCitzdGF0aWMgdm9p ZCBpbnRlbHZpcGZiX2RybV9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQoreworCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOworCWRy bV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9jb25uZWN0b3JfZnVuY3MgaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Z1bmNzID0gewor CS5yZXNldCA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNldCwKKwkuZGV0ZWN0ID0g aW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2RldGVjdCwKKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxw ZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKKwkuZGVzdHJveSA9IGludGVsdmlwZmJf ZHJtX2Nvbm5lY3Rvcl9kZXN0cm95LAorCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9t aWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAorfTsKKworc3RhdGljIGludCBpbnRl bHZpcGZiX2RybV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybSA9IGNvbm5lY3Rvci0+ZGV2OworCWlu dCBjb3VudDsKKworCWNvdW50ID0gZHJtX2FkZF9tb2Rlc19ub2VkaWQoY29ubmVjdG9yLCBkcm0t Pm1vZGVfY29uZmlnLm1heF93aWR0aCwKKwkJCWRybS0+bW9kZV9jb25maWcubWF4X2hlaWdodCk7 CisJZHJtX3NldF9wcmVmZXJyZWRfbW9kZShjb25uZWN0b3IsIGRybS0+bW9kZV9jb25maWcubWF4 X3dpZHRoLAorCQkJZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKKwlyZXR1cm4gY291bnQ7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MKK2lu dGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9IGlu dGVsdmlwZmJfZHJtX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsCit9OworCitzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqCitpbnRlbHZpcGZiX2Nvbm5fc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRybSkKK3sK KwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubjsKKwlpbnQgcmV0OworCisJY29ubiA9IGRldm1f a3phbGxvYyhkcm0tPmRldiwgc2l6ZW9mKCpjb25uKSwgR0ZQX0tFUk5FTCk7CisJaWYgKElTX0VS Uihjb25uKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXQgPSBkcm1fY29ubmVjdG9yX2luaXQoZHJt LCBjb25uLCAmaW50ZWx2aXBmYl9kcm1fY29ubmVjdG9yX2Z1bmNzLAorCQkJRFJNX01PREVfQ09O TkVDVE9SX0Rpc3BsYXlQb3J0KTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRybS0+ZGV2 LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgZHJtIGNvbm5lY3RvclxuIik7CisJCXJldCA9IC1FTk9N RU07CisJCWdvdG8gZXJyb3JfY29ubmVjdG9yX2NsZWFudXA7CisJfQorCisJY29ubi0+cG9sbGVk ID0gMDsKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubiwgJmludGVsdmlwZmJfZHJtX2Nv bm5lY3Rvcl9oZWxwZXJfZnVuY3MpOworCisJcmV0dXJuIGNvbm47CisKK2Vycm9yX2Nvbm5lY3Rv cl9jbGVhbnVwOgorCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uKTsKKworCXJldHVybiBOVUxM OworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2l2aXAvaW50ZWxfdmlwX2NvcmUuYyBi L2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9jb3JlLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZWQzYWYzNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pdmlwL2ludGVsX3ZpcF9jb3JlLmMKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBpbnRl bF92aXBfY29yZS5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJUCkKKyAq IEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIKKyAqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUg SW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuCisgKiBNb3JlIGluZm8gb24gdGhlIGhh cmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KKyAqIGFuZCBJbWFnZSBQcm9j ZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzCisgKiBodHRwOi8vd3d3LmFs dGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0 CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBBdXRob3JzOgor ICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+CisgKgorICovCisK KyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hl bHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZmJfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2Ry bV9mYl9jbWFfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW1fY21hX2hlbHBlci5oPgor I2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9zaW1w bGVfa21zX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBl ci5oPgorCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5o PgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCisjaW5jbHVkZSAiaW50ZWxfdmlwX2Rydi5o IgorCitzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2VuYWJsZShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNw bGF5X3BpcGUgKnBpcGUsCisJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkKK3sKKwkvKgorCSAqIFRoZSBmcmFtZWluZm8gdmFyaWFibGUgaGFzIHRvIGNvcnJlc3BvbmQg dG8gdGhlIHNpemUgb2YgdGhlIFZJUCBTdWl0ZQorCSAqIEZyYW1lIFJlYWRlciByZWdpc3RlciA3 IHdoaWNoIHdpbGwgZGV0ZXJtaW5lIHRoZSBtYXhpbXVtIHNpemUgdXNlZAorCSAqIGluIHRoaXMg ZnJhbWVpbmZvCisJICovCisKKwl1MzIgZnJhbWVpbmZvOworCXN0cnVjdCBpbnRlbHZpcGZiX3By aXYgKnByaXYgPSBwaXBlLT5wbGFuZS5kZXYtPmRldl9wcml2YXRlOworCXZvaWQgX19pb21lbSAq YmFzZSA9IHByaXYtPmJhc2U7CisJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUgPSBwaXBl LT5wbGFuZS5zdGF0ZTsKKwlkbWFfYWRkcl90IGFkZHI7CisKKwlhZGRyID0gZHJtX2ZiX2NtYV9n ZXRfZ2VtX2FkZHIoc3RhdGUtPmZiLCBzdGF0ZSwgMCk7CisKKwlmcmFtZWluZm8gPQorCQlyZWFk bChiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9SRUFERVIpICYgMHgwMGZmZmZmZjsKKwl3cml0ZWwo ZnJhbWVpbmZvLCBiYXNlICsgSU5URUxWSVBGQl9GUkFNRV9JTkZPKTsKKwl3cml0ZWwoYWRkciwg YmFzZSArIElOVEVMVklQRkJfRlJBTUVfU1RBUlQpOworCS8qIEZpbmFsbHkgc2V0IHRoZSBjb250 cm9sIHJlZ2lzdGVyIHRvIDEgdG8gc3RhcnQgc3RyZWFtaW5nICovCisJd3JpdGVsKDEsIGJhc2Ug KyBJTlRFTFZJUEZCX0NPTlRST0wpOworfQorCitzdGF0aWMgdm9pZCBpbnRlbHZpcGZiX2Rpc2Fi bGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQoreworCXN0cnVjdCBpbnRl bHZpcGZiX3ByaXYgKnByaXYgPSBwaXBlLT5wbGFuZS5kZXYtPmRldl9wcml2YXRlOworCXZvaWQg X19pb21lbSAqYmFzZSA9IHByaXYtPmJhc2U7CisJLyogc2V0IHRoZSBjb250cm9sIHJlZ2lzdGVy IHRvIDAgdG8gc3RvcCBzdHJlYW1pbmcgKi8KKwl3cml0ZWwoMCwgYmFzZSArIElOVEVMVklQRkJf Q09OVFJPTCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNz IGludGVsdmlwZmJfbW9kZV9jb25maWdfZnVuY3MgPSB7CisJLmZiX2NyZWF0ZSA9IGRybV9nZW1f ZmJfY3JlYXRlLAorCS5hdG9taWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKKwku YXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKK307CisKK3N0YXRpYyB2 b2lkIGludGVsdmlwZmJfc2V0dXBfbW9kZV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRybSkK K3sKKwlkcm1fbW9kZV9jb25maWdfaW5pdChkcm0pOworCWRybS0+bW9kZV9jb25maWcuZnVuY3Mg PSAmaW50ZWx2aXBmYl9tb2RlX2NvbmZpZ19mdW5jczsKK30KKworc3RhdGljIGludCBpbnRlbHZp cGZiX3BpcGVfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUs CisJCQkJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQoreworCXJldHVybiBk cm1fZ2VtX2ZiX3ByZXBhcmVfZmIoJnBpcGUtPnBsYW5lLCBwbGFuZV9zdGF0ZSk7Cit9CisKKwor c3RhdGljIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyBmYnByaXZfZnVuY3Mg PSB7CisJLnByZXBhcmVfZmIgPSBpbnRlbHZpcGZiX3BpcGVfcHJlcGFyZV9mYiwKKwkuZW5hYmxl ID0gaW50ZWx2aXBmYl9lbmFibGUsCisJLmRpc2FibGUgPSBpbnRlbHZpcGZiX2Rpc2FibGUKK307 CisKK2ludCBpbnRlbHZpcGZiX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlpbnQgcmV0 dmFsOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJc3RydWN0IGludGVsdmlwZmJfcHJpdiAq ZmJwcml2ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcjsKKwl1MzIgZm9ybWF0c1tdID0ge0RSTV9GT1JNQVRfWFJHQjg4ODh9OworCisJZHJt ID0gZmJwcml2LT5kcm07CisKKwlkcm0tPmRldl9wcml2YXRlID0gZmJwcml2OworCisJaW50ZWx2 aXBmYl9zZXR1cF9tb2RlX2NvbmZpZyhkcm0pOworCisJY29ubmVjdG9yID0gaW50ZWx2aXBmYl9j b25uX3NldHVwKGRybSk7CisJaWYgKCFjb25uZWN0b3IpIHsKKwkJZGV2X2Vycihkcm0tPmRldiwg IkNvbm5lY3RvciBzZXR1cCBmYWlsZWRcbiIpOworCQlnb3RvIGVycl9tb2RlX2NvbmZpZzsKKwl9 CisKKwlyZXR2YWwgPSBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9pbml0KGRybSwgJmZicHJpdi0+ cGlwZSwKKwkJCSZmYnByaXZfZnVuY3MsIGZvcm1hdHMsCisJCQlBUlJBWV9TSVpFKGZvcm1hdHMp LCBOVUxMLCBjb25uZWN0b3IpOworCWlmIChyZXR2YWwgPCAwKSB7CisJCWRldl9lcnIoZHJtLT5k ZXYsICJDYW5ub3Qgc2V0dXAgc2ltcGxlIGRpc3BsYXkgcGlwZVxuIik7CisJCWdvdG8gZXJyX21v ZGVfY29uZmlnOworCX0KKworCWZicHJpdi0+ZmJjbWEgPSBkcm1fZmJkZXZfY21hX2luaXQoZHJt LAorCQkJZHJtLT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGgsCisJCQlkcm0tPm1vZGVfY29u ZmlnLm51bV9jb25uZWN0b3IpOworCisJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRybSk7CisKKwlk cm1fZGV2X3JlZ2lzdGVyKGRybSwgMCk7CisKKwlyZXR1cm4gcmV0dmFsOworCitlcnJfbW9kZV9j b25maWc6CisKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworCXJldHVybiAtRU5PREVW OworfQorCitpbnQgaW50ZWx2aXBmYl9yZW1vdmUoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0 cnVjdCBpbnRlbHZpcGZiX3ByaXYgKmZicHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm0gPSAgZmJwcml2LT5kcm07CisKKwlkcm1fZGV2X3VucmVnaXN0 ZXIoZHJtKTsKKworCWlmIChmYnByaXYtPmZiY21hKQorCQlkcm1fZmJkZXZfY21hX2ZpbmkoZmJw cml2LT5mYmNtYSk7CisKKwlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkcm0pOworCWRybV9kZXZf dW5yZWYoZHJtKTsKKworCXJldHVybiAwOworfQorCitNT0RVTEVfQVVUSE9SKCJPbmcsIEhlYW4t TG9vbmcgPGhlYW4ubG9vbmcub25nQGludGVsLmNvbT4iKTsKK01PRFVMRV9ERVNDUklQVElPTigi SW50ZWwgVklQIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIiKTsKK01PRFVMRV9MSUNFTlNFKCJHUEwg djIiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9kcnYuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4wYTM1NTVkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2l2aXAvaW50ZWxfdmlwX2Rydi5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln aHQgKEMpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogSW50ZWwgVmlkZW8gYW5kIElt YWdlIFByb2Nlc3NpbmcoVklQKSBGcmFtZSBCdWZmZXIgSUkgZHJpdmVyLgorICoKKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFC SUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhbG9uZyB3aXRoCisgKiB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogQXV0aG9yczoKKyAqIE9uZywgSGVhbi1M b29uZyA8aGVhbi5sb29uZy5vbmdAaW50ZWwuY29tPgorICoKKyAqLworI2lmbmRlZiBfSU5URUxf VklQX0RSVl9ICisjZGVmaW5lIF9JTlRFTF9WSVBfRFJWX0gKKworI2RlZmluZSBEUklWRVJfTkFN RSAgICAiaW50ZWx2aXBmYiIKKyNkZWZpbmUgQllURVNfUEVSX1BJWEVMCSA0CisjZGVmaW5lIENS VENfTlVNCSAgICAgICAgMQorI2RlZmluZSBDT05OX05VTQkgICAgICAgIDEKKworLyogY29udHJv bCByZWdpc3RlcnMgKi8KKyNkZWZpbmUgSU5URUxWSVBGQl9DT05UUk9MCSAgICAgIDAKKyNkZWZp bmUgSU5URUxWSVBGQl9TVEFUVVMJICAgICAgIDB4NAorI2RlZmluZSBJTlRFTFZJUEZCX0lOVEVS UlVQVAkgICAgMHg4CisjZGVmaW5lIElOVEVMVklQRkJfRlJBTUVfQ09VTlRFUgkweEMKKyNkZWZp bmUgSU5URUxWSVBGQl9GUkFNRV9EUk9QCSAgIDB4MTAKKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFN RV9JTkZPCSAgIDB4MTQKKyNkZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9TVEFSVAkgIDB4MTgKKyNk ZWZpbmUgSU5URUxWSVBGQl9GUkFNRV9SRUFERVIJICAgICAgICAgMHgxQworCitpbnQgaW50ZWx2 aXBmYl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpOworaW50IGludGVsdmlwZmJfcmVtb3ZlKHN0 cnVjdCBkZXZpY2UgKmRldik7CitpbnQgaW50ZWx2aXBmYl9zZXR1cF9jcnRjKHN0cnVjdCBkcm1f ZGV2aWNlICpkcm0pOworc3RydWN0IGRybV9jb25uZWN0b3IgKmludGVsdmlwZmJfY29ubl9zZXR1 cChzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKTsKKworc3RydWN0IGludGVsdmlwZmJfcHJpdiB7CisJ c3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlIHBpcGU7CisJc3RydWN0IGRybV9mYmRldl9j bWEgKmZiY21hOworCXN0cnVjdCBkcm1fZGV2aWNlICpkcm07CisJdm9pZCAgICBfX2lvbWVtICpi YXNlOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRl bF92aXBfb2YuYyBiL2RyaXZlcnMvZ3B1L2RybS9pdmlwL2ludGVsX3ZpcF9vZi5jCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3MzAyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaXZpcC9pbnRlbF92aXBfb2YuYwpAQCAtMCwwICsxLDE5MyBAQAorLyoK KyAqIGludGVsX3ZpcF9vZi5jIC0tIEludGVsIFZpZGVvIGFuZCBJbWFnZSBQcm9jZXNzaW5nKFZJ UCkKKyAqIEZyYW1lIEJ1ZmZlciBJSSBkcml2ZXIKKyAqCisgKiBUaGlzIGRyaXZlciBzdXBwb3J0 cyB0aGUgSW50ZWwgVklQIEZyYW1lIFJlYWRlciBjb21wb25lbnQuCisgKiBNb3JlIGluZm8gb24g dGhlIGhhcmR3YXJlIGNhbiBiZSBmb3VuZCBpbiB0aGUgSW50ZWwgVmlkZW8KKyAqIGFuZCBJbWFn ZSBQcm9jZXNzaW5nIFN1aXRlIFVzZXIgR3VpZGUgYXQgdGhpcyBhZGRyZXNzCisgKiBodHRwOi8v d3d3LmFsdGVyYS5jb20vbGl0ZXJhdHVyZS91Zy91Z192aXAucGRmLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBBdXRo b3JzOgorICogT25nLCBIZWFuLUxvb25nIDxoZWFuLmxvb25nLm9uZ0BpbnRlbC5jb20+CisgKgor ICovCisjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2Zi X2NtYV9oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+CisjaW5j bHVkZSA8ZHJtL2RybV9vZi5oPgorI2luY2x1ZGUgPGRybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIu aD4KKworI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L2luaXQu aD4KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K KyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KKworI2luY2x1ZGUgImludGVsX3Zp cF9kcnYuaCIKKworREVGSU5FX0RSTV9HRU1fQ01BX0ZPUFMoZHJtX2ZvcHMpOworCitzdGF0aWMg dm9pZCBpbnRlbHZpcGZiX2xhc3RjbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtKQoreworCXN0 cnVjdCBpbnRlbHZpcGZiX3ByaXYgKnByaXYgPSBkcm0tPmRldl9wcml2YXRlOworCisJZHJtX2Zi ZGV2X2NtYV9yZXN0b3JlX21vZGUocHJpdi0+ZmJjbWEpOworfQorCitzdGF0aWMgc3RydWN0IGRy bV9kcml2ZXIgaW50ZWx2aXBmYl9kcm0gPSB7CisJLmRyaXZlcl9mZWF0dXJlcyA9CisJCQlEUklW RVJfTU9ERVNFVCB8IERSSVZFUl9HRU0gfAorCQkJRFJJVkVSX1BSSU1FIHwgRFJJVkVSX0FUT01J QywKKwkuZ2VtX2ZyZWVfb2JqZWN0X3VubG9ja2VkID0gZHJtX2dlbV9jbWFfZnJlZV9vYmplY3Qs CisJLmdlbV92bV9vcHMgPSAmZHJtX2dlbV9jbWFfdm1fb3BzLAorCS5kdW1iX2NyZWF0ZSA9IGRy bV9nZW1fY21hX2R1bWJfY3JlYXRlLAorCS5kdW1iX2Rlc3Ryb3kgPSBkcm1fZ2VtX2R1bWJfZGVz dHJveSwKKwkucHJpbWVfaGFuZGxlX3RvX2ZkID0gZHJtX2dlbV9wcmltZV9oYW5kbGVfdG9fZmQs CisJLnByaW1lX2ZkX3RvX2hhbmRsZSA9IGRybV9nZW1fcHJpbWVfZmRfdG9faGFuZGxlLAorCS5n ZW1fcHJpbWVfZXhwb3J0ID0gZHJtX2dlbV9wcmltZV9leHBvcnQsCisJLmdlbV9wcmltZV9pbXBv cnQgPSBkcm1fZ2VtX3ByaW1lX2ltcG9ydCwKKwkuZ2VtX3ByaW1lX2dldF9zZ190YWJsZSA9IGRy bV9nZW1fY21hX3ByaW1lX2dldF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJs ZSA9IGRybV9nZW1fY21hX3ByaW1lX2ltcG9ydF9zZ190YWJsZSwKKwkuZ2VtX3ByaW1lX3ZtYXAg PSBkcm1fZ2VtX2NtYV9wcmltZV92bWFwLAorCS5nZW1fcHJpbWVfdnVubWFwID0gZHJtX2dlbV9j bWFfcHJpbWVfdnVubWFwLAorCS5nZW1fcHJpbWVfbW1hcCA9IGRybV9nZW1fY21hX3ByaW1lX21t YXAsCisJLmxhc3RjbG9zZSA9IGludGVsdmlwZmJfbGFzdGNsb3NlLAorCS5uYW1lID0gRFJJVkVS X05BTUUsCisJLmRhdGUgPSAiMjAxNzA3MjkiLAorCS5kZXNjID0gIkludGVsIEZQR0EgVklQIFNV SVRFIiwKKwkubWFqb3IgPSAxLAorCS5taW5vciA9IDAsCisJLmlvY3RscyA9IE5VTEwsCisJLnBh dGNobGV2ZWwgPSAwLAorCS5mb3BzID0gJmRybV9mb3BzLAorfTsKKworLyoKKyAqIFNldHRpbmcg dXAgaW5mb3JtYXRpb24gZGVyaXZlZCBmcm9tIE9GIERldmljZSBUcmVlIE5vZGVzCisgKiBtYXgt d2lkdGgsIG1heC1oZWlnaHQsIGJpdHMgcGVyIHBpeGVsLCBtZW1vcnkgcG9ydCB3aWR0aAorICov CisKK3N0YXRpYyBpbnQgaW50ZWx2aXBmYl9kcm1fc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LAor CQkJCQlzdHJ1Y3QgaW50ZWx2aXBmYl9wcml2ICpmYnByaXYpCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRybSA9IGZicHJpdi0+ZHJtOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9m X25vZGU7CisJaW50IG1lbV93b3JkX3dpZHRoOworCWludCBtYXhfaCwgbWF4X3c7CisJaW50IHJl dDsKKworCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiYWx0cixtYXgtd2lkdGgiLCAm bWF4X3cpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycihkZXYsCisJCQkiTWlzc2luZyByZXF1aXJl ZCBwYXJhbWV0ZXIgJ2FsdHIsbWF4LXdpZHRoJyIpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJl dCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5wLCAiYWx0cixtYXgtaGVpZ2h0IiwgJm1heF9oKTsK KwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LAorCQkJIk1pc3NpbmcgcmVxdWlyZWQgcGFyYW1l dGVyICdhbHRyLG1heC1oZWlnaHQnIik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0ID0gb2Zf cHJvcGVydHlfcmVhZF91MzIobnAsICJhbHRyLG1lbS1wb3J0LXdpZHRoIiwgJm1lbV93b3JkX3dp ZHRoKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAiTWlzc2luZyByZXF1aXJlZCBwYXJh bWV0ZXIgJ2FsdHIsbWVtLXBvcnQtd2lkdGggJyIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWlm ICghKG1lbV93b3JkX3dpZHRoID49IDMyICYmIG1lbV93b3JkX3dpZHRoICUgMzIgPT0gMCkpIHsK KwkJZGV2X2VycihkZXYsCisJCQkibWVtLXdvcmQtd2lkdGggaXMgc2V0IHRvICVpLiBtdXN0IGJl ID49IDMyIGFuZCBtdWx0aXBsZSBvZiAzMi4iLAorCQkJIG1lbV93b3JkX3dpZHRoKTsKKwkJcmV0 dXJuIC1FTk9ERVY7CisJfQorCisJZHJtLT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSA2NDA7CisJ ZHJtLT5tb2RlX2NvbmZpZy5taW5faGVpZ2h0ID0gNDgwOworCWRybS0+bW9kZV9jb25maWcubWF4 X3dpZHRoID0gbWF4X3c7CisJZHJtLT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0ID0gbWF4X2g7CisJ ZHJtLT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGggPSAzMjsKKworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50IGludGVsdmlwZmJfb2ZfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKK3sKKwlpbnQgcmV0dmFsOworCXN0cnVjdCByZXNvdXJjZSAqcmVnX3JlczsKKwlzdHJ1 Y3QgaW50ZWx2aXBmYl9wcml2ICpmYnByaXY7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYt PmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtOworCisJZmJwcml2ID0gZGV2bV9remFsbG9j KGRldiwgc2l6ZW9mKCpmYnByaXYpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWZicHJpdikKKwkJcmV0 dXJuIC1FTk9NRU07CisKKwkvKnNldHVwIERSTSAqLworCWRybSA9IGRybV9kZXZfYWxsb2MoJmlu dGVsdmlwZmJfZHJtLCBkZXYpOworCWlmIChJU19FUlIoZHJtKSkKKwkJcmV0dXJuIFBUUl9FUlIo ZHJtKTsKKworCXJldHZhbCA9IGRtYV9zZXRfbWFza19hbmRfY29oZXJlbnQoZHJtLT5kZXYsIERN QV9CSVRfTUFTSygzMikpOworCWlmIChyZXR2YWwpCisJCXJldHVybiAtRU5PREVWOworCisJZmJw cml2LT5kcm0gPSBkcm07CisKKwlyZWdfcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYs IElPUkVTT1VSQ0VfTUVNLCAwKTsKKwlpZiAoIXJlZ19yZXMpCisJCXJldHVybiAtRU5PTUVNOwor CisJZmJwcml2LT5iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKGRldiwgcmVnX3Jlcyk7CisK KwlpZiAoSVNfRVJSKGZicHJpdi0+YmFzZSkpIHsKKwkJZGV2X2VycihkZXYsICJkZXZtX2lvcmVt YXBfcmVzb3VyY2UgZmFpbGVkXG4iKTsKKwkJcmV0dmFsID0gUFRSX0VSUihmYnByaXYtPmJhc2Up OworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlpbnRlbHZpcGZiX2RybV9zZXR1cChkZXYsIGZi cHJpdik7CisKKwlkZXZfc2V0X2RydmRhdGEoZGV2LCBmYnByaXYpOworCisJcmV0dXJuIGludGVs dmlwZmJfcHJvYmUoZGV2KTsKK30KKworc3RhdGljIGludCBpbnRlbHZpcGZiX29mX3JlbW92ZShz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQoreworCXJldHVybiBpbnRlbHZpcGZiX3JlbW92 ZSgmcGRldi0+ZGV2KTsKK30KKworLyoKKyAqIFRoZSBuYW1lIHZpcC1mcmFtZS1idWZmZXItMi4w IGlzIGRlcml2ZWQgZnJvbQorICogaHR0cDovL3d3dy5hbHRlcmEuY29tL2xpdGVyYXR1cmUvdWcv dWdfdmlwLnBkZgorICogZnJhbWUgYnVmZmVyIElQIGNvcmVzIHNlY3Rpb24gMTQKKyAqLworCitz dGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBpbnRlbHZpcGZiX29mX21hdGNoW10gPSB7 CisJeyAuY29tcGF0aWJsZSA9ICJhbHRyLHZpcC1mcmFtZS1idWZmZXItMi4wIiB9LAorCXt9LAor fTsKKworTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgaW50ZWx2aXBmYl9vZl9tYXRjaCk7CisKK3N0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGludGVsdmlwZmJfZHJpdmVyID0geworCS5wcm9i ZSA9IGludGVsdmlwZmJfb2ZfcHJvYmUsCisJLnJlbW92ZSA9IGludGVsdmlwZmJfb2ZfcmVtb3Zl LAorCS5kcml2ZXIgPSB7CisJCS5uYW1lID0gRFJJVkVSX05BTUUsCisJCS5vZl9tYXRjaF90YWJs ZSA9IGludGVsdmlwZmJfb2ZfbWF0Y2gsCisJfSwKK307CisKK21vZHVsZV9wbGF0Zm9ybV9kcml2 ZXIoaW50ZWx2aXBmYl9kcml2ZXIpOwotLSAKMS43LjEKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=