From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephane Viau Subject: [PATCH 2/3] drm/msm/mdp5: introduce mdp5_cfg module Date: Tue, 18 Nov 2014 12:49:48 -0500 Message-ID: <1416332989-685-3-git-send-email-sviau@codeaurora.org> References: <1416332989-685-1-git-send-email-sviau@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1416332989-685-1-git-send-email-sviau@codeaurora.org> 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: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-arm-msm@vger.kernel.org VGhlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24gbW9kaWZpY2F0aW9uIGZyb20gYSB2ZXJzaW9uIHRv IGFub3RoZXIKaXMgcXVpdGUgY29uc2VxdWVudC4gSW50cm9kdWNpbmcgYSBjb25maWd1cmF0aW9u IG1vZHVsZQoobWRwNV9jZmcpIG1heSBtYWtlIHRoaW5ncyBtb3JlIGNsZWFyIGFuZCBlYXNpZXIg dG8gYWNjZXNzIHdoZW4gYQpuZXcgaGFyZHdhcmUgdmVyc2lvbiBjb21lcyB1cC4KClNpZ25lZC1v ZmYtYnk6IFN0ZXBoYW5lIFZpYXUgPHN2aWF1QGNvZGVhdXJvcmEub3JnPgotLS0KIGRyaXZlcnMv Z3B1L2RybS9tc20vTWFrZWZpbGUgICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0v bXNtL21kcC9tZHA1L21kcDVfY2ZnLmMgfCAyMTUgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jZmcuaCB8ICA4OCArKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmMgfCAyMTEg KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAv bWRwNS9tZHA1X2ttcy5oIHwgIDM5ICstLS0tLQogZHJpdmVycy9ncHUvZHJtL21zbS9tZHAvbWRw NS9tZHA1X3NtcC5jIHwgICA5ICstCiA2IGZpbGVzIGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCsp LCAyMDkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21z bS9tZHAvbWRwNS9tZHA1X2NmZy5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L21zbS9tZHAvbWRwNS9tZHA1X2NmZy5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9tc20vTWFrZWZpbGUKaW5kZXggNjI4M2RjYi4u NTEwNDViMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL01ha2VmaWxlCkBAIC0yNCw2ICsyNCw3IEBAIG1zbS15IDo9IFwK IAltZHAvbWRwNC9tZHA0X2lycS5vIFwKIAltZHAvbWRwNC9tZHA0X2ttcy5vIFwKIAltZHAvbWRw NC9tZHA0X3BsYW5lLm8gXAorCW1kcC9tZHA1L21kcDVfY2ZnLm8gXAogCW1kcC9tZHA1L21kcDVf Y3J0Yy5vIFwKIAltZHAvbWRwNS9tZHA1X2VuY29kZXIubyBcCiAJbWRwL21kcDUvbWRwNV9pcnEu byBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY2ZnLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY2ZnLmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uNjJlNzdkMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9jZmcuYwpAQCAtMCwwICsxLDIxNSBAQAorLyoKKyAq IENvcHlyaWdodCAoYykgMjAxNCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYW5kCisgKiBvbmx5IHZlcnNpb24g MiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorICovCisKKyNpbmNsdWRlICJtZHA1X2ttcy5oIgorI2luY2x1ZGUg Im1kcDVfY2ZnLmgiCisKK3N0cnVjdCBtZHA1X2NmZ19oYW5kbGVyIHsKKwlpbnQgcmV2aXNpb247 CisJc3RydWN0IG1kcDVfY2ZnIGNvbmZpZzsKK307CisKKy8qIG1kcDVfY2ZnIG11c3QgYmUgZXhw b3NlZCAodXNlZCBpbiBtZHA1LnhtbC5oKSAqLworY29uc3Qgc3RydWN0IG1kcDVfY2ZnX2h3ICpt ZHA1X2NmZyA9IE5VTEw7CisKK2NvbnN0IHN0cnVjdCBtZHA1X2NmZ19odyBtc204eDc0X2NvbmZp ZyA9IHsKKwkubmFtZSA9ICJtc204eDc0IiwKKwkuc21wID0geworCQkubW1iX2NvdW50ID0gMjIs CisJCS5tbWJfc2l6ZSA9IDQwOTYsCisJfSwKKwkuY3RsID0geworCQkuY291bnQgPSA1LAorCQku YmFzZSA9IHsgMHgwMDYwMCwgMHgwMDcwMCwgMHgwMDgwMCwgMHgwMDkwMCwgMHgwMGEwMCB9LAor CX0sCisJLnBpcGVfdmlnID0geworCQkuY291bnQgPSAzLAorCQkuYmFzZSA9IHsgMHgwMTIwMCwg MHgwMTYwMCwgMHgwMWEwMCB9LAorCX0sCisJLnBpcGVfcmdiID0geworCQkuY291bnQgPSAzLAor CQkuYmFzZSA9IHsgMHgwMWUwMCwgMHgwMjIwMCwgMHgwMjYwMCB9LAorCX0sCisJLnBpcGVfZG1h ID0geworCQkuY291bnQgPSAyLAorCQkuYmFzZSA9IHsgMHgwMmEwMCwgMHgwMmUwMCB9LAorCX0s CisJLmxtID0geworCQkuY291bnQgPSA1LAorCQkuYmFzZSA9IHsgMHgwMzIwMCwgMHgwMzYwMCwg MHgwM2EwMCwgMHgwM2UwMCwgMHgwNDIwMCB9LAorCQkubmJfc3RhZ2VzID0gNSwKKwl9LAorCS5k c3BwID0geworCQkuY291bnQgPSAzLAorCQkuYmFzZSA9IHsgMHgwNDYwMCwgMHgwNGEwMCwgMHgw NGUwMCB9LAorCX0sCisJLmFkID0geworCQkuY291bnQgPSAyLAorCQkuYmFzZSA9IHsgMHgxMzEw MCwgMHgxMzMwMCB9LCAvKiBOT1RFOiBubyBhZCBpbiB2MS4wICovCisJfSwKKwkuaW50ZiA9IHsK KwkJLmNvdW50ID0gNCwKKwkJLmJhc2UgPSB7IDB4MTI1MDAsIDB4MTI3MDAsIDB4MTI5MDAsIDB4 MTJiMDAgfSwKKwl9LAorCS5tYXhfY2xrID0gMjAwMDAwMDAwLAorfTsKKworY29uc3Qgc3RydWN0 IG1kcDVfY2ZnX2h3IGFwcTgwODRfY29uZmlnID0geworCS5uYW1lID0gImFwcTgwODQiLAorCS5z bXAgPSB7CisJCS5tbWJfY291bnQgPSA0NCwKKwkJLm1tYl9zaXplID0gODE5MiwKKwkJLnJlc2Vy dmVkX3N0YXRlWzBdID0gR0VOTUFTSyg3LCAwKSwJLyogZmlyc3QgOCBNTUJzICovCisJCS5yZXNl cnZlZFtDSURfUkdCMF0gPSAyLAorCQkucmVzZXJ2ZWRbQ0lEX1JHQjFdID0gMiwKKwkJLnJlc2Vy dmVkW0NJRF9SR0IyXSA9IDIsCisJCS5yZXNlcnZlZFtDSURfUkdCM10gPSAyLAorCX0sCisJLmN0 bCA9IHsKKwkJLmNvdW50ID0gNSwKKwkJLmJhc2UgPSB7IDB4MDA2MDAsIDB4MDA3MDAsIDB4MDA4 MDAsIDB4MDA5MDAsIDB4MDBhMDAgfSwKKwl9LAorCS5waXBlX3ZpZyA9IHsKKwkJLmNvdW50ID0g NCwKKwkJLmJhc2UgPSB7IDB4MDEyMDAsIDB4MDE2MDAsIDB4MDFhMDAsIDB4MDFlMDAgfSwKKwl9 LAorCS5waXBlX3JnYiA9IHsKKwkJLmNvdW50ID0gNCwKKwkJLmJhc2UgPSB7IDB4MDIyMDAsIDB4 MDI2MDAsIDB4MDJhMDAsIDB4MDJlMDAgfSwKKwl9LAorCS5waXBlX2RtYSA9IHsKKwkJLmNvdW50 ID0gMiwKKwkJLmJhc2UgPSB7IDB4MDMyMDAsIDB4MDM2MDAgfSwKKwl9LAorCS5sbSA9IHsKKwkJ LmNvdW50ID0gNiwKKwkJLmJhc2UgPSB7IDB4MDNhMDAsIDB4MDNlMDAsIDB4MDQyMDAsIDB4MDQ2 MDAsIDB4MDRhMDAsIDB4MDRlMDAgfSwKKwkJLm5iX3N0YWdlcyA9IDUsCisJfSwKKwkuZHNwcCA9 IHsKKwkJLmNvdW50ID0gNCwKKwkJLmJhc2UgPSB7IDB4MDUyMDAsIDB4MDU2MDAsIDB4MDVhMDAs IDB4MDVlMDAgfSwKKworCX0sCisJLmFkID0geworCQkuY291bnQgPSAzLAorCQkuYmFzZSA9IHsg MHgxMzUwMCwgMHgxMzcwMCwgMHgxMzkwMCB9LAorCX0sCisJLmludGYgPSB7CisJCS5jb3VudCA9 IDUsCisJCS5iYXNlID0geyAweDEyNTAwLCAweDEyNzAwLCAweDEyOTAwLCAweDEyYjAwLCAweDEy ZDAwIH0sCisJfSwKKwkubWF4X2NsayA9IDMyMDAwMDAwMCwKK307CisKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgbWRwNV9jZmdfaGFuZGxlciBjZmdfaGFuZGxlcnNbXSA9IHsKKwl7IC5yZXZpc2lvbiA9 IDAsIC5jb25maWcgPSB7IC5odyA9ICZtc204eDc0X2NvbmZpZyB9IH0sCisJeyAucmV2aXNpb24g PSAyLCAuY29uZmlnID0geyAuaHcgPSAmbXNtOHg3NF9jb25maWcgfSB9LAorCXsgLnJldmlzaW9u ID0gMywgLmNvbmZpZyA9IHsgLmh3ID0gJmFwcTgwODRfY29uZmlnIH0gfSwKK307CisKKworc3Rh dGljIHN0cnVjdCBtZHA1X2NmZ19wbGF0Zm9ybSAqbWRwNV9nZXRfY29uZmlnKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKmRldik7CisKK2NvbnN0IHN0cnVjdCBtZHA1X2NmZ19odyAqbWRwNV9jZmdf Z2V0X2h3X2NvbmZpZyh2b2lkICpjZmdfaG5kKQoreworCXN0cnVjdCBtZHA1X2NmZ19oYW5kbGVy ICpjZmdfaGFuZGxlciA9IGNmZ19obmQ7CisKKwlyZXR1cm4gY2ZnX2hhbmRsZXItPmNvbmZpZy5o dzsKK30KKworc3RydWN0IG1kcDVfY2ZnICptZHA1X2NmZ19nZXRfY29uZmlnKHZvaWQgKmNmZ19o bmQpCit7CisJc3RydWN0IG1kcDVfY2ZnX2hhbmRsZXIgKmNmZ19oYW5kbGVyID0gY2ZnX2huZDsK KworCXJldHVybiAmY2ZnX2hhbmRsZXItPmNvbmZpZzsKK30KKworaW50IG1kcDVfY2ZnX2dldF9o d19yZXYodm9pZCAqY2ZnX2huZCkKK3sKKwlzdHJ1Y3QgbWRwNV9jZmdfaGFuZGxlciAqY2ZnX2hh bmRsZXIgPSBjZmdfaG5kOworCisJcmV0dXJuIGNmZ19oYW5kbGVyLT5yZXZpc2lvbjsKK30KKwor dm9pZCBtZHA1X2NmZ19kZXN0cm95KHZvaWQgKmNmZ19obmQpCit7CisJc3RydWN0IG1kcDVfY2Zn X2hhbmRsZXIgKmNmZ19oYW5kbGVyID0gY2ZnX2huZDsKKworCWtmcmVlKGNmZ19oYW5kbGVyKTsK K30KKwordm9pZCAqbWRwNV9jZmdfaW5pdChzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zLAorCQl1 aW50MzJfdCBtYWpvciwgdWludDMyX3QgbWlub3IpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IG1kcDVfa21zLT5kZXY7CisJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGRldi0+ cGxhdGZvcm1kZXY7CisJc3RydWN0IG1kcDVfY2ZnX2hhbmRsZXIgKmNmZ19oYW5kbGVyOworCXN0 cnVjdCBtZHA1X2NmZ19wbGF0Zm9ybSAqcGNvbmZpZzsKKwlpbnQgaSwgcmV0ID0gMDsKKworCWNm Z19oYW5kbGVyID0ga3phbGxvYyhzaXplb2YoKmNmZ19oYW5kbGVyKSwgR0ZQX0tFUk5FTCk7CisJ aWYgKHVubGlrZWx5KCFjZmdfaGFuZGxlcikpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBm YWlsOworCX0KKworCWlmIChtYWpvciAhPSAxKSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJ1bmV4 cGVjdGVkIE1EUCBtYWpvciB2ZXJzaW9uOiB2JWQuJWRcbiIsCisJCQkJbWFqb3IsIG1pbm9yKTsK KwkJcmV0ID0gLUVOWElPOworCQlnb3RvIGZhaWw7CisJfQorCisJLyogb25seSBhZnRlciBtZHA1 X2NmZyBnbG9iYWwgcG9pbnRlcidzIGluaXQgY2FuIHdlIGFjY2VzcyB0aGUgaHcgKi8KKwlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRShjZmdfaGFuZGxlcnMpOyBpKyspIHsKKwkJaWYgKGNmZ19o YW5kbGVyc1tpXS5yZXZpc2lvbiAhPSBtaW5vcikKKwkJCWNvbnRpbnVlOworCQltZHA1X2NmZyA9 IGNmZ19oYW5kbGVyc1tpXS5jb25maWcuaHc7CisKKwkJYnJlYWs7CisJfQorCWlmICh1bmxpa2Vs eSghbWRwNV9jZmcpKSB7CisJCWRldl9lcnIoZGV2LT5kZXYsICJ1bmV4cGVjdGVkIE1EUCBtaW5v ciByZXZpc2lvbjogdiVkLiVkXG4iLAorCQkJCW1ham9yLCBtaW5vcik7CisJCXJldCA9IC1FTlhJ TzsKKwkJZ290byBmYWlsOworCX0KKworCWNmZ19oYW5kbGVyLT5yZXZpc2lvbiA9IG1pbm9yOwor CWNmZ19oYW5kbGVyLT5jb25maWcuaHcgPSBtZHA1X2NmZzsKKworCXBjb25maWcgPSBtZHA1X2dl dF9jb25maWcocGRldik7CisJbWVtY3B5KCZjZmdfaGFuZGxlci0+Y29uZmlnLnBsYXRmb3JtLCBw Y29uZmlnLCBzaXplb2YoKnBjb25maWcpKTsKKworCURCRygiTURQNTogJXMgaHcgY29uZmlnIHNl bGVjdGVkIiwgbWRwNV9jZmctPm5hbWUpOworCisJcmV0dXJuIGNmZ19oYW5kbGVyOworCitmYWls OgorCWlmIChjZmdfaGFuZGxlcikKKwkJbWRwNV9jZmdfZGVzdHJveShjZmdfaGFuZGxlcik7CisK KwlyZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHN0cnVjdCBtZHA1X2NmZ19wbGF0Zm9ybSAqbWRw NV9nZXRfY29uZmlnKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldikKK3sKKwlzdGF0aWMgc3Ry dWN0IG1kcDVfY2ZnX3BsYXRmb3JtIGNvbmZpZyA9IHt9OworI2lmZGVmIENPTkZJR19PRgorCS8q IFRPRE8gKi8KKyNlbmRpZgorCWNvbmZpZy5pb21tdSA9IGlvbW11X2RvbWFpbl9hbGxvYygmcGxh dGZvcm1fYnVzX3R5cGUpOworCisJcmV0dXJuICZjb25maWc7Cit9CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfY2ZnLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21kcC9tZHA1L21kcDVfY2ZnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MDBjODI3MQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUv bWRwNV9jZmcuaApAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE0IFRo ZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIHZlcnNpb24gMiBhbmQKKyAqIG9ubHkgdmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKi8K KworI2lmbmRlZiBfX01EUDVfQ0ZHX0hfXworI2RlZmluZSBfX01EUDVfQ0ZHX0hfXworCisjaW5j bHVkZSAibXNtX2Rydi5oIgorCisvKgorICogbWRwNV9jZmcKKyAqCisgKiBUaGlzIG1vZHVsZSBj b25maWd1cmVzIHRoZSBkeW5hbWljIG9mZnNldHMgdXNlZCBieSBtZHA1LnhtbC5oCisgKiAoaW5p dGlhbGl6ZWQgaW4gbWRwNV9jZmcuYykKKyAqLworZXh0ZXJuIGNvbnN0IHN0cnVjdCBtZHA1X2Nm Z19odyAqbWRwNV9jZmc7CisKKyNkZWZpbmUgTUFYX0JBU0VTCQk4CisjZGVmaW5lIE1BWF9TTVBf QkxPQ0tTCQk0NAorI2RlZmluZSBNQVhfQ0xJRU5UUwkJMzIKKwordHlwZWRlZiBERUNMQVJFX0JJ VE1BUChtZHA1X3NtcF9zdGF0ZV90LCBNQVhfU01QX0JMT0NLUyk7CisKKyNkZWZpbmUgTURQNV9T VUJfQkxPQ0tfREVGSU5JVElPTiBcCisJaW50IGNvdW50OyBcCisJdWludDMyX3QgYmFzZVtNQVhf QkFTRVNdCisKK3N0cnVjdCBtZHA1X3N1Yl9ibG9jayB7CisJTURQNV9TVUJfQkxPQ0tfREVGSU5J VElPTjsKK307CisKK3N0cnVjdCBtZHA1X2xtX2Jsb2NrIHsKKwlNRFA1X1NVQl9CTE9DS19ERUZJ TklUSU9OOworCXVpbnQzMl90IG5iX3N0YWdlczsJCS8qIG51bWJlciBvZiBzdGFnZXMgcGVyIGJs ZW5kZXIgKi8KK307CisKK3N0cnVjdCBtZHA1X3NtcF9ibG9jayB7CisJaW50IG1tYl9jb3VudDsJ CQkvKiBudW1iZXIgb2YgU01QIE1NQnMgKi8KKwlpbnQgbW1iX3NpemU7CQkJLyogTU1COiBzaXpl IGluIGJ5dGVzICovCisJbWRwNV9zbXBfc3RhdGVfdCByZXNlcnZlZF9zdGF0ZTsvKiBTTVAgTU1C cyBzdGF0aWNhbGx5IGFsbG9jYXRlZCAqLworCWludCByZXNlcnZlZFtNQVhfQ0xJRU5UU107CS8q ICMgb2YgTU1CcyBhbGxvY2F0ZWQgcGVyIGNsaWVudCAqLworfTsKKworc3RydWN0IG1kcDVfY2Zn X2h3IHsKKwljaGFyICAqbmFtZTsKKworCXN0cnVjdCBtZHA1X3NtcF9ibG9jayBzbXA7CisJc3Ry dWN0IG1kcDVfc3ViX2Jsb2NrIGN0bDsKKwlzdHJ1Y3QgbWRwNV9zdWJfYmxvY2sgcGlwZV92aWc7 CisJc3RydWN0IG1kcDVfc3ViX2Jsb2NrIHBpcGVfcmdiOworCXN0cnVjdCBtZHA1X3N1Yl9ibG9j ayBwaXBlX2RtYTsKKwlzdHJ1Y3QgbWRwNV9sbV9ibG9jayAgbG07CisJc3RydWN0IG1kcDVfc3Vi X2Jsb2NrIGRzcHA7CisJc3RydWN0IG1kcDVfc3ViX2Jsb2NrIGFkOworCXN0cnVjdCBtZHA1X3N1 Yl9ibG9jayBpbnRmOworCisJdWludDMyX3QgbWF4X2NsazsKK307CisKKy8qIHBsYXRmb3JtIGNv bmZpZyBkYXRhIChpZS4gZnJvbSBEVCwgb3IgcGRhdGEpICovCitzdHJ1Y3QgbWRwNV9jZmdfcGxh dGZvcm0geworCXN0cnVjdCBpb21tdV9kb21haW4gKmlvbW11OworfTsKKworc3RydWN0IG1kcDVf Y2ZnIHsKKwljb25zdCBzdHJ1Y3QgbWRwNV9jZmdfaHcgKmh3OworCXN0cnVjdCBtZHA1X2NmZ19w bGF0Zm9ybSBwbGF0Zm9ybTsKK307CisKK3N0cnVjdCBtZHA1X2ttczsKKworY29uc3Qgc3RydWN0 IG1kcDVfY2ZnX2h3ICptZHA1X2NmZ19nZXRfaHdfY29uZmlnKHZvaWQgKmNmZ19obmQpOworc3Ry dWN0IG1kcDVfY2ZnICptZHA1X2NmZ19nZXRfY29uZmlnKHZvaWQgKmNmZ19obmQpOworaW50IG1k cDVfY2ZnX2dldF9od19yZXYodm9pZCAqY2ZnX2huZCk7CisKK3ZvaWQgKm1kcDVfY2ZnX2luaXQo c3RydWN0IG1kcDVfa21zICptZHA1X2ttcywgdWludDMyX3QgbWFqb3IsIHVpbnQzMl90IG1pbm9y KTsKK3ZvaWQgbWRwNV9jZmdfZGVzdHJveSh2b2lkICpjZmdfaG5kKTsKKworI2VuZGlmIC8qIF9f TURQNV9DRkdfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1 L21kcDVfa21zLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmMKaW5k ZXggMGQ2MzA2ZC4uNzZiZDg2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAv bWRwNS9tZHA1X2ttcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRwNV9r bXMuYwpAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIFRoZSBMaW51 eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz IFJlZCBIYXQKICAqIEF1dGhvcjogUm9iIENsYXJrIDxyb2JkY2xhcmtAZ21haWwuY29tPgogICoK QEAgLTI0LDE1OCArMjUsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmlvbW11X3BvcnRzW10gPSB7 CiAJCSJtZHBfMCIsCiB9OwogCi1zdGF0aWMgc3RydWN0IG1kcDVfcGxhdGZvcm1fY29uZmlnICpt ZHA1X2dldF9jb25maWcoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KTsKLQotY29uc3Qgc3Ry dWN0IG1kcDVfY29uZmlnICptZHA1X2NmZzsKLQotc3RhdGljIGNvbnN0IHN0cnVjdCBtZHA1X2Nv bmZpZyBtc204eDc0X2NvbmZpZyA9IHsKLQkubmFtZSA9ICJtc204eDc0IiwKLQkuc21wID0gewot CQkubW1iX2NvdW50ID0gMjIsCi0JCS5tbWJfc2l6ZSA9IDQwOTYsCi0JfSwKLQkuY3RsID0gewot CQkuY291bnQgPSA1LAotCQkuYmFzZSA9IHsgMHgwMDYwMCwgMHgwMDcwMCwgMHgwMDgwMCwgMHgw MDkwMCwgMHgwMGEwMCB9LAotCX0sCi0JLnBpcGVfdmlnID0gewotCQkuY291bnQgPSAzLAotCQku YmFzZSA9IHsgMHgwMTIwMCwgMHgwMTYwMCwgMHgwMWEwMCB9LAotCX0sCi0JLnBpcGVfcmdiID0g ewotCQkuY291bnQgPSAzLAotCQkuYmFzZSA9IHsgMHgwMWUwMCwgMHgwMjIwMCwgMHgwMjYwMCB9 LAotCX0sCi0JLnBpcGVfZG1hID0gewotCQkuY291bnQgPSAyLAotCQkuYmFzZSA9IHsgMHgwMmEw MCwgMHgwMmUwMCB9LAotCX0sCi0JLmxtID0gewotCQkuY291bnQgPSA1LAotCQkuYmFzZSA9IHsg MHgwMzIwMCwgMHgwMzYwMCwgMHgwM2EwMCwgMHgwM2UwMCwgMHgwNDIwMCB9LAotCX0sCi0JLmRz cHAgPSB7Ci0JCS5jb3VudCA9IDMsCi0JCS5iYXNlID0geyAweDA0NjAwLCAweDA0YTAwLCAweDA0 ZTAwIH0sCi0JfSwKLQkuYWQgPSB7Ci0JCS5jb3VudCA9IDIsCi0JCS5iYXNlID0geyAweDEzMTAw LCAweDEzMzAwIH0sIC8qIE5PVEU6IG5vIGFkIGluIHYxLjAgKi8KLQl9LAotCS5pbnRmID0gewot CQkuY291bnQgPSA0LAotCQkuYmFzZSA9IHsgMHgxMjUwMCwgMHgxMjcwMCwgMHgxMjkwMCwgMHgx MmIwMCB9LAotCX0sCi0JLm1heF9jbGsgPSAyMDAwMDAwMDAsCi19OwotCi1zdGF0aWMgY29uc3Qg c3RydWN0IG1kcDVfY29uZmlnIGFwcTgwODRfY29uZmlnID0gewotCS5uYW1lID0gImFwcTgwODQi LAotCS5zbXAgPSB7Ci0JCS5tbWJfY291bnQgPSA0NCwKLQkJLm1tYl9zaXplID0gODE5MiwKLQkJ LnJlc2VydmVkX3N0YXRlWzBdID0gR0VOTUFTSyg3LCAwKSwJLyogZmlyc3QgOCBNTUJzICovCi0J CS5yZXNlcnZlZFtDSURfUkdCMF0gPSAyLAotCQkucmVzZXJ2ZWRbQ0lEX1JHQjFdID0gMiwKLQkJ LnJlc2VydmVkW0NJRF9SR0IyXSA9IDIsCi0JCS5yZXNlcnZlZFtDSURfUkdCM10gPSAyLAotCX0s Ci0JLmN0bCA9IHsKLQkJLmNvdW50ID0gNSwKLQkJLmJhc2UgPSB7IDB4MDA2MDAsIDB4MDA3MDAs IDB4MDA4MDAsIDB4MDA5MDAsIDB4MDBhMDAgfSwKLQl9LAotCS5waXBlX3ZpZyA9IHsKLQkJLmNv dW50ID0gNCwKLQkJLmJhc2UgPSB7IDB4MDEyMDAsIDB4MDE2MDAsIDB4MDFhMDAsIDB4MDFlMDAg fSwKLQl9LAotCS5waXBlX3JnYiA9IHsKLQkJLmNvdW50ID0gNCwKLQkJLmJhc2UgPSB7IDB4MDIy MDAsIDB4MDI2MDAsIDB4MDJhMDAsIDB4MDJlMDAgfSwKLQl9LAotCS5waXBlX2RtYSA9IHsKLQkJ LmNvdW50ID0gMiwKLQkJLmJhc2UgPSB7IDB4MDMyMDAsIDB4MDM2MDAgfSwKLQl9LAotCS5sbSA9 IHsKLQkJLmNvdW50ID0gNiwKLQkJLmJhc2UgPSB7IDB4MDNhMDAsIDB4MDNlMDAsIDB4MDQyMDAs IDB4MDQ2MDAsIDB4MDRhMDAsIDB4MDRlMDAgfSwKLQl9LAotCS5kc3BwID0gewotCQkuY291bnQg PSA0LAotCQkuYmFzZSA9IHsgMHgwNTIwMCwgMHgwNTYwMCwgMHgwNWEwMCwgMHgwNWUwMCB9LAot Ci0JfSwKLQkuYWQgPSB7Ci0JCS5jb3VudCA9IDMsCi0JCS5iYXNlID0geyAweDEzNTAwLCAweDEz NzAwLCAweDEzOTAwIH0sCi0JfSwKLQkuaW50ZiA9IHsKLQkJLmNvdW50ID0gNSwKLQkJLmJhc2Ug PSB7IDB4MTI1MDAsIDB4MTI3MDAsIDB4MTI5MDAsIDB4MTJiMDAsIDB4MTJkMDAgfSwKLQl9LAot CS5tYXhfY2xrID0gMzIwMDAwMDAwLAotfTsKLQotc3RydWN0IG1kcDVfY29uZmlnX2VudHJ5IHsK LQlpbnQgcmV2aXNpb247Ci0JY29uc3Qgc3RydWN0IG1kcDVfY29uZmlnICpjb25maWc7Ci19Owot Ci1zdGF0aWMgY29uc3Qgc3RydWN0IG1kcDVfY29uZmlnX2VudHJ5IG1kcDVfY29uZmlnc1tdID0g ewotCXsgLnJldmlzaW9uID0gMCwgLmNvbmZpZyA9ICZtc204eDc0X2NvbmZpZyB9LAotCXsgLnJl dmlzaW9uID0gMiwgLmNvbmZpZyA9ICZtc204eDc0X2NvbmZpZyB9LAotCXsgLnJldmlzaW9uID0g MywgLmNvbmZpZyA9ICZhcHE4MDg0X2NvbmZpZyB9LAotfTsKLQotc3RhdGljIGludCBtZHA1X3Nl bGVjdF9od19jZmcoc3RydWN0IG1zbV9rbXMgKmttcykKLXsKLQlzdHJ1Y3QgbWRwNV9rbXMgKm1k cDVfa21zID0gdG9fbWRwNV9rbXModG9fbWRwX2ttcyhrbXMpKTsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gbWRwNV9rbXMtPmRldjsKLQl1aW50MzJfdCB2ZXJzaW9uLCBtYWpvciwgbWlub3I7 Ci0JaW50IGksIHJldCA9IDA7Ci0KLQltZHA1X2VuYWJsZShtZHA1X2ttcyk7Ci0JdmVyc2lvbiA9 IG1kcDVfcmVhZChtZHA1X2ttcywgUkVHX01EUDVfTURQX1ZFUlNJT04pOwotCW1kcDVfZGlzYWJs ZShtZHA1X2ttcyk7Ci0KLQltYWpvciA9IEZJRUxEKHZlcnNpb24sIE1EUDVfTURQX1ZFUlNJT05f TUFKT1IpOwotCW1pbm9yID0gRklFTEQodmVyc2lvbiwgTURQNV9NRFBfVkVSU0lPTl9NSU5PUik7 Ci0KLQlEQkcoImZvdW5kIE1EUDUgdmVyc2lvbiB2JWQuJWQiLCBtYWpvciwgbWlub3IpOwotCi0J aWYgKG1ham9yICE9IDEpIHsKLQkJZGV2X2VycihkZXYtPmRldiwgInVuZXhwZWN0ZWQgTURQIG1h am9yIHZlcnNpb246IHYlZC4lZFxuIiwKLQkJCQltYWpvciwgbWlub3IpOwotCQlyZXQgPSAtRU5Y SU87Ci0JCWdvdG8gb3V0OwotCX0KLQotCW1kcDVfa21zLT5yZXYgPSBtaW5vcjsKLQotCS8qIG9u bHkgYWZ0ZXIgbWRwNV9jZmcgZ2xvYmFsIHBvaW50ZXIncyBpbml0IGNhbiB3ZSBhY2Nlc3MgdGhl IGh3ICovCi0JZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUobWRwNV9jb25maWdzKTsgaSsrKSB7 Ci0JCWlmIChtZHA1X2NvbmZpZ3NbaV0ucmV2aXNpb24gIT0gbWlub3IpCi0JCQljb250aW51ZTsK LQkJbWRwNV9rbXMtPmh3X2NmZyA9IG1kcDVfY2ZnID0gbWRwNV9jb25maWdzW2ldLmNvbmZpZzsK LQkJYnJlYWs7Ci0JfQotCWlmICh1bmxpa2VseSghbWRwNV9rbXMtPmh3X2NmZykpIHsKLQkJZGV2 X2VycihkZXYtPmRldiwgInVuZXhwZWN0ZWQgTURQIG1pbm9yIHJldmlzaW9uOiB2JWQuJWRcbiIs Ci0JCQkJbWFqb3IsIG1pbm9yKTsKLQkJcmV0ID0gLUVOWElPOwotCQlnb3RvIG91dDsKLQl9Ci0K LQlEQkcoIk1EUDU6ICVzIGNvbmZpZyBzZWxlY3RlZCIsIG1kcDVfa21zLT5od19jZmctPm5hbWUp OwotCi0JcmV0dXJuIDA7Ci1vdXQ6Ci0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIGludCBtZHA1 X2h3X2luaXQoc3RydWN0IG1zbV9rbXMgKmttcykKIHsKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVf a21zID0gdG9fbWRwNV9rbXModG9fbWRwX2ttcyhrbXMpKTsKKwljb25zdCBzdHJ1Y3QgbWRwNV9j ZmdfaHcgKmh3X2NmZzsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gbWRwNV9rbXMtPmRldjsK IAlpbnQgaTsKIApAQCAtMjA3LDcgKzYwLDkgQEAgc3RhdGljIGludCBtZHA1X2h3X2luaXQoc3Ry dWN0IG1zbV9rbXMgKmttcykKIAogCW1kcDVfd3JpdGUobWRwNV9rbXMsIFJFR19NRFA1X0RJU1Bf SU5URl9TRUwsIDApOwogCi0JZm9yIChpID0gMDsgaSA8IG1kcDVfa21zLT5od19jZmctPmN0bC5j b3VudDsgaSsrKQorCWh3X2NmZyA9IG1kcDVfY2ZnX2dldF9od19jb25maWcobWRwNV9rbXMtPmNm Z19wcml2KTsKKworCWZvciAoaSA9IDA7IGkgPCBod19jZmctPmN0bC5jb3VudDsgaSsrKQogCQlt ZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9DVExfT1AoaSksIDApOwogCiAJcG1fcnVudGlt ZV9wdXRfc3luYyhkZXYtPmRldik7CkBAIC0yMzYsNiArOTEsNyBAQCBzdGF0aWMgdm9pZCBtZHA1 X2Rlc3Ryb3koc3RydWN0IG1zbV9rbXMgKmttcykKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21z ID0gdG9fbWRwNV9rbXModG9fbWRwX2ttcyhrbXMpKTsKIAlzdHJ1Y3QgbXNtX21tdSAqbW11ID0g bWRwNV9rbXMtPm1tdTsKIAl2b2lkICpzbXAgPSBtZHA1X2ttcy0+c21wX3ByaXY7CisJdm9pZCAq Y2ZnID0gbWRwNV9rbXMtPmNmZ19wcml2OwogCiAJaWYgKG1tdSkgewogCQltbXUtPmZ1bmNzLT5k ZXRhY2gobW11LCBpb21tdV9wb3J0cywgQVJSQVlfU0laRShpb21tdV9wb3J0cykpOwpAQCAtMjQz LDYgKzk5LDggQEAgc3RhdGljIHZvaWQgbWRwNV9kZXN0cm95KHN0cnVjdCBtc21fa21zICprbXMp CiAJfQogCWlmIChzbXApCiAJCW1kcDVfc21wX2Rlc3Ryb3koc21wKTsKKwlpZiAoY2ZnKQorCQlt ZHA1X2NmZ19kZXN0cm95KGNmZyk7CiAKIAlrZnJlZShtZHA1X2ttcyk7CiB9CkBAIC0yOTYsMTAg KzE1NCwxMyBAQCBzdGF0aWMgaW50IG1vZGVzZXRfaW5pdChzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVf a21zKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBtZHA1X2ttcy0+ZGV2OwogCXN0cnVjdCBt c21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fZW5j b2RlciAqZW5jb2RlcjsKKwljb25zdCBzdHJ1Y3QgbWRwNV9jZmdfaHcgKmh3X2NmZzsKIAlpbnQg aSwgcmV0OwogCisJaHdfY2ZnID0gbWRwNV9jZmdfZ2V0X2h3X2NvbmZpZyhtZHA1X2ttcy0+Y2Zn X3ByaXYpOworCiAJLyogY29uc3RydWN0IENSVENzOiAqLwotCWZvciAoaSA9IDA7IGkgPCBtZHA1 X2ttcy0+aHdfY2ZnLT5waXBlX3JnYi5jb3VudDsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IGh3 X2NmZy0+cGlwZV9yZ2IuY291bnQ7IGkrKykgewogCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsK IAkJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCkBAIC0zNjAsNiArMjIxLDIxIEBAIGZhaWw6CiAJ cmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQgcmVhZF9od19yZXZpc2lvbihzdHJ1Y3QgbWRw NV9rbXMgKm1kcDVfa21zLAorCQl1aW50MzJfdCAqbWFqb3IsIHVpbnQzMl90ICptaW5vcikKK3sK Kwl1aW50MzJfdCB2ZXJzaW9uOworCisJbWRwNV9lbmFibGUobWRwNV9rbXMpOworCXZlcnNpb24g PSBtZHA1X3JlYWQobWRwNV9rbXMsIFJFR19NRFA1X01EUF9WRVJTSU9OKTsKKwltZHA1X2Rpc2Fi bGUobWRwNV9rbXMpOworCisJKm1ham9yID0gRklFTEQodmVyc2lvbiwgTURQNV9NRFBfVkVSU0lP Tl9NQUpPUik7CisJKm1pbm9yID0gRklFTEQodmVyc2lvbiwgTURQNV9NRFBfVkVSU0lPTl9NSU5P Uik7CisKKwlEQkcoIk1EUDUgdmVyc2lvbiB2JWQuJWQiLCAqbWFqb3IsICptaW5vcik7Cit9CisK IHN0YXRpYyBpbnQgZ2V0X2NsayhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3Qg Y2xrICoqY2xrcCwKIAkJY29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTM3NiwxMCArMjUyLDExIEBA IHN0YXRpYyBpbnQgZ2V0X2NsayhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3Qg Y2xrICoqY2xrcCwKIHN0cnVjdCBtc21fa21zICptZHA1X2ttc19pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CiAJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IGRldi0+cGxhdGZv cm1kZXY7Ci0Jc3RydWN0IG1kcDVfcGxhdGZvcm1fY29uZmlnICpjb25maWcgPSBtZHA1X2dldF9j b25maWcocGRldik7CisJc3RydWN0IG1kcDVfY2ZnICpjb25maWc7CiAJc3RydWN0IG1kcDVfa21z ICptZHA1X2ttczsKIAlzdHJ1Y3QgbXNtX2ttcyAqa21zID0gTlVMTDsKIAlzdHJ1Y3QgbXNtX21t dSAqbW11OworCXVpbnQzMl90IG1ham9yLCBtaW5vcjsKIAl2b2lkICpwcml2OwogCWludCBpLCBy ZXQ7CiAKQEAgLTQzOSwxNCArMzE2LDE5IEBAIHN0cnVjdCBtc21fa21zICptZHA1X2ttc19pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKHJldCkKIAkJZ290byBmYWlsOwogCi0JcmV0 ID0gbWRwNV9zZWxlY3RfaHdfY2ZnKGttcyk7Ci0JaWYgKHJldCkKKwlyZWFkX2h3X3JldmlzaW9u KG1kcDVfa21zLCAmbWFqb3IsICZtaW5vcik7CisJcHJpdiA9IG1kcDVfY2ZnX2luaXQobWRwNV9r bXMsIG1ham9yLCBtaW5vcik7CisJaWYgKElTX0VSUihwcml2KSkgeworCQlyZXQgPSBQVFJfRVJS KHByaXYpOwogCQlnb3RvIGZhaWw7CisJfQorCW1kcDVfa21zLT5jZmdfcHJpdiA9IHByaXY7CisJ Y29uZmlnID0gbWRwNV9jZmdfZ2V0X2NvbmZpZyhtZHA1X2ttcy0+Y2ZnX3ByaXYpOwogCiAJLyog VE9ETzogY29tcHV0ZSBjb3JlIGNsb2NrIHJhdGUgYXQgcnVudGltZSAqLwotCWNsa19zZXRfcmF0 ZShtZHA1X2ttcy0+c3JjX2NsaywgbWRwNV9rbXMtPmh3X2NmZy0+bWF4X2Nsayk7CisJY2xrX3Nl dF9yYXRlKG1kcDVfa21zLT5zcmNfY2xrLCBjb25maWctPmh3LT5tYXhfY2xrKTsKIAotCXByaXYg PSBtZHA1X3NtcF9pbml0KG1kcDVfa21zLT5kZXYsICZtZHA1X2ttcy0+aHdfY2ZnLT5zbXApOwor CXByaXYgPSBtZHA1X3NtcF9pbml0KG1kcDVfa21zLT5kZXYsICZjb25maWctPmh3LT5zbXApOwog CWlmIChJU19FUlIocHJpdikpIHsKIAkJcmV0ID0gUFRSX0VSUihwcml2KTsKIAkJZ290byBmYWls OwpAQCAtNDU4LDEzICszNDAsMTMgQEAgc3RydWN0IG1zbV9rbXMgKm1kcDVfa21zX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAkgKiB3ZSBkb24ndCBkaXNhYmxlKToKIAkgKi8KIAltZHA1 X2VuYWJsZShtZHA1X2ttcyk7Ci0JZm9yIChpID0gMDsgaSA8IG1kcDVfa21zLT5od19jZmctPmlu dGYuY291bnQ7IGkrKykKKwlmb3IgKGkgPSAwOyBpIDwgY29uZmlnLT5ody0+aW50Zi5jb3VudDsg aSsrKQogCQltZHA1X3dyaXRlKG1kcDVfa21zLCBSRUdfTURQNV9JTlRGX1RJTUlOR19FTkdJTkVf RU4oaSksIDApOwogCW1kcDVfZGlzYWJsZShtZHA1X2ttcyk7CiAJbWRlbGF5KDE2KTsKIAotCWlm IChjb25maWctPmlvbW11KSB7Ci0JCW1tdSA9IG1zbV9pb21tdV9uZXcoJnBkZXYtPmRldiwgY29u ZmlnLT5pb21tdSk7CisJaWYgKGNvbmZpZy0+cGxhdGZvcm0uaW9tbXUpIHsKKwkJbW11ID0gbXNt X2lvbW11X25ldygmcGRldi0+ZGV2LCBjb25maWctPnBsYXRmb3JtLmlvbW11KTsKIAkJaWYgKElT X0VSUihtbXUpKSB7CiAJCQlyZXQgPSBQVFJfRVJSKG1tdSk7CiAJCQlkZXZfZXJyKGRldi0+ZGV2 LCAiZmFpbGVkIHRvIGluaXQgaW9tbXU6ICVkXG4iLCByZXQpOwpAQCAtNTA1LDE0ICszODcsMyBA QCBmYWlsOgogCQltZHA1X2Rlc3Ryb3koa21zKTsKIAlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQot Ci1zdGF0aWMgc3RydWN0IG1kcDVfcGxhdGZvcm1fY29uZmlnICptZHA1X2dldF9jb25maWcoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqZGV2KQotewotCXN0YXRpYyBzdHJ1Y3QgbWRwNV9wbGF0Zm9y bV9jb25maWcgY29uZmlnID0ge307Ci0jaWZkZWYgQ09ORklHX09GCi0JLyogVE9ETyAqLwotI2Vu ZGlmCi0JY29uZmlnLmlvbW11ID0gaW9tbXVfZG9tYWluX2FsbG9jKCZwbGF0Zm9ybV9idXNfdHlw ZSk7Ci0KLQlyZXR1cm4gJmNvbmZpZzsKLX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vbWRwL21kcDUvbWRwNV9rbXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbWRwL21kcDUvbWRw NV9rbXMuaAppbmRleCA3NTM2NTliLi43NjE2YTNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21kcC9tZHA1L21kcDVfa21zLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tZHAv bWRwNS9tZHA1X2ttcy5oCkBAIC0yMSwzNiArMjEsNyBAQAogI2luY2x1ZGUgIm1zbV9kcnYuaCIK ICNpbmNsdWRlICJtc21fa21zLmgiCiAjaW5jbHVkZSAibWRwL21kcF9rbXMuaCIKLS8qIGR5bmFt aWMgb2Zmc2V0cyB1c2VkIGJ5IG1kcDUueG1sLmggKGluaXRpYWxpemVkIGluIG1kcDVfa21zLmMp ICovCi0jZGVmaW5lIE1EUDVfTUFYX0JBU0VTCQk4Ci0jZGVmaW5lIE1BWF9TTVBfQkxPQ0tTCQk0 NAotI2RlZmluZSBNQVhfQ0xJRU5UUwkJMzIKLXR5cGVkZWYgREVDTEFSRV9CSVRNQVAobWRwNV9z bXBfc3RhdGVfdCwgTUFYX1NNUF9CTE9DS1MpOwotc3RydWN0IG1kcDVfc3ViX2Jsb2NrIHsKLQlp bnQJY291bnQ7Ci0JdWludDMyX3QgYmFzZVtNRFA1X01BWF9CQVNFU107Ci19Owotc3RydWN0IG1k cDVfc21wX2Jsb2NrIHsKLQlpbnQgbW1iX2NvdW50OwkJCS8qIG51bWJlciBvZiBTTVAgTU1CcyAq LwotCWludCBtbWJfc2l6ZTsJCQkvKiBNTUI6IHNpemUgaW4gYnl0ZXMgKi8KLQltZHA1X3NtcF9z dGF0ZV90IHJlc2VydmVkX3N0YXRlOy8qIFNNUCBNTUJzIHN0YXRpY2FsbHkgYWxsb2NhdGVkICov Ci0JaW50IHJlc2VydmVkW01BWF9DTElFTlRTXTsJLyogIyBvZiBNTUJzIHJlc2VydmVkIHBlciBj bGllbnQgKi8KLX07Ci1zdHJ1Y3QgbWRwNV9jb25maWcgewotCWNoYXIgICpuYW1lOwotCXN0cnVj dCBtZHA1X3NtcF9ibG9jayBzbXA7Ci0Jc3RydWN0IG1kcDVfc3ViX2Jsb2NrIGN0bDsKLQlzdHJ1 Y3QgbWRwNV9zdWJfYmxvY2sgcGlwZV92aWc7Ci0Jc3RydWN0IG1kcDVfc3ViX2Jsb2NrIHBpcGVf cmdiOwotCXN0cnVjdCBtZHA1X3N1Yl9ibG9jayBwaXBlX2RtYTsKLQlzdHJ1Y3QgbWRwNV9zdWJf YmxvY2sgbG07Ci0Jc3RydWN0IG1kcDVfc3ViX2Jsb2NrIGRzcHA7Ci0Jc3RydWN0IG1kcDVfc3Vi X2Jsb2NrIGFkOwotCXN0cnVjdCBtZHA1X3N1Yl9ibG9jayBpbnRmOwotCi0JdWludDMyX3QgbWF4 X2NsazsKLX07Ci1leHRlcm4gY29uc3Qgc3RydWN0IG1kcDVfY29uZmlnICptZHA1X2NmZzsKKyNp bmNsdWRlICJtZHA1X2NmZy5oIgkvKiBtdXN0IGJlIGluY2x1ZGVkIGJlZm9yZSBtZHA1LnhtbC5o ICovCiAjaW5jbHVkZSAibWRwNS54bWwuaCIKICNpbmNsdWRlICJtZHA1X3NtcC5oIgogCkBAIC01 OSw4ICszMCw3IEBAIHN0cnVjdCBtZHA1X2ttcyB7CiAKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 OwogCi0JaW50IHJldjsKLQljb25zdCBzdHJ1Y3QgbWRwNV9jb25maWcgKmh3X2NmZzsKKwl2b2lk ICpjZmdfcHJpdjsKIAogCS8qIG1hcHBlci1pZCB1c2VkIHRvIHJlcXVlc3QgR0VNIGJ1ZmZlciBt YXBwZWQgZm9yIHNjYW5vdXQ6ICovCiAJaW50IGlkOwpAQCAtODQsMTEgKzU0LDYgQEAgc3RydWN0 IG1kcDVfa21zIHsKIH07CiAjZGVmaW5lIHRvX21kcDVfa21zKHgpIGNvbnRhaW5lcl9vZih4LCBz dHJ1Y3QgbWRwNV9rbXMsIGJhc2UpCiAKLS8qIHBsYXRmb3JtIGNvbmZpZyBkYXRhIChpZS4gZnJv bSBEVCwgb3IgcGRhdGEpICovCi1zdHJ1Y3QgbWRwNV9wbGF0Zm9ybV9jb25maWcgewotCXN0cnVj dCBpb21tdV9kb21haW4gKmlvbW11OwotfTsKLQogc3RhdGljIGlubGluZSB2b2lkIG1kcDVfd3Jp dGUoc3RydWN0IG1kcDVfa21zICptZHA1X2ttcywgdTMyIHJlZywgdTMyIGRhdGEpCiB7CiAJbXNt X3dyaXRlbChkYXRhLCBtZHA1X2ttcy0+bW1pbyArIHJlZyk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL21kcC9tZHA1L21kcDVfc21wLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21k cC9tZHA1L21kcDVfc21wLmMKaW5kZXggZTYxZTFjZi4uMDQ5OTZjYSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9tZHAvbWRwNS9tZHA1X3NtcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vbWRwL21kcDUvbWRwNV9zbXAuYwpAQCAtMTA4LDExICsxMDgsMTUgQEAgc3RhdGljIGlu dCBzbXBfcmVxdWVzdF9ibG9jayhzdHJ1Y3QgbWRwNV9zbXAgKnNtcCwKIAkJZW51bSBtZHA1X2Ns aWVudF9pZCBjaWQsIGludCBuYmxrcykKIHsKIAlzdHJ1Y3QgbWRwNV9rbXMgKm1kcDVfa21zID0g Z2V0X2ttcyhzbXApOworCWNvbnN0IHN0cnVjdCBtZHA1X2NmZ19odyAqaHdfY2ZnOwogCXN0cnVj dCBtZHA1X2NsaWVudF9zbXBfc3RhdGUgKnBzID0gJnNtcC0+Y2xpZW50X3N0YXRlW2NpZF07CiAJ aW50IGksIHJldCwgYXZhaWwsIGN1cl9uYmxrcywgY250ID0gc21wLT5ibGtfY250OwotCWludCBy ZXNlcnZlZCA9IG1kcDVfa21zLT5od19jZmctPnNtcC5yZXNlcnZlZFtjaWRdOworCWludCByZXNl cnZlZDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCisJaHdfY2ZnID0gbWRwNV9jZmdfZ2V0X2h3 X2NvbmZpZyhtZHA1X2ttcy0+Y2ZnX3ByaXYpOworCXJlc2VydmVkID0gaHdfY2ZnLT5zbXAucmVz ZXJ2ZWRbY2lkXTsKKwogCXNwaW5fbG9ja19pcnFzYXZlKCZzbXAtPnN0YXRlX2xvY2ssIGZsYWdz KTsKIAogCW5ibGtzIC09IHJlc2VydmVkOwpAQCAtMTc1LDYgKzE3OSw3IEBAIGludCBtZHA1X3Nt cF9yZXF1ZXN0KHZvaWQgKmhhbmRsZXIsIGVudW0gbWRwNV9waXBlIHBpcGUsIHUzMiBmbXQsIHUz MiB3aWR0aCkKIAlzdHJ1Y3QgbWRwNV9zbXAgKnNtcCA9IGhhbmRsZXI7CiAJc3RydWN0IG1kcDVf a21zICptZHA1X2ttcyA9IGdldF9rbXMoc21wKTsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g bWRwNV9rbXMtPmRldjsKKwlpbnQgcmV2ID0gbWRwNV9jZmdfZ2V0X2h3X3JldihtZHA1X2ttcy0+ Y2ZnX3ByaXYpOwogCWludCBpLCBoc3ViLCBucGxhbmVzLCBubGluZXMsIG5ibGtzLCByZXQ7CiAK IAlucGxhbmVzID0gZHJtX2Zvcm1hdF9udW1fcGxhbmVzKGZtdCk7CkBAIC0xOTIsNyArMTk3LDcg QEAgaW50IG1kcDVfc21wX3JlcXVlc3Qodm9pZCAqaGFuZGxlciwgZW51bSBtZHA1X3BpcGUgcGlw ZSwgdTMyIGZtdCwgdTMyIHdpZHRoKQogCQluID0gRElWX1JPVU5EX1VQKGZldGNoX3N0cmlkZSAq IG5saW5lcywgc21wLT5ibGtfc2l6ZSk7CiAKIAkJLyogZm9yIGh3IHJldiB2MS4wMCAqLwotCQlp ZiAobWRwNV9rbXMtPnJldiA9PSAwKQorCQlpZiAocmV2ID09IDApCiAJCQluID0gcm91bmR1cF9w b3dfb2ZfdHdvKG4pOwogCiAJCURCRygiJXNbJWRdOiByZXF1ZXN0ICVkIFNNUCBibG9ja3MiLCBw aXBlMm5hbWUocGlwZSksIGksIG4pOwotLSAKUXVhbGNvbW0gSW5ub3ZhdGlvbiBDZW50ZXIsIElu Yy4KClRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBpcyBhIG1lbWJlciBvZiB0 aGUgQ29kZSBBdXJvcmEgRm9ydW0sIGEgTGludXggRm91bmRhdGlvbiBDb2xsYWJvcmF0aXZlIFBy b2plY3QKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==