From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: [PATCH v2 11/11] drm/exynos: remove struct exynos_drm_encoder layer Date: Thu, 6 Aug 2015 10:31:48 -0300 Message-ID: <1438867908-18975-2-git-send-email-gustavo@padovan.org> References: <1438817060-22164-10-git-send-email-gustavo@padovan.org> <1438867908-18975-1-git-send-email-gustavo@padovan.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1438867908-18975-1-git-send-email-gustavo@padovan.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-samsung-soc@vger.kernel.org Cc: tjakobi@math.uni-bielefeld.de, Gustavo Padovan , dri-devel@lists.freedesktop.org List-Id: linux-samsung-soc@vger.kernel.org RnJvbTogR3VzdGF2byBQYWRvdmFuIDxndXN0YXZvLnBhZG92YW5AY29sbGFib3JhLmNvLnVrPgoK c3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciB3YXMganVzdGluZyB3cmFwcGluZyBzdHJ1Y3QgZHJt X2VuY29kZXIsIGl0IGhhZApvbmx5IGEgZHJtX2VuY29kZXIgbWVtYmVyIGFuZCB0aGUgaW50ZXJu YWwgZXh5bm9zX2RybV9lbmNvZGVycyBvcHMgdGhhdAp3YXMgZGlyZWN0bHkgbWFwcGVkIHRvIHRo ZSBkcm1fZW5jb2RlciBoZWxwZXIgZnVuY3MuCgpTbyBub3cgZXh5bm9zIERSTSB1c2VzIHN0cnVj dCBkcm1fZW5jb2RlciBkaXJlY3RseSwgdGhpcyByZW1vdmVzCmNvbXBsZXRlbHkgdGhlIHN0cnVj dCBleHlub3NfZHJtX2VuY29kZXIuCgpTaWduZWQtb2ZmLWJ5OiBHdXN0YXZvIFBhZG92YW4gPGd1 c3Rhdm8ucGFkb3ZhbkBjb2xsYWJvcmEuY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3M3X2RybV9kZWNvbi5jICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlu b3NfZHBfY29yZS5jICAgICB8ICA2OCArKysrKysrKysrKystLS0tLS0KIGRyaXZlcnMvZ3B1L2Ry bS9leHlub3MvZXh5bm9zX2RwX2NvcmUuaCAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9l eHlub3MvZXh5bm9zX2RybV9jb3JlLmMgICAgfCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL2V4eW5v cy9leHlub3NfZHJtX2NydGMuYyAgICB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4 eW5vc19kcm1fZHBpLmMgICAgIHwgIDUxICsrKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v ZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMgICAgIHwgICAxIC0KIGRyaXZlcnMvZ3B1L2RybS9leHlu b3MvZXh5bm9zX2RybV9kcnYuaCAgICAgfCAgNDcgKystLS0tLS0tLS0tLQogZHJpdmVycy9ncHUv ZHJtL2V4eW5vcy9leHlub3NfZHJtX2RzaS5jICAgICB8ICA4MCArKysrKysrKysrKy0tLS0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9lbmNvZGVyLmMgfCAxMDUgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX2VuY29kZXIuaCB8ICAyMiAtLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV9maW1kLmMgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2Ry bV92aWRpLmMgICAgfCAgNzEgKysrKysrKysrKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfaGRtaS5jICAgICAgICB8ICA4NSArKysrKysrKysrKysrLS0tLS0tLS0tCiAx NSBmaWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwgMzA5IGRlbGV0aW9ucygtKQogZGVs ZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9lbmNvZGVy LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1f ZW5jb2Rlci5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvTWFrZWZpbGUKaW5kZXggN2RlMGIxMC4uNjFjMjkwNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9NYWtlZmlsZQorKysgYi9kcml2ZXJz L2dwdS9kcm0vZXh5bm9zL01ha2VmaWxlCkBAIC0zLDEwICszLDkgQEAKICMgRGlyZWN0IFJlbmRl cmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFuZCBoaWdoZXIuCiAK IGNjZmxhZ3MteSA6PSAtSWluY2x1ZGUvZHJtIC1JZHJpdmVycy9ncHUvZHJtL2V4eW5vcwotZXh5 bm9zZHJtLXkgOj0gZXh5bm9zX2RybV9kcnYubyBleHlub3NfZHJtX2VuY29kZXIubyBcCi0JCWV4 eW5vc19kcm1fY3J0Yy5vIGV4eW5vc19kcm1fZmJkZXYubyBleHlub3NfZHJtX2ZiLm8gXAotCQll eHlub3NfZHJtX2J1Zi5vIGV4eW5vc19kcm1fZ2VtLm8gZXh5bm9zX2RybV9jb3JlLm8gXAotCQll eHlub3NfZHJtX3BsYW5lLm8gZXh5bm9zX2RybV9kbWFidWYubworZXh5bm9zZHJtLXkgOj0gZXh5 bm9zX2RybV9kcnYubyBleHlub3NfZHJtX2NydGMubyBleHlub3NfZHJtX2ZiZGV2Lm8gXAorCQll eHlub3NfZHJtX2ZiLm8gZXh5bm9zX2RybV9idWYubyBleHlub3NfZHJtX2dlbS5vIFwKKwkJZXh5 bm9zX2RybV9jb3JlLm8gZXh5bm9zX2RybV9wbGFuZS5vIGV4eW5vc19kcm1fZG1hYnVmLm8KIAog ZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfSU9NTVUpICs9IGV4eW5vc19kcm1faW9tbXUu bwogZXh5bm9zZHJtLSQoQ09ORklHX0RSTV9FWFlOT1NfRklNRCkJKz0gZXh5bm9zX2RybV9maW1k Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zN19kcm1fZGVjb24u YyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zN19kcm1fZGVjb24uYwppbmRleCBlMWEy Y2U3Li4wNzkyNjU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vczdf ZHJtX2RlY29uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3M3X2RybV9kZWNv bi5jCkBAIC02MSw3ICs2MSw3IEBAIHN0cnVjdCBkZWNvbl9jb250ZXh0IHsKIAlhdG9taWNfdAkJ CXdhaXRfdnN5bmNfZXZlbnQ7CiAKIAlzdHJ1Y3QgZXh5bm9zX2RybV9wYW5lbF9pbmZvIHBhbmVs OwotCXN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXI7CisJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyOwogfTsKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgZGVj b25fZHJpdmVyX2R0X21hdGNoW10gPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcF9jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcF9j b3JlLmMKaW5kZXggNGQ0OWQyNS4uOTI4NjRlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2V4eW5vcy9leHlub3NfZHBfY29yZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5 bm9zX2RwX2NvcmUuYwpAQCAtMzIsMTggKzMyLDE4IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9wYW5l bC5oPgogCiAjaW5jbHVkZSAiZXh5bm9zX2RwX2NvcmUuaCIKLSNpbmNsdWRlICJleHlub3NfZHJt X2VuY29kZXIuaCIKKyNpbmNsdWRlICJleHlub3NfZHJtX2NydGMuaCIKIAogI2RlZmluZSBjdHhf ZnJvbV9jb25uZWN0b3IoYykJY29udGFpbmVyX29mKGMsIHN0cnVjdCBleHlub3NfZHBfZGV2aWNl LCBcCiAJCQkJCWNvbm5lY3RvcikKIAogc3RhdGljIGlubGluZSBzdHJ1Y3QgZXh5bm9zX2RybV9j cnRjICpkcF90b19jcnRjKHN0cnVjdCBleHlub3NfZHBfZGV2aWNlICpkcCkKIHsKLQlyZXR1cm4g dG9fZXh5bm9zX2NydGMoZHAtPmVuY29kZXIuYmFzZS5jcnRjKTsKKwlyZXR1cm4gdG9fZXh5bm9z X2NydGMoZHAtPmVuY29kZXIuY3J0Yyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IGV4eW5v c19kcF9kZXZpY2UgKmVuY29kZXJfdG9fZHAoCi0JCQkJCQlzdHJ1Y3QgZXh5bm9zX2RybV9lbmNv ZGVyICplKQorCQkJCQkJc3RydWN0IGRybV9lbmNvZGVyICplKQogewogCXJldHVybiBjb250YWlu ZXJfb2YoZSwgc3RydWN0IGV4eW5vc19kcF9kZXZpY2UsIGVuY29kZXIpOwogfQpAQCAtODg5LDcg Kzg4OSw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kcF9ob3RwbHVnKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKIAkJZHJtX2hlbHBlcl9ocGRfaXJxX2V2ZW50KGRwLT5kcm1fZGV2KTsKIH0KIAot c3RhdGljIHZvaWQgZXh5bm9zX2RwX2NvbW1pdChzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICpl bmNvZGVyKQorc3RhdGljIHZvaWQgZXh5bm9zX2RwX2NvbW1pdChzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCiB7CiAJc3RydWN0IGV4eW5vc19kcF9kZXZpY2UgKmRwID0gZW5jb2Rlcl90b19k cChlbmNvZGVyKTsKIAlpbnQgcmV0OwpAQCAtOTk1LDcgKzk5NSw3IEBAIHN0YXRpYyBzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmV4eW5vc19kcF9iZXN0X2VuY29kZXIoCiB7CiAJc3RydWN0IGV4eW5vc19k cF9kZXZpY2UgKmRwID0gY3R4X2Zyb21fY29ubmVjdG9yKGNvbm5lY3Rvcik7CiAKLQlyZXR1cm4g JmRwLT5lbmNvZGVyLmJhc2U7CisJcmV0dXJuICZkcC0+ZW5jb2RlcjsKIH0KIAogc3RhdGljIHN0 cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBleHlub3NfZHBfY29ubmVjdG9yX2hlbHBl cl9mdW5jcyA9IHsKQEAgLTEwMjAsMTAgKzEwMjAsOSBAQCBzdGF0aWMgaW50IGV4eW5vc19kcm1f YXR0YWNoX2xjZF9icmlkZ2Uoc3RydWN0IGV4eW5vc19kcF9kZXZpY2UgKmRwLAogCXJldHVybiAw OwogfQogCi1zdGF0aWMgaW50IGV4eW5vc19kcF9jcmVhdGVfY29ubmVjdG9yKHN0cnVjdCBleHlu b3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVyKQorc3RhdGljIGludCBleHlub3NfZHBfY3Jl YXRlX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGV4 eW5vc19kcF9kZXZpY2UgKmRwID0gZW5jb2Rlcl90b19kcChleHlub3NfZW5jb2Rlcik7Ci0Jc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmV4eW5vc19lbmNvZGVyLT5iYXNlOworCXN0cnVj dCBleHlub3NfZHBfZGV2aWNlICpkcCA9IGVuY29kZXJfdG9fZHAoZW5jb2Rlcik7CiAJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZkcC0+Y29ubmVjdG9yOwogCWludCByZXQ7CiAK QEAgLTEwNTMsNyArMTA1MiwyMCBAQCBzdGF0aWMgaW50IGV4eW5vc19kcF9jcmVhdGVfY29ubmVj dG9yKHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVyKQogCXJldHVybiBy ZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGV4eW5vc19kcF9lbmFibGUoc3RydWN0IGV4eW5vc19kcm1f ZW5jb2RlciAqZW5jb2RlcikKK3N0YXRpYyBib29sIGV4eW5vc19kcF9tb2RlX2ZpeHVwKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCisJCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQor eworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCBleHlub3NfZHBfbW9kZV9zZXQoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAorCQkJICAgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlKQoreworfQorCitzdGF0aWMgdm9pZCBleHlub3NfZHBfZW5hYmxlKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgZXh5bm9zX2RwX2RldmljZSAqZHAgPSBlbmNvZGVy X3RvX2RwKGVuY29kZXIpOwogCXN0cnVjdCBleHlub3NfZHJtX2NydGMgKmNydGMgPSBkcF90b19j cnRjKGRwKTsKQEAgLTEwNzgsNyArMTA5MCw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kcF9lbmFi bGUoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZW5jb2RlcikKIAlleHlub3NfZHBfY29tbWl0 KCZkcC0+ZW5jb2Rlcik7CiB9CiAKLXN0YXRpYyB2b2lkIGV4eW5vc19kcF9kaXNhYmxlKHN0cnVj dCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXIpCitzdGF0aWMgdm9pZCBleHlub3NfZHBfZGlz YWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0IGV4eW5vc19kcF9k ZXZpY2UgKmRwID0gZW5jb2Rlcl90b19kcChlbmNvZGVyKTsKIAlzdHJ1Y3QgZXh5bm9zX2RybV9j cnRjICpjcnRjID0gZHBfdG9fY3J0YyhkcCk7CkBAIC0xMTA3LDExICsxMTE5LDE3IEBAIHN0YXRp YyB2b2lkIGV4eW5vc19kcF9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29k ZXIpCiAJfQogfQogCi1zdGF0aWMgc3RydWN0IGV4eW5vc19kcm1fZW5jb2Rlcl9vcHMgZXh5bm9z X2RwX2VuY29kZXJfb3BzID0geworc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVu Y3MgZXh5bm9zX2RwX2VuY29kZXJfaGVscGVyX2Z1bmNzID0geworCS5tb2RlX2ZpeHVwID0gZXh5 bm9zX2RwX21vZGVfZml4dXAsCisJLm1vZGVfc2V0ID0gZXh5bm9zX2RwX21vZGVfc2V0LAogCS5l bmFibGUgPSBleHlub3NfZHBfZW5hYmxlLAogCS5kaXNhYmxlID0gZXh5bm9zX2RwX2Rpc2FibGUs CiB9OwogCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGV4eW5vc19kcF9lbmNvZGVy X2Z1bmNzID0geworCS5kZXN0cm95ID0gZHJtX2VuY29kZXJfY2xlYW51cCwKK307CisKIHN0YXRp YyBzdHJ1Y3QgdmlkZW9faW5mbyAqZXh5bm9zX2RwX2R0X3BhcnNlX3BkYXRhKHN0cnVjdCBkZXZp Y2UgKmRldikKIHsKIAlzdHJ1Y3QgZGV2aWNlX25vZGUgKmRwX25vZGUgPSBkZXYtPm9mX25vZGU7 CkBAIC0xMTg4LDEwICsxMjA2LDEwIEBAIHN0YXRpYyBpbnQgZXh5bm9zX2RwX2JpbmQoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJc3RydWN0 IGV4eW5vc19kcF9kZXZpY2UgKmRwID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2RldmljZShkZXYpOwogCXN0cnVjdCBk cm1fZGV2aWNlICpkcm1fZGV2ID0gZGF0YTsKLQlzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICpl eHlub3NfZW5jb2RlciA9ICZkcC0+ZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIgPSAmZHAtPmVuY29kZXI7CiAJc3RydWN0IHJlc291cmNlICpyZXM7CiAJdW5zaWduZWQgaW50 IGlycV9mbGFnczsKLQlpbnQgcmV0ID0gMDsKKwlpbnQgcGlwZSwgcmV0ID0gMDsKIAogCWRwLT5k ZXYgPSAmcGRldi0+ZGV2OwogCWRwLT5kcG1zX21vZGUgPSBEUk1fTU9ERV9EUE1TX09GRjsKQEAg LTEyODEsMTcgKzEyOTksMjQgQEAgc3RhdGljIGludCBleHlub3NfZHBfYmluZChzdHJ1Y3QgZGV2 aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKIAogCWRwLT5kcm1f ZGV2ID0gZHJtX2RldjsKIAotCXJldCA9IGV4eW5vc19kcm1fZW5jb2Rlcl9jcmVhdGUoZHJtX2Rl diwgZXh5bm9zX2VuY29kZXIsCi0JCQkJCUVYWU5PU19ESVNQTEFZX1RZUEVfTENEKTsKLQlpZiAo cmV0KSB7Ci0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBlbmNvZGVyXG4iKTsKLQkJcmV0 dXJuIHJldDsKLQl9CisJcGlwZSA9IGV4eW5vc19kcm1fY3J0Y19nZXRfcGlwZV9mcm9tX3R5cGUo ZHJtX2RldiwKKwkJCQkJCSAgRVhZTk9TX0RJU1BMQVlfVFlQRV9MQ0QpOworCWlmIChwaXBlIDwg MCkKKwkJcmV0dXJuIHBpcGU7CisKKwllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IDEgPDwgcGlw ZTsKKworCURSTV9ERUJVR19LTVMoInBvc3NpYmxlX2NydGNzID0gMHgleFxuIiwgZW5jb2Rlci0+ cG9zc2libGVfY3J0Y3MpOworCisJZHJtX2VuY29kZXJfaW5pdChkcm1fZGV2LCBlbmNvZGVyLCAm ZXh5bm9zX2RwX2VuY29kZXJfZnVuY3MsCisJCQkgRFJNX01PREVfRU5DT0RFUl9UTURTKTsKKwor CWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZW5jb2RlciwgJmV4eW5vc19kcF9lbmNvZGVyX2hlbHBl cl9mdW5jcyk7CiAKLQlyZXQgPSBleHlub3NfZHBfY3JlYXRlX2Nvbm5lY3RvcihleHlub3NfZW5j b2Rlcik7CisJcmV0ID0gZXh5bm9zX2RwX2NyZWF0ZV9jb25uZWN0b3IoZW5jb2Rlcik7CiAJaWYg KHJldCkgewogCQlEUk1fRVJST1IoImZhaWxlZCB0byBjcmVhdGUgY29ubmVjdG9yIHJldCA9ICVk XG4iLCByZXQpOwotCQlkcm1fZW5jb2Rlcl9jbGVhbnVwKCZleHlub3NfZW5jb2Rlci0+YmFzZSk7 CisJCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7CiAJCXJldHVybiByZXQ7CiAJfQogCkBA IC0xMzIyLDcgKzEzNDcsNiBAQCBzdGF0aWMgaW50IGV4eW5vc19kcF9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQogCWlmICghZHApCiAJCXJldHVybiAtRU5PTUVNOwogCi0JZHAt PmVuY29kZXIub3BzID0gJmV4eW5vc19kcF9lbmNvZGVyX29wczsKIAlwbGF0Zm9ybV9zZXRfZHJ2 ZGF0YShwZGV2LCBkcCk7CiAKIAlwYW5lbF9ub2RlID0gb2ZfcGFyc2VfcGhhbmRsZShkZXYtPm9m X25vZGUsICJwYW5lbCIsIDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHBfY29yZS5oIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHBfY29yZS5o CmluZGV4IGY4Y2MyMDIuLmU0MTNiNmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlu b3MvZXh5bm9zX2RwX2NvcmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19k cF9jb3JlLmgKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdHJ1Y3QgbGlua190cmFpbiB7CiB9OwogCiBz dHJ1Y3QgZXh5bm9zX2RwX2RldmljZSB7Ci0Jc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciBlbmNv ZGVyOworCXN0cnVjdCBkcm1fZW5jb2RlcgllbmNvZGVyOwogCXN0cnVjdCBkZXZpY2UJCSpkZXY7 CiAJc3RydWN0IGRybV9kZXZpY2UJKmRybV9kZXY7CiAJc3RydWN0IGRybV9jb25uZWN0b3IJY29u bmVjdG9yOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Nv cmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9jb3JlLmMKaW5kZXggMWYz OGE0NC4uYzY4YTZhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX2NvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fY29yZS5j CkBAIC0xNSw3ICsxNSw2IEBACiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlICJleHlu b3NfZHJtX2Rydi5oIgogI2luY2x1ZGUgImV4eW5vc19kcm1fY3J0Yy5oIgotI2luY2x1ZGUgImV4 eW5vc19kcm1fZW5jb2Rlci5oIgogI2luY2x1ZGUgImV4eW5vc19kcm1fZmJkZXYuaCIKIAogc3Rh dGljIExJU1RfSEVBRChleHlub3NfZHJtX3N1YmRydl9saXN0KTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9jcnRjLmMgYi9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL2V4eW5vc19kcm1fY3J0Yy5jCmluZGV4IDI3MTVjMmEuLmI5YjBlOWMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9jcnRjLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2NydGMuYwpAQCAtMTksNyArMTksNiBAQAogCiAjaW5j bHVkZSAiZXh5bm9zX2RybV9jcnRjLmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9kcnYuaCIKLSNp bmNsdWRlICJleHlub3NfZHJtX2VuY29kZXIuaCIKICNpbmNsdWRlICJleHlub3NfZHJtX3BsYW5l LmgiCiAKIHN0YXRpYyB2b2lkIGV4eW5vc19kcm1fY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRj ICpjcnRjKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Rw aS5jIGIvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RwaS5jCmluZGV4IDY4NTBj ZTUuLjA0NzYyNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2Ry bV9kcGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHBpLmMKQEAg LTIwLDExICsyMCwxMCBAQAogI2luY2x1ZGUgPHZpZGVvL29mX3ZpZGVvbW9kZS5oPgogI2luY2x1 ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgogCi0jaW5jbHVkZSAiZXh5bm9zX2RybV9lbmNvZGVyLmgi CiAjaW5jbHVkZSAiZXh5bm9zX2RybV9jcnRjLmgiCiAKIHN0cnVjdCBleHlub3NfZHBpIHsKLQlz dHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyIGVuY29kZXI7CisJc3RydWN0IGRybV9lbmNvZGVyIGVu Y29kZXI7CiAJc3RydWN0IGRldmljZSAqZGV2OwogCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFuZWxf bm9kZTsKIApAQCAtMzYsNyArMzUsNyBAQCBzdHJ1Y3QgZXh5bm9zX2RwaSB7CiAKICNkZWZpbmUg Y29ubmVjdG9yX3RvX2RwaShjKSBjb250YWluZXJfb2YoYywgc3RydWN0IGV4eW5vc19kcGksIGNv bm5lY3RvcikKIAotc3RhdGljIGlubGluZSBzdHJ1Y3QgZXh5bm9zX2RwaSAqZW5jb2Rlcl90b19k cGkoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZSkKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4 eW5vc19kcGkgKmVuY29kZXJfdG9fZHBpKHN0cnVjdCBkcm1fZW5jb2RlciAqZSkKIHsKIAlyZXR1 cm4gY29udGFpbmVyX29mKGUsIHN0cnVjdCBleHlub3NfZHBpLCBlbmNvZGVyKTsKIH0KQEAgLTk4 LDcgKzk3LDcgQEAgZXh5bm9zX2RwaV9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgZXh5bm9zX2RwaSAqY3R4ID0gY29ubmVjdG9yX3RvX2Rw aShjb25uZWN0b3IpOwogCi0JcmV0dXJuICZjdHgtPmVuY29kZXIuYmFzZTsKKwlyZXR1cm4gJmN0 eC0+ZW5jb2RlcjsKIH0KIAogc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5j cyBleHlub3NfZHBpX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CkBAIC0xMDYsMTEgKzEwNSw5 IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgZXh5bm9zX2RwaV9j b25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewogCS5iZXN0X2VuY29kZXIgPSBleHlub3NfZHBpX2Jl c3RfZW5jb2RlciwKIH07CiAKLXN0YXRpYyBpbnQgZXh5bm9zX2RwaV9jcmVhdGVfY29ubmVjdG9y KAotCQkJCXN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVyKQorc3RhdGlj IGludCBleHlub3NfZHBpX2NyZWF0ZV9jb25uZWN0b3Ioc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyKQogewotCXN0cnVjdCBleHlub3NfZHBpICpjdHggPSBlbmNvZGVyX3RvX2RwaShleHlub3Nf ZW5jb2Rlcik7Ci0Jc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmV4eW5vc19lbmNvZGVy LT5iYXNlOworCXN0cnVjdCBleHlub3NfZHBpICpjdHggPSBlbmNvZGVyX3RvX2RwaShlbmNvZGVy KTsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmN0eC0+Y29ubmVjdG9yOwog CWludCByZXQ7CiAKQEAgLTEzMSw3ICsxMjgsNyBAQCBzdGF0aWMgaW50IGV4eW5vc19kcGlfY3Jl YXRlX2Nvbm5lY3RvcigKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZXh5bm9zX2RwaV9l bmFibGUoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZW5jb2RlcikKK3N0YXRpYyB2b2lkIGV4 eW5vc19kcGlfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3Qg ZXh5bm9zX2RwaSAqY3R4ID0gZW5jb2Rlcl90b19kcGkoZW5jb2Rlcik7CiAKQEAgLTE0MSw3ICsx MzgsNyBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHBpX2VuYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9l bmNvZGVyICplbmNvZGVyKQogCX0KIH0KIAotc3RhdGljIHZvaWQgZXh5bm9zX2RwaV9kaXNhYmxl KHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXIpCitzdGF0aWMgdm9pZCBleHlub3Nf ZHBpX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewogCXN0cnVjdCBleHlu b3NfZHBpICpjdHggPSBlbmNvZGVyX3RvX2RwaShlbmNvZGVyKTsKIApAQCAtMTUxLDExICsxNDgs MTUgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RwaV9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2Vu Y29kZXIgKmVuY29kZXIpCiAJfQogfQogCi1zdGF0aWMgc3RydWN0IGV4eW5vc19kcm1fZW5jb2Rl cl9vcHMgZXh5bm9zX2RwaV9lbmNvZGVyX29wcyA9IHsKK3N0YXRpYyBzdHJ1Y3QgZHJtX2VuY29k ZXJfaGVscGVyX2Z1bmNzIGV4eW5vc19kcGlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CiAJLmVu YWJsZSA9IGV4eW5vc19kcGlfZW5hYmxlLAogCS5kaXNhYmxlID0gZXh5bm9zX2RwaV9kaXNhYmxl LAogfTsKIAorc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBleHlub3NfZHBpX2VuY29k ZXJfZnVuY3MgPSB7CisJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLAorfTsKKwogLyog b2ZfKiBmdW5jdGlvbnMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIG1lcmdlIG9mIG9mX2dyYXBoIHBh dGNoZXMgKi8KIHN0YXRpYyBzdHJ1Y3QgZGV2aWNlX25vZGUgKgogb2ZfZ2V0X2NoaWxkX2J5X25h bWVfcmVnKHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lLCB1MzIg cmVnKQpAQCAtMjgwLDI5ICsyODEsMzQgQEAgc3RhdGljIGludCBleHlub3NfZHBpX3BhcnNlX2R0 KHN0cnVjdCBleHlub3NfZHBpICpjdHgpCiAJcmV0dXJuIDA7CiB9CiAKLWludCBleHlub3NfZHBp X2JpbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJICAgIHN0cnVjdCBleHlub3NfZHJtX2Vu Y29kZXIgKmV4eW5vc19lbmNvZGVyKQoraW50IGV4eW5vc19kcGlfYmluZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJaW50IHJldDsKIAot CXJldCA9IGV4eW5vc19kcm1fZW5jb2Rlcl9jcmVhdGUoZGV2LCBleHlub3NfZW5jb2RlciwKLQkJ CQkJRVhZTk9TX0RJU1BMQVlfVFlQRV9MQ0QpOwotCWlmIChyZXQpIHsKLQkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gY3JlYXRlIGVuY29kZXJcbiIpOworCXJldCA9IGV4eW5vc19kcm1fY3J0Y19nZXRf cGlwZV9mcm9tX3R5cGUoZGV2LCBFWFlOT1NfRElTUExBWV9UWVBFX0xDRCk7CisJaWYgKHJldCA8 IDApCiAJCXJldHVybiByZXQ7Ci0JfQogCi0JcmV0ID0gZXh5bm9zX2RwaV9jcmVhdGVfY29ubmVj dG9yKGV4eW5vc19lbmNvZGVyKTsKKwllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IDEgPDwgcmV0 OworCisJRFJNX0RFQlVHX0tNUygicG9zc2libGVfY3J0Y3MgPSAweCV4XG4iLCBlbmNvZGVyLT5w b3NzaWJsZV9jcnRjcyk7CisKKwlkcm1fZW5jb2Rlcl9pbml0KGRldiwgZW5jb2RlciwgJmV4eW5v c19kcGlfZW5jb2Rlcl9mdW5jcywKKwkJCSBEUk1fTU9ERV9FTkNPREVSX1RNRFMpOworCisJZHJt X2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZXh5bm9zX2RwaV9lbmNvZGVyX2hlbHBlcl9m dW5jcyk7CisKKwlyZXQgPSBleHlub3NfZHBpX2NyZWF0ZV9jb25uZWN0b3IoZW5jb2Rlcik7CiAJ aWYgKHJldCkgewogCQlEUk1fRVJST1IoImZhaWxlZCB0byBjcmVhdGUgY29ubmVjdG9yIHJldCA9 ICVkXG4iLCByZXQpOwotCQlkcm1fZW5jb2Rlcl9jbGVhbnVwKCZleHlub3NfZW5jb2Rlci0+YmFz ZSk7CisJCWRybV9lbmNvZGVyX2NsZWFudXAoZW5jb2Rlcik7CiAJCXJldHVybiByZXQ7CiAJfQog CiAJcmV0dXJuIDA7CiB9CiAKLXN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4eW5vc19kcGlf cHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQorc3RydWN0IGRybV9lbmNvZGVyICpleHlub3NfZHBp X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZXh5bm9zX2RwaSAqY3R4Owog CWludCByZXQ7CkBAIC0zMTEsNyArMzE3LDYgQEAgc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAq ZXh5bm9zX2RwaV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJaWYgKCFjdHgpCiAJCXJldHVy biBFUlJfUFRSKC1FTk9NRU0pOwogCi0JY3R4LT5lbmNvZGVyLm9wcyA9ICZleHlub3NfZHBpX2Vu Y29kZXJfb3BzOwogCWN0eC0+ZGV2ID0gZGV2OwogCiAJcmV0ID0gZXh5bm9zX2RwaV9wYXJzZV9k dChjdHgpOwpAQCAtMzI5LDcgKzMzNCw3IEBAIHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4 eW5vc19kcGlfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2KQogCXJldHVybiAmY3R4LT5lbmNvZGVy OwogfQogCi1pbnQgZXh5bm9zX2RwaV9yZW1vdmUoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAq ZW5jb2RlcikKK2ludCBleHlub3NfZHBpX3JlbW92ZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCiB7CiAJc3RydWN0IGV4eW5vc19kcGkgKmN0eCA9IGVuY29kZXJfdG9fZHBpKGVuY29kZXIp OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2LmMKaW5kZXggMTA1ZjEwZS4u NjY3NWU3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Ry di5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kcnYuYwpAQCAtMjEs NyArMjEsNiBAQAogCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9kcnYuaCIKICNpbmNsdWRlICJleHlu b3NfZHJtX2NydGMuaCIKLSNpbmNsdWRlICJleHlub3NfZHJtX2VuY29kZXIuaCIKICNpbmNsdWRl ICJleHlub3NfZHJtX2ZiZGV2LmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9mYi5oIgogI2luY2x1 ZGUgImV4eW5vc19kcm1fZ2VtLmgiCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9z L2V4eW5vc19kcm1fZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHJ2 LmgKaW5kZXggYTQ5NzdiZS4uNmI4YTMwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4 eW5vcy9leHlub3NfZHJtX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9z X2RybV9kcnYuaApAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBNQVhfUExBTkUJNQogI2RlZmlu ZSBNQVhfRkJfQlVGRkVSCTQKIAotI2RlZmluZSB0b19leHlub3NfZW5jb2Rlcih4KQljb250YWlu ZXJfb2YoeCwgc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciwgYmFzZSkKICNkZWZpbmUgdG9fZXh5 bm9zX2NydGMoeCkJY29udGFpbmVyX29mKHgsIHN0cnVjdCBleHlub3NfZHJtX2NydGMsIGJhc2Up CiAjZGVmaW5lIHRvX2V4eW5vc19wbGFuZSh4KQljb250YWluZXJfb2YoeCwgc3RydWN0IGV4eW5v c19kcm1fcGxhbmUsIGJhc2UpCiAKQEAgLTc4LDQwICs3Nyw2IEBAIHN0cnVjdCBleHlub3NfZHJt X3BsYW5lIHsKIH07CiAKIC8qCi0gKiBFeHlub3MgRFJNIEVuY29kZXIgU3RydWN0dXJlLgotICoJ LSB0aGlzIHN0cnVjdHVyZSBpcyBjb21tb24gdG8gYW5hbG9nIHR2LCBkaWdpdGFsIHR2IGFuZCBs Y2QgcGFuZWwuCi0gKgotICogQG1vZGVfZml4dXA6IGZpeCBtb2RlIGRhdGEgY29tcGFyaW5nIHRv IGh3IHNwZWNpZmljIGRpc3BsYXkgbW9kZS4KLSAqIEBtb2RlX3NldDogY29udmVydCBkcm1fZGlz cGxheV9tb2RlIHRvIGh3IHNwZWNpZmljIGRpc3BsYXkgbW9kZSBhbmQKLSAqCSAgICAgIHdvdWxk IGJlIGNhbGxlZCBieSBlbmNvZGVyLT5tb2RlX3NldCgpLgotICogQGVuYWJsZTogZGlzcGxheSBk ZXZpY2Ugb24uCi0gKiBAZGlzYWJsZTogZGlzcGxheSBkZXZpY2Ugb2ZmLgotICovCi1zdHJ1Y3Qg ZXh5bm9zX2RybV9lbmNvZGVyOwotc3RydWN0IGV4eW5vc19kcm1fZW5jb2Rlcl9vcHMgewotCXZv aWQgKCptb2RlX2ZpeHVwKShzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICplbmNvZGVyLAotCQkJ CXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCi0JCQkJY29uc3Qgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKm1vZGUsCi0JCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVk X21vZGUpOwotCXZvaWQgKCptb2RlX3NldCkoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZW5j b2RlciwKLQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSk7Ci0Jdm9pZCAoKmVuYWJs ZSkoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZW5jb2Rlcik7Ci0Jdm9pZCAoKmRpc2FibGUp KHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXIpOwotfTsKLQotLyoKLSAqIGV4eW5v cyBzcGVjaWZpYyBlbmNvZGVyIHN0cnVjdHVyZS4KLSAqCi0gKiBAZHJtX2VuY29kZXI6IGVuY29k ZXIgb2JqZWN0LgotICogQHR5cGU6IG9uZSBvZiBFWFlOT1NfRElTUExBWV9UWVBFX0xDRCBhbmQg SERNSS4KLSAqIEBvcHM6IHBvaW50ZXIgdG8gY2FsbGJhY2tzIGZvciBleHlub3MgZHJtIHNwZWNp ZmljIGZ1bmN0aW9uYWxpdHkKLSAqLwotc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciB7Ci0Jc3Ry dWN0IGRybV9lbmNvZGVyCQliYXNlOwotCXN0cnVjdCBleHlub3NfZHJtX2VuY29kZXJfb3BzCSpv cHM7Ci19OwotCi0vKgogICogRXh5bm9zIGRybSBjcnRjIG9wcwogICoKICAqIEBlbmFibGU6IGVu YWJsZSB0aGUgZGV2aWNlCkBAIC0yNTUsMTggKzIyMCwxOCBAQCBpbnQgZXh5bm9zX2RybV9zdWJk cnZfb3BlbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwog dm9pZCBleHlub3NfZHJtX3N1YmRydl9jbG9zZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpOwogCiAjaWZkZWYgQ09ORklHX0RSTV9FWFlOT1NfRFBJCi1zdHJ1 Y3QgZXh5bm9zX2RybV9lbmNvZGVyICpleHlub3NfZHBpX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRl dik7Ci1pbnQgZXh5bm9zX2RwaV9yZW1vdmUoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZW5j b2Rlcik7Ci1pbnQgZXh5bm9zX2RwaV9iaW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVj dCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXIpOworc3RydWN0IGRybV9lbmNvZGVyICpleHlu b3NfZHBpX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldik7CitpbnQgZXh5bm9zX2RwaV9yZW1vdmUo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKK2ludCBleHlub3NfZHBpX2JpbmQoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKICNlbHNlCi1z dGF0aWMgaW5saW5lIHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKgorc3RhdGljIGlubGluZSBz dHJ1Y3QgZHJtX2VuY29kZXIgKgogZXh5bm9zX2RwaV9wcm9iZShzdHJ1Y3QgZGV2aWNlICpkZXYp IHsgcmV0dXJuIE5VTEw7IH0KLXN0YXRpYyBpbmxpbmUgaW50IGV4eW5vc19kcGlfcmVtb3ZlKHN0 cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXIpCitzdGF0aWMgaW5saW5lIGludCBleHlu b3NfZHBpX3JlbW92ZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJcmV0dXJuIDA7 CiB9CiBzdGF0aWMgaW5saW5lIGludCBleHlub3NfZHBpX2JpbmQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKLQkJCQkgIHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXIpCisJCQkJICBz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMgYi9kcml2ZXJzL2dwdS9k cm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMKaW5kZXggZDc5MWFkNC4uYTg3ZDAzMCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2RzaS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kc2kuYwpAQCAtMzAsNyArMzAsNiBAQAogI2lu Y2x1ZGUgPHZpZGVvL3ZpZGVvbW9kZS5oPgogCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9jcnRjLmgi Ci0jaW5jbHVkZSAiZXh5bm9zX2RybV9lbmNvZGVyLmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9k cnYuaCIKIAogLyogcmV0dXJucyB0cnVlIGlmZiBib3RoIGFyZ3VtZW50cyBsb2dpY2FsbHkgZGlm ZmVycyAqLwpAQCAtMjYwLDcgKzI1OSw3IEBAIHN0cnVjdCBleHlub3NfZHNpX2RyaXZlcl9kYXRh IHsKIH07CiAKIHN0cnVjdCBleHlub3NfZHNpIHsKLQlzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVy IGVuY29kZXI7CisJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7CiAJc3RydWN0IG1pcGlfZHNp X2hvc3QgZHNpX2hvc3Q7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOwogCXN0cnVj dCBkZXZpY2Vfbm9kZSAqcGFuZWxfbm9kZTsKQEAgLTI5Niw3ICsyOTUsNyBAQCBzdHJ1Y3QgZXh5 bm9zX2RzaSB7CiAjZGVmaW5lIGhvc3RfdG9fZHNpKGhvc3QpIGNvbnRhaW5lcl9vZihob3N0LCBz dHJ1Y3QgZXh5bm9zX2RzaSwgZHNpX2hvc3QpCiAjZGVmaW5lIGNvbm5lY3Rvcl90b19kc2koYykg Y29udGFpbmVyX29mKGMsIHN0cnVjdCBleHlub3NfZHNpLCBjb25uZWN0b3IpCiAKLXN0YXRpYyBp bmxpbmUgc3RydWN0IGV4eW5vc19kc2kgKmVuY29kZXJfdG9fZHNpKHN0cnVjdCBleHlub3NfZHJt X2VuY29kZXIgKmUpCitzdGF0aWMgaW5saW5lIHN0cnVjdCBleHlub3NfZHNpICplbmNvZGVyX3Rv X2RzaShzdHJ1Y3QgZHJtX2VuY29kZXIgKmUpCiB7CiAJcmV0dXJuIGNvbnRhaW5lcl9vZihlLCBz dHJ1Y3QgZXh5bm9zX2RzaSwgZW5jb2Rlcik7CiB9CkBAIC0xMjczLDcgKzEyNzIsNyBAQCBzdGF0 aWMgaXJxcmV0dXJuX3QgZXh5bm9zX2RzaV9pcnEoaW50IGlycSwgdm9pZCAqZGV2X2lkKQogc3Rh dGljIGlycXJldHVybl90IGV4eW5vc19kc2lfdGVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq ZGV2X2lkKQogewogCXN0cnVjdCBleHlub3NfZHNpICpkc2kgPSAoc3RydWN0IGV4eW5vc19kc2kg KilkZXZfaWQ7Ci0Jc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmRzaS0+ZW5jb2Rlci5i YXNlOworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZkc2ktPmVuY29kZXI7CiAKIAlp ZiAoZHNpLT5zdGF0ZSAmIERTSU1fU1RBVEVfVklET1VUX0FWQUlMQUJMRSkKIAkJZXh5bm9zX2Ry bV9jcnRjX3RlX2hhbmRsZXIoZW5jb2Rlci0+Y3J0Yyk7CkBAIC0xNTE5LDcgKzE1MTgsNyBAQCBz dGF0aWMgdm9pZCBleHlub3NfZHNpX3Bvd2Vyb2ZmKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCiAJ CWRldl9lcnIoZHNpLT5kZXYsICJjYW5ub3QgZGlzYWJsZSByZWd1bGF0b3JzICVkXG4iLCByZXQp OwogfQogCi1zdGF0aWMgdm9pZCBleHlub3NfZHNpX2VuYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9l bmNvZGVyICplbmNvZGVyKQorc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9lbmFibGUoc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyKQogewogCXN0cnVjdCBleHlub3NfZHNpICpkc2kgPSBlbmNvZGVy X3RvX2RzaShlbmNvZGVyKTsKIAlpbnQgcmV0OwpAQCAtMTU1NSw3ICsxNTU0LDcgQEAgc3RhdGlj IHZvaWQgZXh5bm9zX2RzaV9lbmFibGUoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZW5jb2Rl cikKIAlkc2ktPnN0YXRlIHw9IERTSU1fU1RBVEVfVklET1VUX0FWQUlMQUJMRTsKIH0KIAotc3Rh dGljIHZvaWQgZXh5bm9zX2RzaV9kaXNhYmxlKHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmVu Y29kZXIpCitzdGF0aWMgdm9pZCBleHlub3NfZHNpX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKQogewogCXN0cnVjdCBleHlub3NfZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShl bmNvZGVyKTsKIApAQCAtMTU4Myw3ICsxNTgyLDcgQEAgZXh5bm9zX2RzaV9kZXRlY3Qoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKIAkJaWYgKGRzaS0+cGFuZWwp CiAJCQlkcm1fcGFuZWxfYXR0YWNoKGRzaS0+cGFuZWwsICZkc2ktPmNvbm5lY3Rvcik7CiAJfSBl bHNlIGlmICghZHNpLT5wYW5lbF9ub2RlKSB7Ci0JCXN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIg KmVuY29kZXI7CisJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKIAogCQllbmNvZGVyID0g cGxhdGZvcm1fZ2V0X2RydmRhdGEodG9fcGxhdGZvcm1fZGV2aWNlKGRzaS0+ZGV2KSk7CiAJCWV4 eW5vc19kc2lfZGlzYWJsZShlbmNvZGVyKTsKQEAgLTE2MjksNyArMTYyOCw3IEBAIGV4eW5vc19k c2lfYmVzdF9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiB7CiAJc3Ry dWN0IGV4eW5vc19kc2kgKmRzaSA9IGNvbm5lY3Rvcl90b19kc2koY29ubmVjdG9yKTsKIAotCXJl dHVybiAmZHNpLT5lbmNvZGVyLmJhc2U7CisJcmV0dXJuICZkc2ktPmVuY29kZXI7CiB9CiAKIHN0 YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgZXh5bm9zX2RzaV9jb25uZWN0 b3JfaGVscGVyX2Z1bmNzID0gewpAQCAtMTYzNywxMSArMTYzNiw5IEBAIHN0YXRpYyBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgZXh5bm9zX2RzaV9jb25uZWN0b3JfaGVscGVyX2Z1 bmNzID0gewogCS5iZXN0X2VuY29kZXIgPSBleHlub3NfZHNpX2Jlc3RfZW5jb2RlciwKIH07CiAK LXN0YXRpYyBpbnQgZXh5bm9zX2RzaV9jcmVhdGVfY29ubmVjdG9yKAotCQkJCXN0cnVjdCBleHlu b3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVyKQorc3RhdGljIGludCBleHlub3NfZHNpX2Ny ZWF0ZV9jb25uZWN0b3Ioc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewotCXN0cnVjdCBl eHlub3NfZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShleHlub3NfZW5jb2Rlcik7Ci0Jc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmV4eW5vc19lbmNvZGVyLT5iYXNlOworCXN0cnVjdCBl eHlub3NfZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShlbmNvZGVyKTsKIAlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gJmRzaS0+Y29ubmVjdG9yOwogCWludCByZXQ7CiAKQEAgLTE2 NjIsMjggKzE2NTksMzQgQEAgc3RhdGljIGludCBleHlub3NfZHNpX2NyZWF0ZV9jb25uZWN0b3Io CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGV4eW5vc19kc2lfbW9kZV9zZXQoc3RydWN0 IGV4eW5vc19kcm1fZW5jb2RlciAqZW5jb2RlciwKLQkJCSBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqbW9kZSkKK3N0YXRpYyB2b2lkIGV4eW5vc19kc2lfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyLAorCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQogewogCXN0cnVjdCBleHlub3Nf ZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShlbmNvZGVyKTsKIAlzdHJ1Y3QgdmlkZW9tb2RlICp2 bSA9ICZkc2ktPnZtOwotCi0Jdm0tPmhhY3RpdmUgPSBtb2RlLT5oZGlzcGxheTsKLQl2bS0+dmFj dGl2ZSA9IG1vZGUtPnZkaXNwbGF5OwotCXZtLT52ZnJvbnRfcG9yY2ggPSBtb2RlLT52c3luY19z dGFydCAtIG1vZGUtPnZkaXNwbGF5OwotCXZtLT52YmFja19wb3JjaCA9IG1vZGUtPnZ0b3RhbCAt IG1vZGUtPnZzeW5jX2VuZDsKLQl2bS0+dnN5bmNfbGVuID0gbW9kZS0+dnN5bmNfZW5kIC0gbW9k ZS0+dnN5bmNfc3RhcnQ7Ci0Jdm0tPmhmcm9udF9wb3JjaCA9IG1vZGUtPmhzeW5jX3N0YXJ0IC0g bW9kZS0+aGRpc3BsYXk7Ci0Jdm0tPmhiYWNrX3BvcmNoID0gbW9kZS0+aHRvdGFsIC0gbW9kZS0+ aHN5bmNfZW5kOwotCXZtLT5oc3luY19sZW4gPSBtb2RlLT5oc3luY19lbmQgLSBtb2RlLT5oc3lu Y19zdGFydDsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbSA9IGFkanVzdGVkX21vZGU7CisK Kwl2bS0+aGFjdGl2ZSA9IG0tPmhkaXNwbGF5OworCXZtLT52YWN0aXZlID0gbS0+dmRpc3BsYXk7 CisJdm0tPnZmcm9udF9wb3JjaCA9IG0tPnZzeW5jX3N0YXJ0IC0gbS0+dmRpc3BsYXk7CisJdm0t PnZiYWNrX3BvcmNoID0gbS0+dnRvdGFsIC0gbS0+dnN5bmNfZW5kOworCXZtLT52c3luY19sZW4g PSBtLT52c3luY19lbmQgLSBtLT52c3luY19zdGFydDsKKwl2bS0+aGZyb250X3BvcmNoID0gbS0+ aHN5bmNfc3RhcnQgLSBtLT5oZGlzcGxheTsKKwl2bS0+aGJhY2tfcG9yY2ggPSBtLT5odG90YWwg LSBtLT5oc3luY19lbmQ7CisJdm0tPmhzeW5jX2xlbiA9IG0tPmhzeW5jX2VuZCAtIG0tPmhzeW5j X3N0YXJ0OwogfQogCi1zdGF0aWMgc3RydWN0IGV4eW5vc19kcm1fZW5jb2Rlcl9vcHMgZXh5bm9z X2RzaV9lbmNvZGVyX29wcyA9IHsKK3N0YXRpYyBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1 bmNzIGV4eW5vc19kc2lfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CiAJLm1vZGVfc2V0ID0gZXh5 bm9zX2RzaV9tb2RlX3NldCwKIAkuZW5hYmxlID0gZXh5bm9zX2RzaV9lbmFibGUsCiAJLmRpc2Fi bGUgPSBleHlub3NfZHNpX2Rpc2FibGUsCiB9OwogCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVy X2Z1bmNzIGV4eW5vc19kc2lfZW5jb2Rlcl9mdW5jcyA9IHsKKwkuZGVzdHJveSA9IGRybV9lbmNv ZGVyX2NsZWFudXAsCit9OworCiBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBleHlub3NfZHNpX29m X21hdGNoKTsKIAogLyogb2ZfKiBmdW5jdGlvbnMgd2lsbCBiZSByZW1vdmVkIGFmdGVyIG1lcmdl IG9mIG9mX2dyYXBoIHBhdGNoZXMgKi8KQEAgLTE4MDQsMjMgKzE4MDcsMzAgQEAgZW5kOgogc3Rh dGljIGludCBleHlub3NfZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl ICptYXN0ZXIsCiAJCQkJdm9pZCAqZGF0YSkKIHsKLQlzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVy ICpleHlub3NfZW5jb2RlciA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwotCXN0cnVjdCBleHlub3Nf ZHNpICpkc2kgPSBlbmNvZGVyX3RvX2RzaShleHlub3NfZW5jb2Rlcik7CisJc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGV4eW5vc19k c2kgKmRzaSA9IGVuY29kZXJfdG9fZHNpKGVuY29kZXIpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpk cm1fZGV2ID0gZGF0YTsKIAlzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlOwogCWludCByZXQ7CiAK LQlyZXQgPSBleHlub3NfZHJtX2VuY29kZXJfY3JlYXRlKGRybV9kZXYsIGV4eW5vc19lbmNvZGVy LAotCQkJCQlFWFlOT1NfRElTUExBWV9UWVBFX0xDRCk7Ci0JaWYgKHJldCkgewotCQlEUk1fRVJS T1IoImZhaWxlZCB0byBjcmVhdGUgZW5jb2RlclxuIik7CisJcmV0ID0gZXh5bm9zX2RybV9jcnRj X2dldF9waXBlX2Zyb21fdHlwZShkcm1fZGV2LAorCQkJCQkJICBFWFlOT1NfRElTUExBWV9UWVBF X0xDRCk7CisJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7Ci0JfQogCi0JcmV0ID0gZXh5bm9z X2RzaV9jcmVhdGVfY29ubmVjdG9yKGV4eW5vc19lbmNvZGVyKTsKKwllbmNvZGVyLT5wb3NzaWJs ZV9jcnRjcyA9IDEgPDwgcmV0OworCisJRFJNX0RFQlVHX0tNUygicG9zc2libGVfY3J0Y3MgPSAw eCV4XG4iLCBlbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyk7CisKKwlkcm1fZW5jb2Rlcl9pbml0KGRy bV9kZXYsIGVuY29kZXIsICZleHlub3NfZHNpX2VuY29kZXJfZnVuY3MsCisJCQkgRFJNX01PREVf RU5DT0RFUl9UTURTKTsKKworCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZW5jb2RlciwgJmV4eW5v c19kc2lfZW5jb2Rlcl9oZWxwZXJfZnVuY3MpOworCisJcmV0ID0gZXh5bm9zX2RzaV9jcmVhdGVf Y29ubmVjdG9yKGVuY29kZXIpOwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8g Y3JlYXRlIGNvbm5lY3RvciByZXQgPSAlZFxuIiwgcmV0KTsKLQkJZHJtX2VuY29kZXJfY2xlYW51 cCgmZXh5bm9zX2VuY29kZXItPmJhc2UpOworCQlkcm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIp OwogCQlyZXR1cm4gcmV0OwogCX0KIApAQCAtMTgzNSw3ICsxODQ1LDcgQEAgc3RhdGljIGludCBl eHlub3NfZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIs CiBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3VuYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVj dCBkZXZpY2UgKm1hc3RlciwKIAkJCQl2b2lkICpkYXRhKQogewotCXN0cnVjdCBleHlub3NfZHJt X2VuY29kZXIgKmVuY29kZXIgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAlzdHJ1Y3QgZXh5bm9zX2Rz aSAqZHNpID0gZW5jb2Rlcl90b19kc2koZW5jb2Rlcik7CiAKIAlleHlub3NfZHNpX2Rpc2FibGUo ZW5jb2Rlcik7CkBAIC0xODU5LDggKzE4NjksNiBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfcHJv YmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlpZiAoIWRzaSkKIAkJcmV0dXJuIC1F Tk9NRU07CiAKLQlkc2ktPmVuY29kZXIub3BzID0gJmV4eW5vc19kc2lfZW5jb2Rlcl9vcHM7Ci0K IAkvKiBUbyBiZSBjaGVja2VkIGFzIGludmFsaWQgb25lICovCiAJZHNpLT50ZV9ncGlvID0gLUVO T0VOVDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2Vu Y29kZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9lbmNvZGVyLmMKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NWE1YzUuLjAwMDAwMDAKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2VuY29kZXIuYworKysgL2Rldi9udWxsCkBAIC0x LDEwNSArMCwwIEBACi0vKiBleHlub3NfZHJtX2VuY29kZXIuYwotICoKLSAqIENvcHlyaWdodCAo YykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzIENvLiwgTHRkLgotICogQXV0aG9yczoKLSAqCUlu a2kgRGFlIDxpbmtpLmRhZUBzYW1zdW5nLmNvbT4KLSAqCUpvb255b3VuZyBTaGltIDxqeTA5MjIu c2hpbUBzYW1zdW5nLmNvbT4KLSAqCVNldW5nLVdvbyBLaW0gPHN3MDMxMi5raW1Ac2Ftc3VuZy5j b20+Ci0gKgotICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlICBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0gKiB1bmRlciAgdGhlIHRlcm1zIG9mICB0aGUg R05VIEdlbmVyYWwgIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUKLSAqIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlICBMaWNlbnNlLCBv ciAoYXQgeW91cgotICogb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqLwotCi0jaW5jbHVk ZSA8ZHJtL2RybVAuaD4KLSNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+Ci0KLSNpbmNs dWRlICJleHlub3NfZHJtX2Rydi5oIgotI2luY2x1ZGUgImV4eW5vc19kcm1fZW5jb2Rlci5oIgot I2luY2x1ZGUgImV4eW5vc19kcm1fY3J0Yy5oIgotCi1zdGF0aWMgYm9vbAotZXh5bm9zX2RybV9l bmNvZGVyX21vZGVfZml4dXAoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAotCQkJICAgICAg IGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAotCQkJICAgICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBlbmNvZGVyLT5kZXY7Ci0Jc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZXh5bm9zX2Vu Y29kZXIgPSB0b19leHlub3NfZW5jb2RlcihlbmNvZGVyKTsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yOwotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZkZXYtPm1v ZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7Ci0JCWlmIChjb25uZWN0b3ItPmVuY29k ZXIgIT0gZW5jb2RlcikKLQkJCWNvbnRpbnVlOwotCi0JCWlmIChleHlub3NfZW5jb2Rlci0+b3Bz LT5tb2RlX2ZpeHVwKQotCQkJZXh5bm9zX2VuY29kZXItPm9wcy0+bW9kZV9maXh1cChleHlub3Nf ZW5jb2RlciwKLQkJCQkJCQljb25uZWN0b3IsIG1vZGUsCi0JCQkJCQkJYWRqdXN0ZWRfbW9kZSk7 Ci0JfQotCi0JcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGV4eW5vc19kcm1fZW5jb2Rl cl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCi0JCQkJCSBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwKLQkJCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1 c3RlZF9tb2RlKQotewotCXN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVy ID0gdG9fZXh5bm9zX2VuY29kZXIoZW5jb2Rlcik7Ci0KLQlpZiAoZXh5bm9zX2VuY29kZXItPm9w cy0+bW9kZV9zZXQpCi0JCWV4eW5vc19lbmNvZGVyLT5vcHMtPm1vZGVfc2V0KGV4eW5vc19lbmNv ZGVyLCBhZGp1c3RlZF9tb2RlKTsKLX0KLQotc3RhdGljIHZvaWQgZXh5bm9zX2RybV9lbmNvZGVy X2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCi17Ci0Jc3RydWN0IGV4eW5vc19k cm1fZW5jb2RlciAqZXh5bm9zX2VuY29kZXIgPSB0b19leHlub3NfZW5jb2RlcihlbmNvZGVyKTsK LQotCWlmIChleHlub3NfZW5jb2Rlci0+b3BzLT5lbmFibGUpCi0JCWV4eW5vc19lbmNvZGVyLT5v cHMtPmVuYWJsZShleHlub3NfZW5jb2Rlcik7Ci19Ci0KLXN0YXRpYyB2b2lkIGV4eW5vc19kcm1f ZW5jb2Rlcl9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKLXsKLQlzdHJ1Y3Qg ZXh5bm9zX2RybV9lbmNvZGVyICpleHlub3NfZW5jb2RlciA9IHRvX2V4eW5vc19lbmNvZGVyKGVu Y29kZXIpOwotCi0JaWYgKGV4eW5vc19lbmNvZGVyLT5vcHMtPmRpc2FibGUpCi0JCWV4eW5vc19l bmNvZGVyLT5vcHMtPmRpc2FibGUoZXh5bm9zX2VuY29kZXIpOwotfQotCi1zdGF0aWMgc3RydWN0 IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBleHlub3NfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7 Ci0JLm1vZGVfZml4dXAJPSBleHlub3NfZHJtX2VuY29kZXJfbW9kZV9maXh1cCwKLQkubW9kZV9z ZXQJPSBleHlub3NfZHJtX2VuY29kZXJfbW9kZV9zZXQsCi0JLmVuYWJsZQkJPSBleHlub3NfZHJt X2VuY29kZXJfZW5hYmxlLAotCS5kaXNhYmxlCT0gZXh5bm9zX2RybV9lbmNvZGVyX2Rpc2FibGUs Ci19OwotCi1zdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGV4eW5vc19lbmNvZGVyX2Z1 bmNzID0gewotCS5kZXN0cm95ID0gZHJtX2VuY29kZXJfY2xlYW51cCwKLX07Ci0KLWludCBleHlu b3NfZHJtX2VuY29kZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkgICAgICBz dHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICpleHlub3NfZW5jb2RlciwKLQkJCSAgICAgIGVudW0g ZXh5bm9zX2RybV9vdXRwdXRfdHlwZSB0eXBlKQotewotCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlcjsKLQlpbnQgcGlwZTsKLQotCXBpcGUgPSBleHlub3NfZHJtX2NydGNfZ2V0X3BpcGVfZnJv bV90eXBlKGRldiwgdHlwZSk7Ci0JaWYgKHBpcGUgPCAwKQotCQlyZXR1cm4gcGlwZTsKLQotCWVu Y29kZXIgPSAmZXh5bm9zX2VuY29kZXItPmJhc2U7Ci0JZW5jb2Rlci0+cG9zc2libGVfY3J0Y3Mg PSAxIDw8IHBpcGU7Ci0KLQlEUk1fREVCVUdfS01TKCJwb3NzaWJsZV9jcnRjcyA9IDB4JXhcbiIs IGVuY29kZXItPnBvc3NpYmxlX2NydGNzKTsKLQotCWRybV9lbmNvZGVyX2luaXQoZGV2LCBlbmNv ZGVyLCAmZXh5bm9zX2VuY29kZXJfZnVuY3MsCi0JCQlEUk1fTU9ERV9FTkNPREVSX1RNRFMpOwot Ci0JZHJtX2VuY29kZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmZXh5bm9zX2VuY29kZXJfaGVscGVy X2Z1bmNzKTsKLQotCURSTV9ERUJVR19LTVMoImVuY29kZXIgaGFzIGJlZW4gY3JlYXRlZFxuIik7 Ci0KLQlyZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5 bm9zX2RybV9lbmNvZGVyLmggYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZW5j b2Rlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjEwZGVlLi4wMDAwMDAwCi0t LSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9lbmNvZGVyLmgKKysrIC9kZXYv bnVsbApAQCAtMSwyMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDExIFNhbXN1bmcg RWxlY3Ryb25pY3MgQ28uLCBMdGQuCi0gKiBBdXRob3JzOgotICoJSW5raSBEYWUgPGlua2kuZGFl QHNhbXN1bmcuY29tPgotICoJSm9vbnlvdW5nIFNoaW0gPGp5MDkyMi5zaGltQHNhbXN1bmcuY29t PgotICoJU2V1bmctV29vIEtpbSA8c3cwMzEyLmtpbUBzYW1zdW5nLmNvbT4KLSAqCi0gKiBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgIGl0IGFuZC9v ciBtb2RpZnkgaXQKLSAqIHVuZGVyICB0aGUgdGVybXMgb2YgIHRoZSBHTlUgR2VuZXJhbCAgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyAgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgIExpY2Vuc2UsIG9yIChhdCB5b3VyCi0gKiBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICovCi0KLSNpZm5kZWYgX0VYWU5PU19EUk1fRU5D T0RFUl9IXwotI2RlZmluZSBfRVhZTk9TX0RSTV9FTkNPREVSX0hfCi0KLSNpbmNsdWRlICJleHlu b3NfZHJtX2Rydi5oIgotCi1pbnQgZXh5bm9zX2RybV9lbmNvZGVyX2NyZWF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyCi0JCQkgICAgICAqZW5jb2Rl ciwgZW51bSBleHlub3NfZHJtX291dHB1dF90eXBlIHR5cGUpOwotCi0jZW5kaWYKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMgYi9kcml2ZXJzL2dw dS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZmltZC5jCmluZGV4IDZjMGQzZGUuLjVkZWY2YmMgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9maW1kLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfZHJtX2ZpbWQuYwpAQCAtMTY5LDcgKzE2OSw3 IEBAIHN0cnVjdCBmaW1kX2NvbnRleHQgewogCiAJc3RydWN0IGV4eW5vc19kcm1fcGFuZWxfaW5m byBwYW5lbDsKIAlzdHJ1Y3QgZmltZF9kcml2ZXJfZGF0YSAqZHJpdmVyX2RhdGE7Ci0Jc3RydWN0 IGV4eW5vc19kcm1fZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXI7CiB9OwogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBmaW1kX2RyaXZlcl9k dF9tYXRjaFtdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3Nf ZHJtX3ZpZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV92aWRpLmMKaW5k ZXggOWI2NGM3Ny4uNTgxYWYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9l eHlub3NfZHJtX3ZpZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1f dmlkaS5jCkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiZXh5bm9zX2RybV9kcnYuaCIKICNp bmNsdWRlICJleHlub3NfZHJtX2NydGMuaCIKICNpbmNsdWRlICJleHlub3NfZHJtX3BsYW5lLmgi Ci0jaW5jbHVkZSAiZXh5bm9zX2RybV9lbmNvZGVyLmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV92 aWRpLmgiCiAKIC8qIHZpZGkgaGFzIHRvdGFsbHkgdGhyZWUgdmlydHVhbCB3aW5kb3dzLiAqLwpA QCAtMzUsNyArMzQsNyBAQAogCQkJCQljb25uZWN0b3IpCiAKIHN0cnVjdCB2aWRpX2NvbnRleHQg ewotCXN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIJZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2VuY29k ZXIJCWVuY29kZXI7CiAJc3RydWN0IHBsYXRmb3JtX2RldmljZQkJKnBkZXY7CiAJc3RydWN0IGRy bV9kZXZpY2UJCSpkcm1fZGV2OwogCXN0cnVjdCBleHlub3NfZHJtX2NydGMJCSpjcnRjOwpAQCAt NTQsNyArNTMsNyBAQCBzdHJ1Y3QgdmlkaV9jb250ZXh0IHsKIAlpbnQJCQkJcGlwZTsKIH07CiAK LXN0YXRpYyBpbmxpbmUgc3RydWN0IHZpZGlfY29udGV4dCAqZW5jb2Rlcl90b192aWRpKHN0cnVj dCBleHlub3NfZHJtX2VuY29kZXIgKmUpCitzdGF0aWMgaW5saW5lIHN0cnVjdCB2aWRpX2NvbnRl eHQgKmVuY29kZXJfdG9fdmlkaShzdHJ1Y3QgZHJtX2VuY29kZXIgKmUpCiB7CiAJcmV0dXJuIGNv bnRhaW5lcl9vZihlLCBzdHJ1Y3QgdmlkaV9jb250ZXh0LCBlbmNvZGVyKTsKIH0KQEAgLTM1OCw3 ICszNTcsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICp2aWRpX2Jlc3RfZW5jb2Rlcihz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCB2aWRpX2NvbnRleHQg KmN0eCA9IGN0eF9mcm9tX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwogCi0JcmV0dXJuICZjdHgtPmVu Y29kZXIuYmFzZTsKKwlyZXR1cm4gJmN0eC0+ZW5jb2RlcjsKIH0KIAogc3RhdGljIHN0cnVjdCBk cm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyB2aWRpX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7 CkBAIC0zNjYsMTAgKzM2NSw5IEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJf ZnVuY3MgdmlkaV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewogCS5iZXN0X2VuY29kZXIgPSB2 aWRpX2Jlc3RfZW5jb2RlciwKIH07CiAKLXN0YXRpYyBpbnQgdmlkaV9jcmVhdGVfY29ubmVjdG9y KHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVyKQorc3RhdGljIGludCB2 aWRpX2NyZWF0ZV9jb25uZWN0b3Ioc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogewotCXN0 cnVjdCB2aWRpX2NvbnRleHQgKmN0eCA9IGVuY29kZXJfdG9fdmlkaShleHlub3NfZW5jb2Rlcik7 Ci0Jc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmV4eW5vc19lbmNvZGVyLT5iYXNlOwor CXN0cnVjdCB2aWRpX2NvbnRleHQgKmN0eCA9IGVuY29kZXJfdG9fdmlkaShlbmNvZGVyKTsKIAlz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmN0eC0+Y29ubmVjdG9yOwogCWludCBy ZXQ7CiAKQEAgLTM4OSwxNSArMzg3LDQ3IEBAIHN0YXRpYyBpbnQgdmlkaV9jcmVhdGVfY29ubmVj dG9yKHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVyKQogCXJldHVybiAw OwogfQogCitzdGF0aWMgYm9vbCBleHlub3NfdmlkaV9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlciwKKwkJCQkgY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUs CisJCQkJIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlKQoreworCXJldHVy biB0cnVlOworfQorCitzdGF0aWMgdm9pZCBleHlub3NfdmlkaV9tb2RlX3NldChzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUsCisJCQkgICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7 Cit9CisKK3N0YXRpYyB2b2lkIGV4eW5vc192aWRpX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCit7Cit9CisKK3N0YXRpYyB2b2lkIGV4eW5vc192aWRpX2Rpc2FibGUoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKQoreworfQorCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVy X2hlbHBlcl9mdW5jcyBleHlub3NfdmlkaV9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKKwkubW9k ZV9maXh1cCA9IGV4eW5vc192aWRpX21vZGVfZml4dXAsCisJLm1vZGVfc2V0ID0gZXh5bm9zX3Zp ZGlfbW9kZV9zZXQsCisJLmVuYWJsZSA9IGV4eW5vc192aWRpX2VuYWJsZSwKKwkuZGlzYWJsZSA9 IGV4eW5vc192aWRpX2Rpc2FibGUsCit9OworCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyX2Z1 bmNzIGV4eW5vc192aWRpX2VuY29kZXJfZnVuY3MgPSB7CisJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rl cl9jbGVhbnVwLAorfTsKKwogc3RhdGljIGludCB2aWRpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IHZpZGlfY29u dGV4dCAqY3R4ID0gZGV2X2dldF9kcnZkYXRhKGRldik7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRy bV9kZXYgPSBkYXRhOwotCXN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVy ID0gJmN0eC0+ZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmY3R4LT5l bmNvZGVyOwogCXN0cnVjdCBleHlub3NfZHJtX3BsYW5lICpleHlub3NfcGxhbmU7CiAJZW51bSBk cm1fcGxhbmVfdHlwZSB0eXBlOwogCXVuc2lnbmVkIGludCB6cG9zOwotCWludCByZXQ7CisJaW50 IHBpcGUsIHJldDsKIAogCXZpZGlfY3R4X2luaXRpYWxpemUoY3R4LCBkcm1fZGV2KTsKIApAQCAt NDE5LDE3ICs0NDksMjQgQEAgc3RhdGljIGludCB2aWRpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCiAJCXJldHVybiBQVFJfRVJSKGN0 eC0+Y3J0Yyk7CiAJfQogCi0JcmV0ID0gZXh5bm9zX2RybV9lbmNvZGVyX2NyZWF0ZShkcm1fZGV2 LCBleHlub3NfZW5jb2RlciwKLQkJCQkJRVhZTk9TX0RJU1BMQVlfVFlQRV9WSURJKTsKLQlpZiAo cmV0KSB7Ci0JCURSTV9FUlJPUigiZmFpbGVkIHRvIGNyZWF0ZSBlbmNvZGVyXG4iKTsKLQkJcmV0 dXJuIHJldDsKLQl9CisJcGlwZSA9IGV4eW5vc19kcm1fY3J0Y19nZXRfcGlwZV9mcm9tX3R5cGUo ZHJtX2RldiwKKwkJCQkJCSAgRVhZTk9TX0RJU1BMQVlfVFlQRV9WSURJKTsKKwlpZiAocGlwZSA8 IDApCisJCXJldHVybiBwaXBlOworCisJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxIDw8IHBp cGU7CisKKwlEUk1fREVCVUdfS01TKCJwb3NzaWJsZV9jcnRjcyA9IDB4JXhcbiIsIGVuY29kZXIt PnBvc3NpYmxlX2NydGNzKTsKKworCWRybV9lbmNvZGVyX2luaXQoZHJtX2RldiwgZW5jb2Rlciwg JmV4eW5vc192aWRpX2VuY29kZXJfZnVuY3MsCisJCQkgRFJNX01PREVfRU5DT0RFUl9UTURTKTsK KworCWRybV9lbmNvZGVyX2hlbHBlcl9hZGQoZW5jb2RlciwgJmV4eW5vc192aWRpX2VuY29kZXJf aGVscGVyX2Z1bmNzKTsKIAotCXJldCA9IHZpZGlfY3JlYXRlX2Nvbm5lY3RvcihleHlub3NfZW5j b2Rlcik7CisJcmV0ID0gdmlkaV9jcmVhdGVfY29ubmVjdG9yKGVuY29kZXIpOwogCWlmIChyZXQp IHsKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gY3JlYXRlIGNvbm5lY3RvciByZXQgPSAlZFxuIiwg cmV0KTsKLQkJZHJtX2VuY29kZXJfY2xlYW51cCgmZXh5bm9zX2VuY29kZXItPmJhc2UpOworCQlk cm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOwogCQlyZXR1cm4gcmV0OwogCX0KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9leHlub3NfaGRtaS5jIGIvZHJpdmVycy9ncHUv ZHJtL2V4eW5vcy9leHlub3NfaGRtaS5jCmluZGV4IDE0OGU0MmYuLjkzMmY3ZmEgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2hkbWkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vZXh5bm9zL2V4eW5vc19oZG1pLmMKQEAgLTQ0LDcgKzQ0LDYgQEAKIAogI2luY2x1ZGUg ImV4eW5vc19kcm1fZHJ2LmgiCiAjaW5jbHVkZSAiZXh5bm9zX2RybV9jcnRjLmgiCi0jaW5jbHVk ZSAiZXh5bm9zX2RybV9lbmNvZGVyLmgiCiAjaW5jbHVkZSAiZXh5bm9zX21peGVyLmgiCiAKICNp bmNsdWRlIDxsaW51eC9ncGlvLmg+CkBAIC04OCw3ICs4Nyw3IEBAIHN0cnVjdCBoZG1pX3Jlc291 cmNlcyB7CiB9OwogCiBzdHJ1Y3QgaGRtaV9jb250ZXh0IHsKLQlzdHJ1Y3QgZXh5bm9zX2RybV9l bmNvZGVyCWVuY29kZXI7CisJc3RydWN0IGRybV9lbmNvZGVyCQllbmNvZGVyOwogCXN0cnVjdCBk ZXZpY2UJCQkqZGV2OwogCXN0cnVjdCBkcm1fZGV2aWNlCQkqZHJtX2RldjsKIAlzdHJ1Y3QgZHJt X2Nvbm5lY3RvcgkJY29ubmVjdG9yOwpAQCAtMTE2LDcgKzExNSw3IEBAIHN0cnVjdCBoZG1pX2Nv bnRleHQgewogCXN0cnVjdCByZWdtYXAJCQkqcG11cmVnOwogfTsKIAotc3RhdGljIGlubGluZSBz dHJ1Y3QgaGRtaV9jb250ZXh0ICplbmNvZGVyX3RvX2hkbWkoc3RydWN0IGV4eW5vc19kcm1fZW5j b2RlciAqZSkKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGhkbWlfY29udGV4dCAqZW5jb2Rlcl90b19o ZG1pKHN0cnVjdCBkcm1fZW5jb2RlciAqZSkKIHsKIAlyZXR1cm4gY29udGFpbmVyX29mKGUsIHN0 cnVjdCBoZG1pX2NvbnRleHQsIGVuY29kZXIpOwogfQpAQCAtMTAzMiw3ICsxMDMxLDcgQEAgc3Rh dGljIHN0cnVjdCBkcm1fZW5jb2RlciAqaGRtaV9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSA9IGN0eF9m cm9tX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwogCi0JcmV0dXJuICZoZGF0YS0+ZW5jb2Rlci5iYXNl OworCXJldHVybiAmaGRhdGEtPmVuY29kZXI7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9oZWxwZXJfZnVuY3MgaGRtaV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewpAQCAtMTA0 MSw5ICsxMDQwLDkgQEAgc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyBo ZG1pX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CiAJLmJlc3RfZW5jb2RlciA9IGhkbWlfYmVz dF9lbmNvZGVyLAogfTsKIAotc3RhdGljIGludCBoZG1pX2NyZWF0ZV9jb25uZWN0b3Ioc3RydWN0 IGV4eW5vc19kcm1fZW5jb2RlciAqZXh5bm9zX2VuY29kZXIpCitzdGF0aWMgaW50IGhkbWlfY3Jl YXRlX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiB7Ci0Jc3RydWN0IGhk bWlfY29udGV4dCAqaGRhdGEgPSBlbmNvZGVyX3RvX2hkbWkoZXh5bm9zX2VuY29kZXIpOworCXN0 cnVjdCBoZG1pX2NvbnRleHQgKmhkYXRhID0gZW5jb2Rlcl90b19oZG1pKGVuY29kZXIpOwogCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaGRhdGEtPmNvbm5lY3RvcjsKIAlpbnQg cmV0OwogCkBAIC0xMDU5LDI4ICsxMDU4LDM1IEBAIHN0YXRpYyBpbnQgaGRtaV9jcmVhdGVfY29u bmVjdG9yKHN0cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmV4eW5vc19lbmNvZGVyKQogCiAJZHJt X2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwgJmhkbWlfY29ubmVjdG9yX2hlbHBlcl9m dW5jcyk7CiAJZHJtX2Nvbm5lY3Rvcl9yZWdpc3Rlcihjb25uZWN0b3IpOwotCWRybV9tb2RlX2Nv bm5lY3Rvcl9hdHRhY2hfZW5jb2Rlcihjb25uZWN0b3IsICZleHlub3NfZW5jb2Rlci0+YmFzZSk7 CisJZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7 CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgaGRtaV9tb2RlX2ZpeHVwKHN0cnVjdCBl eHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXIsCi0JCQkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKLQkJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKLQkJCQlz dHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSkKK3N0YXRpYyBib29sIGhkbWlf bW9kZV9maXh1cChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCisJCQkgICAgY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKmFkanVzdGVkX21vZGUpCiB7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXIt PmRldjsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwogCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptOwogCWludCBtb2RlX29rOwogCi0JRFJNX0RFQlVHX0tNUygiJXNcbiIsIF9f RklMRV9fKTsKLQogCWRybV9tb2RlX3NldF9jcnRjaW5mbyhhZGp1c3RlZF9tb2RlLCAwKTsKIAor CWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0 b3JfbGlzdCwgaGVhZCkgeworCQlpZiAoY29ubmVjdG9yLT5lbmNvZGVyID09IGVuY29kZXIpCisJ CQlicmVhazsKKwl9CisKKwlpZiAoY29ubmVjdG9yLT5lbmNvZGVyICE9IGVuY29kZXIpCisJCXJl dHVybiB0cnVlOworCiAJbW9kZV9vayA9IGhkbWlfbW9kZV92YWxpZChjb25uZWN0b3IsIGFkanVz dGVkX21vZGUpOwogCiAJLyoganVzdCByZXR1cm4gaWYgdXNlciBkZXNpcmVkIG1vZGUgZXhpc3Rz LiAqLwogCWlmIChtb2RlX29rID09IE1PREVfT0spCi0JCXJldHVybjsKKwkJcmV0dXJuIHRydWU7 CiAKIAkvKgogCSAqIG90aGVyd2lzZSwgZmluZCB0aGUgbW9zdCBzdWl0YWJsZSBtb2RlIGFtb25n IG1vZGVzIGFuZCBjaGFuZ2UgaXQKQEAgLTExMDAsNiArMTEwNiw4IEBAIHN0YXRpYyB2b2lkIGhk bWlfbW9kZV9maXh1cChzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICplbmNvZGVyLAogCQkJYnJl YWs7CiAJCX0KIAl9CisKKwlyZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHZvaWQgaGRtaV9zZXRf YWNyKHUzMiBmcmVxLCB1OCAqYWNyKQpAQCAtMTY5NywyMiArMTcwNSwyMyBAQCBzdGF0aWMgdm9p ZCBoZG1pX2NvbmZfYXBwbHkoc3RydWN0IGhkbWlfY29udGV4dCAqaGRhdGEpCiAJaGRtaV9yZWdz X2R1bXAoaGRhdGEsICJzdGFydCIpOwogfQogCi1zdGF0aWMgdm9pZCBoZG1pX21vZGVfc2V0KHN0 cnVjdCBleHlub3NfZHJtX2VuY29kZXIgKmVuY29kZXIsCi0JCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSAqbW9kZSkKK3N0YXRpYyB2b2lkIGhkbWlfbW9kZV9zZXQoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyLAorCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCSAgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCiB7CiAJc3RydWN0IGhkbWlfY29u dGV4dCAqaGRhdGEgPSBlbmNvZGVyX3RvX2hkbWkoZW5jb2Rlcik7Ci0Jc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm0gPSBtb2RlOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptID0gYWRqdXN0 ZWRfbW9kZTsKIAogCURSTV9ERUJVR19LTVMoInhyZXM9JWQsIHlyZXM9JWQsIHJlZnJlc2g9JWQs IGludGw9JXNcbiIsCiAJCW0tPmhkaXNwbGF5LCBtLT52ZGlzcGxheSwKIAkJbS0+dnJlZnJlc2gs IChtLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSA/CiAJCSJJTlRFUkxBQ0VEIiA6 ICJQUk9HUkVTU0lWRSIpOwogCi0JZHJtX21vZGVfY29weSgmaGRhdGEtPmN1cnJlbnRfbW9kZSwg bW9kZSk7CisJZHJtX21vZGVfY29weSgmaGRhdGEtPmN1cnJlbnRfbW9kZSwgbSk7CiAJaGRhdGEt PmNlYV92aWRlb19pZCA9IGRybV9tYXRjaF9jZWFfbW9kZShtb2RlKTsKIH0KIAotc3RhdGljIHZv aWQgaGRtaV9lbmFibGUoc3RydWN0IGV4eW5vc19kcm1fZW5jb2RlciAqZW5jb2RlcikKK3N0YXRp YyB2b2lkIGhkbWlfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1 Y3QgaGRtaV9jb250ZXh0ICpoZGF0YSA9IGVuY29kZXJfdG9faGRtaShlbmNvZGVyKTsKIAlzdHJ1 Y3QgaGRtaV9yZXNvdXJjZXMgKnJlcyA9ICZoZGF0YS0+cmVzOwpAQCAtMTczOCwxMSArMTc0Nywx MSBAQCBzdGF0aWMgdm9pZCBoZG1pX2VuYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICpl bmNvZGVyKQogCWhkbWlfY29uZl9hcHBseShoZGF0YSk7CiB9CiAKLXN0YXRpYyB2b2lkIGhkbWlf ZGlzYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICplbmNvZGVyKQorc3RhdGljIHZvaWQg aGRtaV9kaXNhYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKIHsKIAlzdHJ1Y3QgaGRt aV9jb250ZXh0ICpoZGF0YSA9IGVuY29kZXJfdG9faGRtaShlbmNvZGVyKTsKIAlzdHJ1Y3QgaGRt aV9yZXNvdXJjZXMgKnJlcyA9ICZoZGF0YS0+cmVzOwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9 IGhkYXRhLT5lbmNvZGVyLmJhc2UuY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNv ZGVyLT5jcnRjOwogCWNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzID0g TlVMTDsKIAogCWlmICghaGRhdGEtPnBvd2VyZWQpCkBAIC0xNzgzLDEzICsxNzkyLDE3IEBAIHN0 YXRpYyB2b2lkIGhkbWlfZGlzYWJsZShzdHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICplbmNvZGVy KQogCWhkYXRhLT5wb3dlcmVkID0gZmFsc2U7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgZXh5bm9zX2Ry bV9lbmNvZGVyX29wcyBoZG1pX2VuY29kZXJfb3BzID0geworc3RhdGljIHN0cnVjdCBkcm1fZW5j b2Rlcl9oZWxwZXJfZnVuY3MgZXh5bm9zX2hkbWlfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7CiAJ Lm1vZGVfZml4dXAJPSBoZG1pX21vZGVfZml4dXAsCiAJLm1vZGVfc2V0CT0gaGRtaV9tb2RlX3Nl dCwKIAkuZW5hYmxlCQk9IGhkbWlfZW5hYmxlLAogCS5kaXNhYmxlCT0gaGRtaV9kaXNhYmxlLAog fTsKIAorc3RhdGljIHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBleHlub3NfaGRtaV9lbmNvZGVy X2Z1bmNzID0geworCS5kZXN0cm95ID0gZHJtX2VuY29kZXJfY2xlYW51cCwKK307CisKIHN0YXRp YyB2b2lkIGhkbWlfaG90cGx1Z193b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQog ewogCXN0cnVjdCBoZG1pX2NvbnRleHQgKmhkYXRhOwpAQCAtMTkxNywyMiArMTkzMCwyOSBAQCBz dGF0aWMgaW50IGhkbWlfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1h c3Rlciwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldiA9IGRhdGE7 CiAJc3RydWN0IGhkbWlfY29udGV4dCAqaGRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKLQlz dHJ1Y3QgZXh5bm9zX2RybV9lbmNvZGVyICpleHlub3NfZW5jb2RlciA9ICZoZGF0YS0+ZW5jb2Rl cjsKLQlpbnQgcmV0OworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZoZGF0YS0+ZW5j b2RlcjsKKwlpbnQgcmV0LCBwaXBlOwogCiAJaGRhdGEtPmRybV9kZXYgPSBkcm1fZGV2OwogCi0J cmV0ID0gZXh5bm9zX2RybV9lbmNvZGVyX2NyZWF0ZShkcm1fZGV2LCBleHlub3NfZW5jb2RlciwK LQkJCQkJRVhZTk9TX0RJU1BMQVlfVFlQRV9IRE1JKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9FUlJP UigiZmFpbGVkIHRvIGNyZWF0ZSBlbmNvZGVyXG4iKTsKLQkJcmV0dXJuIHJldDsKLQl9CisJcGlw ZSA9IGV4eW5vc19kcm1fY3J0Y19nZXRfcGlwZV9mcm9tX3R5cGUoZHJtX2RldiwKKwkJCQkJCSAg RVhZTk9TX0RJU1BMQVlfVFlQRV9IRE1JKTsKKwlpZiAocGlwZSA8IDApCisJCXJldHVybiBwaXBl OworCisJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSAxIDw8IHBpcGU7CisKKwlEUk1fREVCVUdf S01TKCJwb3NzaWJsZV9jcnRjcyA9IDB4JXhcbiIsIGVuY29kZXItPnBvc3NpYmxlX2NydGNzKTsK KworCWRybV9lbmNvZGVyX2luaXQoZHJtX2RldiwgZW5jb2RlciwgJmV4eW5vc19oZG1pX2VuY29k ZXJfZnVuY3MsCisJCQkgRFJNX01PREVfRU5DT0RFUl9UTURTKTsKKworCWRybV9lbmNvZGVyX2hl bHBlcl9hZGQoZW5jb2RlciwgJmV4eW5vc19oZG1pX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKIAot CXJldCA9IGhkbWlfY3JlYXRlX2Nvbm5lY3RvcihleHlub3NfZW5jb2Rlcik7CisJcmV0ID0gaGRt aV9jcmVhdGVfY29ubmVjdG9yKGVuY29kZXIpOwogCWlmIChyZXQpIHsKIAkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gY3JlYXRlIGNvbm5lY3RvciByZXQgPSAlZFxuIiwgcmV0KTsKLQkJZHJtX2VuY29k ZXJfY2xlYW51cCgmZXh5bm9zX2VuY29kZXItPmJhc2UpOworCQlkcm1fZW5jb2Rlcl9jbGVhbnVw KGVuY29kZXIpOwogCQlyZXR1cm4gcmV0OwogCX0KIApAQCAtMTk4NSw3ICsyMDA1LDYgQEAgc3Rh dGljIGludCBoZG1pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCiAJCXJldHVy biAtRU5PREVWOwogCiAJaGRhdGEtPmRydl9kYXRhID0gbWF0Y2gtPmRhdGE7Ci0JaGRhdGEtPmVu Y29kZXIub3BzID0gJmhkbWlfZW5jb2Rlcl9vcHM7CiAKIAlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShw ZGV2LCBoZGF0YSk7CiAKLS0gCjIuMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2RyaS1kZXZlbAo=