From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: [PATCH v4 08/11] drm/rockchip: Use the helpers for PSR Date: Wed, 8 May 2019 12:09:13 -0400 Message-ID: <20190508160920.144739-9-sean@poorly.run> References: <20190508160920.144739-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-x744.google.com (mail-qk1-x744.google.com [IPv6:2607:f8b0:4864:20::744]) by gabe.freedesktop.org (Postfix) with ESMTPS id 56E0889817 for ; Wed, 8 May 2019 16:09:41 +0000 (UTC) Received: by mail-qk1-x744.google.com with SMTP id w20so1175632qka.7 for ; Wed, 08 May 2019 09:09:41 -0700 (PDT) In-Reply-To: <20190508160920.144739-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 ZSAoRGFuaWVsKQpDaGFuZ2VzIGluIHY0OgotIFVzZSBMYXVyZW50J3MgZ2V0X25ld19jb25uZWN0 b3JfZm9yX2VuY29kZXIgaGVscGVyIChEYW5pZWwpCi0gRXhpdCB2b3AgZGlzYWJsZSBlYXJseSBp ZiBpdCdzIGFscmVhZHkgb2ZmCgpMaW5rIHRvIHYxOiBodHRwczovL3BhdGNod29yay5mcmVlZGVz a3RvcC5vcmcvcGF0Y2gvbXNnaWQvMjAxOTAyMjgyMTA5MzkuODMzODYtNC1zZWFuQHBvb3JseS5y dW4KTGluayB0byB2MjogaHR0cHM6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoL21z Z2lkLzIwMTkwMzI2MjA0NTA5Ljk2NTE1LTMtc2VhbkBwb29ybHkucnVuCkxpbmsgdG8gdjM6IGh0 dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC9tc2dpZC8yMDE5MDUwMjE5NDk1 Ni4yMTg0NDEtOS1zZWFuQHBvb3JseS5ydW4KCkNjOiBaYWluIFdhbmcgPHd6ekByb2NrLWNoaXBz LmNvbT4KQ2M6IFRvbWFzeiBGaWdhIDx0ZmlnYUBjaHJvbWl1bS5vcmc+CkNjOiBEYW5pZWwgVmV0 dGVyIDxkYW5pZWxAZmZ3bGwuY2g+CkNjOiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBpbmNo YXJ0QGlkZWFzb25ib2FyZC5jb20+ClNpZ25lZC1vZmYtYnk6IFNlYW4gUGF1bCA8c2VhbnBhdWxA Y2hyb21pdW0ub3JnPgotLS0KIC4uLi9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2Nv cmUuYyAgICB8IDI5MSArKysrKysrKysrKysrLS0tLS0KIC4uLi9kcm0vYnJpZGdlL2FuYWxvZ2l4 L2FuYWxvZ2l4X2RwX2NvcmUuaCAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlw L01ha2VmaWxlICAgICAgICAgICAgIHwgICAzICstCiAuLi4vZ3B1L2RybS9yb2NrY2hpcC9hbmFs b2dpeF9kcC1yb2NrY2hpcC5jICAgfCAxMDYgKysrKy0tLQogZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL3JvY2tjaGlwX2RybV9mYi5jICAgIHwgICA1IC0KIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fcHNyLmMgICB8IDI5MCAtLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9wc3IuaCAgIHwgIDMwIC0tCiBkcml2ZXJzL2dw dS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jICAgfCAgMzkgKystCiBpbmNsdWRlL2Ry bS9icmlkZ2UvYW5hbG9naXhfZHAuaCAgICAgICAgICAgICAgfCAgIDQgLQogOSBmaWxlcyBjaGFu Z2VkLCAyOTUgaW5zZXJ0aW9ucygrKSwgNDc1IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNyLmMKIGRlbGV0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Bzci5oCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9j b3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUu YwppbmRleCBhZjM0NTU0YTVhMDIuLjFjMTQ3MmVkMjg1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmMKQEAgLTI0LDYgKzI0LDcg QEAKICNpbmNsdWRlIDxsaW51eC9waHkvcGh5Lmg+CiAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgor I2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVs cGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wYW5l bC5oPgpAQCAtMTA2LDYzICsxMDcsNyBAQCBzdGF0aWMgaW50IGFuYWxvZ2l4X2RwX2RldGVjdF9o cGQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApCiAJcmV0dXJuIDA7CiB9CiAKLWludCBh bmFsb2dpeF9kcF9wc3JfZW5hYmxlZChzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKLXsK LQotCXJldHVybiBkcC0+cHNyX2VuYWJsZTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKGFuYWxvZ2l4 X2RwX3Bzcl9lbmFibGVkKTsKLQotaW50IGFuYWxvZ2l4X2RwX2VuYWJsZV9wc3Ioc3RydWN0IGFu YWxvZ2l4X2RwX2RldmljZSAqZHApCi17Ci0Jc3RydWN0IGVkcF92c2NfcHNyIHBzcl92c2M7Ci0K LQlpZiAoIWRwLT5wc3JfZW5hYmxlKQotCQlyZXR1cm4gMDsKLQotCS8qIFByZXBhcmUgVlNDIHBh Y2tldCBhcyBwZXIgRURQIDEuNCBzcGVjLCBUYWJsZSA2LjkgKi8KLQltZW1zZXQoJnBzcl92c2Ms IDAsIHNpemVvZihwc3JfdnNjKSk7Ci0JcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMCA9IDA7Ci0JcHNy X3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4NzsKLQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIyID0gMHgy OwotCXBzcl92c2Muc2RwX2hlYWRlci5IQjMgPSAweDg7Ci0KLQlwc3JfdnNjLkRCMCA9IDA7Ci0J cHNyX3ZzYy5EQjEgPSBFRFBfVlNDX1BTUl9TVEFURV9BQ1RJVkUgfCBFRFBfVlNDX1BTUl9DUkNf VkFMVUVTX1ZBTElEOwotCi0JcmV0dXJuIGFuYWxvZ2l4X2RwX3NlbmRfcHNyX3NwZChkcCwgJnBz cl92c2MsIHRydWUpOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoYW5hbG9naXhfZHBfZW5hYmxlX3Bz cik7Ci0KLWludCBhbmFsb2dpeF9kcF9kaXNhYmxlX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2 aWNlICpkcCkKLXsKLQlzdHJ1Y3QgZWRwX3ZzY19wc3IgcHNyX3ZzYzsKLQlpbnQgcmV0OwotCi0J aWYgKCFkcC0+cHNyX2VuYWJsZSkKLQkJcmV0dXJuIDA7Ci0KLQkvKiBQcmVwYXJlIFZTQyBwYWNr ZXQgYXMgcGVyIEVEUCAxLjQgc3BlYywgVGFibGUgNi45ICovCi0JbWVtc2V0KCZwc3JfdnNjLCAw LCBzaXplb2YocHNyX3ZzYykpOwotCXBzcl92c2Muc2RwX2hlYWRlci5IQjAgPSAwOwotCXBzcl92 c2Muc2RwX2hlYWRlci5IQjEgPSAweDc7Ci0JcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMiA9IDB4MjsK LQlwc3JfdnNjLnNkcF9oZWFkZXIuSEIzID0gMHg4OwotCi0JcHNyX3ZzYy5EQjAgPSAwOwotCXBz cl92c2MuREIxID0gMDsKLQotCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlYigmZHAtPmF1eCwgRFBf U0VUX1BPV0VSLCBEUF9TRVRfUE9XRVJfRDApOwotCWlmIChyZXQgIT0gMSkgewotCQlkZXZfZXJy KGRwLT5kZXYsICJGYWlsZWQgdG8gc2V0IERQIFBvd2VyMCAlZFxuIiwgcmV0KTsKLQkJcmV0dXJu IHJldDsKLQl9Ci0KLQlyZXR1cm4gYW5hbG9naXhfZHBfc2VuZF9wc3Jfc3BkKGRwLCAmcHNyX3Zz YywgZmFsc2UpOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoYW5hbG9naXhfZHBfZGlzYWJsZV9wc3Ip OwotCi1zdGF0aWMgaW50IGFuYWxvZ2l4X2RwX2RldGVjdF9zaW5rX3BzcihzdHJ1Y3QgYW5hbG9n aXhfZHBfZGV2aWNlICpkcCkKK3N0YXRpYyBib29sIGFuYWxvZ2l4X2RwX2RldGVjdF9zaW5rX3Bz cihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKIHsKIAl1bnNpZ25lZCBjaGFyIHBzcl92 ZXJzaW9uOwogCWludCByZXQ7CkBAIC0xNzAsMTQgKzExNSwxMSBAQCBzdGF0aWMgaW50IGFuYWxv Z2l4X2RwX2RldGVjdF9zaW5rX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCkKIAly ZXQgPSBkcm1fZHBfZHBjZF9yZWFkYigmZHAtPmF1eCwgRFBfUFNSX1NVUFBPUlQsICZwc3JfdmVy c2lvbik7CiAJaWYgKHJldCAhPSAxKSB7CiAJCWRldl9lcnIoZHAtPmRldiwgImZhaWxlZCB0byBn ZXQgUFNSIHZlcnNpb24sIGRpc2FibGUgaXRcbiIpOwotCQlyZXR1cm4gcmV0OworCQlyZXR1cm4g ZmFsc2U7CiAJfQogCiAJZGV2X2RiZyhkcC0+ZGV2LCAiUGFuZWwgUFNSIHZlcnNpb24gOiAleFxu IiwgcHNyX3ZlcnNpb24pOwotCi0JZHAtPnBzcl9lbmFibGUgPSAocHNyX3ZlcnNpb24gJiBEUF9Q U1JfSVNfU1VQUE9SVEVEKSA/IHRydWUgOiBmYWxzZTsKLQotCXJldHVybiAwOworCXJldHVybiBw c3JfdmVyc2lvbiAmIERQX1BTUl9JU19TVVBQT1JURUQ7CiB9CiAKIHN0YXRpYyBpbnQgYW5hbG9n aXhfZHBfZW5hYmxlX3NpbmtfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQpAQCAt MjAwLDcgKzE0Miw3IEBAIHN0YXRpYyBpbnQgYW5hbG9naXhfZHBfZW5hYmxlX3NpbmtfcHNyKHN0 cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogCX0KIAogCS8qIE1haW4tTGluayB0cmFuc21p dHRlciByZW1haW5zIGFjdGl2ZSBkdXJpbmcgUFNSIGFjdGl2ZSBzdGF0ZXMgKi8KLQlwc3JfZW4g PSBEUF9QU1JfTUFJTl9MSU5LX0FDVElWRSB8IERQX1BTUl9DUkNfVkVSSUZJQ0FUSU9OOworCXBz cl9lbiA9IERQX1BTUl9DUkNfVkVSSUZJQ0FUSU9OOwogCXJldCA9IGRybV9kcF9kcGNkX3dyaXRl YigmZHAtPmF1eCwgRFBfUFNSX0VOX0NGRywgcHNyX2VuKTsKIAlpZiAocmV0ICE9IDEpIHsKIAkJ ZGV2X2VycihkcC0+ZGV2LCAiZmFpbGVkIHRvIHNldCBwYW5lbCBwc3JcbiIpOwpAQCAtMjA4LDgg KzE1MCw3IEBAIHN0YXRpYyBpbnQgYW5hbG9naXhfZHBfZW5hYmxlX3NpbmtfcHNyKHN0cnVjdCBh bmFsb2dpeF9kcF9kZXZpY2UgKmRwKQogCX0KIAogCS8qIEVuYWJsZSBwc3IgZnVuY3Rpb24gKi8K LQlwc3JfZW4gPSBEUF9QU1JfRU5BQkxFIHwgRFBfUFNSX01BSU5fTElOS19BQ1RJVkUgfAotCQkg RFBfUFNSX0NSQ19WRVJJRklDQVRJT047CisJcHNyX2VuID0gRFBfUFNSX0VOQUJMRSB8IERQX1BT Ul9DUkNfVkVSSUZJQ0FUSU9OOwogCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlYigmZHAtPmF1eCwg RFBfUFNSX0VOX0NGRywgcHNyX2VuKTsKIAlpZiAocmV0ICE9IDEpIHsKIAkJZGV2X2VycihkcC0+ ZGV2LCAiZmFpbGVkIHRvIHNldCBwYW5lbCBwc3JcbiIpOwpAQCAtMjE4LDEwICsxNTksMTEgQEAg c3RhdGljIGludCBhbmFsb2dpeF9kcF9lbmFibGVfc2lua19wc3Ioc3RydWN0IGFuYWxvZ2l4X2Rw X2RldmljZSAqZHApCiAKIAlhbmFsb2dpeF9kcF9lbmFibGVfcHNyX2NyYyhkcCk7CiAKKwlkcC0+ cHNyX3N1cHBvcnRlZCA9IHRydWU7CisKIAlyZXR1cm4gMDsKIGVuZDoKIAlkZXZfZXJyKGRwLT5k ZXYsICJlbmFibGUgcHNyIGZhaWwsIGZvcmNlIHRvIGRpc2FibGUgcHNyXG4iKTsKLQlkcC0+cHNy X2VuYWJsZSA9IGZhbHNlOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTEwMzYsMjUgKzk3OCw5MCBA QCBzdGF0aWMgaW50IGFuYWxvZ2l4X2RwX2NvbW1pdChzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNl ICpkcCkKIAkJfQogCX0KIAotCXJldCA9IGFuYWxvZ2l4X2RwX2RldGVjdF9zaW5rX3BzcihkcCk7 Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQogCS8qIENoZWNrIHdoZXRoZXIgcGFuZWwgc3Vw cG9ydHMgZmFzdCB0cmFpbmluZyAqLwogCXJldCA9IGFuYWxvZ2l4X2RwX2Zhc3RfbGlua190cmFp bl9kZXRlY3Rpb24oZHApOwogCWlmIChyZXQpCi0JCWRwLT5wc3JfZW5hYmxlID0gZmFsc2U7CisJ CXJldHVybiByZXQ7CiAKLQlpZiAoZHAtPnBzcl9lbmFibGUpIHsKKwlpZiAoYW5hbG9naXhfZHBf ZGV0ZWN0X3NpbmtfcHNyKGRwKSkgewogCQlyZXQgPSBhbmFsb2dpeF9kcF9lbmFibGVfc2lua19w c3IoZHApOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9CiAKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgaW50IGFuYWxvZ2l4X2RwX2VuYWJsZV9wc3Ioc3RydWN0IGFuYWxvZ2l4X2Rw X2RldmljZSAqZHApCit7CisJc3RydWN0IGVkcF92c2NfcHNyIHBzcl92c2M7CisJaW50IHJldDsK Kwl1OCBzaW5rOworCisJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZGIoJmRwLT5hdXgsIERQX1BTUl9T VEFUVVMsICZzaW5rKTsKKwlpZiAocmV0ICE9IDEpCisJCURSTV9ERVZfRVJST1IoZHAtPmRldiwg IkZhaWxlZCB0byByZWFkIHBzciBzdGF0dXMgJWRcbiIsIHJldCk7CisJZWxzZSBpZiAoc2luayA9 PSBEUF9QU1JfU0lOS19BQ1RJVkVfUkZCKQorCQlyZXR1cm4gMDsKKworCS8qIFByZXBhcmUgVlND IHBhY2tldCBhcyBwZXIgRURQIDEuNCBzcGVjLCBUYWJsZSA2LjkgKi8KKwltZW1zZXQoJnBzcl92 c2MsIDAsIHNpemVvZihwc3JfdnNjKSk7CisJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMCA9IDA7CisJ cHNyX3ZzYy5zZHBfaGVhZGVyLkhCMSA9IDB4NzsKKwlwc3JfdnNjLnNkcF9oZWFkZXIuSEIyID0g MHgyOworCXBzcl92c2Muc2RwX2hlYWRlci5IQjMgPSAweDg7CisJcHNyX3ZzYy5EQjAgPSAwOwor CXBzcl92c2MuREIxID0gRURQX1ZTQ19QU1JfU1RBVEVfQUNUSVZFIHwgRURQX1ZTQ19QU1JfQ1JD X1ZBTFVFU19WQUxJRDsKKworCXJldCA9IGFuYWxvZ2l4X2RwX3NlbmRfcHNyX3NwZChkcCwgJnBz cl92c2MsIHRydWUpOworCWlmICghcmV0KQorCQlhbmFsb2dpeF9kcF9zZXRfYW5hbG9nX3Bvd2Vy X2Rvd24oZHAsIFBPV0VSX0FMTCwgdHJ1ZSk7CiAKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMg aW50IGFuYWxvZ2l4X2RwX2Rpc2FibGVfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRw KQoreworCXN0cnVjdCBlZHBfdnNjX3BzciBwc3JfdnNjOworCWludCByZXQ7CisJdTggc2luazsK KworCWFuYWxvZ2l4X2RwX3NldF9hbmFsb2dfcG93ZXJfZG93bihkcCwgUE9XRVJfQUxMLCBmYWxz ZSk7CisKKwlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZWIoJmRwLT5hdXgsIERQX1NFVF9QT1dFUiwg RFBfU0VUX1BPV0VSX0QwKTsKKwlpZiAocmV0ICE9IDEpIHsKKwkJRFJNX0RFVl9FUlJPUihkcC0+ ZGV2LCAiRmFpbGVkIHRvIHNldCBEUCBQb3dlcjAgJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7 CisJfQorCisJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZGIoJmRwLT5hdXgsIERQX1BTUl9TVEFUVVMs ICZzaW5rKTsKKwlpZiAocmV0ICE9IDEpIHsKKwkJRFJNX0RFVl9FUlJPUihkcC0+ZGV2LCAiRmFp bGVkIHRvIHJlYWQgcHNyIHN0YXR1cyAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9IGVs c2UgaWYgKHNpbmsgPT0gRFBfUFNSX1NJTktfSU5BQ1RJVkUpIHsKKwkJRFJNX0RFVl9FUlJPUihk cC0+ZGV2LCAic2luayBpbmFjdGl2ZSwgc2tpcCBkaXNhYmxlIHBzciIpOworCQlyZXR1cm4gMDsK Kwl9CisKKwlyZXQgPSBhbmFsb2dpeF9kcF90cmFpbl9saW5rKGRwKTsKKwlpZiAocmV0KSB7CisJ CURSTV9ERVZfRVJST1IoZHAtPmRldiwgIkZhaWxlZCB0byB0cmFpbiB0aGUgbGluayAlZFxuIiwg cmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwkvKiBQcmVwYXJlIFZTQyBwYWNrZXQgYXMgcGVy IEVEUCAxLjQgc3BlYywgVGFibGUgNi45ICovCisJbWVtc2V0KCZwc3JfdnNjLCAwLCBzaXplb2Yo cHNyX3ZzYykpOworCXBzcl92c2Muc2RwX2hlYWRlci5IQjAgPSAwOworCXBzcl92c2Muc2RwX2hl YWRlci5IQjEgPSAweDc7CisJcHNyX3ZzYy5zZHBfaGVhZGVyLkhCMiA9IDB4MjsKKwlwc3JfdnNj LnNkcF9oZWFkZXIuSEIzID0gMHg4OworCisJcHNyX3ZzYy5EQjAgPSAwOworCXBzcl92c2MuREIx ID0gMDsKKworCXJldHVybiBhbmFsb2dpeF9kcF9zZW5kX3Bzcl9zcGQoZHAsICZwc3JfdnNjLCB0 cnVlKTsKK30KKwogLyoKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSBiaXQgb2YgYSBjYXRjaC1hbGwg Zm9yIHBhbmVsIHByZXBhcmF0aW9uLCBob3BlZnVsbHkKICAqIHNpbXBsaWZ5aW5nIHRoZSBsb2dp YyBvZiBmdW5jdGlvbnMgdGhhdCBuZWVkIHRvIHByZXBhcmUvdW5wcmVwYXJlIHRoZSBwYW5lbApA QCAtMTE0NSw5ICsxMTUyLDM3IEBAIGFuYWxvZ2l4X2RwX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXJldHVybiBkcC0+ZW5jb2RlcjsKIH0KIAorCitpbnQg YW5hbG9naXhfZHBfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is CisJCQkgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgYW5h bG9naXhfZHBfZGV2aWNlICpkcCA9IHRvX2RwKGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGU7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlOworCisJY29ubl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jb25uZWN0b3Jfc3RhdGUo c3RhdGUsIGNvbm5lY3Rvcik7CisJaWYgKFdBUk5fT04oIWNvbm5fc3RhdGUpKQorCQlyZXR1cm4g LUVOT0RFVjsKKworCWNvbm5fc3RhdGUtPnNlbGZfcmVmcmVzaF9hd2FyZSA9IHRydWU7CisKKwlp ZiAoIWNvbm5fc3RhdGUtPmNydGMpCisJCXJldHVybiAwOworCisJY3J0Y19zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjb25uX3N0YXRlLT5jcnRjKTsKKwlpZiAo IWNydGNfc3RhdGUpCisJCXJldHVybiAwOworCisJaWYgKGNydGNfc3RhdGUtPnNlbGZfcmVmcmVz aF9hY3RpdmUgJiYgIWRwLT5wc3Jfc3VwcG9ydGVkKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJl dHVybiAwOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1 bmNzIGFuYWxvZ2l4X2RwX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgPSB7CiAJLmdldF9tb2RlcyA9 IGFuYWxvZ2l4X2RwX2dldF9tb2RlcywKIAkuYmVzdF9lbmNvZGVyID0gYW5hbG9naXhfZHBfYmVz dF9lbmNvZGVyLAorCS5hdG9taWNfY2hlY2sgPSBhbmFsb2dpeF9kcF9hdG9taWNfY2hlY2ssCiB9 OwogCiBzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cwpAQCAtMTIzOSwxMSArMTI3NCw0 MiBAQCBzdGF0aWMgaW50IGFuYWxvZ2l4X2RwX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9icmlk Z2UgKmJyaWRnZSkKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgYW5hbG9naXhfZHBfYnJp ZGdlX3ByZV9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3N0YXRpYworc3RydWN0 IGRybV9jcnRjICphbmFsb2dpeF9kcF9nZXRfbmV3X2NydGMoc3RydWN0IGFuYWxvZ2l4X2RwX2Rl dmljZSAqZHAsCisJCQkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9IGRwLT5lbmNvZGVyOworCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3Rh dGU7CisKKwljb25uZWN0b3IgPSBkcm1fYXRvbWljX2dldF9uZXdfY29ubmVjdG9yX2Zvcl9lbmNv ZGVyKHN0YXRlLCBlbmNvZGVyKTsKKwlpZiAoIWNvbm5lY3RvcikKKwkJcmV0dXJuIE5VTEw7CisK Kwljb25uX3N0YXRlID0gZHJtX2F0b21pY19nZXRfbmV3X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwg Y29ubmVjdG9yKTsKKwlpZiAoIWNvbm5fc3RhdGUpCisJCXJldHVybiBOVUxMOworCisJcmV0dXJu IGNvbm5fc3RhdGUtPmNydGM7Cit9CisKK3N0YXRpYyB2b2lkIGFuYWxvZ2l4X2RwX2JyaWRnZV9h dG9taWNfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAorCQkJCQkJIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNl ICpkcCA9IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOwor CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CiAJaW50IHJldDsKIAorCWNy dGMgPSBhbmFsb2dpeF9kcF9nZXRfbmV3X2NydGMoZHAsIHN0YXRlKTsKKwlpZiAoIWNydGMpCisJ CXJldHVybjsKKworCW9sZF9jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3Rh dGUoc3RhdGUsIGNydGMpOworCS8qIERvbid0IHRvdWNoIHRoZSBwYW5lbCBpZiB3ZSdyZSBjb21p bmcgYmFjayBmcm9tIFBTUiAqLworCWlmIChvbGRfY3J0Y19zdGF0ZSAmJiBvbGRfY3J0Y19zdGF0 ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkKKwkJcmV0dXJuOworCiAJcmV0ID0gYW5hbG9naXhfZHBf cHJlcGFyZV9wYW5lbChkcCwgdHJ1ZSwgdHJ1ZSk7CiAJaWYgKHJldCkKIAkJRFJNX0VSUk9SKCJm YWlsZWQgdG8gc2V0dXAgdGhlIHBhbmVsIHJldCA9ICVkXG4iLCByZXQpOwpAQCAtMTMwNCwxMCAr MTM3MCwyNyBAQCBzdGF0aWMgaW50IGFuYWxvZ2l4X2RwX3NldF9icmlkZ2Uoc3RydWN0IGFuYWxv Z2l4X2RwX2RldmljZSAqZHApCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIHZvaWQgYW5hbG9n aXhfZHBfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKQorc3RhdGljIHZv aWQgYW5hbG9naXhfZHBfYnJpZGdlX2F0b21pY19lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKKwkJCQkJICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3Ry dWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHAgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOworCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0 YXRlOwogCWludCB0aW1lb3V0X2xvb3AgPSAwOworCWludCByZXQ7CisKKwljcnRjID0gYW5hbG9n aXhfZHBfZ2V0X25ld19jcnRjKGRwLCBzdGF0ZSk7CisJaWYgKCFjcnRjKQorCQlyZXR1cm47CisK KwlvbGRfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X29sZF9jcnRjX3N0YXRlKHN0YXRlLCBj cnRjKTsKKwkvKiBOb3QgYSBmdWxsIGVuYWJsZSwganVzdCBkaXNhYmxlIFBTUiBhbmQgY29udGlu dWUgKi8KKwlpZiAob2xkX2NydGNfc3RhdGUgJiYgb2xkX2NydGNfc3RhdGUtPnNlbGZfcmVmcmVz aF9hY3RpdmUpIHsKKwkJcmV0ID0gYW5hbG9naXhfZHBfZGlzYWJsZV9wc3IoZHApOworCQlpZiAo cmV0KQorCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBwc3IgJWRcbiIsIHJldCk7CisJ CXJldHVybjsKKwl9CiAKIAlpZiAoZHAtPmRwbXNfbW9kZSA9PSBEUk1fTU9ERV9EUE1TX09OKQog CQlyZXR1cm47CkBAIC0xMzU2LDExICsxNDM5LDU2IEBAIHN0YXRpYyB2b2lkIGFuYWxvZ2l4X2Rw X2JyaWRnZV9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCiAJaWYgKHJldCkKIAkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gc2V0dXAgdGhlIHBhbmVsIHJldCA9ICVkXG4iLCByZXQpOwog Ci0JZHAtPnBzcl9lbmFibGUgPSBmYWxzZTsKIAlkcC0+ZmFzdF90cmFpbl9lbmFibGUgPSBmYWxz ZTsKKwlkcC0+cHNyX3N1cHBvcnRlZCA9IGZhbHNlOwogCWRwLT5kcG1zX21vZGUgPSBEUk1fTU9E RV9EUE1TX09GRjsKIH0KIAorc3RhdGljIHZvaWQgYW5hbG9naXhfZHBfYnJpZGdlX2F0b21pY19k aXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQkJCSAgICAgIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCA9 IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUgPSBOVUxMOworCisJY3J0YyA9IGFuYWxv Z2l4X2RwX2dldF9uZXdfY3J0YyhkcCwgc3RhdGUpOworCWlmICghY3J0YykKKwkJZ290byBvdXQ7 CisKKwluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRl LCBjcnRjKTsKKwlpZiAoIW5ld19jcnRjX3N0YXRlKQorCQlnb3RvIG91dDsKKworCS8qIERvbid0 IGRvIGEgZnVsbCBkaXNhYmxlIG9uIFBTUiB0cmFuc2l0aW9ucyAqLworCWlmIChuZXdfY3J0Y19z dGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkKKwkJcmV0dXJuOworCitvdXQ6CisJYW5hbG9naXhf ZHBfYnJpZGdlX2Rpc2FibGUoYnJpZGdlKTsKK30KKworc3RhdGljCit2b2lkIGFuYWxvZ2l4X2Rw X2JyaWRnZV9hdG9taWNfcG9zdF9kaXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJ CQkJCSAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGFuYWxv Z2l4X2RwX2RldmljZSAqZHAgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOworCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOworCWlu dCByZXQ7CisKKwljcnRjID0gYW5hbG9naXhfZHBfZ2V0X25ld19jcnRjKGRwLCBzdGF0ZSk7CisJ aWYgKCFjcnRjKQorCQlyZXR1cm47CisKKwluZXdfY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0 X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwlpZiAoIW5ld19jcnRjX3N0YXRlIHx8ICFu ZXdfY3J0Y19zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkKKwkJcmV0dXJuOworCisJcmV0ID0g YW5hbG9naXhfZHBfZW5hYmxlX3BzcihkcCk7CisJaWYgKHJldCkKKwkJRFJNX0VSUk9SKCJGYWls ZWQgdG8gZW5hYmxlIHBzciAoJWQpXG4iLCByZXQpOworfQorCiBzdGF0aWMgdm9pZCBhbmFsb2dp eF9kcF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKIAkJCQljb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqb3JpZ19tb2RlLAogCQkJCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKQpAQCAtMTQ0MCwxNiArMTU2OCwxMSBAQCBzdGF0aWMgdm9p ZCBhbmFsb2dpeF9kcF9icmlkZ2VfbW9kZV9zZXQoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwK IAkJdmlkZW8tPmludGVybGFjZWQgPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBhbmFsb2dpeF9k cF9icmlkZ2Vfbm9wKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCi17Ci0JLyogZG8gbm90aGlu ZyAqLwotfQotCiBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgYW5hbG9naXhf ZHBfYnJpZGdlX2Z1bmNzID0gewotCS5wcmVfZW5hYmxlID0gYW5hbG9naXhfZHBfYnJpZGdlX3By ZV9lbmFibGUsCi0JLmVuYWJsZSA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9lbmFibGUsCi0JLmRpc2Fi bGUgPSBhbmFsb2dpeF9kcF9icmlkZ2VfZGlzYWJsZSwKLQkucG9zdF9kaXNhYmxlID0gYW5hbG9n aXhfZHBfYnJpZGdlX25vcCwKKwkuYXRvbWljX3ByZV9lbmFibGUgPSBhbmFsb2dpeF9kcF9icmlk Z2VfYXRvbWljX3ByZV9lbmFibGUsCisJLmF0b21pY19lbmFibGUgPSBhbmFsb2dpeF9kcF9icmlk Z2VfYXRvbWljX2VuYWJsZSwKKwkuYXRvbWljX2Rpc2FibGUgPSBhbmFsb2dpeF9kcF9icmlkZ2Vf YXRvbWljX2Rpc2FibGUsCisJLmF0b21pY19wb3N0X2Rpc2FibGUgPSBhbmFsb2dpeF9kcF9icmlk Z2VfYXRvbWljX3Bvc3RfZGlzYWJsZSwKIAkubW9kZV9zZXQgPSBhbmFsb2dpeF9kcF9icmlkZ2Vf bW9kZV9zZXQsCiAJLmF0dGFjaCA9IGFuYWxvZ2l4X2RwX2JyaWRnZV9hdHRhY2gsCiB9OwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3Jl LmggYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL2FuYWxvZ2l4L2FuYWxvZ2l4X2RwX2NvcmUuaApp bmRleCA3NjkyNTVkYzZlOTkuLmQ5MzdmYTNkOWVlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9hbmFsb2dpeC9hbmFsb2dpeF9kcF9jb3JlLmgKQEAgLTE3Myw4ICsxNzMsOCBA QCBzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlIHsKIAlpbnQJCQlkcG1zX21vZGU7CiAJaW50CQkJ aHBkX2dwaW87CiAJYm9vbCAgICAgICAgICAgICAgICAgICAgZm9yY2VfaHBkOwotCWJvb2wJCQlw c3JfZW5hYmxlOwogCWJvb2wJCQlmYXN0X3RyYWluX2VuYWJsZTsKKwlib29sCQkJcHNyX3N1cHBv cnRlZDsKIAogCXN0cnVjdCBtdXRleAkJcGFuZWxfbG9jazsKIAlib29sCQkJcGFuZWxfaXNfbW9k ZXNldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9NYWtlZmlsZQppbmRleCA1MjQ2ODRiYTdmNmEuLjE3YTll N2ViMjEzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2VmaWxlCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9NYWtlZmlsZQpAQCAtNCw4ICs0LDcgQEAKICMg RGlyZWN0IFJlbmRlcmluZyBJbmZyYXN0cnVjdHVyZSAoRFJJKSBpbiBYRnJlZTg2IDQuMS4wIGFu ZCBoaWdoZXIuCiAKIHJvY2tjaGlwZHJtLXkgOj0gcm9ja2NoaXBfZHJtX2Rydi5vIHJvY2tjaGlw X2RybV9mYi5vIFwKLQkJcm9ja2NoaXBfZHJtX2dlbS5vIHJvY2tjaGlwX2RybV9wc3IubyBcCi0J CXJvY2tjaGlwX2RybV92b3AubyByb2NrY2hpcF92b3BfcmVnLm8KKwkJcm9ja2NoaXBfZHJtX2dl bS5vIHJvY2tjaGlwX2RybV92b3AubyByb2NrY2hpcF92b3BfcmVnLm8KIHJvY2tjaGlwZHJtLSQo Q09ORklHX0RSTV9GQkRFVl9FTVVMQVRJT04pICs9IHJvY2tjaGlwX2RybV9mYmRldi5vCiAKIHJv Y2tjaGlwZHJtLSQoQ09ORklHX1JPQ0tDSElQX0FOQUxPR0lYX0RQKSArPSBhbmFsb2dpeF9kcC1y b2NrY2hpcC5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvYW5hbG9naXhf ZHAtcm9ja2NoaXAuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9hbmFsb2dpeF9kcC1yb2Nr Y2hpcC5jCmluZGV4IGJjNDQyMzYyNDIwOS4uMDMxMTg1OTI5YTIyIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvYW5hbG9naXhfZHAtcm9ja2NoaXAuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vcm9ja2NoaXAvYW5hbG9naXhfZHAtcm9ja2NoaXAuYwpAQCAtMjEsNiArMjEsOCBA QAogI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgogCiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKyNpbmNs dWRlIDxkcm0vZHJtX2F0b21pYy5oPgorI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5o PgogI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9vZi5o PgogI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KQEAgLTMyLDcgKzM0LDYgQEAKICNpbmNsdWRl IDxkcm0vYnJpZGdlL2FuYWxvZ2l4X2RwLmg+CiAKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZHJ2 LmgiCi0jaW5jbHVkZSAicm9ja2NoaXBfZHJtX3Bzci5oIgogI2luY2x1ZGUgInJvY2tjaGlwX2Ry bV92b3AuaCIKIAogI2RlZmluZSBSSzMyODhfR1JGX1NPQ19DT042CQkweDI1YwpAQCAtNzcsMjkg Kzc4LDYgQEAgc3RydWN0IHJvY2tjaGlwX2RwX2RldmljZSB7CiAJc3RydWN0IGFuYWxvZ2l4X2Rw X3BsYXRfZGF0YSBwbGF0X2RhdGE7CiB9OwogCi1zdGF0aWMgaW50IGFuYWxvZ2l4X2RwX3Bzcl9z ZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBib29sIGVuYWJsZWQpCi17Ci0Jc3RydWN0 IHJvY2tjaGlwX2RwX2RldmljZSAqZHAgPSB0b19kcChlbmNvZGVyKTsKLQlpbnQgcmV0OwotCi0J aWYgKCFhbmFsb2dpeF9kcF9wc3JfZW5hYmxlZChkcC0+YWRwKSkKLQkJcmV0dXJuIDA7Ci0KLQlE Uk1fREVWX0RFQlVHKGRwLT5kZXYsICIlcyBQU1IuLi5cbiIsIGVuYWJsZWQgPyAiRW50cnkiIDog IkV4aXQiKTsKLQotCXJldCA9IHJvY2tjaGlwX2RybV93YWl0X3ZhY3RfZW5kKGRwLT5lbmNvZGVy LmNydGMsCi0JCQkJCSBQU1JfV0FJVF9MSU5FX0ZMQUdfVElNRU9VVF9NUyk7Ci0JaWYgKHJldCkg ewotCQlEUk1fREVWX0VSUk9SKGRwLT5kZXYsICJsaW5lIGZsYWcgaW50ZXJydXB0IGRpZCBub3Qg YXJyaXZlXG4iKTsKLQkJcmV0dXJuIC1FVElNRURPVVQ7Ci0JfQotCi0JaWYgKGVuYWJsZWQpCi0J CXJldHVybiBhbmFsb2dpeF9kcF9lbmFibGVfcHNyKGRwLT5hZHApOwotCWVsc2UKLQkJcmV0dXJu IGFuYWxvZ2l4X2RwX2Rpc2FibGVfcHNyKGRwLT5hZHApOwotfQotCiBzdGF0aWMgaW50IHJvY2tj aGlwX2RwX3ByZV9pbml0KHN0cnVjdCByb2NrY2hpcF9kcF9kZXZpY2UgKmRwKQogewogCXJlc2V0 X2NvbnRyb2xfYXNzZXJ0KGRwLT5yc3QpOwpAQCAtMTMwLDIxICsxMDgsOSBAQCBzdGF0aWMgaW50 IHJvY2tjaGlwX2RwX3Bvd2Vyb25fc3RhcnQoc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSAq cGxhdF9kYXRhKQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBpbnQgcm9ja2NoaXBfZHBfcG93 ZXJvbl9lbmQoc3RydWN0IGFuYWxvZ2l4X2RwX3BsYXRfZGF0YSAqcGxhdF9kYXRhKQotewotCXN0 cnVjdCByb2NrY2hpcF9kcF9kZXZpY2UgKmRwID0gdG9fZHAocGxhdF9kYXRhKTsKLQotCXJldHVy biByb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfcHV0KCZkcC0+ZW5jb2Rlcik7Ci19Ci0KIHN0YXRp YyBpbnQgcm9ja2NoaXBfZHBfcG93ZXJkb3duKHN0cnVjdCBhbmFsb2dpeF9kcF9wbGF0X2RhdGEg KnBsYXRfZGF0YSkKIHsKIAlzdHJ1Y3Qgcm9ja2NoaXBfZHBfZGV2aWNlICpkcCA9IHRvX2RwKHBs YXRfZGF0YSk7Ci0JaW50IHJldDsKLQotCXJldCA9IHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9n ZXQoJmRwLT5lbmNvZGVyKTsKLQlpZiAocmV0ICE9IDApCi0JCXJldHVybiByZXQ7CiAKIAljbGtf ZGlzYWJsZV91bnByZXBhcmUoZHAtPnBjbGspOwogCkBAIC0xODQsMTIgKzE1MCw0MiBAQCBzdGF0 aWMgdm9pZCByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9tb2RlX3NldChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIsCiAJLyogZG8gbm90aGluZyAqLwogfQogCi1zdGF0aWMgdm9pZCByb2NrY2hp cF9kcF9kcm1fZW5jb2Rlcl9lbmFibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQorc3Rh dGljCitzdHJ1Y3QgZHJtX2NydGMgKnJvY2tjaGlwX2RwX2RybV9nZXRfbmV3X2NydGMoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZTsKKworCWNvbm5lY3RvciA9IGRybV9hdG9t aWNfZ2V0X25ld19jb25uZWN0b3JfZm9yX2VuY29kZXIoc3RhdGUsIGVuY29kZXIpOworCWlmICgh Y29ubmVjdG9yKQorCQlyZXR1cm4gTlVMTDsKKworCWNvbm5fc3RhdGUgPSBkcm1fYXRvbWljX2dl dF9uZXdfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCBjb25uZWN0b3IpOworCWlmICghY29ubl9zdGF0 ZSkKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gY29ubl9zdGF0ZS0+Y3J0YzsKK30KKworc3Rh dGljIHZvaWQgcm9ja2NoaXBfZHBfZHJtX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwKKwkJCQkJICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewog CXN0cnVjdCByb2NrY2hpcF9kcF9kZXZpY2UgKmRwID0gdG9fZHAoZW5jb2Rlcik7CisJc3RydWN0 IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7 CiAJaW50IHJldDsKIAl1MzIgdmFsOwogCisJY3J0YyA9IHJvY2tjaGlwX2RwX2RybV9nZXRfbmV3 X2NydGMoZW5jb2Rlciwgc3RhdGUpOworCWlmICghY3J0YykKKwkJcmV0dXJuOworCisJb2xkX2Ny dGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9vbGRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJ LyogQ29taW5nIGJhY2sgZnJvbSBzZWxmIHJlZnJlc2gsIG5vdGhpbmcgdG8gZG8gKi8KKwlpZiAo b2xkX2NydGNfc3RhdGUgJiYgb2xkX2NydGNfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpCisJ CXJldHVybjsKKwogCXJldCA9IGRybV9vZl9lbmNvZGVyX2FjdGl2ZV9lbmRwb2ludF9pZChkcC0+ ZGV2LT5vZl9ub2RlLCBlbmNvZGVyKTsKIAlpZiAocmV0IDwgMCkKIAkJcmV0dXJuOwpAQCAtMjE0 LDkgKzIxMCwyNyBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9lbmFibGUo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQogCWNsa19kaXNhYmxlX3VucHJlcGFyZShkcC0+ Z3JmY2xrKTsKIH0KIAotc3RhdGljIHZvaWQgcm9ja2NoaXBfZHBfZHJtX2VuY29kZXJfbm9wKHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3N0YXRpYyB2b2lkIHJvY2tjaGlwX2RwX2RybV9l bmNvZGVyX2Rpc2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAorCQkJCQkgICAgc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewotCS8qIGRvIG5vdGhpbmcgKi8KKwlzdHJ1 Y3Qgcm9ja2NoaXBfZHBfZGV2aWNlICpkcCA9IHRvX2RwKGVuY29kZXIpOworCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlID0gTlVM TDsKKwlpbnQgcmV0OworCisJY3J0YyA9IHJvY2tjaGlwX2RwX2RybV9nZXRfbmV3X2NydGMoZW5j b2Rlciwgc3RhdGUpOworCS8qIE5vIGNydGMgbWVhbnMgd2UncmUgZG9pbmcgYSBmdWxsIHNodXRk b3duICovCisJaWYgKCFjcnRjKQorCQlyZXR1cm47CisKKwluZXdfY3J0Y19zdGF0ZSA9IGRybV9h dG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwkvKiBJZiB3ZSdyZSBub3Qg ZW50ZXJpbmcgc2VsZi1yZWZyZXNoLCBubyBuZWVkIHRvIHdhaXQgZm9yIHZhY3QgKi8KKwlpZiAo IW5ld19jcnRjX3N0YXRlIHx8ICFuZXdfY3J0Y19zdGF0ZS0+c2VsZl9yZWZyZXNoX2FjdGl2ZSkK KwkJcmV0dXJuOworCisJcmV0ID0gcm9ja2NoaXBfZHJtX3dhaXRfdmFjdF9lbmQoY3J0YywgUFNS X1dBSVRfTElORV9GTEFHX1RJTUVPVVRfTVMpOworCWlmIChyZXQpCisJCURSTV9ERVZfRVJST1Io ZHAtPmRldiwgImxpbmUgZmxhZyBpcnEgdGltZWQgb3V0XG4iKTsKIH0KIAogc3RhdGljIGludApA QCAtMjQ1LDggKzI1OSw4IEBAIHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2F0b21pY19jaGVjayhz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCiBzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyX2hl bHBlcl9mdW5jcyByb2NrY2hpcF9kcF9lbmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsKIAkubW9kZV9m aXh1cCA9IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX21vZGVfZml4dXAsCiAJLm1vZGVfc2V0ID0g cm9ja2NoaXBfZHBfZHJtX2VuY29kZXJfbW9kZV9zZXQsCi0JLmVuYWJsZSA9IHJvY2tjaGlwX2Rw X2RybV9lbmNvZGVyX2VuYWJsZSwKLQkuZGlzYWJsZSA9IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVy X25vcCwKKwkuYXRvbWljX2VuYWJsZSA9IHJvY2tjaGlwX2RwX2RybV9lbmNvZGVyX2VuYWJsZSwK KwkuYXRvbWljX2Rpc2FibGUgPSByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9kaXNhYmxlLAogCS5h dG9taWNfY2hlY2sgPSByb2NrY2hpcF9kcF9kcm1fZW5jb2Rlcl9hdG9taWNfY2hlY2ssCiB9Owog CkBAIC0zMzgsMjMgKzM1MiwxNiBAQCBzdGF0aWMgaW50IHJvY2tjaGlwX2RwX2JpbmQoc3RydWN0 IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCiAKIAlkcC0+cGxhdF9kYXRhLmRl dl90eXBlID0gZHAtPmRhdGEtPmNoaXBfdHlwZTsKIAlkcC0+cGxhdF9kYXRhLnBvd2VyX29uX3N0 YXJ0ID0gcm9ja2NoaXBfZHBfcG93ZXJvbl9zdGFydDsKLQlkcC0+cGxhdF9kYXRhLnBvd2VyX29u X2VuZCA9IHJvY2tjaGlwX2RwX3Bvd2Vyb25fZW5kOwogCWRwLT5wbGF0X2RhdGEucG93ZXJfb2Zm ID0gcm9ja2NoaXBfZHBfcG93ZXJkb3duOwogCWRwLT5wbGF0X2RhdGEuZ2V0X21vZGVzID0gcm9j a2NoaXBfZHBfZ2V0X21vZGVzOwogCi0JcmV0ID0gcm9ja2NoaXBfZHJtX3Bzcl9yZWdpc3Rlcigm ZHAtPmVuY29kZXIsIGFuYWxvZ2l4X2RwX3Bzcl9zZXQpOwotCWlmIChyZXQgPCAwKQotCQlnb3Rv IGVycl9jbGVhbnVwX2VuY29kZXI7Ci0KIAlkcC0+YWRwID0gYW5hbG9naXhfZHBfYmluZChkZXYs IGRwLT5kcm1fZGV2LCAmZHAtPnBsYXRfZGF0YSk7CiAJaWYgKElTX0VSUihkcC0+YWRwKSkgewog CQlyZXQgPSBQVFJfRVJSKGRwLT5hZHApOwotCQlnb3RvIGVycl91bnJlZ19wc3I7CisJCWdvdG8g ZXJyX2NsZWFudXBfZW5jb2RlcjsKIAl9CiAKIAlyZXR1cm4gMDsKLWVycl91bnJlZ19wc3I6Ci0J cm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVyKCZkcC0+ZW5jb2Rlcik7CiBlcnJfY2xlYW51cF9l bmNvZGVyOgogCWRwLT5lbmNvZGVyLmZ1bmNzLT5kZXN0cm95KCZkcC0+ZW5jb2Rlcik7CiAJcmV0 dXJuIHJldDsKQEAgLTM2Niw3ICszNzMsNiBAQCBzdGF0aWMgdm9pZCByb2NrY2hpcF9kcF91bmJp bmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsCiAJc3RydWN0IHJv Y2tjaGlwX2RwX2RldmljZSAqZHAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKIAogCWFuYWxvZ2l4 X2RwX3VuYmluZChkcC0+YWRwKTsKLQlyb2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIoJmRwLT5l bmNvZGVyKTsKIAlkcC0+ZW5jb2Rlci5mdW5jcy0+ZGVzdHJveSgmZHAtPmVuY29kZXIpOwogCiAJ ZHAtPmFkcCA9IEVSUl9QVFIoLUVOT0RFVik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX2ZiLmMKaW5kZXggMDJlODFjYTJkOTMzLi4yMTQwNjRkNTk5ZWUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2ZiLmMKQEAgLTI0LDcgKzI0LDYgQEAK ICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZHJ2LmgiCiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2Zi LmgiCiAjaW5jbHVkZSAicm9ja2NoaXBfZHJtX2dlbS5oIgotI2luY2x1ZGUgInJvY2tjaGlwX2Ry bV9wc3IuaCIKIAogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3Mgcm9j a2NoaXBfZHJtX2ZiX2Z1bmNzID0gewogCS5kZXN0cm95ICAgICAgID0gZHJtX2dlbV9mYl9kZXN0 cm95LApAQCAtMTIzLDggKzEyMiw2IEBAIHJvY2tjaGlwX2F0b21pY19oZWxwZXJfY29tbWl0X3Rh aWxfcnBtKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IG9sZF9zdGF0ZS0+ZGV2OwogCi0Jcm9ja2NoaXBfZHJtX3Bzcl9pbmhp Yml0X2dldF9zdGF0ZShvbGRfc3RhdGUpOwotCiAJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21v ZGVzZXRfZGlzYWJsZXMoZGV2LCBvbGRfc3RhdGUpOwogCiAJZHJtX2F0b21pY19oZWxwZXJfY29t bWl0X21vZGVzZXRfZW5hYmxlcyhkZXYsIG9sZF9zdGF0ZSk7CkBAIC0xMzIsOCArMTI5LDYgQEAg cm9ja2NoaXBfYXRvbWljX2hlbHBlcl9jb21taXRfdGFpbF9ycG0oc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKm9sZF9zdGF0ZSkKIAlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVzKGRldiwg b2xkX3N0YXRlLAogCQkJCQlEUk1fUExBTkVfQ09NTUlUX0FDVElWRV9PTkxZKTsKIAotCXJvY2tj aGlwX2RybV9wc3JfaW5oaWJpdF9wdXRfc3RhdGUob2xkX3N0YXRlKTsKLQogCWRybV9hdG9taWNf aGVscGVyX2NvbW1pdF9od19kb25lKG9sZF9zdGF0ZSk7CiAKIAlkcm1fYXRvbWljX2hlbHBlcl93 YWl0X2Zvcl92YmxhbmtzKGRldiwgb2xkX3N0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3Bzci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMGM4 YmQyMzViNjcuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX3Bzci5jCisrKyAvZGV2L251bGwKQEAgLTEsMjkwICswLDAgQEAKLS8qCi0gKiBD b3B5cmlnaHQgKEMpIEZ1emhvdSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby5MdGQKLSAqIEF1dGhv cjogWWFraXIgWWFuZyA8eWtrQHJvY2stY2hpcHMuY29tPgotICoKLSAqIFRoaXMgc29mdHdhcmUg aXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLSAq IExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgYW5kCi0gKiBtYXkgYmUgY29waWVkLCBkaXN0cmlidXRlZCwgYW5kIG1vZGlmaWVk IHVuZGVyIHRob3NlIHRlcm1zLgotICoKLSAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAq IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKi8KLQotI2lu Y2x1ZGUgPGRybS9kcm1QLmg+Ci0jaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KLSNpbmNsdWRl IDxkcm0vZHJtX3Byb2JlX2hlbHBlci5oPgotCi0jaW5jbHVkZSAicm9ja2NoaXBfZHJtX2Rydi5o IgotI2luY2x1ZGUgInJvY2tjaGlwX2RybV9wc3IuaCIKLQotI2RlZmluZSBQU1JfRkxVU0hfVElN RU9VVF9NUwkxMDAKLQotc3RydWN0IHBzcl9kcnYgewotCXN0cnVjdCBsaXN0X2hlYWQJbGlzdDsK LQlzdHJ1Y3QgZHJtX2VuY29kZXIJKmVuY29kZXI7Ci0KLQlzdHJ1Y3QgbXV0ZXgJCWxvY2s7Ci0J aW50CQkJaW5oaWJpdF9jb3VudDsKLQlib29sCQkJZW5hYmxlZDsKLQotCXN0cnVjdCBkZWxheWVk X3dvcmsJZmx1c2hfd29yazsKLQotCWludCAoKnNldCkoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLCBib29sIGVuYWJsZSk7Ci19OwotCi1zdGF0aWMgc3RydWN0IHBzcl9kcnYgKmZpbmRfcHNy X2J5X2VuY29kZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXN0cnVjdCByb2Nr Y2hpcF9kcm1fcHJpdmF0ZSAqZHJtX2RydiA9IGVuY29kZXItPmRldi0+ZGV2X3ByaXZhdGU7Ci0J c3RydWN0IHBzcl9kcnYgKnBzcjsKLQotCW11dGV4X2xvY2soJmRybV9kcnYtPnBzcl9saXN0X2xv Y2spOwotCWxpc3RfZm9yX2VhY2hfZW50cnkocHNyLCAmZHJtX2Rydi0+cHNyX2xpc3QsIGxpc3Qp IHsKLQkJaWYgKHBzci0+ZW5jb2RlciA9PSBlbmNvZGVyKQotCQkJZ290byBvdXQ7Ci0JfQotCXBz ciA9IEVSUl9QVFIoLUVOT0RFVik7Ci0KLW91dDoKLQltdXRleF91bmxvY2soJmRybV9kcnYtPnBz cl9saXN0X2xvY2spOwotCXJldHVybiBwc3I7Ci19Ci0KLXN0YXRpYyBpbnQgcHNyX3NldF9zdGF0 ZV9sb2NrZWQoc3RydWN0IHBzcl9kcnYgKnBzciwgYm9vbCBlbmFibGUpCi17Ci0JaW50IHJldDsK LQotCWlmIChwc3ItPmluaGliaXRfY291bnQgPiAwKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWlm IChlbmFibGUgPT0gcHNyLT5lbmFibGVkKQotCQlyZXR1cm4gMDsKLQotCXJldCA9IHBzci0+c2V0 KHBzci0+ZW5jb2RlciwgZW5hYmxlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JcHNy LT5lbmFibGVkID0gZW5hYmxlOwotCXJldHVybiAwOwotfQotCi1zdGF0aWMgdm9pZCBwc3JfZmx1 c2hfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCi17Ci0Jc3RydWN0IHBzcl9kcnYg KnBzciA9IGNvbnRhaW5lcl9vZih0b19kZWxheWVkX3dvcmsod29yayksCi0JCQkJCSAgIHN0cnVj dCBwc3JfZHJ2LCBmbHVzaF93b3JrKTsKLQotCW11dGV4X2xvY2soJnBzci0+bG9jayk7Ci0JcHNy X3NldF9zdGF0ZV9sb2NrZWQocHNyLCB0cnVlKTsKLQltdXRleF91bmxvY2soJnBzci0+bG9jayk7 Ci19Ci0KLS8qKgotICogcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X3B1dCAtIHJlbGVhc2UgUFNS IGluaGliaXQgb24gZ2l2ZW4gZW5jb2RlcgotICogQGVuY29kZXI6IGVuY29kZXIgdG8gb2J0YWlu IHRoZSBQU1IgZW5jb2RlcgotICoKLSAqIERlY3JlbWVudHMgUFNSIGluaGliaXQgY291bnQgb24g Z2l2ZW4gZW5jb2Rlci4gU2hvdWxkIGJlIGNhbGxlZCBvbmx5Ci0gKiBmb3IgYSBQU1IgaW5oaWJp dCBjb3VudCBpbmNyZW1lbnQgZG9uZSBiZWZvcmUuIElmIFBTUiBpbmhpYml0IGNvdW50ZXIKLSAq IHJlYWNoZXMgemVybywgUFNSIGZsdXNoIHdvcmsgaXMgc2NoZWR1bGVkIHRvIG1ha2UgdGhlIGhh cmR3YXJlIGVudGVyCi0gKiBQU1IgbW9kZSBpbiBQU1JfRkxVU0hfVElNRU9VVF9NUy4KLSAqCi0g KiBSZXR1cm5zOgotICogWmVybyBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJl LgotICovCi1pbnQgcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X3B1dChzdHJ1Y3QgZHJtX2VuY29k ZXIgKmVuY29kZXIpCi17Ci0Jc3RydWN0IHBzcl9kcnYgKnBzciA9IGZpbmRfcHNyX2J5X2VuY29k ZXIoZW5jb2Rlcik7Ci0KLQlpZiAoSVNfRVJSKHBzcikpCi0JCXJldHVybiBQVFJfRVJSKHBzcik7 Ci0KLQltdXRleF9sb2NrKCZwc3ItPmxvY2spOwotCS0tcHNyLT5pbmhpYml0X2NvdW50OwotCVdB Uk5fT04ocHNyLT5pbmhpYml0X2NvdW50IDwgMCk7Ci0JaWYgKCFwc3ItPmluaGliaXRfY291bnQp Ci0JCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAmcHNyLT5mbHVzaF93b3JrLAotCQkJCSBQ U1JfRkxVU0hfVElNRU9VVF9NUyk7Ci0JbXV0ZXhfdW5sb2NrKCZwc3ItPmxvY2spOwotCi0JcmV0 dXJuIDA7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQpOwot Ci12b2lkIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9nZXRfc3RhdGUoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQotewotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0Jc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwot CXUzMiBlbmNvZGVyX21hc2sgPSAwOwotCWludCBpOwotCi0JZm9yX2VhY2hfb2xkX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJZW5jb2Rlcl9tYXNrIHw9IGNy dGNfc3RhdGUtPmVuY29kZXJfbWFzazsKLQkJZW5jb2Rlcl9tYXNrIHw9IGNydGMtPnN0YXRlLT5l bmNvZGVyX21hc2s7Ci0JfQotCi0JZHJtX2Zvcl9lYWNoX2VuY29kZXJfbWFzayhlbmNvZGVyLCBz dGF0ZS0+ZGV2LCBlbmNvZGVyX21hc2spCi0JCXJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9nZXQo ZW5jb2Rlcik7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9nZXRf c3RhdGUpOwotCi12b2lkIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXRfc3RhdGUoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQotewotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKLQlz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Ci0Jc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyOwotCXUzMiBlbmNvZGVyX21hc2sgPSAwOwotCWludCBpOwotCi0JZm9yX2VhY2hfb2xk X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJZW5jb2Rlcl9t YXNrIHw9IGNydGNfc3RhdGUtPmVuY29kZXJfbWFzazsKLQkJZW5jb2Rlcl9tYXNrIHw9IGNydGMt PnN0YXRlLT5lbmNvZGVyX21hc2s7Ci0JfQotCi0JZHJtX2Zvcl9lYWNoX2VuY29kZXJfbWFzayhl bmNvZGVyLCBzdGF0ZS0+ZGV2LCBlbmNvZGVyX21hc2spCi0JCXJvY2tjaGlwX2RybV9wc3JfaW5o aWJpdF9wdXQoZW5jb2Rlcik7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfaW5o aWJpdF9wdXRfc3RhdGUpOwotCi0vKioKLSAqIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9nZXQg LSBhY3F1aXJlIFBTUiBpbmhpYml0IG9uIGdpdmVuIGVuY29kZXIKLSAqIEBlbmNvZGVyOiBlbmNv ZGVyIHRvIG9idGFpbiB0aGUgUFNSIGVuY29kZXIKLSAqCi0gKiBJbmNyZW1lbnRzIFBTUiBpbmhp Yml0IGNvdW50IG9uIGdpdmVuIGVuY29kZXIuIFRoaXMgZnVuY3Rpb24gZ3VhcmFudGVlcwotICog dGhhdCBhZnRlciBpdCByZXR1cm5zIFBTUiBpcyB0dXJuZWQgb2ZmIG9uIGdpdmVuIGVuY29kZXIg YW5kIG5vIFBTUi1yZWxhdGVkCi0gKiBoYXJkd2FyZSBzdGF0ZSBjaGFuZ2Ugb2NjdXJzIGF0IGxl YXN0IHVudGlsIGEgbWF0Y2hpbmcgY2FsbCB0bwotICogcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0 X3B1dCgpIGlzIGRvbmUuCi0gKgotICogUmV0dXJuczoKLSAqIFplcm8gb24gc3VjY2VzcywgbmVn YXRpdmUgZXJybm8gb24gZmFpbHVyZS4KLSAqLwotaW50IHJvY2tjaGlwX2RybV9wc3JfaW5oaWJp dF9nZXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQotewotCXN0cnVjdCBwc3JfZHJ2ICpw c3IgPSBmaW5kX3Bzcl9ieV9lbmNvZGVyKGVuY29kZXIpOwotCi0JaWYgKElTX0VSUihwc3IpKQot CQlyZXR1cm4gUFRSX0VSUihwc3IpOwotCi0JbXV0ZXhfbG9jaygmcHNyLT5sb2NrKTsKLQlwc3Jf c2V0X3N0YXRlX2xvY2tlZChwc3IsIGZhbHNlKTsKLQkrK3Bzci0+aW5oaWJpdF9jb3VudDsKLQlt dXRleF91bmxvY2soJnBzci0+bG9jayk7Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZwc3It PmZsdXNoX3dvcmspOwotCi0JcmV0dXJuIDA7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2Ry bV9wc3JfaW5oaWJpdF9nZXQpOwotCi1zdGF0aWMgdm9pZCByb2NrY2hpcF9kcm1fZG9fZmx1c2go c3RydWN0IHBzcl9kcnYgKnBzcikKLXsKLQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJnBzci0+ Zmx1c2hfd29yayk7Ci0KLQltdXRleF9sb2NrKCZwc3ItPmxvY2spOwotCWlmICghcHNyX3NldF9z dGF0ZV9sb2NrZWQocHNyLCBmYWxzZSkpCi0JCW1vZF9kZWxheWVkX3dvcmsoc3lzdGVtX3dxLCAm cHNyLT5mbHVzaF93b3JrLAotCQkJCSBQU1JfRkxVU0hfVElNRU9VVF9NUyk7Ci0JbXV0ZXhfdW5s b2NrKCZwc3ItPmxvY2spOwotfQotCi0vKioKLSAqIHJvY2tjaGlwX2RybV9wc3JfZmx1c2hfYWxs IC0gZm9yY2UgdG8gZmx1c2ggYWxsIHJlZ2lzdGVyZWQgUFNSIGVuY29kZXJzCi0gKiBAZGV2OiBk cm0gZGV2aWNlCi0gKgotICogRGlzYWJsZSB0aGUgUFNSIGZ1bmN0aW9uIGZvciBhbGwgcmVnaXN0 ZXJlZCBlbmNvZGVycywgYW5kIHRoZW4gZW5hYmxlIHRoZQotICogUFNSIGZ1bmN0aW9uIGJhY2sg YWZ0ZXIgUFNSX0ZMVVNIX1RJTUVPVVQuIElmIGVuY29kZXIgUFNSIHN0YXRlIGhhdmUgYmVlbgot ICogY2hhbmdlZCBkdXJpbmcgZmx1c2ggdGltZSwgdGhlbiBrZWVwIHRoZSBzdGF0ZSBubyBjaGFu Z2UgYWZ0ZXIgZmx1c2gKLSAqIHRpbWVvdXQuCi0gKgotICogUmV0dXJuczoKLSAqIFplcm8gb24g c3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KLSAqLwotdm9pZCByb2NrY2hpcF9k cm1fcHNyX2ZsdXNoX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQotewotCXN0cnVjdCByb2Nr Y2hpcF9kcm1fcHJpdmF0ZSAqZHJtX2RydiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IHBz cl9kcnYgKnBzcjsKLQotCW11dGV4X2xvY2soJmRybV9kcnYtPnBzcl9saXN0X2xvY2spOwotCWxp c3RfZm9yX2VhY2hfZW50cnkocHNyLCAmZHJtX2Rydi0+cHNyX2xpc3QsIGxpc3QpCi0JCXJvY2tj aGlwX2RybV9kb19mbHVzaChwc3IpOwotCW11dGV4X3VubG9jaygmZHJtX2Rydi0+cHNyX2xpc3Rf bG9jayk7Ci19Ci1FWFBPUlRfU1lNQk9MKHJvY2tjaGlwX2RybV9wc3JfZmx1c2hfYWxsKTsKLQot LyoqCi0gKiByb2NrY2hpcF9kcm1fcHNyX3JlZ2lzdGVyIC0gcmVnaXN0ZXIgZW5jb2RlciB0byBw c3IgZHJpdmVyCi0gKiBAZW5jb2RlcjogZW5jb2RlciB0aGF0IG9idGFpbiB0aGUgUFNSIGZ1bmN0 aW9uCi0gKiBAcHNyX3NldDogY2FsbCBiYWNrIHRvIHNldCBQU1Igc3RhdGUKLSAqCi0gKiBUaGUg ZnVuY3Rpb24gcmV0dXJucyB3aXRoIFBTUiBpbmhpYml0IGNvdW50ZXIgaW5pdGlhbGl6ZWQgd2l0 aCBvbmUKLSAqIGFuZCB0aGUgY2FsbGVyICh0eXBpY2FsbHkgZW5jb2RlciBkcml2ZXIpIG5lZWRz IHRvIGNhbGwKLSAqIHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQoKSB3aGVuIGl0IGJlY29t ZXMgcmVhZHkgdG8gYWNjZXB0IFBTUgotICogZW5hYmxlIHJlcXVlc3QuCi0gKgotICogUmV0dXJu czoKLSAqIFplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgZXJybm8gb24gZmFpbHVyZS4KLSAqLwot aW50IHJvY2tjaGlwX2RybV9wc3JfcmVnaXN0ZXIoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy LAotCQkJaW50ICgqcHNyX3NldCkoc3RydWN0IGRybV9lbmNvZGVyICosIGJvb2wgZW5hYmxlKSkK LXsKLQlzdHJ1Y3Qgcm9ja2NoaXBfZHJtX3ByaXZhdGUgKmRybV9kcnY7Ci0Jc3RydWN0IHBzcl9k cnYgKnBzcjsKLQotCWlmICghZW5jb2RlciB8fCAhcHNyX3NldCkKLQkJcmV0dXJuIC1FSU5WQUw7 Ci0KLQlkcm1fZHJ2ID0gZW5jb2Rlci0+ZGV2LT5kZXZfcHJpdmF0ZTsKLQotCXBzciA9IGt6YWxs b2Moc2l6ZW9mKHN0cnVjdCBwc3JfZHJ2KSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFwc3IpCi0JCXJl dHVybiAtRU5PTUVNOwotCi0JSU5JVF9ERUxBWUVEX1dPUksoJnBzci0+Zmx1c2hfd29yaywgcHNy X2ZsdXNoX2hhbmRsZXIpOwotCW11dGV4X2luaXQoJnBzci0+bG9jayk7Ci0KLQlwc3ItPmluaGli aXRfY291bnQgPSAxOwotCXBzci0+ZW5hYmxlZCA9IGZhbHNlOwotCXBzci0+ZW5jb2RlciA9IGVu Y29kZXI7Ci0JcHNyLT5zZXQgPSBwc3Jfc2V0OwotCi0JbXV0ZXhfbG9jaygmZHJtX2Rydi0+cHNy X2xpc3RfbG9jayk7Ci0JbGlzdF9hZGRfdGFpbCgmcHNyLT5saXN0LCAmZHJtX2Rydi0+cHNyX2xp c3QpOwotCW11dGV4X3VubG9jaygmZHJtX2Rydi0+cHNyX2xpc3RfbG9jayk7Ci0KLQlyZXR1cm4g MDsKLX0KLUVYUE9SVF9TWU1CT0wocm9ja2NoaXBfZHJtX3Bzcl9yZWdpc3Rlcik7Ci0KLS8qKgot ICogcm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVyIC0gdW5yZWdpc3RlciBlbmNvZGVyIHRvIHBz ciBkcml2ZXIKLSAqIEBlbmNvZGVyOiBlbmNvZGVyIHRoYXQgb2J0YWluIHRoZSBQU1IgZnVuY3Rp b24KLSAqIEBwc3Jfc2V0OiBjYWxsIGJhY2sgdG8gc2V0IFBTUiBzdGF0ZQotICoKLSAqIEl0IGlz IGV4cGVjdGVkIHRoYXQgdGhlIFBTUiBpbmhpYml0IGNvdW50ZXIgaXMgMSB3aGVuIHRoaXMgZnVu Y3Rpb24gaXMKLSAqIGNhbGxlZCwgd2hpY2ggY29ycmVzcG9uZHMgdG8gYSBzdGF0ZSB3aGVuIHJl bGF0ZWQgZW5jb2RlciBoYXMgYmVlbgotICogZGlzY29ubmVjdGVkIGZyb20gYW55IENSVENzIGFu ZCBpdHMgZHJpdmVyIGNhbGxlZAotICogcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X2dldCgpIHRv IHN0b3AgdGhlIFBTUiBsb2dpYy4KLSAqCi0gKiBSZXR1cm5zOgotICogWmVybyBvbiBzdWNjZXNz LCBuZWdhdGl2ZSBlcnJubyBvbiBmYWlsdXJlLgotICovCi12b2lkIHJvY2tjaGlwX2RybV9wc3Jf dW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCi17Ci0Jc3RydWN0IHJvY2tj aGlwX2RybV9wcml2YXRlICpkcm1fZHJ2ID0gZW5jb2Rlci0+ZGV2LT5kZXZfcHJpdmF0ZTsKLQlz dHJ1Y3QgcHNyX2RydiAqcHNyLCAqbjsKLQotCW11dGV4X2xvY2soJmRybV9kcnYtPnBzcl9saXN0 X2xvY2spOwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwc3IsIG4sICZkcm1fZHJ2LT5wc3Jf bGlzdCwgbGlzdCkgewotCQlpZiAocHNyLT5lbmNvZGVyID09IGVuY29kZXIpIHsKLQkJCS8qCi0J CQkgKiBBbnkgb3RoZXIgdmFsdWUgd291bGQgbWVhbiB0aGF0IHRoZSBlbmNvZGVyCi0JCQkgKiBp cyBzdGlsbCBpbiB1c2UuCi0JCQkgKi8KLQkJCVdBUk5fT04ocHNyLT5pbmhpYml0X2NvdW50ICE9 IDEpOwotCi0JCQlsaXN0X2RlbCgmcHNyLT5saXN0KTsKLQkJCWtmcmVlKHBzcik7Ci0JCX0KLQl9 Ci0JbXV0ZXhfdW5sb2NrKCZkcm1fZHJ2LT5wc3JfbGlzdF9sb2NrKTsKLX0KLUVYUE9SVF9TWU1C T0wocm9ja2NoaXBfZHJtX3Bzcl91bnJlZ2lzdGVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fcHNyLmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3Bzci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTM1 MGJhMzIzN2IuLjAwMDAwMDAwMDAwMAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9j a2NoaXBfZHJtX3Bzci5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoKLSAqIENv cHlyaWdodCAoQykgRnV6aG91IFJvY2tjaGlwIEVsZWN0cm9uaWNzIENvLkx0ZAotICogQXV0aG9y OiBZYWtpciBZYW5nIDx5a2tAcm9jay1jaGlwcy5jb20+Ci0gKgotICogVGhpcyBzb2Z0d2FyZSBp cyBsaWNlbnNlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotICog TGljZW5zZSB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBhbmQKLSAqIG1heSBiZSBjb3BpZWQsIGRpc3RyaWJ1dGVkLCBhbmQgbW9kaWZpZWQg dW5kZXIgdGhvc2UgdGVybXMuCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotICog R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqLwotCi0jaWZu ZGVmIF9fUk9DS0NISVBfRFJNX1BTUl9fXwotI2RlZmluZSBfX1JPQ0tDSElQX0RSTV9QU1JfX18K LQotdm9pZCByb2NrY2hpcF9kcm1fcHNyX2ZsdXNoX2FsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKLQotaW50IHJvY2tjaGlwX2RybV9wc3JfaW5oaWJpdF9wdXQoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKTsKLWludCByb2NrY2hpcF9kcm1fcHNyX2luaGliaXRfZ2V0KHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2Rlcik7Ci0KLXZvaWQgcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X2dldF9z dGF0ZShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwotdm9pZCByb2NrY2hpcF9kcm1f cHNyX2luaGliaXRfcHV0X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7Ci0K LWludCByb2NrY2hpcF9kcm1fcHNyX3JlZ2lzdGVyKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwKLQkJCWludCAoKnBzcl9zZXQpKHN0cnVjdCBkcm1fZW5jb2RlciAqLCBib29sIGVuYWJsZSkp Owotdm9pZCByb2NrY2hpcF9kcm1fcHNyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9lbmNvZGVyICpl bmNvZGVyKTsKLQotI2VuZGlmIC8qIF9fUk9DS0NISVBfRFJNX1BTUl9fICovCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jIGIvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYwppbmRleCBlNTkwZmEwYmIwMmIuLmY4 OWQ0MTQyNWJlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlw X2RybV92b3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3Zv cC5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJf aGVscGVyLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KICNpbmNsdWRlIDxk cm0vZHJtX3Byb2JlX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fc2VsZl9yZWZyZXNoX2hl bHBlci5oPgogI2lmZGVmIENPTkZJR19EUk1fQU5BTE9HSVhfRFAKICNpbmNsdWRlIDxkcm0vYnJp ZGdlL2FuYWxvZ2l4X2RwLmg+CiAjZW5kaWYKQEAgLTQyLDEwICs0MywxMSBAQAogI2luY2x1ZGUg InJvY2tjaGlwX2RybV9kcnYuaCIKICNpbmNsdWRlICJyb2NrY2hpcF9kcm1fZ2VtLmgiCiAjaW5j bHVkZSAicm9ja2NoaXBfZHJtX2ZiLmgiCi0jaW5jbHVkZSAicm9ja2NoaXBfZHJtX3Bzci5oIgog I2luY2x1ZGUgInJvY2tjaGlwX2RybV92b3AuaCIKICNpbmNsdWRlICJyb2NrY2hpcF9yZ2IuaCIK IAorI2RlZmluZSBWT1BfU0VMRl9SRUZSRVNIX0VOVFJZX0RFTEFZX01TIDEwMAorCiAjZGVmaW5l IFZPUF9XSU5fU0VUKHZvcCwgd2luLCBuYW1lLCB2KSBcCiAJCXZvcF9yZWdfc2V0KHZvcCwgJndp bi0+cGh5LT5uYW1lLCB3aW4tPmJhc2UsIH4wLCB2LCAjbmFtZSkKICNkZWZpbmUgVk9QX1NDTF9T RVQodm9wLCB3aW4sIG5hbWUsIHYpIFwKQEAgLTU1Myw3ICs1NTUsNyBAQCBzdGF0aWMgdm9pZCB2 b3Bfd2luX2Rpc2FibGUoc3RydWN0IHZvcCAqdm9wLCBjb25zdCBzdHJ1Y3Qgdm9wX3dpbl9kYXRh ICp3aW4pCiAJVk9QX1dJTl9TRVQodm9wLCB3aW4sIGVuYWJsZSwgMCk7CiB9CiAKLXN0YXRpYyBp bnQgdm9wX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCitzdGF0aWMgaW50IHZvcF9lbmFi bGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0 ZSkKIHsKIAlzdHJ1Y3Qgdm9wICp2b3AgPSB0b192b3AoY3J0Yyk7CiAJaW50IHJldCwgaTsKQEAg LTU5MywxMiArNTk1LDE4IEBAIHN0YXRpYyBpbnQgdm9wX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAJICogV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBhbGwgd2luZG93cyBhcmUgZGlz YWJsZWQgYmVmb3JlIHdlCiAJICogZW5hYmxlIHRoZSBjcnRjLiBPdGhlcndpc2Ugd2UgbWlnaHQg dHJ5IHRvIHNjYW4gZnJvbSBhIGRlc3Ryb3llZAogCSAqIGJ1ZmZlciBsYXRlci4KKwkgKgorCSAq IEluIHRoZSBjYXNlIG9mIGVuYWJsZS1hZnRlci1QU1IsIHdlIGRvbid0IG5lZWQgdG8gd29ycnkg YWJvdXQgdGhpcworCSAqIGNhc2Ugc2luY2UgdGhlIGJ1ZmZlciBpcyBndWFyYW50ZWVkIHRvIGJl IHZhbGlkIGFuZCBkaXNhYmxpbmcgdGhlCisJICogd2luZG93IHdpbGwgcmVzdWx0IGluIHNjcmVl biBnbGl0Y2hlcyBvbiBQU1IgZXhpdC4KIAkgKi8KLQlmb3IgKGkgPSAwOyBpIDwgdm9wLT5kYXRh LT53aW5fc2l6ZTsgaSsrKSB7Ci0JCXN0cnVjdCB2b3Bfd2luICp2b3Bfd2luID0gJnZvcC0+d2lu W2ldOwotCQljb25zdCBzdHJ1Y3Qgdm9wX3dpbl9kYXRhICp3aW4gPSB2b3Bfd2luLT5kYXRhOwor CWlmICghb2xkX3N0YXRlIHx8ICFvbGRfc3RhdGUtPnNlbGZfcmVmcmVzaF9hY3RpdmUpIHsKKwkJ Zm9yIChpID0gMDsgaSA8IHZvcC0+ZGF0YS0+d2luX3NpemU7IGkrKykgeworCQkJc3RydWN0IHZv cF93aW4gKnZvcF93aW4gPSAmdm9wLT53aW5baV07CisJCQljb25zdCBzdHJ1Y3Qgdm9wX3dpbl9k YXRhICp3aW4gPSB2b3Bfd2luLT5kYXRhOwogCi0JCXZvcF93aW5fZGlzYWJsZSh2b3AsIHdpbik7 CisJCQl2b3Bfd2luX2Rpc2FibGUodm9wLCB3aW4pOworCQl9CiAJfQogCXNwaW5fdW5sb2NrKCZ2 b3AtPnJlZ19sb2NrKTsKIApAQCAtNjM2LDYgKzY0NCwxMiBAQCBzdGF0aWMgdm9pZCB2b3BfY3J0 Y19hdG9taWNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJV0FSTl9PTih2b3AtPmV2 ZW50KTsKIAogCW11dGV4X2xvY2soJnZvcC0+dm9wX2xvY2spOworCisJaWYgKCF2b3AtPmlzX2Vu YWJsZWQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZ2b3AtPnZvcF9sb2NrKTsKKwkJcmV0dXJuOworCX0K KwogCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7CiAKIAkvKgpAQCAtOTQ5LDEyICs5NjMsMTAg QEAgc3RhdGljIHZvaWQgdm9wX3BsYW5lX2F0b21pY19hc3luY191cGRhdGUoc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsCiAJfQogCiAJaWYgKHZvcC0+aXNfZW5hYmxlZCkgewotCQlyb2NrY2hpcF9k cm1fcHNyX2luaGliaXRfZ2V0X3N0YXRlKG5ld19zdGF0ZS0+c3RhdGUpOwogCQl2b3BfcGxhbmVf YXRvbWljX3VwZGF0ZShwbGFuZSwgcGxhbmUtPnN0YXRlKTsKIAkJc3Bpbl9sb2NrKCZ2b3AtPnJl Z19sb2NrKTsKIAkJdm9wX2NmZ19kb25lKHZvcCk7CiAJCXNwaW5fdW5sb2NrKCZ2b3AtPnJlZ19s b2NrKTsKLQkJcm9ja2NoaXBfZHJtX3Bzcl9pbmhpYml0X3B1dF9zdGF0ZShuZXdfc3RhdGUtPnN0 YXRlKTsKIAl9CiAKIAlwbGFuZS0+ZnVuY3MtPmF0b21pY19kZXN0cm95X3N0YXRlKHBsYW5lLCBw bGFuZV9zdGF0ZSk7CkBAIC0xMDQ4LDcgKzEwNjAsNyBAQCBzdGF0aWMgdm9pZCB2b3BfY3J0Y19h dG9taWNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCVdBUk5fT04odm9wLT5ldmVu dCk7CiAKLQlyZXQgPSB2b3BfZW5hYmxlKGNydGMpOworCXJldCA9IHZvcF9lbmFibGUoY3J0Yywg b2xkX3N0YXRlKTsKIAlpZiAocmV0KSB7CiAJCW11dGV4X3VubG9jaygmdm9wLT52b3BfbG9jayk7 CiAJCURSTV9ERVZfRVJST1Iodm9wLT5kZXYsICJGYWlsZWQgdG8gZW5hYmxlIHZvcCAoJWQpXG4i LCByZXQpOwpAQCAtMTUzMCw2ICsxNTQyLDEzIEBAIHN0YXRpYyBpbnQgdm9wX2NyZWF0ZV9jcnRj KHN0cnVjdCB2b3AgKnZvcCkKIAlpbml0X2NvbXBsZXRpb24oJnZvcC0+bGluZV9mbGFnX2NvbXBs ZXRpb24pOwogCWNydGMtPnBvcnQgPSBwb3J0OwogCisJcmV0ID0gZHJtX3NlbGZfcmVmcmVzaF9o ZWxwZXJfaW5pdChjcnRjLAorCQkJCQkgICBWT1BfU0VMRl9SRUZSRVNIX0VOVFJZX0RFTEFZX01T KTsKKwlpZiAocmV0KQorCQlEUk1fREVWX0RFQlVHX0tNUyh2b3AtPmRldiwKKwkJCSJGYWlsZWQg dG8gaW5pdCAlcyB3aXRoIFNSIGhlbHBlcnMgJWQsIGlnbm9yaW5nXG4iLAorCQkJY3J0Yy0+bmFt ZSwgcmV0KTsKKwogCXJldHVybiAwOwogCiBlcnJfY2xlYW51cF9jcnRjOgpAQCAtMTU0Nyw2ICsx NTY2LDggQEAgc3RhdGljIHZvaWQgdm9wX2Rlc3Ryb3lfY3J0YyhzdHJ1Y3Qgdm9wICp2b3ApCiAJ c3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSB2b3AtPmRybV9kZXY7CiAJc3RydWN0IGRybV9w bGFuZSAqcGxhbmUsICp0bXA7CiAKKwlkcm1fc2VsZl9yZWZyZXNoX2hlbHBlcl9jbGVhbnVwKGNy dGMpOworCiAJb2Zfbm9kZV9wdXQoY3J0Yy0+cG9ydCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vYnJpZGdlL2FuYWxvZ2l4X2RwLmggYi9pbmNsdWRlL2RybS9icmlkZ2UvYW5hbG9n aXhfZHAuaAppbmRleCA0NzViNzA2YjQ5ZGUuLjdjNWMxMzgwMzY3MyAxMDA2NDQKLS0tIGEvaW5j bHVkZS9kcm0vYnJpZGdlL2FuYWxvZ2l4X2RwLmgKKysrIGIvaW5jbHVkZS9kcm0vYnJpZGdlL2Fu YWxvZ2l4X2RwLmgKQEAgLTQyLDEwICs0Miw2IEBAIHN0cnVjdCBhbmFsb2dpeF9kcF9wbGF0X2Rh dGEgewogCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICopOwogfTsKIAotaW50IGFuYWxvZ2l4X2Rw X3Bzcl9lbmFibGVkKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKTsKLWludCBhbmFsb2dp eF9kcF9lbmFibGVfcHNyKHN0cnVjdCBhbmFsb2dpeF9kcF9kZXZpY2UgKmRwKTsKLWludCBhbmFs b2dpeF9kcF9kaXNhYmxlX3BzcihzdHJ1Y3QgYW5hbG9naXhfZHBfZGV2aWNlICpkcCk7Ci0KIGlu dCBhbmFsb2dpeF9kcF9yZXN1bWUoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApOwogaW50 IGFuYWxvZ2l4X2RwX3N1c3BlbmQoc3RydWN0IGFuYWxvZ2l4X2RwX2RldmljZSAqZHApOwogCi0t IApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVyLCBHb29nbGUgLyBDaHJvbWl1bSBPUwoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs