From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hai Li Subject: [PATCH 3/3] drm/msm/dsi: Separate PHY to another platform device Date: Fri, 15 May 2015 13:04:06 -0400 Message-ID: <1431709446-31429-4-git-send-email-hali@codeaurora.org> References: <1431709446-31429-1-git-send-email-hali@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1431709446-31429-1-git-send-email-hali@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 VGhlcmUgYXJlIGRpZmZlcmVudCB0eXBlcyBvZiBQSFkgZnJvbSBvbmUgY2hpcHNldCB0byBhbm90 aGVyLCB3aGlsZQp0aGUgRFNJIGhvc3QgY29udHJvbGxlciBpcyByZWxhdGl2ZWx5IGNvbnNpc3Rl bnQgYWNyb3NzIHBsYXRmb3Jtcy4KQWxzbywgdGhlIFBMTCBpbnNpZGUgUEhZIGlzIHByb3ZpZGlu ZyB0aGUgc291cmNlIG9mIERTSSBieXRlIGFuZApwaXhlbCBjbG9ja3MsIHdoaWNoIGFyZSB1c2Vk IGJ5IERTSSBob3N0IGNvbnRyb2xsZXIuIFNlcGFyYXRlZCBkZXZpY2VzCmZvciBjbG9jayBwcm92 aWRlciBhbmQgY2xvY2sgY29uc3VtZXIgbWFrZSBEU0kgZHJpdmVyIGJldHRlciBmaXQgaW50bwpj b21tb24gY2xvY2sgZnJhbWV3b3JrLgoKU2lnbmVkLW9mZi1ieTogSGFpIExpIDxoYWxpQGNvZGVh dXJvcmEub3JnPgotLS0KIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kcm0vbXNt L2RzaS50eHQgfCAgNTkgKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5jICAgICAg ICAgICAgICAgICAgICAgfCAgNDUgKysrLQogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgg ICAgICAgICAgICAgICAgICAgICB8ICAyNSArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNp X2hvc3QuYyAgICAgICAgICAgICAgICB8ICAyNSArLQogZHJpdmVycy9ncHUvZHJtL21zbS9kc2kv ZHNpX3BoeS5jICAgICAgICAgICAgICAgICB8IDI2NiArKysrKysrKysrKysrKysrKystLS0tCiA1 IGZpbGVzIGNoYW5nZWQsIDMyNSBpbnNlcnRpb25zKCspLCA5NSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZHJtL21zbS9kc2kudHh0 IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RybS9tc20vZHNpLnR4dAppbmRl eCBiM2NmMzI1Li4yYjE3MjgxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUv YmluZGluZ3MvZHJtL21zbS9kc2kudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9i aW5kaW5ncy9kcm0vbXNtL2RzaS50eHQKQEAgLTEsMTUgKzEsMTIgQEAKIFF1YWxjb21tIFRlY2hu b2xvZ2llcyBJbmMuIGFkcmVuby9zbmFwZHJhZ29uIERTSSBvdXRwdXQKIAorRFNJIENvbnRyb2xs ZXI6CiBSZXF1aXJlZCBwcm9wZXJ0aWVzOgogLSBjb21wYXRpYmxlOgogICAqICJxY29tLG1kc3Mt ZHNpLWN0cmwiCi0tIHJlZzogUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhl IHJlZ2lzdGVycyBvZiBjb250cm9sbGVyLCBQTEwsCi0gIFBIWSBhbmQgUEhZIHJlZ3VsYXRvcgor LSByZWc6IFBoeXNpY2FsIGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoIG9mIHRoZSByZWdpc3RlcnMg b2YgY29udHJvbGxlcgogLSByZWctbmFtZXM6IFRoZSBuYW1lcyBvZiByZWdpc3RlciByZWdpb25z LiBUaGUgZm9sbG93aW5nIHJlZ2lvbnMgYXJlIHJlcXVpcmVkOgogICAqICJkc2lfY3RybCIKLSAg KiAiZHNpX3BsbCIKLSAgKiAiZHNpX3BoeSIKLSAgKiAiZHNpX3BoeV9yZWd1bGF0b3IiCiAtIHFj b20sZHNpLWhvc3QtaW5kZXg6IFRoZSBJRCBvZiBEU0kgY29udHJvbGxlciBoYXJkd2FyZSBpbnN0 YW5jZS4gVGhpcyBzaG91bGQKICAgYmUgMCBvciAxLCBzaW5jZSB3ZSBoYXZlIDIgRFNJIGNvbnRy b2xsZXJzIGF0IG1vc3QgZm9yIG5vdy4KIC0gaW50ZXJydXB0czogVGhlIGludGVycnVwdCBzaWdu YWwgZnJvbSB0aGUgRFNJIGJsb2NrLgpAQCAtMjQsMTAgKzIxLDEwIEBAIFJlcXVpcmVkIHByb3Bl cnRpZXM6CiAgICogImlmYWNlX2NsayIKICAgKiAibWRwX2NvcmVfY2xrIgogICAqICJwaXhlbF9j bGsiCi0tICNjbG9jay1jZWxsczogVGhlIHZhbHVlIHNob3VsZCBiZSAxLgogLSB2ZGQtc3VwcGx5 OiBwaGFuZGxlIHRvIHZkZCByZWd1bGF0b3IgZGV2aWNlIG5vZGUKIC0gdmRkaW8tc3VwcGx5OiBw aGFuZGxlIHRvIHZkZC1pbyByZWd1bGF0b3IgZGV2aWNlIG5vZGUKIC0gdmRkYS1zdXBwbHk6IHBo YW5kbGUgdG8gdmRkYSByZWd1bGF0b3IgZGV2aWNlIG5vZGUKKy0gcWNvbSxkc2ktcGh5OiBwaGFu ZGxlIHRvIERTSSBQSFkgZGV2aWNlIG5vZGUKIAogT3B0aW9uYWwgcHJvcGVydGllczoKIC0gcGFu ZWxAMDogTm9kZSBvZiBwYW5lbCBjb25uZWN0ZWQgdG8gdGhpcyBEU0kgY29udHJvbGxlci4KQEAg LTQyLDIyICszOSwzNCBAQCBPcHRpb25hbCBwcm9wZXJ0aWVzOgogLSBpbnRlcnJ1cHQtcGFyZW50 OiBwaGFuZGxlIHRvIHRoZSBNRFAgYmxvY2sgaWYgdGhlIGludGVycnVwdCBzaWduYWwgaXMgcm91 dGVkCiAgIHRocm91Z2ggTURQIGJsb2NrCiAKK0RTSSBQSFk6CitSZXF1aXJlZCBwcm9wZXJ0aWVz OgorLSBjb21wYXRpYmxlOiBDb3VsZCBiZSB0aGUgZm9sbG93aW5nCisgICogInFjb20sZHNpLXBo eS0yOG5tLWhwbSIKKyAgKiAicWNvbSxkc2ktcGh5LTI4bm0tbHAiCistIHJlZzogUGh5c2ljYWwg YmFzZSBhZGRyZXNzIGFuZCBsZW5ndGggb2YgdGhlIHJlZ2lzdGVycyBvZiBQTEwsIFBIWSBhbmQg UEhZCisgIHJlZ3VsYXRvcgorLSByZWctbmFtZXM6IFRoZSBuYW1lcyBvZiByZWdpc3RlciByZWdp b25zLiBUaGUgZm9sbG93aW5nIHJlZ2lvbnMgYXJlIHJlcXVpcmVkOgorICAqICJkc2lfcGxsIgor ICAqICJkc2lfcGh5IgorICAqICJkc2lfcGh5X3JlZ3VsYXRvciIKKy0gcWNvbSxkc2ktcGh5LWlu ZGV4OiBUaGUgSUQgb2YgRFNJIFBIWSBoYXJkd2FyZSBpbnN0YW5jZS4gVGhpcyBzaG91bGQKKyAg YmUgMCBvciAxLCBzaW5jZSB3ZSBoYXZlIDIgRFNJIFBIWXMgYXQgbW9zdCBmb3Igbm93LgorLSBw b3dlci1kb21haW5zOiBTaG91bGQgYmUgPCZtbWNjIE1EU1NfR0RTQz4uCistIGNsb2NrczogZGV2 aWNlIGNsb2NrcworICBTZWUgRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Nsb2Nr cy9jbG9jay1iaW5kaW5ncy50eHQgZm9yIGRldGFpbHMuCistIGNsb2NrLW5hbWVzOiB0aGUgZm9s bG93aW5nIGNsb2NrcyBhcmUgcmVxdWlyZWQ6CisgICogImlmYWNlX2NsayIKKy0gdmRkaW8tc3Vw cGx5OiBwaGFuZGxlIHRvIHZkZC1pbyByZWd1bGF0b3IgZGV2aWNlIG5vZGUKKwogRXhhbXBsZToK IAltZHNzX2RzaTA6IHFjb20sbWRzc19kc2lAZmQ5MjI4MDAgewogCQljb21wYXRpYmxlID0gInFj b20sbWRzcy1kc2ktY3RybCI7CiAJCXFjb20sZHNpLWhvc3QtaW5kZXggPSA8MD47CiAJCWludGVy cnVwdC1wYXJlbnQgPSA8Jm1kc3NfbWRwPjsKIAkJaW50ZXJydXB0cyA9IDw0IDA+OwotCQlyZWct bmFtZXMgPQotCQkJImRzaV9jdHJsIiwKLQkJCSJkc2lfcGxsIiwKLQkJCSJkc2lfcGh5IiwKLQkJ CSJkc2lfcGh5X3JlZ3VsYXRvciIsCi0JCXJlZyA9CTwweGZkOTIyODAwIDB4MjAwPiwKLQkJCTww eGZkOTIyYTAwIDB4ZDQ+LAotCQkJPDB4ZmQ5MjJiMDAgMHgyYjA+LAotCQkJPDB4ZmQ5MjJkODAg MHg3Yj4sCi0JCQk8MHhmZDgyODAwMCAweDEwOD47CisJCXJlZy1uYW1lcyA9ICJkc2lfY3RybCI7 CisJCXJlZyA9IDwweGZkOTIyODAwIDB4MjAwPjsKIAkJcG93ZXItZG9tYWlucyA9IDwmbW1jYyBN RFNTX0dEU0M+OwogCQljbG9jay1uYW1lcyA9CiAJCQkiYnVzX2NsayIsCkBAIC03NSwxMSArODQs MTIgQEAgRXhhbXBsZToKIAkJCTwmbW1jYyBNRFNTX0FIQl9DTEs+LAogCQkJPCZtbWNjIE1EU1Nf TURQX0NMSz4sCiAJCQk8Jm1tY2MgTURTU19QQ0xLMF9DTEs+OwotCQkjY2xvY2stY2VsbHMgPSA8 MT47CiAJCXZkZGEtc3VwcGx5ID0gPCZwbWE4MDg0X2wyPjsKIAkJdmRkLXN1cHBseSA9IDwmcG1h ODA4NF9sMjI+OwogCQl2ZGRpby1zdXBwbHkgPSA8JnBtYTgwODRfbDEyPjsKIAorCQlxY29tLGRz aS1waHkgPSA8Jm1kc3NfZHNpX3BoeTA+OworCiAJCXFjb20sZHVhbC1wYW5lbC1tb2RlOwogCQlx Y29tLG1hc3Rlci1wYW5lbDsKIAkJcWNvbSxzeW5jLWR1YWwtcGFuZWw7CkBAIC05NCw0ICsxMDQs MTcgQEAgRXhhbXBsZToKIAkJfTsKIAl9OwogCi0KKwltZHNzX2RzaV9waHkwOiBxY29tLG1kc3Nf ZHNpX3BoeUBmZDkyMmEwMCB7CisJCWNvbXBhdGlibGUgPSAicWNvbSxkc2ktcGh5LTI4bm0taHBt IjsKKwkJcWNvbSxkc2ktcGh5LWluZGV4ID0gPDA+OworCQlyZWctbmFtZXMgPQorCQkJImRzaV9w bGwiLAorCQkJImRzaV9waHkiLAorCQkJImRzaV9waHlfcmVndWxhdG9yIjsKKwkJcmVnID0gICA8 MHhmZDkyMmEwMCAweGQ0PiwKKwkJCTwweGZkOTIyYjAwIDB4MmIwPiwKKwkJCTwweGZkOTIyZDgw IDB4N2I+OworCQljbG9jay1uYW1lcyA9ICJpZmFjZV9jbGsiOworCQljbG9ja3MgPSA8Jm1tY2Mg TURTU19BSEJfQ0xLPjsKKwkJdmRkaW8tc3VwcGx5ID0gPCZwbWE4MDg0X2wxMj47CisJfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2RzaS9kc2kuYwppbmRleCBiZWIyNmRmLi4xZjI1NjFlIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2RzaS9kc2kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2RzaS9kc2ku YwpAQCAtMjMsNiArMjMsMzQgQEAgc3RydWN0IGRybV9lbmNvZGVyICptc21fZHNpX2dldF9lbmNv ZGVyKHN0cnVjdCBtc21fZHNpICptc21fZHNpKQogCQltc21fZHNpLT5lbmNvZGVyc1tNU01fRFNJ X0NNRF9FTkNPREVSX0lEXTsKIH0KIAorc3RhdGljIGludCBkc2lfZ2V0X3BoeShzdHJ1Y3QgbXNt X2RzaSAqbXNtX2RzaSkKK3sKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gbXNtX2Rz aS0+cGRldjsKKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwaHlfcGRldjsKKwlzdHJ1Y3QgZGV2 aWNlX25vZGUgKnBoeV9ub2RlOworCisJcGh5X25vZGUgPSBvZl9wYXJzZV9waGFuZGxlKHBkZXYt PmRldi5vZl9ub2RlLCAicWNvbSxkc2ktcGh5IiwgMCk7CisJaWYgKCFwaHlfbm9kZSkgeworCQlk ZXZfZXJyKCZwZGV2LT5kZXYsICJjYW5ub3QgZmluZCBwaHkgZGV2aWNlXG4iKTsKKwkJcmV0dXJu IC1FTlhJTzsKKwl9CisKKwlwaHlfcGRldiA9IG9mX2ZpbmRfZGV2aWNlX2J5X25vZGUocGh5X25v ZGUpOworCWlmIChwaHlfcGRldikKKwkJbXNtX2RzaS0+cGh5ID0gcGxhdGZvcm1fZ2V0X2RydmRh dGEocGh5X3BkZXYpOworCisJb2Zfbm9kZV9wdXQocGh5X25vZGUpOworCisJaWYgKCFwaHlfcGRl diB8fCAhbXNtX2RzaS0+cGh5KSB7CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIiVzOiBwaHkgZHJp dmVyIGlzIG5vdCByZWFkeVxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsK Kwl9CisKKwltc21fZHNpLT5waHlfZGV2ID0gZ2V0X2RldmljZSgmcGh5X3BkZXYtPmRldik7CisK KwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgZHNpX2Rlc3Ryb3koc3RydWN0IG1zbV9kc2kg Km1zbV9kc2kpCiB7CiAJaWYgKCFtc21fZHNpKQpAQCAtMzAsOSArNTgsMTAgQEAgc3RhdGljIHZv aWQgZHNpX2Rlc3Ryb3koc3RydWN0IG1zbV9kc2kgKm1zbV9kc2kpCiAKIAltc21fZHNpX21hbmFn ZXJfdW5yZWdpc3Rlcihtc21fZHNpKTsKIAotCWlmIChtc21fZHNpLT5waHkpIHsKLQkJbXNtX2Rz aV9waHlfZGVzdHJveShtc21fZHNpLT5waHkpOworCWlmIChtc21fZHNpLT5waHlfZGV2KSB7CisJ CXB1dF9kZXZpY2UobXNtX2RzaS0+cGh5X2Rldik7CiAJCW1zbV9kc2ktPnBoeSA9IE5VTEw7CisJ CW1zbV9kc2ktPnBoeV9kZXYgPSBOVUxMOwogCX0KIAogCWlmIChtc21fZHNpLT5ob3N0KSB7CkBA IC00OSw3ICs3OCw2IEBAIHN0YXRpYyBzdHJ1Y3QgbXNtX2RzaSAqZHNpX2luaXQoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldikKIAlpbnQgcmV0OwogCiAJaWYgKCFwZGV2KSB7Ci0JCWRldl9l cnIoJnBkZXYtPmRldiwgIm5vIGRzaSBkZXZpY2VcbiIpOwogCQlyZXQgPSAtRU5YSU87CiAJCWdv dG8gZmFpbDsKIAl9CkBAIC02OSwxMyArOTcsMTAgQEAgc3RhdGljIHN0cnVjdCBtc21fZHNpICpk c2lfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCWlmIChyZXQpCiAJCWdvdG8g ZmFpbDsKIAotCS8qIEluaXQgZHNpIFBIWSAqLwotCW1zbV9kc2ktPnBoeSA9IG1zbV9kc2lfcGh5 X2luaXQocGRldiwgbXNtX2RzaS0+cGh5X3R5cGUsIG1zbV9kc2ktPmlkKTsKLQlpZiAoIW1zbV9k c2ktPnBoeSkgewotCQlyZXQgPSAtRU5YSU87Ci0JCXByX2VycigiJXM6IHBoeSBpbml0IGZhaWxl ZFxuIiwgX19mdW5jX18pOworCS8qIEdFVCBkc2kgUEhZICovCisJcmV0ID0gZHNpX2dldF9waHko bXNtX2RzaSk7CisJaWYgKHJldCkKIAkJZ290byBmYWlsOwotCX0KIAogCS8qIFJlZ2lzdGVyIHRv IGRzaSBtYW5hZ2VyICovCiAJcmV0ID0gbXNtX2RzaV9tYW5hZ2VyX3JlZ2lzdGVyKG1zbV9kc2kp OwpAQCAtMTU2LDEyICsxODEsMTQgQEAgc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHNp X2RyaXZlciA9IHsKIHZvaWQgX19pbml0IG1zbV9kc2lfcmVnaXN0ZXIodm9pZCkKIHsKIAlEQkco IiIpOworCW1zbV9kc2lfcGh5X2RyaXZlcl9yZWdpc3RlcigpOwogCXBsYXRmb3JtX2RyaXZlcl9y ZWdpc3RlcigmZHNpX2RyaXZlcik7CiB9CiAKIHZvaWQgX19leGl0IG1zbV9kc2lfdW5yZWdpc3Rl cih2b2lkKQogewogCURCRygiIik7CisJbXNtX2RzaV9waHlfZHJpdmVyX3VucmVnaXN0ZXIoKTsK IAlwbGF0Zm9ybV9kcml2ZXJfdW5yZWdpc3RlcigmZHNpX2RyaXZlcik7CiB9CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k c2kvZHNpLmgKaW5kZXggODAyMjgxNC4uOTJkNjk3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9kc2kvZHNpLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpLmgKQEAg LTE0LDYgKzE0LDcgQEAKICNpZm5kZWYgX19EU0lfQ09OTkVDVE9SX0hfXwogI2RlZmluZSBfX0RT SV9DT05ORUNUT1JfSF9fCiAKKyNpbmNsdWRlIDxsaW51eC9vZl9wbGF0Zm9ybS5oPgogI2luY2x1 ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgogCiAjaW5jbHVkZSAiZHJtX2NydGMuaCIKQEAg LTM5LDEyICs0MCwyNyBAQAogI2RlZmluZSBEU0lfRU5DT0RFUl9TTEFWRQlEU0lfMAogCiBlbnVt IG1zbV9kc2lfcGh5X3R5cGUgewotCU1TTV9EU0lfUEhZX1VOS05PV04sCiAJTVNNX0RTSV9QSFlf MjhOTV9IUE0sCiAJTVNNX0RTSV9QSFlfMjhOTV9MUCwKIAlNU01fRFNJX1BIWV9NQVgKIH07CiAK KyNkZWZpbmUgRFNJX0RFVl9SRUdVTEFUT1JfTUFYCTgKKworLyogUmVndWxhdG9ycyBmb3IgRFNJ IGRldmljZXMgKi8KK3N0cnVjdCBkc2lfcmVnX2VudHJ5IHsKKwljaGFyIG5hbWVbMzJdOworCWlu dCBtaW5fdm9sdGFnZTsKKwlpbnQgbWF4X3ZvbHRhZ2U7CisJaW50IGVuYWJsZV9sb2FkOworCWlu dCBkaXNhYmxlX2xvYWQ7Cit9OworCitzdHJ1Y3QgZHNpX3JlZ19jb25maWcgeworCWludCBudW07 CisJc3RydWN0IGRzaV9yZWdfZW50cnkgcmVnc1tEU0lfREVWX1JFR1VMQVRPUl9NQVhdOworfTsK Kwogc3RydWN0IG1zbV9kc2kgewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldjsKQEAgLTU3LDcgKzczLDcgQEAgc3RydWN0IG1zbV9kc2kgewog CXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOwogCXVuc2lnbmVkIGxvbmcgcGFuZWxfZmxhZ3M7CiAK LQllbnVtIG1zbV9kc2lfcGh5X3R5cGUgcGh5X3R5cGU7CisJc3RydWN0IGRldmljZSAqcGh5X2Rl djsKIAlib29sIHBoeV9lbmFibGVkOwogCiAJLyogdGhlIGVuY29kZXJzIHdlIGFyZSBob29rZWQg dG8gKG91dHNpZGUgb2YgZHNpIGJsb2NrKSAqLwpAQCAtMTM1LDkgKzE1MSw4IEBAIGludCBtc21f ZHNpX2hvc3RfaW5pdChzdHJ1Y3QgbXNtX2RzaSAqbXNtX2RzaSk7CiAKIC8qIGRzaSBwaHkgKi8K IHN0cnVjdCBtc21fZHNpX3BoeTsKLXN0cnVjdCBtc21fZHNpX3BoeSAqbXNtX2RzaV9waHlfaW5p dChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAotCQkJZW51bSBtc21fZHNpX3BoeV90eXBl IHR5cGUsIGludCBpZCk7Ci12b2lkIG1zbV9kc2lfcGh5X2Rlc3Ryb3koc3RydWN0IG1zbV9kc2lf cGh5ICpwaHkpOwordm9pZCBtc21fZHNpX3BoeV9kcml2ZXJfcmVnaXN0ZXIodm9pZCk7Cit2b2lk IG1zbV9kc2lfcGh5X2RyaXZlcl91bnJlZ2lzdGVyKHZvaWQpOwogaW50IG1zbV9kc2lfcGh5X2Vu YWJsZShzdHJ1Y3QgbXNtX2RzaV9waHkgKnBoeSwgYm9vbCBpc19kdWFsX3BhbmVsLAogCWNvbnN0 IHVuc2lnbmVkIGxvbmcgYml0X3JhdGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZXNjX3JhdGUpOwog aW50IG1zbV9kc2lfcGh5X2Rpc2FibGUoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHkpOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZHNpL2RzaV9ob3N0LmMKaW5kZXggMWNmOWYxMS4uNTllNTI0YiAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX2hvc3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v bXNtL2RzaS9kc2lfaG9zdC5jCkBAIC0zNiwzNSArMzYsMTkgQEAKIAogI2RlZmluZSBEU0lfNkdf UkVHX1NISUZUCTQKIAotI2RlZmluZSBEU0lfUkVHVUxBVE9SX01BWAk4Ci1zdHJ1Y3QgZHNpX3Jl Z19lbnRyeSB7Ci0JY2hhciBuYW1lWzMyXTsKLQlpbnQgbWluX3ZvbHRhZ2U7Ci0JaW50IG1heF92 b2x0YWdlOwotCWludCBlbmFibGVfbG9hZDsKLQlpbnQgZGlzYWJsZV9sb2FkOwotfTsKLQotc3Ry dWN0IGRzaV9yZWdfY29uZmlnIHsKLQlpbnQgbnVtOwotCXN0cnVjdCBkc2lfcmVnX2VudHJ5IHJl Z3NbRFNJX1JFR1VMQVRPUl9NQVhdOwotfTsKLQogc3RydWN0IGRzaV9jb25maWcgewogCXUzMiBt YWpvcjsKIAl1MzIgbWlub3I7CiAJdTMyIGlvX29mZnNldDsKLQllbnVtIG1zbV9kc2lfcGh5X3R5 cGUgcGh5X3R5cGU7CiAJc3RydWN0IGRzaV9yZWdfY29uZmlnIHJlZ19jZmc7CiB9OwogCiBzdGF0 aWMgY29uc3Qgc3RydWN0IGRzaV9jb25maWcgZHNpX2NmZ3NbXSA9IHsKLQl7TVNNX0RTSV9WRVJf TUFKT1JfVjIsIDAsIDAsIE1TTV9EU0lfUEhZX1VOS05PV059LAorCXtNU01fRFNJX1ZFUl9NQUpP Ul9WMiwgMCwgMCwgezAsfSB9LAogCXsgLyogODk3NCB2MSAqLwogCQkubWFqb3IgPSBNU01fRFNJ X1ZFUl9NQUpPUl82RywKIAkJLm1pbm9yID0gTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfMCwKIAkJ LmlvX29mZnNldCA9IERTSV82R19SRUdfU0hJRlQsCi0JCS5waHlfdHlwZSA9IE1TTV9EU0lfUEhZ XzI4Tk1fSFBNLAogCQkucmVnX2NmZyA9IHsKIAkJCS5udW0gPSA0LAogCQkJLnJlZ3MgPSB7CkBA IC03OSw3ICs2Myw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNpX2NvbmZpZyBkc2lfY2Znc1td ID0gewogCQkubWFqb3IgPSBNU01fRFNJX1ZFUl9NQUpPUl82RywKIAkJLm1pbm9yID0gTVNNX0RT SV82R19WRVJfTUlOT1JfVjFfMSwKIAkJLmlvX29mZnNldCA9IERTSV82R19SRUdfU0hJRlQsCi0J CS5waHlfdHlwZSA9IE1TTV9EU0lfUEhZXzI4Tk1fSFBNLAogCQkucmVnX2NmZyA9IHsKIAkJCS5u dW0gPSA0LAogCQkJLnJlZ3MgPSB7CkBAIC05NCw3ICs3Nyw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHNpX2NvbmZpZyBkc2lfY2Znc1tdID0gewogCQkubWFqb3IgPSBNU01fRFNJX1ZFUl9NQUpP Ul82RywKIAkJLm1pbm9yID0gTVNNX0RTSV82R19WRVJfTUlOT1JfVjFfMV8xLAogCQkuaW9fb2Zm c2V0ID0gRFNJXzZHX1JFR19TSElGVCwKLQkJLnBoeV90eXBlID0gTVNNX0RTSV9QSFlfMjhOTV9I UE0sCiAJCS5yZWdfY2ZnID0gewogCQkJLm51bSA9IDQsCiAJCQkucmVncyA9IHsKQEAgLTEwOSw3 ICs5MSw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNpX2NvbmZpZyBkc2lfY2Znc1tdID0gewog CQkubWFqb3IgPSBNU01fRFNJX1ZFUl9NQUpPUl82RywKIAkJLm1pbm9yID0gTVNNX0RTSV82R19W RVJfTUlOT1JfVjFfMiwKIAkJLmlvX29mZnNldCA9IERTSV82R19SRUdfU0hJRlQsCi0JCS5waHlf dHlwZSA9IE1TTV9EU0lfUEhZXzI4Tk1fSFBNLAogCQkucmVnX2NmZyA9IHsKIAkJCS5udW0gPSA0 LAogCQkJLnJlZ3MgPSB7CkBAIC0xMjQsNyArMTA1LDYgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBk c2lfY29uZmlnIGRzaV9jZmdzW10gPSB7CiAJCS5tYWpvciA9IE1TTV9EU0lfVkVSX01BSk9SXzZH LAogCQkubWlub3IgPSBNU01fRFNJXzZHX1ZFUl9NSU5PUl9WMV8zXzEsCiAJCS5pb19vZmZzZXQg PSBEU0lfNkdfUkVHX1NISUZULAotCQkucGh5X3R5cGUgPSBNU01fRFNJX1BIWV8yOE5NX0xQLAog CQkucmVnX2NmZyA9IHsKIAkJCS5udW0gPSA0LAogCQkJLnJlZ3MgPSB7CkBAIC0xOTcsNyArMTc3 LDcgQEAgc3RydWN0IG1zbV9kc2lfaG9zdCB7CiAJaW50IGlkOwogCiAJdm9pZCBfX2lvbWVtICpj dHJsX2Jhc2U7Ci0Jc3RydWN0IHJlZ3VsYXRvcl9idWxrX2RhdGEgc3VwcGxpZXNbRFNJX1JFR1VM QVRPUl9NQVhdOworCXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhIHN1cHBsaWVzW0RTSV9ERVZf UkVHVUxBVE9SX01BWF07CiAJc3RydWN0IGNsayAqbWRwX2NvcmVfY2xrOwogCXN0cnVjdCBjbGsg KmFoYl9jbGs7CiAJc3RydWN0IGNsayAqYXhpX2NsazsKQEAgLTE1MjksNyArMTUwOSw2IEBAIGlu dCBtc21fZHNpX2hvc3RfaW5pdChzdHJ1Y3QgbXNtX2RzaSAqbXNtX2RzaSkKIAogCW1zbV9kc2kt Pmhvc3QgPSAmbXNtX2hvc3QtPmJhc2U7CiAJbXNtX2RzaS0+aWQgPSBtc21faG9zdC0+aWQ7Ci0J bXNtX2RzaS0+cGh5X3R5cGUgPSBtc21faG9zdC0+Y2ZnLT5waHlfdHlwZTsKIAogCURCRygiRHNp IEhvc3QgJWQgaW5pdGlhbGl6ZWQiLCBtc21faG9zdC0+aWQpOwogCXJldHVybiAwOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kc2kvZHNpX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJt L21zbS9kc2kvZHNpX3BoeS5jCmluZGV4IGUzMTNlNTIuLjNkOWQxMzAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZHNpL2RzaV9waHkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2RzaS9kc2lfcGh5LmMKQEAgLTExLDEyICsxMSwyNyBAQAogICogR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICAqLwogCisjaW5jbHVkZSA8bGludXgvcGxhdGZv cm1fZGV2aWNlLmg+CisjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+CisKICNp bmNsdWRlICJkc2kuaCIKICNpbmNsdWRlICJkc2kueG1sLmgiCiAKICNkZWZpbmUgZHNpX3BoeV9y ZWFkKG9mZnNldCkgbXNtX3JlYWRsKChvZmZzZXQpKQogI2RlZmluZSBkc2lfcGh5X3dyaXRlKG9m ZnNldCwgZGF0YSkgbXNtX3dyaXRlbCgoZGF0YSksIChvZmZzZXQpKQogCitzdHJ1Y3QgZHNpX3Bo eV9vcHMgeworCWludCAoKmVuYWJsZSkoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHksIGJvb2wgaXNf ZHVhbF9wYW5lbCwKKwkJY29uc3QgdW5zaWduZWQgbG9uZyBiaXRfcmF0ZSwgY29uc3QgdW5zaWdu ZWQgbG9uZyBlc2NfcmF0ZSk7CisJaW50ICgqZGlzYWJsZSkoc3RydWN0IG1zbV9kc2lfcGh5ICpw aHkpOworfTsKKworc3RydWN0IGRzaV9waHlfY2ZnIHsKKwllbnVtIG1zbV9kc2lfcGh5X3R5cGUg dHlwZTsKKwlzdHJ1Y3QgZHNpX3JlZ19jb25maWcgcmVnX2NmZzsKKwlzdHJ1Y3QgZHNpX3BoeV9v cHMgb3BzOworfTsKKwogc3RydWN0IGRzaV9kcGh5X3RpbWluZyB7CiAJdTMyIGNsa19wcmU7CiAJ dTMyIGNsa19wb3N0OwpAQCAtNDAsMTcgKzU1LDEwMCBAQCBzdHJ1Y3QgbXNtX2RzaV9waHkgewog CWludCBpZDsKIAogCXN0cnVjdCBjbGsgKmFoYl9jbGs7CisJc3RydWN0IHJlZ3VsYXRvcl9idWxr X2RhdGEgc3VwcGxpZXNbRFNJX0RFVl9SRUdVTEFUT1JfTUFYXTsKIAogCXN0cnVjdCBkc2lfZHBo eV90aW1pbmcgdGltaW5nOwotCWVudW0gbXNtX2RzaV9waHlfdHlwZSB0eXBlOworCWNvbnN0IHN0 cnVjdCBkc2lfcGh5X2NmZyAqY2ZnOwogCiAJc3RydWN0IG1zbV9kc2lfcGxsICpwbGw7Ci0KLQlp bnQgKCplbmFibGUpKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5LCBib29sIGlzX2R1YWxfcGFuZWws Ci0JCWNvbnN0IHVuc2lnbmVkIGxvbmcgYml0X3JhdGUsIGNvbnN0IHVuc2lnbmVkIGxvbmcgZXNj X3JhdGUpOwotCWludCAoKmRpc2FibGUpKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5KTsKIH07CiAK K3N0YXRpYyBpbnQgZHNpX3BoeV9yZWd1bGF0b3JfaW5pdChzdHJ1Y3QgbXNtX2RzaV9waHkgKnBo eSkKK3sKKwlzdHJ1Y3QgcmVndWxhdG9yX2J1bGtfZGF0YSAqcyA9IHBoeS0+c3VwcGxpZXM7CisJ Y29uc3Qgc3RydWN0IGRzaV9yZWdfZW50cnkgKnJlZ3MgPSBwaHktPmNmZy0+cmVnX2NmZy5yZWdz OworCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwaHktPnBkZXYtPmRldjsKKwlpbnQgbnVtID0gcGh5 LT5jZmctPnJlZ19jZmcubnVtOworCWludCBpLCByZXQ7CisKKwlmb3IgKGkgPSAwOyBpIDwgbnVt OyBpKyspCisJCXNbaV0uc3VwcGx5ID0gcmVnc1tpXS5uYW1lOworCisJcmV0ID0gZGV2bV9yZWd1 bGF0b3JfYnVsa19nZXQoJnBoeS0+cGRldi0+ZGV2LCBudW0sIHMpOworCWlmIChyZXQgPCAwKSB7 CisJCWRldl9lcnIoZGV2LCAiJXM6IGZhaWxlZCB0byBpbml0IHJlZ3VsYXRvciwgcmV0PSVkXG4i LAorCQkJCQkJX19mdW5jX18sIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJZm9yIChpID0g MDsgaSA8IG51bTsgaSsrKSB7CisJCWlmICgocmVnc1tpXS5taW5fdm9sdGFnZSA+PSAwKSAmJiAo cmVnc1tpXS5tYXhfdm9sdGFnZSA+PSAwKSkgeworCQkJcmV0ID0gcmVndWxhdG9yX3NldF92b2x0 YWdlKHNbaV0uY29uc3VtZXIsCisJCQkJcmVnc1tpXS5taW5fdm9sdGFnZSwgcmVnc1tpXS5tYXhf dm9sdGFnZSk7CisJCQlpZiAocmV0IDwgMCkgeworCQkJCWRldl9lcnIoZGV2LAorCQkJCQkicmVn dWxhdG9yICVkIHNldCB2b2x0YWdlIGZhaWxlZCwgJWRcbiIsCisJCQkJCWksIHJldCk7CisJCQkJ cmV0dXJuIHJldDsKKwkJCX0KKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9p ZCBkc2lfcGh5X3JlZ3VsYXRvcl9kaXNhYmxlKHN0cnVjdCBtc21fZHNpX3BoeSAqcGh5KQorewor CXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhICpzID0gcGh5LT5zdXBwbGllczsKKwljb25zdCBz dHJ1Y3QgZHNpX3JlZ19lbnRyeSAqcmVncyA9IHBoeS0+Y2ZnLT5yZWdfY2ZnLnJlZ3M7CisJaW50 IG51bSA9IHBoeS0+Y2ZnLT5yZWdfY2ZnLm51bTsKKwlpbnQgaTsKKworCURCRygiIik7CisJZm9y IChpID0gbnVtIC0gMTsgaSA+PSAwOyBpLS0pCisJCWlmIChyZWdzW2ldLmRpc2FibGVfbG9hZCA+ PSAwKQorCQkJcmVndWxhdG9yX3NldF9sb2FkKHNbaV0uY29uc3VtZXIsCisJCQkJCQlyZWdzW2ld LmRpc2FibGVfbG9hZCk7CisKKwlyZWd1bGF0b3JfYnVsa19kaXNhYmxlKG51bSwgcyk7Cit9CisK K3N0YXRpYyBpbnQgZHNpX3BoeV9yZWd1bGF0b3JfZW5hYmxlKHN0cnVjdCBtc21fZHNpX3BoeSAq cGh5KQoreworCXN0cnVjdCByZWd1bGF0b3JfYnVsa19kYXRhICpzID0gcGh5LT5zdXBwbGllczsK Kwljb25zdCBzdHJ1Y3QgZHNpX3JlZ19lbnRyeSAqcmVncyA9IHBoeS0+Y2ZnLT5yZWdfY2ZnLnJl Z3M7CisJc3RydWN0IGRldmljZSAqZGV2ID0gJnBoeS0+cGRldi0+ZGV2OworCWludCBudW0gPSBw aHktPmNmZy0+cmVnX2NmZy5udW07CisJaW50IHJldCwgaTsKKworCURCRygiIik7CisJZm9yIChp ID0gMDsgaSA8IG51bTsgaSsrKSB7CisJCWlmIChyZWdzW2ldLmVuYWJsZV9sb2FkID49IDApIHsK KwkJCXJldCA9IHJlZ3VsYXRvcl9zZXRfbG9hZChzW2ldLmNvbnN1bWVyLAorCQkJCQkJCXJlZ3Nb aV0uZW5hYmxlX2xvYWQpOworCQkJaWYgKHJldCA8IDApIHsKKwkJCQlkZXZfZXJyKGRldiwKKwkJ CQkJInJlZ3VsYXRvciAlZCBzZXQgb3AgbW9kZSBmYWlsZWQsICVkXG4iLAorCQkJCQlpLCByZXQp OworCQkJCWdvdG8gZmFpbDsKKwkJCX0KKwkJfQorCX0KKworCXJldCA9IHJlZ3VsYXRvcl9idWxr X2VuYWJsZShudW0sIHMpOworCWlmIChyZXQgPCAwKSB7CisJCWRldl9lcnIoZGV2LCAicmVndWxh dG9yIGVuYWJsZSBmYWlsZWQsICVkXG4iLCByZXQpOworCQlnb3RvIGZhaWw7CisJfQorCisJcmV0 dXJuIDA7CisKK2ZhaWw6CisJZm9yIChpLS07IGkgPj0gMDsgaS0tKQorCQlyZWd1bGF0b3Jfc2V0 X2xvYWQoc1tpXS5jb25zdW1lciwgcmVnc1tpXS5kaXNhYmxlX2xvYWQpOworCXJldHVybiByZXQ7 Cit9CisKICNkZWZpbmUgU19ESVZfUk9VTkRfVVAobiwgZCkJXAogCSgoKG4pID49IDApID8gKCgo bikgKyAoZCkgLSAxKSAvIChkKSkgOiAoKChuKSAtIChkKSArIDEpIC8gKGQpKSkKIApAQCAtMzEz LDUxICs0MTEsOTQgQEAgc3RhdGljIHZvaWQgZHNpX3BoeV9kaXNhYmxlX3Jlc291cmNlKHN0cnVj dCBtc21fZHNpX3BoeSAqcGh5KQogCXBtX3J1bnRpbWVfcHV0X3N5bmMoJnBoeS0+cGRldi0+ZGV2 KTsKIH0KIAotI2RlZmluZSBkc2lfcGh5X2Z1bmNfaW5pdChuYW1lKQlcCi0JZG8gewlcCi0JCXBo eS0+ZW5hYmxlID0gZHNpXyMjbmFtZSMjX3BoeV9lbmFibGU7CVwKLQkJcGh5LT5kaXNhYmxlID0g ZHNpXyMjbmFtZSMjX3BoeV9kaXNhYmxlOwlcCi0JfSB3aGlsZSAoMCkKK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHNpX3BoeV9jZmcgZHNpX3BoeV9jZmdzW01TTV9EU0lfUEhZX01BWF0gPSB7CisJW01T TV9EU0lfUEhZXzI4Tk1fSFBNXSA9IHsKKwkJLnR5cGUgPSBNU01fRFNJX1BIWV8yOE5NX0hQTSwK KwkJLnJlZ19jZmcgPSB7CisJCQkubnVtID0gMSwKKwkJCS5yZWdzID0geworCQkJCXsidmRkaW8i LCAxODAwMDAwLCAxODAwMDAwLCAxMDAwMDAsIDEwMH0sCisJCQl9LAorCQl9LAorCQkub3BzID0g eworCQkJLmVuYWJsZSA9IGRzaV8yOG5tX3BoeV9lbmFibGUsCisJCQkuZGlzYWJsZSA9IGRzaV8y OG5tX3BoeV9kaXNhYmxlLAorCQl9CisJfSwKKwlbTVNNX0RTSV9QSFlfMjhOTV9MUF0gPSB7CisJ CS50eXBlID0gTVNNX0RTSV9QSFlfMjhOTV9MUCwKKwkJLnJlZ19jZmcgPSB7CisJCQkubnVtID0g MSwKKwkJCS5yZWdzID0geworCQkJCXsidmRkaW8iLCAxODAwMDAwLCAxODAwMDAwLCAxMDAwMDAs IDEwMH0sCisJCQl9LAorCQl9LAorCQkub3BzID0geworCQkJLmVuYWJsZSA9IGRzaV8yOG5tX3Bo eV9lbmFibGUsCisJCQkuZGlzYWJsZSA9IGRzaV8yOG5tX3BoeV9kaXNhYmxlLAorCQl9CisJfSwK K307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRzaV9waHlfZHRfbWF0Y2hb XSA9IHsKKwl7IC5jb21wYXRpYmxlID0gInFjb20sZHNpLXBoeS0yOG5tLWhwbSIsCisJICAuZGF0 YSA9ICZkc2lfcGh5X2NmZ3NbTVNNX0RTSV9QSFlfMjhOTV9IUE1dLH0sCisJeyAuY29tcGF0aWJs ZSA9ICJxY29tLGRzaS1waHktMjhubS1scCIsCisJICAuZGF0YSA9ICZkc2lfcGh5X2NmZ3NbTVNN X0RTSV9QSFlfMjhOTV9MUF0sfSwKKwl7fQorfTsKIAotc3RydWN0IG1zbV9kc2lfcGh5ICptc21f ZHNpX3BoeV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCi0JCQllbnVtIG1zbV9k c2lfcGh5X3R5cGUgdHlwZSwgaW50IGlkKQorc3RhdGljIGludCBkc2lfcGh5X2RyaXZlcl9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewogCXN0cnVjdCBtc21fZHNpX3BoeSAq cGh5OworCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgKm1hdGNoOwogCWludCByZXQ7CiAKIAlw aHkgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpwaHkpLCBHRlBfS0VSTkVMKTsK IAlpZiAoIXBoeSkKLQkJcmV0dXJuIE5VTEw7CisJCXJldHVybiAtRU5PTUVNOworCisJbWF0Y2gg PSBvZl9tYXRjaF9ub2RlKGRzaV9waHlfZHRfbWF0Y2gsIHBkZXYtPmRldi5vZl9ub2RlKTsKKwlp ZiAoIW1hdGNoKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXBoeS0+Y2ZnID0gbWF0Y2gtPmRhdGE7 CisJcGh5LT5wZGV2ID0gcGRldjsKKworCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKHBkZXYt PmRldi5vZl9ub2RlLAorCQkJCSJxY29tLGRzaS1waHktaW5kZXgiLCAmcGh5LT5pZCk7CisJaWYg KHJldCkgeworCQlkZXZfZXJyKCZwZGV2LT5kZXYsCisJCQkiJXM6IFBIWSBpbmRleCBub3Qgc3Bl Y2lmaWVkLCByZXQ9JWRcbiIsCisJCQlfX2Z1bmNfXywgcmV0KTsKKwkJZ290byBmYWlsOworCX0K IAogCXBoeS0+YmFzZSA9IG1zbV9pb3JlbWFwKHBkZXYsICJkc2lfcGh5IiwgIkRTSV9QSFkiKTsK IAlpZiAoSVNfRVJSX09SX05VTEwocGh5LT5iYXNlKSkgewotCQlwcl9lcnIoIiVzOiBmYWlsZWQg dG8gbWFwIHBoeSBiYXNlXG4iLCBfX2Z1bmNfXyk7Ci0JCXJldHVybiBOVUxMOworCQlkZXZfZXJy KCZwZGV2LT5kZXYsICIlczogZmFpbGVkIHRvIG1hcCBwaHkgYmFzZVxuIiwgX19mdW5jX18pOwor CQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGZhaWw7CiAJfQogCXBoeS0+cmVnX2Jhc2UgPSBtc21f aW9yZW1hcChwZGV2LCAiZHNpX3BoeV9yZWd1bGF0b3IiLCAiRFNJX1BIWV9SRUciKTsKIAlpZiAo SVNfRVJSX09SX05VTEwocGh5LT5yZWdfYmFzZSkpIHsKLQkJcHJfZXJyKCIlczogZmFpbGVkIHRv IG1hcCBwaHkgcmVndWxhdG9yIGJhc2VcbiIsIF9fZnVuY19fKTsKLQkJcmV0dXJuIE5VTEw7CisJ CWRldl9lcnIoJnBkZXYtPmRldiwKKwkJCSIlczogZmFpbGVkIHRvIG1hcCBwaHkgcmVndWxhdG9y IGJhc2VcbiIsIF9fZnVuY19fKTsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBmYWlsOwogCX0K IAotCXN3aXRjaCAodHlwZSkgewotCWNhc2UgTVNNX0RTSV9QSFlfMjhOTV9IUE06Ci0JY2FzZSBN U01fRFNJX1BIWV8yOE5NX0xQOgotCQlkc2lfcGh5X2Z1bmNfaW5pdCgyOG5tKTsKLQkJYnJlYWs7 Ci0JZGVmYXVsdDoKLQkJcHJfZXJyKCIlczogdW5zdXBwb3J0ZWQgdHlwZSwgJWRcbiIsIF9fZnVu Y19fLCB0eXBlKTsKLQkJcmV0dXJuIE5VTEw7CisJcmV0ID0gZHNpX3BoeV9yZWd1bGF0b3JfaW5p dChwaHkpOworCWlmIChyZXQpIHsKKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiJXM6IGZhaWxlZCB0 byBpbml0IHJlZ3VsYXRvclxuIiwgX19mdW5jX18pOworCQlnb3RvIGZhaWw7CiAJfQogCi0JcGh5 LT50eXBlID0gdHlwZTsKLQlwaHktPmlkID0gaWQ7Ci0JcGh5LT5wZGV2ID0gcGRldjsKLQogCXBo eS0+YWhiX2NsayA9IGRldm1fY2xrX2dldCgmcGRldi0+ZGV2LCAiaWZhY2VfY2xrIik7CiAJaWYg KElTX0VSUihwaHktPmFoYl9jbGspKSB7CiAJCXByX2VycigiJXM6IFVuYWJsZSB0byBnZXQgYWhi IGNsa1xuIiwgX19mdW5jX18pOwotCQlyZXR1cm4gTlVMTDsKKwkJcmV0ID0gUFRSX0VSUihwaHkt PmFoYl9jbGspOworCQlnb3RvIGZhaWw7CiAJfQogCiAJLyogUExMIGluaXQgd2lsbCBjYWxsIGlu dG8gY2xrX3JlZ2lzdGVyIHdoaWNoIHJlcXVpcmVzCkBAIC0zNjUsMzkgKzUwNiw4NCBAQCBzdHJ1 Y3QgbXNtX2RzaV9waHkgKm1zbV9kc2lfcGh5X2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldiwKIAkgKi8KIAlyZXQgPSBkc2lfcGh5X2VuYWJsZV9yZXNvdXJjZShwaHkpOwogCWlmIChy ZXQpCi0JCXJldHVybiBOVUxMOworCQlnb3RvIGZhaWw7CiAKLQlwaHktPnBsbCA9IG1zbV9kc2lf cGxsX2luaXQocGRldiwgdHlwZSwgaWQpOworCXBoeS0+cGxsID0gbXNtX2RzaV9wbGxfaW5pdChw ZGV2LCBwaHktPmNmZy0+dHlwZSwgcGh5LT5pZCk7CiAJaWYgKCFwaHktPnBsbCkKLQkJcHJfaW5m bygiJXM6IHBsbCBpbml0IGZhaWxlZCwgbmVlZCBzZXBhcmF0ZSBwbGwgY2xrIGRyaXZlclxuIiwK KwkJZGV2X2luZm8oJnBkZXYtPmRldiwKKwkJCSIlczogcGxsIGluaXQgZmFpbGVkLCBuZWVkIHNl cGFyYXRlIHBsbCBjbGsgZHJpdmVyXG4iLAogCQkJX19mdW5jX18pOwogCiAJZHNpX3BoeV9kaXNh YmxlX3Jlc291cmNlKHBoeSk7CiAKLQlyZXR1cm4gcGh5OworCXBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIHBoeSk7CisKKwlyZXR1cm4gMDsKKworZmFpbDoKKwlyZXR1cm4gcmV0OwogfQogCi12 b2lkIG1zbV9kc2lfcGh5X2Rlc3Ryb3koc3RydWN0IG1zbV9kc2lfcGh5ICpwaHkpCitzdGF0aWMg aW50IGRzaV9waHlfZHJpdmVyX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQog ewotCWlmIChwaHktPnBsbCkgeworCXN0cnVjdCBtc21fZHNpX3BoeSAqcGh5ID0gcGxhdGZvcm1f Z2V0X2RydmRhdGEocGRldik7CisKKwlpZiAocGh5ICYmIHBoeS0+cGxsKSB7CiAJCW1zbV9kc2lf cGxsX2Rlc3Ryb3kocGh5LT5wbGwpOwogCQlwaHktPnBsbCA9IE5VTEw7CiAJfQorCisJcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwgTlVMTCk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHN0 cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZHNpX3BoeV9wbGF0Zm9ybV9kcml2ZXIgPSB7CisJLnByb2Jl ICAgICAgPSBkc2lfcGh5X2RyaXZlcl9wcm9iZSwKKwkucmVtb3ZlICAgICA9IGRzaV9waHlfZHJp dmVyX3JlbW92ZSwKKwkuZHJpdmVyICAgICA9IHsKKwkJLm5hbWUgICA9ICJtc21fZHNpX3BoeSIs CisJCS5vZl9tYXRjaF90YWJsZSA9IGRzaV9waHlfZHRfbWF0Y2gsCisJfSwKK307CisKK3ZvaWQg X19pbml0IG1zbV9kc2lfcGh5X2RyaXZlcl9yZWdpc3Rlcih2b2lkKQoreworCXBsYXRmb3JtX2Ry aXZlcl9yZWdpc3RlcigmZHNpX3BoeV9wbGF0Zm9ybV9kcml2ZXIpOworfQorCit2b2lkIF9fZXhp dCBtc21fZHNpX3BoeV9kcml2ZXJfdW5yZWdpc3Rlcih2b2lkKQoreworCXBsYXRmb3JtX2RyaXZl cl91bnJlZ2lzdGVyKCZkc2lfcGh5X3BsYXRmb3JtX2RyaXZlcik7CiB9CiAKIGludCBtc21fZHNp X3BoeV9lbmFibGUoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHksIGJvb2wgaXNfZHVhbF9wYW5lbCwK IAljb25zdCB1bnNpZ25lZCBsb25nIGJpdF9yYXRlLCBjb25zdCB1bnNpZ25lZCBsb25nIGVzY19y YXRlKQogewotCWlmICghcGh5IHx8ICFwaHktPmVuYWJsZSkKKwlpbnQgcmV0OworCisJaWYgKCFw aHkgfHwgIXBoeS0+Y2ZnLT5vcHMuZW5hYmxlKQogCQlyZXR1cm4gLUVJTlZBTDsKLQlyZXR1cm4g cGh5LT5lbmFibGUocGh5LCBpc19kdWFsX3BhbmVsLCBiaXRfcmF0ZSwgZXNjX3JhdGUpOworCisJ cmV0ID0gZHNpX3BoeV9yZWd1bGF0b3JfZW5hYmxlKHBoeSk7CisJaWYgKHJldCkgeworCQlkZXZf ZXJyKCZwaHktPnBkZXYtPmRldiwgIiVzOiByZWd1bGF0b3IgZW5hYmxlIGZhaWxlZCwgJWRcbiIs CisJCQlfX2Z1bmNfXywgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gcGh5LT5j ZmctPm9wcy5lbmFibGUocGh5LCBpc19kdWFsX3BhbmVsLCBiaXRfcmF0ZSwgZXNjX3JhdGUpOwog fQogCiBpbnQgbXNtX2RzaV9waHlfZGlzYWJsZShzdHJ1Y3QgbXNtX2RzaV9waHkgKnBoeSkKIHsK LQlpZiAoIXBoeSB8fCAhcGh5LT5kaXNhYmxlKQorCWlmICghcGh5IHx8ICFwaHktPmNmZy0+b3Bz LmRpc2FibGUpCiAJCXJldHVybiAtRUlOVkFMOwotCXJldHVybiBwaHktPmRpc2FibGUocGh5KTsK KworCXBoeS0+Y2ZnLT5vcHMuZGlzYWJsZShwaHkpOworCWRzaV9waHlfcmVndWxhdG9yX2Rpc2Fi bGUocGh5KTsKKworCXJldHVybiAwOwogfQogCiB2b2lkIG1zbV9kc2lfcGh5X2dldF9jbGtfcHJl X3Bvc3Qoc3RydWN0IG1zbV9kc2lfcGh5ICpwaHksCi0tIApUaGUgUXVhbGNvbW0gSW5ub3ZhdGlv biBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhIEZvcnVtLApob3N0 ZWQgYnkgVGhlIExpbnV4IEZvdW5kYXRpb24KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVsCg==