From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: [PATCH v3 08/10] drm/rockchip: Use the helpers for PSR Date: Thu, 2 May 2019 15:49:50 -0400 Message-ID: <20190502194956.218441-9-sean@poorly.run> References: <20190502194956.218441-1-sean@poorly.run> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qk1-x741.google.com (mail-qk1-x741.google.com [IPv6:2607:f8b0:4864:20::741]) by gabe.freedesktop.org (Postfix) with ESMTPS id 34BFA8982D for ; Thu, 2 May 2019 19:50:35 +0000 (UTC) Received: by mail-qk1-x741.google.com with SMTP id a132so2252910qkb.13 for ; Thu, 02 May 2019 12:50:35 -0700 (PDT) In-Reply-To: <20190502194956.218441-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 , linux-kernel@vger.kernel.org, Tomasz Figa , Sean Paul , Laurent Pinchart , linux-arm-kernel@lists.infradead.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+CgpJbnN0ZWFkIG9mIHJvbGxp bmcgb3VyIG93biBpbXBsZW1lbnRhdGlvbiBmb3IgdHJhY2tpbmcgd2hlbiBQU1Igc2hvdWxkCmJl IFtpbl1hY3RpdmUsIHVzZSB0aGUgbmV3IHNlbGYgcmVmcmVzaCBoZWxwZXJzIHRvIGRvIHRoZSBo ZWF2eSBsaWZ0aW5nLgoKQ2hhbmdlcyBpbiB2MjoKLSB1cGRhdGVkIHRvIHJlZmxlY3QgY2hhbmdl cyBtYWRlIGluIHRoZSBoZWxwZXJzCkNoYW5nZXMgaW4gdjM6Ci0gdXNlIHRoZSBuZXcgYXRvbWlj IGhvb2tzIHRvIGluc3BlY3QgY3J0YyBzdGF0ZSBpbnN0ZWFkIG9mIG5lZWRpbmcgY29ubiBzdGF0 ZSAoRGFuaWVsKQoKTGluayB0byB2MTogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3Jn L3BhdGNoL21zZ2lkLzIwMTkwMjI4MjEwOTM5LjgzMzg2LTQtc2VhbkBwb29ybHkucnVuCkxpbmsg dG8gdjI6IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9tc2dpZC8yMDE5 MDMyNjIwNDUwOS45NjUxNS0zLXNlYW5AcG9vcmx5LnJ1bgoKQ2M6IFphaW4gV2FuZyA8d3p6QHJv Y2stY2hpcHMuY29tPgpDYzogVG9tYXN6IEZpZ2EgPHRmaWdhQGNocm9taXVtLm9yZz4KU2lnbmVk LW9mZi1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Ci0tLQogLi4uL2RybS9i cmlkZ2UvYW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jICAgIHwgMjY1ICsrKysrKysrKysrLS0t LS0KIC4uLi9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaCAgICB8ICAgMiAr LQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2VmaWxlICAgICAgICAgICAgIHwgICAzICst CiAuLi4vZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC5jICAgfCAgODYgKysr LS0tCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMgICAgfCAgIDUg LQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9wc3IuYyAgIHwgMjkwIC0t LS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9w c3IuaCAgIHwgIDMwIC0tCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Zv cC5jICAgfCAgMzMgKy0KIGluY2x1ZGUvZHJtL2JyaWRnZS9hbmFsb2dpeF9kcC5oICAgICAgICAg ICAgICB8ICAgNCAtCiA5IGZpbGVzIGNoYW5nZWQsIDI0MyBpbnNlcnRpb25zKCspLCA0NzUgZGVs ZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV9wc3IuYwogZGVsZXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fcHNyLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJp ZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2Uv YW5hbG9naXgvYW5hbG9naXhfZHBfY29yZS5jCmluZGV4IGFmMzQ1NTRhNWEwMi4uZTY2YzEwNWMz YjY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4 X2RwX2NvcmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4 X2RwX2NvcmUuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4K IAogI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KICNp bmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2NydGMu aD4KICNpbmNsdWRlIDxkcm0vZHJtX3BhbmVsLmg+CkBAIC0xMDYsNjMgKzEwNyw3IEBAIHN0YXRp YyBpbnQgYW5hbG9naXhfZHBfZGV0ZWN0X2hwZChzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpk cCkKIAlyZXR1cm4gMDsKIH0KIAotaW50IGFuYWxvZ2l4X2RwX3Bzcl9lbmFibGVkKHN0cnVjdCBh bmFsb2dpeF9kcF9kZXZpY2UgKmRwKQotewotCi0JcmV0dXJuIGRwLT5wc3JfZW5hYmxlOwotfQot RVhQT1JUX1NZTUJPTF9HUEwoYW5hbG9naXhfZHBfcHNyX2VuYWJsZWQpOwotCi1pbnQgYW5hbG9n aXhfZHBfZW5hYmxlX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKLXsKLQlzdHJ1 Y3QgZWRwX3ZzY19wc3IgcHNyX3ZzYzsKLQotCWlmICghZHAtPnBzcl9lbmFibGUpCi0JCXJldHVy biAwOwotCi0JLyogUHJlcGFyZSBWU0MgcGFja2V0IGFzIHBlciBFRFAgMS40IHNwZWMsIFRhYmxl IDYuOSAqLwotCW1lbXNldCgmcHNyX3ZzYywgMCwgc2l6ZW9mKHBzcl92c2MpKTsKLQlwc3JfdnNj LnNkcF9oZWFkZXIuSEIwID0gMDsKLQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIxID0gMHg3OwotCXBz cl92c2Muc2RwX2hlYWRlci5IQjIgPSAweDI7Ci0JcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMyA9IDB4 ODsKLQotCXBzcl92c2MuREIwID0gMDsKLQlwc3JfdnNjLkRCMSA9IEVEUF9WU0NfUFNSX1NUQVRF X0FDVElWRSB8IEVEUF9WU0NfUFNSX0NSQ19WQUxVRVNfVkFMSUQ7Ci0KLQlyZXR1cm4gYW5hbG9n aXhfZHBfc2VuZF9wc3Jfc3BkKGRwLCAmcHNyX3ZzYywgdHJ1ZSk7Ci19Ci1FWFBPUlRfU1lNQk9M X0dQTChhbmFsb2dpeF9kcF9lbmFibGVfcHNyKTsKLQotaW50IGFuYWxvZ2l4X2RwX2Rpc2FibGVf cHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQotewotCXN0cnVjdCBlZHBfdnNjX3Bz ciBwc3JfdnNjOwotCWludCByZXQ7Ci0KLQlpZiAoIWRwLT5wc3JfZW5hYmxlKQotCQlyZXR1cm4g MDsKLQotCS8qIFByZXBhcmUgVlNDIHBhY2tldCBhcyBwZXIgRURQIDEuNCBzcGVjLCBUYWJsZSA2 LjkgKi8KLQltZW1zZXQoJnBzcl92c2MsIDAsIHNpemVvZihwc3JfdnNjKSk7Ci0JcHNyX3ZzYy5z ZHBfaGVhZGVyLkhCMCA9IDA7Ci0JcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4NzsKLQlwc3Jf dnNjLnNkcF9oZWFkZXIuSEIyID0gMHgyOwotCXBzcl92c2Muc2RwX2hlYWRlci5IQjMgPSAweDg7 Ci0KLQlwc3JfdnNjLkRCMCA9IDA7Ci0JcHNyX3ZzYy5EQjEgPSAwOwotCi0JcmV0ID0gZHJtX2Rw X2RwY2Rfd3JpdGViKCZkcC0+YXV4LCBEUF9TRVRfUE9XRVIsIERQX1NFVF9QT1dFUl9EMCk7Ci0J aWYgKHJldCAhPSAxKSB7Ci0JCWRldl9lcnIoZHAtPmRldiwgIkZhaWxlZCB0byBzZXQgRFAgUG93 ZXIwICVkXG4iLCByZXQpOwotCQlyZXR1cm4gcmV0OwotCX0KLQotCXJldHVybiBhbmFsb2dpeF9k cF9zZW5kX3Bzcl9zcGQoZHAsICZwc3JfdnNjLCBmYWxzZSk7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQ TChhbmFsb2dpeF9kcF9kaXNhYmxlX3Bzcik7Ci0KLXN0YXRpYyBpbnQgYW5hbG9naXhfZHBfZGV0 ZWN0X3NpbmtfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQorc3RhdGljIGJvb2wg YW5hbG9naXhfZHBfZGV0ZWN0X3NpbmtfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRw KQogewogCXVuc2lnbmVkIGNoYXIgcHNyX3ZlcnNpb247CiAJaW50IHJldDsKQEAgLTE3MCwxNCAr MTE1LDExIEBAIHN0YXRpYyBpbnQgYW5hbG9naXhfZHBfZGV0ZWN0X3NpbmtfcHNyKHN0cnVjdCBh bmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogCXJldCA9IGRybV9kcF9kcGNkX3JlYWRiKCZkcC0+YXV4 LCBEUF9QU1JfU1VQUE9SVCwgJnBzcl92ZXJzaW9uKTsKIAlpZiAocmV0ICE9IDEpIHsKIAkJZGV2 X2VycihkcC0+ZGV2LCAiZmFpbGVkIHRvIGdldCBQU1IgdmVyc2lvbiwgZGlzYWJsZSBpdFxuIik7 Ci0JCXJldHVybiByZXQ7CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlkZXZfZGJnKGRwLT5kZXYs ICJQYW5lbCBQU1IgdmVyc2lvbiA6ICV4XG4iLCBwc3JfdmVyc2lvbik7Ci0KLQlkcC0+cHNyX2Vu YWJsZSA9IChwc3JfdmVyc2lvbiAmIERQX1BTUl9JU19TVVBQT1JURUQpID8gdHJ1ZSA6IGZhbHNl OwotCi0JcmV0dXJuIDA7CisJcmV0dXJuIHBzcl92ZXJzaW9uICYgRFBfUFNSX0lTX1NVUFBPUlRF RDsKIH0KIAogc3RhdGljIGludCBhbmFsb2dpeF9kcF9lbmFibGVfc2lua19wc3Ioc3RydWN0IGFu YWxvZ2l4X2RwX2RldmljZSAqZHApCkBAIC0yMDAsNyArMTQyLDcgQEAgc3RhdGljIGludCBhbmFs b2dpeF9kcF9lbmFibGVfc2lua19wc3Ioc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCiAJ fQogCiAJLyogTWFpbi1MaW5rIHRyYW5zbWl0dGVyIHJlbWFpbnMgYWN0aXZlIGR1cmluZyBQU1Ig YWN0aXZlIHN0YXRlcyAqLwotCXBzcl9lbiA9IERQX1BTUl9NQUlOX0xJTktfQUNUSVZFIHwgRFBf UFNSX0NSQ19WRVJJRklDQVRJT047CisJcHNyX2VuID0gRFBfUFNSX0NSQ19WRVJJRklDQVRJT047 CiAJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGViKCZkcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCBwc3Jf ZW4pOwogCWlmIChyZXQgIT0gMSkgewogCQlkZXZfZXJyKGRwLT5kZXYsICJmYWlsZWQgdG8gc2V0 IHBhbmVsIHBzclxuIik7CkBAIC0yMDgsOCArMTUwLDcgQEAgc3RhdGljIGludCBhbmFsb2dpeF9k cF9lbmFibGVfc2lua19wc3Ioc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCiAJfQogCiAJ LyogRW5hYmxlIHBzciBmdW5jdGlvbiAqLwotCXBzcl9lbiA9IERQX1BTUl9FTkFCTEUgfCBEUF9Q U1JfTUFJTl9MSU5LX0FDVElWRSB8Ci0JCSBEUF9QU1JfQ1JDX1ZFUklGSUNBVElPTjsKKwlwc3Jf ZW4gPSBEUF9QU1JfRU5BQkxFIHwgRFBfUFNSX0NSQ19WRVJJRklDQVRJT047CiAJcmV0ID0gZHJt X2RwX2RwY2Rfd3JpdGViKCZkcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCBwc3JfZW4pOwogCWlmIChy ZXQgIT0gMSkgewogCQlkZXZfZXJyKGRwLT5kZXYsICJmYWlsZWQgdG8gc2V0IHBhbmVsIHBzclxu Iik7CkBAIC0yMTgsMTAgKzE1OSwxMSBAQCBzdGF0aWMgaW50IGFuYWxvZ2l4X2RwX2VuYWJsZV9z aW5rX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKIAogCWFuYWxvZ2l4X2RwX2Vu YWJsZV9wc3JfY3JjKGRwKTsKIAorCWRwLT5wc3Jfc3VwcG9ydGVkID0gdHJ1ZTsKKwogCXJldHVy biAwOwogZW5kOgogCWRldl9lcnIoZHAtPmRldiwgImVuYWJsZSBwc3IgZmFpbCwgZm9yY2UgdG8g ZGlzYWJsZSBwc3JcbiIpOwotCWRwLT5wc3JfZW5hYmxlID0gZmFsc2U7CiAKIAlyZXR1cm4gcmV0 OwogfQpAQCAtMTAzNiwyNSArOTc4LDkwIEBAIHN0YXRpYyBpbnQgYW5hbG9naXhfZHBfY29tbWl0 KHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogCQl9CiAJfQogCi0JcmV0ID0gYW5hbG9n aXhfZHBfZGV0ZWN0X3NpbmtfcHNyKGRwKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCiAJ LyogQ2hlY2sgd2hldGhlciBwYW5lbCBzdXBwb3J0cyBmYXN0IHRyYWluaW5nICovCiAJcmV0ID0g YW5hbG9naXhfZHBfZmFzdF9saW5rX3RyYWluX2RldGVjdGlvbihkcCk7CiAJaWYgKHJldCkKLQkJ ZHAtPnBzcl9lbmFibGUgPSBmYWxzZTsKKwkJcmV0dXJuIHJldDsKIAotCWlmIChkcC0+cHNyX2Vu YWJsZSkgeworCWlmIChhbmFsb2dpeF9kcF9kZXRlY3Rfc2lua19wc3IoZHApKSB7CiAJCXJldCA9 IGFuYWxvZ2l4X2RwX2VuYWJsZV9zaW5rX3BzcihkcCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4g cmV0OwogCX0KIAorCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBpbnQgYW5hbG9naXhfZHBfZW5h YmxlX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKK3sKKwlzdHJ1Y3QgZWRwX3Zz Y19wc3IgcHNyX3ZzYzsKKwlpbnQgcmV0OworCXU4IHNpbms7CisKKwlyZXQgPSBkcm1fZHBfZHBj ZF9yZWFkYigmZHAtPmF1eCwgRFBfUFNSX1NUQVRVUywgJnNpbmspOworCWlmIChyZXQgIT0gMSkK KwkJRFJNX0RFVl9FUlJPUihkcC0+ZGV2LCAiRmFpbGVkIHRvIHJlYWQgcHNyIHN0YXR1cyAlZFxu IiwgcmV0KTsKKwllbHNlIGlmIChzaW5rID09IERQX1BTUl9TSU5LX0FDVElWRV9SRkIpCisJCXJl dHVybiAwOworCisJLyogUHJlcGFyZSBWU0MgcGFja2V0IGFzIHBlciBFRFAgMS40IHNwZWMsIFRh YmxlIDYuOSAqLworCW1lbXNldCgmcHNyX3ZzYywgMCwgc2l6ZW9mKHBzcl92c2MpKTsKKwlwc3Jf dnNjLnNkcF9oZWFkZXIuSEIwID0gMDsKKwlwc3JfdnNjLnNkcF9oZWFkZXIuSEIxID0gMHg3Owor CXBzcl92c2Muc2RwX2hlYWRlci5IQjIgPSAweDI7CisJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMyA9 IDB4ODsKKwlwc3JfdnNjLkRCMCA9IDA7CisJcHNyX3ZzYy5EQjEgPSBFRFBfVlNDX1BTUl9TVEFU RV9BQ1RJVkUgfCBFRFBfVlNDX1BTUl9DUkNfVkFMVUVTX1ZBTElEOworCisJcmV0ID0gYW5hbG9n aXhfZHBfc2VuZF9wc3Jfc3BkKGRwLCAmcHNyX3ZzYywgdHJ1ZSk7CisJaWYgKCFyZXQpCisJCWFu YWxvZ2l4X2RwX3NldF9hbmFsb2dfcG93ZXJfZG93bihkcCwgUE9XRVJfQUxMLCB0cnVlKTsKIAog CXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgYW5hbG9naXhfZHBfZGlzYWJsZV9wc3Ioc3Ry dWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCit7CisJc3RydWN0IGVkcF92c2NfcHNyIHBzcl92 c2M7CisJaW50IHJldDsKKwl1OCBzaW5rOworCisJYW5hbG9naXhfZHBfc2V0X2FuYWxvZ19wb3dl cl9kb3duKGRwLCBQT1dFUl9BTEwsIGZhbHNlKTsKKworCXJldCA9IGRybV9kcF9kcGNkX3dyaXRl YigmZHAtPmF1eCwgRFBfU0VUX1BPV0VSLCBEUF9TRVRfUE9XRVJfRDApOworCWlmIChyZXQgIT0g MSkgeworCQlEUk1fREVWX0VSUk9SKGRwLT5kZXYsICJGYWlsZWQgdG8gc2V0IERQIFBvd2VyMCAl ZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFk YigmZHAtPmF1eCwgRFBfUFNSX1NUQVRVUywgJnNpbmspOworCWlmIChyZXQgIT0gMSkgeworCQlE Uk1fREVWX0VSUk9SKGRwLT5kZXYsICJGYWlsZWQgdG8gcmVhZCBwc3Igc3RhdHVzICVkXG4iLCBy ZXQpOworCQlyZXR1cm4gcmV0OworCX0gZWxzZSBpZiAoc2luayA9PSBEUF9QU1JfU0lOS19JTkFD VElWRSkgeworCQlEUk1fREVWX0VSUk9SKGRwLT5kZXYsICJzaW5rIGluYWN0aXZlLCBza2lwIGRp c2FibGUgcHNyIik7CisJCXJldHVybiAwOworCX0KKworCXJldCA9IGFuYWxvZ2l4X2RwX3RyYWlu X2xpbmsoZHApOworCWlmIChyZXQpIHsKKwkJRFJNX0RFVl9FUlJPUihkcC0+ZGV2LCAiRmFpbGVk IHRvIHRyYWluIHRoZSBsaW5rICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCS8q IFByZXBhcmUgVlNDIHBhY2tldCBhcyBwZXIgRURQIDEuNCBzcGVjLCBUYWJsZSA2LjkgKi8KKwlt ZW1zZXQoJnBzcl92c2MsIDAsIHNpemVvZihwc3JfdnNjKSk7CisJcHNyX3ZzYy5zZHBfaGVhZGVy LkhCMCA9IDA7CisJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4NzsKKwlwc3JfdnNjLnNkcF9o ZWFkZXIuSEIyID0gMHgyOworCXBzcl92c2Muc2RwX2hlYWRlci5IQjMgPSAweDg7CisKKwlwc3Jf dnNjLkRCMCA9IDA7CisJcHNyX3ZzYy5EQjEgPSAwOworCisJcmV0dXJuIGFuYWxvZ2l4X2RwX3Nl bmRfcHNyX3NwZChkcCwgJnBzcl92c2MsIHRydWUpOworfQorCiAvKgogICogVGhpcyBmdW5jdGlv biBpcyBhIGJpdCBvZiBhIGNhdGNoLWFsbCBmb3IgcGFuZWwgcHJlcGFyYXRpb24sIGhvcGVmdWxs eQogICogc2ltcGxpZnlpbmcgdGhlIGxvZ2ljIG9mIGZ1bmN0aW9ucyB0aGF0IG5lZWQgdG8gcHJl cGFyZS91bnByZXBhcmUgdGhlIHBhbmVsCkBAIC0xMTQ1LDkgKzExNTIsMzcgQEAgYW5hbG9naXhf ZHBfYmVzdF9lbmNvZGVyKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCiAJcmV0dXJu IGRwLT5lbmNvZGVyOwogfQogCisKK2ludCBhbmFsb2dpeF9kcF9hdG9taWNfY2hlY2soc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQoreworCXN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwID0gdG9fZHAoY29u bmVjdG9yKTsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKKwlzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisKKwljb25uX3N0YXRlID0gZHJtX2F0b21p Y19nZXRfbmV3X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKKwlpZiAoV0FSTl9P TighY29ubl9zdGF0ZSkpCisJCXJldHVybiAtRU5PREVWOworCisJY29ubl9zdGF0ZS0+c2VsZl9y ZWZyZXNoX2F3YXJlID0gdHJ1ZTsKKworCWlmICghY29ubl9zdGF0ZS0+Y3J0YykKKwkJcmV0dXJu IDA7CisKKwljcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUs IGNvbm5fc3RhdGUtPmNydGMpOworCWlmICghY3J0Y19zdGF0ZSkKKwkJcmV0dXJuIDA7CisKKwlp ZiAoY3J0Y19zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSAmJiAhZHAtPnBzcl9zdXBwb3J0ZWQp CisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgYW5hbG9naXhfZHBfY29ubmVjdG9yX2hlbHBl cl9mdW5jcyA9IHsKIAkuZ2V0X21vZGVzID0gYW5hbG9naXhfZHBfZ2V0X21vZGVzLAogCS5iZXN0 X2VuY29kZXIgPSBhbmFsb2dpeF9kcF9iZXN0X2VuY29kZXIsCisJLmF0b21pY19jaGVjayA9IGFu YWxvZ2l4X2RwX2F0b21pY19jaGVjaywKIH07CiAKIHN0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jf c3RhdHVzCkBAIC0xMjM5LDExICsxMjc0LDIyIEBAIHN0YXRpYyBpbnQgYW5hbG9naXhfZHBfYnJp ZGdlX2F0dGFjaChzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQogCXJldHVybiAwOwogfQogCi1z dGF0aWMgdm9pZCBhbmFsb2dpeF9kcF9icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlKQorc3RhdGljIHZvaWQgYW5hbG9naXhfZHBfYnJpZGdlX2F0b21pY19wcmVfZW5h YmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQkJCQkgc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwID0gYnJpZGdl LT5kcml2ZXJfcHJpdmF0ZTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRl ID0gTlVMTDsKIAlpbnQgcmV0OwogCisJZHJtX2F0b21pY19jcnRjX3N0YXRlX2Zvcl9lbmNvZGVy KHN0YXRlLCBkcC0+ZW5jb2RlciwgTlVMTCwKKwkJCQkJICAmb2xkX2NydGNfc3RhdGUsIE5VTEwp OworCWlmICghb2xkX2NydGNfc3RhdGUpCisJCXJldHVybjsKKworCS8qIERvbid0IHRvdWNoIHRo ZSBwYW5lbCBpZiB3ZSdyZSBjb21pbmcgYmFjayBmcm9tIFBTUiAqLworCWlmIChvbGRfY3J0Y19z dGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkKKwkJcmV0dXJuOworCiAJcmV0ID0gYW5hbG9naXhf ZHBfcHJlcGFyZV9wYW5lbChkcCwgdHJ1ZSwgdHJ1ZSk7CiAJaWYgKHJldCkKIAkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gc2V0dXAgdGhlIHBhbmVsIHJldCA9ICVkXG4iLCByZXQpOwpAQCAtMTMwNCwx MCArMTM1MCwyNiBAQCBzdGF0aWMgaW50IGFuYWxvZ2l4X2RwX3NldF9icmlkZ2Uoc3RydWN0IGFu YWxvZ2l4X2RwX2RldmljZSAqZHApCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgYW5h bG9naXhfZHBfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQorc3RhdGlj IHZvaWQgYW5hbG9naXhfZHBfYnJpZGdlX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSwKKwkJCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJ c3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHAgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOwor CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUgPSBOVUxMOwogCWludCB0aW1l b3V0X2xvb3AgPSAwOworCWludCByZXQ7CisKKwlkcm1fYXRvbWljX2NydGNfc3RhdGVfZm9yX2Vu Y29kZXIoc3RhdGUsIGRwLT5lbmNvZGVyLCBOVUxMLAorCQkJCQkgICZvbGRfY3J0Y19zdGF0ZSwg TlVMTCk7CisJaWYgKCFvbGRfY3J0Y19zdGF0ZSkKKwkJcmV0dXJuOworCisJLyogTm90IGEgZnVs bCBlbmFibGUsIGp1c3QgZGlzYWJsZSBQU1IgYW5kIGNvbnRpbnVlICovCisJaWYgKG9sZF9jcnRj X3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlKSB7CisJCXJldCA9IGFuYWxvZ2l4X2RwX2Rpc2Fi bGVfcHNyKGRwKTsKKwkJaWYgKHJldCkKKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUg cHNyICVkXG4iLCByZXQpOworCQlyZXR1cm47CisJfQogCiAJaWYgKGRwLT5kcG1zX21vZGUgPT0g RFJNX01PREVfRFBNU19PTikKIAkJcmV0dXJuOwpAQCAtMTM1NiwxMSArMTQxOCw1MSBAQCBzdGF0 aWMgdm9pZCBhbmFsb2dpeF9kcF9icmlkZ2VfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJp ZGdlKQogCWlmIChyZXQpCiAJCURSTV9FUlJPUigiZmFpbGVkIHRvIHNldHVwIHRoZSBwYW5lbCBy ZXQgPSAlZFxuIiwgcmV0KTsKIAotCWRwLT5wc3JfZW5hYmxlID0gZmFsc2U7CiAJZHAtPmZhc3Rf dHJhaW5fZW5hYmxlID0gZmFsc2U7CisJZHAtPnBzcl9zdXBwb3J0ZWQgPSBmYWxzZTsKIAlkcC0+ ZHBtc19tb2RlID0gRFJNX01PREVfRFBNU19PRkY7CiB9CiAKK3N0YXRpYyB2b2lkIGFuYWxvZ2l4 X2RwX2JyaWRnZV9hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAorCQkJ CQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGFuYWxv Z2l4X2RwX2RldmljZSAqZHAgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOworCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUgPSBOVUxMOworCisJZHJtX2F0b21pY19jcnRjX3N0 YXRlX2Zvcl9lbmNvZGVyKHN0YXRlLCBkcC0+ZW5jb2RlciwgTlVMTCwgTlVMTCwKKwkJCQkJICAm bmV3X2NydGNfc3RhdGUpOworCWlmICghbmV3X2NydGNfc3RhdGUpCisJCWdvdG8gb3V0OworCisJ LyogRG9uJ3QgZG8gYSBmdWxsIGRpc2FibGUgb24gUFNSIHRyYW5zaXRpb25zICovCisJaWYgKG5l d19jcnRjX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZlKQorCQlyZXR1cm47CisKK291dDoKKwlh bmFsb2dpeF9kcF9icmlkZ2VfZGlzYWJsZShicmlkZ2UpOworfQorCitzdGF0aWMKK3ZvaWQgYW5h bG9naXhfZHBfYnJpZGdlX2F0b21pY19wb3N0X2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKKwkJCQkJICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1 Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCA9IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7CisJc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSA9IE5VTEw7CisJaW50IHJldDsKKwor CWRybV9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZW5jb2RlcihzdGF0ZSwgZHAtPmVuY29kZXIsIE5V TEwsIE5VTEwsCisJCQkJCSAgJm5ld19jcnRjX3N0YXRlKTsKKwlpZiAoIW5ld19jcnRjX3N0YXRl KQorCQlyZXR1cm47CisKKwlpZiAoIW5ld19jcnRjX3N0YXRlLT5zZWxmX3JlZnJlc2hfYWN0aXZl KQorCQlyZXR1cm47CisKKwlyZXQgPSBhbmFsb2dpeF9kcF9lbmFibGVfcHNyKGRwKTsKKwlpZiAo cmV0KQorCQlEUk1fRVJST1IoIkZhaWxlZCB0byBlbmFibGUgcHNyICglZClcbiIsIHJldCk7Cit9 CisKIHN0YXRpYyB2b2lkIGFuYWxvZ2l4X2RwX2JyaWRnZV9tb2RlX3NldChzdHJ1Y3QgZHJtX2Jy aWRnZSAqYnJpZGdlLAogCQkJCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpvcmlnX21v ZGUsCiAJCQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCkBAIC0xNDQwLDE2 ICsxNTQyLDExIEBAIHN0YXRpYyB2b2lkIGFuYWxvZ2l4X2RwX2JyaWRnZV9tb2RlX3NldChzdHJ1 Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAogCQl2aWRlby0+aW50ZXJsYWNlZCA9IHRydWU7CiB9CiAK LXN0YXRpYyB2b2lkIGFuYWxvZ2l4X2RwX2JyaWRnZV9ub3Aoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSkKLXsKLQkvKiBkbyBub3RoaW5nICovCi19Ci0KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2JyaWRnZV9mdW5jcyBhbmFsb2dpeF9kcF9icmlkZ2VfZnVuY3MgPSB7Ci0JLnByZV9lbmFibGUg PSBhbmFsb2dpeF9kcF9icmlkZ2VfcHJlX2VuYWJsZSwKLQkuZW5hYmxlID0gYW5hbG9naXhfZHBf YnJpZGdlX2VuYWJsZSwKLQkuZGlzYWJsZSA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9kaXNhYmxlLAot CS5wb3N0X2Rpc2FibGUgPSBhbmFsb2dpeF9kcF9icmlkZ2Vfbm9wLAorCS5hdG9taWNfcHJlX2Vu YWJsZSA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9hdG9taWNfcHJlX2VuYWJsZSwKKwkuYXRvbWljX2Vu YWJsZSA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9hdG9taWNfZW5hYmxlLAorCS5hdG9taWNfZGlzYWJs ZSA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9hdG9taWNfZGlzYWJsZSwKKwkuYXRvbWljX3Bvc3RfZGlz YWJsZSA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9hdG9taWNfcG9zdF9kaXNhYmxlLAogCS5tb2RlX3Nl dCA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9tb2RlX3NldCwKIAkuYXR0YWNoID0gYW5hbG9naXhfZHBf YnJpZGdlX2F0dGFjaCwKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2Fu YWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvYW5hbG9n aXgvYW5hbG9naXhfZHBfY29yZS5oCmluZGV4IDc2OTI1NWRjNmU5OS4uZDkzN2ZhM2Q5ZWU4IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2Nv cmUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2Nv cmUuaApAQCAtMTczLDggKzE3Myw4IEBAIHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgewogCWlu dAkJCWRwbXNfbW9kZTsKIAlpbnQJCQlocGRfZ3BpbzsKIAlib29sICAgICAgICAgICAgICAgICAg ICBmb3JjZV9ocGQ7Ci0JYm9vbAkJCXBzcl9lbmFibGU7CiAJYm9vbAkJCWZhc3RfdHJhaW5fZW5h YmxlOworCWJvb2wJCQlwc3Jfc3VwcG9ydGVkOwogCiAJc3RydWN0IG11dGV4CQlwYW5lbF9sb2Nr OwogCWJvb2wJCQlwYW5lbF9pc19tb2Rlc2V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2VmaWxlCmlu ZGV4IDUyNDY4NGJhN2Y2YS4uMTdhOWU3ZWIyMTMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2Vm aWxlCkBAIC00LDggKzQsNyBAQAogIyBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIChE UkkpIGluIFhGcmVlODYgNC4xLjAgYW5kIGhpZ2hlci4KIAogcm9ja2NoaXBkcm0teSA6PSByb2Nr Y2hpcF9kcm1fZHJ2Lm8gcm9ja2NoaXBfZHJtX2ZiLm8gXAotCQlyb2NrY2hpcF9kcm1fZ2VtLm8g cm9ja2NoaXBfZHJtX3Bzci5vIFwKLQkJcm9ja2NoaXBfZHJtX3ZvcC5vIHJvY2tjaGlwX3ZvcF9y ZWcubworCQlyb2NrY2hpcF9kcm1fZ2VtLm8gcm9ja2NoaXBfZHJtX3ZvcC5vIHJvY2tjaGlwX3Zv cF9yZWcubwogcm9ja2NoaXBkcm0tJChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0gcm9j a2NoaXBfZHJtX2ZiZGV2Lm8KIAogcm9ja2NoaXBkcm0tJChDT05GSUdfUk9DS0NISVBfQU5BTE9H SVhfRFApICs9IGFuYWxvZ2l4X2RwLXJvY2tjaGlwLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2NrY2hpcC5jIGIvZHJpdmVycy9ncHUvZHJtL3Jv Y2tjaGlwL2FuYWxvZ2l4X2RwLXJvY2tjaGlwLmMKaW5kZXggYmM0NDIzNjI0MjA5Li42MjRkYWE4 ODZkNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1y b2NrY2hpcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2Nr Y2hpcC5jCkBAIC0yMSw2ICsyMSw4IEBACiAjaW5jbHVkZSA8bGludXgvY2xrLmg+CiAKICNpbmNs dWRlIDxkcm0vZHJtUC5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CisjaW5jbHVkZSA8 ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4K ICNpbmNsdWRlIDxkcm0vZHJtX29mLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wYW5lbC5oPgpAQCAt MzIsNyArMzQsNiBAQAogI2luY2x1ZGUgPGRybS9icmlkZ2UvYW5hbG9naXhfZHAuaD4KIAogI2lu Y2x1ZGUgInJvY2tjaGlwX2RybV9kcnYuaCIKLSNpbmNsdWRlICJyb2NrY2hpcF9kcm1fcHNyLmgi CiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX3ZvcC5oIgogCiAjZGVmaW5lIFJLMzI4OF9HUkZfU09D X0NPTjYJCTB4MjVjCkBAIC03NywyOSArNzgsNiBAQCBzdHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2aWNl IHsKIAlzdHJ1Y3QgYW5hbG9naXhfZHBfcGxhdF9kYXRhIHBsYXRfZGF0YTsKIH07CiAKLXN0YXRp YyBpbnQgYW5hbG9naXhfZHBfcHNyX3NldChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIGJv b2wgZW5hYmxlZCkKLXsKLQlzdHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2aWNlICpkcCA9IHRvX2RwKGVu Y29kZXIpOwotCWludCByZXQ7Ci0KLQlpZiAoIWFuYWxvZ2l4X2RwX3Bzcl9lbmFibGVkKGRwLT5h ZHApKQotCQlyZXR1cm4gMDsKLQotCURSTV9ERVZfREVCVUcoZHAtPmRldiwgIiVzIFBTUi4uLlxu IiwgZW5hYmxlZCA/ICJFbnRyeSIgOiAiRXhpdCIpOwotCi0JcmV0ID0gcm9ja2NoaXBfZHJtX3dh aXRfdmFjdF9lbmQoZHAtPmVuY29kZXIuY3J0YywKLQkJCQkJIFBTUl9XQUlUX0xJTkVfRkxBR19U SU1FT1VUX01TKTsKLQlpZiAocmV0KSB7Ci0JCURSTV9ERVZfRVJST1IoZHAtPmRldiwgImxpbmUg ZmxhZyBpbnRlcnJ1cHQgZGlkIG5vdCBhcnJpdmVcbiIpOwotCQlyZXR1cm4gLUVUSU1FRE9VVDsK LQl9Ci0KLQlpZiAoZW5hYmxlZCkKLQkJcmV0dXJuIGFuYWxvZ2l4X2RwX2VuYWJsZV9wc3IoZHAt PmFkcCk7Ci0JZWxzZQotCQlyZXR1cm4gYW5hbG9naXhfZHBfZGlzYWJsZV9wc3IoZHAtPmFkcCk7 Ci19Ci0KIHN0YXRpYyBpbnQgcm9ja2NoaXBfZHBfcHJlX2luaXQoc3RydWN0IHJvY2tjaGlwX2Rw X2RldmljZSAqZHApCiB7CiAJcmVzZXRfY29udHJvbF9hc3NlcnQoZHAtPnJzdCk7CkBAIC0xMzAs MjEgKzEwOCw5IEBAIHN0YXRpYyBpbnQgcm9ja2NoaXBfZHBfcG93ZXJvbl9zdGFydChzdHJ1Y3Qg YW5hbG9naXhfZHBfcGxhdF9kYXRhICpwbGF0X2RhdGEpCiAJcmV0dXJuIHJldDsKIH0KIAotc3Rh dGljIGludCByb2NrY2hpcF9kcF9wb3dlcm9uX2VuZChzdHJ1Y3QgYW5hbG9naXhfZHBfcGxhdF9k YXRhICpwbGF0X2RhdGEpCi17Ci0Jc3RydWN0IHJvY2tjaGlwX2RwX2RldmljZSAqZHAgPSB0b19k cChwbGF0X2RhdGEpOwotCi0JcmV0dXJuIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQoJmRw LT5lbmNvZGVyKTsKLX0KLQogc3RhdGljIGludCByb2NrY2hpcF9kcF9wb3dlcmRvd24oc3RydWN0 IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSAqcGxhdF9kYXRhKQogewogCXN0cnVjdCByb2NrY2hpcF9k cF9kZXZpY2UgKmRwID0gdG9fZHAocGxhdF9kYXRhKTsKLQlpbnQgcmV0OwotCi0JcmV0ID0gcm9j a2NoaXBfZHJtX3Bzcl9pbmhpYml0X2dldCgmZHAtPmVuY29kZXIpOwotCWlmIChyZXQgIT0gMCkK LQkJcmV0dXJuIHJldDsKIAogCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcC0+cGNsayk7CiAKQEAg LTE4NCwxMiArMTUwLDIzIEBAIHN0YXRpYyB2b2lkIHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX21v ZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKIAkvKiBkbyBub3RoaW5nICovCiB9 CiAKLXN0YXRpYyB2b2lkIHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIpCitzdGF0aWMgdm9pZCByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9l bmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkgICBzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IHJvY2tjaGlwX2RwX2RldmljZSAqZHAgPSB0 b19kcChlbmNvZGVyKTsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlID0g TlVMTDsKIAlpbnQgcmV0OwogCXUzMiB2YWw7CiAKKwlkcm1fYXRvbWljX2NydGNfc3RhdGVfZm9y X2VuY29kZXIoc3RhdGUsIGVuY29kZXIsIE5VTEwsICZvbGRfY3J0Y19zdGF0ZSwKKwkJCQkJICBO VUxMKTsKKwlpZiAoIW9sZF9jcnRjX3N0YXRlKQorCQlyZXR1cm47CisKKwkvKiBDb21pbmcgYmFj ayBmcm9tIHNlbGYgcmVmcmVzaCwgbm90aGluZyB0byBkbyAqLworCWlmIChvbGRfY3J0Y19zdGF0 ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkKKwkJcmV0dXJuOworCiAJcmV0ID0gZHJtX29mX2VuY29k ZXJfYWN0aXZlX2VuZHBvaW50X2lkKGRwLT5kZXYtPm9mX25vZGUsIGVuY29kZXIpOwogCWlmIChy ZXQgPCAwKQogCQlyZXR1cm47CkBAIC0yMTQsOSArMTkxLDI2IEBAIHN0YXRpYyB2b2lkIHJvY2tj aGlwX2RwX2RybV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCiAJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRwLT5ncmZjbGspOwogfQogCi1zdGF0aWMgdm9pZCByb2Nr Y2hpcF9kcF9kcm1fZW5jb2Rlcl9ub3Aoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQorc3Rh dGljIHZvaWQgcm9ja2NoaXBfZHBfZHJtX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsCisJCQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7 Ci0JLyogZG8gbm90aGluZyAqLworCXN0cnVjdCByb2NrY2hpcF9kcF9kZXZpY2UgKmRwID0gdG9f ZHAoZW5jb2Rlcik7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsKKwlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlID0gTlVMTDsKKwlpbnQgcmV0OworCisJZHJtX2F0 b21pY19jcnRjX3N0YXRlX2Zvcl9lbmNvZGVyKHN0YXRlLCBlbmNvZGVyLCAmY3J0YywgTlVMTCwK KwkJCQkJICAmbmV3X2NydGNfc3RhdGUpOworCWlmICghY3J0YyB8fCAhbmV3X2NydGNfc3RhdGUp CisJCXJldHVybjsKKworCS8qIE9ubHkgd2FpdCBmb3IgdmFjdGl2ZSBlbmQgb24gc2VsZiByZWZy ZXNoIHRyYW5zaXRpb25zICovCisJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+c2VsZl9yZWZyZXNoX2Fj dGl2ZSkKKwkJcmV0dXJuOworCisJcmV0ID0gcm9ja2NoaXBfZHJtX3dhaXRfdmFjdF9lbmQoY3J0 YywgUFNSX1dBSVRfTElORV9GTEFHX1RJTUVPVVRfTVMpOworCWlmIChyZXQpCisJCURSTV9ERVZf RVJST1IoZHAtPmRldiwgImxpbmUgZmxhZyBpcnEgdGltZWQgb3V0XG4iKTsKIH0KIAogc3RhdGlj IGludApAQCAtMjQ1LDggKzIzOSw4IEBAIHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2F0b21pY19j aGVjayhzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiBzdGF0aWMgc3RydWN0IGRybV9lbmNv ZGVyX2hlbHBlcl9mdW5jcyByb2NrY2hpcF9kcF9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKIAku bW9kZV9maXh1cCA9IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX21vZGVfZml4dXAsCiAJLm1vZGVf c2V0ID0gcm9ja2NoaXBfZHBfZHJtX2VuY29kZXJfbW9kZV9zZXQsCi0JLmVuYWJsZSA9IHJvY2tj aGlwX2RwX2RybV9lbmNvZGVyX2VuYWJsZSwKLQkuZGlzYWJsZSA9IHJvY2tjaGlwX2RwX2RybV9l bmNvZGVyX25vcCwKKwkuYXRvbWljX2VuYWJsZSA9IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2Vu YWJsZSwKKwkuYXRvbWljX2Rpc2FibGUgPSByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9kaXNhYmxl LAogCS5hdG9taWNfY2hlY2sgPSByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9hdG9taWNfY2hlY2ss CiB9OwogCkBAIC0zMzgsMjMgKzMzMiwxNiBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2RwX2JpbmQo c3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCiAKIAlkcC0+cGxhdF9k YXRhLmRldl90eXBlID0gZHAtPmRhdGEtPmNoaXBfdHlwZTsKIAlkcC0+cGxhdF9kYXRhLnBvd2Vy X29uX3N0YXJ0ID0gcm9ja2NoaXBfZHBfcG93ZXJvbl9zdGFydDsKLQlkcC0+cGxhdF9kYXRhLnBv d2VyX29uX2VuZCA9IHJvY2tjaGlwX2RwX3Bvd2Vyb25fZW5kOwogCWRwLT5wbGF0X2RhdGEucG93 ZXJfb2ZmID0gcm9ja2NoaXBfZHBfcG93ZXJkb3duOwogCWRwLT5wbGF0X2RhdGEuZ2V0X21vZGVz ID0gcm9ja2NoaXBfZHBfZ2V0X21vZGVzOwogCi0JcmV0ID0gcm9ja2NoaXBfZHJtX3Bzcl9yZWdp c3RlcigmZHAtPmVuY29kZXIsIGFuYWxvZ2l4X2RwX3Bzcl9zZXQpOwotCWlmIChyZXQgPCAwKQot CQlnb3RvIGVycl9jbGVhbnVwX2VuY29kZXI7Ci0KIAlkcC0+YWRwID0gYW5hbG9naXhfZHBfYmlu ZChkZXYsIGRwLT5kcm1fZGV2LCAmZHAtPnBsYXRfZGF0YSk7CiAJaWYgKElTX0VSUihkcC0+YWRw KSkgewogCQlyZXQgPSBQVFJfRVJSKGRwLT5hZHApOwotCQlnb3RvIGVycl91bnJlZ19wc3I7CisJ CWdvdG8gZXJyX2NsZWFudXBfZW5jb2RlcjsKIAl9CiAKIAlyZXR1cm4gMDsKLWVycl91bnJlZ19w c3I6Ci0Jcm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVyKCZkcC0+ZW5jb2Rlcik7CiBlcnJfY2xl YW51cF9lbmNvZGVyOgogCWRwLT5lbmNvZGVyLmZ1bmNzLT5kZXN0cm95KCZkcC0+ZW5jb2Rlcik7 CiAJcmV0dXJuIHJldDsKQEAgLTM2Niw3ICszNTMsNiBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9k cF91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCiAJc3Ry dWN0IHJvY2tjaGlwX2RwX2RldmljZSAqZHAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAogCWFu YWxvZ2l4X2RwX3VuYmluZChkcC0+YWRwKTsKLQlyb2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIo JmRwLT5lbmNvZGVyKTsKIAlkcC0+ZW5jb2Rlci5mdW5jcy0+ZGVzdHJveSgmZHAtPmVuY29kZXIp OwogCiAJZHAtPmFkcCA9IEVSUl9QVFIoLUVOT0RFVik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX2ZiLmMKaW5kZXggMDJlODFjYTJkOTMzLi4yMTQwNjRkNTk5ZWUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKQEAgLTI0LDcgKzI0 LDYgQEAKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZHJ2LmgiCiAjaW5jbHVkZSAicm9ja2NoaXBf ZHJtX2ZiLmgiCiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2dlbS5oIgotI2luY2x1ZGUgInJvY2tj aGlwX2RybV9wc3IuaCIKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVu Y3Mgcm9ja2NoaXBfZHJtX2ZiX2Z1bmNzID0gewogCS5kZXN0cm95ICAgICAgID0gZHJtX2dlbV9m Yl9kZXN0cm95LApAQCAtMTIzLDggKzEyMiw2IEBAIHJvY2tjaGlwX2F0b21pY19oZWxwZXJfY29t bWl0X3RhaWxfcnBtKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IG9sZF9zdGF0ZS0+ZGV2OwogCi0Jcm9ja2NoaXBfZHJtX3Bz cl9pbmhpYml0X2dldF9zdGF0ZShvbGRfc3RhdGUpOwotCiAJZHJtX2F0b21pY19oZWxwZXJfY29t bWl0X21vZGVzZXRfZGlzYWJsZXMoZGV2LCBvbGRfc3RhdGUpOwogCiAJZHJtX2F0b21pY19oZWxw ZXJfY29tbWl0X21vZGVzZXRfZW5hYmxlcyhkZXYsIG9sZF9zdGF0ZSk7CkBAIC0xMzIsOCArMTI5 LDYgQEAgcm9ja2NoaXBfYXRvbWljX2hlbHBlcl9jb21taXRfdGFpbF9ycG0oc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVz KGRldiwgb2xkX3N0YXRlLAogCQkJCQlEUk1fUExBTkVfQ09NTUlUX0FDVElWRV9PTkxZKTsKIAot CXJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXRfc3RhdGUob2xkX3N0YXRlKTsKLQogCWRybV9h dG9taWNfaGVscGVyX2NvbW1pdF9od19kb25lKG9sZF9zdGF0ZSk7CiAKIAlkcm1fYXRvbWljX2hl bHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwgb2xkX3N0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBhMGM4YmQyMzViNjcuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3Bzci5jCisrKyAvZGV2L251bGwKQEAgLTEsMjkwICswLDAgQEAKLS8q Ci0gKiBDb3B5cmlnaHQgKEMpIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby5MdGQKLSAq IEF1dGhvcjogWWFraXIgWWFuZyA8eWtrQHJvY2stY2hpcHMuY29tPgotICoKLSAqIFRoaXMgc29m dHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMKLSAqIExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgYW5kCi0gKiBtYXkgYmUgY29waWVkLCBkaXN0cmlidXRlZCwgYW5kIG1v ZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKi8K LQotI2luY2x1ZGUgPGRybS9kcm1QLmg+Ci0jaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KLSNp bmNsdWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgotCi0jaW5jbHVkZSAicm9ja2NoaXBfZHJt X2Rydi5oIgotI2luY2x1ZGUgInJvY2tjaGlwX2RybV9wc3IuaCIKLQotI2RlZmluZSBQU1JfRkxV U0hfVElNRU9VVF9NUwkxMDAKLQotc3RydWN0IHBzcl9kcnYgewotCXN0cnVjdCBsaXN0X2hlYWQJ bGlzdDsKLQlzdHJ1Y3QgZHJtX2VuY29kZXIJKmVuY29kZXI7Ci0KLQlzdHJ1Y3QgbXV0ZXgJCWxv Y2s7Ci0JaW50CQkJaW5oaWJpdF9jb3VudDsKLQlib29sCQkJZW5hYmxlZDsKLQotCXN0cnVjdCBk ZWxheWVkX3dvcmsJZmx1c2hfd29yazsKLQotCWludCAoKnNldCkoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyLCBib29sIGVuYWJsZSk7Ci19OwotCi1zdGF0aWMgc3RydWN0IHBzcl9kcnYgKmZp bmRfcHNyX2J5X2VuY29kZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXN0cnVj dCByb2NrY2hpcF9kcm1fcHJpdmF0ZSAqZHJtX2RydiA9IGVuY29kZXItPmRldi0+ZGV2X3ByaXZh dGU7Ci0Jc3RydWN0IHBzcl9kcnYgKnBzcjsKLQotCW11dGV4X2xvY2soJmRybV9kcnYtPnBzcl9s aXN0X2xvY2spOwotCWxpc3RfZm9yX2VhY2hfZW50cnkocHNyLCAmZHJtX2Rydi0+cHNyX2xpc3Qs IGxpc3QpIHsKLQkJaWYgKHBzci0+ZW5jb2RlciA9PSBlbmNvZGVyKQotCQkJZ290byBvdXQ7Ci0J fQotCXBzciA9IEVSUl9QVFIoLUVOT0RFVik7Ci0KLW91dDoKLQltdXRleF91bmxvY2soJmRybV9k cnYtPnBzcl9saXN0X2xvY2spOwotCXJldHVybiBwc3I7Ci19Ci0KLXN0YXRpYyBpbnQgcHNyX3Nl dF9zdGF0ZV9sb2NrZWQoc3RydWN0IHBzcl9kcnYgKnBzciwgYm9vbCBlbmFibGUpCi17Ci0JaW50 IHJldDsKLQotCWlmIChwc3ItPmluaGliaXRfY291bnQgPiAwKQotCQlyZXR1cm4gLUVJTlZBTDsK LQotCWlmIChlbmFibGUgPT0gcHNyLT5lbmFibGVkKQotCQlyZXR1cm4gMDsKLQotCXJldCA9IHBz ci0+c2V0KHBzci0+ZW5jb2RlciwgZW5hYmxlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0Owot Ci0JcHNyLT5lbmFibGVkID0gZW5hYmxlOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBw c3JfZmx1c2hfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCi17Ci0Jc3RydWN0IHBz cl9kcnYgKnBzciA9IGNvbnRhaW5lcl9vZih0b19kZWxheWVkX3dvcmsod29yayksCi0JCQkJCSAg IHN0cnVjdCBwc3JfZHJ2LCBmbHVzaF93b3JrKTsKLQotCW11dGV4X2xvY2soJnBzci0+bG9jayk7 Ci0JcHNyX3NldF9zdGF0ZV9sb2NrZWQocHNyLCB0cnVlKTsKLQltdXRleF91bmxvY2soJnBzci0+ bG9jayk7Ci19Ci0KLS8qKgotICogcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X3B1dCAtIHJlbGVh c2UgUFNSIGluaGliaXQgb24gZ2l2ZW4gZW5jb2RlcgotICogQGVuY29kZXI6IGVuY29kZXIgdG8g b2J0YWluIHRoZSBQU1IgZW5jb2RlcgotICoKLSAqIERlY3JlbWVudHMgUFNSIGluaGliaXQgY291 bnQgb24gZ2l2ZW4gZW5jb2Rlci4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5Ci0gKiBmb3IgYSBQU1Ig aW5oaWJpdCBjb3VudCBpbmNyZW1lbnQgZG9uZSBiZWZvcmUuIElmIFBTUiBpbmhpYml0IGNvdW50 ZXIKLSAqIHJlYWNoZXMgemVybywgUFNSIGZsdXNoIHdvcmsgaXMgc2NoZWR1bGVkIHRvIG1ha2Ug dGhlIGhhcmR3YXJlIGVudGVyCi0gKiBQU1IgbW9kZSBpbiBQU1JfRkxVU0hfVElNRU9VVF9NUy4K LSAqCi0gKiBSZXR1cm5zOgotICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBm YWlsdXJlLgotICovCi1pbnQgcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X3B1dChzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIpCi17Ci0Jc3RydWN0IHBzcl9kcnYgKnBzciA9IGZpbmRfcHNyX2J5 X2VuY29kZXIoZW5jb2Rlcik7Ci0KLQlpZiAoSVNfRVJSKHBzcikpCi0JCXJldHVybiBQVFJfRVJS KHBzcik7Ci0KLQltdXRleF9sb2NrKCZwc3ItPmxvY2spOwotCS0tcHNyLT5pbmhpYml0X2NvdW50 OwotCVdBUk5fT04ocHNyLT5pbmhpYml0X2NvdW50IDwgMCk7Ci0JaWYgKCFwc3ItPmluaGliaXRf Y291bnQpCi0JCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmcHNyLT5mbHVzaF93b3JrLAot CQkJCSBQU1JfRkxVU0hfVElNRU9VVF9NUyk7Ci0JbXV0ZXhfdW5sb2NrKCZwc3ItPmxvY2spOwot Ci0JcmV0dXJuIDA7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9w dXQpOwotCi12b2lkIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9nZXRfc3RhdGUoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQotewotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0Jc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyOwotCXUzMiBlbmNvZGVyX21hc2sgPSAwOwotCWludCBpOwotCi0JZm9yX2VhY2hfb2xkX2Ny dGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJZW5jb2Rlcl9tYXNr IHw9IGNydGNfc3RhdGUtPmVuY29kZXJfbWFzazsKLQkJZW5jb2Rlcl9tYXNrIHw9IGNydGMtPnN0 YXRlLT5lbmNvZGVyX21hc2s7Ci0JfQotCi0JZHJtX2Zvcl9lYWNoX2VuY29kZXJfbWFzayhlbmNv ZGVyLCBzdGF0ZS0+ZGV2LCBlbmNvZGVyX21hc2spCi0JCXJvY2tjaGlwX2RybV9wc3JfaW5oaWJp dF9nZXQoZW5jb2Rlcik7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfaW5oaWJp dF9nZXRfc3RhdGUpOwotCi12b2lkIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXRfc3RhdGUo c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQotewotCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKLQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0Jc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyOwotCXUzMiBlbmNvZGVyX21hc2sgPSAwOwotCWludCBpOwotCi0JZm9yX2Vh Y2hfb2xkX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJZW5j b2Rlcl9tYXNrIHw9IGNydGNfc3RhdGUtPmVuY29kZXJfbWFzazsKLQkJZW5jb2Rlcl9tYXNrIHw9 IGNydGMtPnN0YXRlLT5lbmNvZGVyX21hc2s7Ci0JfQotCi0JZHJtX2Zvcl9lYWNoX2VuY29kZXJf bWFzayhlbmNvZGVyLCBzdGF0ZS0+ZGV2LCBlbmNvZGVyX21hc2spCi0JCXJvY2tjaGlwX2RybV9w c3JfaW5oaWJpdF9wdXQoZW5jb2Rlcik7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9w c3JfaW5oaWJpdF9wdXRfc3RhdGUpOwotCi0vKioKLSAqIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJp dF9nZXQgLSBhY3F1aXJlIFBTUiBpbmhpYml0IG9uIGdpdmVuIGVuY29kZXIKLSAqIEBlbmNvZGVy OiBlbmNvZGVyIHRvIG9idGFpbiB0aGUgUFNSIGVuY29kZXIKLSAqCi0gKiBJbmNyZW1lbnRzIFBT UiBpbmhpYml0IGNvdW50IG9uIGdpdmVuIGVuY29kZXIuIFRoaXMgZnVuY3Rpb24gZ3VhcmFudGVl cwotICogdGhhdCBhZnRlciBpdCByZXR1cm5zIFBTUiBpcyB0dXJuZWQgb2ZmIG9uIGdpdmVuIGVu Y29kZXIgYW5kIG5vIFBTUi1yZWxhdGVkCi0gKiBoYXJkd2FyZSBzdGF0ZSBjaGFuZ2Ugb2NjdXJz IGF0IGxlYXN0IHVudGlsIGEgbWF0Y2hpbmcgY2FsbCB0bwotICogcm9ja2NoaXBfZHJtX3Bzcl9p bmhpYml0X3B1dCgpIGlzIGRvbmUuCi0gKgotICogUmV0dXJuczoKLSAqIFplcm8gb24gc3VjY2Vz cywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KLSAqLwotaW50IHJvY2tjaGlwX2RybV9wc3Jf aW5oaWJpdF9nZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXN0cnVjdCBwc3Jf ZHJ2ICpwc3IgPSBmaW5kX3Bzcl9ieV9lbmNvZGVyKGVuY29kZXIpOwotCi0JaWYgKElTX0VSUihw c3IpKQotCQlyZXR1cm4gUFRSX0VSUihwc3IpOwotCi0JbXV0ZXhfbG9jaygmcHNyLT5sb2NrKTsK LQlwc3Jfc2V0X3N0YXRlX2xvY2tlZChwc3IsIGZhbHNlKTsKLQkrK3Bzci0+aW5oaWJpdF9jb3Vu dDsKLQltdXRleF91bmxvY2soJnBzci0+bG9jayk7Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5j KCZwc3ItPmZsdXNoX3dvcmspOwotCi0JcmV0dXJuIDA7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tj aGlwX2RybV9wc3JfaW5oaWJpdF9nZXQpOwotCi1zdGF0aWMgdm9pZCByb2NrY2hpcF9kcm1fZG9f Zmx1c2goc3RydWN0IHBzcl9kcnYgKnBzcikKLXsKLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMo JnBzci0+Zmx1c2hfd29yayk7Ci0KLQltdXRleF9sb2NrKCZwc3ItPmxvY2spOwotCWlmICghcHNy X3NldF9zdGF0ZV9sb2NrZWQocHNyLCBmYWxzZSkpCi0JCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVt X3dxLCAmcHNyLT5mbHVzaF93b3JrLAotCQkJCSBQU1JfRkxVU0hfVElNRU9VVF9NUyk7Ci0JbXV0 ZXhfdW5sb2NrKCZwc3ItPmxvY2spOwotfQotCi0vKioKLSAqIHJvY2tjaGlwX2RybV9wc3JfZmx1 c2hfYWxsIC0gZm9yY2UgdG8gZmx1c2ggYWxsIHJlZ2lzdGVyZWQgUFNSIGVuY29kZXJzCi0gKiBA ZGV2OiBkcm0gZGV2aWNlCi0gKgotICogRGlzYWJsZSB0aGUgUFNSIGZ1bmN0aW9uIGZvciBhbGwg cmVnaXN0ZXJlZCBlbmNvZGVycywgYW5kIHRoZW4gZW5hYmxlIHRoZQotICogUFNSIGZ1bmN0aW9u IGJhY2sgYWZ0ZXIgUFNSX0ZMVVNIX1RJTUVPVVQuIElmIGVuY29kZXIgUFNSIHN0YXRlIGhhdmUg YmVlbgotICogY2hhbmdlZCBkdXJpbmcgZmx1c2ggdGltZSwgdGhlbiBrZWVwIHRoZSBzdGF0ZSBu byBjaGFuZ2UgYWZ0ZXIgZmx1c2gKLSAqIHRpbWVvdXQuCi0gKgotICogUmV0dXJuczoKLSAqIFpl cm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KLSAqLwotdm9pZCByb2Nr Y2hpcF9kcm1fcHNyX2ZsdXNoX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQotewotCXN0cnVj dCByb2NrY2hpcF9kcm1fcHJpdmF0ZSAqZHJtX2RydiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3Ry dWN0IHBzcl9kcnYgKnBzcjsKLQotCW11dGV4X2xvY2soJmRybV9kcnYtPnBzcl9saXN0X2xvY2sp OwotCWxpc3RfZm9yX2VhY2hfZW50cnkocHNyLCAmZHJtX2Rydi0+cHNyX2xpc3QsIGxpc3QpCi0J CXJvY2tjaGlwX2RybV9kb19mbHVzaChwc3IpOwotCW11dGV4X3VubG9jaygmZHJtX2Rydi0+cHNy X2xpc3RfbG9jayk7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfZmx1c2hfYWxs KTsKLQotLyoqCi0gKiByb2NrY2hpcF9kcm1fcHNyX3JlZ2lzdGVyIC0gcmVnaXN0ZXIgZW5jb2Rl ciB0byBwc3IgZHJpdmVyCi0gKiBAZW5jb2RlcjogZW5jb2RlciB0aGF0IG9idGFpbiB0aGUgUFNS IGZ1bmN0aW9uCi0gKiBAcHNyX3NldDogY2FsbCBiYWNrIHRvIHNldCBQU1Igc3RhdGUKLSAqCi0g KiBUaGUgZnVuY3Rpb24gcmV0dXJucyB3aXRoIFBTUiBpbmhpYml0IGNvdW50ZXIgaW5pdGlhbGl6 ZWQgd2l0aCBvbmUKLSAqIGFuZCB0aGUgY2FsbGVyICh0eXBpY2FsbHkgZW5jb2RlciBkcml2ZXIp IG5lZWRzIHRvIGNhbGwKLSAqIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQoKSB3aGVuIGl0 IGJlY29tZXMgcmVhZHkgdG8gYWNjZXB0IFBTUgotICogZW5hYmxlIHJlcXVlc3QuCi0gKgotICog UmV0dXJuczoKLSAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4K LSAqLwotaW50IHJvY2tjaGlwX2RybV9wc3JfcmVnaXN0ZXIoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyLAotCQkJaW50ICgqcHNyX3NldCkoc3RydWN0IGRybV9lbmNvZGVyICosIGJvb2wgZW5h YmxlKSkKLXsKLQlzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZhdGUgKmRybV9kcnY7Ci0Jc3RydWN0 IHBzcl9kcnYgKnBzcjsKLQotCWlmICghZW5jb2RlciB8fCAhcHNyX3NldCkKLQkJcmV0dXJuIC1F SU5WQUw7Ci0KLQlkcm1fZHJ2ID0gZW5jb2Rlci0+ZGV2LT5kZXZfcHJpdmF0ZTsKLQotCXBzciA9 IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBwc3JfZHJ2KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFwc3Ip Ci0JCXJldHVybiAtRU5PTUVNOwotCi0JSU5JVF9ERUxBWUVEX1dPUksoJnBzci0+Zmx1c2hfd29y aywgcHNyX2ZsdXNoX2hhbmRsZXIpOwotCW11dGV4X2luaXQoJnBzci0+bG9jayk7Ci0KLQlwc3It PmluaGliaXRfY291bnQgPSAxOwotCXBzci0+ZW5hYmxlZCA9IGZhbHNlOwotCXBzci0+ZW5jb2Rl ciA9IGVuY29kZXI7Ci0JcHNyLT5zZXQgPSBwc3Jfc2V0OwotCi0JbXV0ZXhfbG9jaygmZHJtX2Ry di0+cHNyX2xpc3RfbG9jayk7Ci0JbGlzdF9hZGRfdGFpbCgmcHNyLT5saXN0LCAmZHJtX2Rydi0+ cHNyX2xpc3QpOwotCW11dGV4X3VubG9jaygmZHJtX2Rydi0+cHNyX2xpc3RfbG9jayk7Ci0KLQly ZXR1cm4gMDsKLX0KLUVYUE9SVF9TWU1CT0wocm9ja2NoaXBfZHJtX3Bzcl9yZWdpc3Rlcik7Ci0K LS8qKgotICogcm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBlbmNvZGVy IHRvIHBzciBkcml2ZXIKLSAqIEBlbmNvZGVyOiBlbmNvZGVyIHRoYXQgb2J0YWluIHRoZSBQU1Ig ZnVuY3Rpb24KLSAqIEBwc3Jfc2V0OiBjYWxsIGJhY2sgdG8gc2V0IFBTUiBzdGF0ZQotICoKLSAq IEl0IGlzIGV4cGVjdGVkIHRoYXQgdGhlIFBTUiBpbmhpYml0IGNvdW50ZXIgaXMgMSB3aGVuIHRo aXMgZnVuY3Rpb24gaXMKLSAqIGNhbGxlZCwgd2hpY2ggY29ycmVzcG9uZHMgdG8gYSBzdGF0ZSB3 aGVuIHJlbGF0ZWQgZW5jb2RlciBoYXMgYmVlbgotICogZGlzY29ubmVjdGVkIGZyb20gYW55IENS VENzIGFuZCBpdHMgZHJpdmVyIGNhbGxlZAotICogcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X2dl dCgpIHRvIHN0b3AgdGhlIFBTUiBsb2dpYy4KLSAqCi0gKiBSZXR1cm5zOgotICogWmVybyBvbiBz dWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLgotICovCi12b2lkIHJvY2tjaGlwX2Ry bV9wc3JfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCi17Ci0Jc3RydWN0 IHJvY2tjaGlwX2RybV9wcml2YXRlICpkcm1fZHJ2ID0gZW5jb2Rlci0+ZGV2LT5kZXZfcHJpdmF0 ZTsKLQlzdHJ1Y3QgcHNyX2RydiAqcHNyLCAqbjsKLQotCW11dGV4X2xvY2soJmRybV9kcnYtPnBz cl9saXN0X2xvY2spOwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwc3IsIG4sICZkcm1fZHJ2 LT5wc3JfbGlzdCwgbGlzdCkgewotCQlpZiAocHNyLT5lbmNvZGVyID09IGVuY29kZXIpIHsKLQkJ CS8qCi0JCQkgKiBBbnkgb3RoZXIgdmFsdWUgd291bGQgbWVhbiB0aGF0IHRoZSBlbmNvZGVyCi0J CQkgKiBpcyBzdGlsbCBpbiB1c2UuCi0JCQkgKi8KLQkJCVdBUk5fT04ocHNyLT5pbmhpYml0X2Nv dW50ICE9IDEpOwotCi0JCQlsaXN0X2RlbCgmcHNyLT5saXN0KTsKLQkJCWtmcmVlKHBzcik7Ci0J CX0KLQl9Ci0JbXV0ZXhfdW5sb2NrKCZkcm1fZHJ2LT5wc3JfbGlzdF9sb2NrKTsKLX0KLUVYUE9S VF9TWU1CT0wocm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNyLmggYi9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAyNTM1MGJhMzIzN2IuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3Bzci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoK LSAqIENvcHlyaWdodCAoQykgRnV6aG91IFJvY2tjaGlwIEVsZWN0cm9uaWNzIENvLkx0ZAotICog QXV0aG9yOiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+Ci0gKgotICogVGhpcyBzb2Z0 d2FyZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YwotICogTGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBhbmQKLSAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9k aWZpZWQgdW5kZXIgdGhvc2UgdGVybXMuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqLwot Ci0jaWZuZGVmIF9fUk9DS0NISVBfRFJNX1BTUl9fXwotI2RlZmluZSBfX1JPQ0tDSElQX0RSTV9Q U1JfX18KLQotdm9pZCByb2NrY2hpcF9kcm1fcHNyX2ZsdXNoX2FsbChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKLQotaW50IHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQoc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyKTsKLWludCByb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfZ2V0KHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Ci0KLXZvaWQgcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0 X2dldF9zdGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwotdm9pZCByb2NrY2hp cF9kcm1fcHNyX2luaGliaXRfcHV0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSk7Ci0KLWludCByb2NrY2hpcF9kcm1fcHNyX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciwKLQkJCWludCAoKnBzcl9zZXQpKHN0cnVjdCBkcm1fZW5jb2RlciAqLCBib29sIGVu YWJsZSkpOwotdm9pZCByb2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyKTsKLQotI2VuZGlmIC8qIF9fUk9DS0NISVBfRFJNX1BTUl9fICovCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIGIvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwppbmRleCA5MjU0NzQ3ZWY2 NWIuLjQ1YTM4YTMzMjgyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV92b3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBf ZHJtX3ZvcC5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVi dWZmZXJfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KICNpbmNs dWRlIDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fc2VsZl9yZWZy ZXNoX2hlbHBlci5oPgogI2lmZGVmIENPTkZJR19EUk1fQU5BTE9HSVhfRFAKICNpbmNsdWRlIDxk cm0vYnJpZGdlL2FuYWxvZ2l4X2RwLmg+CiAjZW5kaWYKQEAgLTQyLDEwICs0MywxMSBAQAogI2lu Y2x1ZGUgInJvY2tjaGlwX2RybV9kcnYuaCIKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZ2VtLmgi CiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2ZiLmgiCi0jaW5jbHVkZSAicm9ja2NoaXBfZHJtX3Bz ci5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2RybV92b3AuaCIKICNpbmNsdWRlICJyb2NrY2hpcF9y Z2IuaCIKIAorI2RlZmluZSBWT1BfU0VMRl9SRUZSRVNIX0VOVFJZX0RFTEFZX01TIDEwMAorCiAj ZGVmaW5lIFZPUF9XSU5fU0VUKHZvcCwgd2luLCBuYW1lLCB2KSBcCiAJCXZvcF9yZWdfc2V0KHZv cCwgJndpbi0+cGh5LT5uYW1lLCB3aW4tPmJhc2UsIH4wLCB2LCAjbmFtZSkKICNkZWZpbmUgVk9Q X1NDTF9TRVQodm9wLCB3aW4sIG5hbWUsIHYpIFwKQEAgLTU0MSw3ICs1NDMsNyBAQCBzdGF0aWMg dm9pZCB2b3BfY29yZV9jbGtzX2Rpc2FibGUoc3RydWN0IHZvcCAqdm9wKQogCWNsa19kaXNhYmxl KHZvcC0+aGNsayk7CiB9CiAKLXN0YXRpYyBpbnQgdm9wX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCitzdGF0aWMgaW50IHZvcF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSkKIHsKIAlzdHJ1Y3Qgdm9wICp2b3AgPSB0b192 b3AoY3J0Yyk7CiAJaW50IHJldCwgaTsKQEAgLTU4MSwxMiArNTgzLDE4IEBAIHN0YXRpYyBpbnQg dm9wX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJICogV2UgbmVlZCB0byBtYWtlIHN1 cmUgdGhhdCBhbGwgd2luZG93cyBhcmUgZGlzYWJsZWQgYmVmb3JlIHdlCiAJICogZW5hYmxlIHRo ZSBjcnRjLiBPdGhlcndpc2Ugd2UgbWlnaHQgdHJ5IHRvIHNjYW4gZnJvbSBhIGRlc3Ryb3llZAog CSAqIGJ1ZmZlciBsYXRlci4KKwkgKgorCSAqIEluIHRoZSBjYXNlIG9mIGVuYWJsZS1hZnRlci1Q U1IsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhpcworCSAqIGNhc2Ugc2luY2UgdGhl IGJ1ZmZlciBpcyBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIGFuZCBkaXNhYmxpbmcgdGhlCisJICog d2luZG93IHdpbGwgcmVzdWx0IGluIHNjcmVlbiBnbGl0Y2hlcyBvbiBQU1IgZXhpdC4KIAkgKi8K LQlmb3IgKGkgPSAwOyBpIDwgdm9wLT5kYXRhLT53aW5fc2l6ZTsgaSsrKSB7Ci0JCXN0cnVjdCB2 b3Bfd2luICp2b3Bfd2luID0gJnZvcC0+d2luW2ldOwotCQljb25zdCBzdHJ1Y3Qgdm9wX3dpbl9k YXRhICp3aW4gPSB2b3Bfd2luLT5kYXRhOworCWlmICghb2xkX3N0YXRlIHx8ICFvbGRfc3RhdGUt PnNlbGZfcmVmcmVzaF9hY3RpdmUpIHsKKwkJZm9yIChpID0gMDsgaSA8IHZvcC0+ZGF0YS0+d2lu X3NpemU7IGkrKykgeworCQkJc3RydWN0IHZvcF93aW4gKnZvcF93aW4gPSAmdm9wLT53aW5baV07 CisJCQljb25zdCBzdHJ1Y3Qgdm9wX3dpbl9kYXRhICp3aW4gPSB2b3Bfd2luLT5kYXRhOwogCi0J CVZPUF9XSU5fU0VUKHZvcCwgd2luLCBlbmFibGUsIDApOworCQkJVk9QX1dJTl9TRVQodm9wLCB3 aW4sIGVuYWJsZSwgMCk7CisJCX0KIAl9CiAJc3Bpbl91bmxvY2soJnZvcC0+cmVnX2xvY2spOwog CkBAIC05MzcsMTIgKzk0NSwxMCBAQCBzdGF0aWMgdm9pZCB2b3BfcGxhbmVfYXRvbWljX2FzeW5j X3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAl9CiAKIAlpZiAodm9wLT5pc19lbmFi bGVkKSB7Ci0JCXJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9nZXRfc3RhdGUobmV3X3N0YXRlLT5z dGF0ZSk7CiAJCXZvcF9wbGFuZV9hdG9taWNfdXBkYXRlKHBsYW5lLCBwbGFuZS0+c3RhdGUpOwog CQlzcGluX2xvY2soJnZvcC0+cmVnX2xvY2spOwogCQl2b3BfY2ZnX2RvbmUodm9wKTsKIAkJc3Bp bl91bmxvY2soJnZvcC0+cmVnX2xvY2spOwotCQlyb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfcHV0 X3N0YXRlKG5ld19zdGF0ZS0+c3RhdGUpOwogCX0KIAogCXBsYW5lLT5mdW5jcy0+YXRvbWljX2Rl c3Ryb3lfc3RhdGUocGxhbmUsIHBsYW5lX3N0YXRlKTsKQEAgLTEwMzYsNyArMTA0Miw3IEBAIHN0 YXRpYyB2b2lkIHZvcF9jcnRjX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAog CiAJV0FSTl9PTih2b3AtPmV2ZW50KTsKIAotCXJldCA9IHZvcF9lbmFibGUoY3J0Yyk7CisJcmV0 ID0gdm9wX2VuYWJsZShjcnRjLCBvbGRfc3RhdGUpOwogCWlmIChyZXQpIHsKIAkJbXV0ZXhfdW5s b2NrKCZ2b3AtPnZvcF9sb2NrKTsKIAkJRFJNX0RFVl9FUlJPUih2b3AtPmRldiwgIkZhaWxlZCB0 byBlbmFibGUgdm9wICglZClcbiIsIHJldCk7CkBAIC0xNTE4LDYgKzE1MjQsMTMgQEAgc3RhdGlj IGludCB2b3BfY3JlYXRlX2NydGMoc3RydWN0IHZvcCAqdm9wKQogCWluaXRfY29tcGxldGlvbigm dm9wLT5saW5lX2ZsYWdfY29tcGxldGlvbik7CiAJY3J0Yy0+cG9ydCA9IHBvcnQ7CiAKKwlyZXQg PSBkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9yZWdpc3RlcihjcnRjLAorCQkJCQkgICAgICAgVk9Q X1NFTEZfUkVGUkVTSF9FTlRSWV9ERUxBWV9NUyk7CisJaWYgKHJldCkKKwkJRFJNX0RFVl9ERUJV R19LTVModm9wLT5kZXYsCisJCQkiRmFpbGVkIHRvIHJlZ2lzdGVyICVzIHdpdGggU1IgaGVscGVy cyAlZCwgaWdub3JpbmdcbiIsCisJCQljcnRjLT5uYW1lLCByZXQpOworCiAJcmV0dXJuIDA7CiAK IGVycl9jbGVhbnVwX2NydGM6CkBAIC0xNTM1LDYgKzE1NDgsOCBAQCBzdGF0aWMgdm9pZCB2b3Bf ZGVzdHJveV9jcnRjKHN0cnVjdCB2b3AgKnZvcCkKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2Rl diA9IHZvcC0+ZHJtX2RldjsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgKnRtcDsKIAorCWRy bV9zZWxmX3JlZnJlc2hfaGVscGVyX3VucmVnaXN0ZXIoY3J0Yyk7CisKIAlvZl9ub2RlX3B1dChj cnRjLT5wb3J0KTsKIAogCS8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9icmlkZ2UvYW5hbG9n aXhfZHAuaCBiL2luY2x1ZGUvZHJtL2JyaWRnZS9hbmFsb2dpeF9kcC5oCmluZGV4IDQ3NWI3MDZi NDlkZS4uN2M1YzEzODAzNjczIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9icmlkZ2UvYW5hbG9n aXhfZHAuaAorKysgYi9pbmNsdWRlL2RybS9icmlkZ2UvYW5hbG9naXhfZHAuaApAQCAtNDIsMTAg KzQyLDYgQEAgc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSB7CiAJCQkgc3RydWN0IGRybV9j b25uZWN0b3IgKik7CiB9OwogCi1pbnQgYW5hbG9naXhfZHBfcHNyX2VuYWJsZWQoc3RydWN0IGFu YWxvZ2l4X2RwX2RldmljZSAqZHApOwotaW50IGFuYWxvZ2l4X2RwX2VuYWJsZV9wc3Ioc3RydWN0 IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApOwotaW50IGFuYWxvZ2l4X2RwX2Rpc2FibGVfcHNyKHN0 cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKTsKLQogaW50IGFuYWxvZ2l4X2RwX3Jlc3VtZShz dHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7CiBpbnQgYW5hbG9naXhfZHBfc3VzcGVuZChz dHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7CiAKLS0gClNlYW4gUGF1bCwgU29mdHdhcmUg RW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9kcmktZGV2ZWw=