From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Zhong Subject: [v1 PATCH 4/4] drm/rockchip: cdn-dp: add cdn DP support for rk3399 Date: Fri, 3 Jun 2016 23:15:11 +0800 Message-ID: <1464966911-18949-5-git-send-email-zyw@rock-chips.com> References: <1464966911-18949-1-git-send-email-zyw@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1464966911-18949-1-git-send-email-zyw@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dianders@chromium.org, tfiga@chromium.org, heiko@sntech.de, yzq@rock-chips.com Cc: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-rockchip@lists.infradead.org, Chris Zhong , linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org QWRkIHN1cHBvcnQgZm9yIGNkbiBEUCBjb250cm9sbGVyIHdoaWNoIGlzIGVtYmVkZGVkIGluIHRo ZSByazMzOTkKU29Dcy4gVGhlIERQIGlzIGNvbXBsaWFudCB3aXRoIERpc3BsYXlQb3J0IFNwZWNp ZmljYXRpb24sClZlcnNpb24gMS4zLCBUaGlzIElQIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgcm9j a2NoaXAgdHlwZS1jIFBIWSBJUC4KVGhlcmUgaXMgYSB1Q1BVIGluIERQIGNvbnRyb2xsZXIsIGl0 IG5lZWQgYSBmaXJtd2FyZSB0byB3b3JrLApwbGVhc2UgcHV0IHRoZSBmaXJtd2FyZSBmaWxlIHRv IC9saWIvZmlybXdhcmUvY2RuL2RwdHguYmluLiBUaGUKdUNQVSBpbiBjaGFyZ2Ugb2YgYXV4IGNv bW11bmljYXRpb24gYW5kIGxpbmsgdHJhaW5pbmcsIHRoZSBob3N0IHVzZQptYWlsYm94IHRvIGNv bW11bmljYXRlIHdpdGggdGhlIHVjcHUuClRoZSBkY2xrIHBpbl9wb2wgb2Ygdm9wIG11c3Qgbm90 IGJlIGludmVydCBmb3IgRFAuCgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBaaG9uZyA8enl3QHJvY2st Y2hpcHMuY29tPgoKLS0tCgpDaGFuZ2VzIGluIHYxOgotIHVzZSBleHRjb24gQVBJCi0gdXNlIGhk bWktY29kZWMgZm9yIHRoZSBEUCBBc29jCi0gZG8gbm90IGluaXRpYWxpemUgdGhlICJyZXQiCi0g cHJpbnRrIGEgZXJyIGxvZyB3aGVuIGRybV9vZl9lbmNvZGVyX2FjdGl2ZV9lbmRwb2ludF9pZAot IG1vZGlmeSB0aGUgZGNsayBwaW5fcG9sIHRvIGEgc2luZ2xlIGxpbmUKCiBkcml2ZXJzL2dwdS9k cm0vcm9ja2NoaXAvS2NvbmZpZyAgICAgICAgICAgIHwgICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL3JvY2tj aGlwL2Nkbi1kcC1jb3JlLmMgICAgICB8IDcwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysK IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtY29yZS5oICAgICAgfCAxMTAgKysrKysK IGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9jZG4tZHAtcmVnLmMgICAgICAgfCA3MjEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1y ZWcuaCAgICAgICB8IDQwNCArKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX3ZvcC5jIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv cm9ja2NoaXBfZHJtX3ZvcC5oIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2Nr Y2hpcF92b3BfcmVnLmMgfCAgIDIgKwogOSBmaWxlcyBjaGFuZ2VkLCAxOTYzIGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvY2RuLWRwLWNvcmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9jZG4tZHAtY29yZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L3JvY2tjaGlwL2Nkbi1kcC1yZWcuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9jZG4tZHAtcmVnLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9LY29uZmlnCmluZGV4IGQz MGJkYzMuLjIwZGE5YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9LY29u ZmlnCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9LY29uZmlnCkBAIC0yNSw2ICsyNSwx NSBAQCBjb25maWcgUk9DS0NISVBfQU5BTE9HSVhfRFAKIAkgIGZvciB0aGUgQW5hbG9naXggQ29y ZSBEUCBkcml2ZXIuIElmIHlvdSB3YW50IHRvIGVuYWJsZSBEUAogCSAgb24gUkszMjg4IGJhc2Vk IFNvQywgeW91IHNob3VsZCBzZWxldCB0aGlzIG9wdGlvbi4KIAorY29uZmlnIFJPQ0tDSElQX0NE Tl9EUAorICAgICAgICB0cmlzdGF0ZSAiUm9ja2NoaXAgY2RuIERQIgorICAgICAgICBkZXBlbmRz IG9uIERSTV9ST0NLQ0hJUAorICAgICAgICBoZWxwCisJICBUaGlzIHNlbGVjdHMgc3VwcG9ydCBm b3IgUm9ja2NoaXAgU29DIHNwZWNpZmljIGV4dGVuc2lvbnMKKwkgIGZvciB0aGUgY2RuIERwIGRy aXZlci4gSWYgeW91IHdhbnQgdG8gZW5hYmxlIERwIG9uCisJICBSSzMzOTkgYmFzZWQgU29DLCB5 b3Ugc2hvdWxkIHNlbGV0IHRoaXMKKwkgIG9wdGlvbi4KKwogY29uZmlnIFJPQ0tDSElQX0RXX0hE TUkKICAgICAgICAgdHJpc3RhdGUgIlJvY2tjaGlwIHNwZWNpZmljIGV4dGVuc2lvbnMgZm9yIFN5 bm9wc3lzIERXIEhETUkiCiAgICAgICAgIGRlcGVuZHMgb24gRFJNX1JPQ0tDSElQCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvTWFrZWZpbGUKaW5kZXggMDVkMDcxMy4uYWJkZWNkNSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9NYWtlZmlsZQpAQCAtNyw2ICs3LDcgQEAgcm9ja2NoaXBkcm0teSA6PSByb2NrY2hpcF9k cm1fZHJ2Lm8gcm9ja2NoaXBfZHJtX2ZiLm8gXAogcm9ja2NoaXBkcm0tJChDT05GSUdfRFJNX0ZC REVWX0VNVUxBVElPTikgKz0gcm9ja2NoaXBfZHJtX2ZiZGV2Lm8KIAogb2JqLSQoQ09ORklHX1JP Q0tDSElQX0FOQUxPR0lYX0RQKSArPSBhbmFsb2dpeF9kcC1yb2NrY2hpcC5vCitvYmotJChDT05G SUdfUk9DS0NISVBfQ0ROX0RQKSArPSBjZG4tZHAtY29yZS5vIGNkbi1kcC1yZWcubwogb2JqLSQo Q09ORklHX1JPQ0tDSElQX0RXX0hETUkpICs9IGR3X2hkbWktcm9ja2NoaXAubwogb2JqLSQoQ09O RklHX1JPQ0tDSElQX0RXX01JUElfRFNJKSArPSBkdy1taXBpLWRzaS5vCiBvYmotJChDT05GSUdf Uk9DS0NISVBfSU5OT19IRE1JKSArPSBpbm5vX2hkbWkubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAv Y2RuLWRwLWNvcmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTFlNjVh Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1jb3Jl LmMKQEAgLTAsMCArMSw3MDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIEZ1emhvdSBSb2NrY2hp cCBFbGVjdHJvbmljcyBDby5MdGQKKyAqIEF1dGhvcjogQ2hyaXMgWmhvbmcgPHp5d0Byb2NrLWNo aXBzLmNvbT4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24gMiwgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAorICogbWF5IGJlIGNv cGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJtcy4KKyAqCisg KiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxw ZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2RwX2hlbHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1f ZWRpZC5oPgorI2luY2x1ZGUgPGRybS9kcm1fb2YuaD4KKworI2luY2x1ZGUgPGxpbnV4L2NvbXBv bmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L2V4dGNvbi5o PgorI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nv bi5oPgorI2luY2x1ZGUgPGxpbnV4L3BoeS9waHkuaD4KKyNpbmNsdWRlIDxsaW51eC9waHkvcGh5 LXJvY2tjaGlwLXR5cGVjLmg+CisjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+CisjaW5jbHVkZSA8 bGludXgvcmVzZXQuaD4KKyNpbmNsdWRlIDxzb3VuZC9oZG1pLWNvZGVjLmg+CisKKyNpbmNsdWRl IDx2aWRlby9vZl92aWRlb21vZGUuaD4KKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4KKwor I2luY2x1ZGUgInJvY2tjaGlwX2RybV92b3AuaCIKKyNpbmNsdWRlICJjZG4tZHAtcmVnLmgiCisj aW5jbHVkZSAiY2RuLWRwLWNvcmUuaCIKKworI2RlZmluZSBjb25uZWN0b3JfdG9fZHAoYykgXAor CQljb250YWluZXJfb2YoYywgc3RydWN0IGNkbl9kcF9kZXZpY2UsIGNvbm5lY3RvcikKKworI2Rl ZmluZSBlbmNvZGVyX3RvX2RwKGMpIFwKKwkJY29udGFpbmVyX29mKGMsIHN0cnVjdCBjZG5fZHBf ZGV2aWNlLCBlbmNvZGVyKQorCisvKiBkcCBncmYgcmVnaXN0ZXIgb2Zmc2V0ICovCisjZGVmaW5l IERQX1ZPUF9TRUwJCTB4NjIyNAorI2RlZmluZSBEUF9TRUxfVk9QX0xJVAkJQklUKDEyKQorCitz dGF0aWMgaW50IGNkbl9kcF9jbGtfZW5hYmxlKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkKK3sK KwlpbnQgcmV0OworCWludCBjbGtfcmF0ZSA9IDIwMDAwMDAwMDsKKworCXJldCA9IGNsa19wcmVw YXJlX2VuYWJsZShkcC0+cGNsayk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkcC0+ZGV2 LCAiY2Fubm90IGVuYWJsZSBkcCBwY2xrICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9wY2xrOwor CX0KKworCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShkcC0+Y29yZV9jbGspOworCWlmIChyZXQg PCAwKSB7CisJCWRldl9lcnIoZHAtPmRldiwgImNhbm5vdCBlbmFibGUgY29yZV9jbGsgJWRcbiIs IHJldCk7CisJCWdvdG8gZXJyX2NvcmVfY2xrOworCX0KKworCXJldCA9IGNsa19zZXRfcmF0ZShk cC0+Y29yZV9jbGssIGNsa19yYXRlKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRwLT5k ZXYsICJjYW5ub3Qgc2V0IGRwIGNvcmUgY2xrIHRvICVkICVkXG4iLAorCQkJY2xrX3JhdGUsIHJl dCk7CisJCWdvdG8gZXJyX3NldF9yYXRlOworCX0KKworCS8qIG5vdGljZSBmdyB0aGUgY2xrIGZy ZXEgdmFsdWUgKi8KKwljZG5fZHBfc2V0X2Z3X2NsayhkcCwgY2xrX3JhdGUpOworCisJcmV0dXJu IDA7CisKK2Vycl9zZXRfcmF0ZToKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHAtPmNvcmVfY2xr KTsKK2Vycl9jb3JlX2NsazoKKwljbGtfZGlzYWJsZV91bnByZXBhcmUoZHAtPnBjbGspOworZXJy X3BjbGs6CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0 dXMKK2Nkbl9kcF9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IsIGJvb2wgZm9yY2UpCit7CisJc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwID0gY29ubmVjdG9y X3RvX2RwKGNvbm5lY3Rvcik7CisJaW50IHJldDsKKworCWlmICghZHAtPmZ3X2xvYWRlZCkKKwkJ cmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfdW5rbm93bjsKKworCXJldCA9IGNkbl9kcF9nZXRfaHBk X3N0YXR1cyhkcCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBjb25uZWN0b3Jfc3RhdHVzX3Vu a25vd247CisKKwlyZXR1cm4gcmV0ID8gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgOiBjb25u ZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKK30KKworc3RhdGljIHZvaWQgY2RuX2RwX2Nvbm5l Y3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJZHJtX2Nv bm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7CisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNv bm5lY3Rvcik7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBjZG5fZHBf YXRvbWljX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKKwkuZHBtcyA9IGRybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9kcG1zLAorCS5kZXRlY3QgPSBjZG5fZHBfY29ubmVjdG9yX2RldGVjdCwKKwkuZGVz dHJveSA9IGNkbl9kcF9jb25uZWN0b3JfZGVzdHJveSwKKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxw ZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKKwkucmVzZXQgPSBkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfcmVzZXQsCisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRv bWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9taWNfZGVzdHJveV9z dGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAorfTsKKwor c3RhdGljIGludCBjZG5fZHBfY29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCA9IGNvbm5lY3Rvcl90 b19kcChjb25uZWN0b3IpOworCXN0cnVjdCBlZGlkICplZGlkOworCWludCByZXQ7CisKKwlpZiAo IWRwLT5md19sb2FkZWQpCisJCXJldHVybiAwOworCisJcmV0ID0gY2RuX2RwX3NldF9ob3N0X2Nh cChkcCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRwLT5kZXYsICJzZXQgaG9zdCBjYXBhYmls aXRpZXMgZmFpbGVkOiVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWVkaWQgPSBk cm1fZG9fZ2V0X2VkaWQoY29ubmVjdG9yLCBjZG5fZHBfZ2V0X2VkaWRfYmxvY2ssIGRwKTsKKwlp ZiAoZWRpZCkgeworCQlkZXZfZGJnKGRwLT5kZXYsICJnb3QgZWRpZDogd2lkdGhbJWRdIHggaGVp Z2h0WyVkXVxuIiwKKwkJCWVkaWQtPndpZHRoX2NtLCBlZGlkLT5oZWlnaHRfY20pOworCisJCWRw LT5zaW5rX2hhc19hdWRpbyA9IGRybV9kZXRlY3RfbW9uaXRvcl9hdWRpbyhlZGlkKTsKKwkJZHJt X21vZGVfY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5KGNvbm5lY3RvciwgZWRpZCk7CisJ CWRybV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOworCQkvKiBTdG9yZSB0aGUgRUxE ICovCisJCWRybV9lZGlkX3RvX2VsZChjb25uZWN0b3IsIGVkaWQpOworCQlrZnJlZShlZGlkKTsK Kwl9IGVsc2UgeworCQlkZXZfZGJnKGRwLT5kZXYsICJmYWlsZWQgdG8gZ2V0IGVkaWRcbiIpOwor CX0KKworCS8qCisJICogcHV0IHRoZSB0cmFpbmluZyBwcm9jZXNzIGhlcmUsIHNpbmNlIHRoZSBt b2RlX3ZhbGlkIG5lZWQgdGhlCisJICogdHJhaW5pbmcgcmVzdWx0IHRvIGNoZWNrIGlmIHRoZSBy ZXNvbHV0aW9uIGlzIHN1cHBvcnQuCisJICovCisJcmV0ID0gY2RuX2RwX3RyYWluaW5nX3N0YXJ0 KGRwKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZHAtPmRldiwgImh3IGx0IGVycjolZFxuIiwg cmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBjZG5fZHBfZ2V0X2x0X3N0YXR1cyhk cCk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRwLT5kZXYsICJodyBsdCBnZXQgc3RhdHVzIGVy cjolZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkZXZfaW5mbyhkcC0+ZGV2LCAi cmF0ZTolZCwgbGFuZXM6JWRcbiIsCisJCSBkcC0+bGluay5yYXRlLCBkcC0+bGluay5udW1fbGFu ZXMpOworCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoKKwljZG5f ZHBfY29ubmVjdG9yX2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y KQoreworCXN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCA9IGNvbm5lY3Rvcl90b19kcChjb25uZWN0 b3IpOworCisJcmV0dXJuICZkcC0+ZW5jb2RlcjsKK30KKworc3RhdGljIGludCBjZG5fZHBfY29u bmVjdG9yX21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkg ICAgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJc3RydWN0IGNkbl9kcF9k ZXZpY2UgKmRwID0gY29ubmVjdG9yX3RvX2RwKGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9kaXNw bGF5X2luZm8gKmRpc3BsYXlfaW5mbyA9ICZkcC0+Y29ubmVjdG9yLmRpc3BsYXlfaW5mbzsKKwls b25nIHJlcXVlc3RlZCA9IG1vZGUtPmNsb2NrICogZGlzcGxheV9pbmZvLT5icGMgKiAzIC8gMTAw MDsKKwlsb25nIGFjdHVhbCwgcmF0ZTsKKworCXJhdGUgPSBkcm1fZHBfYndfY29kZV90b19saW5r X3JhdGUoZHAtPmxpbmsucmF0ZSk7CisJYWN0dWFsID0gcmF0ZSAqIGRwLT5saW5rLm51bV9sYW5l cyAvIDEwMDsKKworCS8qIGVmZmljaWVuY3kgaXMgYWJvdXQgMC44ICovCisJYWN0dWFsID0gYWN0 dWFsICogOCAvIDEwOworCisJaWYgKHJlcXVlc3RlZCA+IGFjdHVhbCkgeworCQlkZXZfZGJnKGRw LT5kZXYsICJyZXF1ZXN0ZWQ9JWxkLCBhY3R1YWw9JWxkLCBjbG9jaz0lZCwgYnBjPSAlZFxuIiwK KwkJCXJlcXVlc3RlZCwgYWN0dWFsLCBtb2RlLT5jbG9jaywgZGlzcGxheV9pbmZvLT5icGMpOwor CQlyZXR1cm4gTU9ERV9IX0lMTEVHQUw7CisJfQorCisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0 YXRpYyBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgY2RuX2RwX2Nvbm5lY3Rvcl9o ZWxwZXJfZnVuY3MgPSB7CisJLmdldF9tb2RlcyA9IGNkbl9kcF9jb25uZWN0b3JfZ2V0X21vZGVz LAorCS5iZXN0X2VuY29kZXIgPSBjZG5fZHBfY29ubmVjdG9yX2Jlc3RfZW5jb2RlciwKKwkubW9k ZV92YWxpZCA9IGNkbl9kcF9jb25uZWN0b3JfbW9kZV92YWxpZCwKK307CisKK3N0YXRpYyBpbnQg Y2RuX2RwX2NvbW1pdChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpCit7CisJc3RydWN0IGNk bl9kcF9kZXZpY2UgKmRwID0gZW5jb2Rlcl90b19kcChlbmNvZGVyKTsKKwlpbnQgcmV0OworCisJ Y2RuX2RwX3NldF92aWRlb19zdGF0dXMoZHAsIENPTlRST0xfVklERU9fSURMRSk7CisKKwlyZXQg PSBjZG5fZHBfY29uZmlnX3ZpZGVvKGRwKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZHAtPmRl diwgInVuYWJsZSB0byBjb25maWcgdmlkZW9cbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWNk bl9kcF9zZXRfdmlkZW9fc3RhdHVzKGRwLCBDT05UUk9MX1ZJREVPX1ZBTElEKTsKKwlkcC0+ZHBt c19tb2RlID0gRFJNX01PREVfRFBNU19PTjsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2 b2lkIGNkbl9kcF9lbmNvZGVyX21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwK KwkJCQkgICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJICAgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZCkKK3sKKwlzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAg PSBlbmNvZGVyX3RvX2RwKGVuY29kZXIpOworCXN0cnVjdCBkcm1fZGlzcGxheV9pbmZvICpkaXNw bGF5X2luZm8gPSAmZHAtPmNvbm5lY3Rvci5kaXNwbGF5X2luZm87CisJc3RydWN0IHJvY2tjaGlw X2NydGNfc3RhdGUgKnN0YXRlOworCXN0cnVjdCB2aWRlb19pbmZvICp2aWRlbyA9ICZkcC0+dmlk ZW9faW5mbzsKKwlpbnQgcmV0LCB2YWw7CisKKwlzd2l0Y2ggKGRpc3BsYXlfaW5mby0+YnBjKSB7 CisJY2FzZSAxNjoKKwljYXNlIDEyOgorCWNhc2UgMTA6CisJCXZpZGVvLT5jb2xvcl9kZXB0aCA9 IDEwOworCQlicmVhazsKKwljYXNlIDY6CisJCXZpZGVvLT5jb2xvcl9kZXB0aCA9IDY7CisJCWJy ZWFrOworCWRlZmF1bHQ6CisJCXZpZGVvLT5jb2xvcl9kZXB0aCA9IDg7CisJCWJyZWFrOworCX0K KworCXZpZGVvLT5jb2xvcl9mbXQgPSBQWExfUkdCOworCisJdmlkZW8tPnZfc3luY19wb2xhcml0 eSA9ICEhKG1vZGUtPmZsYWdzICYgRFJNX01PREVfRkxBR19OVlNZTkMpOworCXZpZGVvLT5oX3N5 bmNfcG9sYXJpdHkgPSAhIShtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfTkhTWU5DKTsKKwor CXJldCA9IGRybV9vZl9lbmNvZGVyX2FjdGl2ZV9lbmRwb2ludF9pZChkcC0+ZGV2LT5vZl9ub2Rl LCBlbmNvZGVyKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJyKGRwLT5kZXYsICJDb3VsZCBu b3QgZ2V0IHZvcCBpZCwgJWQiLCByZXQpOworCQlyZXR1cm47CisJfQorCisJc3RhdGUgPSB0b19y b2NrY2hpcF9jcnRjX3N0YXRlKGVuY29kZXItPmNydGMtPnN0YXRlKTsKKwlpZiAocmV0KSB7CisJ CXZhbCA9IERQX1NFTF9WT1BfTElUIHwgKERQX1NFTF9WT1BfTElUIDw8IDE2KTsKKwkJc3RhdGUt Pm91dHB1dF9tb2RlID0gUk9DS0NISVBfT1VUX01PREVfUDg4ODsKKwl9IGVsc2UgeworCQl2YWwg PSBEUF9TRUxfVk9QX0xJVCA8PCAxNjsKKwkJc3RhdGUtPm91dHB1dF9tb2RlID0gUk9DS0NISVBf T1VUX01PREVfQUFBQTsKKwl9CisJcmV0ID0gcmVnbWFwX3dyaXRlKGRwLT5ncmYsIERQX1ZPUF9T RUwsIHZhbCk7CisJaWYgKHJldCAhPSAwKQorCQlkZXZfZXJyKGRwLT5kZXYsICJDb3VsZCBub3Qg d3JpdGUgdG8gR1JGOiAlZFxuIiwgcmV0KTsKKworCW1lbWNweSgmZHAtPm1vZGUsIGFkanVzdGVk LCBzaXplb2YoKm1vZGUpKTsKK30KKworc3RhdGljIHZvaWQgY2RuX2RwX2VuY29kZXJfZW5hYmxl KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcikKK3sKKwlzdHJ1Y3QgY2RuX2RwX2RldmljZSAq ZHAgPSBlbmNvZGVyX3RvX2RwKGVuY29kZXIpOworCisJaWYgKGRwLT5kcG1zX21vZGUgPT0gRFJN X01PREVfRFBNU19PTikKKwkJcmV0dXJuOworCisJY2RuX2RwX2NvbW1pdChlbmNvZGVyKTsKK30K Kworc3RhdGljIHZvaWQgY2RuX2RwX2VuY29kZXJfZGlzYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIg KmVuY29kZXIpCit7CisJc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwID0gZW5jb2Rlcl90b19kcChl bmNvZGVyKTsKKworCWlmIChkcC0+ZHBtc19tb2RlICE9IERSTV9NT0RFX0RQTVNfT04pCisJCXJl dHVybjsKKworCWNkbl9kcF9zZXRfdmlkZW9fc3RhdHVzKGRwLCBDT05UUk9MX1ZJREVPX0lETEUp OworCisJZHAtPmRwbXNfbW9kZSA9IERSTV9NT0RFX0RQTVNfT0ZGOworfQorCitzdGF0aWMgaW50 CitjZG5fZHBfZW5jb2Rlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy LAorCQkJICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCSAgICBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKK3sKKwlzdHJ1Y3Qgcm9ja2NoaXBf Y3J0Y19zdGF0ZSAqcyA9IHRvX3JvY2tjaGlwX2NydGNfc3RhdGUoY3J0Y19zdGF0ZSk7CisKKwlz LT5vdXRwdXRfbW9kZSA9IFJPQ0tDSElQX09VVF9NT0RFX0FBQUE7CisJcy0+b3V0cHV0X3R5cGUg PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQ7CisKKwlyZXR1cm4gMDsKK30KKworc3Rh dGljIHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgY2RuX2RwX2VuY29kZXJfaGVscGVy X2Z1bmNzID0geworCS5tb2RlX3NldCA9IGNkbl9kcF9lbmNvZGVyX21vZGVfc2V0LAorCS5lbmFi bGUgPSBjZG5fZHBfZW5jb2Rlcl9lbmFibGUsCisJLmRpc2FibGUgPSBjZG5fZHBfZW5jb2Rlcl9k aXNhYmxlLAorCS5hdG9taWNfY2hlY2sgPSBjZG5fZHBfZW5jb2Rlcl9hdG9taWNfY2hlY2ssCit9 OworCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGNkbl9kcF9lbmNvZGVyX2Z1bmNz ID0geworCS5kZXN0cm95ID0gZHJtX2VuY29kZXJfY2xlYW51cCwKK307CisKK3N0YXRpYyBpbnQg Y2RuX2RwX2Zpcm13YXJlX2luaXQoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKQoreworCWludCBy ZXQ7CisJY29uc3QgdTMyICppcmFtX2RhdGEsICpkcmFtX2RhdGE7CisJY29uc3Qgc3RydWN0IGZp cm13YXJlICpmdzsKKwljb25zdCBzdHJ1Y3QgY2RuX2Zpcm13YXJlX2hlYWRlciAqaGRyOworCisJ aWYgKGRwLT5md19sb2FkZWQpCisJCXJldHVybiAwOworCisJcmV0ID0gcmVxdWVzdF9maXJtd2Fy ZSgmZncsICJjZG4vZHB0eC5iaW4iLCBkcC0+ZGV2KTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZf ZXJyKGRwLT5kZXYsICJmYWlsZWQgdG8gcmVxdWVzdCBmaXJtd2FyZSAlZFxuIiwgcmV0KTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwloZHIgPSAoc3RydWN0IGNkbl9maXJtd2FyZV9oZWFkZXIgKilm dy0+ZGF0YTsKKwlpZiAoZnctPnNpemUgIT0gbGUzMl90b19jcHUoaGRyLT5zaXplX2J5dGVzKSkK KwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXQgPSBjZG5fZHBfY2xrX2VuYWJsZShkcCk7CisJaWYg KHJldCA8IDApIHsKKwkJZGV2X2VycihkcC0+ZGV2LCAiY2Fubm90IGVuYWJsZSBkcCBjbGsgJWRc biIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZHBfY2xvY2tfcmVzZXRfc2VxKGRwKTsK KworCWlyYW1fZGF0YSA9IChjb25zdCB1MzIgKikoZnctPmRhdGEgKyBoZHItPmhlYWRlcl9zaXpl KTsKKwlkcmFtX2RhdGEgPSAoY29uc3QgdTMyICopKGZ3LT5kYXRhICsgaGRyLT5oZWFkZXJfc2l6 ZSArIGhkci0+aXJhbV9zaXplKTsKKworCXJldCA9IGNkbl9kcF9sb2FkX2Zpcm13YXJlKGRwLAor CQkJCSAgIGlyYW1fZGF0YSwgaGRyLT5pcmFtX3NpemUsCisJCQkJICAgZHJhbV9kYXRhLCBoZHIt PmRyYW1fc2l6ZSk7CisKKwlyZXQgPSBjZG5fZHBfYWN0aXZlKGRwLCB0cnVlKTsKKwlpZiAocmV0 KSB7CisJCWRldl9lcnIoZHAtPmRldiwgImFjdGl2ZSB1Y3B1IGZhaWxlZDogJWRcbiIsIHJldCk7 CisJCXJldHVybiByZXQ7CisJfQorCisJY2RuX2RwX2V2ZW50X2NvbmZpZyhkcCk7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBjZG5fZHBfaW5pdChzdHJ1Y3QgY2RuX2RwX2RldmljZSAq ZHApCit7CisJc3RydWN0IGRldmljZSAqZGV2ID0gZHAtPmRldjsKKwlzdHJ1Y3QgZGV2aWNlX25v ZGUgKm5wID0gZGV2LT5vZl9ub2RlOworCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSB0 b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKworCWRwLT5n cmYgPSBzeXNjb25fcmVnbWFwX2xvb2t1cF9ieV9waGFuZGxlKG5wLCAicm9ja2NoaXAsZ3JmIik7 CisJaWYgKElTX0VSUihkcC0+Z3JmKSkgeworCQlkZXZfZXJyKGRldiwgImNkbi1kcCBuZWVkcyBy b2NrY2hpcCxncmYgcHJvcGVydHlcbiIpOworCQlyZXR1cm4gUFRSX0VSUihkcC0+Z3JmKTsKKwl9 CisKKwlkcC0+aXJxID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsKKwlpZiAoZHAtPmlycSA8 IDApIHsKKwkJZGV2X2VycihkZXYsICJjZG4tZHAgY2FuIG5vdCBnZXQgaXJxXG4iKTsKKwkJcmV0 dXJuIGRwLT5pcnE7CisJfQorCisJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElP UkVTT1VSQ0VfTUVNLCAwKTsKKwlkcC0+cmVncyA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYs IHJlcyk7CisJaWYgKElTX0VSUihkcC0+cmVncykpIHsKKwkJZGV2X2VycihkZXYsICJpb3JlbWFw IHJlZyBmYWlsZWRcbiIpOworCQlyZXR1cm4gUFRSX0VSUihkcC0+cmVncyk7CisJfQorCisJZHAt PmNvcmVfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImNvcmVfY2xrIik7CisJaWYgKElTX0VSUihk cC0+Y29yZV9jbGspKSB7CisJCWRldl9lcnIoZGV2LCAiY2Fubm90IGdldCBjb3JlX2Nsa19kcFxu Iik7CisJCXJldHVybiBQVFJfRVJSKGRwLT5jb3JlX2Nsayk7CisJfQorCisJZHAtPnBjbGsgPSBk ZXZtX2Nsa19nZXQoZGV2LCAicGNsayIpOworCWlmIChJU19FUlIoZHAtPnBjbGspKSB7CisJCWRl dl9lcnIoZGV2LCAiY2Fubm90IGdldCBwY2xrXG4iKTsKKwkJcmV0dXJuIFBUUl9FUlIoZHAtPnBj bGspOworCX0KKworCWRwLT5zcGRpZl9jbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAic3BkaWYiKTsK KwlpZiAoSVNfRVJSKGRwLT5zcGRpZl9jbGspKSB7CisJCWRldl9lcnIoZGV2LCAiY2Fubm90IGdl dCBzcGRpZl9jbGtcbiIpOworCQlyZXR1cm4gUFRSX0VSUihkcC0+c3BkaWZfY2xrKTsKKwl9CisK KwlkcC0+ZHBtc19tb2RlID0gRFJNX01PREVfRFBNU19PRkY7CisKKwlkZXZfc2V0X25hbWUoZHAt PmRldiwgImNkbi1kcCIpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgY2RuX2RwX2F1 ZGlvX2h3X3BhcmFtcyhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICBzdHJ1Y3QgaGRtaV9jb2Rl Y19kYWlmbXQgKmRhaWZtdCwKKwkJCQkgIHN0cnVjdCBoZG1pX2NvZGVjX3BhcmFtcyAqcGFyYW1z KQoreworCXN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwor CWludCByZXQ7CisJc3RydWN0IGF1ZGlvX2luZm8gYXVkaW8gPSB7CisJCS5zYW1wbGVfd2lkdGgg PSBwYXJhbXMtPnNhbXBsZV93aWR0aCwKKwkJLnNhbXBsZV9yYXRlID0gcGFyYW1zLT5zYW1wbGVf cmF0ZSwKKwkJLmNoYW5uZWxzID0gcGFyYW1zLT5jaGFubmVscywKKwl9OworCisJaWYgKCFkcC0+ ZW5jb2Rlci5jcnRjKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXN3aXRjaCAoZGFpZm10LT5mbXQp IHsKKwljYXNlIEhETUlfSTJTOgorCQlhdWRpby5mb3JtYXQgPSBBRk1UX0kyUzsKKwkJYnJlYWs7 CisJY2FzZSBIRE1JX1NQRElGOgorCQlhdWRpby5mb3JtYXQgPSBBRk1UX1NQRElGOworCQlicmVh azsKKwlkZWZhdWx0OgorCQlkZXZfZXJyKGRldiwgIiVzOiBJbnZhbGlkIGZvcm1hdCAlZFxuIiwg X19mdW5jX18sIGRhaWZtdC0+Zm10KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0g Y2RuX2RwX2F1ZGlvX2NvbmZpZ19zZXQoZHAsICZhdWRpbyk7CisJaWYgKHJldCA9PSAwKQorCQlk cC0+YXVkaW9faW5mbyA9IGF1ZGlvOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQg Y2RuX2RwX2F1ZGlvX3NodXRkb3duKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgY2Ru X2RwX2RldmljZSAqZHAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKworCWNkbl9kcF9hdWRpb19z dG9wKGRwLCAmZHAtPmF1ZGlvX2luZm8pOworCisJZHAtPmF1ZGlvX2luZm8uZm9ybWF0ID0gQUZN VF9VTlVTRUQ7Cit9CisKK3N0YXRpYyBpbnQgY2RuX2RwX2F1ZGlvX2RpZ2l0YWxfbXV0ZShzdHJ1 Y3QgZGV2aWNlICpkZXYsIGJvb2wgZW5hYmxlKQoreworCXN0cnVjdCBjZG5fZHBfZGV2aWNlICpk cCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCisJY2RuX2RwX2F1ZGlvX211dGUoZHAsIGVuYWJs ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjZG5fZHBfYXVkaW9fZ2V0X2VsZChz dHJ1Y3QgZGV2aWNlICpkZXYsIHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IGxlbikKK3sKKwlzdHJ1Y3Qg Y2RuX2RwX2RldmljZSAqZHAgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKKwlzdHJ1Y3QgZHJtX21v ZGVfY29uZmlnICpjb25maWcgPSAmZHAtPmVuY29kZXIuZGV2LT5tb2RlX2NvbmZpZzsKKwlzdHJ1 Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOworCWludCByZXQgPSAtRU5PREVWOworCisJbXV0 ZXhfbG9jaygmY29uZmlnLT5tdXRleCk7CisJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3Is ICZjb25maWctPmNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7CisJCWlmICgmZHAtPmVuY29kZXIgPT0g Y29ubmVjdG9yLT5lbmNvZGVyKSB7CisJCQltZW1jcHkoYnVmLCBjb25uZWN0b3ItPmVsZCwKKwkJ CSAgICAgICBtaW4oc2l6ZW9mKGNvbm5lY3Rvci0+ZWxkKSwgbGVuKSk7CisJCQlyZXQgPSAwOwor CQl9CisJfQorCW11dGV4X3VubG9jaygmY29uZmlnLT5tdXRleCk7CisKKwlyZXR1cm4gcmV0Owor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGhkbWlfY29kZWNfb3BzIGF1ZGlvX2NvZGVjX29wcyA9 IHsKKwkuaHdfcGFyYW1zID0gY2RuX2RwX2F1ZGlvX2h3X3BhcmFtcywKKwkuYXVkaW9fc2h1dGRv d24gPSBjZG5fZHBfYXVkaW9fc2h1dGRvd24sCisJLmRpZ2l0YWxfbXV0ZSA9IGNkbl9kcF9hdWRp b19kaWdpdGFsX211dGUsCisJLmdldF9lbGQgPSBjZG5fZHBfYXVkaW9fZ2V0X2VsZCwKK307CisK K3N0YXRpYyBpbnQgY2RuX2RwX2F1ZGlvX2NvZGVjX2luaXQoc3RydWN0IGNkbl9kcF9kZXZpY2Ug KmRwLAorCQkJCSAgIHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgaGRtaV9jb2RlY19w ZGF0YSBjb2RlY19kYXRhID0geworCQkuaTJzID0gMSwKKwkJLnNwZGlmID0gMSwKKwkJLm9wcyA9 ICZhdWRpb19jb2RlY19vcHMsCisJCS5tYXhfaTJzX2NoYW5uZWxzID0gOCwKKwl9OworCisJZHAt PmF1ZGlvX3BkZXYgPSBwbGF0Zm9ybV9kZXZpY2VfcmVnaXN0ZXJfZGF0YSgKKwkJCSBkZXYsIEhE TUlfQ09ERUNfRFJWX05BTUUsIFBMQVRGT1JNX0RFVklEX0FVVE8sCisJCQkgJmNvZGVjX2RhdGEs IHNpemVvZihjb2RlY19kYXRhKSk7CisKKwlyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGRwLT5hdWRp b19wZGV2KTsKK30KKworc3RhdGljIGludCBjZG5fZHBfcGRfZXZlbnQoc3RydWN0IG5vdGlmaWVy X2Jsb2NrICpuYiwKKwkJCSAgIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZvaWQgKnByaXYpCit7CisJ c3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwOworCXN0cnVjdCBleHRjb25fZGV2ICplZGV2ID0gKHN0 cnVjdCBleHRjb25fZGV2ICopcHJpdjsKKwlpbnQgdmFsdWUgPSBlZGV2LT5zdGF0ZTsKKwl1OCBt YXA7CisKKwlkcCA9IGNvbnRhaW5lcl9vZihuYiwgc3RydWN0IGNkbl9kcF9kZXZpY2UsIGV2ZW50 X25iKTsKKworCW1hcCA9IEdFVF9QSU5fTUFQKHZhbHVlKTsKKworCS8qCisJICogaWYgdGhlIG9s ZCBzdGF0ZSBpcyBub3QgcGx1Z2dlZCwgYW5kIHRoZSBtYXAgaXMgMCwgdGhlIGRldmljZSBpcwor CSAqIGNlcnRhaW5seSBub3QgRFAuCisJICovCisJaWYgKCFtYXAgJiYgIWRwLT5wbHVnZ2VkKQor CQlyZXR1cm4gMDsKKworCWRwLT5wbHVnZ2VkID0gR0VUX1BMVUdHRUQodmFsdWUpOworCWRwLT5m bGlwID0gR0VUX0ZMSVAodmFsdWUpOworCisJaWYgKG1hcCAmIChQSU5fTUFQX0IgfCBQSU5fTUFQ X0QgfCBQSU5fTUFQX0YpKQorCQlkcC0+Y2FwX2xhbmVzID0gMjsKKwllbHNlCisJCWRwLT5jYXBf bGFuZXMgPSA0OworCisJc2NoZWR1bGVfZGVsYXllZF93b3JrX29uKDAsICZkcC0+ZXZlbnRfd3Es IDEwMCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY2RuX2RwX3BkX2V2ZW50X3dx KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHA7 CisKKwlkcCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgY2RuX2RwX2RldmljZSwgZXZlbnRf d3Eud29yayk7CisKKwlpZiAoY2RuX2RwX2Zpcm13YXJlX2luaXQoZHApKQorCQlyZXR1cm47CisK KwlpZiAoKGNkbl9kcF9nZXRfZXZlbnQoZHApICYgRFBUWF9IUERfRVZFTlQpICYmIChkcC0+ZHJt X2RldikpCisJCWRybV9oZWxwZXJfaHBkX2lycV9ldmVudChkcC0+ZHJtX2Rldik7Cit9CisKK3N0 YXRpYyBpbnQgY2RuX2RwX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICpt YXN0ZXIsCisJCSAgICAgICB2b2lkICpkYXRhKQoreworCXN0cnVjdCBjZG5fZHBfZGV2aWNlICpk cCA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOworCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYt Pm9mX25vZGU7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXYgPSBkYXRhOwor CXN0cnVjdCBwaHkgKnBoeSA9IGRldm1fb2ZfcGh5X2dldF9ieV9pbmRleChkZXYsIG5wLCAwKTsK KwlpbnQgcmV0OworCisJaWYgKElTX0VSUihwaHkpKQorCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsK KworCWRwLT5waHkgPSBwaHk7CisKKwlyZXQgPSBjZG5fZHBfaW5pdChkcCk7CisJaWYgKHJldCA8 IDApCisJCXJldHVybiByZXQ7CisKKwlkcC0+ZHJtX2RldiA9IGRybV9kZXY7CisKKwllbmNvZGVy ID0gJmRwLT5lbmNvZGVyOworCisJZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgPSBkcm1fb2ZfZmlu ZF9wb3NzaWJsZV9jcnRjcyhkcm1fZGV2LAorCQkJCQkJCSAgICAgZGV2LT5vZl9ub2RlKTsKKwlE Uk1fREVCVUdfS01TKCJwb3NzaWJsZV9jcnRjcyA9IDB4JXhcbiIsIGVuY29kZXItPnBvc3NpYmxl X2NydGNzKTsKKworCXJldCA9IGRybV9lbmNvZGVyX2luaXQoZHJtX2RldiwgZW5jb2RlciwgJmNk bl9kcF9lbmNvZGVyX2Z1bmNzLAorCQkJICAgICAgIERSTV9NT0RFX0VOQ09ERVJfVE1EUywgTlVM TCk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBpbml0aWFsaXplIGVuY29k ZXIgd2l0aCBkcm1cbiIpOworCQlyZXR1cm4gcmV0OworCX0KKworCWRybV9lbmNvZGVyX2hlbHBl cl9hZGQoZW5jb2RlciwgJmNkbl9kcF9lbmNvZGVyX2hlbHBlcl9mdW5jcyk7CisKKwljb25uZWN0 b3IgPSAmZHAtPmNvbm5lY3RvcjsKKwljb25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1Jf UE9MTF9IUEQ7CisJY29ubmVjdG9yLT5kcG1zID0gRFJNX01PREVfRFBNU19PRkY7CisKKwlyZXQg PSBkcm1fY29ubmVjdG9yX2luaXQoZHJtX2RldiwgY29ubmVjdG9yLAorCQkJCSAmY2RuX2RwX2F0 b21pY19jb25uZWN0b3JfZnVuY3MsCisJCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9y dCk7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBpbml0aWFsaXplIGNvbm5l Y3RvciB3aXRoIGRybVxuIik7CisJCWdvdG8gZXJyX2ZyZWVfZW5jb2RlcjsKKwl9CisKKwlkcm1f Y29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmY2RuX2RwX2Nvbm5lY3Rvcl9oZWxwZXJf ZnVuY3MpOworCisJcmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5l Y3RvciwgZW5jb2Rlcik7CisJaWYgKHJldCkgeworCQlEUk1fRVJST1IoImZhaWxlZCB0byBhdHRh Y2ggY29ubmVjdG9yIGFuZCBlbmNvZGVyXG4iKTsKKwkJZ290byBlcnJfZnJlZV9jb25uZWN0b3I7 CisJfQorCisJY2RuX2RwX2F1ZGlvX2NvZGVjX2luaXQoZHAsIGRldik7CisKKwlkcC0+ZXZlbnRf bmIubm90aWZpZXJfY2FsbCA9IGNkbl9kcF9wZF9ldmVudDsKKwlJTklUX0RFTEFZRURfV09SSygm ZHAtPmV2ZW50X3dxLCBjZG5fZHBfcGRfZXZlbnRfd3EpOworCXJldCA9IGV4dGNvbl9yZWdpc3Rl cl9ub3RpZmllcihkcC0+ZXh0Y29uLCBFWFRDT05fVVNCLAorCQkJCSAgICAgICAmZHAtPmV2ZW50 X25iKTsKKwlpZiAocmV0KSB7CisJCWRldl9lcnIoZGV2LCAicmVnaXRzdGVyIG5vdGlmZXIgZmFp bGVkXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKKworZXJyX2ZyZWVfY29u bmVjdG9yOgorCWRybV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworZXJyX2ZyZWVfZW5j b2RlcjoKKwlkcm1fZW5jb2Rlcl9jbGVhbnVwKGVuY29kZXIpOworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyB2b2lkIGNkbl9kcF91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2 aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwID0g ZGV2X2dldF9kcnZkYXRhKGRldik7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmRw LT5lbmNvZGVyOworCisJcGxhdGZvcm1fZGV2aWNlX3VucmVnaXN0ZXIoZHAtPmF1ZGlvX3BkZXYp OworCWNkbl9kcF9lbmNvZGVyX2Rpc2FibGUoZW5jb2Rlcik7CisJZW5jb2Rlci0+ZnVuY3MtPmRl c3Ryb3koZW5jb2Rlcik7CisJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKCZkcC0+Y29ubmVjdG9y KTsKKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoJmRwLT5jb25uZWN0b3IpOworCWRybV9lbmNvZGVy X2NsZWFudXAoZW5jb2Rlcik7CisKKwlleHRjb25fdW5yZWdpc3Rlcl9ub3RpZmllcihkcC0+ZXh0 Y29uLCBFWFRDT05fVVNCLAorCQkJCSAgICZkcC0+ZXZlbnRfbmIpOworfQorCitzdGF0aWMgY29u c3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgY2RuX2RwX2NvbXBvbmVudF9vcHMgPSB7CisJLmJpbmQg PSBjZG5fZHBfYmluZCwKKwkudW5iaW5kID0gY2RuX2RwX3VuYmluZCwKK307CisKK3N0YXRpYyBp bnQgY2RuX2RwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJc3RydWN0 IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKKwlzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHA7CisK KwlkcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZHApLCBHRlBfS0VSTkVMKTsKKwlpZiAo IWRwKQorCQlyZXR1cm4gLUVOT01FTTsKKwlkcC0+ZGV2ID0gZGV2OworCisJZHAtPmV4dGNvbiA9 IGV4dGNvbl9nZXRfZWRldl9ieV9waGFuZGxlKGRldiwgMCk7CisJaWYgKElTX0VSUihkcC0+ZXh0 Y29uKSkgeworCQlpZiAoUFRSX0VSUihkcC0+ZXh0Y29uKSA9PSAtRVBST0JFX0RFRkVSKQorCQkJ cmV0dXJuIC1FUFJPQkVfREVGRVI7CisJCWRldl9lcnIoZGV2LCAiSW52YWxpZCBvciBtaXNzaW5n IGV4dGNvblxuIik7CisJCXJldHVybiBQVFJfRVJSKGRwLT5leHRjb24pOworCX0KKworCXBsYXRm b3JtX3NldF9kcnZkYXRhKHBkZXYsIGRwKTsKKworCXJldHVybiBjb21wb25lbnRfYWRkKGRldiwg JmNkbl9kcF9jb21wb25lbnRfb3BzKTsKK30KKworc3RhdGljIGludCBjZG5fZHBfcmVtb3ZlKHN0 cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCit7CisJY29tcG9uZW50X2RlbCgmcGRldi0+ZGV2 LCAmY2RuX2RwX2NvbXBvbmVudF9vcHMpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkbl9kcF9kdF9pZHNbXSA9IHsKKwl7LmNvbXBhdGlibGUg PSAicm9ja2NoaXAsY2RuLWRwIix9LAorCXt9Cit9OworCitNT0RVTEVfREVWSUNFX1RBQkxFKG9m LCBjZG5fZHBfZHRfaWRzKTsKKworc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2RuX2Rw X2RyaXZlciA9IHsKKwkucHJvYmUgPSBjZG5fZHBfcHJvYmUsCisJLnJlbW92ZSA9IGNkbl9kcF9y ZW1vdmUsCisJLmRyaXZlciA9IHsKKwkJICAgLm5hbWUgPSAiY2RuLWRwIiwKKwkJICAgLm93bmVy ID0gVEhJU19NT0RVTEUsCisJCSAgIC5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNoX3B0cihjZG5f ZHBfZHRfaWRzKSwKKwl9LAorfTsKKworbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjZG5fZHBfZHJp dmVyKTsKKworTU9EVUxFX0FVVEhPUigiQ2hyaXMgWmhvbmcgPHp5d0Byb2NrLWNoaXBzLmNvbT4i KTsKK01PRFVMRV9ERVNDUklQVElPTigiY2RuIERQIERyaXZlciIpOworTU9EVUxFX0xJQ0VOU0Uo IkdQTCB2MiIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1j b3JlLmggYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvY2RuLWRwLWNvcmUuaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzQxYzkyCi0tLSAvZGV2L251bGwKKysrIGIvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1jb3JlLmgKQEAgLTAsMCArMSwxMTAgQEAKKy8q CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2hyaXMgWmhvbmcgPHp5d0Byb2NrLWNoaXBzLmNvbT4K KyAqIENvcHlyaWdodCAoQykgMjAxNiBST0NLQ0hJUCwgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICov CisKKyNpZm5kZWYgX1JPQ0tDSElQX0VEUF9DT1JFX0gKKyNkZWZpbmUgX1JPQ0tDSElQX0VEUF9D T1JFX0gKKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hl bHBlci5oPgorI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2Ry bV9wYW5lbC5oPgorI2luY2x1ZGUgInJvY2tjaGlwX2RybV9kcnYuaCIKKyNpbmNsdWRlICJjZG4t ZHAtcmVnLmgiCisKK2VudW0gQVVESU9fRk9STUFUIHsKKwlBRk1UX0kyUyA9IDAsCisJQUZNVF9T UERJRiA9IDEsCisJQUZNVF9VTlVTRUQsCit9OworCitzdHJ1Y3QgYXVkaW9faW5mbyB7CisJZW51 bSBBVURJT19GT1JNQVQgZm9ybWF0OworCWludCBzYW1wbGVfcmF0ZTsKKwlpbnQgY2hhbm5lbHM7 CisJaW50IHNhbXBsZV93aWR0aDsKK307CisKK3N0cnVjdCB2aWRlb19pbmZvIHsKKwlib29sIGhf c3luY19wb2xhcml0eTsKKwlib29sIHZfc3luY19wb2xhcml0eTsKKwlib29sIGludGVybGFjZWQ7 CisJaW50IGNvbG9yX2RlcHRoOworCWVudW0gVklDX1BYTF9FTkNPRElOR19GT1JNQVQgY29sb3Jf Zm10OworfTsKKworc3RydWN0IGNkbl9maXJtd2FyZV9oZWFkZXIgeworCXUzMiBzaXplX2J5dGVz OyAvKiBzaXplIG9mIHRoZSBlbnRpcmUgaGVhZGVyK2ltYWdlKHMpIGluIGJ5dGVzICovCisJdTMy IGhlYWRlcl9zaXplOyAvKiBzaXplIG9mIGp1c3QgdGhlIGhlYWRlciBpbiBieXRlcyAqLworCXUz MiBpcmFtX3NpemU7IC8qIHNpemUgb2YgaXJhbSAqLworCXUzMiBkcmFtX3NpemU7IC8qIHNpemUg b2YgZHJhbSAqLworfTsKKworc3RydWN0IGNkbl9kcF9kZXZpY2UgeworCXN0cnVjdCBkZXZpY2Ug KmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtX2RldjsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciBjb25uZWN0b3I7CisJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7CisJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgbW9kZTsKKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGhvdHBsdWdfd29yazsKKwlz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICphdWRpb19wZGV2OworCWJvb2wgcGx1Z2dlZDsKKworCWNv bnN0IHN0cnVjdCBmaXJtd2FyZSAqZnc7CS8qIGNkbiBkcCBmaXJtd2FyZSAqLworCXVuc2lnbmVk IGludCBmd192ZXJzaW9uOwkvKiBjZG4gZncgdmVyc2lvbiAqLworCWJvb2wgZndfbG9hZGVkOwor CXZvaWQgX19pb21lbSAqcmVnczsKKwl2b2lkIF9faW9tZW0gKnBoeV9yZWdzOworCXN0cnVjdCBy ZWdtYXAgKmdyZjsKKwl1bnNpZ25lZCBpbnQgaXJxOworCXN0cnVjdCBjbGsgKmNvcmVfY2xrOwor CXN0cnVjdCBjbGsgKnBjbGs7CisJc3RydWN0IGNsayAqc3BkaWZfY2xrOworCXN0cnVjdCBhdWRp b19pbmZvIGF1ZGlvX2luZm87CisJc3RydWN0IHZpZGVvX2luZm8gdmlkZW9faW5mbzsKKwlzdHJ1 Y3QgcGh5ICpwaHk7CisJc3RydWN0IGV4dGNvbl9kZXYJKmV4dGNvbjsKKwlzdHJ1Y3Qgbm90aWZp ZXJfYmxvY2sJZXZlbnRfbmI7CisJc3RydWN0IGRlbGF5ZWRfd29yawlldmVudF93cTsKKworCWlu dCBjYXBfbGFuZXM7CisJYm9vbCBmbGlwOworCisJaW50IGRwbXNfbW9kZTsKKwlzdHJ1Y3QgZHJt X2RwX2xpbmsgbGluazsKKwlib29sIHNpbmtfaGFzX2F1ZGlvOworfTsKKwordm9pZCBkcF9jbG9j a19yZXNldF9zZXEoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKTsKKwordm9pZCBjZG5fZHBfc2V0 X2Z3X2NsayhzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAsIGludCBjbGspOworaW50IGNkbl9kcF9s b2FkX2Zpcm13YXJlKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgY29uc3QgdTMyICppX21lbSwK KwkJCSB1MzIgaV9zaXplLCBjb25zdCB1MzIgKmRfbWVtLCB1MzIgZF9zaXplKTsKK2ludCBjZG5f ZHBfYWN0aXZlKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgdTggZW5hYmxlKTsKK2ludCBjZG5f ZHBfc2V0X2hvc3RfY2FwKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCk7CitpbnQgY2RuX2RwX2V2 ZW50X2NvbmZpZyhzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHApOworaW50IGNkbl9kcF9nZXRfZXZl bnQoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKTsKK2ludCBjZG5fZHBfZ2V0X2hwZF9zdGF0dXMo c3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKTsKK2ludCBjZG5fZHBfZHBjZF93cml0ZShzdHJ1Y3Qg Y2RuX2RwX2RldmljZSAqZHAsIHUzMiBhZGRyLCB1OCB2YWx1ZSk7CitpbnQgY2RuX2RwX2RwY2Rf cmVhZChzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAsIHUzMiBhZGRyKTsKK2ludCBjZG5fZHBfZ2V0 X2VkaWRfYmxvY2sodm9pZCAqZHAsIHU4ICplZGlkLAorCQkJICB1bnNpZ25lZCBpbnQgYmxvY2ss IHNpemVfdCBsZW5ndGgpOworaW50IGNkbl9kcF90cmFpbmluZ19zdGFydChzdHJ1Y3QgY2RuX2Rw X2RldmljZSAqZHApOworaW50IGNkbl9kcF9nZXRfbHRfc3RhdHVzKHN0cnVjdCBjZG5fZHBfZGV2 aWNlICpkcCk7CitpbnQgY2RuX2RwX3NldF92aWRlb19zdGF0dXMoc3RydWN0IGNkbl9kcF9kZXZp Y2UgKmRwLCBpbnQgYWN0aXZlKTsKK2ludCBjZG5fZHBfY29uZmlnX3ZpZGVvKHN0cnVjdCBjZG5f ZHBfZGV2aWNlICpkcCk7CitpbnQgY2RuX2RwX2F1ZGlvX3N0b3Aoc3RydWN0IGNkbl9kcF9kZXZp Y2UgKmRwLCBzdHJ1Y3QgYXVkaW9faW5mbyAqYXVkaW8pOworaW50IGNkbl9kcF9hdWRpb19tdXRl KHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgYm9vbCBlbmFibGUpOworaW50IGNkbl9kcF9hdWRp b19jb25maWdfc2V0KHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgc3RydWN0IGF1ZGlvX2luZm8g KmF1ZGlvKTsKKworI2VuZGlmICAvKiBfUk9DS0NISVBfRURQX0NPUkVfSCAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1yZWcuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9jZG4tZHAtcmVnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uM2I2NGU5NQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9j ZG4tZHAtcmVnLmMKQEAgLTAsMCArMSw3MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIEZ1emhv dSBSb2NrY2hpcCBFbGVjdHJvbmljcyBDby5MdGQKKyAqIEF1dGhvcjogQ2hyaXMgWmhvbmcgPHp5 d0Byb2NrLWNoaXBzLmNvbT4KKyAqCisgKiBUaGlzIHNvZnR3YXJlIGlzIGxpY2Vuc2VkIHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIHZlcnNpb24g MiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGFuZAorICog bWF5IGJlIGNvcGllZCwgZGlzdHJpYnV0ZWQsIGFuZCBtb2RpZmllZCB1bmRlciB0aG9zZSB0ZXJt cy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlIDxsaW51eC9jbGsu aD4KKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgor I2luY2x1ZGUgPGxpbnV4L2lvLmg+CisjaW5jbHVkZSA8bGludXgvaW9wb2xsLmg+CisjaW5jbHVk ZSA8bGludXgvcmVzZXQuaD4KKworI2luY2x1ZGUgImNkbi1kcC1jb3JlLmgiCisjaW5jbHVkZSAi Y2RuLWRwLXJlZy5oIgorCisjZGVmaW5lIEZXX0FMSVZFX1RJTUVPVVRfVVMJCTEwMDAwMDAKKyNk ZWZpbmUgTUFJTEJPWF9USU1FT1VUX1VTCQk1MDAwMDAwCisKKy8qIHRoZSBtYXggc2l6ZSBvZiBy ZWFkIGJ1ZmYgaXMgMTM0ICovCitzdGF0aWMgdTggcnhfYnVmZlsxMzRdOworCit2b2lkIGNkbl9k cF9zZXRfZndfY2xrKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgaW50IGNsaykKK3sKKwl3cml0 ZWwoY2xrIC8gMTAwMDAwMCwgZHAtPnJlZ3MgKyBTV19DTEtfSCk7Cit9CisKK3ZvaWQgZHBfY2xv Y2tfcmVzZXRfc2VxKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkKK3sKKwl3cml0ZWwoMHhmZmYs IGRwLT5yZWdzICsgU09VUkNFX0RQVFhfQ0FSKTsKKwl3cml0ZWwoMHg3LCBkcC0+cmVncyArIFNP VVJDRV9QSFlfQ0FSKTsKKwl3cml0ZWwoMHhmLCBkcC0+cmVncyArIFNPVVJDRV9QS1RfQ0FSKTsK Kwl3cml0ZWwoMHhmZiwgZHAtPnJlZ3MgKyBTT1VSQ0VfQUlGX0NBUik7CisJd3JpdGVsKDB4Ziwg ZHAtPnJlZ3MgKyBTT1VSQ0VfQ0lQSEVSX0NBUik7CisJd3JpdGVsKDB4MywgZHAtPnJlZ3MgKyBT T1VSQ0VfQ1JZUFRPX0NBUik7CisJd3JpdGVsKDAsIGRwLT5yZWdzICsgQVBCX0lOVF9NQVNLKTsK K30KKworc3RhdGljIHU4IGNkbl9kcF9tYWlsYm94X3JlYWQoc3RydWN0IGNkbl9kcF9kZXZpY2Ug KmRwKQoreworCWludCB2YWwsIHJldDsKKworCWlmICghZHAtPmZ3X2xvYWRlZCkKKwkJcmV0dXJu IDA7CisKKwlyZXQgPSByZWFkeF9wb2xsX3RpbWVvdXQocmVhZGwsIGRwLT5yZWdzICsgTUFJTEJP WF9FTVBUWV9BRERSLAorCQkJCSB2YWwsICF2YWwsIDEwMDAsIE1BSUxCT1hfVElNRU9VVF9VUyk7 CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2VycihkcC0+ZGV2LCAiZmFpbGVkIHRvIHJlYWQgbWFp bGJveCwga2VlcCBhbGl2ZSA9ICV4XG4iLAorCQkJcmVhZGwoZHAtPnJlZ3MgKyBLRUVQX0FMSVZF KSk7CisJCXJldHVybiAwOworCX0KKworCXJldHVybiByZWFkbChkcC0+cmVncyArIE1BSUxCT1gw X1JEX0RBVEEpICYgMHhmZjsKK30KKworc3RhdGljIHZvaWQgY2RwX2RwX21haWxib3hfd3JpdGUo c3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwLCB1OCB2YWwpCit7CisJaW50IHJldCwgZnVsbDsKKwor CWlmICghZHAtPmZ3X2xvYWRlZCkKKwkJcmV0dXJuOworCisJcmV0ID0gcmVhZHhfcG9sbF90aW1l b3V0KHJlYWRsLCBkcC0+cmVncyArIE1BSUxCT1hfRlVMTF9BRERSLAorCQkJCSBmdWxsLCAhZnVs bCwgMTAwMCwgTUFJTEJPWF9USU1FT1VUX1VTKTsKKwlpZiAocmV0IDwgMCkgeworCQlkZXZfZXJy KGRwLT5kZXYsICJtYWlsYm94IGlzIGZ1bGwsIGtlZXAgYWxpdmUgPSAleFxuIiwKKwkJCXJlYWRs KGRwLT5yZWdzICsgS0VFUF9BTElWRSkpOworCQlyZXR1cm47CisJfQorCisJd3JpdGVsKHZhbCwg ZHAtPnJlZ3MgKyBNQUlMQk9YMF9XUl9EQVRBKTsKK30KKworLyogcmV0dXJuIHRoZSBzaXplIG9m IG1lc3NhZ2UgKi8KK2ludCBjZG5fZHBfbWFpbGJveF9yZXNwb25zZShzdHJ1Y3QgY2RuX2RwX2Rl dmljZSAqZHAsIHU4IG1vZHVsZV9pZCwKKwkJCSAgICB1OCBvcGNvZGUsIHU4ICoqbWVzc2FnZSkK K3sKKwlpbnQgc2l6ZSwgaSA9IDA7CisKKwltZW1zZXQocnhfYnVmZiwgMCwgNCk7CisKKwl3aGls ZSAoaSA8IHNpemVvZihyeF9idWZmKSkgeworCQlpZiAoaSA8IHNpemVvZihyeF9idWZmKSkKKwkJ CXJ4X2J1ZmZbaSsrXSA9IGNkbl9kcF9tYWlsYm94X3JlYWQoZHApOworCisJCXNpemUgPSAoKHJ4 X2J1ZmZbMl0gPDwgOCkgfCByeF9idWZmWzNdKSArIDQ7CisJCWlmIChpID49IHNpemUpCisJCQli cmVhazsKKwl9CisKKwlpZiAoKG9wY29kZSAhPSByeF9idWZmWzBdKSB8fCAobW9kdWxlX2lkICE9 IHJ4X2J1ZmZbMV0pKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXNpemUgPSAocnhfYnVmZlsyXSA8 PCA4KSB8IHJ4X2J1ZmZbM107CisKKwkqbWVzc2FnZSA9ICZyeF9idWZmWzRdOworCisJcmV0dXJu IHNpemU7Cit9CisKK2ludCBjZG5fZHBfbWFpbGJveF9zZW5kKHN0cnVjdCBjZG5fZHBfZGV2aWNl ICpkcCwgdTggbW9kdWxlX2lkLCB1OCBvcGNvZGUsCisJCQl1MTYgc2l6ZSwgdTggKm1lc3NhZ2Up Cit7CisJY2RwX2RwX21haWxib3hfd3JpdGUoZHAsIG9wY29kZSk7CisJY2RwX2RwX21haWxib3hf d3JpdGUoZHAsIG1vZHVsZV9pZCk7CisJY2RwX2RwX21haWxib3hfd3JpdGUoZHAsIHNpemUgPj4g OCk7CisJY2RwX2RwX21haWxib3hfd3JpdGUoZHAsIHNpemUgJiAweGZmKTsKKworCXdoaWxlIChz aXplLS0pCisJCWNkcF9kcF9tYWlsYm94X3dyaXRlKGRwLCAqbWVzc2FnZSsrKTsKKworCXJldHVy biAwOworfQorCitpbnQgY2RuX2RwX2xvYWRfZmlybXdhcmUoc3RydWN0IGNkbl9kcF9kZXZpY2Ug KmRwLCBjb25zdCB1MzIgKmlfbWVtLAorCQkJIHUzMiBpX3NpemUsIGNvbnN0IHUzMiAqZF9tZW0s IHUzMiBkX3NpemUpCit7CisJaW50IGksIHJlZywgcmV0OworCisJLyogcmVzZXQgdWNwdSBiZWZv cmUgbG9hZCBmaXJtd2FyZSovCisJd3JpdGVsKEFQQl9JUkFNX1BBVEggfCBBUEJfRFJBTV9QQVRI IHwgQVBCX1hUX1JFU0VULAorCSAgICAgICBkcC0+cmVncyArIEFQQl9DVFJMKTsKKworCWZvciAo aSA9IDA7IGkgPCBpX3NpemU7IGkgKz0gNCkKKwkJd3JpdGVsKCppX21lbSsrLCBkcC0+cmVncyAr IEFERFJfSU1FTSArIGkpOworCisJZm9yIChpID0gMDsgaSA8IGRfc2l6ZTsgaSArPSA0KQorCQl3 cml0ZWwoKmRfbWVtKyssIGRwLT5yZWdzICsgQUREUl9ETUVNICsgaSk7CisKKwkvKiB1bi1yZXNl dCB1Y3B1ICovCisJd3JpdGVsKDAsIGRwLT5yZWdzICsgQVBCX0NUUkwpOworCisJLyogY2hlY2sg dGhlIGtlZXAgYWxpdmUgcmVnaXN0ZXIgdG8gbWFrZSBzdXJlIGZ3IHdvcmtpbmcgKi8KKwlyZXQg PSByZWFkeF9wb2xsX3RpbWVvdXQocmVhZGwsIGRwLT5yZWdzICsgS0VFUF9BTElWRSwKKwkJCQkg cmVnLCByZWcsIDIwMDAsIEZXX0FMSVZFX1RJTUVPVVRfVVMpOworCWlmIChyZXQgPCAwKSB7CisJ CWRldl9lcnIoZHAtPmRldiwgImZhaWxlZCB0byBsb2FkZWQgdGhlIEZXIHJlZyA9ICV4XG4iLCBy ZWcpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZWcgPSByZWFkbChkcC0+cmVncyArIFZF Ul9MKSAmIDB4ZmY7CisJZHAtPmZ3X3ZlcnNpb24gPSByZWc7CisJcmVnID0gcmVhZGwoZHAtPnJl Z3MgKyBWRVJfSCkgJiAweGZmOworCWRwLT5md192ZXJzaW9uIHw9IHJlZyA8PCA4OworCXJlZyA9 IHJlYWRsKGRwLT5yZWdzICsgVkVSX0xJQl9MX0FERFIpICYgMHhmZjsKKwlkcC0+ZndfdmVyc2lv biB8PSByZWcgPDwgMTY7CisJcmVnID0gcmVhZGwoZHAtPnJlZ3MgKyBWRVJfTElCX0hfQUREUikg JiAweGZmOworCWRwLT5md192ZXJzaW9uIHw9IHJlZyA8PCAyNDsKKworCWRwLT5md19sb2FkZWQg PSAxOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBjZG5fZHBfcmVnX3dyaXRlKHN0cnVjdCBjZG5f ZHBfZGV2aWNlICpkcCwgdTE2IGFkZHIsIHUzMiB2YWwpCit7CisJdTggbXNnWzZdOworCisJbXNn WzBdID0gKGFkZHIgPj4gOCkgJiAweGZmOworCW1zZ1sxXSA9IGFkZHIgJiAweGZmOworCW1zZ1sy XSA9ICh2YWwgPj4gMjQpICYgMHhmZjsKKwltc2dbM10gPSAodmFsID4+IDE2KSAmIDB4ZmY7CisJ bXNnWzRdID0gKHZhbCA+PiA4KSAmIDB4ZmY7CisJbXNnWzVdID0gdmFsICYgMHhmZjsKKwlyZXR1 cm4gY2RuX2RwX21haWxib3hfc2VuZChkcCwgTUJfTU9EVUxFX0lEX0RQX1RYLCBEUFRYX1dSSVRF X1JFR0lTVEVSLAorCQkJCSAgIEFSUkFZX1NJWkUobXNnKSwgbXNnKTsKK30KKworaW50IGNkbl9k cF9yZWdfcmVhZChzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAsIHUxNiBhZGRyKQoreworCXU4IG1z Z1syXSwgKnJlZyA9IE5VTEw7CisJdTE2IHNpemU7CisKKwltc2dbMF0gPSAoYWRkciA+PiA4KSAm IDB4ZmY7CisJbXNnWzFdID0gYWRkciAmIDB4ZmY7CisJY2RuX2RwX21haWxib3hfc2VuZChkcCwg TUJfTU9EVUxFX0lEX0RQX1RYLCBEUFRYX1JFQURfUkVHSVNURVIsCisJCQkgICAgQVJSQVlfU0la RShtc2cpLCBtc2cpOworCisJc2l6ZSA9IGNkbl9kcF9tYWlsYm94X3Jlc3BvbnNlKGRwLCBNQl9N T0RVTEVfSURfRFBfVFgsCisJCQkJICAgICAgIERQVFhfUkVBRF9SRUdJU1RFUiwgJnJlZyk7CisJ aWYgKHNpemUgIT0gNikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoKG1zZ1swXSA9PSByZWdb MF0pICYmIChtc2dbMV0gPT0gcmVnWzFdKSkKKwkJcmV0dXJuIChyZWdbMl0gPDwgMjQpIHwgKHJl Z1szXSA8PCAxNikgfCAocmVnWzRdIDw8IDgpIHwgcmVnWzVdOworCisJcmV0dXJuIC1FSU5WQUw7 Cit9CisKK2ludCBjZG5fZHBfcmVnX3dyaXRlX2JpdChzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAs IHUxNiBhZGRyLCB1OCBzdGFydF9iaXQsCisJCQkgdTggYml0c19ubywgdTMyIHZhbCkKK3sKKwl1 OCBmaWVsZFs4XTsKKworCWZpZWxkWzBdID0gKGFkZHIgPj4gOCkgJiAweGZmOworCWZpZWxkWzFd ID0gYWRkciAmIDB4ZmY7CisJZmllbGRbMl0gPSBzdGFydF9iaXQ7CisJZmllbGRbM10gPSBiaXRz X25vOworCWZpZWxkWzRdID0gKHZhbCA+PiAyNCkgJiAweGZmOworCWZpZWxkWzVdID0gKHZhbCA+ PiAxNikgJiAweGZmOworCWZpZWxkWzZdID0gKHZhbCA+PiA4KSAmIDB4ZmY7CisJZmllbGRbN10g PSB2YWwgJiAweGZmOworCisJcmV0dXJuIGNkbl9kcF9tYWlsYm94X3NlbmQoZHAsIE1CX01PRFVM RV9JRF9EUF9UWCwgRFBUWF9XUklURV9GSUVMRCwKKwkJCSAgICBzaXplb2YoZmllbGQpLCBmaWVs ZCk7Cit9CisKK2ludCBjZG5fZHBfZHBjZF93cml0ZShzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAs IHUzMiBhZGRyLCB1OCB2YWx1ZSkKK3sKKwl1OCBtc2dbNl0sICpyZWcgPSBOVUxMOworCXUxNiBz aXplOworCisJbXNnWzBdID0gMDsKKwltc2dbMV0gPSAxOworCW1zZ1syXSA9IChhZGRyID4+IDE2 KSAmIDB4ZmY7CisJbXNnWzNdID0gKGFkZHIgPj4gOCkgJiAweGZmOworCW1zZ1s0XSA9IGFkZHIg JiAweGZmOworCW1zZ1s1XSA9IHZhbHVlOworCWNkbl9kcF9tYWlsYm94X3NlbmQoZHAsIE1CX01P RFVMRV9JRF9EUF9UWCwgRFBUWF9XUklURV9EUENELAorCQkJICAgIEFSUkFZX1NJWkUobXNnKSwg bXNnKTsKKworCXNpemUgPSBjZG5fZHBfbWFpbGJveF9yZXNwb25zZShkcCwgTUJfTU9EVUxFX0lE X0RQX1RYLAorCQkJCSAgICAgICBEUFRYX1dSSVRFX0RQQ0QsICZyZWcpOworCWlmIChzaXplICE9 IDUpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKChtc2dbMl0gPT0gcmVnWzJdKSAmJiAobXNn WzNdID09IHJlZ1szXSkgJiYgKG1zZ1s0XSA9PSByZWdbNF0pKQorCQlyZXR1cm4gMDsKKworCXJl dHVybiAtRUlOVkFMOworfQorCitpbnQgY2RuX2RwX2RwY2RfcmVhZChzdHJ1Y3QgY2RuX2RwX2Rl dmljZSAqZHAsIHUzMiBhZGRyKQoreworCXU4IG1zZ1s1XSwgKnJlZyA9IE5VTEw7CisJdTE2IHNp emU7CisKKwltc2dbMF0gPSAwOworCW1zZ1sxXSA9IDE7CisJbXNnWzJdID0gKGFkZHIgPj4gMTYp ICYgMHhmZjsKKwltc2dbM10gPSAoYWRkciA+PiA4KSAmIDB4ZmY7CisJbXNnWzRdID0gYWRkciAm IDB4ZmY7CisJY2RuX2RwX21haWxib3hfc2VuZChkcCwgTUJfTU9EVUxFX0lEX0RQX1RYLCBEUFRY X1JFQURfRFBDRCwKKwkJCSAgICBBUlJBWV9TSVpFKG1zZyksIG1zZyk7CisKKwlzaXplID0gY2Ru X2RwX21haWxib3hfcmVzcG9uc2UoZHAsIE1CX01PRFVMRV9JRF9EUF9UWCwKKwkJCQkgICAgICAg RFBUWF9SRUFEX0RQQ0QsICZyZWcpOworCWlmIChzaXplICE9IDYpCisJCXJldHVybiAtRUlOVkFM OworCisJaWYgKChtc2dbMl0gPT0gcmVnWzJdKSAmJiAobXNnWzNdID09IHJlZ1szXSkgJiYgKG1z Z1s0XSA9PSByZWdbNF0pKQorCQlyZXR1cm4gcmVnWzVdOworCisJcmV0dXJuIC1FSU5WQUw7Cit9 CisKK2ludCBjZG5fZHBfYWN0aXZlKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwgdTggZW5hYmxl KQoreworCXU4IGFjdGl2ZSA9IGVuYWJsZSA/IDEgOiAwOworCXU4ICpyZXNwID0gTlVMTDsKKwlp bnQgc2l6ZTsKKworCS8qIHNldCBmaXJtd2FyZSBzdGF0dXMsIDE6IGF2dGl2ZTsgMDogc3RhbmRi eSAqLworCWNkbl9kcF9tYWlsYm94X3NlbmQoZHAsIE1CX01PRFVMRV9JRF9HRU5FUkFMLCBHRU5F UkFMX01BSU5fQ09OVFJPTCwKKwkJCSAgICAxLCAmYWN0aXZlKTsKKworCXNpemUgPSBjZG5fZHBf bWFpbGJveF9yZXNwb25zZShkcCwgTUJfTU9EVUxFX0lEX0dFTkVSQUwsCisJCQkJICAgICAgIEdF TkVSQUxfTUFJTl9DT05UUk9MLCAmcmVzcCk7CisJaWYgKHNpemUgIT0gMSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlyZXR1cm4gKnJlc3AgPyAwIDogLUVJTlZBTDsKK30KKworaW50IGNkbl9kcF9z ZXRfaG9zdF9jYXAoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKQoreworCXU4IG1zZ1s4XTsKKwor CW1zZ1swXSA9IERQX0xJTktfQldfNV80OworCW1zZ1sxXSA9IGRwLT5jYXBfbGFuZXM7CisJbXNn WzJdID0gVk9MVEFHRV9MRVZFTF8yOworCW1zZ1szXSA9IFBSRV9FTVBIQVNJU19MRVZFTF8zOwor CW1zZ1s0XSA9IFBSQlM3IHwgRDEwXzIgfCBUUkFJTklOR19QVE4xIHwgVFJBSU5JTkdfUFROMjsK Kwltc2dbNV0gPSBGQVNUX0xUX05PVF9TVVBQT1JUOworCW1zZ1s2XSA9IExBTkVfTUFQUElOR19O T1JNQUw7CisJbXNnWzddID0gRU5IQU5DRUQ7CisKKwljZG5fZHBfbWFpbGJveF9zZW5kKGRwLCBN Ql9NT0RVTEVfSURfRFBfVFgsCisJCQkgICAgRFBUWF9TRVRfSE9TVF9DQVBBQklMSVRJRVMsCisJ CQkgICAgQVJSQVlfU0laRShtc2cpLCBtc2cpOworCisJY2RuX2RwX3JlZ193cml0ZShkcCwgRFBf QVVYX1NXQVBfSU5WRVJTSU9OX0NPTlRST0wsIEFVWF9IT1NUX0lOVkVSVCk7CisKKwlyZXR1cm4g MDsKK30KKworaW50IGNkbl9kcF9ldmVudF9jb25maWcoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRw KQoreworCXU4IG1zZ1s1XTsKKworCW1zZ1swXSA9IERQVFhfRVZFTlRfRU5BQkxFX0hQRCB8IERQ VFhfRVZFTlRfRU5BQkxFX1RSQUlOSU5HOworCisJcmV0dXJuIGNkbl9kcF9tYWlsYm94X3NlbmQo ZHAsIE1CX01PRFVMRV9JRF9EUF9UWCwgRFBUWF9FTkFCTEVfRVZFTlQsCisJCQkJICAgIEFSUkFZ X1NJWkUobXNnKSwgbXNnKTsKK30KKworaW50IGNkbl9kcF9nZXRfZXZlbnQoc3RydWN0IGNkbl9k cF9kZXZpY2UgKmRwKQoreworCXJldHVybiByZWFkbChkcC0+cmVncyArIFNXX0VWRU5UUzApOwor fQorCitpbnQgY2RuX2RwX2dldF9ocGRfc3RhdHVzKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkK K3sKKwl1OCAqc3RhdHVzID0gTlVMTDsKKwlpbnQgc2l6ZTsKKworCWNkbl9kcF9tYWlsYm94X3Nl bmQoZHAsIE1CX01PRFVMRV9JRF9EUF9UWCwgRFBUWF9IUERfU1RBVEUsCisJCQkgICAgMCwgTlVM TCk7CisKKwlzaXplID0gY2RuX2RwX21haWxib3hfcmVzcG9uc2UoZHAsIE1CX01PRFVMRV9JRF9E UF9UWCwKKwkJCQkgICAgICAgRFBUWF9IUERfU1RBVEUsICZzdGF0dXMpOworCWlmIChzaXplICE9 IDEpCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuICpzdGF0dXM7Cit9CisKK2ludCBjZG5f ZHBfZ2V0X2VkaWRfYmxvY2sodm9pZCAqZGF0YSwgdTggKmVkaWQsCisJCQkgIHVuc2lnbmVkIGlu dCBibG9jaywgc2l6ZV90IGxlbmd0aCkKK3sKKwlzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAgPSBk YXRhOworCWludCBzaXplOworCXU4IG1zZ1syXSwgKnJlZyA9IE5VTEw7CisKKwlpZiAobGVuZ3Ro ICE9IEVESURfQkxPQ0tfU0laRSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltc2dbMF0gPSBibG9j ayAvIDI7CisJbXNnWzFdID0gYmxvY2sgJSAyOworCisJY2RuX2RwX21haWxib3hfc2VuZChkcCwg TUJfTU9EVUxFX0lEX0RQX1RYLCBEUFRYX0dFVF9FRElELAorCQkJICAgIDIsIG1zZyk7CisKKwlz aXplID0gY2RuX2RwX21haWxib3hfcmVzcG9uc2UoZHAsIE1CX01PRFVMRV9JRF9EUF9UWCwKKwkJ CQkgICAgICAgRFBUWF9HRVRfRURJRCwgJnJlZyk7CisKKwlpZiAoc2l6ZSAhPSBFRElEX0RBVEEg KyBFRElEX0JMT0NLX1NJWkUpIHsKKwkJZGV2X2VycihkcC0+ZGV2LCAicmVhZCBlZGlkIGZhaWxl ZFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICgocmVnW0VESURfTEVOR1RIX0JZ VEVdICE9IEVESURfQkxPQ0tfU0laRSkgfHwKKwkgICAgKHJlZ1tFRElEX1NFR01FTlRfQlVNQkVS XSAhPSBibG9jayAvIDIpKSB7CisJCWRldl9lcnIoZHAtPmRldiwgImVkaWQgYmxvY2sgc2l6ZSBl cnJcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwltZW1jcHkoZWRpZCwgJnJlZ1tFRElE X0RBVEFdLCBFRElEX0JMT0NLX1NJWkUpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBjZG5fZHBf dHJhaW5pbmdfc3RhcnQoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwKQoreworCWludCBzaXplOwor CXU4IG1zZywgKmV2ZW50ID0gTlVMTDsKKwl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CisKKwltc2cg PSBMSU5LX1RSQUlOSU5HX1JVTjsKKworCS8qIHN0YXJ0IHRyYWluaW5nICovCisJY2RuX2RwX21h aWxib3hfc2VuZChkcCwgTUJfTU9EVUxFX0lEX0RQX1RYLCBEUFRYX1RSQUlOSU5HX0NPTlRST0ws CisJCQkgICAgMSwgJm1zZyk7CisKKwkvKiB0aGUgd2hvbGUgdHJhaW5pbmcgc2hvdWxkIGZpbmlz aCBpbiA1MDBtcyAqLworCXRpbWVvdXQgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyg1MDAp OworCXdoaWxlICgxKSB7CisJCW1zbGVlcCgyMCk7CisJCWNkbl9kcF9tYWlsYm94X3NlbmQoZHAs IE1CX01PRFVMRV9JRF9EUF9UWCwgRFBUWF9SRUFEX0VWRU5ULAorCQkJCSAgICAwLCBOVUxMKTsK KworCQlzaXplID0gY2RuX2RwX21haWxib3hfcmVzcG9uc2UoZHAsIE1CX01PRFVMRV9JRF9EUF9U WCwKKwkJCQkJICAgICAgIERQVFhfUkVBRF9FVkVOVCwgJmV2ZW50KTsKKwkJaWYgKHNpemUgIT0g MikKKwkJCXJldHVybiAtRUlOVkFMOworCisJCWlmIChldmVudFsxXSAmIEVRX1BIQVNFX0ZJTklT SEVEKQorCQkJYnJlYWs7CisKKwkJaWYgKHRpbWVfYWZ0ZXIoamlmZmllcywgdGltZW91dCkpCisJ CQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50IGNkbl9kcF9n ZXRfbHRfc3RhdHVzKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkKK3sKKwl1OCAqc3RhdHVzID0g TlVMTDsKKwlpbnQgc2l6ZTsKKworCWNkbl9kcF9tYWlsYm94X3NlbmQoZHAsIE1CX01PRFVMRV9J RF9EUF9UWCwgRFBUWF9SRUFEX0xJTktfU1RBVCwKKwkJCSAgICAwLCBOVUxMKTsKKworCXNpemUg PSBjZG5fZHBfbWFpbGJveF9yZXNwb25zZShkcCwgTUJfTU9EVUxFX0lEX0RQX1RYLAorCQkJCSAg ICAgICBEUFRYX1JFQURfTElOS19TVEFULCAmc3RhdHVzKTsKKworCWlmIChzaXplICE9IDEwKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWRwLT5saW5rLnJhdGUgPSBzdGF0dXNbMF07CisJZHAtPmxp bmsubnVtX2xhbmVzID0gc3RhdHVzWzFdOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBjZG5fZHBf c2V0X3ZpZGVvX3N0YXR1cyhzdHJ1Y3QgY2RuX2RwX2RldmljZSAqZHAsIGludCBhY3RpdmUpCit7 CisJdTggbXNnOworCisJbXNnID0gISFhY3RpdmU7CisKKwljZG5fZHBfbWFpbGJveF9zZW5kKGRw LCBNQl9NT0RVTEVfSURfRFBfVFgsIERQVFhfU0VUX1ZJREVPLAorCQkJICAgIDEsICZtc2cpOwor CisJcmV0dXJuIDA7Cit9CisKK2ludCBjZG5fZHBfc2V0X2F1ZGlvX3N0YXR1cyhzdHJ1Y3QgY2Ru X2RwX2RldmljZSAqZHAsIGludCBhY3RpdmUpCit7CisJdTggbXNnOworCisJbXNnID0gISFhY3Rp dmU7CisKKwljZG5fZHBfbWFpbGJveF9zZW5kKGRwLCBNQl9NT0RVTEVfSURfRFBfVFgsIERQVFhf U0VUX0FVRElPLAorCQkJICAgIDEsICZtc2cpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgY2RuX2RwX2dldF9tc2FfbWlzYyhzdHJ1Y3QgdmlkZW9faW5mbyAqdmlkZW8sCisJCQkgICAg ICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJdTggdmFsMCwgdmFsMTsKKwl1 MzIgbXNhX21pc2M7CisKKwlzd2l0Y2ggKHZpZGVvLT5jb2xvcl9mbXQpIHsKKwljYXNlIFBYTF9S R0I6CisJY2FzZSBZX09OTFk6CisJCXZhbDAgPSAwOworCQlicmVhazsKKwljYXNlIFlDQkNSXzRf NF80OgorCQl2YWwwID0gNjsKKwkJYnJlYWs7CisJY2FzZSBZQ0JDUl80XzJfMjoKKwkJdmFsMCA9 IDU7CisJCWJyZWFrOworCWNhc2UgWUNCQ1JfNF8yXzA6CisJCXZhbDAgPSA1OworCQlicmVhazsK Kwl9OworCisJc3dpdGNoICh2aWRlby0+Y29sb3JfZGVwdGgpIHsKKwljYXNlIDY6CisJCXZhbDEg PSAwOworCQlicmVhazsKKwljYXNlIDg6CisJCXZhbDEgPSAxOworCQlicmVhazsKKwljYXNlIDEw OgorCQl2YWwxID0gMjsKKwkJYnJlYWs7CisJY2FzZSAxMjoKKwkJdmFsMSA9IDM7CisJCWJyZWFr OworCWNhc2UgMTY6CisJCXZhbDEgPSA0OworCQlicmVhazsKKwl9OworCisJbXNhX21pc2MgPSAy ICogdmFsMCArIDMyICogdmFsMSArCisJCSAgICgodmlkZW8tPmNvbG9yX2ZtdCA9PSBZX09OTFkp ID8gKDEgPDwgMTQpIDogMCk7CisKKwlyZXR1cm4gbXNhX21pc2M7Cit9CisKK2ludCBjZG5fZHBf Y29uZmlnX3ZpZGVvKHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCkKK3sKKwlzdHJ1Y3QgdmlkZW9f aW5mbyAqdmlkZW8gPSAmZHAtPnZpZGVvX2luZm87CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg Km1vZGUgPSAmZHAtPm1vZGU7CisJdTMyIHZhbCwgbGlua19yYXRlOworCXU4IGJpdF9wZXJfcGl4 OworCisJYml0X3Blcl9waXggPSAodmlkZW8tPmNvbG9yX2ZtdCA9PSBZQ0JDUl80XzJfMikgPwor CQkgICAgICAodmlkZW8tPmNvbG9yX2RlcHRoICogMikgOiAodmlkZW8tPmNvbG9yX2RlcHRoICog Myk7CisKKwl2YWwgPSBWSUZfQllQQVNTX0lOVEVSTEFDRTsKKworCWNkbl9kcF9yZWdfd3JpdGUo ZHAsIEJORF9IU1lOQzJWU1lOQywgdmFsKTsKKworCWNkbl9kcF9yZWdfd3JpdGUoZHAsIEhTWU5D MlZTWU5DX1BPTF9DVFJMLCAwKTsKKworCWxpbmtfcmF0ZSA9IGRybV9kcF9id19jb2RlX3RvX2xp bmtfcmF0ZShkcC0+bGluay5yYXRlKSAvIDEwMDA7CisKKwl2YWwgPSBUVV9TSVpFICogbW9kZS0+ Y2xvY2sgKiBiaXRfcGVyX3BpeDsKKwl2YWwgLz0gZHAtPmxpbmsubnVtX2xhbmVzICogbGlua19y YXRlICogOCAqIDEwMDA7CisJdmFsICs9IFRVX1NJWkUgPDwgODsKKworCWNkbl9kcF9yZWdfd3Jp dGUoZHAsIERQX0ZSQU1FUl9UVSwgdmFsKTsKKworCXN3aXRjaCAodmlkZW8tPmNvbG9yX2RlcHRo KSB7CisJY2FzZSA2OgorCQl2YWwgPSBCQ1NfNjsKKwkJYnJlYWs7CisJY2FzZSA4OgorCQl2YWwg PSBCQ1NfODsKKwkJYnJlYWs7CisJY2FzZSAxMDoKKwkJdmFsID0gQkNTXzEwOworCQlicmVhazsK KwljYXNlIDEyOgorCQl2YWwgPSBCQ1NfMTI7CisJCWJyZWFrOworCWNhc2UgMTY6CisJCXZhbCA9 IEJDU18xNjsKKwkJYnJlYWs7CisJfTsKKworCXZhbCArPSB2aWRlby0+Y29sb3JfZm10IDw8IDg7 CisJY2RuX2RwX3JlZ193cml0ZShkcCwgRFBfRlJBTUVSX1BYTF9SRVBSLCB2YWwpOworCisJdmFs ID0gdmlkZW8tPmhfc3luY19wb2xhcml0eSA/IERQX0ZSQU1FUl9TUF9IU1AgOiAwOworCXZhbCB8 PSB2aWRlby0+dl9zeW5jX3BvbGFyaXR5ID8gRFBfRlJBTUVSX1NQX1ZTUCA6IDA7CisJY2RuX2Rw X3JlZ193cml0ZShkcCwgRFBfRlJBTUVSX1NQLCB2YWwpOworCisJdmFsID0gKG1vZGUtPmhzeW5j X3N0YXJ0IC0gbW9kZS0+aGRpc3BsYXkpIDw8IDE2OworCXZhbCB8PSBtb2RlLT5odG90YWwgLSBt b2RlLT5oc3luY19lbmQ7CisJY2RuX2RwX3JlZ193cml0ZShkcCwgRFBfRlJPTlRfQkFDS19QT1JD SCwgdmFsKTsKKworCXZhbCA9IG1vZGUtPmhkaXNwbGF5ICogYml0X3Blcl9waXggLyA4OworCWNk bl9kcF9yZWdfd3JpdGUoZHAsIERQX0JZVEVfQ09VTlQsIHZhbCk7CisKKwl2YWwgPSBtb2RlLT5o dG90YWwgfCAoKG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX3N0YXJ0KSA8PCAxNik7CisJY2Ru X2RwX3JlZ193cml0ZShkcCwgTVNBX0hPUklaT05UQUxfMCwgdmFsKTsKKworCXZhbCA9IG1vZGUt PmhzeW5jX2VuZCAtIG1vZGUtPmhzeW5jX3N0YXJ0OworCXZhbCB8PSAobW9kZS0+aGRpc3BsYXkg PDwgMTYpIHwgKHZpZGVvLT5oX3N5bmNfcG9sYXJpdHkgPDwgMTUpOworCWNkbl9kcF9yZWdfd3Jp dGUoZHAsIE1TQV9IT1JJWk9OVEFMXzEsIHZhbCk7CisKKwl2YWwgPSBtb2RlLT52dG90YWw7CisJ dmFsIHw9ICgobW9kZS0+dnRvdGFsIC0gbW9kZS0+dnN5bmNfc3RhcnQpIDw8IDE2KTsKKworCWNk bl9kcF9yZWdfd3JpdGUoZHAsIE1TQV9WRVJUSUNBTF8wLCB2YWwpOworCisJdmFsID0gbW9kZS0+ dnN5bmNfZW5kIC0gbW9kZS0+dnN5bmNfc3RhcnQ7CisJdmFsIHw9IG1vZGUtPnZkaXNwbGF5IDw8 IDE2OworCXZhbCB8PSAodmlkZW8tPnZfc3luY19wb2xhcml0eSA8PCAxNSk7CisJY2RuX2RwX3Jl Z193cml0ZShkcCwgTVNBX1ZFUlRJQ0FMXzEsIHZhbCk7CisKKwl2YWwgPSBjZG5fZHBfZ2V0X21z YV9taXNjKHZpZGVvLCBtb2RlKTsKKwljZG5fZHBfcmVnX3dyaXRlKGRwLCBNU0FfTUlTQywgdmFs KTsKKworCWNkbl9kcF9yZWdfd3JpdGUoZHAsIFNUUkVBTV9DT05GSUcsIDEpOworCisJdmFsID0g bW9kZS0+aHN5bmNfZW5kIC0gbW9kZS0+aHN5bmNfc3RhcnQ7CisJdmFsIHw9IChtb2RlLT5oZGlz cGxheSA8PCAxNik7CisJY2RuX2RwX3JlZ193cml0ZShkcCwgRFBfSE9SSVpPTlRBTCwgdmFsKTsK KworCXZhbCA9IG1vZGUtPnZ0b3RhbDsKKwl2YWwgLT0gKG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZk aXNwbGF5KTsKKwl2YWwgfD0gKG1vZGUtPnZ0b3RhbCAtIG1vZGUtPnZzeW5jX3N0YXJ0KSA8PCAx NjsKKworCWNkbl9kcF9yZWdfd3JpdGUoZHAsIERQX1ZFUlRJQ0FMXzAsIHZhbCk7CisKKwl2YWwg PSBtb2RlLT52dG90YWw7CisJY2RuX2RwX3JlZ193cml0ZShkcCwgRFBfVkVSVElDQUxfMSwgdmFs KTsKKworCXZhbCA9ICAwOworCWNkbl9kcF9yZWdfd3JpdGVfYml0KGRwLCBEUF9WQl9JRCwgMiwg MSwgdmFsKTsKKworCXJldHVybiAwOworfQorCitpbnQgY2RuX2RwX2F1ZGlvX3N0b3Aoc3RydWN0 IGNkbl9kcF9kZXZpY2UgKmRwLCBzdHJ1Y3QgYXVkaW9faW5mbyAqYXVkaW8pCit7CisJY2RuX2Rw X3JlZ193cml0ZShkcCwgQVVESU9fUEFDS19DT05UUk9MLCBBVURJT19QQUNLX0VOKDApKTsKKwor CWlmIChhdWRpby0+Zm9ybWF0ID09IEFGTVRfU1BESUYpCisJCWNsa19kaXNhYmxlX3VucHJlcGFy ZShkcC0+c3BkaWZfY2xrKTsKKworCXJldHVybiAwOworfQorCitpbnQgY2RuX2RwX2F1ZGlvX211 dGUoc3RydWN0IGNkbl9kcF9kZXZpY2UgKmRwLCBib29sIGVuYWJsZSkKK3sKKwljZG5fZHBfcmVn X3dyaXRlX2JpdChkcCwgRFBfVkJfSUQsIDQsIDEsIGVuYWJsZSk7CisKKwlyZXR1cm4gMDsKK30K KworaW50IGNkbl9kcF9hdWRpb19jb25maWdfc2V0KHN0cnVjdCBjZG5fZHBfZGV2aWNlICpkcCwg c3RydWN0IGF1ZGlvX2luZm8gKmF1ZGlvKQoreworCWludCBsYW5lc19wYXJhbSwgaTJzX3BvcnRf ZW5fdmFsLCB2YWwsIGk7CisKKwlpZiAoKGF1ZGlvLT5jaGFubmVscyA9PSAyKSAmJiAoZHAtPmxp bmsubnVtX2xhbmVzID09IDEpKQorCQlsYW5lc19wYXJhbSA9IDE7CisJZWxzZSBpZiAoYXVkaW8t PmNoYW5uZWxzID09IDIpCisJCWxhbmVzX3BhcmFtID0gMzsKKwllbHNlCisJCWxhbmVzX3BhcmFt ID0gMDsKKworCWlmIChhdWRpby0+Y2hhbm5lbHMgPT0gMikKKwkJaTJzX3BvcnRfZW5fdmFsID0g MTsKKwllbHNlIGlmIChhdWRpby0+Y2hhbm5lbHMgPT0gNCkKKwkJaTJzX3BvcnRfZW5fdmFsID0g MzsKKwllbHNlCisJCWkyc19wb3J0X2VuX3ZhbCA9IDB4ZjsKKworCWNkbl9kcF9yZWdfd3JpdGUo ZHAsIENNX0xBTkVfQ1RSTCwgMHg4MDAwKTsKKworCWNkbl9kcF9yZWdfd3JpdGUoZHAsIENNX0NU UkwsIDApOworCisJaWYgKGF1ZGlvLT5mb3JtYXQgPT0gQUZNVF9JMlMpIHsKKwkJd3JpdGVsKDB4 MCwgZHAtPnJlZ3MgKyBTUERJRl9DVFJMX0FERFIpOworCisJCXdyaXRlbChTWU5DX1dSX1RPX0NI X1pFUk8sIGRwLT5yZWdzICsgRklGT19DTlRMKTsKKworCQl2YWwgPSBhdWRpby0+Y2hhbm5lbHMg LSAxOworCQl2YWwgfD0gKGF1ZGlvLT5jaGFubmVscyAvIDIgLSAxKSA8PCA1OworCQl2YWwgfD0g QklUKDgpOworCQl2YWwgfD0gbGFuZXNfcGFyYW0gPDwgMTE7CisJCXdyaXRlbCh2YWwsIGRwLT5y ZWdzICsgU01QTDJQS1RfQ05GRyk7CisKKwkJaWYgKGF1ZGlvLT5zYW1wbGVfd2lkdGggPT0gMTYp CisJCQl2YWwgPSAwOworCQllbHNlIGlmIChhdWRpby0+c2FtcGxlX3dpZHRoID09IDI0KQorCQkJ dmFsID0gMSA8PCA5OworCQllbHNlCisJCQl2YWwgPSAyIDw8IDk7CisKKwkJdmFsIHw9IChhdWRp by0+Y2hhbm5lbHMgLSAxKSA8PCAyOworCQl2YWwgfD0gaTJzX3BvcnRfZW5fdmFsIDw8IDE3Owor CQl2YWwgfD0gMiA8PCAxMTsKKwkJd3JpdGVsKHZhbCwgZHAtPnJlZ3MgKyBBVURJT19TUkNfQ05G Ryk7CisKKwkJZm9yIChpID0gMDsgaSA8IChhdWRpby0+Y2hhbm5lbHMgKyAxKSAvIDI7IGkrKykg eworCQkJaWYgKGF1ZGlvLT5zYW1wbGVfd2lkdGggPT0gMTYpCisJCQkJdmFsID0gKDB4MDggPDwg OCkgfCAoMHgwOCA8PCAyMCk7CisJCQllbHNlIGlmIChhdWRpby0+c2FtcGxlX3dpZHRoID09IDI0 KQorCQkJCXZhbCA9ICgweDBiIDw8IDgpIHwgKDB4MGIgPDwgMjApOworCisJCQl2YWwgfD0gKCgy ICogaSkgPDwgNCkgfCAoKDIgKiBpICsgMSkgPDwgMTYpOworCQkJd3JpdGVsKHZhbCwgZHAtPnJl Z3MgKyBTVFRTX0JJVF9DSChpKSk7CisJCX0KKworCQlzd2l0Y2ggKGF1ZGlvLT5zYW1wbGVfcmF0 ZSkgeworCQljYXNlIDMyMDAwOgorCQkJdmFsID0gU0FNUExJTkdfRlJFUSgzKSB8CisJCQkgICAg ICBPUklHSU5BTF9TQU1QX0ZSRVEoMHhjKTsKKwkJCWJyZWFrOworCQljYXNlIDQ0MTAwOgorCQkJ dmFsID0gU0FNUExJTkdfRlJFUSgwKSB8CisJCQkgICAgICBPUklHSU5BTF9TQU1QX0ZSRVEoMHhm KTsKKwkJCWJyZWFrOworCQljYXNlIDQ4MDAwOgorCQkJdmFsID0gU0FNUExJTkdfRlJFUSgyKSB8 CisJCQkgICAgICBPUklHSU5BTF9TQU1QX0ZSRVEoMHhkKTsKKwkJCWJyZWFrOworCQljYXNlIDg4 MjAwOgorCQkJdmFsID0gU0FNUExJTkdfRlJFUSg4KSB8CisJCQkgICAgICBPUklHSU5BTF9TQU1Q X0ZSRVEoMHg3KTsKKwkJCWJyZWFrOworCQljYXNlIDk2MDAwOgorCQkJdmFsID0gU0FNUExJTkdf RlJFUSgweGEpIHwKKwkJCSAgICAgIE9SSUdJTkFMX1NBTVBfRlJFUSg1KTsKKwkJCWJyZWFrOwor CQljYXNlIDE3NjQwMDoKKwkJCXZhbCA9IFNBTVBMSU5HX0ZSRVEoMHhjKSB8CisJCQkgICAgICBP UklHSU5BTF9TQU1QX0ZSRVEoMyk7CisJCQlicmVhazsKKwkJY2FzZSAxOTIwMDA6CisJCQl2YWwg PSBTQU1QTElOR19GUkVRKDB4ZSkgfAorCQkJICAgICAgT1JJR0lOQUxfU0FNUF9GUkVRKDEpOwor CQkJYnJlYWs7CisJCX0KKwkJdmFsIHw9IDQ7CisJCXdyaXRlbCh2YWwsIGRwLT5yZWdzICsgQ09N X0NIX1NUVFNfQklUUyk7CisKKwkJd3JpdGVsKDIsIGRwLT5yZWdzICsgU01QTDJQS1RfQ05UTCk7 CisJCXdyaXRlbCgyLCBkcC0+cmVncyArIEFVRElPX1NSQ19DTlRMKTsKKwkJY2RuX2RwX3JlZ193 cml0ZV9iaXQoZHAsIERQX1ZCX0lELCA0LCAxLCAwKTsKKwl9IGVsc2UgeworCQl2YWwgPSAweDFG MDcwNzsKKwkJd3JpdGVsKHZhbCwgZHAtPnJlZ3MgKyBTUERJRl9DVFJMX0FERFIpOworCisJCXdy aXRlbChTWU5DX1dSX1RPX0NIX1pFUk8sIGRwLT5yZWdzICsgRklGT19DTlRMKTsKKworCQl2YWwg PSAweDEwMSB8ICgzIDw8IDExKTsKKwkJd3JpdGVsKHZhbCwgZHAtPnJlZ3MgKyBTTVBMMlBLVF9D TkZHKTsKKwkJd3JpdGVsKDIsIGRwLT5yZWdzICsgU01QTDJQS1RfQ05UTCk7CisKKwkJdmFsID0g MHgzRjA3MDc7CisJCXdyaXRlbCh2YWwsIGRwLT5yZWdzICsgU1BESUZfQ1RSTF9BRERSKTsKKwl9 CisKKwlpZiAoYXVkaW8tPmZvcm1hdCA9PSBBRk1UX1NQRElGKSB7CisJCWNsa19wcmVwYXJlX2Vu YWJsZShkcC0+c3BkaWZfY2xrKTsKKwkJY2xrX3NldF9yYXRlKGRwLT5zcGRpZl9jbGssIDQwMDAw MDAwMCk7CisJfQorCisJcmV0dXJuIGNkbl9kcF9yZWdfd3JpdGUoZHAsIEFVRElPX1BBQ0tfQ09O VFJPTCwgQVVESU9fUEFDS19FTigxKSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cm9ja2NoaXAvY2RuLWRwLXJlZy5oIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1y ZWcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTZhMWNjCi0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL2Nkbi1kcC1yZWcuaApAQCAtMCww ICsxLDQwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgRnV6aG91IFJvY2tjaGlwIEVsZWN0cm9u aWNzIENvLkx0ZAorICogQXV0aG9yOiBDaHJpcyBaaG9uZyA8enl3QHJvY2stY2hpcHMuY29tPgor ICoKKyAqIFRoaXMgc29mdHdhcmUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgYW5kCisgKiBtYXkgYmUgY29waWVkLCBkaXN0 cmlidXRlZCwgYW5kIG1vZGlmaWVkIHVuZGVyIHRob3NlIHRlcm1zLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKi8KKworI2lmbmRlZiBfQ0ROX0RQX1JFR19ICisjZGVmaW5lIF9DRE5fRFBf UkVHX0gKKworI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgorCisjZGVmaW5lIEFERFJfSU1FTQkJ MHgxMDAwMAorI2RlZmluZSBBRERSX0RNRU0JCTB4MjAwMDAKKworLyogQVBCIENGRyBhZGRyICov CisjZGVmaW5lIEFQQl9DVFJMCQkJMAorI2RlZmluZSBYVF9JTlRfQ1RSTAkJCTB4MDQKKyNkZWZp bmUgTUFJTEJPWF9GVUxMX0FERFIJCTB4MDgKKyNkZWZpbmUgTUFJTEJPWF9FTVBUWV9BRERSCQkw eDBjCisjZGVmaW5lIE1BSUxCT1gwX1dSX0RBVEEJCTB4MTAKKyNkZWZpbmUgTUFJTEJPWDBfUkRf REFUQQkJMHgxNAorI2RlZmluZSBLRUVQX0FMSVZFCQkJMHgxOAorI2RlZmluZSBWRVJfTAkJCQkw eDFjCisjZGVmaW5lIFZFUl9ICQkJCTB4MjAKKyNkZWZpbmUgVkVSX0xJQl9MX0FERFIJCQkweDI0 CisjZGVmaW5lIFZFUl9MSUJfSF9BRERSCQkJMHgyOAorI2RlZmluZSBTV19ERUJVR19MCQkJMHgy YworI2RlZmluZSBTV19ERUJVR19ICQkJMHgzMAorI2RlZmluZSBNQUlMQk9YX0lOVF9NQVNLCQkw eDM0CisjZGVmaW5lIE1BSUxCT1hfSU5UX1NUQVRVUwkJMHgzOAorI2RlZmluZSBTV19DTEtfTAkJ CTB4M2MKKyNkZWZpbmUgU1dfQ0xLX0gJCQkweDQwCisjZGVmaW5lIFNXX0VWRU5UUzAJCQkweDQ0 CisjZGVmaW5lIFNXX0VWRU5UUzEJCQkweDQ4CisjZGVmaW5lIFNXX0VWRU5UUzIJCQkweDRjCisj ZGVmaW5lIFNXX0VWRU5UUzMJCQkweDUwCisjZGVmaW5lIFhUX09DRF9DVFJMCQkJMHg2MAorI2Rl ZmluZSBBUEJfSU5UX01BU0sJCQkweDZjCisjZGVmaW5lIEFQQl9TVEFUVVNfTUFTSwkJCTB4NzAK KworLyogYXVkaW8gZGVjb2RlciBhZGRyICovCisjZGVmaW5lIEFVRElPX1NSQ19DTlRMCQkJMHgz MDAwMAorI2RlZmluZSBBVURJT19TUkNfQ05GRwkJCTB4MzAwMDQKKyNkZWZpbmUgQ09NX0NIX1NU VFNfQklUUwkJMHgzMDAwOAorI2RlZmluZSBTVFRTX0JJVF9DSCh4KQkJCSgweDMwMDBjICsgKHgg PDwgMikpCisjZGVmaW5lIFNQRElGX0NUUkxfQUREUgkJCTB4MzAwNGMKKyNkZWZpbmUgU1BESUZf Q0gxX0NTXzMxMDBfQUREUgkJMHgzMDA1MAorI2RlZmluZSBTUERJRl9DSDFfQ1NfNjMzMl9BRERS CQkweDMwMDU0CisjZGVmaW5lIFNQRElGX0NIMV9DU185NTY0X0FERFIJCTB4MzAwNTgKKyNkZWZp bmUgU1BESUZfQ0gxX0NTXzEyNzk2X0FERFIJCTB4MzAwNWMKKyNkZWZpbmUgU1BESUZfQ0gxX0NT XzE1OTEyOF9BRERSCTB4MzAwNjAKKyNkZWZpbmUgU1BESUZfQ0gxX0NTXzE5MTE2MF9BRERSCTB4 MzAwNjQKKyNkZWZpbmUgU1BESUZfQ0gyX0NTXzMxMDBfQUREUgkJMHgzMDA2OAorI2RlZmluZSBT UERJRl9DSDJfQ1NfNjMzMl9BRERSCQkweDMwMDZjCisjZGVmaW5lIFNQRElGX0NIMl9DU185NTY0 X0FERFIJCTB4MzAwNzAKKyNkZWZpbmUgU1BESUZfQ0gyX0NTXzEyNzk2X0FERFIJCTB4MzAwNzQK KyNkZWZpbmUgU1BESUZfQ0gyX0NTXzE1OTEyOF9BRERSCTB4MzAwNzgKKyNkZWZpbmUgU1BESUZf Q0gyX0NTXzE5MTE2MF9BRERSCTB4MzAwN2MKKyNkZWZpbmUgU01QTDJQS1RfQ05UTAkJCTB4MzAw ODAKKyNkZWZpbmUgU01QTDJQS1RfQ05GRwkJCTB4MzAwODQKKyNkZWZpbmUgRklGT19DTlRMCQkJ MHgzMDA4OAorI2RlZmluZSBGSUZPX1NUVFMJCQkweDMwMDhjCisKKy8qIHNvdXJjZSBwaWYgYWRk ciAqLworI2RlZmluZSBTT1VSQ0VfUElGX1dSX0FERFIJCTB4MzA4MDAKKyNkZWZpbmUgU09VUkNF X1BJRl9XUl9SRVEJCTB4MzA4MDQKKyNkZWZpbmUgU09VUkNFX1BJRl9SRF9BRERSCQkweDMwODA4 CisjZGVmaW5lIFNPVVJDRV9QSUZfUkRfUkVRCQkweDMwODBjCisjZGVmaW5lIFNPVVJDRV9QSUZf REFUQV9XUgkJMHgzMDgxMAorI2RlZmluZSBTT1VSQ0VfUElGX0RBVEFfUkQJCTB4MzA4MTQKKyNk ZWZpbmUgU09VUkNFX1BJRl9GSUZPMV9GTFVTSAkJMHgzMDgxOAorI2RlZmluZSBTT1VSQ0VfUElG X0ZJRk8yX0ZMVVNICQkweDMwODFjCisjZGVmaW5lIFNPVVJDRV9QSUZfU1RBVFVTCQkweDMwODIw CisjZGVmaW5lIFNPVVJDRV9QSUZfSU5URVJSVVBUX1NPVVJDRQkweDMwODI0CisjZGVmaW5lIFNP VVJDRV9QSUZfSU5URVJSVVBUX01BU0sJMHgzMDgyOAorI2RlZmluZSBTT1VSQ0VfUElGX1BLVF9B TExPQ19SRUcJMHgzMDgyYworI2RlZmluZSBTT1VSQ0VfUElGX1BLVF9BTExPQ19XUl9FTgkweDMw ODMwCisjZGVmaW5lIFNPVVJDRV9QSUZfU1dfUkVTRVQJCTB4MzA4MzQKKworLyogYmVsbG93IHJl Z2lzdGVycyBuZWVkIGFjY2VzcyBieSBtYWlsYm94ICovCisvKiBzb3VyY2UgY2FyIGFkZHIgKi8K KyNkZWZpbmUgU09VUkNFX0hEVFhfQ0FSCQkJMHgwOTAwCisjZGVmaW5lIFNPVVJDRV9EUFRYX0NB UgkJCTB4MDkwNAorI2RlZmluZSBTT1VSQ0VfUEhZX0NBUgkJCTB4MDkwOAorI2RlZmluZSBTT1VS Q0VfQ0VDX0NBUgkJCTB4MDkwYworI2RlZmluZSBTT1VSQ0VfQ0JVU19DQVIJCQkweDA5MTAKKyNk ZWZpbmUgU09VUkNFX1BLVF9DQVIJCQkweDA5MTgKKyNkZWZpbmUgU09VUkNFX0FJRl9DQVIJCQkw eDA5MWMKKyNkZWZpbmUgU09VUkNFX0NJUEhFUl9DQVIJCTB4MDkyMAorI2RlZmluZSBTT1VSQ0Vf Q1JZUFRPX0NBUgkJMHgwOTI0CisKKy8qIGNsb2NrIG1ldGVycyBhZGRyICovCisjZGVmaW5lIENN X0NUUkwJCQkJMHgwYTAwCisjZGVmaW5lIENNX0kyU19DVFJMCQkJMHgwYTA0CisjZGVmaW5lIENN X1NQRElGX0NUUkwJCQkweDBhMDgKKyNkZWZpbmUgQ01fVklEX0NUUkwJCQkweDBhMGMKKyNkZWZp bmUgQ01fTEFORV9DVFJMCQkJMHgwYTEwCisjZGVmaW5lIEkyU19OTV9TVEFCTEUJCQkweDBhMTQK KyNkZWZpbmUgSTJTX05DVFNfU1RBQkxFCQkJMHgwYTE4CisjZGVmaW5lIFNQRElGX05NX1NUQUJM RQkJCTB4MGExYworI2RlZmluZSBTUERJRl9OQ1RTX1NUQUJMRQkJMHgwYTIwCisjZGVmaW5lIE5N VklEX01FQVNfU1RBQkxFCQkweDBhMjQKKyNkZWZpbmUgSTJTX01FQVMJCQkweDBhNDAKKyNkZWZp bmUgU1BESUZfTUVBUwkJCTB4MGE4MAorI2RlZmluZSBOTVZJRF9NRUFTCQkJMHgwYWMwCisKKy8q IHNvdXJjZSB2aWYgYWRkciAqLworI2RlZmluZSBCTkRfSFNZTkMyVlNZTkMJCQkweDBiMDAKKyNk ZWZpbmUgSFNZTkMyVlNZTkNfRjFfTDEJCTB4MGIwNAorI2RlZmluZSBIU1lOQzJWU1lOQ19GMl9M MQkJMHgwYjA4CisjZGVmaW5lIEhTWU5DMlZTWU5DX1NUQVRVUwkJMHgwYjBjCisjZGVmaW5lIEhT WU5DMlZTWU5DX1BPTF9DVFJMCQkweDBiMTAKKworLyogZHB0eCBwaHkgYWRkciAqLworI2RlZmlu ZSBEUF9UWF9QSFlfQ09ORklHX1JFRwkJMHgyMDAwCisjZGVmaW5lIERQX1RYX1BIWV9TVEFUVVNf UkVHCQkweDIwMDQKKyNkZWZpbmUgRFBfVFhfUEhZX1NXX1JFU0VUCQkweDIwMDgKKyNkZWZpbmUg RFBfVFhfUEhZX1NDUkFNQkxFUl9TRUVECTB4MjAwYworI2RlZmluZSBEUF9UWF9QSFlfVFJBSU5J TkdfMDFfMDQJMHgyMDEwCisjZGVmaW5lIERQX1RYX1BIWV9UUkFJTklOR18wNV8wOAkweDIwMTQK KyNkZWZpbmUgRFBfVFhfUEhZX1RSQUlOSU5HXzA5XzEwCTB4MjAxOAorI2RlZmluZSBURVNUX0NP UgkJCTB4MjNmYworCisvKiBkcHR4IGhwZCBhZGRyICovCisjZGVmaW5lIEhQRF9JUlFfREVUX01J Tl9USU1FUgkJMHgyMTAwCisjZGVmaW5lIEhQRF9JUlFfREVUX01BWF9USU1FUgkJMHgyMTA0Cisj ZGVmaW5lIEhQRF9VTlBMR0VEX0RFVF9NSU5fVElNRVIJMHgyMTA4CisjZGVmaW5lIEhQRF9TVEFC TEVfVElNRVIJCTB4MjEwYworI2RlZmluZSBIUERfRklMVEVSX1RJTUVSCQkweDIxMTAKKyNkZWZp bmUgSFBEX0VWRU5UX01BU0sJCQkweDIxMWMKKyNkZWZpbmUgSFBEX0VWRU5UX0RFVAkJCTB4MjEy MAorCisvKiBkcHl4IGZyYW1lciBhZGRyICovCisjZGVmaW5lIERQX0ZSQU1FUl9HTE9CQUxfQ09O RklHCQkweDIyMDAKKyNkZWZpbmUgRFBfU1dfUkVTRVQJCQkweDIyMDQKKyNkZWZpbmUgRFBfRlJB TUVSX1RVCQkJMHgyMjA4CisjZGVmaW5lIERQX0ZSQU1FUl9QWExfUkVQUgkJMHgyMjBjCisjZGVm aW5lIERQX0ZSQU1FUl9TUAkJCTB4MjIxMAorI2RlZmluZSBBVURJT19QQUNLX0NPTlRST0wJCTB4 MjIxNAorI2RlZmluZSBEUF9WQ19UQUJMRSh4KQkJCSgweDIyMTggKyAoeCA8PCAyKSkKKyNkZWZp bmUgRFBfVkJfSUQJCQkweDIyNTgKKyNkZWZpbmUgRFBfTVRQSF9MVlBfQ09OVFJPTAkJMHgyMjVj CisjZGVmaW5lIERQX01UUEhfU1lNQk9MX1ZBTFVFUwkJMHgyMjYwCisjZGVmaW5lIERQX01UUEhf RUNGX0NPTlRST0wJCTB4MjI2NAorI2RlZmluZSBEUF9NVFBIX0FDVF9DT05UUk9MCQkweDIyNjgK KyNkZWZpbmUgRFBfTVRQSF9TVEFUVVMJCQkweDIyNmMKKyNkZWZpbmUgRFBfSU5URVJSVVBUX1NP VVJDRQkJMHgyMjcwCisjZGVmaW5lIERQX0lOVEVSUlVQVF9NQVNLCQkweDIyNzQKKyNkZWZpbmUg RFBfRlJPTlRfQkFDS19QT1JDSAkJMHgyMjc4CisjZGVmaW5lIERQX0JZVEVfQ09VTlQJCQkweDIy N2MKKworLyogZHB0eCBzdHJlYW0gYWRkciAqLworI2RlZmluZSBNU0FfSE9SSVpPTlRBTF8wCQkw eDIyODAKKyNkZWZpbmUgTVNBX0hPUklaT05UQUxfMQkJMHgyMjg0CisjZGVmaW5lIE1TQV9WRVJU SUNBTF8wCQkJMHgyMjg4CisjZGVmaW5lIE1TQV9WRVJUSUNBTF8xCQkJMHgyMjhjCisjZGVmaW5l IE1TQV9NSVNDCQkJMHgyMjkwCisjZGVmaW5lIFNUUkVBTV9DT05GSUcJCQkweDIyOTQKKyNkZWZp bmUgQVVESU9fUEFDS19TVEFUVVMJCTB4MjI5OAorI2RlZmluZSBWSUZfU1RBVFVTCQkJMHgyMjlj CisjZGVmaW5lIFBDS19TVFVGRl9TVEFUVVNfMAkJMHgyMmEwCisjZGVmaW5lIFBDS19TVFVGRl9T VEFUVVNfMQkJMHgyMmE0CisjZGVmaW5lIElORk9fUEFDS19TVEFUVVMJCTB4MjJhOAorI2RlZmlu ZSBSQVRFX0dPVkVSTk9SX1NUQVRVUwkJMHgyMmFjCisjZGVmaW5lIERQX0hPUklaT05UQUwJCQkw eDIyYjAKKyNkZWZpbmUgRFBfVkVSVElDQUxfMAkJCTB4MjJiNAorI2RlZmluZSBEUF9WRVJUSUNB TF8xCQkJMHgyMmI4CisjZGVmaW5lIERQX0JMT0NLX1NEUAkJCTB4MjJiYworCisvKiBkcHR4IGds YmwgYWRkciAqLworI2RlZmluZSBEUFRYX0xBTkVfRU4JCQkweDIzMDAKKyNkZWZpbmUgRFBUWF9F TkhOQ0QJCQkweDIzMDQKKyNkZWZpbmUgRFBUWF9JTlRfTUFTSwkJCTB4MjMwOAorI2RlZmluZSBE UFRYX0lOVF9TVEFUVVMJCQkweDIzMGMKKworLyogZHAgYXV4IGFkZHIgKi8KKyNkZWZpbmUgRFBf QVVYX0hPU1RfQ09OVFJPTAkJMHgyODAwCisjZGVmaW5lIERQX0FVWF9JTlRFUlJVUFRfU09VUkNF CQkweDI4MDQKKyNkZWZpbmUgRFBfQVVYX0lOVEVSUlVQVF9NQVNLCQkweDI4MDgKKyNkZWZpbmUg RFBfQVVYX1NXQVBfSU5WRVJTSU9OX0NPTlRST0wJMHgyODBjCisjZGVmaW5lIERQX0FVWF9TRU5E X05BQ0tfVFJBTlNBQ1RJT04JMHgyODEwCisjZGVmaW5lIERQX0FVWF9DTEVBUl9SWAkJCTB4Mjgx NAorI2RlZmluZSBEUF9BVVhfQ0xFQVJfVFgJCQkweDI4MTgKKyNkZWZpbmUgRFBfQVVYX1RJTUVS X1NUT1AJCTB4MjgxYworI2RlZmluZSBEUF9BVVhfVElNRVJfQ0xFQVIJCTB4MjgyMAorI2RlZmlu ZSBEUF9BVVhfUkVTRVRfU1cJCQkweDI4MjQKKyNkZWZpbmUgRFBfQVVYX0RJVklERV8yTQkJMHgy ODI4CisjZGVmaW5lIERQX0FVWF9UWF9QUkVBQ0hBUkdFX0xFTkdUSAkweDI4MmMKKyNkZWZpbmUg RFBfQVVYX0ZSRVFVRU5DWV8xTV9NQVgJCTB4MjgzMAorI2RlZmluZSBEUF9BVVhfRlJFUVVFTkNZ XzFNX01JTgkJMHgyODM0CisjZGVmaW5lIERQX0FVWF9SWF9QUkVfTUlOCQkweDI4MzgKKyNkZWZp bmUgRFBfQVVYX1JYX1BSRV9NQVgJCTB4MjgzYworI2RlZmluZSBEUF9BVVhfVElNRVJfUFJFU0VU CQkweDI4NDAKKyNkZWZpbmUgRFBfQVVYX05BQ0tfRk9STUFUCQkweDI4NDQKKyNkZWZpbmUgRFBf QVVYX1RYX0RBVEEJCQkweDI4NDgKKyNkZWZpbmUgRFBfQVVYX1JYX0RBVEEJCQkweDI4NGMKKyNk ZWZpbmUgRFBfQVVYX1RYX1NUQVRVUwkJMHgyODUwCisjZGVmaW5lIERQX0FVWF9SWF9TVEFUVVMJ CTB4Mjg1NAorI2RlZmluZSBEUF9BVVhfUlhfQ1lDTEVfQ09VTlRFUgkJMHgyODU4CisjZGVmaW5l IERQX0FVWF9NQUlOX1NUQVRFUwkJMHgyODVjCisjZGVmaW5lIERQX0FVWF9NQUlOX1RJTUVSCQkw eDI4NjAKKyNkZWZpbmUgRFBfQVVYX0FGRV9PVVQJCQkweDI4NjQKKworLyogY3J5cHRvIGFkZHIg Ki8KKyNkZWZpbmUgQ1JZUFRPX0hEQ1BfUkVWSVNJT04JCTB4NTgwMAorI2RlZmluZSBIRENQX0NS WVBUT19DT05GSUcJCTB4NTgwNAorI2RlZmluZSBDUllQVE9fSU5URVJSVVBUX1NPVVJDRQkJMHg1 ODA4CisjZGVmaW5lIENSWVBUT19JTlRFUlJVUFRfTUFTSwkJMHg1ODBjCisjZGVmaW5lIENSWVBU TzIyX0NPTkZJRwkJCTB4NTgxOAorI2RlZmluZSBDUllQVE8yMl9TVEFUVVMJCQkweDU4MWMKKyNk ZWZpbmUgU0hBXzI1Nl9EQVRBX0lOCQkJMHg1ODNjCisjZGVmaW5lIFNIQV8yNTZfREFUQV9PVVRf KHgpCQkoMHg1ODUwICsgKHggPDwgMikpCisjZGVmaW5lIEFFU18zMl9LRVlfKHgpCQkJKDB4NTg3 MCArICh4IDw8IDIpKQorI2RlZmluZSBBRVNfMzJfREFUQV9JTgkJCTB4NTg4MAorI2RlZmluZSBB RVNfMzJfREFUQV9PVVRfKHgpCQkoMHg1ODg0ICsgKHggPDwgMikpCisjZGVmaW5lIENSWVBUTzE0 X0NPTkZJRwkJCTB4NThhMAorI2RlZmluZSBDUllQVE8xNF9TVEFUVVMJCQkweDU4YTQKKyNkZWZp bmUgQ1JZUFRPMTRfUFJOTV9PVVQJCTB4NThhOAorI2RlZmluZSBDUllQVE8xNF9LTV8wCQkJMHg1 OGFjCisjZGVmaW5lIENSWVBUTzE0X0tNXzEJCQkweDU4YjAKKyNkZWZpbmUgQ1JZUFRPMTRfQU5f MAkJCTB4NThiNAorI2RlZmluZSBDUllQVE8xNF9BTl8xCQkJMHg1OGI4CisjZGVmaW5lIENSWVBU TzE0X1lPVVJfS1NWXzAJCTB4NThiYworI2RlZmluZSBDUllQVE8xNF9ZT1VSX0tTVl8xCQkweDU4 YzAKKyNkZWZpbmUgQ1JZUFRPMTRfTUlfMAkJCTB4NThjNAorI2RlZmluZSBDUllQVE8xNF9NSV8x CQkJMHg1OGM4CisjZGVmaW5lIENSWVBUTzE0X1RJXzAJCQkweDU4Y2MKKyNkZWZpbmUgQ1JZUFRP MTRfS0lfMAkJCTB4NThkMAorI2RlZmluZSBDUllQVE8xNF9LSV8xCQkJMHg1OGQ0CisjZGVmaW5l IENSWVBUTzE0X0JMT0NLU19OVU0JCTB4NThkOAorI2RlZmluZSBDUllQVE8xNF9LRVlfTUVNX0RB VEFfMAkJMHg1OGRjCisjZGVmaW5lIENSWVBUTzE0X0tFWV9NRU1fREFUQV8xCQkweDU4ZTAKKyNk ZWZpbmUgQ1JZUFRPMTRfU0hBMV9NU0dfREFUQQkJMHg1OGU0CisjZGVmaW5lIENSWVBUTzE0X1NI QTFfVl9WQUxVRV8oeCkJKDB4NThlOCArICh4IDw8IDIpKQorI2RlZmluZSBUUk5HX0NUUkwJCQkw eDU4ZmMKKyNkZWZpbmUgVFJOR19EQVRBX1JEWQkJCTB4NTkwMAorI2RlZmluZSBUUk5HX0RBVEEJ CQkweDU5MDQKKworLyogY2lwaGVyIGFkZHIgKi8KKyNkZWZpbmUgSERDUF9SRVZJU0lPTgkJCTB4 NjAwMDAKKyNkZWZpbmUgSU5URVJSVVBUX1NPVVJDRQkJMHg2MDAwNAorI2RlZmluZSBJTlRFUlJV UFRfTUFTSwkJCTB4NjAwMDgKKyNkZWZpbmUgSERDUF9DSVBIRVJfQ09ORklHCQkweDYwMDBjCisj ZGVmaW5lIEFFU18xMjhfS0VZXzAJCQkweDYwMDEwCisjZGVmaW5lIEFFU18xMjhfS0VZXzEJCQkw eDYwMDE0CisjZGVmaW5lIEFFU18xMjhfS0VZXzIJCQkweDYwMDE4CisjZGVmaW5lIEFFU18xMjhf S0VZXzMJCQkweDYwMDFjCisjZGVmaW5lIEFFU18xMjhfUkFORE9NXzAJCTB4NjAwMjAKKyNkZWZp bmUgQUVTXzEyOF9SQU5ET01fMQkJMHg2MDAyNAorI2RlZmluZSBDSVBIRVIxNF9LTV8wCQkJMHg2 MDAyOAorI2RlZmluZSBDSVBIRVIxNF9LTV8xCQkJMHg2MDAyYworI2RlZmluZSBDSVBIRVIxNF9T VEFUVVMJCQkweDYwMDMwCisjZGVmaW5lIENJUEhFUjE0X1JJX1BKX1NUQVRVUwkJMHg2MDAzNAor I2RlZmluZSBDSVBIRVJfTU9ERQkJCTB4NjAwMzgKKyNkZWZpbmUgQ0lQSEVSMTRfQU5fMAkJCTB4 NjAwM2MKKyNkZWZpbmUgQ0lQSEVSMTRfQU5fMQkJCTB4NjAwNDAKKyNkZWZpbmUgQ0lQSEVSMjJf QVVUSAkJCTB4NjAwNDQKKyNkZWZpbmUgQ0lQSEVSMTRfUjBfRFBfU1RBVFVTCQkweDYwMDQ4Cisj ZGVmaW5lIENJUEhFUjE0X0JPT1RTVFJBUAkJMHg2MDA0YworCisjZGVmaW5lIEFQQl9JUkFNX1BB VEgJCQlCSVQoMikKKyNkZWZpbmUgQVBCX0RSQU1fUEFUSAkJCUJJVCgxKQorI2RlZmluZSBBUEJf WFRfUkVTRVQJCQlCSVQoMCkKKworLyogbWFpbGJveCAqLworI2RlZmluZSBNQl9PUENPREVfSUQJ CQkwCisjZGVmaW5lIE1CX01PRFVMRV9JRAkJCTEKKyNkZWZpbmUgTUJfU0laRV9NU0JfSUQJCQky CisjZGVmaW5lIE1CX1NJWkVfTFNCX0lECQkJMworI2RlZmluZSBNQl9EQVRBX0lECQkJNAorCisj ZGVmaW5lIE1CX01PRFVMRV9JRF9EUF9UWAkJMHgwMQorI2RlZmluZSBNQl9NT0RVTEVfSURfSERD UF9UWAkJMHgwNworI2RlZmluZSBNQl9NT0RVTEVfSURfSERDUF9SWAkJMHgwOAorI2RlZmluZSBN Ql9NT0RVTEVfSURfSERDUF9HRU5FUkFMCTB4MDkKKyNkZWZpbmUgTUJfTU9EVUxFX0lEX0dFTkVS QUwJCTB4MGEKKworLyogZ2VuZXJhbCBvcGNvZGUgKi8KKyNkZWZpbmUgR0VORVJBTF9NQUlOX0NP TlRST0wgICAgICAgICAgICAweDAxCisjZGVmaW5lIEdFTkVSQUxfVEVTVF9FQ0hPICAgICAgICAg ICAgICAgMHgwMgorI2RlZmluZSBHRU5FUkFMX0JVU19TRVRUSU5HUyAgICAgICAgICAgIDB4MDMK KyNkZWZpbmUgR0VORVJBTF9URVNUX0FDQ0VTUyAgICAgICAgICAgICAweDA0CisKKyNkZWZpbmUg RFBUWF9TRVRfUE9XRVJfTU5HCQkJMHgwMAorI2RlZmluZSBEUFRYX1NFVF9IT1NUX0NBUEFCSUxJ VElFUwkJMHgwMQorI2RlZmluZSBEUFRYX0dFVF9FRElECQkJCTB4MDIKKyNkZWZpbmUgRFBUWF9S RUFEX0RQQ0QJCQkJMHgwMworI2RlZmluZSBEUFRYX1dSSVRFX0RQQ0QJCQkJMHgwNAorI2RlZmlu ZSBEUFRYX0VOQUJMRV9FVkVOVAkJCTB4MDUKKyNkZWZpbmUgRFBUWF9XUklURV9SRUdJU1RFUgkJ CTB4MDYKKyNkZWZpbmUgRFBUWF9SRUFEX1JFR0lTVEVSCQkJMHgwNworI2RlZmluZSBEUFRYX1dS SVRFX0ZJRUxECQkJMHgwOAorI2RlZmluZSBEUFRYX1RSQUlOSU5HX0NPTlRST0wJCQkweDA5Cisj ZGVmaW5lIERQVFhfUkVBRF9FVkVOVAkJCQkweDBhCisjZGVmaW5lIERQVFhfUkVBRF9MSU5LX1NU QVQJCQkweDBiCisjZGVmaW5lIERQVFhfU0VUX1ZJREVPCQkJCTB4MGMKKyNkZWZpbmUgRFBUWF9T RVRfQVVESU8JCQkJMHgwZAorI2RlZmluZSBEUFRYX0dFVF9MQVNUX0FVWF9TVEFVUwkJCTB4MGUK KyNkZWZpbmUgRFBUWF9TRVRfTElOS19CUkVBS19QT0lOVAkJMHgwZgorI2RlZmluZSBEUFRYX0ZP UkNFX0xBTkVTCQkJMHgxMAorI2RlZmluZSBEUFRYX0hQRF9TVEFURQkJCQkweDExCisKKyNkZWZp bmUgRFBUWF9FVkVOVF9FTkFCTEVfSFBECQkJQklUKDApCisjZGVmaW5lIERQVFhfRVZFTlRfRU5B QkxFX1RSQUlOSU5HCQlCSVQoMSkKKworI2RlZmluZSBMSU5LX1RSQUlOSU5HX05PVF9BQ1RJVkUJ CTAKKyNkZWZpbmUgTElOS19UUkFJTklOR19SVU4JCQkxCisjZGVmaW5lIExJTktfVFJBSU5JTkdf UkVTVEFSVAkJCTIKKworI2RlZmluZSBDT05UUk9MX1ZJREVPX0lETEUJCQkwCisjZGVmaW5lIENP TlRST0xfVklERU9fVkFMSUQJCQkxCisKKyNkZWZpbmUgVklGX0JZUEFTU19JTlRFUkxBQ0UJCQlC SVQoMTMpCisjZGVmaW5lIElOVEVSTEFDRV9GTVRfREVUCQkJQklUKDEyKQorI2RlZmluZSBJTlRF UkxBQ0VfRFRDVF9XSU4JCQkweDIwCisKKyNkZWZpbmUgRFBfRlJBTUVSX1NQX0lOVEVSTEFDRV9F TgkJQklUKDIpCisjZGVmaW5lIERQX0ZSQU1FUl9TUF9IU1AJCQlCSVQoMSkKKyNkZWZpbmUgRFBf RlJBTUVSX1NQX1ZTUAkJCUJJVCgwKQorCisvKiBjYXBhYmlsaXR5ICovCisjZGVmaW5lIEFVWF9I T1NUX0lOVkVSVAkJCQkzCisjZGVmaW5lCUZBU1RfTFRfU1VQUE9SVAkJCQkxCisjZGVmaW5lIEZB U1RfTFRfTk9UX1NVUFBPUlQJCQkwCisjZGVmaW5lIExBTkVfTUFQUElOR19OT1JNQUwJCQkweGU0 CisjZGVmaW5lIExBTkVfTUFQUElOR19GTElQUEVECQkJMHgxYgorI2RlZmluZSBFTkhBTkNFRAkJ CQkxCisKKyNkZWZpbmUJRlVMTF9MVF9TVEFSVEVECQkJCUJJVCgwKQorI2RlZmluZSBGQVNFX0xU X1NUQVJURUQJCQkJQklUKDEpCisjZGVmaW5lIENMS19SRUNPVkVSWV9GSU5JU0hFRAkJCUJJVCgy KQorI2RlZmluZSBFUV9QSEFTRV9GSU5JU0hFRAkJCUJJVCgzKQorI2RlZmluZSBGQVNFX0xUX1NU QVJUX0ZJTklTSEVECQkJQklUKDQpCisjZGVmaW5lIENMS19SRUNPVkVSWV9GQUlMRUQJCQlCSVQo NSkKKyNkZWZpbmUgRVFfUEhBU0VfRkFJTEVECQkJCUJJVCg2KQorI2RlZmluZSBGQVNFX0xUX0ZB SUxFRAkJCQlCSVQoNykKKworI2RlZmluZSBEUFRYX0hQRF9FVkVOVAkJCQlCSVQoMCkKKyNkZWZp bmUgRFBUWF9UUkFJTklOR19FVkVOVAkJCUJJVCgxKQorI2RlZmluZSBIRENQX1RYX1NUQVRVU19F VkVOVAkJCUJJVCg0KQorI2RlZmluZSBIRENQMl9UWF9JU19LTV9TVE9SRURfRVZFTlQJCUJJVCg1 KQorI2RlZmluZSBIRENQMl9UWF9TVE9SRV9LTV9FVkVOVAkJCUJJVCg2KQorI2RlZmluZSBIRENQ X1RYX0lTX1JFQ0VJVkVSX0lEX1ZBTElEX0VWRU5UCUJJVCg3KQorCisjZGVmaW5lIEVESURfTEVO R1RIX0JZVEUJCQkwCisjZGVmaW5lIEVESURfU0VHTUVOVF9CVU1CRVIJCQkxCisjZGVmaW5lIEVE SURfREFUQQkJCQkyCisjZGVmaW5lIEVESURfQkxPQ0tfU0laRQkJCQkxMjgKKworI2RlZmluZSBU VV9TSVpFCQkJCQk2NAorCisvKiBhdWRpbyAqLworI2RlZmluZSBBVURJT19QQUNLX0VOKHgpCQkJ KHggPDwgOCkKKyNkZWZpbmUgU0FNUExJTkdfRlJFUSh4KQkJCSh4IDw8IDE2KQorI2RlZmluZSBP UklHSU5BTF9TQU1QX0ZSRVEoeCkJCQkoeCA8PCAyNCkKKyNkZWZpbmUgU1lOQ19XUl9UT19DSF9a RVJPCQkJQklUKDEpCisKK2VudW0gdm9sdGFnZV9zd2luZ19sZXZlbCB7CisJVk9MVEFHRV9MRVZF TF8wLAorCVZPTFRBR0VfTEVWRUxfMSwKKwlWT0xUQUdFX0xFVkVMXzIsCisJVk9MVEFHRV9MRVZF TF8zLAorfTsKKworZW51bSBwcmVfZW1waGFzaXNfbGV2ZWwgeworCVBSRV9FTVBIQVNJU19MRVZF TF8wLAorCVBSRV9FTVBIQVNJU19MRVZFTF8xLAorCVBSRV9FTVBIQVNJU19MRVZFTF8yLAorCVBS RV9FTVBIQVNJU19MRVZFTF8zLAorfTsKKworZW51bSBwYXR0ZXJuX3NldCB7CisJUFJCUzcJCT0g QklUKDApLAorCUQxMF8yCQk9IEJJVCgxKSwKKwlUUkFJTklOR19QVE4xCT0gQklUKDIpLAorCVRS QUlOSU5HX1BUTjIJPSBCSVQoMyksCisJRFBfTk9ORQkJPSBCSVQoNCkKK307CisKK2VudW0gVklD X1BYTF9FTkNPRElOR19GT1JNQVQgeworCVBYTF9SR0IgPSAweDEsCisJWUNCQ1JfNF80XzQgPSAw eDIsCisJWUNCQ1JfNF8yXzIgPSAweDQsCisJWUNCQ1JfNF8yXzAgPSAweDgsCisJWV9PTkxZID0g MHgxMCwKK307CisKK2VudW0gVklDX0NPTE9SX0RFUFRIIHsKKwlCQ1NfNiA9IDB4MSwKKwlCQ1Nf OCA9IDB4MiwKKwlCQ1NfMTAgPSAweDQsCisJQkNTXzEyID0gMHg4LAorCUJDU18xNiA9IDB4MTAs Cit9OworCisjZW5kaWYgLyogX0NETl9EUF9SRUdfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2Nr Y2hpcC9yb2NrY2hpcF9kcm1fdm9wLmMKaW5kZXggZWRkN2VjMi4uOTgzMDJiMyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5jCkBAIC05NjksNyArOTY5LDcg QEAgc3RhdGljIHZvaWQgdm9wX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJ dm9wX2RzcF9ob2xkX3ZhbGlkX2lycV9kaXNhYmxlKHZvcCk7CiAJfQogCi0JcGluX3BvbCA9IDB4 ODsKKwlwaW5fcG9sID0gKHMtPm91dHB1dF90eXBlID09IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNw bGF5UG9ydCkgPyAwIDogMHg4OwogCXBpbl9wb2wgfD0gKGFkanVzdGVkX21vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR19OSFNZTkMpID8gMCA6IDE7CiAJcGluX3BvbCB8PSAoYWRqdXN0ZWRfbW9k ZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX05WU1lOQykgPyAwIDogKDEgPDwgMSk7CiAJVk9QX0NU UkxfU0VUKHZvcCwgcGluX3BvbCwgcGluX3BvbCk7CkBAIC05OTEsNiArOTkxLDEwIEBAIHN0YXRp YyB2b2lkIHZvcF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCVZPUF9DVFJM X1NFVCh2b3AsIG1pcGlfcGluX3BvbCwgcGluX3BvbCk7CiAJCVZPUF9DVFJMX1NFVCh2b3AsIG1p cGlfZW4sIDEpOwogCQlicmVhazsKKwljYXNlIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9y dDoKKwkJVk9QX0NUUkxfU0VUKHZvcCwgZHBfcGluX3BvbCwgcGluX3BvbCk7CisJCVZPUF9DVFJM X1NFVCh2b3AsIGRwX2VuLCAxKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJRFJNX0VSUk9SKCJ1 bnN1cHBvcnQgY29ubmVjdG9yX3R5cGVbJWRdXG4iLCBzLT5vdXRwdXRfdHlwZSk7CiAJfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV92b3AuaCBiL2Ry aXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fdm9wLmgKaW5kZXggZmY0ZjUyZS4u NTBhMDQ1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2Ry bV92b3AuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX3ZvcC5o CkBAIC00NSw2ICs0NSw3IEBAIHN0cnVjdCB2b3BfY3RybCB7CiAJc3RydWN0IHZvcF9yZWcgZWRw X2VuOwogCXN0cnVjdCB2b3BfcmVnIGhkbWlfZW47CiAJc3RydWN0IHZvcF9yZWcgbWlwaV9lbjsK KwlzdHJ1Y3Qgdm9wX3JlZyBkcF9lbjsKIAlzdHJ1Y3Qgdm9wX3JlZyBvdXRfbW9kZTsKIAlzdHJ1 Y3Qgdm9wX3JlZyBkaXRoZXJfZG93bjsKIAlzdHJ1Y3Qgdm9wX3JlZyBkaXRoZXJfdXA7CkBAIC01 Myw2ICs1NCw3IEBAIHN0cnVjdCB2b3BfY3RybCB7CiAJc3RydWN0IHZvcF9yZWcgaGRtaV9waW5f cG9sOwogCXN0cnVjdCB2b3BfcmVnIGVkcF9waW5fcG9sOwogCXN0cnVjdCB2b3BfcmVnIG1pcGlf cGluX3BvbDsKKwlzdHJ1Y3Qgdm9wX3JlZyBkcF9waW5fcG9sOwogCiAJc3RydWN0IHZvcF9yZWcg aHRvdGFsX3B3OwogCXN0cnVjdCB2b3BfcmVnIGhhY3Rfc3RfZW5kOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9yb2NrY2hpcC9yb2NrY2hpcF92b3BfcmVnLmMKaW5kZXggNWIxYWUxZi4uZGNmMTcyZSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX3ZvcF9yZWcuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfdm9wX3JlZy5jCkBAIC0yODEsNiAr MjgxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3BfZGF0YSByazMyODhfdm9wID0gewogc3Rh dGljIGNvbnN0IHN0cnVjdCB2b3BfY3RybCByazMzOTlfY3RybF9kYXRhID0gewogCS5zdGFuZGJ5 ID0gVk9QX1JFRyhSSzMzOTlfU1lTX0NUUkwsIDB4MSwgMjIpLAogCS5nYXRlX2VuID0gVk9QX1JF RyhSSzMzOTlfU1lTX0NUUkwsIDB4MSwgMjMpLAorCS5kcF9lbiA9IFZPUF9SRUcoUkszMzk5X1NZ U19DVFJMLCAweDEsIDExKSwKIAkucmdiX2VuID0gVk9QX1JFRyhSSzMzOTlfU1lTX0NUUkwsIDB4 MSwgMTIpLAogCS5oZG1pX2VuID0gVk9QX1JFRyhSSzMzOTlfU1lTX0NUUkwsIDB4MSwgMTMpLAog CS5lZHBfZW4gPSBWT1BfUkVHKFJLMzM5OV9TWVNfQ1RSTCwgMHgxLCAxNCksCkBAIC0yOTAsNiAr MjkxLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2b3BfY3RybCByazMzOTlfY3RybF9kYXRhID0g ewogCS5kYXRhX2JsYW5rID0gVk9QX1JFRyhSSzMzOTlfRFNQX0NUUkwwLCAweDEsIDE5KSwKIAku b3V0X21vZGUgPSBWT1BfUkVHKFJLMzM5OV9EU1BfQ1RSTDAsIDB4ZiwgMCksCiAJLnJnYl9waW5f cG9sID0gVk9QX1JFRyhSSzMzOTlfRFNQX0NUUkwxLCAweGYsIDE2KSwKKwkuZHBfcGluX3BvbCA9 IFZPUF9SRUcoUkszMzk5X0RTUF9DVFJMMSwgMHhmLCAxNiksCiAJLmhkbWlfcGluX3BvbCA9IFZP UF9SRUcoUkszMzk5X0RTUF9DVFJMMSwgMHhmLCAyMCksCiAJLmVkcF9waW5fcG9sID0gVk9QX1JF RyhSSzMzOTlfRFNQX0NUUkwxLCAweGYsIDI0KSwKIAkubWlwaV9waW5fcG9sID0gVk9QX1JFRyhS SzMzOTlfRFNQX0NUUkwxLCAweGYsIDI4KSwKLS0gCjIuNi4zCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==