From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liu Ying Subject: [PATCH RFC v3 11/18] drm/bridge: Add Synopsys DesignWare MIPI DSI host controller driver Date: Tue, 23 Dec 2014 11:46:32 +0800 Message-ID: <1419306399-9387-12-git-send-email-Ying.Liu@freescale.com> References: <1419306399-9387-1-git-send-email-Ying.Liu@freescale.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1419306399-9387-1-git-send-email-Ying.Liu@freescale.com> 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: devicetree@vger.kernel.org, linux@arm.linux.org.uk, kernel@pengutronix.de, linux-kernel@vger.kernel.org, mturquette@linaro.org, linux-arm-kernel@lists.infradead.org, andyshrk@gmail.com List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIFN5bm9wc3lzIERlc2lnbldhcmUgTUlQSSBEU0kgaG9zdCBjb250cm9s bGVyIGRyaXZlciBzdXBwb3J0LgpDdXJyZW50bHksIHRoZSBkcml2ZXIgc3VwcG9ydHMgdGhlIGJ1 cnN0IHdpdGggc3luYyBwdWxzZXMgbW9kZSBvbmx5LgoKU2lnbmVkLW9mZi1ieTogTGl1IFlpbmcg PFlpbmcuTGl1QGZyZWVzY2FsZS5jb20+Ci0tLQp2Mi0+djM6CiAqIE5ld2x5IGludHJvZHVjZWQg aW4gdjMgdG8gYWRkcmVzcyBBbmR5IFlhbidzIGNvbW1lbnQuICBUaGlzIGlzIGJhc2VkIG9uCiAg IHRoZSBpLk1YIE1JUEkgRFNJIGRyaXZlciBpbiB2Mi4gIFRvIG1ha2UgdGhlIFN5bm9wc3lzIERl c2lnbldhcmUgTUlQSSBEU0kKICAgaG9zdCBjb250cm9sbGVyIGRyaXZlciBsZXNzIHBsYXRmb3Jt LWRlcGVuZGFudCwgdGhpcyBwYXRjaCBwbGFjZXMgaXQgYXQKICAgdGhlIGRybS9icmlkZ2UgZGly ZWN0b3J5IGFzIGEgRFJNIGJyaWRnZSBkcml2ZXIuCgogLi4uL2RldmljZXRyZWUvYmluZGluZ3Mv ZHJtL2JyaWRnZS9kd19taXBpX2RzaS50eHQgfCAgNzIgKysKIGRyaXZlcnMvZ3B1L2RybS9icmlk Z2UvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9i cmlkZ2UvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvZHdfbWlwaV9kc2kuYyAgICAgICAgICAgICAgIHwgOTk4ICsrKysrKysrKysrKysr KysrKysrKwogaW5jbHVkZS9kcm0vYnJpZGdlL2R3X21pcGlfZHNpLmggICAgICAgICAgICAgICAg ICAgfCAgMjcgKwogNSBmaWxlcyBjaGFuZ2VkLCAxMTAzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBt b2RlIDEwMDY0NCBEb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZHJtL2JyaWRnZS9k d19taXBpX2RzaS50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYnJpZGdl L2R3X21pcGlfZHNpLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9icmlkZ2UvZHdf bWlwaV9kc2kuaAoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9kcm0vYnJpZGdlL2R3X21pcGlfZHNpLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9kcm0vYnJpZGdlL2R3X21pcGlfZHNpLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41ZGNiZDlmCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9k ZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9icmlkZ2UvZHdfbWlwaV9kc2kudHh0CkBAIC0wLDAgKzEs NzIgQEAKK0RldmljZS1UcmVlIGJpbmRpbmdzIGZvciBTeW5vcHN5cyBEZXNpZ25XYXJlIE1JUEkg RFNJIGhvc3QgY29udHJvbGxlcgorCitUaGUgY29udHJvbGxlciBpcyBhIGRpZ2l0YWwgY29yZSB0 aGF0IGltcGxlbWVudHMgYWxsIHByb3RvY29sIGZ1bmN0aW9ucworZGVmaW5lZCBpbiB0aGUgTUlQ SSBEU0kgc3BlY2lmaWNhdGlvbiwgcHJvdmlkaW5nIGFuIGludGVyZmFjZSBiZXR3ZWVuCit0aGUg c3lzdGVtIGFuZCB0aGUgTUlQSSBEUEhZLCBhbmQgYWxsb3dpbmcgY29tbXVuaWNhdGlvbiB3aXRo IGEgTUlQSSBEU0kKK2NvbXBsaWFudCBkaXNwbGF5LgorCitSZXF1aXJlZCBwcm9wZXJ0aWVzOgor IC0gI2FkZHJlc3MtY2VsbHM6IFNob3VsZCBiZSA8MT4uCisgLSAjc2l6ZS1jZWxsczogU2hvdWxk IGJlIDwwPi4KKyAtIGNvbXBhdGlibGU6IFRoZSBjb21wYXRpYmxlIHN0cmluZyBzaG91bGQgYmUg ImZzbCxpbXg2cS1taXBpLWRzaSIgZm9yCisgICBpLk1YNnEvc2RsIFNvQ3MuICBGb3Igb3RoZXIg U29DcywgcGxlYXNlIHJlZmVyIHRvIHRoZWlyIHNwZWNpZmljCisgICBkZXZpY2UgdHJlZSBiaW5k aW5nIGRvY3VtZW50YXRpb25zLgorIC0gcmVnOiBSZXByZXNlbnQgdGhlIHBoeXNpY2FsIGFkZHJl c3MgcmFuZ2Ugb2YgdGhlIGNvbnRyb2xsZXIuCisgLSBpbnRlcnJ1cHRzOiBSZXByZXNlbnQgdGhl IGNvbnRyb2xsZXIncyBpbnRlcnJ1cHQgdG8gdGhlIENQVShzKS4KKyAtIGNsb2NrcywgY2xvY2st bmFtZXM6IFBoYW5kbGVzIHRvIHRoZSBjb250cm9sbGVyIHBsbCByZWZlcmVuY2UgYW5kCisgICBj b3JlIGNvbmZpZ3VyYXRpb24gY2xvY2tzLCBhcyBkZXNjcmliZWQgaW4gWzFdLgorCitGb3IgbW9y ZSByZXF1aXJlZCBwcm9wZXJ0aWVzLCBwbGVhc2UgcmVmZXIgdG8gcmVsZXZhbnQgZGV2aWNlIHRy ZWUgYmluZGluZworZG9jdW1lbnRhdGlvbnMgd2hpY2ggZGVzY3JpYmUgdGhlIGNvbnRyb2xsZXIg ZW1iZWRkZWQgaW4gc3BlY2lmaWMgU29Dcy4KKworUmVxdWlyZWQgc3ViLW5vZGVzOgorIC0gQSBu b2RlIHRvIHJlcHJlc2VudCBhIERTSSBwZXJpcGhlcmFsIGFzIGRlc2NyaWJlZCBpbiBbMl0uCisK K0ZvciBtb3JlIHJlcXVpcmVkIHN1Yi1ub2RlcywgcGxlYXNlIHJlZmVyIHRvIHJlbGV2YW50IGRl dmljZSB0cmVlIGJpbmRpbmcKK2RvY3VtZW50YXRpb25zIHdoaWNoIGRlc2NyaWJlIHRoZSBjb250 cm9sbGVyIGVtYmVkZGVkIGluIHNwZWNpZmljIFNvQ3MuCisKK1sxXSBEb2N1bWVudGF0aW9uL2Rl dmljZXRyZWUvYmluZGluZ3MvY2xvY2svY2xvY2stYmluZGluZ3MudHh0CitbMl0gRG9jdW1lbnRh dGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL21pcGkvZHNpL21pcGktZHNpLWJ1cy50eHQKKworZXhh bXBsZToKKwlncHI6IGlvbXV4Yy1ncHJAMDIwZTAwMDAgeworCQkvKiAuLi4gKi8KKwl9OworCisJ bWlwaV9kc2k6IG1pcGlAMDIxZTAwMDAgeworCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKKwkJI3Np emUtY2VsbHMgPSA8MD47CisJCWNvbXBhdGlibGUgPSAiZnNsLGlteDZxLW1pcGktZHNpIjsKKwkJ cmVnID0gPDB4MDIxZTAwMDAgMHg0MDAwPjsKKwkJaW50ZXJydXB0cyA9IDwwIDEwMiBJUlFfVFlQ RV9MRVZFTF9ISUdIPjsKKwkJZ3ByID0gPCZncHI+OworCQljbG9ja3MgPSA8JmNsa3MgSU1YNlFE TF9DTEtfTUlQSV9DT1JFX0NGRz4sCisJCQkgPCZjbGtzIElNWDZRRExfQ0xLX01JUElfQ09SRV9D Rkc+OworCQljbG9jay1uYW1lcyA9ICJwbGxyZWYiLCAiY29yZV9jZmciOworCisJCXBvcnRzIHsK KwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCQkJCWlucHV0LXBvcnQ7CisKKwkJCQltaXBp X211eF8wOiBlbmRwb2ludCB7CisJCQkJCXJlbW90ZS1lbmRwb2ludCA9IDwmaXB1MV9kaTBfbWlw aT47CisJCQkJfTsKKwkJCX07CisKKwkJCXBvcnRAMSB7CisJCQkJcmVnID0gPDE+OworCQkJCWlu cHV0LXBvcnQ7CisKKwkJCQltaXBpX211eF8xOiBlbmRwb2ludCB7CisJCQkJCXJlbW90ZS1lbmRw b2ludCA9IDwmaXB1MV9kaTFfbWlwaT47CisJCQkJfTsKKwkJCX07CisJCX07CisKKwkJcGFuZWwg eworCQkJY29tcGF0aWJsZSA9ICJ0cnVseSx0ZnQ0ODA4MDAtMTYtZS1kc2kiOworCQkJcmVnID0g PDA+OworCQkJLyogLi4uICovCisJCX07CisJfTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9icmlkZ2UvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvS2NvbmZpZwppbmRleCA4 ODQ5MjNmLi44MTgwNDc3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL0tjb25m aWcKKysrIGIvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9LY29uZmlnCkBAIC0xLDMgKzEsOCBAQAor Y29uZmlnIERSTV9EV19NSVBJX0RTSQorCWJvb2wgIlN5bm9wc3lzIERlc2lnbldhcmUgTUlQSSBE U0kgaG9zdCBjb250cm9sbGVyIGJyaWRnZSIKKwlkZXBlbmRzIG9uIERSTQorCXNlbGVjdCBEUk1f S01TX0hFTFBFUgorCiBjb25maWcgRFJNX1BUTjM0NjAKIAl0cmlzdGF0ZSAiUFROMzQ2MCBEUC9M VkRTIGJyaWRnZSIKIAlkZXBlbmRzIG9uIERSTQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2JyaWRnZS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvTWFrZWZpbGUKaW5kZXgg YjQ3MzNlMS4uYjMyNmFkNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2JyaWRnZS9NYWtl ZmlsZQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYnJpZGdlL01ha2VmaWxlCkBAIC0xLDMgKzEsNCBA QAogY2NmbGFncy15IDo9IC1JaW5jbHVkZS9kcm0KIAorb2JqLSQoQ09ORklHX0RSTV9EV19NSVBJ X0RTSSkgKz0gZHdfbWlwaV9kc2kubwogb2JqLSQoQ09ORklHX0RSTV9QVE4zNDYwKSArPSBwdG4z NDYwLm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfbWlwaV9kc2kuYyBi L2RyaXZlcnMvZ3B1L2RybS9icmlkZ2UvZHdfbWlwaV9kc2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zNDFjZDZmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2JyaWRnZS9kd19taXBpX2RzaS5jCkBAIC0wLDAgKzEsOTk4IEBACisvKgorICogU3lub3Bz eXMgRGVzaWduV2FyZShEVykgTUlQSSBEU0kgSG9zdCBDb250cm9sbGVyCisgKgorICogQ29weXJp Z2h0IChDKSAyMDExLTIwMTQgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQorICogYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDIKKyAqIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRo ZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs IEZpZnRoIEZsb29yLCBCb3N0b24sCisgKiBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L2Nsay5oPgorI2luY2x1ZGUgPGxpbnV4L21hdGg2NC5oPgorI2luY2x1ZGUg PGxpbnV4L21vZHVsZS5oPgorI2luY2x1ZGUgPGRybS9icmlkZ2UvZHdfbWlwaV9kc2kuaD4KKyNp bmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2Rz aS5oPgorI2luY2x1ZGUgPGRybS9kcm1fcGFuZWwuaD4KKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rp c3BsYXkuaD4KKworI2RlZmluZSBEU0lfVkVSU0lPTgkJCTB4MDAKKworI2RlZmluZSBEU0lfUFdS X1VQCQkJMHgwNAorI2RlZmluZSBSRVNFVAkJCQkwCisjZGVmaW5lIFBPV0VSVVAJCQkJQklUKDAp CisKKyNkZWZpbmUgRFNJX0NMS01HUl9DRkcJCQkweDA4CisjZGVmaW5lIFRPX0NMS19ESVZJRFNJ T04oZGl2KQkJKCgoZGl2KSAmIDB4ZmYpIDw8IDgpCisjZGVmaW5lIFRYX0VTQ19DTEtfRElWSURT SU9OKGRpdikJKCgoZGl2KSAmIDB4ZmYpIDw8IDApCisKKyNkZWZpbmUgRFNJX0RQSV9DRkcJCQkw eDBjCisjZGVmaW5lIEVOMThfTE9PU0VMWQkJCUJJVCgxMCkKKyNkZWZpbmUgQ09MT1JNX0FDVElW RV9MT1cJCUJJVCg5KQorI2RlZmluZSBTSFVURF9BQ1RJVkVfTE9XCQlCSVQoOCkKKyNkZWZpbmUg SFNZTkNfQUNUSVZFX0xPVwkJQklUKDcpCisjZGVmaW5lIFZTWU5DX0FDVElWRV9MT1cJCUJJVCg2 KQorI2RlZmluZSBEQVRBRU5fQUNUSVZFX0xPVwkJQklUKDUpCisjZGVmaW5lIERQSV9DT0xPUl9D T0RJTkdfMTZCSVRfMQkoMHgwIDw8IDIpCisjZGVmaW5lIERQSV9DT0xPUl9DT0RJTkdfMTZCSVRf MgkoMHgxIDw8IDIpCisjZGVmaW5lIERQSV9DT0xPUl9DT0RJTkdfMTZCSVRfMwkoMHgyIDw8IDIp CisjZGVmaW5lIERQSV9DT0xPUl9DT0RJTkdfMThCSVRfMQkoMHgzIDw8IDIpCisjZGVmaW5lIERQ SV9DT0xPUl9DT0RJTkdfMThCSVRfMgkoMHg0IDw8IDIpCisjZGVmaW5lIERQSV9DT0xPUl9DT0RJ TkdfMjRCSVQJCSgweDUgPDwgMikKKyNkZWZpbmUgRFBJX1ZJRCh2aWQpCQkJKCgodmlkKSAmIDB4 MykgPDwgMCkKKworI2RlZmluZSBEU0lfREJJX0NGRwkJCTB4MTAKKyNkZWZpbmUgRFNJX0RCSVNf Q01EU0laRQkJMHgxNAorCisjZGVmaW5lIERTSV9QQ0tIRExfQ0ZHCQkJMHgxOAorI2RlZmluZSBH RU5fVklEX1JYKHZpZCkJCQkoKCh2aWQpICYgMHgzKSA8PCA1KQorI2RlZmluZSBFTl9DUkNfUlgJ CQlCSVQoNCkKKyNkZWZpbmUgRU5fRUNDX1JYCQkJQklUKDMpCisjZGVmaW5lIEVOX0JUQQkJCQlC SVQoMikKKyNkZWZpbmUgRU5fRU9UTl9SWAkJCUJJVCgxKQorI2RlZmluZSBFTl9FT1RQX1RYCQkJ QklUKDApCisKKyNkZWZpbmUgRFNJX1ZJRF9NT0RFX0NGRwkJMHgxYworI2RlZmluZSBGUkFNRV9C VEFfQUNLCQkJQklUKDExKQorI2RlZmluZSBFTl9OVUxMX1BLVAkJCUJJVCgxMCkKKyNkZWZpbmUg RU5fTlVMTF9QS1RfTUFTSwkJQklUKDEwKQorI2RlZmluZSBFTl9NVUxUSV9QS1QJCQlCSVQoOSkK KyNkZWZpbmUgRU5BQkxFX0xPV19QT1dFUgkJKDB4M2YgPDwgMykKKyNkZWZpbmUgRU5BQkxFX0xP V19QT1dFUl9NQVNLCQkoMHgzZiA8PCAzKQorI2RlZmluZSBWSURfTU9ERV9UWVBFX05PTkJVUlNU X1NZTkNfUFVMU0VTCSgweDAgPDwgMSkKKyNkZWZpbmUgVklEX01PREVfVFlQRV9OT05CVVJTVF9T WU5DX0VWRU5UUwkoMHgxIDw8IDEpCisjZGVmaW5lIFZJRF9NT0RFX1RZUEVfQlVSU1RfU1lOQ19Q VUxTRVMJCSgweDMgPDwgMSkKKyNkZWZpbmUgVklEX01PREVfVFlQRV9NQVNLCQkJKDB4MyA8PCAx KQorI2RlZmluZSBFTkFCTEVfVklERU9fTU9ERQkJCUJJVCgwKQorI2RlZmluZSBESVNBQkxFX1ZJ REVPX01PREUJCQkwCisjZGVmaW5lIEVOQUJMRV9WSURFT19NT0RFX01BU0sJCQlCSVQoMCkKKwor I2RlZmluZSBEU0lfVklEX1BLVF9DRkcJCQkweDIwCisjZGVmaW5lIE5VTExfUEtUX1NJWkUoYikJ CSgoKGIpICYgMHgzZikgPDwgMjEpCisjZGVmaW5lIE5VTV9DSFVOS1MobikJCQkoKChuKSAmIDB4 M2YpIDw8IDExKQorI2RlZmluZSBWSURfUEtUX1NJWkUocCkJCQkoKChwKSAmIDB4N2ZmKSA8PCAw KQorI2RlZmluZSBWSURfUEtUX01BWF9TSVpFCQkweDdmZgorCisjZGVmaW5lIERTSV9DTURfTU9E RV9DRkcJCTB4MjQKKyNkZWZpbmUgRU5fVEVBUl9GWAkJCUJJVCgxNCkKKyNkZWZpbmUgRU5fQUNL X1JRU1QJCQlCSVQoMTMpCisjZGVmaW5lIERDU19MV19UWF9MUAkJCUJJVCgxMikKKyNkZWZpbmUg R0VOX0xXX1RYX0xQCQkJQklUKDExKQorI2RlZmluZSBNQVhfUkRfUEtUX1NJWkVfTFAJCUJJVCgx MCkKKyNkZWZpbmUgRENTX1NXXzJQX1RYX0xQCQkJQklUKDkpCisjZGVmaW5lIERDU19TV18xUF9U WF9MUAkJCUJJVCg4KQorI2RlZmluZSBEQ1NfU1dfMFBfVFhfTFAJCQlCSVQoNykKKyNkZWZpbmUg R0VOX1NSXzJQX1RYX0xQCQkJQklUKDYpCisjZGVmaW5lIEdFTl9TUl8xUF9UWF9MUAkJCUJJVCg1 KQorI2RlZmluZSBHRU5fU1JfMFBfVFhfTFAJCQlCSVQoNCkKKyNkZWZpbmUgR0VOX1NXXzJQX1RY X0xQCQkJQklUKDMpCisjZGVmaW5lIEdFTl9TV18xUF9UWF9MUAkJCUJJVCgyKQorI2RlZmluZSBH RU5fU1dfMFBfVFhfTFAJCQlCSVQoMSkKKyNkZWZpbmUgRU5BQkxFX0NNRF9NT0RFCQkJQklUKDAp CisjZGVmaW5lIERJU0FCTEVfQ01EX01PREUJCTAKKyNkZWZpbmUgRU5BQkxFX0NNRF9NT0RFX01B U0sJCUJJVCgwKQorI2RlZmluZSBDTURfTU9ERV9BTExfTFAJCQkoRENTX0xXX1RYX0xQIHwgXAor CQkJCQkgR0VOX0xXX1RYX0xQIHwgXAorCQkJCQkgTUFYX1JEX1BLVF9TSVpFX0xQIHwgXAorCQkJ CQkgRENTX1NXXzJQX1RYX0xQIHwgXAorCQkJCQkgRENTX1NXXzFQX1RYX0xQIHwgXAorCQkJCQkg RENTX1NXXzBQX1RYX0xQIHwgXAorCQkJCQkgR0VOX1NSXzJQX1RYX0xQIHwgXAorCQkJCQkgR0VO X1NSXzFQX1RYX0xQIHwgXAorCQkJCQkgR0VOX1NSXzBQX1RYX0xQIHwgXAorCQkJCQkgR0VOX1NX XzJQX1RYX0xQIHwgXAorCQkJCQkgR0VOX1NXXzFQX1RYX0xQIHwgXAorCQkJCQkgR0VOX1NXXzBQ X1RYX0xQKQorCisjZGVmaW5lIERTSV9UTVJfTElORV9DRkcJCTB4MjgKKyNkZWZpbmUgSExJTkVf VElNRShsYmNjKQkJKCgobGJjYykgJiAweDNmZmYpIDw8IDE4KQorI2RlZmluZSBIQlBfVElNRShs YmNjKQkJCSgoKGxiY2MpICYgMHgxZmYpIDw8IDkpCisjZGVmaW5lIEhTQV9USU1FKGxiY2MpCQkJ KCgobGJjYykgJiAweDFmZikgPDwgMCkKKworI2RlZmluZSBEU0lfVlRJTUlOR19DRkcJCQkweDJj CisjZGVmaW5lIFZfQUNUSVZFX0xJTkVTKGxpbmUpCQkoKChsaW5lKSAmIDB4N2ZmKSA8PCAxNikK KyNkZWZpbmUgVkZQX0xJTkVTKGxpbmUpCQkJKCgobGluZSkgJiAweDNmKSA8PCAxMCkKKyNkZWZp bmUgVkJQX0xJTkVTKGxpbmUpCQkJKCgobGluZSkgJiAweDNmKSA8PCA0KQorI2RlZmluZSBWU0Ff TElORVMobGluZSkJCQkoKChsaW5lKSAmIDB4ZikgPDwgMCkKKworI2RlZmluZSBEU0lfUEhZX1RN Ul9DRkcJCQkweDMwCisjZGVmaW5lIFBIWV9IUzJMUF9USU1FKGxiY2MpCQkoKChsYmNjKSAmIDB4 ZmYpIDw8IDIwKQorI2RlZmluZSBQSFlfTFAySFNfVElNRShsYmNjKQkJKCgobGJjYykgJiAweGZm KSA8PCAxMikKKyNkZWZpbmUgQlRBX1RJTUUobGJjYykJCQkoKChsYmNjKSAmIDB4ZmZmKSA8PCAw KQorCisjZGVmaW5lIERTSV9HRU5fSERSCQkJMHgzNAorI2RlZmluZSBHRU5fSERBVEEoZGF0YSkJ CQkoKChkYXRhKSAmIDB4ZmZmZikgPDwgOCkKKyNkZWZpbmUgR0VOX0hEQVRBX01BU0sJCQkoMHhm ZmZmIDw8IDgpCisjZGVmaW5lIEdFTl9IVFlQRSh0eXBlKQkJCSgoKHR5cGUpICYgMHhmZikgPDwg MCkKKyNkZWZpbmUgR0VOX0hUWVBFX01BU0sJCQkweGZmCisKKyNkZWZpbmUgRFNJX0dFTl9QTERf REFUQQkJMHgzOAorCisjZGVmaW5lIERTSV9DTURfUEtUX1NUQVRVUwkJMHgzYworI2RlZmluZSBH RU5fQ01EX0VNUFRZCQkJQklUKDApCisjZGVmaW5lIEdFTl9DTURfRlVMTAkJCUJJVCgxKQorI2Rl ZmluZSBHRU5fUExEX1dfRU1QVFkJCQlCSVQoMikKKyNkZWZpbmUgR0VOX1BMRF9XX0ZVTEwJCQlC SVQoMykKKyNkZWZpbmUgR0VOX1BMRF9SX0VNUFRZCQkJQklUKDQpCisjZGVmaW5lIEdFTl9SRF9D TURfQlVTWQkJCUJJVCg2KQorCisjZGVmaW5lIERTSV9UT19DTlRfQ0ZHCQkJMHg0MAorI2RlZmlu ZSBEU0lfRVJST1JfU1QwCQkJMHg0NAorI2RlZmluZSBEU0lfRVJST1JfU1QxCQkJMHg0OAorI2Rl ZmluZSBEU0lfRVJST1JfTVNLMAkJCTB4NGMKKyNkZWZpbmUgRFNJX0VSUk9SX01TSzEJCQkweDUw CisKKyNkZWZpbmUgRFNJX1BIWV9SU1RaCQkJMHg1NAorI2RlZmluZSBQSFlfRElTQUJMRUNMSwkJ CTAKKyNkZWZpbmUgUEhZX0VOQUJMRUNMSwkJCUJJVCgyKQorI2RlZmluZSBQSFlfUlNUWgkJCTAK KyNkZWZpbmUgUEhZX1VOUlNUWgkJCUJJVCgxKQorI2RlZmluZSBQSFlfU0hVVERPV05aCQkJMAor I2RlZmluZSBQSFlfVU5TSFVURE9XTloJCQlCSVQoMCkKKworI2RlZmluZSBEU0lfUEhZX0lGX0NG RwkJCTB4NTgKKyNkZWZpbmUgTl9MQU5FUyhuKQkJCSgoKChuKSAtIDEpICYgMHgzKSA8PCAwKQor I2RlZmluZSBQSFlfU1RPUF9XQUlUX1RJTUUoY3ljbGUpCSgoKGN5Y2xlKSAmIDB4M2ZmKSA8PCAy KQorCisjZGVmaW5lIERTSV9QSFlfSUZfQ1RSTAkJCTB4NWMKKyNkZWZpbmUgUEhZX0lGX0NUUkxf UkVTRVQJCTB4MAorI2RlZmluZSBUWF9SRVFfQ0xLX0hTCQkJQklUKDApCisKKyNkZWZpbmUgRFNJ X1BIWV9TVEFUVVMJCQkweDYwCisjZGVmaW5lIExPQ0sJCQkJQklUKDApCisjZGVmaW5lIFNUT1Bf U1RBVEVfQ0xLX0xBTkUJCUJJVCgyKQorCisjZGVmaW5lIERTSV9QSFlfVFNUX0NUUkwwCQkweDY0 CisjZGVmaW5lIFBIWV9URVNUQ0xLCQkJQklUKDEpCisjZGVmaW5lIFBIWV9VTlRFU1RDTEsJCQkw CisjZGVmaW5lIFBIWV9URVNUQ0xSCQkJQklUKDApCisjZGVmaW5lIFBIWV9VTlRFU1RDTFIJCQkw CisKKyNkZWZpbmUgRFNJX1BIWV9UU1RfQ1RSTDEJCTB4NjgKKyNkZWZpbmUgUEhZX1RFU1RFTgkJ CUJJVCgxNikKKyNkZWZpbmUgUEhZX1VOVEVTVEVOCQkJMAorI2RlZmluZSBQSFlfVEVTVERPVVQo bikJCQkoKChuKSAmIDB4ZmYpIDw8IDgpCisjZGVmaW5lIFBIWV9URVNURElOKG4pCQkJKCgobikg JiAweGZmKSA8PCAwKQorCisjZGVmaW5lIFBIWV9TVEFUVVNfVElNRU9VVAkJMTAKKyNkZWZpbmUg Q01EX1BLVF9TVEFUVVNfVElNRU9VVAkJMjAKKworc3RydWN0IGR3X21pcGlfZHNpIHsKKwlzdHJ1 Y3QgbWlwaV9kc2lfaG9zdCBkc2lfaG9zdDsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0 b3I7CisJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOworCXN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2U7CisJc3RydWN0IGRybV9wYW5lbCAqcGFuZWw7CisJc3RydWN0IGRldmljZSAqZGV2Owor CisJdm9pZCBfX2lvbWVtICpiYXNlOworCisJc3RydWN0IGNsayAqcGxscmVmX2NsazsKKwlzdHJ1 Y3QgY2xrICpjZmdfY2xrOworCisJdW5zaWduZWQgaW50IGxhbmVfbWJwczsgLyogcGVyIGxhbmUg Ki8KKwl1MzIgY2hhbm5lbDsKKwl1MzIgbGFuZXM7CisJdTMyIGZvcm1hdDsKKwlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZTsKKworCWNvbnN0IHN0cnVjdCBkd19taXBpX2RzaV9wbGF0X2Rh dGEgKnBkYXRhOworCisJYm9vbCBlbmFibGVkOworfTsKKworZW51bSB7CisJU1RBVFVTX1RPX0NM RUFSLAorCVNUQVRVU19UT19TRVQsCit9OworCitlbnVtIGR3X21pcGlfZHNpX21vZGUgeworCURX X01JUElfRFNJX0NNRF9NT0RFLAorCURXX01JUElfRFNJX1ZJRF9NT0RFLAorfTsKKworc3RydWN0 IGRwaHlfcGxsX3Rlc3RkaW5fbWFwIHsKKwl1bnNpZ25lZCBpbnQgbWF4X21icHM7CisJdTggdGVz dGRpbjsKK307CisKKy8qIFRoZSB0YWJsZSBpcyBiYXNlZCBvbiAyN01IeiBEUEhZIHBsbCByZWZl cmVuY2UgY2xvY2suICovCitzdGF0aWMgY29uc3Qgc3RydWN0IGRwaHlfcGxsX3Rlc3RkaW5fbWFw IGRwdGRpbl9tYXBbXSA9IHsKKwl7MTYwLCAweDA0fSwgezE4MCwgMHgyNH0sIHsyMDAsIDB4NDR9 LCB7MjEwLCAweDA2fSwKKwl7MjQwLCAweDI2fSwgezI1MCwgMHg0Nn0sIHsyNzAsIDB4MDh9LCB7 MzAwLCAweDI4fSwKKwl7MzMwLCAweDQ4fSwgezM2MCwgMHgyYX0sIHs0MDAsIDB4NGF9LCB7NDUw LCAweDBjfSwKKwl7NTAwLCAweDJjfSwgezU1MCwgMHgwZX0sIHs2MDAsIDB4MmV9LCB7NjUwLCAw eDEwfSwKKwl7NzAwLCAweDMwfSwgezc1MCwgMHgxMn0sIHs4MDAsIDB4MzJ9LCB7ODUwLCAweDE0 fSwKKwl7OTAwLCAweDM0fSwgezk1MCwgMHg1NH0sIHsxMDAwLCAweDc0fQorfTsKKworc3RhdGlj IGlubGluZSBzdHJ1Y3QgZHdfbWlwaV9kc2kgKmhvc3RfdG9fZHNpKHN0cnVjdCBtaXBpX2RzaV9o b3N0ICpob3N0KQoreworCXJldHVybiBjb250YWluZXJfb2YoaG9zdCwgc3RydWN0IGR3X21pcGlf ZHNpLCBkc2lfaG9zdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGR3X21pcGlfZHNpICpj b25fdG9fZHNpKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb24pCit7CisJcmV0dXJuIGNvbnRhaW5l cl9vZihjb24sIHN0cnVjdCBkd19taXBpX2RzaSwgY29ubmVjdG9yKTsKK30KKworaW50IGR3X21p cGlfZHNpX2dldF9lbmNvZGVyX3BpeGVsX2Zvcm1hdChzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29k ZXIpCit7CisJc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBlbmNvZGVyLT5icmlkZ2UtPmRyaXZl cl9wcml2YXRlOworCisJcmV0dXJuIGRzaS0+Zm9ybWF0OworfQorRVhQT1JUX1NZTUJPTF9HUEwo ZHdfbWlwaV9kc2lfZ2V0X2VuY29kZXJfcGl4ZWxfZm9ybWF0KTsKKworc3RhdGljIGludCBtYXhf bWJwc190b190ZXN0ZGluKHVuc2lnbmVkIGludCBtYXhfbWJwcykKK3sKKwlpbnQgaTsKKworCWZv ciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRwdGRpbl9tYXApOyBpKyspCisJCWlmIChkcHRkaW5f bWFwW2ldLm1heF9tYnBzID09IG1heF9tYnBzKQorCQkJcmV0dXJuIGRwdGRpbl9tYXBbaV0udGVz dGRpbjsKKworCXJldHVybiAtRUlOVkFMOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZHNpX3dy aXRlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCB1MzIgcmVnLCB1MzIgdmFsKQoreworCXdyaXRl bCh2YWwsIGRzaS0+YmFzZSArIHJlZyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGRzaV9yZWFk KHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLCB1MzIgcmVnKQoreworCXJldHVybiByZWFkbChkc2kt PmJhc2UgKyByZWcpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZHNpX21vZGlmeShzdHJ1Y3Qg ZHdfbWlwaV9kc2kgKmRzaSwgdTMyIHJlZywKKwkJCSAgICAgIHUzMiBtYXNrLCB1MzIgdmFsKQor eworCXUzMiB2ID0gcmVhZGwoZHNpLT5iYXNlICsgcmVnKTsKKwl2ICY9IH5tYXNrOworCXYgfD0g dmFsOworCXdyaXRlbCh2LCBkc2ktPmJhc2UgKyByZWcpOworfQorCitzdGF0aWMgaW50IGNoZWNr X3N0YXR1cyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwgdTMyIHJlZywgdTMyIHN0YXR1cywKKwkJ CXVuc2lnbmVkIGludCB0aW1lb3V0LCBib29sIHRvX3NldCkKK3sKKwl1bnNpZ25lZCBsb25nIGV4 cGlyZTsKKwlib29sIG91dDsKKwl1MzIgdmFsOworCisJZXhwaXJlID0gamlmZmllcyArIG1zZWNz X3RvX2ppZmZpZXModGltZW91dCk7CisJZm9yICg7OykgeworCQl2YWwgPSBkc2lfcmVhZChkc2ks IHJlZyk7CisJCW91dCA9IHRvX3NldCA/ICgodmFsICYgc3RhdHVzKSA9PSBzdGF0dXMpIDogISh2 YWwgJiBzdGF0dXMpOworCQlpZiAob3V0KQorCQkJYnJlYWs7CisKKwkJaWYgKHRpbWVfYWZ0ZXIo amlmZmllcywgZXhwaXJlKSkKKwkJCXJldHVybiAtRVRJTUVET1VUOworCisJCWNwdV9yZWxheCgp OworCX0KKworCXJldHVybiAwOworfQorCisvKgorICogVGhlIGNvbnRyb2xsZXIgc2hvdWxkIGdl bmVyYXRlIDIgZnJhbWVzIGJlZm9yZQorICogcHJlcGFyaW5nIHRoZSBwZXJpcGhlcmFsLgorICov CitzdGF0aWMgdm9pZCBkd19taXBpX2RzaV93YWl0X2Zvcl90d29fZnJhbWVzKHN0cnVjdCBkd19t aXBpX2RzaSAqZHNpKQoreworCXVuc2lnbmVkIGxvbmcgZXhwaXJlOworCWludCByZWZyZXNoLCB0 d29fZnJhbWVzOworCisJcmVmcmVzaCA9IGRybV9tb2RlX3ZyZWZyZXNoKGRzaS0+bW9kZSk7CisJ dHdvX2ZyYW1lcyA9IERJVl9ST1VORF9VUChNU0VDX1BFUl9TRUMsIHJlZnJlc2gpICogMjsKKwor CWV4cGlyZSA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKHR3b19mcmFtZXMpOworCXdoaWxl ICh0aW1lX2JlZm9yZShqaWZmaWVzLCBleHBpcmUpKQorCQljcHVfcmVsYXgoKTsKK30KKworc3Rh dGljIGludCBkd19taXBpX2RzaV9jb25maWdfdGVzdGRpbihzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRz aSkKK3sKKwlpbnQgcmV0LCB0ZXN0ZGluOworCisJdGVzdGRpbiA9IG1heF9tYnBzX3RvX3Rlc3Rk aW4oZHNpLT5sYW5lX21icHMpOworCWlmICh0ZXN0ZGluIDwgMCkgeworCQlkZXZfZXJyKGRzaS0+ ZGV2LCAiZmFpbGVkIHRvIGdldCB0ZXN0ZGluIGZvciAlZG1icHMgIgorCQkJImxhbmUgY2xvY2tc biIsIGRzaS0+bGFuZV9tYnBzKTsKKwkJcmV0dXJuIHRlc3RkaW47CisJfQorCisJZHNpX3dyaXRl KGRzaSwgRFNJX1BIWV9JRl9DVFJMLCBQSFlfSUZfQ1RSTF9SRVNFVCk7CisJZHNpX3dyaXRlKGRz aSwgRFNJX1BXUl9VUCwgUE9XRVJVUCk7CisKKwlkc2lfd3JpdGUoZHNpLCBEU0lfUEhZX1RTVF9D VFJMMCwgUEhZX1VOVEVTVENMSyB8IFBIWV9VTlRFU1RDTFIpOworCWRzaV93cml0ZShkc2ksIERT SV9QSFlfVFNUX0NUUkwxLCBQSFlfVEVTVEVOIHwgUEhZX1RFU1RET1VUKDApIHwKKwkJCQkJICBQ SFlfVEVTVERJTigweDQ0KSk7CisJZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9UU1RfQ1RSTDAsIFBI WV9URVNUQ0xLIHwgUEhZX1VOVEVTVENMUik7CisJZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9UU1Rf Q1RSTDAsIFBIWV9VTlRFU1RDTEsgfCBQSFlfVU5URVNUQ0xSKTsKKwlkc2lfd3JpdGUoZHNpLCBE U0lfUEhZX1RTVF9DVFJMMSwgUEhZX1VOVEVTVEVOIHwgUEhZX1RFU1RET1VUKDApIHwKKwkJCQkJ ICBQSFlfVEVTVERJTih0ZXN0ZGluKSk7CisJZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9UU1RfQ1RS TDAsIFBIWV9URVNUQ0xLIHwgUEhZX1VOVEVTVENMUik7CisJZHNpX3dyaXRlKGRzaSwgRFNJX1BI WV9UU1RfQ1RSTDAsIFBIWV9VTlRFU1RDTEsgfCBQSFlfVU5URVNUQ0xSKTsKKwlkc2lfd3JpdGUo ZHNpLCBEU0lfUEhZX1JTVFosICAgICAgUEhZX0VOQUJMRUNMSyB8IFBIWV9VTlJTVFogfAorCQkJ CQkgIFBIWV9VTlNIVVRET1dOWik7CisJcmV0ID0gY2hlY2tfc3RhdHVzKGRzaSwgRFNJX1BIWV9T VEFUVVMsIExPQ0ssCisJCQkgICBQSFlfU1RBVFVTX1RJTUVPVVQsIFNUQVRVU19UT19TRVQpOwor CWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZHNpLT5kZXYsICJmYWlsZWQgdG8gd2FpdCBmb3Ig cGh5IGxvY2sgc3RhdGVcbiIpOworCQlyZXR1cm4gcmV0OworCX0KKwlyZXQgPSBjaGVja19zdGF0 dXMoZHNpLCBEU0lfUEhZX1NUQVRVUywgU1RPUF9TVEFURV9DTEtfTEFORSwKKwkJCSAgIFBIWV9T VEFUVVNfVElNRU9VVCwgU1RBVFVTX1RPX1NFVCk7CisJaWYgKHJldCA8IDApIHsKKwkJZGV2X2Vy cihkc2ktPmRldiwgImZhaWxlZCB0byB3YWl0IGZvciBwaHkgY2xrIGxhbmUgc3RvcCBzdGF0ZVxu Iik7CisJCXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBk d19taXBpX2RzaV9nZXRfbGFuZV9icHMoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksCisJCQkJICAg IHVuc2lnbmVkIGludCAqZmluYWxfbWJwcykKK3sKKwlpbnQgYnBwLCBpOworCXVuc2lnbmVkIGlu dCB0YXJnZXRfbWJwcywgbXBjbGs7CisJdW5zaWduZWQgbG9uZyBwbGxyZWY7CisKKwlicHAgPSBt aXBpX2RzaV9waXhlbF9mb3JtYXRfdG9fYnBwKGRzaS0+Zm9ybWF0KTsKKwlpZiAoYnBwIDwgMCkg eworCQlkZXZfZXJyKGRzaS0+ZGV2LCAiZmFpbGVkIHRvIGdldCBicHAgZm9yIHBpeGVsIGZvcm1h dCAlZFxuIiwKKwkJCWRzaS0+Zm9ybWF0KTsKKwkJcmV0dXJuIGJwcDsKKwl9CisKKwlwbGxyZWYg PSBjbGtfZ2V0X3JhdGUoZHNpLT5wbGxyZWZfY2xrKTsKKwlpZiAocGxscmVmICE9IDI3MDAwMDAw KQorCQlkZXZfd2Fybihkc2ktPmRldiwgImV4cGVjdCAyN01IeiBEUEhZIHBsbCByZWZlcmVuY2Ug Y2xvY2tcbiIpOworCisJbXBjbGsgPSBESVZfUk9VTkRfVVAoZHNpLT5tb2RlLT5jbG9jaywgTVNF Q19QRVJfU0VDKTsKKwlpZiAobXBjbGspIHsKKwkJLyogdGFrZSAxLzAuNyBibGFua2luZyBvdmVy aGVhZCBpbnRvIGNvbnNpZGVyYXRpb24gKi8KKwkJdGFyZ2V0X21icHMgPSAobXBjbGsgKiAoYnBw IC8gZHNpLT5sYW5lcykgKiAxMCkgLyA3OworCX0gZWxzZSB7CisJCWRldl9kYmcoZHNpLT5kZXYs ICJ1c2UgZGVmYXVsdCAxR2JwcyBEUEhZIHBsbCBjbG9ja1xuIik7CisJCXRhcmdldF9tYnBzID0g MTAwMDsKKwl9CisKKwlkZXZfZGJnKGRzaS0+ZGV2LCAidGFyZ2V0IERQSFkgcGxsIGNsb2NrIGZy ZXF1ZW5jeSBpcyAldU1icHNcbiIsCisJCXRhcmdldF9tYnBzKTsKKworCWZvciAoaSA9IDA7IGkg PCBBUlJBWV9TSVpFKGRwdGRpbl9tYXApOyBpKyspIHsKKwkJaWYgKHRhcmdldF9tYnBzIDwgZHB0 ZGluX21hcFtpXS5tYXhfbWJwcykgeworCQkJKmZpbmFsX21icHMgPSBkcHRkaW5fbWFwW2ldLm1h eF9tYnBzOworCQkJZGV2X2RiZyhkc2ktPmRldiwgInJlYWwgRFBIWSBwbGwgY2xvY2sgZnJlcXVl bmN5ICIKKwkJCQkgImlzICV1TWJwc1xuIiwgKmZpbmFsX21icHMpOworCQkJcmV0dXJuIDA7CisJ CX0KKwl9CisKKwlkZXZfZXJyKGRzaS0+ZGV2LCAiRFBIWSBjbG9jayBmcmVxdWVuY3kgJXVNYnBz IGlzIG91dCBvZiByYW5nZVxuIiwKKwkJCQkJCXRhcmdldF9tYnBzKTsKKworCXJldHVybiAtRUlO VkFMOworfQorCitzdGF0aWMgaW50IGR3X21pcGlfZHNpX2hvc3RfYXR0YWNoKHN0cnVjdCBtaXBp X2RzaV9ob3N0ICpob3N0LAorCQkJCSAgIHN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRldmljZSkK K3sKKwlzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSA9IGhvc3RfdG9fZHNpKGhvc3QpOworCisJaWYg KGRldmljZS0+bGFuZXMgPiBkc2ktPnBkYXRhLT5tYXhfZGF0YV9sYW5lcykgeworCQlkZXZfZXJy KGRzaS0+ZGV2LCAidGhlIG51bWJlciBvZiBkYXRhIGxhbmVzKCVkKSBpcyB0b28gbWFueVxuIiwK KwkJCQlkZXZpY2UtPmxhbmVzKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJaWYgKCEoZGV2 aWNlLT5tb2RlX2ZsYWdzICYgTUlQSV9EU0lfTU9ERV9WSURFT19CVVJTVCkgfHwKKwkgICAgIShk ZXZpY2UtPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVPX1NZTkNfUFVMU0UpKSB7CisJ CWRldl9lcnIoZHNpLT5kZXYsICJkZXZpY2UgbW9kZSBpcyB1bnN1cHBvcnRlZFxuIik7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKworCWlmIChkZXZpY2UtPmZvcm1hdCAhPSBNSVBJX0RTSV9GTVRf UkdCODg4ICYmCisJICAgIGRldmljZS0+Zm9ybWF0ICE9IE1JUElfRFNJX0ZNVF9SR0I1NjUpIHsK KwkJZGV2X2Vycihkc2ktPmRldiwgImRldmljZSBwaXhlbCBmb3JtYXQgaXMgdW5zdXBwb3J0ZWRc biIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlkc2ktPmxhbmVzID0gZGV2aWNlLT5sYW5l czsKKwlkc2ktPmNoYW5uZWwgPSBkZXZpY2UtPmNoYW5uZWw7CisJZHNpLT5mb3JtYXQgPSBkZXZp Y2UtPmZvcm1hdDsKKwlkc2ktPnBhbmVsID0gb2ZfZHJtX2ZpbmRfcGFuZWwoZGV2aWNlLT5kZXYu b2Zfbm9kZSk7CisJZHJtX3BhbmVsX2F0dGFjaChkc2ktPnBhbmVsLCAmZHNpLT5jb25uZWN0b3Ip OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZHdfbWlwaV9kc2lfaG9zdF9kZXRhY2go c3RydWN0IG1pcGlfZHNpX2hvc3QgKmhvc3QsCisJCQkJICAgc3RydWN0IG1pcGlfZHNpX2Rldmlj ZSAqZGV2aWNlKQoreworCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0gaG9zdF90b19kc2koaG9z dCk7CisKKwlkcm1fcGFuZWxfZGV0YWNoKGRzaS0+cGFuZWwpOworCWRzaS0+cGFuZWwgPSBOVUxM OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZHdfbWlwaV9kc2lfZ2VuX3BrdF9oZHJf d3JpdGUoc3RydWN0IGR3X21pcGlfZHNpICpkc2ksIHUzMiB2YWwpCit7CisJaW50IHJldDsKKwor CXJldCA9IGNoZWNrX3N0YXR1cyhkc2ksIERTSV9DTURfUEtUX1NUQVRVUywgR0VOX0NNRF9GVUxM LAorCQkJICAgQ01EX1BLVF9TVEFUVVNfVElNRU9VVCwgU1RBVFVTX1RPX0NMRUFSKTsKKwlpZiAo cmV0IDwgMCkgeworCQlkZXZfZXJyKGRzaS0+ZGV2LCAiZmFpbGVkIHRvIGdldCBhdmFsaWFibGUg Y29tbWFuZCBGSUZPXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlkc2lfd3JpdGUoZHNpLCBE U0lfR0VOX0hEUiwgdmFsKTsKKworCXJldCA9IGNoZWNrX3N0YXR1cyhkc2ksIERTSV9DTURfUEtU X1NUQVRVUywKKwkJCSAgIEdFTl9DTURfRU1QVFkgfCBHRU5fUExEX1dfRU1QVFksCisJCQkgICBD TURfUEtUX1NUQVRVU19USU1FT1VULCBTVEFUVVNfVE9fU0VUKTsKKwlpZiAocmV0IDwgMCkgewor CQlkZXZfZXJyKGRzaS0+ZGV2LCAiZmFpbGVkIHRvIHdyaXRlIGNvbW1hbmQgRklGT1xuIik7CisJ CXJldHVybiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZHdfbWlwaV9k c2lfZGNzX3Nob3J0X3dyaXRlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLAorCQkJCSAgICAgICBj b25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpCit7CisJY29uc3QgdTE2ICp0eF9idWYgPSBt c2ctPnR4X2J1ZjsKKwl1MzIgdmFsID0gR0VOX0hEQVRBKCp0eF9idWYpIHwgR0VOX0hUWVBFKG1z Zy0+dHlwZSk7CisKKwlpZiAobXNnLT50eF9sZW4gPiAyKSB7CisJCWRldl9lcnIoZHNpLT5kZXYs ICJ0b28gbG9uZyB0eCBidWYgbGVuZ3RoICVkIGZvciBzaG9ydCB3cml0ZVxuIiwKKwkJCW1zZy0+ dHhfbGVuKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIGR3X21pcGlfZHNpX2dl bl9wa3RfaGRyX3dyaXRlKGRzaSwgdmFsKTsKK30KKworc3RhdGljIGludCBkd19taXBpX2RzaV9k Y3NfbG9uZ193cml0ZShzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSwKKwkJCQkgICAgICBjb25zdCBz dHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpCit7CisJY29uc3QgdTMyICp0eF9idWYgPSBtc2ctPnR4 X2J1ZjsKKwlpbnQgbGVuID0gbXNnLT50eF9sZW4sIHBsZF9kYXRhX2J5dGVzID0gc2l6ZW9mKCp0 eF9idWYpLCByZXQ7CisJdTMyIHZhbCA9IEdFTl9IREFUQShtc2ctPnR4X2xlbikgfCBHRU5fSFRZ UEUobXNnLT50eXBlKTsKKwl1MzIgcmVtYWluZGVyID0gMDsKKworCWlmIChtc2ctPnR4X2xlbiA8 IDMpIHsKKwkJZGV2X2Vycihkc2ktPmRldiwgIndyb25nIHR4IGJ1ZiBsZW5ndGggJWQgZm9yIGxv bmcgd3JpdGVcbiIsCisJCQltc2ctPnR4X2xlbik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CXdoaWxlIChESVZfUk9VTkRfVVAobGVuLCBwbGRfZGF0YV9ieXRlcykpIHsKKwkJaWYgKGxlbiA8 IHBsZF9kYXRhX2J5dGVzKSB7CisJCQltZW1jcHkoJnJlbWFpbmRlciwgdHhfYnVmLCBsZW4pOwor CQkJZHNpX3dyaXRlKGRzaSwgRFNJX0dFTl9QTERfREFUQSwgcmVtYWluZGVyKTsKKwkJCWxlbiA9 IDA7CisJCX0gZWxzZSB7CisJCQlkc2lfd3JpdGUoZHNpLCBEU0lfR0VOX1BMRF9EQVRBLCAqdHhf YnVmKTsKKwkJCXR4X2J1ZisrOworCQkJbGVuIC09IHBsZF9kYXRhX2J5dGVzOworCQl9CisJCXJl dCA9IGNoZWNrX3N0YXR1cyhkc2ksIERTSV9DTURfUEtUX1NUQVRVUywgR0VOX1BMRF9XX0ZVTEws CisJCQkJICAgQ01EX1BLVF9TVEFUVVNfVElNRU9VVCwgU1RBVFVTX1RPX0NMRUFSKTsKKwkJaWYg KHJldCA8IDApIHsKKwkJCWRldl9lcnIoZHNpLT5kZXYsICJmYWlsZWQgdG8gZ2V0IGF2YWxpYWJs ZSAiCisJCQkJCSJ3cml0ZSBwYXlsb2FkIEZJRk9cbiIpOworCQkJcmV0dXJuIHJldDsKKwkJfQor CX0KKworCXJldHVybiBkd19taXBpX2RzaV9nZW5fcGt0X2hkcl93cml0ZShkc2ksIHZhbCk7Cit9 CisKK3N0YXRpYyBzc2l6ZV90IGR3X21pcGlfZHNpX2hvc3RfdHJhbnNmZXIoc3RydWN0IG1pcGlf ZHNpX2hvc3QgKmhvc3QsCisJCQkJCSBjb25zdCBzdHJ1Y3QgbWlwaV9kc2lfbXNnICptc2cpCit7 CisJc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBob3N0X3RvX2RzaShob3N0KTsKKwlpbnQgcmV0 OworCisJc3dpdGNoIChtc2ctPnR5cGUpIHsKKwljYXNlIE1JUElfRFNJX0RDU19TSE9SVF9XUklU RToKKwljYXNlIE1JUElfRFNJX0RDU19TSE9SVF9XUklURV9QQVJBTToKKwljYXNlIE1JUElfRFNJ X1NFVF9NQVhJTVVNX1JFVFVSTl9QQUNLRVRfU0laRToKKwkJcmV0ID0gZHdfbWlwaV9kc2lfZGNz X3Nob3J0X3dyaXRlKGRzaSwgbXNnKTsKKwkJYnJlYWs7CisJY2FzZSBNSVBJX0RTSV9EQ1NfTE9O R19XUklURToKKwkJcmV0ID0gZHdfbWlwaV9kc2lfZGNzX2xvbmdfd3JpdGUoZHNpLCBtc2cpOwor CQlicmVhazsKKwlkZWZhdWx0OgorCQlkZXZfZXJyKGRzaS0+ZGV2LCAidW5zdXBwb3J0ZWQgbWVz c2FnZSB0eXBlXG4iKTsKKwkJcmV0ID0gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3BzIGR3X21pcGlfZHNpX2hvc3Rf b3BzID0geworCS5hdHRhY2ggPSBkd19taXBpX2RzaV9ob3N0X2F0dGFjaCwKKwkuZGV0YWNoID0g ZHdfbWlwaV9kc2lfaG9zdF9kZXRhY2gsCisJLnRyYW5zZmVyID0gZHdfbWlwaV9kc2lfaG9zdF90 cmFuc2ZlciwKK307CisKK3N0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCitkd19taXBp X2RzaV9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkK K3sKKwlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CisKK3N0YXRpYyB2b2lk IGR3X21pcGlfZHNpX2RybV9jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQoreworCWRybV9jb25uZWN0b3JfdW5yZWdpc3Rlcihjb25uZWN0b3IpOworCWRy bV9jb25uZWN0b3JfY2xlYW51cChjb25uZWN0b3IpOworfQorCitzdGF0aWMgc3RydWN0IGRybV9j b25uZWN0b3JfZnVuY3MgZHdfbWlwaV9kc2lfY29ubmVjdG9yX2Z1bmNzID0geworCS5kcG1zID0g ZHJtX2hlbHBlcl9jb25uZWN0b3JfZHBtcywKKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJv YmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKKwkuZGV0ZWN0ID0gZHdfbWlwaV9kc2lfZGV0ZWN0 LAorCS5kZXN0cm95ID0gZHdfbWlwaV9kc2lfZHJtX2Nvbm5lY3Rvcl9kZXN0cm95LAorfTsKKwor c3RhdGljIGludCBkd19taXBpX2RzaV9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBjb25fdG9f ZHNpKGNvbm5lY3Rvcik7CisKKwlyZXR1cm4gZHJtX3BhbmVsX2dldF9tb2Rlcyhkc2ktPnBhbmVs KTsKK30KKworc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzIGR3X21pcGlfZHNpX21vZGVfdmFs aWQoCisJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0gY29u X3RvX2RzaShjb25uZWN0b3IpOworCisJZW51bSBkcm1fbW9kZV9zdGF0dXMgbW9kZV9zdGF0dXMg PSBNT0RFX09LOworCisJaWYgKGRzaS0+cGRhdGEtPm1vZGVfdmFsaWQpCisJCW1vZGVfc3RhdHVz ID0gZHNpLT5wZGF0YS0+bW9kZV92YWxpZChjb25uZWN0b3IsIG1vZGUpOworCisJcmV0dXJuIG1v ZGVfc3RhdHVzOworfQorCitzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICpkd19taXBpX2RzaV9j b25uZWN0b3JfYmVzdF9lbmNvZGVyKAorCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKQoreworCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0gY29uX3RvX2RzaShjb25uZWN0b3Ip OworCisJcmV0dXJuIGRzaS0+ZW5jb2RlcjsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fY29ubmVj dG9yX2hlbHBlcl9mdW5jcyBkd19taXBpX2RzaV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzID0gewor CS5nZXRfbW9kZXMgPSBkd19taXBpX2RzaV9jb25uZWN0b3JfZ2V0X21vZGVzLAorCS5tb2RlX3Zh bGlkID0gZHdfbWlwaV9kc2lfbW9kZV92YWxpZCwKKwkuYmVzdF9lbmNvZGVyID0gZHdfbWlwaV9k c2lfY29ubmVjdG9yX2Jlc3RfZW5jb2RlciwKK307CisKK3N0YXRpYyB2b2lkIGR3X21pcGlfZHNp X3ZpZGVvX21vZGVfY29uZmlnKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQoreworCXUzMiB2YWw7 CisKKwl2YWwgPSBWSURfTU9ERV9UWVBFX0JVUlNUX1NZTkNfUFVMU0VTIHwgRU5BQkxFX0xPV19Q T1dFUjsKKworCWRzaV93cml0ZShkc2ksIERTSV9WSURfTU9ERV9DRkcsIHZhbCk7Cit9CisKK3N0 YXRpYyB2b2lkIGR3X21pcGlfZHNpX3NldF9tb2RlKHN0cnVjdCBkd19taXBpX2RzaSAqZHNpLAor CQkJCSBlbnVtIGR3X21pcGlfZHNpX21vZGUgbW9kZSkKK3sKKwlpZiAobW9kZSA9PSBEV19NSVBJ X0RTSV9DTURfTU9ERSkgeworCQlkc2lfd3JpdGUoZHNpLCBEU0lfUFdSX1VQLCBSRVNFVCk7CisJ CWRzaV9tb2RpZnkoZHNpLCBEU0lfQ01EX01PREVfQ0ZHLAorCQkJICAgRU5BQkxFX0NNRF9NT0RF X01BU0ssIEVOQUJMRV9DTURfTU9ERSk7CisJCWRzaV9tb2RpZnkoZHNpLCBEU0lfVklEX01PREVf Q0ZHLAorCQkJICAgRU5BQkxFX1ZJREVPX01PREVfTUFTSywgRElTQUJMRV9WSURFT19NT0RFKTsK KwkJZHNpX3dyaXRlKGRzaSwgRFNJX1BXUl9VUCwgUE9XRVJVUCk7CisJfSBlbHNlIHsKKwkJZHNp X3dyaXRlKGRzaSwgRFNJX1BXUl9VUCwgUkVTRVQpOworCQlkc2lfbW9kaWZ5KGRzaSwgRFNJX0NN RF9NT0RFX0NGRywKKwkJCSAgIEVOQUJMRV9DTURfTU9ERV9NQVNLLCBESVNBQkxFX0NNRF9NT0RF KTsKKworCQlkd19taXBpX2RzaV92aWRlb19tb2RlX2NvbmZpZyhkc2kpOworCisJCWRzaV9tb2Rp ZnkoZHNpLCBEU0lfVklEX01PREVfQ0ZHLAorCQkJICAgRU5BQkxFX1ZJREVPX01PREVfTUFTSywg RU5BQkxFX1ZJREVPX01PREUpOworCQlkc2lfd3JpdGUoZHNpLCBEU0lfUFdSX1VQLCBQT1dFUlVQ KTsKKwkJZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9JRl9DVFJMLCBUWF9SRVFfQ0xLX0hTKTsKKwl9 Cit9CisKK3N0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2Rpc2FibGUoc3RydWN0IGR3X21pcGlfZHNp ICpkc2kpCit7CisJZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9JRl9DVFJMLCBQSFlfSUZfQ1RSTF9S RVNFVCk7CisJZHNpX3dyaXRlKGRzaSwgRFNJX1BXUl9VUCwgUkVTRVQpOworCWRzaV93cml0ZShk c2ksIERTSV9QSFlfUlNUWiwgUEhZX1JTVFopOworfQorCitzdGF0aWMgdm9pZCBkd19taXBpX2Rz aV9icmlkZ2VfZW5hYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCit7CisJc3RydWN0IGR3 X21pcGlfZHNpICpkc2kgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOworCisJaWYgKGRzaS0+ZW5h YmxlZCkKKwkJcmV0dXJuOworCisJY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+Y2ZnX2Nsayk7CisJ ZHdfbWlwaV9kc2lfY29uZmlnX3Rlc3RkaW4oZHNpKTsKKwlkd19taXBpX2RzaV9zZXRfbW9kZShk c2ksIERXX01JUElfRFNJX1ZJRF9NT0RFKTsKKwlkd19taXBpX2RzaV93YWl0X2Zvcl90d29fZnJh bWVzKGRzaSk7CisJZHdfbWlwaV9kc2lfc2V0X21vZGUoZHNpLCBEV19NSVBJX0RTSV9DTURfTU9E RSk7CisJZHJtX3BhbmVsX3ByZXBhcmUoZHNpLT5wYW5lbCk7CisJZHdfbWlwaV9kc2lfc2V0X21v ZGUoZHNpLCBEV19NSVBJX0RTSV9WSURfTU9ERSk7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRz aS0+Y2ZnX2Nsayk7CisKKwlkcm1fcGFuZWxfZW5hYmxlKGRzaS0+cGFuZWwpOworCisJZHNpLT5l bmFibGVkID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfYnJpZGdlX2Rpc2Fi bGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKK3sKKwlzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRz aSA9IGJyaWRnZS0+ZHJpdmVyX3ByaXZhdGU7CisJdW5zaWduZWQgbG9uZyBleHBpcmU7CisKKwlp ZiAoIWRzaS0+ZW5hYmxlZCkKKwkJcmV0dXJuOworCisJZHJtX3BhbmVsX2Rpc2FibGUoZHNpLT5w YW5lbCk7CisKKwljbGtfcHJlcGFyZV9lbmFibGUoZHNpLT5jZmdfY2xrKTsKKwlkd19taXBpX2Rz aV9zZXRfbW9kZShkc2ksIERXX01JUElfRFNJX0NNRF9NT0RFKTsKKwlkcm1fcGFuZWxfdW5wcmVw YXJlKGRzaS0+cGFuZWwpOworCWR3X21pcGlfZHNpX3NldF9tb2RlKGRzaSwgRFdfTUlQSV9EU0lf VklEX01PREUpOworCisJLyoKKwkgKiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWtlIHN1cmUgdGhl IHBlcmlwaGVyYWwKKwkgKiB3aWxsIGJlIGRyaXZlbiBub3JtYWxseSB3aGVuIHRoZSBkaXNwbGF5 IGlzCisJICogZW5hYmxlZCBhZ2FpbiBsYXRlci4KKwkgKi8KKwlleHBpcmUgPSBqaWZmaWVzICsg bXNlY3NfdG9famlmZmllcygxMjApOworCXdoaWxlICh0aW1lX2JlZm9yZShqaWZmaWVzLCBleHBp cmUpKQorCQljcHVfcmVsYXgoKTsKKworCWR3X21pcGlfZHNpX3NldF9tb2RlKGRzaSwgRFdfTUlQ SV9EU0lfQ01EX01PREUpOworCWR3X21pcGlfZHNpX2Rpc2FibGUoZHNpKTsKKwljbGtfZGlzYWJs ZV91bnByZXBhcmUoZHNpLT5jZmdfY2xrKTsKKworCWRzaS0+ZW5hYmxlZCA9IGZhbHNlOworfQor CitzdGF0aWMgdm9pZCBkd19taXBpX2RzaV9icmlkZ2Vfbm9wZShzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlKQoreworCS8qIGRvIG5vdGhpbmcgKi8KK30KKworc3RhdGljIHZvaWQgZHdfbWlwaV9k c2lfaW5pdChzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKK3sKKwlkc2lfd3JpdGUoZHNpLCBEU0lf UFdSX1VQLCBSRVNFVCk7CisJZHNpX3dyaXRlKGRzaSwgRFNJX1BIWV9SU1RaLCBQSFlfRElTQUJM RUNMSyB8IFBIWV9SU1RaIHwgUEhZX1NIVVRET1dOWik7CisJZHNpX3dyaXRlKGRzaSwgRFNJX0NM S01HUl9DRkcsIFRPX0NMS19ESVZJRFNJT04oMSkgfCBUWF9FU0NfQ0xLX0RJVklEU0lPTig3KSk7 Cit9CisKK3N0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2RwaV9jb25maWcoc3RydWN0IGR3X21pcGlf ZHNpICpkc2ksCisJCQkJICAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCit7CisJdTMy IHZhbCA9IDA7CisKKwlpZiAoIShtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfUFZTWU5DKSkK KwkJdmFsIHw9IFZTWU5DX0FDVElWRV9MT1c7CisJaWYgKCEobW9kZS0+ZmxhZ3MgJiBEUk1fTU9E RV9GTEFHX1BIU1lOQykpCisJCXZhbCB8PSBIU1lOQ19BQ1RJVkVfTE9XOworCisJc3dpdGNoIChk c2ktPmZvcm1hdCkgeworCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjg4ODoKKwkJdmFsIHw9IERQSV9D T0xPUl9DT0RJTkdfMjRCSVQ7CisJCWJyZWFrOworCWNhc2UgTUlQSV9EU0lfRk1UX1JHQjY2NjoK KwkJdmFsIHw9IERQSV9DT0xPUl9DT0RJTkdfMThCSVRfMjsKKwkJdmFsIHw9IEVOMThfTE9PU0VM WTsKKwkJYnJlYWs7CisJY2FzZSBNSVBJX0RTSV9GTVRfUkdCNjY2X1BBQ0tFRDoKKwkJdmFsIHw9 IERQSV9DT0xPUl9DT0RJTkdfMThCSVRfMTsKKwkJYnJlYWs7CisJY2FzZSBNSVBJX0RTSV9GTVRf UkdCNTY1OgorCQl2YWwgfD0gRFBJX0NPTE9SX0NPRElOR18xNkJJVF8xOworCQlicmVhazsKKwl9 CisKKwl2YWwgfD0gRFBJX1ZJRChkc2ktPmNoYW5uZWwpOworCisJZHNpX3dyaXRlKGRzaSwgRFNJ X0RQSV9DRkcsIHZhbCk7Cit9CisKK3N0YXRpYyB2b2lkIGR3X21pcGlfZHNpX3BhY2tldF9oYW5k bGVyX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKK3sKKwlkc2lfd3JpdGUoZHNpLCBE U0lfUENLSERMX0NGRywgRU5fQ1JDX1JYIHwgRU5fRUNDX1JYIHwgRU5fQlRBKTsKK30KKworc3Rh dGljIHZvaWQgZHdfbWlwaV9kc2lfdmlkZW9fcGFja2V0X2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9k c2kgKmRzaSwKKwkJCQkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQoreworCWRz aV93cml0ZShkc2ksIERTSV9WSURfUEtUX0NGRywgVklEX1BLVF9TSVpFKG1vZGUtPmhkaXNwbGF5 KSk7Cit9CisKK3N0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2NvbW1hbmRfbW9kZV9jb25maWcoc3Ry dWN0IGR3X21pcGlfZHNpICpkc2kpCit7CisJZHNpX3dyaXRlKGRzaSwgRFNJX0NNRF9NT0RFX0NG RywgQ01EX01PREVfQUxMX0xQIHwgRU5BQkxFX0NNRF9NT0RFKTsKK30KKworLyogR2V0IGxhbmUg Ynl0ZSBjbG9jayBjeWNsZXMuICovCitzdGF0aWMgdTY0IGR3X21pcGlfZHNpX2dldF9oY29tcG9u ZW50X2xiY2Moc3RydWN0IGR3X21pcGlfZHNpICpkc2ksCisJCQkJCSAgIHU2NCBoY29tcG9uZW50 KQoreworCXU2NCBmcmFjLCBsYmNjOworCisJbGJjYyA9IGhjb21wb25lbnQgKiBkc2ktPmxhbmVf bWJwcyAqIFVTRUNfUEVSX1NFQyAvIDg7CisJZnJhYyA9IGRvX2RpdihsYmNjLCBkc2ktPm1vZGUt PmNsb2NrICogTVNFQ19QRVJfU0VDKTsKKwlpZiAoZnJhYykKKwkJbGJjYysrOworCisJcmV0dXJu IGxiY2M7Cit9CisKK3N0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2xpbmVfdGltZXJfY29uZmlnKHN0 cnVjdCBkd19taXBpX2RzaSAqZHNpKQoreworCXUzMiB2YWwgPSAwLCBodG90YWwsIGhzYSwgaGJw LCBsYmNjOworCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gZHNpLT5tb2RlOworCisJ aHRvdGFsID0gbW9kZS0+aHRvdGFsOworCWhzYSA9IG1vZGUtPmhzeW5jX2VuZCAtIG1vZGUtPmhz eW5jX3N0YXJ0OworCWhicCA9IG1vZGUtPmh0b3RhbCAtIG1vZGUtPmhzeW5jX2VuZDsKKworCWxi Y2MgPSBkd19taXBpX2RzaV9nZXRfaGNvbXBvbmVudF9sYmNjKGRzaSwgaHRvdGFsKTsKKwl2YWwg fD0gSExJTkVfVElNRShsYmNjKTsKKworCWxiY2MgPSBkd19taXBpX2RzaV9nZXRfaGNvbXBvbmVu dF9sYmNjKGRzaSwgaHNhKTsKKwl2YWwgfD0gSFNBX1RJTUUobGJjYyk7CisKKwlsYmNjID0gZHdf bWlwaV9kc2lfZ2V0X2hjb21wb25lbnRfbGJjYyhkc2ksIGhicCk7CisJdmFsIHw9IEhCUF9USU1F KGxiY2MpOworCisJZHNpX3dyaXRlKGRzaSwgRFNJX1RNUl9MSU5FX0NGRywgdmFsKTsKK30KKwor c3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfdmVydGljYWxfdGltaW5nX2NvbmZpZyhzdHJ1Y3QgZHdf bWlwaV9kc2kgKmRzaSkKK3sKKwl1MzIgdmFsLCB2YWN0aXZlLCB2c2EsIHZmcCwgdmJwOworCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gZHNpLT5tb2RlOworCisJdmFjdGl2ZSA9IG1v ZGUtPnZkaXNwbGF5OworCXZzYSA9IG1vZGUtPnZzeW5jX2VuZCAtIG1vZGUtPnZzeW5jX3N0YXJ0 OworCXZmcCA9IG1vZGUtPnZzeW5jX3N0YXJ0IC0gbW9kZS0+dmRpc3BsYXk7CisJdmJwID0gbW9k ZS0+dnRvdGFsIC0gbW9kZS0+dnN5bmNfZW5kOworCisJdmFsID0gVl9BQ1RJVkVfTElORVModmFj dGl2ZSkgfCBWU0FfTElORVModnNhKSB8CisJICAgICAgVkZQX0xJTkVTKHZmcCkgfCBWQlBfTElO RVModmJwKTsKKworCWRzaV93cml0ZShkc2ksIERTSV9WVElNSU5HX0NGRywgdmFsKTsKK30KKwor c3RhdGljIHZvaWQgZHdfbWlwaV9kc2lfZHBoeV90aW1pbmdfY29uZmlnKHN0cnVjdCBkd19taXBp X2RzaSAqZHNpKQoreworCXUzMiB2YWw7CisKKwl2YWwgPSBQSFlfSFMyTFBfVElNRSgweDQwKSB8 IFBIWV9MUDJIU19USU1FKDB4NDApIHwKKwkgICAgICBCVEFfVElNRSgweGQwMCk7CisKKwlkc2lf d3JpdGUoZHNpLCBEU0lfUEhZX1RNUl9DRkcsIHZhbCk7Cit9CisKK3N0YXRpYyB2b2lkIGR3X21p cGlfZHNpX2RwaHlfaW50ZXJmYWNlX2NvbmZpZyhzdHJ1Y3QgZHdfbWlwaV9kc2kgKmRzaSkKK3sK Kwlkc2lfd3JpdGUoZHNpLCBEU0lfUEhZX0lGX0NGRywgUEhZX1NUT1BfV0FJVF9USU1FKDB4MjAp IHwKKwkJCQkJCU5fTEFORVMoZHNpLT5sYW5lcykpOworfQorCitzdGF0aWMgdm9pZCBkd19taXBp X2RzaV9jbGVhcl9lcnIoc3RydWN0IGR3X21pcGlfZHNpICpkc2kpCit7CisJZHNpX3JlYWQoZHNp LCBEU0lfRVJST1JfU1QwKTsKKwlkc2lfcmVhZChkc2ksIERTSV9FUlJPUl9TVDEpOworCWRzaV93 cml0ZShkc2ksIERTSV9FUlJPUl9NU0swLCAwKTsKKwlkc2lfd3JpdGUoZHNpLCBEU0lfRVJST1Jf TVNLMSwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGR3X21pcGlfZHNpX2JyaWRnZV9tb2RlX3NldChz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAorCQkJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSwKKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7CisJ c3RydWN0IGR3X21pcGlfZHNpICpkc2kgPSBicmlkZ2UtPmRyaXZlcl9wcml2YXRlOworCWludCBy ZXQ7CisKKwlkc2ktPm1vZGUgPSBtb2RlOworCisJcmV0ID0gZHdfbWlwaV9kc2lfZ2V0X2xhbmVf YnBzKGRzaSwgJmRzaS0+bGFuZV9tYnBzKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuOworCisJ Y2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+Y2ZnX2Nsayk7CisJZHdfbWlwaV9kc2lfaW5pdChkc2kp OworCWR3X21pcGlfZHNpX2RwaV9jb25maWcoZHNpLCBtb2RlKTsKKwlkd19taXBpX2RzaV9wYWNr ZXRfaGFuZGxlcl9jb25maWcoZHNpKTsKKwlkd19taXBpX2RzaV92aWRlb19tb2RlX2NvbmZpZyhk c2kpOworCWR3X21pcGlfZHNpX3ZpZGVvX3BhY2tldF9jb25maWcoZHNpLCBtb2RlKTsKKwlkd19t aXBpX2RzaV9jb21tYW5kX21vZGVfY29uZmlnKGRzaSk7CisJZHdfbWlwaV9kc2lfbGluZV90aW1l cl9jb25maWcoZHNpKTsKKwlkd19taXBpX2RzaV92ZXJ0aWNhbF90aW1pbmdfY29uZmlnKGRzaSk7 CisJZHdfbWlwaV9kc2lfZHBoeV90aW1pbmdfY29uZmlnKGRzaSk7CisJZHdfbWlwaV9kc2lfZHBo eV9pbnRlcmZhY2VfY29uZmlnKGRzaSk7CisJZHdfbWlwaV9kc2lfY2xlYXJfZXJyKGRzaSk7CisJ ZHdfbWlwaV9kc2lfY29uZmlnX3Rlc3RkaW4oZHNpKTsKKwlkd19taXBpX2RzaV93YWl0X2Zvcl90 d29fZnJhbWVzKGRzaSk7CisJZHJtX3BhbmVsX3ByZXBhcmUoZHNpLT5wYW5lbCk7CisJY2xrX2Rp c2FibGVfdW5wcmVwYXJlKGRzaS0+Y2ZnX2Nsayk7Cit9CisKK3N0YXRpYyBib29sIGR3X21pcGlf ZHNpX2JyaWRnZV9tb2RlX2ZpeHVwKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCisJCQkJCSAg Y29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCisJCQkJCSAgc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpCit7CisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp YyB2b2lkIGR3X21pcGlfZHNpX2JyaWRnZV9kZXN0cm95KHN0cnVjdCBkcm1fYnJpZGdlICpicmlk Z2UpCit7CisJZHJtX2JyaWRnZV9jbGVhbnVwKGJyaWRnZSk7CisJa2ZyZWUoYnJpZGdlKTsKK30K Kworc3RhdGljIHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIGR3X21pcGlfZHNpX2JyaWRnZV9mdW5j cyA9IHsKKwkuZW5hYmxlID0gZHdfbWlwaV9kc2lfYnJpZGdlX2VuYWJsZSwKKwkuZGlzYWJsZSA9 IGR3X21pcGlfZHNpX2JyaWRnZV9kaXNhYmxlLAorCS5wcmVfZW5hYmxlID0gZHdfbWlwaV9kc2lf YnJpZGdlX25vcGUsCisJLnBvc3RfZGlzYWJsZSA9IGR3X21pcGlfZHNpX2JyaWRnZV9ub3BlLAor CS5tb2RlX3NldCA9IGR3X21pcGlfZHNpX2JyaWRnZV9tb2RlX3NldCwKKwkubW9kZV9maXh1cCA9 IGR3X21pcGlfZHNpX2JyaWRnZV9tb2RlX2ZpeHVwLAorCS5kZXN0cm95ID0gZHdfbWlwaV9kc2lf YnJpZGdlX2Rlc3Ryb3ksCit9OworCitzdGF0aWMgaW50IGR3X21pcGlfZHNpX3JlZ2lzdGVyKHN0 cnVjdCBkcm1fZGV2aWNlICpkcm0sIHN0cnVjdCBkd19taXBpX2RzaSAqZHNpKQoreworCXN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlciA9IGRzaS0+ZW5jb2RlcjsKKwlzdHJ1Y3QgZHJtX2JyaWRn ZSAqYnJpZGdlOworCWludCByZXQ7CisKKwlicmlkZ2UgPSBkZXZtX2t6YWxsb2MoZHJtLT5kZXYs IHNpemVvZigqYnJpZGdlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFicmlkZ2UpIHsKKwkJZGV2X2Vy cihkcm0tPmRldiwgImZhaWxlZCB0byBhbGxvY2F0ZSBkcm0gYnJpZGdlXG4iKTsKKwkJcmV0dXJu IC1FTk9NRU07CisJfQorCisJZHNpLT5icmlkZ2UgPSBicmlkZ2U7CisJYnJpZGdlLT5kcml2ZXJf cHJpdmF0ZSA9IGRzaTsKKworCXJldCA9IGRybV9icmlkZ2VfaW5pdChkcm0sIGJyaWRnZSwgJmR3 X21pcGlfZHNpX2JyaWRnZV9mdW5jcyk7CisJaWYgKHJldCkgeworCQlkZXZfZXJyKGRybS0+ZGV2 LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgYnJpZGdlIHdpdGggZHJtXG4iKTsKKwkJcmV0dXJuIHJl dDsKKwl9CisKKwllbmNvZGVyLT5icmlkZ2UgPSBicmlkZ2U7CisKKwlkcm1fY29ubmVjdG9yX2hl bHBlcl9hZGQoJmRzaS0+Y29ubmVjdG9yLAorCQkJJmR3X21pcGlfZHNpX2Nvbm5lY3Rvcl9oZWxw ZXJfZnVuY3MpOworCWRybV9jb25uZWN0b3JfaW5pdChkcm0sICZkc2ktPmNvbm5lY3RvciwgJmR3 X21pcGlfZHNpX2Nvbm5lY3Rvcl9mdW5jcywKKwkJCSAgIERSTV9NT0RFX0NPTk5FQ1RPUl9EU0kp OworCisJZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKCZkc2ktPmNvbm5lY3Rvciwg ZHNpLT5lbmNvZGVyKTsKKworCXJldHVybiAwOworfQorCitpbnQgZHdfbWlwaV9kc2lfYmluZChz dHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSwKKwkJ ICAgICBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsIHN0cnVjdCByZXNvdXJjZSAqcmVzLAor CQkgICAgIGNvbnN0IHN0cnVjdCBkd19taXBpX2RzaV9wbGF0X2RhdGEgKnBkYXRhKQoreworCXN0 cnVjdCBkcm1fZGV2aWNlICpkcm0gPSBkYXRhOworCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpOwor CXUzMiB2YWw7CisJaW50IHJldDsKKworCWRzaSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigq ZHNpKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkc2kpCisJCXJldHVybiAtRU5PTUVNOworCisJZHNp LT5wZGF0YSA9IHBkYXRhOworCWRzaS0+ZGV2ID0gZGV2OworCWRzaS0+ZHNpX2hvc3Qub3BzID0g JmR3X21pcGlfZHNpX2hvc3Rfb3BzOworCWRzaS0+ZHNpX2hvc3QuZGV2ID0gZGV2OworCWRzaS0+ ZW5jb2RlciA9IGVuY29kZXI7CisKKwlkc2ktPmJhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2Uo ZGV2LCByZXMpOworCWlmIChJU19FUlIoZHNpLT5iYXNlKSkKKwkJcmV0dXJuIFBUUl9FUlIoZHNp LT5iYXNlKTsKKworCWRzaS0+cGxscmVmX2NsayA9IGRldm1fY2xrX2dldChkZXYsICJwbGxyZWYi KTsKKwlpZiAoSVNfRVJSKGRzaS0+cGxscmVmX2NsaykpIHsKKwkJcmV0ID0gUFRSX0VSUihkc2kt PnBsbHJlZl9jbGspOworCQlkZXZfZXJyKGRldiwgIlVuYWJsZSB0byBnZXQgcGxsIHJlZmVyZW5j ZSBjbG9jazogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCWNsa19wcmVwYXJlX2Vu YWJsZShkc2ktPnBsbHJlZl9jbGspOworCisJZHNpLT5jZmdfY2xrID0gZGV2bV9jbGtfZ2V0KGRl diwgImNvcmVfY2ZnIik7CisJaWYgKElTX0VSUihkc2ktPmNmZ19jbGspKSB7CisJCXJldCA9IFBU Ul9FUlIoZHNpLT5jZmdfY2xrKTsKKwkJZGV2X2VycihkZXYsICJVbmFibGUgdG8gZ2V0IGNvbmZp Z3VyYXRpb24gY2xvY2s6ICVkXG4iLCByZXQpOworCQlnb3RvIGVycl9wbGxyZWY7CisJfQorCisJ Y2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+Y2ZnX2Nsayk7CisJdmFsID0gZHNpX3JlYWQoZHNpLCBE U0lfVkVSU0lPTik7CisJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGRzaS0+Y2ZnX2Nsayk7CisKKwlk ZXZfaW5mbyhkZXYsICJ2ZXJzaW9uIG51bWJlciBpcyAweCUwOHhcbiIsIHZhbCk7CisKKwlyZXQg PSBkd19taXBpX2RzaV9yZWdpc3Rlcihkcm0sIGRzaSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJf cGxscmVmOworCisJZGV2X3NldF9kcnZkYXRhKGRldiwgZHNpKTsKKworCXJldHVybiBtaXBpX2Rz aV9ob3N0X3JlZ2lzdGVyKCZkc2ktPmRzaV9ob3N0KTsKKworZXJyX3BsbHJlZjoKKwljbGtfZGlz YWJsZV91bnByZXBhcmUoZHNpLT5wbGxyZWZfY2xrKTsKKwlyZXR1cm4gcmV0OworfQorRVhQT1JU X1NZTUJPTF9HUEwoZHdfbWlwaV9kc2lfYmluZCk7CisKK3ZvaWQgZHdfbWlwaV9kc2lfdW5iaW5k KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLCB2b2lkICpkYXRhKQor eworCXN0cnVjdCBkd19taXBpX2RzaSAqZHNpID0gZGV2X2dldF9kcnZkYXRhKGRldik7CisKKwlt aXBpX2RzaV9ob3N0X3VucmVnaXN0ZXIoJmRzaS0+ZHNpX2hvc3QpOworCWNsa19kaXNhYmxlX3Vu cHJlcGFyZShkc2ktPnBsbHJlZl9jbGspOworfQorRVhQT1JUX1NZTUJPTF9HUEwoZHdfbWlwaV9k c2lfdW5iaW5kKTsKKworTU9EVUxFX0RFU0NSSVBUSU9OKCJTeW5vcHN5cyBEZXNpZ25XYXJlIE1J UEkgRFNJIGhvc3QgY29udHJvbGxlciBEUk0gYnJpZGdlIGRyaXZlciIpOworTU9EVUxFX0FVVEhP UigiTGl1IFlpbmcgPFlpbmcuTGl1QGZyZWVzY2FsZS5jb20+Iik7CitNT0RVTEVfTElDRU5TRSgi R1BMIik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9icmlkZ2UvZHdfbWlwaV9kc2kuaCBiL2lu Y2x1ZGUvZHJtL2JyaWRnZS9kd19taXBpX2RzaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmU4NGUzNTUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2RybS9icmlkZ2Uv ZHdfbWlwaV9kc2kuaApAQCAtMCwwICsxLDI3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0 IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyCisgKiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyAqLworCisjaWZuZGVmIF9fRFdfTUlQSV9EU0lfXworI2RlZmluZSBfX0RXX01JUElf RFNJX18KKworI2luY2x1ZGUgPGRybS9kcm1QLmg+CisKK3N0cnVjdCBkd19taXBpX2RzaV9wbGF0 X2RhdGEgeworCXVuc2lnbmVkIGludCBtYXhfZGF0YV9sYW5lczsKKwllbnVtIGRybV9tb2RlX3N0 YXR1cyAoKm1vZGVfdmFsaWQpKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkJ CSAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKTsKK307CisKK2ludCBkd19taXBpX2Rz aV9nZXRfZW5jb2Rlcl9waXhlbF9mb3JtYXQoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsK KworaW50IGR3X21pcGlfZHNpX2JpbmQoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNl ICptYXN0ZXIsIHZvaWQgKmRhdGEsCisJCSAgICAgc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVy LCBzdHJ1Y3QgcmVzb3VyY2UgKnJlcywKKwkJICAgICBjb25zdCBzdHJ1Y3QgZHdfbWlwaV9kc2lf cGxhdF9kYXRhICpwZGF0YSk7Cit2b2lkIGR3X21pcGlfZHNpX3VuYmluZChzdHJ1Y3QgZGV2aWNl ICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1hc3Rlciwgdm9pZCAqZGF0YSk7CisjZW5kaWYJLyogX19E V19NSVBJX0RTSV9fICovCi0tIAoyLjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK