From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hyungwon Hwang Subject: [PATCH v2 4/6] drm/exynos: dsi: add support for Exynos5433 SoC Date: Wed, 18 Mar 2015 17:16:29 +0900 Message-ID: <1426666591-16103-5-git-send-email-human.hwang@samsung.com> References: <1426666591-16103-1-git-send-email-human.hwang@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-reply-to: <1426666591-16103-1-git-send-email-human.hwang@samsung.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, devicetree@vger.kernel.org Cc: sw0312.kim@samsung.com, dh09.lee@samsung.com, cw00.choi@samsung.com, Hyungwon Hwang List-Id: devicetree@vger.kernel.org VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEV4eW5vczU0MzMuIFRoZSBnb2FsIGlzIGFjaGll dmVkIGJ5CjEuIEdldHRpbmcgdGhlIGFkZHJlc3Mgb2YgcmVnaXN0ZXJzIGZyb20gZHJpdmVyIGRh dGEKMi4gR2V0dGluZyB0aGUgZml4ZWQgdmFsdWUgZm9yIHJlZ2lzdGVycyBmcm9tIGRyaXZlciBk YXRhCjMuIEdldHRpbmcgZGlmZmVyZW50IG51bWJlciBvZiBjbG9ja3MgdXNpbmcgZHJpdmVyIGRh dGEKNC4gR2V0dGluZyBtYXggZnJlcXVlbmN5IG9mIHBpeGVsIGNsb2NrIGZyb20gZHJpdmVyIGRh dGEKClNpZ25lZC1vZmYtYnk6IERvbmdod2EgTGVlIDxkaDA5LmxlZUBzYW1zdW5nLmNvbT4KU2ln bmVkLW9mZi1ieTogSHl1bmd3b24gSHdhbmcgPGh1bWFuLmh3YW5nQHNhbXN1bmcuY29tPgotLS0K Q2hhbmdlcyBmb3IgdjI6Ci0gY2hhbmdlIHRoZSBhdXRob3Igb2YgImRybS9leHlub3M6IGRzaTog YWRkIHN1cHBvcnQgZm9yIEV4eW5vczU0MzMgU29DIiB0bwpIeXVuZ3dvbiBId2FuZyBieSB0aGUg cHJldmlvdXMgYXV0aG9yJ3Mgd2lsbAogLi4uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZXh5 bm9zX2RzaW0udHh0ICAgICAgfCAgMjQgKy0KIGRyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZp ZyAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4 eW5vc19kcm1fZHNpLmMgICAgICAgICAgICB8IDQzMSArKysrKysrKysrKysrKy0tLS0tLS0KIDMg ZmlsZXMgY2hhbmdlZCwgMzEzIGluc2VydGlvbnMoKyksIDE0NCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZXh5bm9zX2Rz aW0udHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3ZpZGVvL2V4eW5vc19k c2ltLnR4dAppbmRleCBjYTJiNGFhLi5mZWE3NzE4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9u L2RldmljZXRyZWUvYmluZGluZ3MvdmlkZW8vZXh5bm9zX2RzaW0udHh0CisrKyBiL0RvY3VtZW50 YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy92aWRlby9leHlub3NfZHNpbS50eHQKQEAgLTYsNiAr Niw3IEBAIFJlcXVpcmVkIHByb3BlcnRpZXM6CiAJCSJzYW1zdW5nLGV4eW5vczQyMTAtbWlwaS1k c2kiIC8qIGZvciBFeHlub3M0IFNvQ3MgKi8KIAkJInNhbXN1bmcsZXh5bm9zNDQxNS1taXBpLWRz aSIgLyogZm9yIEV4eW5vczQ0MTUgU29DICovCiAJCSJzYW1zdW5nLGV4eW5vczU0MTAtbWlwaS1k c2kiIC8qIGZvciBFeHlub3M1NDEwLzU0MjAvNTQ0MCBTb0NzICovCisJCSJzYW1zdW5nLGV4eW5v czU0MzMtbWlwaS1kc2kiIC8qIGZvciBFeHlub3M1NDMzIFNvQ3MgKi8KICAgLSByZWc6IHBoeXNp Y2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMgc2V0IGZvciB0aGUg ZGV2aWNlCiAgIC0gaW50ZXJydXB0czogc2hvdWxkIGNvbnRhaW4gRFNJIGludGVycnVwdAogICAt IGNsb2NrczogbGlzdCBvZiBjbG9jayBzcGVjaWZpZXJzLCBtdXN0IGNvbnRhaW4gYW4gZW50cnkg Zm9yIGVhY2ggcmVxdWlyZWQKQEAgLTMwLDEwICszMSwxOSBAQCBWaWRlbyBpbnRlcmZhY2VzOgog ICBEZXZpY2Ugbm9kZSBjYW4gY29udGFpbiB2aWRlbyBpbnRlcmZhY2UgcG9ydCBub2RlcyBhY2Nv cmRpbmcgdG8gWzJdLgogICBUaGUgZm9sbG93aW5nIGFyZSBwcm9wZXJ0aWVzIHNwZWNpZmljIHRv IHRob3NlIG5vZGVzOgoKLSAgcG9ydCBub2RlOgotICAgIC0gcmVnOiAocmVxdWlyZWQpIGNhbiBi ZSAwIGZvciBpbnB1dCBSR0IvSTgwIHBvcnQgb3IgMSBmb3IgRFNJIHBvcnQ7CisgIHBvcnQgbm9k ZSBpbmJvdW5kOgorICAgIC0gcmVnOiAocmVxdWlyZWQpIG11c3QgYmUgMC4KKyAgcG9ydCBub2Rl IG91dGJvdW5kOgorICAgIC0gcmVnOiAocmVxdWlyZWQpIG11c3QgYmUgMS4KCi0gIGVuZHBvaW50 IG5vZGUgb2YgRFNJIHBvcnQgKHJlZyA9IDEpOgorICBlbmRwb2ludCBub2RlIGNvbm5lY3RlZCBm cm9tIG1pYyBub2RlIChyZWcgPSAwKToKKyAgICAtIHJlbW90ZS1lbmRwb2ludDogc3BlY2lmaWVz IHRoZSBlbmRwb2ludCBpbiBtaWMgbm9kZS4gVGhpcyBub2RlIGlzIHJlcXVpcmVkCisJCSAgICAg ICBmb3IgRXh5bm9zNTQzMyBtaXBpIGRzaS4gU28gbWljIGNhbiBhY2Nlc3MgdG8gcGFuZWwgbm9k ZQorCQkgICAgICAgdGhvdWdob3V0IHRoaXMgZHNpIG5vZGUuCisgIGVuZHBvaW50IG5vZGUgY29u bmVjdGVkIHRvIHBhbmVsIG5vZGUgKHJlZyA9IDEpOgorICAgIC0gcmVtb3RlLWVuZHBvaW50OiBz cGVjaWZpZXMgdGhlIGVuZHBvaW50IGluIHBhbmVsIG5vZGUuIFRoaXMgbm9kZSBpcworCQkgICAg ICAgcmVxdWlyZWQgaW4gYWxsIGtpbmRzIG9mIGV4eW5vcyBtaXBpIGRzaSB0byByZXByZXNlbnQK KwkJICAgICAgIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gbWlwaSBkc2kgYW5kIHBhbmVsLgogICAg IC0gc2Ftc3VuZyxidXJzdC1jbG9jay1mcmVxdWVuY3k6IHNwZWNpZmllcyBEU0kgZnJlcXVlbmN5 IGluIGhpZ2gtc3BlZWQgYnVyc3QKICAgICAgIG1vZGUKICAgICAtIHNhbXN1bmcsZXNjLWNsb2Nr LWZyZXF1ZW5jeTogc3BlY2lmaWVzIERTSSBmcmVxdWVuY3kgaW4gZXNjYXBlIG1vZGUKQEAgLTcy LDcgKzgyLDE1IEBAIEV4YW1wbGU6CiAJCQkjYWRkcmVzcy1jZWxscyA9IDwxPjsKIAkJCSNzaXpl LWNlbGxzID0gPDA+OwoKKwkJCXBvcnRAMCB7CisJCQkJcmVnID0gPDA+OworCQkJCWRlY29uX3Rv X21pYzogZW5kcG9pbnQgeworCQkJCQlyZW1vdGUtZW5kcG9pbnQgPSA8Jm1pY190b19kZWNvbj47 CisJCQkJfTsKKwkJCX07CisKIAkJCXBvcnRAMSB7CisJCQkJcmVnID0gPDE+OwogCQkJCWRzaV9l cDogZW5kcG9pbnQgewogCQkJCQlyZWcgPSA8MD47CiAJCQkJCXNhbXN1bmcsYnVyc3QtY2xvY2st ZnJlcXVlbmN5ID0gPDUwMDAwMDAwMD47CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZXh5 bm9zL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vZXh5bm9zL0tjb25maWcKaW5kZXggYTc5NjE3 NS4uZWIzNWEyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2V4eW5vcy9LY29uZmlnCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9leHlub3MvS2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQCBjb25m aWcgRFJNX0VYWU5PU19EUEkKCiBjb25maWcgRFJNX0VYWU5PU19EU0kKIAlib29sICJFWFlOT1Mg RFJNIE1JUEktRFNJIGRyaXZlciBzdXBwb3J0IgotCWRlcGVuZHMgb24gKERSTV9FWFlOT1NfRklN RCB8fCBEUk1fRVhZTk9TN19ERUNPTikKKwlkZXBlbmRzIG9uIChEUk1fRVhZTk9TX0ZJTUQgfHwg RFJNX0VYWU5PUzU0MzNfREVDT04gfHwgRFJNX0VYWU5PUzdfREVDT04pCiAJc2VsZWN0IERSTV9N SVBJX0RTSQogCXNlbGVjdCBEUk1fUEFORUwKIAlkZWZhdWx0IG4KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9leHlub3MvZXh5bm9zX2RybV9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9leHlu b3MvZXh5bm9zX2RybV9kc2kuYwppbmRleCAwNWZlOTNkLi43NzIzNmFkIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZXh5bm9zL2V4eW5vc19kcm1fZHNpLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2V4eW5vcy9leHlub3NfZHJtX2RzaS5jCkBAIC0zMywzOCArMzMsNiBAQAogLyogcmV0dXJu cyB0cnVlIGlmZiBib3RoIGFyZ3VtZW50cyBsb2dpY2FsbHkgZGlmZmVycyAqLwogI2RlZmluZSBO RVFWKGEsIGIpICghKGEpIF4gIShiKSkKCi0jZGVmaW5lIERTSU1fU1RBVFVTX1JFRwkJMHgwCS8q IFN0YXR1cyByZWdpc3RlciAqLwotI2RlZmluZSBEU0lNX1NXUlNUX1JFRwkJMHg0CS8qIFNvZnR3 YXJlIHJlc2V0IHJlZ2lzdGVyICovCi0jZGVmaW5lIERTSU1fQ0xLQ1RSTF9SRUcJMHg4CS8qIENs b2NrIGNvbnRyb2wgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgRFNJTV9USU1FT1VUX1JFRwkweGMJLyog VGltZSBvdXQgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgRFNJTV9DT05GSUdfUkVHCQkweDEwCS8qIENv bmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8KLSNkZWZpbmUgRFNJTV9FU0NNT0RFX1JFRwkweDE0CS8q IEVzY2FwZSBtb2RlIHJlZ2lzdGVyICovCi0KLS8qIE1haW4gZGlzcGxheSBpbWFnZSByZXNvbHV0 aW9uIHJlZ2lzdGVyICovCi0jZGVmaW5lIERTSU1fTURSRVNPTF9SRUcJMHgxOAotI2RlZmluZSBE U0lNX01WUE9SQ0hfUkVHCTB4MWMJLyogTWFpbiBkaXNwbGF5IFZwb3JjaCByZWdpc3RlciAqLwot I2RlZmluZSBEU0lNX01IUE9SQ0hfUkVHCTB4MjAJLyogTWFpbiBkaXNwbGF5IEhwb3JjaCByZWdp c3RlciAqLwotI2RlZmluZSBEU0lNX01TWU5DX1JFRwkJMHgyNAkvKiBNYWluIGRpc3BsYXkgc3lu YyBhcmVhIHJlZ2lzdGVyICovCi0KLS8qIFN1YiBkaXNwbGF5IGltYWdlIHJlc29sdXRpb24gcmVn aXN0ZXIgKi8KLSNkZWZpbmUgRFNJTV9TRFJFU09MX1JFRwkweDI4Ci0jZGVmaW5lIERTSU1fSU5U U1JDX1JFRwkJMHgyYwkvKiBJbnRlcnJ1cHQgc291cmNlIHJlZ2lzdGVyICovCi0jZGVmaW5lIERT SU1fSU5UTVNLX1JFRwkJMHgzMAkvKiBJbnRlcnJ1cHQgbWFzayByZWdpc3RlciAqLwotI2RlZmlu ZSBEU0lNX1BLVEhEUl9SRUcJCTB4MzQJLyogUGFja2V0IEhlYWRlciBGSUZPIHJlZ2lzdGVyICov Ci0jZGVmaW5lIERTSU1fUEFZTE9BRF9SRUcJMHgzOAkvKiBQYXlsb2FkIEZJRk8gcmVnaXN0ZXIg Ki8KLSNkZWZpbmUgRFNJTV9SWEZJRk9fUkVHCQkweDNjCS8qIFJlYWQgRklGTyByZWdpc3RlciAq LwotI2RlZmluZSBEU0lNX0ZJRk9USExEX1JFRwkweDQwCS8qIEZJRk8gdGhyZXNob2xkIGxldmVs IHJlZ2lzdGVyICovCi0jZGVmaW5lIERTSU1fRklGT0NUUkxfUkVHCTB4NDQJLyogRklGTyBzdGF0 dXMgYW5kIGNvbnRyb2wgcmVnaXN0ZXIgKi8KLQotLyogRklGTyBtZW1vcnkgQUMgY2hhcmFjdGVy aXN0aWMgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgRFNJTV9QTExDVFJMX1JFRwkweDRjCS8qIFBMTCBj b250cm9sIHJlZ2lzdGVyICovCi0jZGVmaW5lIERTSU1fUEhZQUNDSFJfUkVHCTB4NTQJLyogRC1Q SFkgQUMgY2hhcmFjdGVyaXN0aWMgcmVnaXN0ZXIgKi8KLSNkZWZpbmUgRFNJTV9QSFlBQ0NIUjFf UkVHCTB4NTgJLyogRC1QSFkgQUMgY2hhcmFjdGVyaXN0aWMgcmVnaXN0ZXIxICovCi0jZGVmaW5l IERTSU1fUEhZQ1RSTF9SRUcJMHg1YwotI2RlZmluZSBEU0lNX1BIWVRJTUlOR19SRUcJMHg2NAot I2RlZmluZSBEU0lNX1BIWVRJTUlORzFfUkVHCTB4NjgKLSNkZWZpbmUgRFNJTV9QSFlUSU1JTkcy X1JFRwkweDZjCi0KIC8qIERTSU1fU1RBVFVTICovCiAjZGVmaW5lIERTSU1fU1RPUF9TVEFURV9E QVQoeCkJCSgoKHgpICYgMHhmKSA8PCAwKQogI2RlZmluZSBEU0lNX1NUT1BfU1RBVEVfQ0xLCQko MSA8PCA4KQpAQCAtMTI4LDggKzk2LDggQEAKCiAvKiBEU0lNX01EUkVTT0wgKi8KICNkZWZpbmUg RFNJTV9NQUlOX1NUQU5EX0JZCQkoMSA8PCAzMSkKLSNkZWZpbmUgRFNJTV9NQUlOX1ZSRVNPTCh4 KQkJKCgoeCkgJiAweDdmZikgPDwgMTYpCi0jZGVmaW5lIERTSU1fTUFJTl9IUkVTT0woeCkJCSgo KHgpICYgMFg3ZmYpIDw8IDApCisjZGVmaW5lIERTSU1fTUFJTl9WUkVTT0woeCwgbnVtX2JpdHMp CSgoKHgpICYgKCgxIDw8IChudW1fYml0cykpIC0gMSkpIDw8IDE2KQorI2RlZmluZSBEU0lNX01B SU5fSFJFU09MKHgsIG51bV9iaXRzKQkoKCh4KSAmICgoMSA8PCAobnVtX2JpdHMpKSAtIDEpKSA8 PCAwKQoKIC8qIERTSU1fTVZQT1JDSCAqLwogI2RlZmluZSBEU0lNX0NNRF9BTExPVyh4KQkJKCh4 KSA8PCAyOCkKQEAgLTE2Myw2ICsxMzEsNyBAQAogI2RlZmluZSBEU0lNX0lOVF9QTExfU1RBQkxF CQkoMSA8PCAzMSkKICNkZWZpbmUgRFNJTV9JTlRfU1dfUlNUX1JFTEVBU0UJCSgxIDw8IDMwKQog I2RlZmluZSBEU0lNX0lOVF9TRlJfRklGT19FTVBUWQkJKDEgPDwgMjkpCisjZGVmaW5lIERTSU1f SU5UX1NGUl9IRFJfRklGT19FTVBUWQkoMSA8PCAyOCkKICNkZWZpbmUgRFNJTV9JTlRfQlRBCQkJ KDEgPDwgMjUpCiAjZGVmaW5lIERTSU1fSU5UX0ZSQU1FX0RPTkUJCSgxIDw8IDI0KQogI2RlZmlu ZSBEU0lNX0lOVF9SWF9USU1FT1VUCQkoMSA8PCAyMSkKQEAgLTIxMSw2ICsxODAsOCBAQAoKIC8q IERTSU1fUEhZQ1RSTCAqLwogI2RlZmluZSBEU0lNX1BIWUNUUkxfVUxQU19FWElUKHgpCSgoKHgp ICYgMHgxZmYpIDw8IDApCisjZGVmaW5lIERTSU1fUEhZQ1RSTF9CX0RQSFlDVExfVlJFR19MUAko MSA8PCAzMCkKKyNkZWZpbmUgRFNJTV9QSFlDVFJMX0JfRFBIWUNUTF9TTEVXX1VQCSgxIDw8IDE0 KQoKIC8qIERTSU1fUEhZVElNSU5HICovCiAjZGVmaW5lIERTSU1fUEhZVElNSU5HX0xQWCh4KQkJ KCh4KSA8PCA4KQpAQCAtMjM0LDYgKzIwNSwxMiBAQAogI2RlZmluZSBEU0lfWEZFUl9USU1FT1VU X01TCQkxMDAKICNkZWZpbmUgRFNJX1JYX0ZJRk9fRU1QVFkJCTB4MzA4MDAwMDIKCisjZGVmaW5l IFJFRyhkc2ksIHJlZykJKChkc2kpLT5yZWdfYmFzZSArIGRzaS0+ZHJpdmVyX2RhdGEtPnJlZ3Nb KHJlZyldKQorCitzdGF0aWMgY2hhciAqY2xrX25hbWVzWzVdID0geyAiYnVzX2NsayIsICJwbGxf Y2xrIiwKKwkicGh5Y2xrX21pcGlkcGh5MF9iaXRjbGtkaXY4IiwgInBoeWNsa19taXBpZHBoeTBf cnhjbGtlc2MwIiwKKwkic2Nsa19yZ2JfdmNsa190b19kc2ltMCIgfTsKKwogZW51bSBleHlub3Nf ZHNpX3RyYW5zZmVyX3R5cGUgewogCUVYWU5PU19EU0lfVFgsCiAJRVhZTk9TX0RTSV9SWCwKQEAg LTI2MSwxMCArMjM4LDE1IEBAIHN0cnVjdCBleHlub3NfZHNpX3RyYW5zZmVyIHsKICNkZWZpbmUg RFNJTV9TVEFURV9DTURfTFBNCQlCSVQoMikKCiBzdHJ1Y3QgZXh5bm9zX2RzaV9kcml2ZXJfZGF0 YSB7CisJdW5zaWduZWQgaW50ICpyZWdzOwogCXVuc2lnbmVkIGludCBwbGx0bXJfcmVnOwotCiAJ dW5zaWduZWQgaW50IGhhc19mcmVxYmFuZDoxOwogCXVuc2lnbmVkIGludCBoYXNfY2xrbGFuZV9z dG9wOjE7CisJdW5zaWduZWQgaW50IG51bV9jbGtzOworCXVuc2lnbmVkIGludCBtYXhfZnJlcTsK Kwl1bnNpZ25lZCBpbnQgd2FpdF9mb3JfcmVzZXQ7CisJdW5zaWduZWQgaW50IG51bV9iaXRzX3Jl c29sOworCXVuc2lnbmVkIGludCAqdmFsdWVzOwogfTsKCiBzdHJ1Y3QgZXh5bm9zX2RzaSB7CkBA IC0yNzcsOCArMjU5LDcgQEAgc3RydWN0IGV4eW5vc19kc2kgewoKIAl2b2lkIF9faW9tZW0gKnJl Z19iYXNlOwogCXN0cnVjdCBwaHkgKnBoeTsKLQlzdHJ1Y3QgY2xrICpwbGxfY2xrOwotCXN0cnVj dCBjbGsgKmJ1c19jbGs7CisJc3RydWN0IGNsayAqKmNsa3M7CiAJc3RydWN0IHJlZ3VsYXRvcl9i dWxrX2RhdGEgc3VwcGxpZXNbMl07CiAJaW50IGlycTsKIAlpbnQgdGVfZ3BpbzsKQEAgLTMwOSwy NSArMjkwLDE4NiBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBleHlub3NfZHNpICpkaXNwbGF5X3Rv X2RzaShzdHJ1Y3QgZXh5bm9zX2RybV9kaXNwbGF5ICpkKQogCXJldHVybiBjb250YWluZXJfb2Yo ZCwgc3RydWN0IGV4eW5vc19kc2ksIGRpc3BsYXkpOwogfQoKK2VudW0gcmVncyB7CisJRFNJTV9T VEFUVVNfUkVHLAkvKiBTdGF0dXMgcmVnaXN0ZXIgKi8KKwlEU0lNX1NXUlNUX1JFRywJCS8qIFNv ZnR3YXJlIHJlc2V0IHJlZ2lzdGVyICovCisJRFNJTV9DTEtDVFJMX1JFRywJLyogQ2xvY2sgY29u dHJvbCByZWdpc3RlciAqLworCURTSU1fVElNRU9VVF9SRUcsCS8qIFRpbWUgb3V0IHJlZ2lzdGVy ICovCisJRFNJTV9DT05GSUdfUkVHLAkvKiBDb25maWd1cmF0aW9uIHJlZ2lzdGVyICovCisJRFNJ TV9FU0NNT0RFX1JFRywJLyogRXNjYXBlIG1vZGUgcmVnaXN0ZXIgKi8KKwlEU0lNX01EUkVTT0xf UkVHLAorCURTSU1fTVZQT1JDSF9SRUcsCS8qIE1haW4gZGlzcGxheSBWcG9yY2ggcmVnaXN0ZXIg Ki8KKwlEU0lNX01IUE9SQ0hfUkVHLAkvKiBNYWluIGRpc3BsYXkgSHBvcmNoIHJlZ2lzdGVyICov CisJRFNJTV9NU1lOQ19SRUcsCQkvKiBNYWluIGRpc3BsYXkgc3luYyBhcmVhIHJlZ2lzdGVyICov CisJRFNJTV9JTlRTUkNfUkVHLAkvKiBJbnRlcnJ1cHQgc291cmNlIHJlZ2lzdGVyICovCisJRFNJ TV9JTlRNU0tfUkVHLAkvKiBJbnRlcnJ1cHQgbWFzayByZWdpc3RlciAqLworCURTSU1fUEtUSERS X1JFRywJLyogUGFja2V0IEhlYWRlciBGSUZPIHJlZ2lzdGVyICovCisJRFNJTV9QQVlMT0FEX1JF RywJLyogUGF5bG9hZCBGSUZPIHJlZ2lzdGVyICovCisJRFNJTV9SWEZJRk9fUkVHLAkvKiBSZWFk IEZJRk8gcmVnaXN0ZXIgKi8KKwlEU0lNX0ZJRk9DVFJMX1JFRywJLyogRklGTyBzdGF0dXMgYW5k IGNvbnRyb2wgcmVnaXN0ZXIgKi8KKwlEU0lNX1BMTENUUkxfUkVHLAkvKiBQTEwgY29udHJvbCBy ZWdpc3RlciAqLworCURTSU1fUEhZQ1RSTF9SRUcsCisJRFNJTV9QSFlUSU1JTkdfUkVHLAorCURT SU1fUEhZVElNSU5HMV9SRUcsCisJRFNJTV9QSFlUSU1JTkcyX1JFRywKKwlOVU1fUkVHUworfTsK K3N0YXRpYyB1bnNpZ25lZCBpbnQgcmVnc1tdID0geworCVtEU0lNX1NUQVRVU19SRUddID0gIDB4 MDAsCisJW0RTSU1fU1dSU1RfUkVHXSA9ICAweDA0LAorCVtEU0lNX0NMS0NUUkxfUkVHXSA9ICAw eDA4LAorCVtEU0lNX1RJTUVPVVRfUkVHXSA9ICAweDBjLAorCVtEU0lNX0NPTkZJR19SRUddID0g IDB4MTAsCisJW0RTSU1fRVNDTU9ERV9SRUddID0gIDB4MTQsCisJW0RTSU1fTURSRVNPTF9SRUdd ID0gIDB4MTgsCisJW0RTSU1fTVZQT1JDSF9SRUddID0gIDB4MWMsCisJW0RTSU1fTUhQT1JDSF9S RUddID0gIDB4MjAsCisJW0RTSU1fTVNZTkNfUkVHXSA9ICAweDI0LAorCVtEU0lNX0lOVFNSQ19S RUddID0gIDB4MmMsCisJW0RTSU1fSU5UTVNLX1JFR10gPSAgMHgzMCwKKwlbRFNJTV9QS1RIRFJf UkVHXSA9ICAweDM0LAorCVtEU0lNX1BBWUxPQURfUkVHXSA9ICAweDM4LAorCVtEU0lNX1JYRklG T19SRUddID0gIDB4M2MsCisJW0RTSU1fRklGT0NUUkxfUkVHXSA9ICAweDQ0LAorCVtEU0lNX1BM TENUUkxfUkVHXSA9ICAweDRjLAorCVtEU0lNX1BIWUNUUkxfUkVHXSA9ICAweDVjLAorCVtEU0lN X1BIWVRJTUlOR19SRUddID0gIDB4NjQsCisJW0RTSU1fUEhZVElNSU5HMV9SRUddID0gIDB4Njgs CisJW0RTSU1fUEhZVElNSU5HMl9SRUddID0gIDB4NmMsCit9OworCitzdGF0aWMgdW5zaWduZWQg aW50IGV4eW5vczU0MzNfcmVnc1tdID0geworCVtEU0lNX1NUQVRVU19SRUddID0gMHgwNCwKKwlb RFNJTV9TV1JTVF9SRUddID0gMHgwQywKKwlbRFNJTV9DTEtDVFJMX1JFR10gPSAweDEwLAorCVtE U0lNX1RJTUVPVVRfUkVHXSA9IDB4MTQsCisJW0RTSU1fQ09ORklHX1JFR10gPSAweDE4LAorCVtE U0lNX0VTQ01PREVfUkVHXSA9IDB4MUMsCisJW0RTSU1fTURSRVNPTF9SRUddID0gMHgyMCwKKwlb RFNJTV9NVlBPUkNIX1JFR10gPSAweDI0LAorCVtEU0lNX01IUE9SQ0hfUkVHXSA9IDB4MjgsCisJ W0RTSU1fTVNZTkNfUkVHXSA9IDB4MkMsCisJW0RTSU1fSU5UU1JDX1JFR10gPSAweDM0LAorCVtE U0lNX0lOVE1TS19SRUddID0gMHgzOCwKKwlbRFNJTV9QS1RIRFJfUkVHXSA9IDB4M0MsCisJW0RT SU1fUEFZTE9BRF9SRUddID0gMHg0MCwKKwlbRFNJTV9SWEZJRk9fUkVHXSA9IDB4NDQsCisJW0RT SU1fRklGT0NUUkxfUkVHXSA9IDB4NEMsCisJW0RTSU1fUExMQ1RSTF9SRUddID0gMHg5NCwKKwlb RFNJTV9QSFlDVFJMX1JFR10gPSAweEE0LAorCVtEU0lNX1BIWVRJTUlOR19SRUddID0gMHhCNCwK KwlbRFNJTV9QSFlUSU1JTkcxX1JFR10gPSAweEI4LAorCVtEU0lNX1BIWVRJTUlORzJfUkVHXSA9 IDB4QkMsCit9OworCitlbnVtIHZhbHVlcyB7CisJUkVTRVRfVFlQRSwKKwlQTExfVElNRVIsCisJ U1RPUF9TVEFURV9DTlQsCisJUEhZQ1RSTF9VTFBTX0VYSVQsCisJUEhZQ1RSTF9WUkVHX0xQLAor CVBIWUNUUkxfU0xFV19VUCwKKwlQSFlUSU1JTkdfTFBYLAorCVBIWVRJTUlOR19IU19FWElULAor CVBIWVRJTUlOR19DTEtfUFJFUEFSRSwKKwlQSFlUSU1JTkdfQ0xLX1pFUk8sCisJUEhZVElNSU5H X0NMS19QT1NULAorCVBIWVRJTUlOR19DTEtfVFJBSUwsCisJUEhZVElNSU5HX0hTX1BSRVBBUkUs CisJUEhZVElNSU5HX0hTX1pFUk8sCisJUEhZVElNSU5HX0hTX1RSQUlMCit9OworCitzdGF0aWMg dW5zaWduZWQgaW50IHZhbHVlc1tdID0geworCVtSRVNFVF9UWVBFXSA9IERTSU1fU1dSU1QsCisJ W1BMTF9USU1FUl0gPSA1MDAsCisJW1NUT1BfU1RBVEVfQ05UXSA9IDB4ZiwKKwlbUEhZQ1RSTF9V TFBTX0VYSVRdID0gRFNJTV9QSFlDVFJMX1VMUFNfRVhJVCgweDBhZiksCisJW1BIWUNUUkxfVlJF R19MUF0gPSAwLAorCVtQSFlDVFJMX1NMRVdfVVBdID0gMCwKKwlbUEhZVElNSU5HX0xQWF0gPSBE U0lNX1BIWVRJTUlOR19MUFgoMHgwNiksCisJW1BIWVRJTUlOR19IU19FWElUXSA9IERTSU1fUEhZ VElNSU5HX0hTX0VYSVQoMHgwYiksCisJW1BIWVRJTUlOR19DTEtfUFJFUEFSRV0gPSBEU0lNX1BI WVRJTUlORzFfQ0xLX1BSRVBBUkUoMHgwNyksCisJW1BIWVRJTUlOR19DTEtfWkVST10gPSBEU0lN X1BIWVRJTUlORzFfQ0xLX1pFUk8oMHgyNyksCisJW1BIWVRJTUlOR19DTEtfUE9TVF0gPSBEU0lN X1BIWVRJTUlORzFfQ0xLX1BPU1QoMHgwZCksCisJW1BIWVRJTUlOR19DTEtfVFJBSUxdID0gRFNJ TV9QSFlUSU1JTkcxX0NMS19UUkFJTCgweDA4KSwKKwlbUEhZVElNSU5HX0hTX1BSRVBBUkVdID0g RFNJTV9QSFlUSU1JTkcyX0hTX1BSRVBBUkUoMHgwOSksCisJW1BIWVRJTUlOR19IU19aRVJPXSA9 IERTSU1fUEhZVElNSU5HMl9IU19aRVJPKDB4MGQpLAorCVtQSFlUSU1JTkdfSFNfVFJBSUxdID0g RFNJTV9QSFlUSU1JTkcyX0hTX1RSQUlMKDB4MGIpLAorfTsKKworc3RhdGljIHVuc2lnbmVkIGlu dCBleHlub3M1NDMzX3ZhbHVlc1tdID0geworCVtSRVNFVF9UWVBFXSA9IERTSU1fRlVOQ1JTVCwK KwlbUExMX1RJTUVSXSA9IDIyMjAwLAorCVtTVE9QX1NUQVRFX0NOVF0gPSAweGEsCisJW1BIWUNU UkxfVUxQU19FWElUXSA9IERTSU1fUEhZQ1RSTF9VTFBTX0VYSVQoMHgxOTApLAorCVtQSFlDVFJM X1ZSRUdfTFBdID0gRFNJTV9QSFlDVFJMX0JfRFBIWUNUTF9WUkVHX0xQLAorCVtQSFlDVFJMX1NM RVdfVVBdID0gRFNJTV9QSFlDVFJMX0JfRFBIWUNUTF9TTEVXX1VQLAorCVtQSFlUSU1JTkdfTFBY XSA9IERTSU1fUEhZVElNSU5HX0xQWCgweDA3KSwKKwlbUEhZVElNSU5HX0hTX0VYSVRdID0gRFNJ TV9QSFlUSU1JTkdfSFNfRVhJVCgweDBjKSwKKwlbUEhZVElNSU5HX0NMS19QUkVQQVJFXSA9IERT SU1fUEhZVElNSU5HMV9DTEtfUFJFUEFSRSgweDA5KSwKKwlbUEhZVElNSU5HX0NMS19aRVJPXSA9 IERTSU1fUEhZVElNSU5HMV9DTEtfWkVSTygweDJkKSwKKwlbUEhZVElNSU5HX0NMS19QT1NUXSA9 IERTSU1fUEhZVElNSU5HMV9DTEtfUE9TVCgweDBlKSwKKwlbUEhZVElNSU5HX0NMS19UUkFJTF0g PSBEU0lNX1BIWVRJTUlORzFfQ0xLX1RSQUlMKDB4MDkpLAorCVtQSFlUSU1JTkdfSFNfUFJFUEFS RV0gPSBEU0lNX1BIWVRJTUlORzJfSFNfUFJFUEFSRSgweDBiKSwKKwlbUEhZVElNSU5HX0hTX1pF Uk9dID0gRFNJTV9QSFlUSU1JTkcyX0hTX1pFUk8oMHgxMCksCisJW1BIWVRJTUlOR19IU19UUkFJ TF0gPSBEU0lNX1BIWVRJTUlORzJfSFNfVFJBSUwoMHgwYyksCit9OworCiBzdGF0aWMgc3RydWN0 IGV4eW5vc19kc2lfZHJpdmVyX2RhdGEgZXh5bm9zM19kc2lfZHJpdmVyX2RhdGEgPSB7CisJLnJl Z3MgPSByZWdzLAogCS5wbGx0bXJfcmVnID0gMHg1MCwKIAkuaGFzX2ZyZXFiYW5kID0gMSwKIAku aGFzX2Nsa2xhbmVfc3RvcCA9IDEsCisJLm51bV9jbGtzID0gMiwKKwkubWF4X2ZyZXEgPSAxMDAw LAorCS53YWl0X2Zvcl9yZXNldCA9IDEsCisJLm51bV9iaXRzX3Jlc29sID0gMTEsCisJLnZhbHVl cyA9IHZhbHVlcywKIH07Cgogc3RhdGljIHN0cnVjdCBleHlub3NfZHNpX2RyaXZlcl9kYXRhIGV4 eW5vczRfZHNpX2RyaXZlcl9kYXRhID0geworCS5yZWdzID0gcmVncywKIAkucGxsdG1yX3JlZyA9 IDB4NTAsCiAJLmhhc19mcmVxYmFuZCA9IDEsCiAJLmhhc19jbGtsYW5lX3N0b3AgPSAxLAorCS5u dW1fY2xrcyA9IDIsCisJLm1heF9mcmVxID0gMTAwMCwKKwkud2FpdF9mb3JfcmVzZXQgPSAxLAor CS5udW1fYml0c19yZXNvbCA9IDExLAorCS52YWx1ZXMgPSB2YWx1ZXMsCiB9OwoKIHN0YXRpYyBz dHJ1Y3QgZXh5bm9zX2RzaV9kcml2ZXJfZGF0YSBleHlub3M0NDE1X2RzaV9kcml2ZXJfZGF0YSA9 IHsKKwkucmVncyA9IHJlZ3MsCiAJLnBsbHRtcl9yZWcgPSAweDU4LAogCS5oYXNfY2xrbGFuZV9z dG9wID0gMSwKKwkubnVtX2Nsa3MgPSAyLAorCS5tYXhfZnJlcSA9IDEwMDAsCisJLndhaXRfZm9y X3Jlc2V0ID0gMSwKKwkubnVtX2JpdHNfcmVzb2wgPSAxMSwKKwkudmFsdWVzID0gdmFsdWVzLAog fTsKCiBzdGF0aWMgc3RydWN0IGV4eW5vc19kc2lfZHJpdmVyX2RhdGEgZXh5bm9zNV9kc2lfZHJp dmVyX2RhdGEgPSB7CisJLnJlZ3MgPSByZWdzLAogCS5wbGx0bXJfcmVnID0gMHg1OCwKKwkubnVt X2Nsa3MgPSAyLAorCS5tYXhfZnJlcSA9IDEwMDAsCisJLndhaXRfZm9yX3Jlc2V0ID0gMSwKKwku bnVtX2JpdHNfcmVzb2wgPSAxMSwKKwkudmFsdWVzID0gdmFsdWVzLAorfTsKKworc3RhdGljIHN0 cnVjdCBleHlub3NfZHNpX2RyaXZlcl9kYXRhIGV4eW5vczU0MzNfZHNpX2RyaXZlcl9kYXRhID0g eworCS5yZWdzID0gZXh5bm9zNTQzM19yZWdzLAorCS5wbGx0bXJfcmVnID0gMHhhMCwKKwkuaGFz X2Nsa2xhbmVfc3RvcCA9IDEsCisJLm51bV9jbGtzID0gNSwKKwkubWF4X2ZyZXEgPSAxNTAwLAor CS53YWl0X2Zvcl9yZXNldCA9IDAsCisJLm51bV9iaXRzX3Jlc29sID0gMTIsCisJLnZhbHVlcyA9 IGV4eW5vczU0MzNfdmFsdWVzLAogfTsKCiBzdGF0aWMgc3RydWN0IG9mX2RldmljZV9pZCBleHlu b3NfZHNpX29mX21hdGNoW10gPSB7CkBAIC0zMzksNiArNDgxLDggQEAgc3RhdGljIHN0cnVjdCBv Zl9kZXZpY2VfaWQgZXh5bm9zX2RzaV9vZl9tYXRjaFtdID0gewogCSAgLmRhdGEgPSAmZXh5bm9z NDQxNV9kc2lfZHJpdmVyX2RhdGEgfSwKIAl7IC5jb21wYXRpYmxlID0gInNhbXN1bmcsZXh5bm9z NTQxMC1taXBpLWRzaSIsCiAJICAuZGF0YSA9ICZleHlub3M1X2RzaV9kcml2ZXJfZGF0YSB9LAor CXsgLmNvbXBhdGlibGUgPSAic2Ftc3VuZyxleHlub3M1NDMzLW1pcGktZHNpIiwKKwkgIC5kYXRh ID0gJmV4eW5vczU0MzNfZHNpX2RyaXZlcl9kYXRhIH0sCiAJeyB9CiB9OwoKQEAgLTM2MSw4ICs1 MDUsMTAgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RzaV93YWl0X2Zvcl9yZXNldChzdHJ1Y3QgZXh5 bm9zX2RzaSAqZHNpKQoKIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfcmVzZXQoc3RydWN0IGV4eW5v c19kc2kgKmRzaSkKIHsKKwlzdHJ1Y3QgZXh5bm9zX2RzaV9kcml2ZXJfZGF0YSAqZHJpdmVyX2Rh dGEgPSBkc2ktPmRyaXZlcl9kYXRhOworCiAJcmVpbml0X2NvbXBsZXRpb24oJmRzaS0+Y29tcGxl dGVkKTsKLQl3cml0ZWwoRFNJTV9TV1JTVCwgZHNpLT5yZWdfYmFzZSArIERTSU1fU1dSU1RfUkVH KTsKKwl3cml0ZWwoZHJpdmVyX2RhdGEtPnZhbHVlc1tSRVNFVF9UWVBFXSwgUkVHKGRzaSwgRFNJ TV9TV1JTVF9SRUcpKTsKIH0KCiAjaWZuZGVmIE1IWgpAQCAtMzcyLDYgKzUxOCw3IEBAIHN0YXRp YyB2b2lkIGV4eW5vc19kc2lfcmVzZXQoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKIHN0YXRpYyB1 bnNpZ25lZCBsb25nIGV4eW5vc19kc2lfcGxsX2ZpbmRfcG1zKHN0cnVjdCBleHlub3NfZHNpICpk c2ksCiAJCXVuc2lnbmVkIGxvbmcgZmluLCB1bnNpZ25lZCBsb25nIGZvdXQsIHU4ICpwLCB1MTYg Km0sIHU4ICpzKQogeworCXN0cnVjdCBleHlub3NfZHNpX2RyaXZlcl9kYXRhICpkcml2ZXJfZGF0 YSA9IGRzaS0+ZHJpdmVyX2RhdGE7CiAJdW5zaWduZWQgbG9uZyBiZXN0X2ZyZXEgPSAwOwogCXUz MiBtaW5fZGVsdGEgPSAweGZmZmZmZmZmOwogCXU4IHBfbWluLCBwX21heDsKQEAgLTM5NSw3ICs1 NDIsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBleHlub3NfZHNpX3BsbF9maW5kX3BtcyhzdHJ1 Y3QgZXh5bm9zX2RzaSAqZHNpLAoKIAkJCXRtcCA9ICh1NjQpX20gKiBmaW47CiAJCQlkb19kaXYo dG1wLCBfcCk7Ci0JCQlpZiAodG1wIDwgNTAwICogTUhaIHx8IHRtcCA+IDEwMDAgKiBNSFopCisJ CQlpZiAodG1wIDwgNTAwICogTUhaIHx8CisJCQkJCXRtcCA+IGRyaXZlcl9kYXRhLT5tYXhfZnJl cSAqIE1IWikKIAkJCQljb250aW51ZTsKCiAJCQl0bXAgPSAodTY0KV9tICogZmluOwpAQCAtNDMx LDE1ICs1NzksMTEgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZXh5bm9zX2RzaV9zZXRfcGxsKHN0 cnVjdCBleHlub3NfZHNpICpkc2ksCiAJdTE2IG07CiAJdTMyIHJlZzsKCi0JY2xrX3NldF9yYXRl KGRzaS0+cGxsX2NsaywgZHNpLT5wbGxfY2xrX3JhdGUpOwotCi0JZmluID0gY2xrX2dldF9yYXRl KGRzaS0+cGxsX2Nsayk7Ci0JaWYgKCFmaW4pIHsKLQkJZGV2X2Vycihkc2ktPmRldiwgImZhaWxl ZCB0byBnZXQgUExMIGNsb2NrIGZyZXF1ZW5jeVxuIik7Ci0JCXJldHVybiAwOwotCX0KLQotCWRl dl9kYmcoZHNpLT5kZXYsICJQTEwgaW5wdXQgZnJlcXVlbmN5OiAlbHVcbiIsIGZpbik7CisJLyoK KwkgKiBUaGUgaW5wdXQgUExMIGNsb2NrIGZvciBNSVBJIERTSSBpbiBFeHlub3M1NDMzIHNlZW1z IHRvIGJlIGZpeGVkCisJICogYnkgT1NDIENMSy4KKwkgKi8KKwlmaW4gPSAyNCAqIE1IWjsKCiAJ Zm91dCA9IGV4eW5vc19kc2lfcGxsX2ZpbmRfcG1zKGRzaSwgZmluLCBmcmVxLCAmcCwgJm0sICZz KTsKIAlpZiAoIWZvdXQpIHsKQEAgLTQ0OSw3ICs1OTMsOCBAQCBzdGF0aWMgdW5zaWduZWQgbG9u ZyBleHlub3NfZHNpX3NldF9wbGwoc3RydWN0IGV4eW5vc19kc2kgKmRzaSwKIAl9CiAJZGV2X2Ri Zyhkc2ktPmRldiwgIlBMTCBmcmVxICVsdSwgKHAgJWQsIG0gJWQsIHMgJWQpXG4iLCBmb3V0LCBw LCBtLCBzKTsKCi0Jd3JpdGVsKDUwMCwgZHNpLT5yZWdfYmFzZSArIGRyaXZlcl9kYXRhLT5wbGx0 bXJfcmVnKTsKKwl3cml0ZWwoZHJpdmVyX2RhdGEtPnZhbHVlc1tQTExfVElNRVJdLAorCQkJZHNp LT5yZWdfYmFzZSArIGRyaXZlcl9kYXRhLT5wbGx0bXJfcmVnKTsKCiAJcmVnID0gRFNJTV9QTExf RU4gfCBEU0lNX1BMTF9QKHApIHwgRFNJTV9QTExfTShtKSB8IERTSU1fUExMX1Mocyk7CgpAQCAt NDcxLDcgKzYxNiw3IEBAIHN0YXRpYyB1bnNpZ25lZCBsb25nIGV4eW5vc19kc2lfc2V0X3BsbChz dHJ1Y3QgZXh5bm9zX2RzaSAqZHNpLAogCQlyZWcgfD0gRFNJTV9GUkVRX0JBTkQoYmFuZCk7CiAJ fQoKLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9QTExDVFJMX1JFRyk7CisJd3Jp dGVsKHJlZywgUkVHKGRzaSwgRFNJTV9QTExDVFJMX1JFRykpOwoKIAl0aW1lb3V0ID0gMTAwMDsK IAlkbyB7CkBAIC00NzksNyArNjI0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgZXh5bm9zX2Rz aV9zZXRfcGxsKHN0cnVjdCBleHlub3NfZHNpICpkc2ksCiAJCQlkZXZfZXJyKGRzaS0+ZGV2LCAi UExMIGZhaWxlZCB0byBzdGFiaWxpemVcbiIpOwogCQkJcmV0dXJuIDA7CiAJCX0KLQkJcmVnID0g cmVhZGwoZHNpLT5yZWdfYmFzZSArIERTSU1fU1RBVFVTX1JFRyk7CisJCXJlZyA9IHJlYWRsKFJF Ryhkc2ksIERTSU1fU1RBVFVTX1JFRykpOwogCX0gd2hpbGUgKChyZWcgJiBEU0lNX1BMTF9TVEFC TEUpID09IDApOwoKIAlyZXR1cm4gZm91dDsKQEAgLTQ5MSw2ICs2MzYsOCBAQCBzdGF0aWMgaW50 IGV4eW5vc19kc2lfZW5hYmxlX2Nsb2NrKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCiAJdW5zaWdu ZWQgbG9uZyBlc2NfZGl2OwogCXUzMiByZWc7CgorCXJlZyA9IHJlYWRsKFJFRyhkc2ksIERTSU1f U1RBVFVTX1JFRykpOworCiAJaHNfY2xrID0gZXh5bm9zX2RzaV9zZXRfcGxsKGRzaSwgZHNpLT5i dXJzdF9jbGtfcmF0ZSk7CiAJaWYgKCFoc19jbGspIHsKIAkJZGV2X2Vycihkc2ktPmRldiwgImZh aWxlZCB0byBjb25maWd1cmUgRFNJIFBMTFxuIik7CkBAIC01MDksNyArNjU2LDcgQEAgc3RhdGlj IGludCBleHlub3NfZHNpX2VuYWJsZV9jbG9jayhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQogCWRl dl9kYmcoZHNpLT5kZXYsICJoc19jbGsgPSAlbHUsIGJ5dGVfY2xrID0gJWx1LCBlc2NfY2xrID0g JWx1XG4iLAogCQloc19jbGssIGJ5dGVfY2xrLCBlc2NfY2xrKTsKCi0JcmVnID0gcmVhZGwoZHNp LT5yZWdfYmFzZSArIERTSU1fQ0xLQ1RSTF9SRUcpOworCXJlZyA9IHJlYWRsKFJFRyhkc2ksIERT SU1fQ0xLQ1RSTF9SRUcpKTsKIAlyZWcgJj0gfihEU0lNX0VTQ19QUkVTQ0FMRVJfTUFTSyB8IERT SU1fTEFORV9FU0NfQ0xLX0VOX0NMSwogCQkJfCBEU0lNX0xBTkVfRVNDX0NMS19FTl9EQVRBX01B U0sgfCBEU0lNX1BMTF9CWVBBU1MKIAkJCXwgRFNJTV9CWVRFX0NMS19TUkNfTUFTSyk7CkBAIC01 MTksNyArNjY2LDggQEAgc3RhdGljIGludCBleHlub3NfZHNpX2VuYWJsZV9jbG9jayhzdHJ1Y3Qg ZXh5bm9zX2RzaSAqZHNpKQogCQkJfCBEU0lNX0xBTkVfRVNDX0NMS19FTl9EQVRBKEJJVChkc2kt PmxhbmVzKSAtIDEpCiAJCQl8IERTSU1fQllURV9DTEtfU1JDKDApCiAJCQl8IERTSU1fVFhfUkVR VUVTVF9IU0NMSzsKLQl3cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9DTEtDVFJMX1JF Ryk7CisKKwl3cml0ZWwocmVnLCBSRUcoZHNpLCBEU0lNX0NMS0NUUkxfUkVHKSk7CgogCXJldHVy biAwOwogfQpAQCAtNTI3LDIyICs2NzUsMjQgQEAgc3RhdGljIGludCBleHlub3NfZHNpX2VuYWJs ZV9jbG9jayhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQogc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9z ZXRfcGh5X2N0cmwoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKIHsKIAlzdHJ1Y3QgZXh5bm9zX2Rz aV9kcml2ZXJfZGF0YSAqZHJpdmVyX2RhdGEgPSBkc2ktPmRyaXZlcl9kYXRhOworCXVuc2lnbmVk IGludCAqdmFsdWVzID0gZHJpdmVyX2RhdGEtPnZhbHVlczsKIAl1MzIgcmVnOwoKIAlpZiAoZHJp dmVyX2RhdGEtPmhhc19mcmVxYmFuZCkKIAkJcmV0dXJuOwoKIAkvKiBCIEQtUEhZOiBELVBIWSBN YXN0ZXIgJiBTbGF2ZSBBbmFsb2cgQmxvY2sgY29udHJvbCAqLwotCXJlZyA9IERTSU1fUEhZQ1RS TF9VTFBTX0VYSVQoMHgwYWYpOwotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1BI WUNUUkxfUkVHKTsKKwlyZWcgPSB2YWx1ZXNbUEhZQ1RSTF9VTFBTX0VYSVRdIHwgdmFsdWVzW1BI WUNUUkxfVlJFR19MUF0gfAorCQl2YWx1ZXNbUEhZQ1RSTF9TTEVXX1VQXTsKKwl3cml0ZWwocmVn LCBSRUcoZHNpLCBEU0lNX1BIWUNUUkxfUkVHKSk7CgogCS8qCiAJICogVCBMUFg6IFRyYW5zbWl0 dGVkIGxlbmd0aCBvZiBhbnkgTG93LVBvd2VyIHN0YXRlIHBlcmlvZAogCSAqIFQgSFMtRVhJVDog VGltZSB0aGF0IHRoZSB0cmFuc21pdHRlciBkcml2ZXMgTFAtMTEgZm9sbG93aW5nIGEgSFMKIAkg KglidXJzdAogCSAqLwotCXJlZyA9IERTSU1fUEhZVElNSU5HX0xQWCgweDA2KSB8IERTSU1fUEhZ VElNSU5HX0hTX0VYSVQoMHgwYik7Ci0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1f UEhZVElNSU5HX1JFRyk7CisJcmVnID0gdmFsdWVzW1BIWVRJTUlOR19MUFhdIHwgdmFsdWVzW1BI WVRJTUlOR19IU19FWElUXTsKKwl3cml0ZWwocmVnLCBSRUcoZHNpLCBEU0lNX1BIWVRJTUlOR19S RUcpKTsKCiAJLyoKIAkgKiBUIENMSy1QUkVQQVJFOiBUaW1lIHRoYXQgdGhlIHRyYW5zbWl0dGVy IGRyaXZlcyB0aGUgQ2xvY2sgTGFuZSBMUC0wMApAQCAtNTU3LDExICs3MDcsMTAgQEAgc3RhdGlj IHZvaWQgZXh5bm9zX2RzaV9zZXRfcGh5X2N0cmwoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkKIAkg KiBUIENMSy1UUkFJTDogVGltZSB0aGF0IHRoZSB0cmFuc21pdHRlciBkcml2ZXMgdGhlIEhTLTAg c3RhdGUgYWZ0ZXIKIAkgKgl0aGUgbGFzdCBwYXlsb2FkIGNsb2NrIGJpdCBvZiBhIEhTIHRyYW5z bWlzc2lvbiBidXJzdAogCSAqLwotCXJlZyA9IERTSU1fUEhZVElNSU5HMV9DTEtfUFJFUEFSRSgw eDA3KSB8Ci0JCQlEU0lNX1BIWVRJTUlORzFfQ0xLX1pFUk8oMHgyNykgfAotCQkJRFNJTV9QSFlU SU1JTkcxX0NMS19QT1NUKDB4MGQpIHwKLQkJCURTSU1fUEhZVElNSU5HMV9DTEtfVFJBSUwoMHgw OCk7Ci0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fUEhZVElNSU5HMV9SRUcpOwor CXJlZyA9IHZhbHVlc1tQSFlUSU1JTkdfQ0xLX1BSRVBBUkVdIHwgdmFsdWVzW1BIWVRJTUlOR19D TEtfWkVST10gfAorCQl2YWx1ZXNbUEhZVElNSU5HX0NMS19QT1NUXSB8IHZhbHVlc1tQSFlUSU1J TkdfQ0xLX1RSQUlMXTsKKworCXdyaXRlbChyZWcsIFJFRyhkc2ksIERTSU1fUEhZVElNSU5HMV9S RUcpKTsKCiAJLyoKIAkgKiBUIEhTLVBSRVBBUkU6IFRpbWUgdGhhdCB0aGUgdHJhbnNtaXR0ZXIg ZHJpdmVzIHRoZSBEYXRhIExhbmUgTFAtMDAKQEAgLTU3MiwyMyArNzIxLDIzIEBAIHN0YXRpYyB2 b2lkIGV4eW5vc19kc2lfc2V0X3BoeV9jdHJsKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCiAJICog VCBIUy1UUkFJTDogVGltZSB0aGF0IHRoZSB0cmFuc21pdHRlciBkcml2ZXMgdGhlIGZsaXBwZWQg ZGlmZmVyZW50aWFsCiAJICoJc3RhdGUgYWZ0ZXIgbGFzdCBwYXlsb2FkIGRhdGEgYml0IG9mIGEg SFMgdHJhbnNtaXNzaW9uIGJ1cnN0CiAJICovCi0JcmVnID0gRFNJTV9QSFlUSU1JTkcyX0hTX1BS RVBBUkUoMHgwOSkgfCBEU0lNX1BIWVRJTUlORzJfSFNfWkVSTygweDBkKSB8Ci0JCQlEU0lNX1BI WVRJTUlORzJfSFNfVFJBSUwoMHgwYik7Ci0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERT SU1fUEhZVElNSU5HMl9SRUcpOworCXJlZyA9IHZhbHVlc1tQSFlUSU1JTkdfSFNfUFJFUEFSRV0g fCB2YWx1ZXNbUEhZVElNSU5HX0hTX1pFUk9dIHwKKwkJdmFsdWVzW1BIWVRJTUlOR19IU19UUkFJ TF07CisJd3JpdGVsKHJlZywgUkVHKGRzaSwgRFNJTV9QSFlUSU1JTkcyX1JFRykpOwogfQoKIHN0 YXRpYyB2b2lkIGV4eW5vc19kc2lfZGlzYWJsZV9jbG9jayhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNp KQogewogCXUzMiByZWc7CgotCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0NMS0NU UkxfUkVHKTsKKwlyZWcgPSByZWFkbChSRUcoZHNpLCBEU0lNX0NMS0NUUkxfUkVHKSk7CiAJcmVn ICY9IH4oRFNJTV9MQU5FX0VTQ19DTEtfRU5fQ0xLIHwgRFNJTV9MQU5FX0VTQ19DTEtfRU5fREFU QV9NQVNLCiAJCQl8IERTSU1fRVNDX0NMS0VOIHwgRFNJTV9CWVRFX0NMS0VOKTsKLQl3cml0ZWwo cmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9DTEtDVFJMX1JFRyk7CisJd3JpdGVsKHJlZywgUkVH KGRzaSwgRFNJTV9DTEtDVFJMX1JFRykpOwoKLQlyZWcgPSByZWFkbChkc2ktPnJlZ19iYXNlICsg RFNJTV9QTExDVFJMX1JFRyk7CisJcmVnID0gcmVhZGwoUkVHKGRzaSwgRFNJTV9QTExDVFJMX1JF RykpOwogCXJlZyAmPSB+RFNJTV9QTExfRU47Ci0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSAr IERTSU1fUExMQ1RSTF9SRUcpOworCXdyaXRlbChyZWcsIFJFRyhkc2ksIERTSU1fUExMQ1RSTF9S RUcpKTsKIH0KCiBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5pdF9saW5rKHN0cnVjdCBleHlub3Nf ZHNpICpkc2kpCkBAIC01OTksMTUgKzc0OCwxNCBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5p dF9saW5rKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCiAJdTMyIGxhbmVzX21hc2s7CgogCS8qIElu aXRpYWxpemUgRklGTyBwb2ludGVycyAqLwotCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBE U0lNX0ZJRk9DVFJMX1JFRyk7CisJcmVnID0gcmVhZGwoUkVHKGRzaSwgRFNJTV9GSUZPQ1RSTF9S RUcpKTsKIAlyZWcgJj0gfjB4MWY7Ci0Jd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1f RklGT0NUUkxfUkVHKTsKKwl3cml0ZWwocmVnLCBSRUcoZHNpLCBEU0lNX0ZJRk9DVFJMX1JFRykp OwoKIAl1c2xlZXBfcmFuZ2UoOTAwMCwgMTEwMDApOwoKIAlyZWcgfD0gMHgxZjsKLQl3cml0ZWwo cmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9GSUZPQ1RSTF9SRUcpOwotCisJd3JpdGVsKHJlZywg UkVHKGRzaSwgRFNJTV9GSUZPQ1RSTF9SRUcpKTsKIAl1c2xlZXBfcmFuZ2UoOTAwMCwgMTEwMDAp OwoKIAkvKiBEU0kgY29uZmlndXJhdGlvbiAqLwpAQCAtNjY2LDE0ICs4MTQsMTUgQEAgc3RhdGlj IGludCBleHlub3NfZHNpX2luaXRfbGluayhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQoKIAlyZWcg fD0gRFNJTV9OVU1fT0ZfREFUQV9MQU5FKGRzaS0+bGFuZXMgLSAxKTsKCi0Jd3JpdGVsKHJlZywg ZHNpLT5yZWdfYmFzZSArIERTSU1fQ09ORklHX1JFRyk7CisJd3JpdGVsKHJlZywgUkVHKGRzaSwg RFNJTV9DT05GSUdfUkVHKSk7CgogCXJlZyB8PSBEU0lNX0xBTkVfRU5fQ0xLOwotCXdyaXRlbChy ZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0NPTkZJR19SRUcpOworCXdyaXRlbChyZWcsIFJFRyhk c2ksIERTSU1fQ09ORklHX1JFRykpOwoKIAlsYW5lc19tYXNrID0gQklUKGRzaS0+bGFuZXMpIC0g MTsKIAlyZWcgfD0gRFNJTV9MQU5FX0VOKGxhbmVzX21hc2spOwotCXdyaXRlbChyZWcsIGRzaS0+ cmVnX2Jhc2UgKyBEU0lNX0NPTkZJR19SRUcpOworCisJd3JpdGVsKHJlZywgUkVHKGRzaSwgRFNJ TV9DT05GSUdfUkVHKSk7CgogCS8qCiAJICogVXNlIG5vbi1jb250aW51b3VzIGNsb2NrIG1vZGUg aWYgdGhlIHBlcmlwYXJhbCB3YW50cyBhbmQKQEAgLTY4Niw3ICs4MzUsNyBAQCBzdGF0aWMgaW50 IGV4eW5vc19kc2lfaW5pdF9saW5rKHN0cnVjdCBleHlub3NfZHNpICpkc2kpCiAJaWYgKGRyaXZl cl9kYXRhLT5oYXNfY2xrbGFuZV9zdG9wICYmCiAJCQlkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RT SV9DTE9DS19OT05fQ09OVElOVU9VUykgewogCQlyZWcgfD0gRFNJTV9DTEtMQU5FX1NUT1A7Ci0J CXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0NPTkZJR19SRUcpOworCQl3cml0ZWwo cmVnLCBSRUcoZHNpLCBEU0lNX0NPTkZJR19SRUcpKTsKIAl9CgogCS8qIENoZWNrIGNsb2NrIGFu ZCBkYXRhIGxhbmUgc3RhdGUgYXJlIHN0b3Agc3RhdGUgKi8KQEAgLTY5NywxOSArODQ2LDE5IEBA IHN0YXRpYyBpbnQgZXh5bm9zX2RzaV9pbml0X2xpbmsoc3RydWN0IGV4eW5vc19kc2kgKmRzaSkK IAkJCXJldHVybiAtRUZBVUxUOwogCQl9CgotCQlyZWcgPSByZWFkbChkc2ktPnJlZ19iYXNlICsg RFNJTV9TVEFUVVNfUkVHKTsKKwkJcmVnID0gcmVhZGwoUkVHKGRzaSwgRFNJTV9TVEFUVVNfUkVH KSk7CiAJCWlmICgocmVnICYgRFNJTV9TVE9QX1NUQVRFX0RBVChsYW5lc19tYXNrKSkKIAkJICAg ICE9IERTSU1fU1RPUF9TVEFURV9EQVQobGFuZXNfbWFzaykpCiAJCQljb250aW51ZTsKIAl9IHdo aWxlICghKHJlZyAmIChEU0lNX1NUT1BfU1RBVEVfQ0xLIHwgRFNJTV9UWF9SRUFEWV9IU19DTEsp KSk7CgotCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0VTQ01PREVfUkVHKTsKKwly ZWcgPSByZWFkbChSRUcoZHNpLCBEU0lNX0VTQ01PREVfUkVHKSk7CiAJcmVnICY9IH5EU0lNX1NU T1BfU1RBVEVfQ05UX01BU0s7Ci0JcmVnIHw9IERTSU1fU1RPUF9TVEFURV9DTlQoMHhmKTsKLQl3 cml0ZWwocmVnLCBkc2ktPnJlZ19iYXNlICsgRFNJTV9FU0NNT0RFX1JFRyk7CisJcmVnIHw9IERT SU1fU1RPUF9TVEFURV9DTlQoZHJpdmVyX2RhdGEtPnZhbHVlc1tTVE9QX1NUQVRFX0NOVF0pOwor CXdyaXRlbChyZWcsIFJFRyhkc2ksIERTSU1fRVNDTU9ERV9SRUcpKTsKCiAJcmVnID0gRFNJTV9C VEFfVElNRU9VVCgweGZmKSB8IERTSU1fTFBEUl9USU1FT1VUKDB4ZmZmZik7Ci0Jd3JpdGVsKHJl ZywgZHNpLT5yZWdfYmFzZSArIERTSU1fVElNRU9VVF9SRUcpOworCXdyaXRlbChyZWcsIFJFRyhk c2ksIERTSU1fVElNRU9VVF9SRUcpKTsKCiAJcmV0dXJuIDA7CiB9CkBAIC03MTcsMjUgKzg2Niwy NyBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5pdF9saW5rKHN0cnVjdCBleHlub3NfZHNpICpk c2kpCiBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3NldF9kaXNwbGF5X21vZGUoc3RydWN0IGV4eW5v c19kc2kgKmRzaSkKIHsKIAlzdHJ1Y3QgdmlkZW9tb2RlICp2bSA9ICZkc2ktPnZtOworCXVuc2ln bmVkIGludCBudW1fYml0c19yZXNvbCA9IGRzaS0+ZHJpdmVyX2RhdGEtPm51bV9iaXRzX3Jlc29s OwogCXUzMiByZWc7CgogCWlmIChkc2ktPm1vZGVfZmxhZ3MgJiBNSVBJX0RTSV9NT0RFX1ZJREVP KSB7CiAJCXJlZyA9IERTSU1fQ01EX0FMTE9XKDB4ZikKIAkJCXwgRFNJTV9TVEFCTEVfVkZQKHZt LT52ZnJvbnRfcG9yY2gpCiAJCQl8IERTSU1fTUFJTl9WQlAodm0tPnZiYWNrX3BvcmNoKTsKLQkJ d3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fTVZQT1JDSF9SRUcpOworCQl3cml0ZWwo cmVnLCBSRUcoZHNpLCBEU0lNX01WUE9SQ0hfUkVHKSk7CgogCQlyZWcgPSBEU0lNX01BSU5fSEZQ KHZtLT5oZnJvbnRfcG9yY2gpCiAJCQl8IERTSU1fTUFJTl9IQlAodm0tPmhiYWNrX3BvcmNoKTsK LQkJd3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fTUhQT1JDSF9SRUcpOworCQl3cml0 ZWwocmVnLCBSRUcoZHNpLCBEU0lNX01IUE9SQ0hfUkVHKSk7CgogCQlyZWcgPSBEU0lNX01BSU5f VlNBKHZtLT52c3luY19sZW4pCiAJCQl8IERTSU1fTUFJTl9IU0Eodm0tPmhzeW5jX2xlbik7Ci0J CXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX01TWU5DX1JFRyk7CisJCXdyaXRlbChy ZWcsIFJFRyhkc2ksIERTSU1fTVNZTkNfUkVHKSk7CiAJfQorCXJlZyA9ICBEU0lNX01BSU5fSFJF U09MKHZtLT5oYWN0aXZlLCBudW1fYml0c19yZXNvbCkgfAorCQlEU0lNX01BSU5fVlJFU09MKHZt LT52YWN0aXZlLCBudW1fYml0c19yZXNvbCk7CgotCXJlZyA9IERTSU1fTUFJTl9IUkVTT0wodm0t PmhhY3RpdmUpIHwgRFNJTV9NQUlOX1ZSRVNPTCh2bS0+dmFjdGl2ZSk7Ci0Jd3JpdGVsKHJlZywg ZHNpLT5yZWdfYmFzZSArIERTSU1fTURSRVNPTF9SRUcpOworCXdyaXRlbChyZWcsIFJFRyhkc2ks IERTSU1fTURSRVNPTF9SRUcpKTsKCiAJZGV2X2RiZyhkc2ktPmRldiwgIkxDRCBzaXplID0gJWR4 JWRcbiIsIHZtLT5oYWN0aXZlLCB2bS0+dmFjdGl2ZSk7CiB9CkBAIC03NDQsMTIgKzg5NSwxMiBA QCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3NldF9kaXNwbGF5X2VuYWJsZShzdHJ1Y3QgZXh5bm9z X2RzaSAqZHNpLCBib29sIGVuYWJsZSkKIHsKIAl1MzIgcmVnOwoKLQlyZWcgPSByZWFkbChkc2kt PnJlZ19iYXNlICsgRFNJTV9NRFJFU09MX1JFRyk7CisJcmVnID0gcmVhZGwoUkVHKGRzaSwgRFNJ TV9NRFJFU09MX1JFRykpOwogCWlmIChlbmFibGUpCiAJCXJlZyB8PSBEU0lNX01BSU5fU1RBTkRf Qlk7CiAJZWxzZQogCQlyZWcgJj0gfkRTSU1fTUFJTl9TVEFORF9CWTsKLQl3cml0ZWwocmVnLCBk c2ktPnJlZ19iYXNlICsgRFNJTV9NRFJFU09MX1JFRyk7CisJd3JpdGVsKHJlZywgUkVHKGRzaSwg RFNJTV9NRFJFU09MX1JFRykpOwogfQoKIHN0YXRpYyBpbnQgZXh5bm9zX2RzaV93YWl0X2Zvcl9o ZHJfZmlmbyhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQpAQCAtNzU3LDcgKzkwOCw3IEBAIHN0YXRp YyBpbnQgZXh5bm9zX2RzaV93YWl0X2Zvcl9oZHJfZmlmbyhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNp KQogCWludCB0aW1lb3V0ID0gMjAwMDsKCiAJZG8gewotCQl1MzIgcmVnID0gcmVhZGwoZHNpLT5y ZWdfYmFzZSArIERTSU1fRklGT0NUUkxfUkVHKTsKKwkJdTMyIHJlZyA9IHJlYWRsKFJFRyhkc2ks IERTSU1fRklGT0NUUkxfUkVHKSk7CgogCQlpZiAoIShyZWcgJiBEU0lNX1NGUl9IRUFERVJfRlVM TCkpCiAJCQlyZXR1cm4gMDsKQEAgLTc3MSwyMiArOTIyLDIyIEBAIHN0YXRpYyBpbnQgZXh5bm9z X2RzaV93YWl0X2Zvcl9oZHJfZmlmbyhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQoKIHN0YXRpYyB2 b2lkIGV4eW5vc19kc2lfc2V0X2NtZF9scG0oc3RydWN0IGV4eW5vc19kc2kgKmRzaSwgYm9vbCBs cG0pCiB7Ci0JdTMyIHYgPSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9FU0NNT0RFX1JFRyk7 CisJdTMyIHYgPSByZWFkbChSRUcoZHNpLCBEU0lNX0VTQ01PREVfUkVHKSk7CgogCWlmIChscG0p CiAJCXYgfD0gRFNJTV9DTURfTFBEVF9MUDsKIAllbHNlCiAJCXYgJj0gfkRTSU1fQ01EX0xQRFRf TFA7CgotCXdyaXRlbCh2LCBkc2ktPnJlZ19iYXNlICsgRFNJTV9FU0NNT0RFX1JFRyk7CisJd3Jp dGVsKHYsIFJFRyhkc2ksIERTSU1fRVNDTU9ERV9SRUcpKTsKIH0KCiBzdGF0aWMgdm9pZCBleHlu b3NfZHNpX2ZvcmNlX2J0YShzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQogewotCXUzMiB2ID0gcmVh ZGwoZHNpLT5yZWdfYmFzZSArIERTSU1fRVNDTU9ERV9SRUcpOworCXUzMiB2ID0gcmVhZGwoUkVH KGRzaSwgRFNJTV9FU0NNT0RFX1JFRykpOwoKIAl2IHw9IERTSU1fRk9SQ0VfQlRBOwotCXdyaXRl bCh2LCBkc2ktPnJlZ19iYXNlICsgRFNJTV9FU0NNT0RFX1JFRyk7CisJd3JpdGVsKHYsIFJFRyhk c2ksIERTSU1fRVNDTU9ERV9SRUcpKTsKIH0KCiBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3NlbmRf dG9fZmlmbyhzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpLApAQCAtODEwLDcgKzk2MSw3IEBAIHN0YXRp YyB2b2lkIGV4eW5vc19kc2lfc2VuZF90b19maWZvKHN0cnVjdCBleHlub3NfZHNpICpkc2ksCiAJ d2hpbGUgKGxlbmd0aCA+PSA0KSB7CiAJCXJlZyA9IChwYXlsb2FkWzNdIDw8IDI0KSB8IChwYXls b2FkWzJdIDw8IDE2KQogCQkJCQl8IChwYXlsb2FkWzFdIDw8IDgpIHwgcGF5bG9hZFswXTsKLQkJ d3JpdGVsKHJlZywgZHNpLT5yZWdfYmFzZSArIERTSU1fUEFZTE9BRF9SRUcpOworCQl3cml0ZWwo cmVnLCBSRUcoZHNpLCBEU0lNX1BBWUxPQURfUkVHKSk7CiAJCXBheWxvYWQgKz0gNDsKIAkJbGVu Z3RoIC09IDQ7CiAJfQpAQCAtODI1LDcgKzk3Niw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lf c2VuZF90b19maWZvKHN0cnVjdCBleHlub3NfZHNpICpkc2ksCiAJCS8qIEZhbGwgdGhyb3VnaCAq LwogCWNhc2UgMToKIAkJcmVnIHw9IHBheWxvYWRbMF07Ci0JCXdyaXRlbChyZWcsIGRzaS0+cmVn X2Jhc2UgKyBEU0lNX1BBWUxPQURfUkVHKTsKKwkJd3JpdGVsKHJlZywgUkVHKGRzaSwgRFNJTV9Q QVlMT0FEX1JFRykpOwogCQlicmVhazsKIAljYXNlIDA6CiAJCS8qIERvIG5vdGhpbmcgKi8KQEAg LTg0OCw3ICs5OTksNyBAQCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3NlbmRfdG9fZmlmbyhzdHJ1 Y3QgZXh5bm9zX2RzaSAqZHNpLAogCQlkc2ktPnN0YXRlIF49IERTSU1fU1RBVEVfQ01EX0xQTTsK IAl9CgotCXdyaXRlbChyZWcsIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1BLVEhEUl9SRUcpOworCXdy aXRlbChyZWcsIFJFRyhkc2ksIERTSU1fUEtUSERSX1JFRykpOwoKIAlpZiAoeGZlci0+ZmxhZ3Mg JiBNSVBJX0RTSV9NU0dfUkVRX0FDSykKIAkJZXh5bm9zX2RzaV9mb3JjZV9idGEoZHNpKTsKQEAg LTg2NCw3ICsxMDE1LDcgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9yZWFkX2Zyb21fZmlmbyhz dHJ1Y3QgZXh5bm9zX2RzaSAqZHNpLAogCXUzMiByZWc7CgogCWlmIChmaXJzdCkgewotCQlyZWcg PSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9SWEZJRk9fUkVHKTsKKwkJcmVnID0gcmVhZGwo UkVHKGRzaSwgRFNJTV9SWEZJRk9fUkVHKSk7CgogCQlzd2l0Y2ggKHJlZyAmIDB4M2YpIHsKIAkJ Y2FzZSBNSVBJX0RTSV9SWF9HRU5FUklDX1NIT1JUX1JFQURfUkVTUE9OU0VfMkJZVEU6CkBAIC05 MDMsNyArMTA1NCw3IEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfcmVhZF9mcm9tX2ZpZm8oc3Ry dWN0IGV4eW5vc19kc2kgKmRzaSwKCiAJLyogUmVjZWl2ZSBwYXlsb2FkICovCiAJd2hpbGUgKGxl bmd0aCA+PSA0KSB7Ci0JCXJlZyA9IHJlYWRsKGRzaS0+cmVnX2Jhc2UgKyBEU0lNX1JYRklGT19S RUcpOworCQlyZWcgPSByZWFkbChSRUcoZHNpLCBEU0lNX1JYRklGT19SRUcpKTsKIAkJcGF5bG9h ZFswXSA9IChyZWcgPj4gIDApICYgMHhmZjsKIAkJcGF5bG9hZFsxXSA9IChyZWcgPj4gIDgpICYg MHhmZjsKIAkJcGF5bG9hZFsyXSA9IChyZWcgPj4gMTYpICYgMHhmZjsKQEAgLTkxMyw3ICsxMDY0 LDcgQEAgc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9yZWFkX2Zyb21fZmlmbyhzdHJ1Y3QgZXh5bm9z X2RzaSAqZHNpLAogCX0KCiAJaWYgKGxlbmd0aCkgewotCQlyZWcgPSByZWFkbChkc2ktPnJlZ19i YXNlICsgRFNJTV9SWEZJRk9fUkVHKTsKKwkJcmVnID0gcmVhZGwoUkVHKGRzaSwgRFNJTV9SWEZJ Rk9fUkVHKSk7CiAJCXN3aXRjaCAobGVuZ3RoKSB7CiAJCWNhc2UgMzoKIAkJCXBheWxvYWRbMl0g PSAocmVnID4+IDE2KSAmIDB4ZmY7CkBAIC05MzIsNyArMTA4Myw3IEBAIHN0YXRpYyB2b2lkIGV4 eW5vc19kc2lfcmVhZF9mcm9tX2ZpZm8oc3RydWN0IGV4eW5vc19kc2kgKmRzaSwKIGNsZWFyX2Zp Zm86CiAJbGVuZ3RoID0gRFNJX1JYX0ZJRk9fU0laRSAvIDQ7CiAJZG8gewotCQlyZWcgPSByZWFk bChkc2ktPnJlZ19iYXNlICsgRFNJTV9SWEZJRk9fUkVHKTsKKwkJcmVnID0gcmVhZGwoUkVHKGRz aSwgRFNJTV9SWEZJRk9fUkVHKSk7CiAJCWlmIChyZWcgPT0gRFNJX1JYX0ZJRk9fRU1QVFkpCiAJ CQlicmVhazsKIAl9IHdoaWxlICgtLWxlbmd0aCk7CkBAIC0xMDg4LDIzICsxMjM5LDI3IEBAIHN0 YXRpYyBpcnFyZXR1cm5fdCBleHlub3NfZHNpX2lycShpbnQgaXJxLCB2b2lkICpkZXZfaWQpCiAJ c3RydWN0IGV4eW5vc19kc2kgKmRzaSA9IGRldl9pZDsKIAl1MzIgc3RhdHVzOwoKLQlzdGF0dXMg PSByZWFkbChkc2ktPnJlZ19iYXNlICsgRFNJTV9JTlRTUkNfUkVHKTsKKwlzdGF0dXMgPSByZWFk bChSRUcoZHNpLCBEU0lNX0lOVFNSQ19SRUcpKTsKIAlpZiAoIXN0YXR1cykgewogCQlzdGF0aWMg dW5zaWduZWQgbG9uZyBpbnQgajsKIAkJaWYgKHByaW50a190aW1lZF9yYXRlbGltaXQoJmosIDUw MCkpCiAJCQlkZXZfd2Fybihkc2ktPmRldiwgInNwdXJpb3VzIGludGVycnVwdFxuIik7CiAJCXJl dHVybiBJUlFfSEFORExFRDsKIAl9Ci0Jd3JpdGVsKHN0YXR1cywgZHNpLT5yZWdfYmFzZSArIERT SU1fSU5UU1JDX1JFRyk7CisJd3JpdGVsKHN0YXR1cywgUkVHKGRzaSwgRFNJTV9JTlRTUkNfUkVH KSk7CgogCWlmIChzdGF0dXMgJiBEU0lNX0lOVF9TV19SU1RfUkVMRUFTRSkgewotCQl1MzIgbWFz ayA9IH4oRFNJTV9JTlRfUlhfRE9ORSB8IERTSU1fSU5UX1NGUl9GSUZPX0VNUFRZKTsKLQkJd3Jp dGVsKG1hc2ssIGRzaS0+cmVnX2Jhc2UgKyBEU0lNX0lOVE1TS19SRUcpOworCQl1MzIgbWFzayA9 IH4oRFNJTV9JTlRfUlhfRE9ORSB8IERTSU1fSU5UX1NGUl9GSUZPX0VNUFRZIHwKKwkJCURTSU1f SU5UX1NGUl9IRFJfRklGT19FTVBUWSB8IERTSU1fSU5UX0ZSQU1FX0RPTkUgfAorCQkJRFNJTV9J TlRfUlhfRUNDX0VSUiB8IERTSU1fSU5UX1NXX1JTVF9SRUxFQVNFKTsKKworCQl3cml0ZWwobWFz aywgUkVHKGRzaSwgRFNJTV9JTlRNU0tfUkVHKSk7CiAJCWNvbXBsZXRlKCZkc2ktPmNvbXBsZXRl ZCk7CiAJCXJldHVybiBJUlFfSEFORExFRDsKIAl9CgotCWlmICghKHN0YXR1cyAmIChEU0lNX0lO VF9SWF9ET05FIHwgRFNJTV9JTlRfU0ZSX0ZJRk9fRU1QVFkpKSkKKwlpZiAoIShzdGF0dXMgJiAo RFNJTV9JTlRfUlhfRE9ORSB8IERTSU1fSU5UX1NGUl9GSUZPX0VNUFRZIHwKKwkJCURTSU1fSU5U X0ZSQU1FX0RPTkUgfCBEU0lNX0lOVF9QTExfU1RBQkxFKSkpCiAJCXJldHVybiBJUlFfSEFORExF RDsKCiAJaWYgKGV4eW5vc19kc2lfdHJhbnNmZXJfZmluaXNoKGRzaSkpCkBAIC0xMTQyLDEwICsx Mjk3LDEzIEBAIHN0YXRpYyB2b2lkIGV4eW5vc19kc2lfZGlzYWJsZV9pcnEoc3RydWN0IGV4eW5v c19kc2kgKmRzaSkKCiBzdGF0aWMgaW50IGV4eW5vc19kc2lfaW5pdChzdHJ1Y3QgZXh5bm9zX2Rz aSAqZHNpKQogeworCXN0cnVjdCBleHlub3NfZHNpX2RyaXZlcl9kYXRhICpkcml2ZXJfZGF0YSA9 IGRzaS0+ZHJpdmVyX2RhdGE7CisKIAlleHlub3NfZHNpX3Jlc2V0KGRzaSk7CiAJZXh5bm9zX2Rz aV9lbmFibGVfaXJxKGRzaSk7CiAJZXh5bm9zX2RzaV9lbmFibGVfY2xvY2soZHNpKTsKLQlleHlu b3NfZHNpX3dhaXRfZm9yX3Jlc2V0KGRzaSk7CisJaWYgKGRyaXZlcl9kYXRhLT53YWl0X2Zvcl9y ZXNldCkKKwkJZXh5bm9zX2RzaV93YWl0X2Zvcl9yZXNldChkc2kpOwogCWV4eW5vc19kc2lfc2V0 X3BoeV9jdHJsKGRzaSk7CiAJZXh5bm9zX2RzaV9pbml0X2xpbmsoZHNpKTsKCkBAIC0xMjk0LDcg KzE0NTIsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3BzIGV4eW5vc19k c2lfb3BzID0gewoKIHN0YXRpYyBpbnQgZXh5bm9zX2RzaV9wb3dlcm9uKHN0cnVjdCBleHlub3Nf ZHNpICpkc2kpCiB7Ci0JaW50IHJldDsKKwlzdHJ1Y3QgZXh5bm9zX2RzaV9kcml2ZXJfZGF0YSAq ZHJpdmVyX2RhdGEgPSBkc2ktPmRyaXZlcl9kYXRhOworCWludCByZXQsIGk7CgogCXJldCA9IHJl Z3VsYXRvcl9idWxrX2VuYWJsZShBUlJBWV9TSVpFKGRzaS0+c3VwcGxpZXMpLCBkc2ktPnN1cHBs aWVzKTsKIAlpZiAocmV0IDwgMCkgewpAQCAtMTMwMiwzMSArMTQ2MSwyNCBAQCBzdGF0aWMgaW50 IGV4eW5vc19kc2lfcG93ZXJvbihzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQogCQlyZXR1cm4gcmV0 OwogCX0KCi0JcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+YnVzX2Nsayk7Ci0JaWYgKHJl dCA8IDApIHsKLQkJZGV2X2Vycihkc2ktPmRldiwgImNhbm5vdCBlbmFibGUgYnVzIGNsb2NrICVk XG4iLCByZXQpOwotCQlnb3RvIGVycl9idXNfY2xrOwotCX0KLQotCXJldCA9IGNsa19wcmVwYXJl X2VuYWJsZShkc2ktPnBsbF9jbGspOwotCWlmIChyZXQgPCAwKSB7Ci0JCWRldl9lcnIoZHNpLT5k ZXYsICJjYW5ub3QgZW5hYmxlIHBsbCBjbG9jayAlZFxuIiwgcmV0KTsKLQkJZ290byBlcnJfcGxs X2NsazsKKwlmb3IgKGkgPSAwOyBpIDwgZHJpdmVyX2RhdGEtPm51bV9jbGtzOyBpKyspIHsKKwkJ cmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGRzaS0+Y2xrc1tpXSk7CisJCWlmIChyZXQgPCAwKQor CQkJZ290byBlcnJfY2xrOwogCX0KCiAJcmV0ID0gcGh5X3Bvd2VyX29uKGRzaS0+cGh5KTsKIAlp ZiAocmV0IDwgMCkgewogCQlkZXZfZXJyKGRzaS0+ZGV2LCAiY2Fubm90IGVuYWJsZSBwaHkgJWRc biIsIHJldCk7Ci0JCWdvdG8gZXJyX3BoeTsKKwkJZ290byBlcnJfY2xrOwogCX0KCiAJcmV0dXJu IDA7CgotZXJyX3BoeToKLQljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5wbGxfY2xrKTsKLWVy cl9wbGxfY2xrOgotCWNsa19kaXNhYmxlX3VucHJlcGFyZShkc2ktPmJ1c19jbGspOwotZXJyX2J1 c19jbGs6CitlcnJfY2xrOgorCXdoaWxlICgtLWkgPiAtMSkKKwkJY2xrX2Rpc2FibGVfdW5wcmVw YXJlKGRzaS0+Y2xrc1tpXSk7CisKIAlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKEFSUkFZX1NJWkUo ZHNpLT5zdXBwbGllcyksIGRzaS0+c3VwcGxpZXMpOwoKIAlyZXR1cm4gcmV0OwpAQCAtMTMzNCw3 ICsxNDg2LDggQEAgZXJyX2J1c19jbGs6Cgogc3RhdGljIHZvaWQgZXh5bm9zX2RzaV9wb3dlcm9m ZihzdHJ1Y3QgZXh5bm9zX2RzaSAqZHNpKQogewotCWludCByZXQ7CisJc3RydWN0IGV4eW5vc19k c2lfZHJpdmVyX2RhdGEgKmRyaXZlcl9kYXRhID0gZHNpLT5kcml2ZXJfZGF0YTsKKwlpbnQgcmV0 LCBpOwoKIAl1c2xlZXBfcmFuZ2UoMTAwMDAsIDIwMDAwKTsKCkBAIC0xMzUwLDggKzE1MDMsOCBA QCBzdGF0aWMgdm9pZCBleHlub3NfZHNpX3Bvd2Vyb2ZmKHN0cnVjdCBleHlub3NfZHNpICpkc2kp CgogCXBoeV9wb3dlcl9vZmYoZHNpLT5waHkpOwoKLQljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNp LT5wbGxfY2xrKTsKLQljbGtfZGlzYWJsZV91bnByZXBhcmUoZHNpLT5idXNfY2xrKTsKKwlmb3Ig KGkgPSBkcml2ZXJfZGF0YS0+bnVtX2Nsa3MgLSAxOyBpID4gLTE7IGktLSkKKwkJY2xrX2Rpc2Fi bGVfdW5wcmVwYXJlKGRzaS0+Y2xrc1tpXSk7CgogCXJldCA9IHJlZ3VsYXRvcl9idWxrX2Rpc2Fi bGUoQVJSQVlfU0laRShkc2ktPnN1cHBsaWVzKSwgZHNpLT5zdXBwbGllcyk7CiAJaWYgKHJldCA8 IDApCkBAIC0xNjgwLDcgKzE4MzMsNyBAQCBzdGF0aWMgaW50IGV4eW5vc19kc2lfcHJvYmUoc3Ry dWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2OwogCXN0cnVjdCByZXNvdXJjZSAqcmVzOwogCXN0cnVjdCBleHlub3NfZHNpICpkc2k7Ci0J aW50IHJldDsKKwlpbnQgcmV0LCBpOwoKIAlkc2kgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2Yo KmRzaSksIEdGUF9LRVJORUwpOwogCWlmICghZHNpKQpAQCAtMTcyMCwxOCArMTg3MywxNiBAQCBz dGF0aWMgaW50IGV4eW5vc19kc2lfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikK IAkJcmV0dXJuIC1FUFJPQkVfREVGRVI7CiAJfQoKLQlkc2ktPnBsbF9jbGsgPSBkZXZtX2Nsa19n ZXQoZGV2LCAicGxsX2NsayIpOwotCWlmIChJU19FUlIoZHNpLT5wbGxfY2xrKSkgewotCQlkZXZf aW5mbyhkZXYsICJmYWlsZWQgdG8gZ2V0IGRzaSBwbGwgaW5wdXQgY2xvY2tcbiIpOwotCQlyZXQg PSBQVFJfRVJSKGRzaS0+cGxsX2Nsayk7Ci0JCWdvdG8gZXJyX2RlbF9jb21wb25lbnQ7Ci0JfQot Ci0JZHNpLT5idXNfY2xrID0gZGV2bV9jbGtfZ2V0KGRldiwgImJ1c19jbGsiKTsKLQlpZiAoSVNf RVJSKGRzaS0+YnVzX2NsaykpIHsKLQkJZGV2X2luZm8oZGV2LCAiZmFpbGVkIHRvIGdldCBkc2kg YnVzIGNsb2NrXG4iKTsKLQkJcmV0ID0gUFRSX0VSUihkc2ktPmJ1c19jbGspOwotCQlnb3RvIGVy cl9kZWxfY29tcG9uZW50OworCWRzaS0+Y2xrcyA9IGRldm1fa3phbGxvYyhkZXYsCisJCQkJc2l6 ZW9mKCpkc2ktPmNsa3MpICogZHNpLT5kcml2ZXJfZGF0YS0+bnVtX2Nsa3MsCisJCQkJR0ZQX0tF Uk5FTCk7CisJZm9yIChpID0gMDsgaSA8IGRzaS0+ZHJpdmVyX2RhdGEtPm51bV9jbGtzOyBpKysp IHsKKwkJZHNpLT5jbGtzW2ldID0gZGV2bV9jbGtfZ2V0KGRldiwgY2xrX25hbWVzW2ldKTsKKwkJ aWYgKElTX0VSUihkc2ktPmNsa3NbaV0pKSB7CisJCQlkZXZfaW5mbyhkZXYsICJmYWlsZWQgdG8g Z2V0IGRzaSBwbGwgaW5wdXQgY2xvY2tcbiIpOworCQkJcmV0ID0gUFRSX0VSUihkc2ktPmNsa3Nb aV0pOworCQkJZ290byBlcnJfZGVsX2NvbXBvbmVudDsKKwkJfQogCX0KCiAJcmVzID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsKLS0KMS45LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==