From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: [PATCH v5 08/11] drm/rockchip: Use the helpers for PSR Date: Tue, 11 Jun 2019 12:08:22 -0400 Message-ID: <20190611160844.257498-9-sean@poorly.run> References: <20190611160844.257498-1-sean@poorly.run> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190611160844.257498-1-sean@poorly.run> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Zain Wang , linux-rockchip@lists.infradead.org, David Airlie , Tomasz Figa , Sean Paul , Laurent Pinchart , linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org RnJvbTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+CgpJbnN0ZWFkIG9mIHJvbGxp bmcgb3VyIG93biBpbXBsZW1lbnRhdGlvbiBmb3IgdHJhY2tpbmcgd2hlbiBQU1Igc2hvdWxkCmJl IFtpbl1hY3RpdmUsIHVzZSB0aGUgbmV3IHNlbGYgcmVmcmVzaCBoZWxwZXJzIHRvIGRvIHRoZSBo ZWF2eSBsaWZ0aW5nLgoKQ2hhbmdlcyBpbiB2MjoKLSB1cGRhdGVkIHRvIHJlZmxlY3QgY2hhbmdl cyBtYWRlIGluIHRoZSBoZWxwZXJzCkNoYW5nZXMgaW4gdjM6Ci0gdXNlIHRoZSBuZXcgYXRvbWlj IGhvb2tzIHRvIGluc3BlY3QgY3J0YyBzdGF0ZSBpbnN0ZWFkIG9mIG5lZWRpbmcgY29ubiBzdGF0 ZSAoRGFuaWVsKQpDaGFuZ2VzIGluIHY0OgotIFVzZSBMYXVyZW50J3MgZ2V0X25ld19jb25uZWN0 b3JfZm9yX2VuY29kZXIgaGVscGVyIChEYW5pZWwpCi0gRXhpdCB2b3AgZGlzYWJsZSBlYXJseSBp ZiBpdCdzIGFscmVhZHkgb2ZmCkNoYW5nZXMgaW4gdjU6Ci0gUmViYXNlIG9uIGxhdGVzdCBkcm0t bWlzYy1uZXh0Ci0gUmVzb2x2ZSBjb25mbGljdCB3aXRoIHMvZWRwX3ZzY19wc3IvZHBfc2RwLyBy ZW5hbWUKLSBSZXNvbHZlIGNvbmZsaWN0IHdpdGggZHJtX2F0b21pYy5oIGhlYWRlciBpbmNsdXNp b24KCkxpbmsgdG8gdjE6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9t c2dpZC8yMDE5MDIyODIxMDkzOS44MzM4Ni00LXNlYW5AcG9vcmx5LnJ1bgpMaW5rIHRvIHYyOiBo dHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvbXNnaWQvMjAxOTAzMjYyMDQ1 MDkuOTY1MTUtMy1zZWFuQHBvb3JseS5ydW4KTGluayB0byB2MzogaHR0cHM6Ly9wYXRjaHdvcmsu ZnJlZWRlc2t0b3Aub3JnL3BhdGNoL21zZ2lkLzIwMTkwNTAyMTk0OTU2LjIxODQ0MS05LXNlYW5A cG9vcmx5LnJ1bgpMaW5rIHRvIHY0OiBodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcv cGF0Y2gvbXNnaWQvMjAxOTA1MDgxNjA5MjAuMTQ0NzM5LTktc2VhbkBwb29ybHkucnVuCgpDYzog WmFpbiBXYW5nIDx3enpAcm9jay1jaGlwcy5jb20+CkNjOiBUb21hc3ogRmlnYSA8dGZpZ2FAY2hy b21pdW0ub3JnPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgpDYzogTGF1cmVu dCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydEBpZGVhc29uYm9hcmQuY29tPgpUZXN0ZWQtYnk6 IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRlY2guZGU+ClNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1 bCA8c2VhbnBhdWxAY2hyb21pdW0ub3JnPgotLS0KIC4uLi9kcm0vYnJpZGdlL2FuYWxvZ2l4L2Fu YWxvZ2l4X2RwX2NvcmUuYyAgICB8IDI5MSArKysrKysrKysrKysrLS0tLS0KIC4uLi9kcm0vYnJp ZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaCAgICB8ICAgMiArLQogZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL01ha2VmaWxlICAgICAgICAgICAgIHwgICAzICstCiAuLi4vZ3B1L2RybS9y b2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC5jICAgfCAxMDYgKysrKy0tLQogZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jICAgIHwgICA1IC0KIGRyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNyLmMgICB8IDI5MCAtLS0tLS0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9wc3IuaCAgIHwgIDMwIC0t CiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jICAgfCAgMzkgKyst CiBpbmNsdWRlL2RybS9icmlkZ2UvYW5hbG9naXhfZHAuaCAgICAgICAgICAgICAgfCAgIDQgLQog OSBmaWxlcyBjaGFuZ2VkLCAyOTUgaW5zZXJ0aW9ucygrKSwgNDc1IGRlbGV0aW9ucygtKQogZGVs ZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNy LmMKIGRlbGV0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZHJtX3Bzci5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9h bmFsb2dpeF9kcF9jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxv Z2l4X2RwX2NvcmUuYwppbmRleCBhMDdkMTllMDhiODAzLi5mZWVkMDhlZjM4NmUzIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuYwpA QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogCiAj aW5jbHVkZSA8ZHJtL2JyaWRnZS9hbmFsb2dpeF9kcC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJt L2RybV9jcnRjLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kZXZpY2UuaD4KQEAgLTEwNiw2MyArMTA3 LDcgQEAgc3RhdGljIGludCBhbmFsb2dpeF9kcF9kZXRlY3RfaHBkKHN0cnVjdCBhbmFsb2dpeF9k cF9kZXZpY2UgKmRwKQogCXJldHVybiAwOwogfQogCi1pbnQgYW5hbG9naXhfZHBfcHNyX2VuYWJs ZWQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCi17Ci0KLQlyZXR1cm4gZHAtPnBzcl9l bmFibGU7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChhbmFsb2dpeF9kcF9wc3JfZW5hYmxlZCk7Ci0K LWludCBhbmFsb2dpeF9kcF9lbmFibGVfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRw KQotewotCXN0cnVjdCBkcF9zZHAgcHNyX3ZzYzsKLQotCWlmICghZHAtPnBzcl9lbmFibGUpCi0J CXJldHVybiAwOwotCi0JLyogUHJlcGFyZSBWU0MgcGFja2V0IGFzIHBlciBFRFAgMS40IHNwZWMs IFRhYmxlIDYuOSAqLwotCW1lbXNldCgmcHNyX3ZzYywgMCwgc2l6ZW9mKHBzcl92c2MpKTsKLQlw c3JfdnNjLnNkcF9oZWFkZXIuSEIwID0gMDsKLQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIxID0gMHg3 OwotCXBzcl92c2Muc2RwX2hlYWRlci5IQjIgPSAweDI7Ci0JcHNyX3ZzYy5zZHBfaGVhZGVyLkhC MyA9IDB4ODsKLQotCXBzcl92c2MuZGJbMF0gPSAwOwotCXBzcl92c2MuZGJbMV0gPSBFRFBfVlND X1BTUl9TVEFURV9BQ1RJVkUgfCBFRFBfVlNDX1BTUl9DUkNfVkFMVUVTX1ZBTElEOwotCi0JcmV0 dXJuIGFuYWxvZ2l4X2RwX3NlbmRfcHNyX3NwZChkcCwgJnBzcl92c2MsIHRydWUpOwotfQotRVhQ T1JUX1NZTUJPTF9HUEwoYW5hbG9naXhfZHBfZW5hYmxlX3Bzcik7Ci0KLWludCBhbmFsb2dpeF9k cF9kaXNhYmxlX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKLXsKLQlzdHJ1Y3Qg ZHBfc2RwIHBzcl92c2M7Ci0JaW50IHJldDsKLQotCWlmICghZHAtPnBzcl9lbmFibGUpCi0JCXJl dHVybiAwOwotCi0JLyogUHJlcGFyZSBWU0MgcGFja2V0IGFzIHBlciBFRFAgMS40IHNwZWMsIFRh YmxlIDYuOSAqLwotCW1lbXNldCgmcHNyX3ZzYywgMCwgc2l6ZW9mKHBzcl92c2MpKTsKLQlwc3Jf dnNjLnNkcF9oZWFkZXIuSEIwID0gMDsKLQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIxID0gMHg3Owot CXBzcl92c2Muc2RwX2hlYWRlci5IQjIgPSAweDI7Ci0JcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMyA9 IDB4ODsKLQotCXBzcl92c2MuZGJbMF0gPSAwOwotCXBzcl92c2MuZGJbMV0gPSAwOwotCi0JcmV0 ID0gZHJtX2RwX2RwY2Rfd3JpdGViKCZkcC0+YXV4LCBEUF9TRVRfUE9XRVIsIERQX1NFVF9QT1dF Ul9EMCk7Ci0JaWYgKHJldCAhPSAxKSB7Ci0JCWRldl9lcnIoZHAtPmRldiwgIkZhaWxlZCB0byBz ZXQgRFAgUG93ZXIwICVkXG4iLCByZXQpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXJldHVybiBh bmFsb2dpeF9kcF9zZW5kX3Bzcl9zcGQoZHAsICZwc3JfdnNjLCBmYWxzZSk7Ci19Ci1FWFBPUlRf U1lNQk9MX0dQTChhbmFsb2dpeF9kcF9kaXNhYmxlX3Bzcik7Ci0KLXN0YXRpYyBpbnQgYW5hbG9n aXhfZHBfZGV0ZWN0X3NpbmtfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQorc3Rh dGljIGJvb2wgYW5hbG9naXhfZHBfZGV0ZWN0X3NpbmtfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9k ZXZpY2UgKmRwKQogewogCXVuc2lnbmVkIGNoYXIgcHNyX3ZlcnNpb247CiAJaW50IHJldDsKQEAg LTE3MCwxNCArMTE1LDExIEBAIHN0YXRpYyBpbnQgYW5hbG9naXhfZHBfZGV0ZWN0X3NpbmtfcHNy KHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogCXJldCA9IGRybV9kcF9kcGNkX3JlYWRi KCZkcC0+YXV4LCBEUF9QU1JfU1VQUE9SVCwgJnBzcl92ZXJzaW9uKTsKIAlpZiAocmV0ICE9IDEp IHsKIAkJZGV2X2VycihkcC0+ZGV2LCAiZmFpbGVkIHRvIGdldCBQU1IgdmVyc2lvbiwgZGlzYWJs ZSBpdFxuIik7Ci0JCXJldHVybiByZXQ7CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlkZXZfZGJn KGRwLT5kZXYsICJQYW5lbCBQU1IgdmVyc2lvbiA6ICV4XG4iLCBwc3JfdmVyc2lvbik7Ci0KLQlk cC0+cHNyX2VuYWJsZSA9IChwc3JfdmVyc2lvbiAmIERQX1BTUl9JU19TVVBQT1JURUQpID8gdHJ1 ZSA6IGZhbHNlOwotCi0JcmV0dXJuIDA7CisJcmV0dXJuIHBzcl92ZXJzaW9uICYgRFBfUFNSX0lT X1NVUFBPUlRFRDsKIH0KIAogc3RhdGljIGludCBhbmFsb2dpeF9kcF9lbmFibGVfc2lua19wc3Io c3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCkBAIC0yMDAsNyArMTQyLDcgQEAgc3RhdGlj IGludCBhbmFsb2dpeF9kcF9lbmFibGVfc2lua19wc3Ioc3RydWN0IGFuYWxvZ2l4X2RwX2Rldmlj ZSAqZHApCiAJfQogCiAJLyogTWFpbi1MaW5rIHRyYW5zbWl0dGVyIHJlbWFpbnMgYWN0aXZlIGR1 cmluZyBQU1IgYWN0aXZlIHN0YXRlcyAqLwotCXBzcl9lbiA9IERQX1BTUl9NQUlOX0xJTktfQUNU SVZFIHwgRFBfUFNSX0NSQ19WRVJJRklDQVRJT047CisJcHNyX2VuID0gRFBfUFNSX0NSQ19WRVJJ RklDQVRJT047CiAJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGViKCZkcC0+YXV4LCBEUF9QU1JfRU5f Q0ZHLCBwc3JfZW4pOwogCWlmIChyZXQgIT0gMSkgewogCQlkZXZfZXJyKGRwLT5kZXYsICJmYWls ZWQgdG8gc2V0IHBhbmVsIHBzclxuIik7CkBAIC0yMDgsOCArMTUwLDcgQEAgc3RhdGljIGludCBh bmFsb2dpeF9kcF9lbmFibGVfc2lua19wc3Ioc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHAp CiAJfQogCiAJLyogRW5hYmxlIHBzciBmdW5jdGlvbiAqLwotCXBzcl9lbiA9IERQX1BTUl9FTkFC TEUgfCBEUF9QU1JfTUFJTl9MSU5LX0FDVElWRSB8Ci0JCSBEUF9QU1JfQ1JDX1ZFUklGSUNBVElP TjsKKwlwc3JfZW4gPSBEUF9QU1JfRU5BQkxFIHwgRFBfUFNSX0NSQ19WRVJJRklDQVRJT047CiAJ cmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGViKCZkcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCBwc3JfZW4p OwogCWlmIChyZXQgIT0gMSkgewogCQlkZXZfZXJyKGRwLT5kZXYsICJmYWlsZWQgdG8gc2V0IHBh bmVsIHBzclxuIik7CkBAIC0yMTgsMTAgKzE1OSwxMSBAQCBzdGF0aWMgaW50IGFuYWxvZ2l4X2Rw X2VuYWJsZV9zaW5rX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKIAogCWFuYWxv Z2l4X2RwX2VuYWJsZV9wc3JfY3JjKGRwKTsKIAorCWRwLT5wc3Jfc3VwcG9ydGVkID0gdHJ1ZTsK KwogCXJldHVybiAwOwogZW5kOgogCWRldl9lcnIoZHAtPmRldiwgImVuYWJsZSBwc3IgZmFpbCwg Zm9yY2UgdG8gZGlzYWJsZSBwc3JcbiIpOwotCWRwLT5wc3JfZW5hYmxlID0gZmFsc2U7CiAKIAly ZXR1cm4gcmV0OwogfQpAQCAtMTAzNiwyNSArOTc4LDkwIEBAIHN0YXRpYyBpbnQgYW5hbG9naXhf ZHBfY29tbWl0KHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogCQl9CiAJfQogCi0JcmV0 ID0gYW5hbG9naXhfZHBfZGV0ZWN0X3NpbmtfcHNyKGRwKTsKLQlpZiAocmV0KQotCQlyZXR1cm4g cmV0OwotCiAJLyogQ2hlY2sgd2hldGhlciBwYW5lbCBzdXBwb3J0cyBmYXN0IHRyYWluaW5nICov CiAJcmV0ID0gYW5hbG9naXhfZHBfZmFzdF9saW5rX3RyYWluX2RldGVjdGlvbihkcCk7CiAJaWYg KHJldCkKLQkJZHAtPnBzcl9lbmFibGUgPSBmYWxzZTsKKwkJcmV0dXJuIHJldDsKIAotCWlmIChk cC0+cHNyX2VuYWJsZSkgeworCWlmIChhbmFsb2dpeF9kcF9kZXRlY3Rfc2lua19wc3IoZHApKSB7 CiAJCXJldCA9IGFuYWxvZ2l4X2RwX2VuYWJsZV9zaW5rX3BzcihkcCk7CiAJCWlmIChyZXQpCiAJ CQlyZXR1cm4gcmV0OwogCX0KIAorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYW5hbG9n aXhfZHBfZW5hYmxlX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKK3sKKwlzdHJ1 Y3QgZHBfc2RwIHBzcl92c2M7CisJaW50IHJldDsKKwl1OCBzaW5rOworCisJcmV0ID0gZHJtX2Rw X2RwY2RfcmVhZGIoJmRwLT5hdXgsIERQX1BTUl9TVEFUVVMsICZzaW5rKTsKKwlpZiAocmV0ICE9 IDEpCisJCURSTV9ERVZfRVJST1IoZHAtPmRldiwgIkZhaWxlZCB0byByZWFkIHBzciBzdGF0dXMg JWRcbiIsIHJldCk7CisJZWxzZSBpZiAoc2luayA9PSBEUF9QU1JfU0lOS19BQ1RJVkVfUkZCKQor CQlyZXR1cm4gMDsKKworCS8qIFByZXBhcmUgVlNDIHBhY2tldCBhcyBwZXIgRURQIDEuNCBzcGVj LCBUYWJsZSA2LjkgKi8KKwltZW1zZXQoJnBzcl92c2MsIDAsIHNpemVvZihwc3JfdnNjKSk7CisJ cHNyX3ZzYy5zZHBfaGVhZGVyLkhCMCA9IDA7CisJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4 NzsKKwlwc3JfdnNjLnNkcF9oZWFkZXIuSEIyID0gMHgyOworCXBzcl92c2Muc2RwX2hlYWRlci5I QjMgPSAweDg7CisJcHNyX3ZzYy5kYlswXSA9IDA7CisJcHNyX3ZzYy5kYlsxXSA9IEVEUF9WU0Nf UFNSX1NUQVRFX0FDVElWRSB8IEVEUF9WU0NfUFNSX0NSQ19WQUxVRVNfVkFMSUQ7CisKKwlyZXQg PSBhbmFsb2dpeF9kcF9zZW5kX3Bzcl9zcGQoZHAsICZwc3JfdnNjLCB0cnVlKTsKKwlpZiAoIXJl dCkKKwkJYW5hbG9naXhfZHBfc2V0X2FuYWxvZ19wb3dlcl9kb3duKGRwLCBQT1dFUl9BTEwsIHRy dWUpOwogCiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGludCBhbmFsb2dpeF9kcF9kaXNhYmxl X3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKK3sKKwlzdHJ1Y3QgZHBfc2RwIHBz cl92c2M7CisJaW50IHJldDsKKwl1OCBzaW5rOworCisJYW5hbG9naXhfZHBfc2V0X2FuYWxvZ19w b3dlcl9kb3duKGRwLCBQT1dFUl9BTEwsIGZhbHNlKTsKKworCXJldCA9IGRybV9kcF9kcGNkX3dy aXRlYigmZHAtPmF1eCwgRFBfU0VUX1BPV0VSLCBEUF9TRVRfUE9XRVJfRDApOworCWlmIChyZXQg IT0gMSkgeworCQlEUk1fREVWX0VSUk9SKGRwLT5kZXYsICJGYWlsZWQgdG8gc2V0IERQIFBvd2Vy MCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBkcm1fZHBfZHBjZF9y ZWFkYigmZHAtPmF1eCwgRFBfUFNSX1NUQVRVUywgJnNpbmspOworCWlmIChyZXQgIT0gMSkgewor CQlEUk1fREVWX0VSUk9SKGRwLT5kZXYsICJGYWlsZWQgdG8gcmVhZCBwc3Igc3RhdHVzICVkXG4i LCByZXQpOworCQlyZXR1cm4gcmV0OworCX0gZWxzZSBpZiAoc2luayA9PSBEUF9QU1JfU0lOS19J TkFDVElWRSkgeworCQlEUk1fREVWX0VSUk9SKGRwLT5kZXYsICJzaW5rIGluYWN0aXZlLCBza2lw IGRpc2FibGUgcHNyIik7CisJCXJldHVybiAwOworCX0KKworCXJldCA9IGFuYWxvZ2l4X2RwX3Ry YWluX2xpbmsoZHApOworCWlmIChyZXQpIHsKKwkJRFJNX0RFVl9FUlJPUihkcC0+ZGV2LCAiRmFp bGVkIHRvIHRyYWluIHRoZSBsaW5rICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKwor CS8qIFByZXBhcmUgVlNDIHBhY2tldCBhcyBwZXIgRURQIDEuNCBzcGVjLCBUYWJsZSA2LjkgKi8K KwltZW1zZXQoJnBzcl92c2MsIDAsIHNpemVvZihwc3JfdnNjKSk7CisJcHNyX3ZzYy5zZHBfaGVh ZGVyLkhCMCA9IDA7CisJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4NzsKKwlwc3JfdnNjLnNk cF9oZWFkZXIuSEIyID0gMHgyOworCXBzcl92c2Muc2RwX2hlYWRlci5IQjMgPSAweDg7CisKKwlw c3JfdnNjLmRiWzBdID0gMDsKKwlwc3JfdnNjLmRiWzFdID0gMDsKKworCXJldHVybiBhbmFsb2dp eF9kcF9zZW5kX3Bzcl9zcGQoZHAsICZwc3JfdnNjLCB0cnVlKTsKK30KKwogLyoKICAqIFRoaXMg ZnVuY3Rpb24gaXMgYSBiaXQgb2YgYSBjYXRjaC1hbGwgZm9yIHBhbmVsIHByZXBhcmF0aW9uLCBo b3BlZnVsbHkKICAqIHNpbXBsaWZ5aW5nIHRoZSBsb2dpYyBvZiBmdW5jdGlvbnMgdGhhdCBuZWVk IHRvIHByZXBhcmUvdW5wcmVwYXJlIHRoZSBwYW5lbApAQCAtMTE0NSw5ICsxMTUyLDM3IEBAIGFu YWxvZ2l4X2RwX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQog CXJldHVybiBkcC0+ZW5jb2RlcjsKIH0KIAorCitpbnQgYW5hbG9naXhfZHBfYXRvbWljX2NoZWNr KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCA9IHRv X2RwKGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7 CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCisJY29ubl9zdGF0ZSA9IGRy bV9hdG9taWNfZ2V0X25ld19jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7CisJaWYg KFdBUk5fT04oIWNvbm5fc3RhdGUpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWNvbm5fc3RhdGUt PnNlbGZfcmVmcmVzaF9hd2FyZSA9IHRydWU7CisKKwlpZiAoIWNvbm5fc3RhdGUtPmNydGMpCisJ CXJldHVybiAwOworCisJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRl KHN0YXRlLCBjb25uX3N0YXRlLT5jcnRjKTsKKwlpZiAoIWNydGNfc3RhdGUpCisJCXJldHVybiAw OworCisJaWYgKGNydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUgJiYgIWRwLT5wc3Jfc3Vw cG9ydGVkKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiAwOworfQorCiBzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGFuYWxvZ2l4X2RwX2Nvbm5lY3Rv cl9oZWxwZXJfZnVuY3MgPSB7CiAJLmdldF9tb2RlcyA9IGFuYWxvZ2l4X2RwX2dldF9tb2RlcywK IAkuYmVzdF9lbmNvZGVyID0gYW5hbG9naXhfZHBfYmVzdF9lbmNvZGVyLAorCS5hdG9taWNfY2hl Y2sgPSBhbmFsb2dpeF9kcF9hdG9taWNfY2hlY2ssCiB9OwogCiBzdGF0aWMgZW51bSBkcm1fY29u bmVjdG9yX3N0YXR1cwpAQCAtMTIzOSwxMSArMTI3NCw0MiBAQCBzdGF0aWMgaW50IGFuYWxvZ2l4 X2RwX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKIAlyZXR1cm4gMDsK IH0KIAotc3RhdGljIHZvaWQgYW5hbG9naXhfZHBfYnJpZGdlX3ByZV9lbmFibGUoc3RydWN0IGRy bV9icmlkZ2UgKmJyaWRnZSkKK3N0YXRpYworc3RydWN0IGRybV9jcnRjICphbmFsb2dpeF9kcF9n ZXRfbmV3X2NydGMoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHAsCisJCQkJCSAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciA9IGRwLT5lbmNvZGVyOworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7CisKKwljb25uZWN0b3IgPSBkcm1f YXRvbWljX2dldF9uZXdfY29ubmVjdG9yX2Zvcl9lbmNvZGVyKHN0YXRlLCBlbmNvZGVyKTsKKwlp ZiAoIWNvbm5lY3RvcikKKwkJcmV0dXJuIE5VTEw7CisKKwljb25uX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfbmV3X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKKwlpZiAoIWNvbm5f c3RhdGUpCisJCXJldHVybiBOVUxMOworCisJcmV0dXJuIGNvbm5fc3RhdGUtPmNydGM7Cit9CisK K3N0YXRpYyB2b2lkIGFuYWxvZ2l4X2RwX2JyaWRnZV9hdG9taWNfcHJlX2VuYWJsZShzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAorCQkJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKIHsKIAlzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCA9IGJyaWRnZS0+ZHJpdmVyX3By aXZhdGU7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq b2xkX2NydGNfc3RhdGU7CiAJaW50IHJldDsKIAorCWNydGMgPSBhbmFsb2dpeF9kcF9nZXRfbmV3 X2NydGMoZHAsIHN0YXRlKTsKKwlpZiAoIWNydGMpCisJCXJldHVybjsKKworCW9sZF9jcnRjX3N0 YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOworCS8qIERv bid0IHRvdWNoIHRoZSBwYW5lbCBpZiB3ZSdyZSBjb21pbmcgYmFjayBmcm9tIFBTUiAqLworCWlm IChvbGRfY3J0Y19zdGF0ZSAmJiBvbGRfY3J0Y19zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkK KwkJcmV0dXJuOworCiAJcmV0ID0gYW5hbG9naXhfZHBfcHJlcGFyZV9wYW5lbChkcCwgdHJ1ZSwg dHJ1ZSk7CiAJaWYgKHJldCkKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0dXAgdGhlIHBhbmVs IHJldCA9ICVkXG4iLCByZXQpOwpAQCAtMTMwNCwxMCArMTM3MCwyNyBAQCBzdGF0aWMgaW50IGFu YWxvZ2l4X2RwX3NldF9icmlkZ2Uoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCiAJcmV0 dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgYW5hbG9naXhfZHBfYnJpZGdlX2VuYWJsZShzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQorc3RhdGljIHZvaWQgYW5hbG9naXhfZHBfYnJpZGdlX2F0 b21pY19lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKKwkJCQkJICAgICBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAq ZHAgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwogCWludCB0aW1lb3V0X2xvb3Ag PSAwOworCWludCByZXQ7CisKKwljcnRjID0gYW5hbG9naXhfZHBfZ2V0X25ld19jcnRjKGRwLCBz dGF0ZSk7CisJaWYgKCFjcnRjKQorCQlyZXR1cm47CisKKwlvbGRfY3J0Y19zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwkvKiBOb3QgYSBmdWxsIGVu YWJsZSwganVzdCBkaXNhYmxlIFBTUiBhbmQgY29udGludWUgKi8KKwlpZiAob2xkX2NydGNfc3Rh dGUgJiYgb2xkX2NydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpIHsKKwkJcmV0ID0gYW5h bG9naXhfZHBfZGlzYWJsZV9wc3IoZHApOworCQlpZiAocmV0KQorCQkJRFJNX0VSUk9SKCJGYWls ZWQgdG8gZGlzYWJsZSBwc3IgJWRcbiIsIHJldCk7CisJCXJldHVybjsKKwl9CiAKIAlpZiAoZHAt PmRwbXNfbW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQogCQlyZXR1cm47CkBAIC0xMzU2LDExICsx NDM5LDU2IEBAIHN0YXRpYyB2b2lkIGFuYWxvZ2l4X2RwX2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBk cm1fYnJpZGdlICpicmlkZ2UpCiAJaWYgKHJldCkKIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0 dXAgdGhlIHBhbmVsIHJldCA9ICVkXG4iLCByZXQpOwogCi0JZHAtPnBzcl9lbmFibGUgPSBmYWxz ZTsKIAlkcC0+ZmFzdF90cmFpbl9lbmFibGUgPSBmYWxzZTsKKwlkcC0+cHNyX3N1cHBvcnRlZCA9 IGZhbHNlOwogCWRwLT5kcG1zX21vZGUgPSBEUk1fTU9ERV9EUE1TX09GRjsKIH0KIAorc3RhdGlj IHZvaWQgYW5hbG9naXhfZHBfYnJpZGdlX2F0b21pY19kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdl ICpicmlkZ2UsCisJCQkJCSAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sK KwlzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCA9IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7 CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2Ny dGNfc3RhdGUgPSBOVUxMOworCisJY3J0YyA9IGFuYWxvZ2l4X2RwX2dldF9uZXdfY3J0YyhkcCwg c3RhdGUpOworCWlmICghY3J0YykKKwkJZ290byBvdXQ7CisKKwluZXdfY3J0Y19zdGF0ZSA9IGRy bV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwlpZiAoIW5ld19jcnRj X3N0YXRlKQorCQlnb3RvIG91dDsKKworCS8qIERvbid0IGRvIGEgZnVsbCBkaXNhYmxlIG9uIFBT UiB0cmFuc2l0aW9ucyAqLworCWlmIChuZXdfY3J0Y19zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2 ZSkKKwkJcmV0dXJuOworCitvdXQ6CisJYW5hbG9naXhfZHBfYnJpZGdlX2Rpc2FibGUoYnJpZGdl KTsKK30KKworc3RhdGljCit2b2lkIGFuYWxvZ2l4X2RwX2JyaWRnZV9hdG9taWNfcG9zdF9kaXNh YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHAgPSBicmlk Z2UtPmRyaXZlcl9wcml2YXRlOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOworCWludCByZXQ7CisKKwljcnRjID0gYW5hbG9n aXhfZHBfZ2V0X25ld19jcnRjKGRwLCBzdGF0ZSk7CisJaWYgKCFjcnRjKQorCQlyZXR1cm47CisK KwluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBj cnRjKTsKKwlpZiAoIW5ld19jcnRjX3N0YXRlIHx8ICFuZXdfY3J0Y19zdGF0ZS0+c2VsZl9yZWZy ZXNoX2FjdGl2ZSkKKwkJcmV0dXJuOworCisJcmV0ID0gYW5hbG9naXhfZHBfZW5hYmxlX3Bzcihk cCk7CisJaWYgKHJldCkKKwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIHBzciAoJWQpXG4i LCByZXQpOworfQorCiBzdGF0aWMgdm9pZCBhbmFsb2dpeF9kcF9icmlkZ2VfbW9kZV9zZXQoc3Ry dWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKIAkJCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9k ZSAqb3JpZ19tb2RlLAogCQkJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQpA QCAtMTQ0MCwxNiArMTU2OCwxMSBAQCBzdGF0aWMgdm9pZCBhbmFsb2dpeF9kcF9icmlkZ2VfbW9k ZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKIAkJdmlkZW8tPmludGVybGFjZWQgPSB0 cnVlOwogfQogCi1zdGF0aWMgdm9pZCBhbmFsb2dpeF9kcF9icmlkZ2Vfbm9wKHN0cnVjdCBkcm1f YnJpZGdlICpicmlkZ2UpCi17Ci0JLyogZG8gbm90aGluZyAqLwotfQotCiBzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9icmlkZ2VfZnVuY3MgYW5hbG9naXhfZHBfYnJpZGdlX2Z1bmNzID0gewotCS5w cmVfZW5hYmxlID0gYW5hbG9naXhfZHBfYnJpZGdlX3ByZV9lbmFibGUsCi0JLmVuYWJsZSA9IGFu YWxvZ2l4X2RwX2JyaWRnZV9lbmFibGUsCi0JLmRpc2FibGUgPSBhbmFsb2dpeF9kcF9icmlkZ2Vf ZGlzYWJsZSwKLQkucG9zdF9kaXNhYmxlID0gYW5hbG9naXhfZHBfYnJpZGdlX25vcCwKKwkuYXRv bWljX3ByZV9lbmFibGUgPSBhbmFsb2dpeF9kcF9icmlkZ2VfYXRvbWljX3ByZV9lbmFibGUsCisJ LmF0b21pY19lbmFibGUgPSBhbmFsb2dpeF9kcF9icmlkZ2VfYXRvbWljX2VuYWJsZSwKKwkuYXRv bWljX2Rpc2FibGUgPSBhbmFsb2dpeF9kcF9icmlkZ2VfYXRvbWljX2Rpc2FibGUsCisJLmF0b21p Y19wb3N0X2Rpc2FibGUgPSBhbmFsb2dpeF9kcF9icmlkZ2VfYXRvbWljX3Bvc3RfZGlzYWJsZSwK IAkubW9kZV9zZXQgPSBhbmFsb2dpeF9kcF9icmlkZ2VfbW9kZV9zZXQsCiAJLmF0dGFjaCA9IGFu YWxvZ2l4X2RwX2JyaWRnZV9hdHRhY2gsCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmggYi9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaAppbmRleCAzZTVmZTkwZWRmNzFhLi4xNDFi ZWM2NzE0MmQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2Fu YWxvZ2l4X2RwX2NvcmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2Fu YWxvZ2l4X2RwX2NvcmUuaApAQCAtMTczLDggKzE3Myw4IEBAIHN0cnVjdCBhbmFsb2dpeF9kcF9k ZXZpY2UgewogCWludAkJCWRwbXNfbW9kZTsKIAlpbnQJCQlocGRfZ3BpbzsKIAlib29sICAgICAg ICAgICAgICAgICAgICBmb3JjZV9ocGQ7Ci0JYm9vbAkJCXBzcl9lbmFibGU7CiAJYm9vbAkJCWZh c3RfdHJhaW5fZW5hYmxlOworCWJvb2wJCQlwc3Jfc3VwcG9ydGVkOwogCiAJc3RydWN0IG11dGV4 CQlwYW5lbF9sb2NrOwogCWJvb2wJCQlwYW5lbF9pc19tb2Rlc2V0OwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L01ha2VmaWxlCmluZGV4IDUyNDY4NGJhN2Y2YTUuLjE3YTllN2ViMjEzMGQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvTWFrZWZpbGUKQEAgLTQsOCArNCw3IEBACiAjIERpcmVjdCBSZW5kZXJpbmcgSW5m cmFzdHJ1Y3R1cmUgKERSSSkgaW4gWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyLgogCiByb2NrY2hp cGRybS15IDo9IHJvY2tjaGlwX2RybV9kcnYubyByb2NrY2hpcF9kcm1fZmIubyBcCi0JCXJvY2tj aGlwX2RybV9nZW0ubyByb2NrY2hpcF9kcm1fcHNyLm8gXAotCQlyb2NrY2hpcF9kcm1fdm9wLm8g cm9ja2NoaXBfdm9wX3JlZy5vCisJCXJvY2tjaGlwX2RybV9nZW0ubyByb2NrY2hpcF9kcm1fdm9w Lm8gcm9ja2NoaXBfdm9wX3JlZy5vCiByb2NrY2hpcGRybS0kKENPTkZJR19EUk1fRkJERVZfRU1V TEFUSU9OKSArPSByb2NrY2hpcF9kcm1fZmJkZXYubwogCiByb2NrY2hpcGRybS0kKENPTkZJR19S T0NLQ0hJUF9BTkFMT0dJWF9EUCkgKz0gYW5hbG9naXhfZHAtcm9ja2NoaXAubwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2FuYWxvZ2l4X2RwLXJvY2tjaGlwLmMgYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvYW5hbG9naXhfZHAtcm9ja2NoaXAuYwppbmRleCBiYzQ0MjM2 MjQyMDk4Li4wMzExODU5MjlhMjI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvYW5hbG9naXhfZHAtcm9ja2NoaXAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv YW5hbG9naXhfZHAtcm9ja2NoaXAuYwpAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1ZGUgPGxpbnV4 L2Nsay5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Yy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9k cm1fZHBfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9vZi5oPgogI2luY2x1ZGUgPGRybS9k cm1fcGFuZWwuaD4KQEAgLTMyLDcgKzM0LDYgQEAKICNpbmNsdWRlIDxkcm0vYnJpZGdlL2FuYWxv Z2l4X2RwLmg+CiAKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZHJ2LmgiCi0jaW5jbHVkZSAicm9j a2NoaXBfZHJtX3Bzci5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2RybV92b3AuaCIKIAogI2RlZmlu ZSBSSzMyODhfR1JGX1NPQ19DT042CQkweDI1YwpAQCAtNzcsMjkgKzc4LDYgQEAgc3RydWN0IHJv Y2tjaGlwX2RwX2RldmljZSB7CiAJc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSBwbGF0X2Rh dGE7CiB9OwogCi1zdGF0aWMgaW50IGFuYWxvZ2l4X2RwX3Bzcl9zZXQoc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyLCBib29sIGVuYWJsZWQpCi17Ci0Jc3RydWN0IHJvY2tjaGlwX2RwX2Rldmlj ZSAqZHAgPSB0b19kcChlbmNvZGVyKTsKLQlpbnQgcmV0OwotCi0JaWYgKCFhbmFsb2dpeF9kcF9w c3JfZW5hYmxlZChkcC0+YWRwKSkKLQkJcmV0dXJuIDA7Ci0KLQlEUk1fREVWX0RFQlVHKGRwLT5k ZXYsICIlcyBQU1IuLi5cbiIsIGVuYWJsZWQgPyAiRW50cnkiIDogIkV4aXQiKTsKLQotCXJldCA9 IHJvY2tjaGlwX2RybV93YWl0X3ZhY3RfZW5kKGRwLT5lbmNvZGVyLmNydGMsCi0JCQkJCSBQU1Jf V0FJVF9MSU5FX0ZMQUdfVElNRU9VVF9NUyk7Ci0JaWYgKHJldCkgewotCQlEUk1fREVWX0VSUk9S KGRwLT5kZXYsICJsaW5lIGZsYWcgaW50ZXJydXB0IGRpZCBub3QgYXJyaXZlXG4iKTsKLQkJcmV0 dXJuIC1FVElNRURPVVQ7Ci0JfQotCi0JaWYgKGVuYWJsZWQpCi0JCXJldHVybiBhbmFsb2dpeF9k cF9lbmFibGVfcHNyKGRwLT5hZHApOwotCWVsc2UKLQkJcmV0dXJuIGFuYWxvZ2l4X2RwX2Rpc2Fi bGVfcHNyKGRwLT5hZHApOwotfQotCiBzdGF0aWMgaW50IHJvY2tjaGlwX2RwX3ByZV9pbml0KHN0 cnVjdCByb2NrY2hpcF9kcF9kZXZpY2UgKmRwKQogewogCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGRw LT5yc3QpOwpAQCAtMTMwLDIxICsxMDgsOSBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2RwX3Bvd2Vy b25fc3RhcnQoc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSAqcGxhdF9kYXRhKQogCXJldHVy biByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgcm9ja2NoaXBfZHBfcG93ZXJvbl9lbmQoc3RydWN0IGFu YWxvZ2l4X2RwX3BsYXRfZGF0YSAqcGxhdF9kYXRhKQotewotCXN0cnVjdCByb2NrY2hpcF9kcF9k ZXZpY2UgKmRwID0gdG9fZHAocGxhdF9kYXRhKTsKLQotCXJldHVybiByb2NrY2hpcF9kcm1fcHNy X2luaGliaXRfcHV0KCZkcC0+ZW5jb2Rlcik7Ci19Ci0KIHN0YXRpYyBpbnQgcm9ja2NoaXBfZHBf cG93ZXJkb3duKHN0cnVjdCBhbmFsb2dpeF9kcF9wbGF0X2RhdGEgKnBsYXRfZGF0YSkKIHsKIAlz dHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2aWNlICpkcCA9IHRvX2RwKHBsYXRfZGF0YSk7Ci0JaW50IHJl dDsKLQotCXJldCA9IHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9nZXQoJmRwLT5lbmNvZGVyKTsK LQlpZiAocmV0ICE9IDApCi0JCXJldHVybiByZXQ7CiAKIAljbGtfZGlzYWJsZV91bnByZXBhcmUo ZHAtPnBjbGspOwogCkBAIC0xODQsMTIgKzE1MCw0MiBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9k cF9kcm1fZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiAJLyog ZG8gbm90aGluZyAqLwogfQogCi1zdGF0aWMgdm9pZCByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9l bmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQorc3RhdGljCitzdHJ1Y3QgZHJtX2Ny dGMgKnJvY2tjaGlwX2RwX2RybV9nZXRfbmV3X2NydGMoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLAorCQkJCQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZTsKKworCWNvbm5lY3RvciA9IGRybV9hdG9taWNfZ2V0X25ld19jb25uZWN0 b3JfZm9yX2VuY29kZXIoc3RhdGUsIGVuY29kZXIpOworCWlmICghY29ubmVjdG9yKQorCQlyZXR1 cm4gTlVMTDsKKworCWNvbm5fc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfY29ubmVjdG9yX3N0 YXRlKHN0YXRlLCBjb25uZWN0b3IpOworCWlmICghY29ubl9zdGF0ZSkKKwkJcmV0dXJuIE5VTEw7 CisKKwlyZXR1cm4gY29ubl9zdGF0ZS0+Y3J0YzsKK30KKworc3RhdGljIHZvaWQgcm9ja2NoaXBf ZHBfZHJtX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKKwkJCQkJ ICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCByb2NrY2hpcF9k cF9kZXZpY2UgKmRwID0gdG9fZHAoZW5jb2Rlcik7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOwor CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CiAJaW50IHJldDsKIAl1MzIg dmFsOwogCisJY3J0YyA9IHJvY2tjaGlwX2RwX2RybV9nZXRfbmV3X2NydGMoZW5jb2Rlciwgc3Rh dGUpOworCWlmICghY3J0YykKKwkJcmV0dXJuOworCisJb2xkX2NydGNfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9vbGRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJLyogQ29taW5nIGJhY2sgZnJv bSBzZWxmIHJlZnJlc2gsIG5vdGhpbmcgdG8gZG8gKi8KKwlpZiAob2xkX2NydGNfc3RhdGUgJiYg b2xkX2NydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpCisJCXJldHVybjsKKwogCXJldCA9 IGRybV9vZl9lbmNvZGVyX2FjdGl2ZV9lbmRwb2ludF9pZChkcC0+ZGV2LT5vZl9ub2RlLCBlbmNv ZGVyKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuOwpAQCAtMjE0LDkgKzIxMCwyNyBAQCBzdGF0 aWMgdm9pZCByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKQogCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcC0+Z3JmY2xrKTsKIH0KIAotc3Rh dGljIHZvaWQgcm9ja2NoaXBfZHBfZHJtX2VuY29kZXJfbm9wKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKK3N0YXRpYyB2b2lkIHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2Rpc2FibGUoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkgICAgc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQogewotCS8qIGRvIG5vdGhpbmcgKi8KKwlzdHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2 aWNlICpkcCA9IHRvX2RwKGVuY29kZXIpOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlID0gTlVMTDsKKwlpbnQgcmV0OworCisJ Y3J0YyA9IHJvY2tjaGlwX2RwX2RybV9nZXRfbmV3X2NydGMoZW5jb2Rlciwgc3RhdGUpOworCS8q IE5vIGNydGMgbWVhbnMgd2UncmUgZG9pbmcgYSBmdWxsIHNodXRkb3duICovCisJaWYgKCFjcnRj KQorCQlyZXR1cm47CisKKwluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRj X3N0YXRlKHN0YXRlLCBjcnRjKTsKKwkvKiBJZiB3ZSdyZSBub3QgZW50ZXJpbmcgc2VsZi1yZWZy ZXNoLCBubyBuZWVkIHRvIHdhaXQgZm9yIHZhY3QgKi8KKwlpZiAoIW5ld19jcnRjX3N0YXRlIHx8 ICFuZXdfY3J0Y19zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkKKwkJcmV0dXJuOworCisJcmV0 ID0gcm9ja2NoaXBfZHJtX3dhaXRfdmFjdF9lbmQoY3J0YywgUFNSX1dBSVRfTElORV9GTEFHX1RJ TUVPVVRfTVMpOworCWlmIChyZXQpCisJCURSTV9ERVZfRVJST1IoZHAtPmRldiwgImxpbmUgZmxh ZyBpcnEgdGltZWQgb3V0XG4iKTsKIH0KIAogc3RhdGljIGludApAQCAtMjQ1LDggKzI1OSw4IEBA IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIsCiBzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyByb2NrY2hp cF9kcF9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKIAkubW9kZV9maXh1cCA9IHJvY2tjaGlwX2Rw X2RybV9lbmNvZGVyX21vZGVfZml4dXAsCiAJLm1vZGVfc2V0ID0gcm9ja2NoaXBfZHBfZHJtX2Vu Y29kZXJfbW9kZV9zZXQsCi0JLmVuYWJsZSA9IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2VuYWJs ZSwKLQkuZGlzYWJsZSA9IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX25vcCwKKwkuYXRvbWljX2Vu YWJsZSA9IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2VuYWJsZSwKKwkuYXRvbWljX2Rpc2FibGUg PSByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9kaXNhYmxlLAogCS5hdG9taWNfY2hlY2sgPSByb2Nr Y2hpcF9kcF9kcm1fZW5jb2Rlcl9hdG9taWNfY2hlY2ssCiB9OwogCkBAIC0zMzgsMjMgKzM1Miwx NiBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2RwX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1 Y3QgZGV2aWNlICptYXN0ZXIsCiAKIAlkcC0+cGxhdF9kYXRhLmRldl90eXBlID0gZHAtPmRhdGEt PmNoaXBfdHlwZTsKIAlkcC0+cGxhdF9kYXRhLnBvd2VyX29uX3N0YXJ0ID0gcm9ja2NoaXBfZHBf cG93ZXJvbl9zdGFydDsKLQlkcC0+cGxhdF9kYXRhLnBvd2VyX29uX2VuZCA9IHJvY2tjaGlwX2Rw X3Bvd2Vyb25fZW5kOwogCWRwLT5wbGF0X2RhdGEucG93ZXJfb2ZmID0gcm9ja2NoaXBfZHBfcG93 ZXJkb3duOwogCWRwLT5wbGF0X2RhdGEuZ2V0X21vZGVzID0gcm9ja2NoaXBfZHBfZ2V0X21vZGVz OwogCi0JcmV0ID0gcm9ja2NoaXBfZHJtX3Bzcl9yZWdpc3RlcigmZHAtPmVuY29kZXIsIGFuYWxv Z2l4X2RwX3Bzcl9zZXQpOwotCWlmIChyZXQgPCAwKQotCQlnb3RvIGVycl9jbGVhbnVwX2VuY29k ZXI7Ci0KIAlkcC0+YWRwID0gYW5hbG9naXhfZHBfYmluZChkZXYsIGRwLT5kcm1fZGV2LCAmZHAt PnBsYXRfZGF0YSk7CiAJaWYgKElTX0VSUihkcC0+YWRwKSkgewogCQlyZXQgPSBQVFJfRVJSKGRw LT5hZHApOwotCQlnb3RvIGVycl91bnJlZ19wc3I7CisJCWdvdG8gZXJyX2NsZWFudXBfZW5jb2Rl cjsKIAl9CiAKIAlyZXR1cm4gMDsKLWVycl91bnJlZ19wc3I6Ci0Jcm9ja2NoaXBfZHJtX3Bzcl91 bnJlZ2lzdGVyKCZkcC0+ZW5jb2Rlcik7CiBlcnJfY2xlYW51cF9lbmNvZGVyOgogCWRwLT5lbmNv ZGVyLmZ1bmNzLT5kZXN0cm95KCZkcC0+ZW5jb2Rlcik7CiAJcmV0dXJuIHJldDsKQEAgLTM2Niw3 ICszNzMsNiBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9kcF91bmJpbmQoc3RydWN0IGRldmljZSAq ZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCiAJc3RydWN0IHJvY2tjaGlwX2RwX2RldmljZSAq ZHAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAogCWFuYWxvZ2l4X2RwX3VuYmluZChkcC0+YWRw KTsKLQlyb2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIoJmRwLT5lbmNvZGVyKTsKIAlkcC0+ZW5j b2Rlci5mdW5jcy0+ZGVzdHJveSgmZHAtPmVuY29kZXIpOwogCiAJZHAtPmFkcCA9IEVSUl9QVFIo LUVOT0RFVik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZHJtX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKaW5k ZXggYTg4OGUzMWFhNTQ1YS4uZTMwNWI4YTU4NmRlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9mYi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fZmIuYwpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgInJvY2tj aGlwX2RybV9kcnYuaCIKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZmIuaCIKICNpbmNsdWRlICJy b2NrY2hpcF9kcm1fZ2VtLmgiCi0jaW5jbHVkZSAicm9ja2NoaXBfZHJtX3Bzci5oIgogCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyByb2NrY2hpcF9kcm1fZmJfZnVu Y3MgPSB7CiAJLmRlc3Ryb3kgICAgICAgPSBkcm1fZ2VtX2ZiX2Rlc3Ryb3ksCkBAIC0xMTgsOCAr MTE3LDYgQEAgcm9ja2NoaXBfYXRvbWljX2hlbHBlcl9jb21taXRfdGFpbF9ycG0oc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g b2xkX3N0YXRlLT5kZXY7CiAKLQlyb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfZ2V0X3N0YXRlKG9s ZF9zdGF0ZSk7Ci0KIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9kaXNhYmxlcyhk ZXYsIG9sZF9zdGF0ZSk7CiAKIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFi bGVzKGRldiwgb2xkX3N0YXRlKTsKQEAgLTEyNyw4ICsxMjQsNiBAQCByb2NrY2hpcF9hdG9taWNf aGVscGVyX2NvbW1pdF90YWlsX3JwbShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRl KQogCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBvbGRfc3RhdGUsCiAJCQkJ CURSTV9QTEFORV9DT01NSVRfQUNUSVZFX09OTFkpOwogCi0Jcm9ja2NoaXBfZHJtX3Bzcl9pbmhp Yml0X3B1dF9zdGF0ZShvbGRfc3RhdGUpOwotCiAJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2h3 X2RvbmUob2xkX3N0YXRlKTsKIAogCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3Mo ZGV2LCBvbGRfc3RhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1f cHNyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYzhiZDIzNWI2NzUuLjAwMDAw MDAwMDAwMDAKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9wc3Iu YworKysgL2Rldi9udWxsCkBAIC0xLDI5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSBG dXpob3UgUm9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uTHRkCi0gKiBBdXRob3I6IFlha2lyIFlhbmcg PHlra0Byb2NrLWNoaXBzLmNvbT4KLSAqCi0gKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIHZlcnNp b24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAot ICogbWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0 ZXJtcy4KLSAqCi0gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0gKiBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICovCi0KLSNpbmNsdWRlIDxkcm0vZHJt UC5oPgotI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Ci0jaW5jbHVkZSA8ZHJtL2RybV9wcm9i ZV9oZWxwZXIuaD4KLQotI2luY2x1ZGUgInJvY2tjaGlwX2RybV9kcnYuaCIKLSNpbmNsdWRlICJy b2NrY2hpcF9kcm1fcHNyLmgiCi0KLSNkZWZpbmUgUFNSX0ZMVVNIX1RJTUVPVVRfTVMJMTAwCi0K LXN0cnVjdCBwc3JfZHJ2IHsKLQlzdHJ1Y3QgbGlzdF9oZWFkCWxpc3Q7Ci0Jc3RydWN0IGRybV9l bmNvZGVyCSplbmNvZGVyOwotCi0Jc3RydWN0IG11dGV4CQlsb2NrOwotCWludAkJCWluaGliaXRf Y291bnQ7Ci0JYm9vbAkJCWVuYWJsZWQ7Ci0KLQlzdHJ1Y3QgZGVsYXllZF93b3JrCWZsdXNoX3dv cms7Ci0KLQlpbnQgKCpzZXQpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwgYm9vbCBlbmFi bGUpOwotfTsKLQotc3RhdGljIHN0cnVjdCBwc3JfZHJ2ICpmaW5kX3Bzcl9ieV9lbmNvZGVyKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKLXsKLQlzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZh dGUgKmRybV9kcnYgPSBlbmNvZGVyLT5kZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBwc3JfZHJ2 ICpwc3I7Ci0KLQltdXRleF9sb2NrKCZkcm1fZHJ2LT5wc3JfbGlzdF9sb2NrKTsKLQlsaXN0X2Zv cl9lYWNoX2VudHJ5KHBzciwgJmRybV9kcnYtPnBzcl9saXN0LCBsaXN0KSB7Ci0JCWlmIChwc3It PmVuY29kZXIgPT0gZW5jb2RlcikKLQkJCWdvdG8gb3V0OwotCX0KLQlwc3IgPSBFUlJfUFRSKC1F Tk9ERVYpOwotCi1vdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZkcm1fZHJ2LT5wc3JfbGlzdF9sb2NrKTsK LQlyZXR1cm4gcHNyOwotfQotCi1zdGF0aWMgaW50IHBzcl9zZXRfc3RhdGVfbG9ja2VkKHN0cnVj dCBwc3JfZHJ2ICpwc3IsIGJvb2wgZW5hYmxlKQotewotCWludCByZXQ7Ci0KLQlpZiAocHNyLT5p bmhpYml0X2NvdW50ID4gMCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlpZiAoZW5hYmxlID09IHBz ci0+ZW5hYmxlZCkKLQkJcmV0dXJuIDA7Ci0KLQlyZXQgPSBwc3ItPnNldChwc3ItPmVuY29kZXIs IGVuYWJsZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCXBzci0+ZW5hYmxlZCA9IGVu YWJsZTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIHZvaWQgcHNyX2ZsdXNoX2hhbmRsZXIoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQotewotCXN0cnVjdCBwc3JfZHJ2ICpwc3IgPSBjb250YWlu ZXJfb2YodG9fZGVsYXllZF93b3JrKHdvcmspLAotCQkJCQkgICBzdHJ1Y3QgcHNyX2RydiwgZmx1 c2hfd29yayk7Ci0KLQltdXRleF9sb2NrKCZwc3ItPmxvY2spOwotCXBzcl9zZXRfc3RhdGVfbG9j a2VkKHBzciwgdHJ1ZSk7Ci0JbXV0ZXhfdW5sb2NrKCZwc3ItPmxvY2spOwotfQotCi0vKioKLSAq IHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQgLSByZWxlYXNlIFBTUiBpbmhpYml0IG9uIGdp dmVuIGVuY29kZXIKLSAqIEBlbmNvZGVyOiBlbmNvZGVyIHRvIG9idGFpbiB0aGUgUFNSIGVuY29k ZXIKLSAqCi0gKiBEZWNyZW1lbnRzIFBTUiBpbmhpYml0IGNvdW50IG9uIGdpdmVuIGVuY29kZXIu IFNob3VsZCBiZSBjYWxsZWQgb25seQotICogZm9yIGEgUFNSIGluaGliaXQgY291bnQgaW5jcmVt ZW50IGRvbmUgYmVmb3JlLiBJZiBQU1IgaW5oaWJpdCBjb3VudGVyCi0gKiByZWFjaGVzIHplcm8s IFBTUiBmbHVzaCB3b3JrIGlzIHNjaGVkdWxlZCB0byBtYWtlIHRoZSBoYXJkd2FyZSBlbnRlcgot ICogUFNSIG1vZGUgaW4gUFNSX0ZMVVNIX1RJTUVPVVRfTVMuCi0gKgotICogUmV0dXJuczoKLSAq IFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KLSAqLwotaW50IHJv Y2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQot ewotCXN0cnVjdCBwc3JfZHJ2ICpwc3IgPSBmaW5kX3Bzcl9ieV9lbmNvZGVyKGVuY29kZXIpOwot Ci0JaWYgKElTX0VSUihwc3IpKQotCQlyZXR1cm4gUFRSX0VSUihwc3IpOwotCi0JbXV0ZXhfbG9j aygmcHNyLT5sb2NrKTsKLQktLXBzci0+aW5oaWJpdF9jb3VudDsKLQlXQVJOX09OKHBzci0+aW5o aWJpdF9jb3VudCA8IDApOwotCWlmICghcHNyLT5pbmhpYml0X2NvdW50KQotCQltb2RfZGVsYXll ZF93b3JrKHN5c3RlbV93cSwgJnBzci0+Zmx1c2hfd29yaywKLQkJCQkgUFNSX0ZMVVNIX1RJTUVP VVRfTVMpOwotCW11dGV4X3VubG9jaygmcHNyLT5sb2NrKTsKLQotCXJldHVybiAwOwotfQotRVhQ T1JUX1NZTUJPTChyb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfcHV0KTsKLQotdm9pZCByb2NrY2hp cF9kcm1fcHNyX2luaGliaXRfZ2V0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKLXsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpj cnRjX3N0YXRlOwotCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQl1MzIgZW5jb2Rlcl9t YXNrID0gMDsKLQlpbnQgaTsKLQotCWZvcl9lYWNoX29sZF9jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCWVuY29kZXJfbWFzayB8PSBjcnRjX3N0YXRlLT5lbmNv ZGVyX21hc2s7Ci0JCWVuY29kZXJfbWFzayB8PSBjcnRjLT5zdGF0ZS0+ZW5jb2Rlcl9tYXNrOwot CX0KLQotCWRybV9mb3JfZWFjaF9lbmNvZGVyX21hc2soZW5jb2Rlciwgc3RhdGUtPmRldiwgZW5j b2Rlcl9tYXNrKQotCQlyb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfZ2V0KGVuY29kZXIpOwotfQot RVhQT1JUX1NZTUJPTChyb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfZ2V0X3N0YXRlKTsKLQotdm9p ZCByb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfcHV0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkKLXsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Ci0Jc3RydWN0IGRybV9jcnRj X3N0YXRlICpjcnRjX3N0YXRlOwotCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKLQl1MzIg ZW5jb2Rlcl9tYXNrID0gMDsKLQlpbnQgaTsKLQotCWZvcl9lYWNoX29sZF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Ci0JCWVuY29kZXJfbWFzayB8PSBjcnRjX3N0 YXRlLT5lbmNvZGVyX21hc2s7Ci0JCWVuY29kZXJfbWFzayB8PSBjcnRjLT5zdGF0ZS0+ZW5jb2Rl cl9tYXNrOwotCX0KLQotCWRybV9mb3JfZWFjaF9lbmNvZGVyX21hc2soZW5jb2Rlciwgc3RhdGUt PmRldiwgZW5jb2Rlcl9tYXNrKQotCQlyb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfcHV0KGVuY29k ZXIpOwotfQotRVhQT1JUX1NZTUJPTChyb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfcHV0X3N0YXRl KTsKLQotLyoqCi0gKiByb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfZ2V0IC0gYWNxdWlyZSBQU1Ig aW5oaWJpdCBvbiBnaXZlbiBlbmNvZGVyCi0gKiBAZW5jb2RlcjogZW5jb2RlciB0byBvYnRhaW4g dGhlIFBTUiBlbmNvZGVyCi0gKgotICogSW5jcmVtZW50cyBQU1IgaW5oaWJpdCBjb3VudCBvbiBn aXZlbiBlbmNvZGVyLiBUaGlzIGZ1bmN0aW9uIGd1YXJhbnRlZXMKLSAqIHRoYXQgYWZ0ZXIgaXQg cmV0dXJucyBQU1IgaXMgdHVybmVkIG9mZiBvbiBnaXZlbiBlbmNvZGVyIGFuZCBubyBQU1ItcmVs YXRlZAotICogaGFyZHdhcmUgc3RhdGUgY2hhbmdlIG9jY3VycyBhdCBsZWFzdCB1bnRpbCBhIG1h dGNoaW5nIGNhbGwgdG8KLSAqIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQoKSBpcyBkb25l LgotICoKLSAqIFJldHVybnM6Ci0gKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9u IGZhaWx1cmUuCi0gKi8KLWludCByb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfZ2V0KHN0cnVjdCBk cm1fZW5jb2RlciAqZW5jb2RlcikKLXsKLQlzdHJ1Y3QgcHNyX2RydiAqcHNyID0gZmluZF9wc3Jf YnlfZW5jb2RlcihlbmNvZGVyKTsKLQotCWlmIChJU19FUlIocHNyKSkKLQkJcmV0dXJuIFBUUl9F UlIocHNyKTsKLQotCW11dGV4X2xvY2soJnBzci0+bG9jayk7Ci0JcHNyX3NldF9zdGF0ZV9sb2Nr ZWQocHNyLCBmYWxzZSk7Ci0JKytwc3ItPmluaGliaXRfY291bnQ7Ci0JbXV0ZXhfdW5sb2NrKCZw c3ItPmxvY2spOwotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmcHNyLT5mbHVzaF93b3JrKTsK LQotCXJldHVybiAwOwotfQotRVhQT1JUX1NZTUJPTChyb2NrY2hpcF9kcm1fcHNyX2luaGliaXRf Z2V0KTsKLQotc3RhdGljIHZvaWQgcm9ja2NoaXBfZHJtX2RvX2ZsdXNoKHN0cnVjdCBwc3JfZHJ2 ICpwc3IpCi17Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZwc3ItPmZsdXNoX3dvcmspOwot Ci0JbXV0ZXhfbG9jaygmcHNyLT5sb2NrKTsKLQlpZiAoIXBzcl9zZXRfc3RhdGVfbG9ja2VkKHBz ciwgZmFsc2UpKQotCQltb2RfZGVsYXllZF93b3JrKHN5c3RlbV93cSwgJnBzci0+Zmx1c2hfd29y aywKLQkJCQkgUFNSX0ZMVVNIX1RJTUVPVVRfTVMpOwotCW11dGV4X3VubG9jaygmcHNyLT5sb2Nr KTsKLX0KLQotLyoqCi0gKiByb2NrY2hpcF9kcm1fcHNyX2ZsdXNoX2FsbCAtIGZvcmNlIHRvIGZs dXNoIGFsbCByZWdpc3RlcmVkIFBTUiBlbmNvZGVycwotICogQGRldjogZHJtIGRldmljZQotICoK LSAqIERpc2FibGUgdGhlIFBTUiBmdW5jdGlvbiBmb3IgYWxsIHJlZ2lzdGVyZWQgZW5jb2RlcnMs IGFuZCB0aGVuIGVuYWJsZSB0aGUKLSAqIFBTUiBmdW5jdGlvbiBiYWNrIGFmdGVyIFBTUl9GTFVT SF9USU1FT1VULiBJZiBlbmNvZGVyIFBTUiBzdGF0ZSBoYXZlIGJlZW4KLSAqIGNoYW5nZWQgZHVy aW5nIGZsdXNoIHRpbWUsIHRoZW4ga2VlcCB0aGUgc3RhdGUgbm8gY2hhbmdlIGFmdGVyIGZsdXNo Ci0gKiB0aW1lb3V0LgotICoKLSAqIFJldHVybnM6Ci0gKiBaZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0 aXZlIGVycm5vIG9uIGZhaWx1cmUuCi0gKi8KLXZvaWQgcm9ja2NoaXBfZHJtX3Bzcl9mbHVzaF9h bGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKLXsKLQlzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZh dGUgKmRybV9kcnYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBwc3JfZHJ2ICpwc3I7Ci0K LQltdXRleF9sb2NrKCZkcm1fZHJ2LT5wc3JfbGlzdF9sb2NrKTsKLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHBzciwgJmRybV9kcnYtPnBzcl9saXN0LCBsaXN0KQotCQlyb2NrY2hpcF9kcm1fZG9fZmx1 c2gocHNyKTsKLQltdXRleF91bmxvY2soJmRybV9kcnYtPnBzcl9saXN0X2xvY2spOwotfQotRVhQ T1JUX1NZTUJPTChyb2NrY2hpcF9kcm1fcHNyX2ZsdXNoX2FsbCk7Ci0KLS8qKgotICogcm9ja2No aXBfZHJtX3Bzcl9yZWdpc3RlciAtIHJlZ2lzdGVyIGVuY29kZXIgdG8gcHNyIGRyaXZlcgotICog QGVuY29kZXI6IGVuY29kZXIgdGhhdCBvYnRhaW4gdGhlIFBTUiBmdW5jdGlvbgotICogQHBzcl9z ZXQ6IGNhbGwgYmFjayB0byBzZXQgUFNSIHN0YXRlCi0gKgotICogVGhlIGZ1bmN0aW9uIHJldHVy bnMgd2l0aCBQU1IgaW5oaWJpdCBjb3VudGVyIGluaXRpYWxpemVkIHdpdGggb25lCi0gKiBhbmQg dGhlIGNhbGxlciAodHlwaWNhbGx5IGVuY29kZXIgZHJpdmVyKSBuZWVkcyB0byBjYWxsCi0gKiBy b2NrY2hpcF9kcm1fcHNyX2luaGliaXRfcHV0KCkgd2hlbiBpdCBiZWNvbWVzIHJlYWR5IHRvIGFj Y2VwdCBQU1IKLSAqIGVuYWJsZSByZXF1ZXN0LgotICoKLSAqIFJldHVybnM6Ci0gKiBaZXJvIG9u IHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCi0gKi8KLWludCByb2NrY2hpcF9k cm1fcHNyX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKLQkJCWludCAoKnBz cl9zZXQpKHN0cnVjdCBkcm1fZW5jb2RlciAqLCBib29sIGVuYWJsZSkpCi17Ci0Jc3RydWN0IHJv Y2tjaGlwX2RybV9wcml2YXRlICpkcm1fZHJ2OwotCXN0cnVjdCBwc3JfZHJ2ICpwc3I7Ci0KLQlp ZiAoIWVuY29kZXIgfHwgIXBzcl9zZXQpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JZHJtX2RydiA9 IGVuY29kZXItPmRldi0+ZGV2X3ByaXZhdGU7Ci0KLQlwc3IgPSBremFsbG9jKHNpemVvZihzdHJ1 Y3QgcHNyX2RydiksIEdGUF9LRVJORUwpOwotCWlmICghcHNyKQotCQlyZXR1cm4gLUVOT01FTTsK LQotCUlOSVRfREVMQVlFRF9XT1JLKCZwc3ItPmZsdXNoX3dvcmssIHBzcl9mbHVzaF9oYW5kbGVy KTsKLQltdXRleF9pbml0KCZwc3ItPmxvY2spOwotCi0JcHNyLT5pbmhpYml0X2NvdW50ID0gMTsK LQlwc3ItPmVuYWJsZWQgPSBmYWxzZTsKLQlwc3ItPmVuY29kZXIgPSBlbmNvZGVyOwotCXBzci0+ c2V0ID0gcHNyX3NldDsKLQotCW11dGV4X2xvY2soJmRybV9kcnYtPnBzcl9saXN0X2xvY2spOwot CWxpc3RfYWRkX3RhaWwoJnBzci0+bGlzdCwgJmRybV9kcnYtPnBzcl9saXN0KTsKLQltdXRleF91 bmxvY2soJmRybV9kcnYtPnBzcl9saXN0X2xvY2spOwotCi0JcmV0dXJuIDA7Ci19Ci1FWFBPUlRf U1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfcmVnaXN0ZXIpOwotCi0vKioKLSAqIHJvY2tjaGlwX2Ry bV9wc3JfdW5yZWdpc3RlciAtIHVucmVnaXN0ZXIgZW5jb2RlciB0byBwc3IgZHJpdmVyCi0gKiBA ZW5jb2RlcjogZW5jb2RlciB0aGF0IG9idGFpbiB0aGUgUFNSIGZ1bmN0aW9uCi0gKiBAcHNyX3Nl dDogY2FsbCBiYWNrIHRvIHNldCBQU1Igc3RhdGUKLSAqCi0gKiBJdCBpcyBleHBlY3RlZCB0aGF0 IHRoZSBQU1IgaW5oaWJpdCBjb3VudGVyIGlzIDEgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzCi0gKiBj YWxsZWQsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgc3RhdGUgd2hlbiByZWxhdGVkIGVuY29kZXIg aGFzIGJlZW4KLSAqIGRpc2Nvbm5lY3RlZCBmcm9tIGFueSBDUlRDcyBhbmQgaXRzIGRyaXZlciBj YWxsZWQKLSAqIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9nZXQoKSB0byBzdG9wIHRoZSBQU1Ig bG9naWMuCi0gKgotICogUmV0dXJuczoKLSAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJy bm8gb24gZmFpbHVyZS4KLSAqLwotdm9pZCByb2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXN0cnVjdCByb2NrY2hpcF9kcm1fcHJpdmF0 ZSAqZHJtX2RydiA9IGVuY29kZXItPmRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IHBzcl9kcnYg KnBzciwgKm47Ci0KLQltdXRleF9sb2NrKCZkcm1fZHJ2LT5wc3JfbGlzdF9sb2NrKTsKLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUocHNyLCBuLCAmZHJtX2Rydi0+cHNyX2xpc3QsIGxpc3QpIHsK LQkJaWYgKHBzci0+ZW5jb2RlciA9PSBlbmNvZGVyKSB7Ci0JCQkvKgotCQkJICogQW55IG90aGVy IHZhbHVlIHdvdWxkIG1lYW4gdGhhdCB0aGUgZW5jb2RlcgotCQkJICogaXMgc3RpbGwgaW4gdXNl LgotCQkJICovCi0JCQlXQVJOX09OKHBzci0+aW5oaWJpdF9jb3VudCAhPSAxKTsKLQotCQkJbGlz dF9kZWwoJnBzci0+bGlzdCk7Ci0JCQlrZnJlZShwc3IpOwotCQl9Ci0JfQotCW11dGV4X3VubG9j aygmZHJtX2Rydi0+cHNyX2xpc3RfbG9jayk7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2Ry bV9wc3JfdW5yZWdpc3Rlcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX3Bzci5oIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Ry bV9wc3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUzNTBiYTMyMzdiNi4uMDAw MDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bz ci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg RnV6aG91IFJvY2tjaGlwIEVsZWN0cm9uaWNzIENvLkx0ZAotICogQXV0aG9yOiBZYWtpciBZYW5n IDx5a2tAcm9jay1jaGlwcy5jb20+Ci0gKgotICogVGhpcyBzb2Z0d2FyZSBpcyBsaWNlbnNlZCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSB2ZXJz aW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBhbmQK LSAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZpZWQgdW5kZXIgdGhvc2Ug dGVybXMuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqLwotCi0jaWZuZGVmIF9fUk9DS0NI SVBfRFJNX1BTUl9fXwotI2RlZmluZSBfX1JPQ0tDSElQX0RSTV9QU1JfX18KLQotdm9pZCByb2Nr Y2hpcF9kcm1fcHNyX2ZsdXNoX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKLQotaW50IHJv Y2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsK LWludCByb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfZ2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2Rlcik7Ci0KLXZvaWQgcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X2dldF9zdGF0ZShzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwotdm9pZCByb2NrY2hpcF9kcm1fcHNyX2luaGliaXRf cHV0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Ci0KLWludCByb2NrY2hp cF9kcm1fcHNyX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKLQkJCWludCAo KnBzcl9zZXQpKHN0cnVjdCBkcm1fZW5jb2RlciAqLCBib29sIGVuYWJsZSkpOwotdm9pZCByb2Nr Y2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKLQot I2VuZGlmIC8qIF9fUk9DS0NISVBfRFJNX1BTUl9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2RybV92b3AuYwppbmRleCA0MTg5Y2ExN2YzODE4Li4xZmY3OWIyZjlhZmE4 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKQEAgLTIx LDYgKzIxLDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4K ICNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fcHJv YmVfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9zZWxmX3JlZnJlc2hfaGVscGVyLmg+CiAj aWZkZWYgQ09ORklHX0RSTV9BTkFMT0dJWF9EUAogI2luY2x1ZGUgPGRybS9icmlkZ2UvYW5hbG9n aXhfZHAuaD4KICNlbmRpZgpAQCAtNDIsMTAgKzQzLDExIEBACiAjaW5jbHVkZSAicm9ja2NoaXBf ZHJtX2Rydi5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2RybV9nZW0uaCIKICNpbmNsdWRlICJyb2Nr Y2hpcF9kcm1fZmIuaCIKLSNpbmNsdWRlICJyb2NrY2hpcF9kcm1fcHNyLmgiCiAjaW5jbHVkZSAi cm9ja2NoaXBfZHJtX3ZvcC5oIgogI2luY2x1ZGUgInJvY2tjaGlwX3JnYi5oIgogCisjZGVmaW5l IFZPUF9TRUxGX1JFRlJFU0hfRU5UUllfREVMQVlfTVMgMTAwCisKICNkZWZpbmUgVk9QX1dJTl9T RVQodm9wLCB3aW4sIG5hbWUsIHYpIFwKIAkJdm9wX3JlZ19zZXQodm9wLCAmd2luLT5waHktPm5h bWUsIHdpbi0+YmFzZSwgfjAsIHYsICNuYW1lKQogI2RlZmluZSBWT1BfU0NMX1NFVCh2b3AsIHdp biwgbmFtZSwgdikgXApAQCAtNTQ4LDcgKzU1MCw3IEBAIHN0YXRpYyB2b2lkIHZvcF93aW5fZGlz YWJsZShzdHJ1Y3Qgdm9wICp2b3AsIGNvbnN0IHN0cnVjdCB2b3Bfd2luX2RhdGEgKndpbikKIAlW T1BfV0lOX1NFVCh2b3AsIHdpbiwgZW5hYmxlLCAwKTsKIH0KIAotc3RhdGljIGludCB2b3BfZW5h YmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3N0YXRpYyBpbnQgdm9wX2VuYWJsZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3N0YXRlKQogewogCXN0 cnVjdCB2b3AgKnZvcCA9IHRvX3ZvcChjcnRjKTsKIAlpbnQgcmV0LCBpOwpAQCAtNTg4LDEyICs1 OTAsMTggQEAgc3RhdGljIGludCB2b3BfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkg KiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCB3aW5kb3dzIGFyZSBkaXNhYmxlZCBiZWZv cmUgd2UKIAkgKiBlbmFibGUgdGhlIGNydGMuIE90aGVyd2lzZSB3ZSBtaWdodCB0cnkgdG8gc2Nh biBmcm9tIGEgZGVzdHJveWVkCiAJICogYnVmZmVyIGxhdGVyLgorCSAqCisJICogSW4gdGhlIGNh c2Ugb2YgZW5hYmxlLWFmdGVyLVBTUiwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGlz CisJICogY2FzZSBzaW5jZSB0aGUgYnVmZmVyIGlzIGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgYW5k IGRpc2FibGluZyB0aGUKKwkgKiB3aW5kb3cgd2lsbCByZXN1bHQgaW4gc2NyZWVuIGdsaXRjaGVz IG9uIFBTUiBleGl0LgogCSAqLwotCWZvciAoaSA9IDA7IGkgPCB2b3AtPmRhdGEtPndpbl9zaXpl OyBpKyspIHsKLQkJc3RydWN0IHZvcF93aW4gKnZvcF93aW4gPSAmdm9wLT53aW5baV07Ci0JCWNv bnN0IHN0cnVjdCB2b3Bfd2luX2RhdGEgKndpbiA9IHZvcF93aW4tPmRhdGE7CisJaWYgKCFvbGRf c3RhdGUgfHwgIW9sZF9zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkgeworCQlmb3IgKGkgPSAw OyBpIDwgdm9wLT5kYXRhLT53aW5fc2l6ZTsgaSsrKSB7CisJCQlzdHJ1Y3Qgdm9wX3dpbiAqdm9w X3dpbiA9ICZ2b3AtPndpbltpXTsKKwkJCWNvbnN0IHN0cnVjdCB2b3Bfd2luX2RhdGEgKndpbiA9 IHZvcF93aW4tPmRhdGE7CiAKLQkJdm9wX3dpbl9kaXNhYmxlKHZvcCwgd2luKTsKKwkJCXZvcF93 aW5fZGlzYWJsZSh2b3AsIHdpbik7CisJCX0KIAl9CiAJc3Bpbl91bmxvY2soJnZvcC0+cmVnX2xv Y2spOwogCkBAIC02MzEsNiArNjM5LDEyIEBAIHN0YXRpYyB2b2lkIHZvcF9jcnRjX2F0b21pY19k aXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlXQVJOX09OKHZvcC0+ZXZlbnQpOwogCiAJ bXV0ZXhfbG9jaygmdm9wLT52b3BfbG9jayk7CisKKwlpZiAoIXZvcC0+aXNfZW5hYmxlZCkgewor CQltdXRleF91bmxvY2soJnZvcC0+dm9wX2xvY2spOworCQlyZXR1cm47CisJfQorCiAJZHJtX2Ny dGNfdmJsYW5rX29mZihjcnRjKTsKIAogCS8qCkBAIC05NDQsMTIgKzk1OCwxMCBAQCBzdGF0aWMg dm9pZCB2b3BfcGxhbmVfYXRvbWljX2FzeW5jX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKIAl9CiAKIAlpZiAodm9wLT5pc19lbmFibGVkKSB7Ci0JCXJvY2tjaGlwX2RybV9wc3JfaW5o aWJpdF9nZXRfc3RhdGUobmV3X3N0YXRlLT5zdGF0ZSk7CiAJCXZvcF9wbGFuZV9hdG9taWNfdXBk YXRlKHBsYW5lLCBwbGFuZS0+c3RhdGUpOwogCQlzcGluX2xvY2soJnZvcC0+cmVnX2xvY2spOwog CQl2b3BfY2ZnX2RvbmUodm9wKTsKIAkJc3Bpbl91bmxvY2soJnZvcC0+cmVnX2xvY2spOwotCQly b2NrY2hpcF9kcm1fcHNyX2luaGliaXRfcHV0X3N0YXRlKG5ld19zdGF0ZS0+c3RhdGUpOwogCX0K IAogCXBsYW5lLT5mdW5jcy0+YXRvbWljX2Rlc3Ryb3lfc3RhdGUocGxhbmUsIHBsYW5lX3N0YXRl KTsKQEAgLTEwNDMsNyArMTA1NSw3IEBAIHN0YXRpYyB2b2lkIHZvcF9jcnRjX2F0b21pY19lbmFi bGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJV0FSTl9PTih2b3AtPmV2ZW50KTsKIAotCXJl dCA9IHZvcF9lbmFibGUoY3J0Yyk7CisJcmV0ID0gdm9wX2VuYWJsZShjcnRjLCBvbGRfc3RhdGUp OwogCWlmIChyZXQpIHsKIAkJbXV0ZXhfdW5sb2NrKCZ2b3AtPnZvcF9sb2NrKTsKIAkJRFJNX0RF Vl9FUlJPUih2b3AtPmRldiwgIkZhaWxlZCB0byBlbmFibGUgdm9wICglZClcbiIsIHJldCk7CkBA IC0xNTI1LDYgKzE1MzcsMTMgQEAgc3RhdGljIGludCB2b3BfY3JlYXRlX2NydGMoc3RydWN0IHZv cCAqdm9wKQogCWluaXRfY29tcGxldGlvbigmdm9wLT5saW5lX2ZsYWdfY29tcGxldGlvbik7CiAJ Y3J0Yy0+cG9ydCA9IHBvcnQ7CiAKKwlyZXQgPSBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9pbml0 KGNydGMsCisJCQkJCSAgIFZPUF9TRUxGX1JFRlJFU0hfRU5UUllfREVMQVlfTVMpOworCWlmIChy ZXQpCisJCURSTV9ERVZfREVCVUdfS01TKHZvcC0+ZGV2LAorCQkJIkZhaWxlZCB0byBpbml0ICVz IHdpdGggU1IgaGVscGVycyAlZCwgaWdub3JpbmdcbiIsCisJCQljcnRjLT5uYW1lLCByZXQpOwor CiAJcmV0dXJuIDA7CiAKIGVycl9jbGVhbnVwX2NydGM6CkBAIC0xNTQyLDYgKzE1NjEsOCBAQCBz dGF0aWMgdm9pZCB2b3BfZGVzdHJveV9jcnRjKHN0cnVjdCB2b3AgKnZvcCkKIAlzdHJ1Y3QgZHJt X2RldmljZSAqZHJtX2RldiA9IHZvcC0+ZHJtX2RldjsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwgKnRtcDsKIAorCWRybV9zZWxmX3JlZnJlc2hfaGVscGVyX2NsZWFudXAoY3J0Yyk7CisKIAlv Zl9ub2RlX3B1dChjcnRjLT5wb3J0KTsKIAogCS8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9i cmlkZ2UvYW5hbG9naXhfZHAuaCBiL2luY2x1ZGUvZHJtL2JyaWRnZS9hbmFsb2dpeF9kcC5oCmlu ZGV4IDQ3NWI3MDZiNDlkZTIuLjdjNWMxMzgwMzY3MzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJt L2JyaWRnZS9hbmFsb2dpeF9kcC5oCisrKyBiL2luY2x1ZGUvZHJtL2JyaWRnZS9hbmFsb2dpeF9k cC5oCkBAIC00MiwxMCArNDIsNiBAQCBzdHJ1Y3QgYW5hbG9naXhfZHBfcGxhdF9kYXRhIHsKIAkJ CSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqKTsKIH07CiAKLWludCBhbmFsb2dpeF9kcF9wc3JfZW5h YmxlZChzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7Ci1pbnQgYW5hbG9naXhfZHBfZW5h YmxlX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7Ci1pbnQgYW5hbG9naXhfZHBf ZGlzYWJsZV9wc3Ioc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApOwotCiBpbnQgYW5hbG9n aXhfZHBfcmVzdW1lKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKTsKIGludCBhbmFsb2dp eF9kcF9zdXNwZW5kKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKTsKIAotLSAKU2VhbiBQ YXVsLCBTb2Z0d2FyZSBFbmdpbmVlciwgR29vZ2xlIC8gQ2hyb21pdW0gT1MKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==