From mboxrd@z Thu Jan 1 00:00:00 1970 From: Swapnil Paratey Subject: [PATCH v4] ns16550: Add support for UART parameters to be specifed with name-value pairs Date: Tue, 18 Apr 2017 11:07:06 -0500 Message-ID: <1492531626-338-1-git-send-email-swapnil.paratey@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d0Vf4-0002xq-70 for xen-devel@lists.xenproject.org; Tue, 18 Apr 2017 16:07:26 +0000 List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Swapnil Paratey , sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org QWRkIG5hbWU9dmFsdWUgcGFyc2luZyBvcHRpb25zIGZvciBjb20xIGFuZCBjb20yIHRvIGFkZCBm bGV4aWJpbGl0eQppbiBzZXR0aW5nIHJlZ2lzdGVyIHZhbHVlcyBmb3IgTU1JTyBVQVJUIGRldmlj ZXMuCgpNYWludGFpbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcG9zaXRp b25hbCBwYXJhbWV0ZXIKc3BlY2ZpY2F0aW9ucy4KCmVnLiBjb20xPTExNTIwMCw4bjEsMHgzZjgs NAplZy4gY29tMT0xMTUyMDAsOG4xLDB4M2Y4LDQscmVnX3dpZHRoPTQscmVnX3NoaWZ0PTIKZWcu IGNvbTE9YmF1ZD0xMTUyMDAscGFyaXR5PW4scmVnX3dpZHRoPTQscmVnX3NoaWZ0PTIsaXJxPTQK ClNpZ25lZC1vZmYtYnk6IFN3YXBuaWwgUGFyYXRleSA8c3dhcG5pbC5wYXJhdGV5QGFtZC5jb20+ CgotLS0KQ2hhbmdlZCBzaW5jZSB2MzoKICogQ2hhbmdlZCBzdWJqZWN0L3RpdGxlIG9mIHRoZSBw YXRjaAogICBQcmV2aW91cyBuYW1lOiBuczE2NTUwLUFkZC1jb21tYW5kLWxpbmUtcGFyc2luZy1h ZGp1c3RtZW50cwogKiBJbmNyZWFzZWQgbGVuZ3RoIG9mIG9wdF9jb20xIGFuZCBvcHRfY29tMiBi dWZmZXJzIHRvIDEyOCBieXRlcy4KICogSW1wbGVtZW50YXRpb24gY2hhbmdlcyBmcm9tIFtQQVRD SCB2M10gY29kZSByZXZpZXcKCkNoYW5nZWQgc2luY2UgdjI6CiAqIEFkZGVkIG5hbWU9dmFsdWUg c3BlY2lmaWNhdGlvbiBmb3IgY29tMSBhbmQgY29tMiBjb21tYW5kIGxpbmUKICAgcGFyYW1ldGVy IGlucHV0IGZvciBVQVJUIGRldmljZXMKICAgU3ludGF4OiAiY29tMT0ocG9zaXRpb25hbCBwYXJh bWV0ZXJzKSwobmFtZS12YWx1ZSBwYXJhbWV0ZXJzKSIKICogTWFpbnRhaW5lZCBwcmV2aW91cyBw b3NpdGlvbmFsIHNwZWNpZmljYXRpb24gZm9yIFVBUlQgcGFyYW1ldGVycwogKiBBbGwgcGFyYW1l dGVycyBzaG91bGQgYmUgY29tbWEtc2VwYXJhdGVkCgpDaGFuZ2VkIHNpbmNlIHYxOgogKiBDaGFu Z2VkIG9wdF9jb20xIGFuZCBvcHRfY29tMiBhcnJheSBzaXplIHRvIDY0IChwb3dlciBvZiAyKS4K ICogQWRkZWQgZGVzY3JpcHRpb25zIGZvciByZWdfd2lkdGggYW5kIHJlZ19zaGlmdCBpbgogICBk b2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgogKiBDaGFuZ2VkIHN1YmplY3QgdG8g bnMxNjU1MCBmcm9tIDE2NTUwIGZvciBiZXR0ZXIgdHJhY2tpbmcuCi0tLQogZG9jcy9taXNjL3hl bi1jb21tYW5kLWxpbmUubWFya2Rvd24gfCAgMzggKysrKysrCiB4ZW4vY29tbW9uL2tlcm5lbC5j ICAgICAgICAgICAgICAgICB8ICAgMiArLQogeGVuL2RyaXZlcnMvY2hhci9uczE2NTUwLmMgICAg ICAgICAgfCAyMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiAzIGZpbGVz IGNoYW5nZWQsIDI1OSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93biBiL2RvY3MvbWlzYy94ZW4tY29t bWFuZC1saW5lLm1hcmtkb3duCmluZGV4IDQ1MGIyMjIuLjUzMDUyYjIgMTAwNjQ0Ci0tLSBhL2Rv Y3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCisrKyBiL2RvY3MvbWlzYy94ZW4tY29t bWFuZC1saW5lLm1hcmtkb3duCkBAIC0zMjQsNiArMzI0LDQ0IEBAIEJvdGggb3B0aW9uIGBjb20x YCBhbmQgYGNvbTJgIGZvbGxvdyB0aGUgc2FtZSBmb3JtYXQuCiAKIEEgdHlwaWNhbCBzZXR1cCBm b3IgbW9zdCBzaXR1YXRpb25zIG1pZ2h0IGJlIGBjb20xPTExNTIwMCw4bjFgCiAKK0luIGFkZGl0 aW9uIHRvIHRoZSBhYm92ZSBwb3NpdGlvbmFsIHNwZWNpZmljYXRpb24gZm9yIFVBUlQgcGFyYW1l dGVycywKK25hbWU9dmFsdWUgcGFpciBzcGVjZmljYXRpb25zIGFyZSBhbHNvIHN1cHBvcnRlZC4g VGhpcyBpcyB1c2VkIHRvIGFkZAorZmxleGliaWxpdHkgZm9yIFVBUlQgZGV2aWNlcyB3aGljaCBy ZXF1aXJlIGFkZGl0aW9uYWwgVUFSVCBwYXJhbWV0ZXIKK2NvbmZpZ3VyYXRpb25zLgorCitUaGUg Y29tbWEgc2VwYXJhdGlvbiBzdGlsbCBkZWxpbmVhdGVzIHBvc2l0aW9uYWwgcGFyYW1ldGVycy4g SGVuY2UsCit1bmxlc3MgdGhlIHBhcmFtZXRlciBpcyBleHBsaWNpdGx5IHNwZWNpZmllZCB3aXRo IG5hbWU9dmFsdWUgb3B0aW9uLCBpdAord2lsbCBiZSBjb25zaWRlcmVkIGEgcG9zaXRpb25hbCBw YXJhbWV0ZXIuCisKK1RoZSBzeW50YXggY29uc2lzdHMgb2YKK2NvbTE9KGNvbW1hLXNlcGFyYXRl ZCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMpLChjb21tYSBzZXBhcmF0ZWQgbmFtZS12YWx1ZSBwYWly cykKKworVGhlIGFjY2VwdGVkIG5hbWUga2V5d29yZHMgZm9yIG5hbWU9dmFsdWUgcGFpcnMgYXJl CisgKiBgYmF1ZGAgLSBhY2NlcHRzIGludGVnZXIgYmF1ZCByYXRlIChlZy4gMTE1MjAwKSBvciBg YXV0b2AKKyAqIGBicmlkZ2VgLSBTaW1pbGFyIHRvIGJyaWRnZS1iZGYgaW4gcG9zaXRpb25hbCBw YXJhbWV0ZXJzLgorICAgICAgICAgICAgIFVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBQQ0kgYnJpZGdl IHRvIGFjY2VzcyB0aGUgVUFSVCBkZXZpY2UuCisgICAgICAgICAgICAgTm90YXRpb24gaXMgeHg6 eHgueHggPGJ1cz46PGRldmljZT4uPGZ1bmN0aW9uPgorICogYGNsb2NrLWh6YC0gYWNjZXB0cyBs YXJnZSBpbnRlZ2VycyB0byBzZXR1cCBVQVJUIGNsb2NrIGZyZXF1ZW5jaWVzLgorICAgICAgICAg ICAgICAgRG8gbm90ZSAtIHRoZXNlIHZhbHVlcyBhcmUgbXVsdGlwbGllZCBieSAxNi4KKyAqIGBk YXRhLWJpdHNgIC0gaW50ZWdlciBiZXR3ZWVuIDUgYW5kIDgKKyAqIGBkZXZgIC0gYWNjZXB0ZWQg dmFsdWVzIGFyZSBgcGNpYCBPUiBgYW10YC4gSWYgdGhpcyBvcHRpb24KKyAgICAgICAgICAgaXMg dXNlZCB0byBzcGVjaWZ5IGlmIHRoZSBzZXJpYWwgZGV2aWNlIGlzIHBjaS1iYXNlZC4gVGhlIGlv X2Jhc2UKKyAgICAgICAgICAgY2Fubm90IGJlIHNwZWNpZmllZCB3aGVuIGBkZXY9cGNpYCBvciBg ZGV2PWFtdGAgaXMgdXNlZC4KKyAqIGBpby1iYXNlYCAtIGFjY2VwdHMgaW50ZWdlciB3aGljaCBz cGVjaWZpZWQgSU8gYmFzZSBwb3J0IGZvciBVQVJUIHJlZ2lzdGVycworICogYGlycWAgLSBJUlEg bnVtYmVyIHRvIHVzZQorICogYHBhcml0eWAgLSBhY2NlcHRlZCB2YWx1ZXMgYXJlIHNhbWUgYXMg cG9zaXRpb25hbCBwYXJhbWV0ZXJzCisgKiBgcG9ydGAgLSBVc2VkIHRvIHNwZWNpZnkgd2hpY2gg cG9ydCB0aGUgUENJIHNlcmlhbCBkZXZpY2UgaXMgbG9jYXRlZCBvbgorICAgICAgICAgICAgTm90 YXRpb24gaXMgeHg6eHgueHggPGJ1cz46PGRldmljZT4uPGZ1bmN0aW9uPgorICogYHJlZy1zaGlm dGAgLSByZWdpc3RlciBzaGlmdHMgcmVxdWlyZWQgdG8gc2V0IFVBUlQgcmVnaXN0ZXJzCisgKiBg cmVnLXdpZHRoYCAtIHJlZ2lzdGVyIHdpZHRoIHJlcXVpcmVkIHRvIHNldCBVQVJUIHJlZ2lzdGVy cworICAgICAgICAgICAgICAgICAob25seSBhY2NlcHRzIDEgYW5kIDQpCisgKiBgc3RvcC1iaXRz YCAtIG9ubHkgYWNjZXB0cyAxIG9yIDIgZm9yIHRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzCisKK1Ro ZSBmb2xsb3dpbmcgYXJlIGV4YW1wbGVzIG9mIGNvcnJlY3Qgc3BlY2lmaWNhdGlvbnM6CitgY29t MT0xMTUyMDAsOG4xLDB4M2Y4LDRgCitgY29tMT0xMTUyMDAsOG4xLDB4M2Y4LDQscmVnX3dpZHRo PTQscmVnX3NoaWZ0PTJgCitgY29tMT1iYXVkPTExNTIwMCxwYXJpdHk9bixzdG9wX2JpdHM9MSxp b19iYXNlPTB4M2Y4LHJlZ193aWR0aD00YAorCiAjIyMgY29ucmluZ1xfc2l6ZQogPiBgPSA8c2l6 ZT5gCiAKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24va2VybmVsLmMgYi94ZW4vY29tbW9uL2tlcm5l bC5jCmluZGV4IDg0NjE4NzEuLmUxZWJiMGIgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24va2VybmVs LmMKKysrIGIveGVuL2NvbW1vbi9rZXJuZWwuYwpAQCAtNDksNyArNDksNyBAQCBzdGF0aWMgdm9p ZCBfX2luaXQgYXNzaWduX2ludGVnZXJfcGFyYW0oCiAKIHN0YXRpYyB2b2lkIF9faW5pdCBfY21k bGluZV9wYXJzZShjb25zdCBjaGFyICpjbWRsaW5lKQogewotICAgIGNoYXIgb3B0WzEwMF0sICpv cHR2YWwsICpvcHRrZXksICpxOworICAgIGNoYXIgb3B0WzEyOF0sICpvcHR2YWwsICpvcHRrZXks ICpxOwogICAgIGNvbnN0IGNoYXIgKnAgPSBjbWRsaW5lOwogICAgIGNvbnN0IHN0cnVjdCBrZXJu ZWxfcGFyYW0gKnBhcmFtOwogICAgIGludCBib29sX2Fzc2VydDsKZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL2NoYXIvbnMxNjU1MC5jIGIveGVuL2RyaXZlcnMvY2hhci9uczE2NTUwLmMKaW5kZXgg ZTRkZTNiNC4uMGQ0OGRjZiAxMDA2NDQKLS0tIGEveGVuL2RyaXZlcnMvY2hhci9uczE2NTUwLmMK KysrIGIveGVuL2RyaXZlcnMvY2hhci9uczE2NTUwLmMKQEAgLTM4LDExICszOCwyOCBAQAogICog Y2FuIGJlIHNwZWNpZmllZCBpbiBwbGFjZSBvZiBhIG51bWVyaWMgYmF1ZCByYXRlLiBQb2xsZWQg bW9kZSBpcyBzcGVjaWZpZWQKICAqIGJ5IHJlcXVlc3RpbmcgaXJxIDAuCiAgKi8KLXN0YXRpYyBj aGFyIF9faW5pdGRhdGEgb3B0X2NvbTFbMzBdID0gIiI7Ci1zdGF0aWMgY2hhciBfX2luaXRkYXRh IG9wdF9jb20yWzMwXSA9ICIiOworc3RhdGljIGNoYXIgX19pbml0ZGF0YSBvcHRfY29tMVsxMjhd ID0gIiI7CitzdGF0aWMgY2hhciBfX2luaXRkYXRhIG9wdF9jb20yWzEyOF0gPSAiIjsKIHN0cmlu Z19wYXJhbSgiY29tMSIsIG9wdF9jb20xKTsKIHN0cmluZ19wYXJhbSgiY29tMiIsIG9wdF9jb20y KTsKIAordHlwZWRlZiBlbnVtIGVfc2VyaWFsX3BhcmFtX3R5cGUgeworICAgIGJhdWQsCisgICAg YnJpZGdlX2JkZiwKKyAgICBjbG9ja19oeiwKKyAgICBkYXRhX2JpdHMsCisgICAgZGV2aWNlLAor ICAgIGlvX2Jhc2UsCisgICAgaXJxLAorICAgIHBhcml0eSwKKyAgICBwb3J0X2JkZiwKKyAgICBy ZWdfc2hpZnQsCisgICAgcmVnX3dpZHRoLAorICAgIHN0b3BfYml0cywKKyAgICAvKiBsaXN0IGFs bCBwYXJhbWV0ZXJzIGJlZm9yZSB0aGlzIGxpbmUgKi8KKyAgICBtYXhfc2VyaWFsX3BhcmFtcwor fSBzZXJpYWxfcGFyYW1fdHlwZTsKKwogc3RhdGljIHN0cnVjdCBuczE2NTUwIHsKICAgICBpbnQg YmF1ZCwgY2xvY2tfaHosIGRhdGFfYml0cywgcGFyaXR5LCBzdG9wX2JpdHMsIGZpZm9fc2l6ZSwg aXJxOwogICAgIHU2NCBpb19iYXNlOyAgIC8qIEkvTyBwb3J0IG9yIG1lbW9yeS1tYXBwZWQgSS9P IGFkZHJlc3MuICovCkBAIC03Nyw2ICs5NCwzMSBAQCBzdGF0aWMgc3RydWN0IG5zMTY1NTAgewog I2VuZGlmCiB9IG5zMTY1NTBfY29tWzJdID0geyB7IDAgfSB9OwogCitzdHJ1Y3Qgc2VyaWFsX3Bh cmFtX3ZhcgoreworICAgIGNvbnN0IGNoYXIgKnNwX25hbWU7CisgICAgc2VyaWFsX3BhcmFtX3R5 cGUgc3BfdHlwZTsKK307CisKKy8qCisgKiBFbnVtIHN0cnVjdCBrZWVwaW5nIGEgdGFibGUgb2Yg YWxsIGFjY2VwdGVkIHBhcmFtZXRlciBuYW1lcworICogZm9yIHBhcnNpbmcgY21kbGluZSBmb3Ig c2VyaWFsIHBvcnQgY29tMSBhbmQgY29tMgorICovCitzdGF0aWMgY29uc3Qgc3RydWN0IHNlcmlh bF9wYXJhbV92YXIgX19pbml0Y29uc3Qgc3BfdmFyc1tdID0geworICAgIHsiYmF1ZCIsIGJhdWR9 LAorICAgIHsiYnJpZGdlIiwgYnJpZGdlX2JkZn0sCisgICAgeyJjbG9jay1oeiIsIGNsb2NrX2h6 fSwKKyAgICB7ImRhdGEtYml0cyIsIGRhdGFfYml0c30sCisgICAgeyJkZXYiLCBkZXZpY2V9LAor ICAgIHsiaW8tYmFzZSIsIGlvX2Jhc2V9LAorICAgIHsiaXJxIiwgaXJxfSwKKyAgICB7InBhcml0 eSIsIHBhcml0eX0sCisgICAgeyJwb3J0IiwgcG9ydF9iZGZ9LAorICAgIHsicmVnLXNoaWZ0Iiwg cmVnX3NoaWZ0fSwKKyAgICB7InJlZy13aWR0aCIsIHJlZ193aWR0aH0sCisgICAgeyJzdG9wLWJp dHMiLCBzdG9wX2JpdHN9LAorfTsKKwogI2lmZGVmIENPTkZJR19IQVNfUENJCiBzdHJ1Y3QgbnMx NjU1MF9jb25maWcgewogICAgIHUxNiB2ZW5kb3JfaWQ7CkBAIC0xMDgzLDI2ICsxMTI1LDc2IEBA IHBjaV91YXJ0X2NvbmZpZyhzdHJ1Y3QgbnMxNjU1MCAqdWFydCwgYm9vbF90IHNraXBfYW10LCB1 bnNpZ25lZCBpbnQgaWR4KQogfQogI2VuZGlmCiAKKy8qIHVzZWQgdG8gcGFyc2UgbmFtZSB2YWx1 ZSBwYWlycyBhbmQgcmV0dXJuIHdoaWNoIHZhbHVlIGl0IGlzCisgKiBhbG9uZyB3aXRoIHBvaW50 ZXIgZm9yIHRoZSBleHRyYWN0ZWQgdmFsdWUgLSBleHRfdmFsdWUgKi8KK3N0YXRpYyBfX2luaXQg c2VyaWFsX3BhcmFtX3R5cGUgZ2V0X3Rva2VuKGNoYXIgKnRva2VuLCBjaGFyICpleHRfdmFsdWUp Cit7CisgICAgY29uc3QgY2hhciAqcGFyYW1fbmFtZTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKwor ICAgIHBhcmFtX25hbWUgPSBzdHJzZXAoJnRva2VuLCAiPSIpOworICAgIGlmICggcGFyYW1fbmFt ZSA9PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIG1heF9zZXJpYWxfcGFyYW1zOworCisgICAgLyog bGluZWFyIHNlYXJjaCBmb3IgdGhlIHBhcmFtZXRlciAqLworICAgIGZvciAoIGkgPSAwOyBpIDwg QVJSQVlfU0laRShzcF92YXJzKTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggc3RyY21wKHNw X3ZhcnNbaV0uc3BfbmFtZSwgcGFyYW1fbmFtZSkgPT0gMCApCisgICAgICAgIHsKKyAgICAgICAg ICAgIC8qIHRva2VuIGhhcyB0aGUgcGFyYW0gdmFsdWUgYWZ0ZXIgdGhlIGVxdWFsIHRvIHNpZ24K KyAgICAgICAgICAgICAqIGV4dF92YWx1ZSBpcyBhIDE2LWJ5dGUgYnVmZmVyIC0gcGFyYW1fdmFs dWVbMTZdCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHN0cmxjcHkoZXh0X3ZhbHVlLCB0 b2tlbiwgMTYpOworICAgICAgICAgICAgcmV0dXJuIHNwX3ZhcnNbaV0uc3BfdHlwZTsKKyAgICAg ICAgfQorICAgIH0KKworICAgIHJldHVybiBtYXhfc2VyaWFsX3BhcmFtczsKK30KKwogI2RlZmlu ZSBQQVJTRV9FUlIoX2YsIF9hLi4uKSAgICAgICAgICAgICAgICAgXAogICAgIGRvIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBwcmludGsoICJFUlJPUjog IiBfZiAiXG4iICwgIyMgX2EgKTsgXAogICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAogICAgIH0gd2hpbGUgKCAwICkKIAotc3RhdGljIHZvaWQgX19pbml0IG5z MTY1NTBfcGFyc2VfcG9ydF9jb25maWcoCi0gICAgc3RydWN0IG5zMTY1NTAgKnVhcnQsIGNvbnN0 IGNoYXIgKmNvbmYpCisjZGVmaW5lIFBBUlNFX0VSUl9SRVQoX2YsIF9hLi4uKSAgICAgICAgICAg ICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgIHByaW50ayggIkVSUk9SOiAiIF9mICJcbiIgLCAjIyBfYSApOyBcCisgICAgICAgIHJldHVy biBmYWxzZTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoIDAgKQorCisK K3N0YXRpYyBib29sIF9faW5pdCBwYXJzZV9wb3NpdGlvbmFsKHN0cnVjdCBuczE2NTUwICp1YXJ0 LCBjaGFyICoqc3RyKQogewogICAgIGludCBiYXVkOworICAgIGNvbnN0IGNoYXIgKmNvbmY7Cisg ICAgY2hhciAqbmFtZV92YWxfcG9zOwogCi0gICAgLyogTm8gdXNlci1zcGVjaWZpZWQgY29uZmln dXJhdGlvbj8gKi8KLSAgICBpZiAoIChjb25mID09IE5VTEwpIHx8ICgqY29uZiA9PSAnXDAnKSAp CisgICAgY29uZiA9ICpzdHI7CisgICAgbmFtZV92YWxfcG9zID0gc3RyY2hyKGNvbmYsICc9Jyk7 CisKKyAgICAvKiBmaW5kaW5nIHRoZSBlbmQgb2YgdGhlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyAq LworICAgIGlmICggbmFtZV92YWxfcG9zICkKICAgICB7Ci0gICAgICAgIC8qIFNvbWUgcGxhdGZv cm1zIG1heSBhdXRvbWF0aWNhbGx5IHByb2JlIHRoZSBVQVJUIGNvbmZpZ3VhcnRpb24uICovCi0g ICAgICAgIGlmICggdWFydC0+YmF1ZCAhPSAwICkKLSAgICAgICAgICAgIGdvdG8gY29uZmlnX3Bh cnNlZDsKLSAgICAgICAgcmV0dXJuOworICAgICAgICB3aGlsZSAobmFtZV92YWxfcG9zID4gKnN0 cikKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZV92YWxfcG9zLS07IC8qIHdvcmtpbmcgYmFj a3dhcmRzIGZyb20gdGhlID0gc2lnbiAqLworICAgICAgICAgICAgaWYgKCAqbmFtZV92YWxfcG9z ID09ICcsJyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgKm5hbWVfdmFsX3BvcyA9 ICdcMCc7CisgICAgICAgICAgICAgICAgbmFtZV92YWxfcG9zKys7CisgICAgICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKKyAgICAqc3RyID0gbmFt ZV92YWxfcG9zOworICAgIC8qIHdoZW4gdGhlcmUgYXJlIG5vIHBvc2l0aW9uYWwgcGFyYW1ldGVy cywgd2UgcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uICovCisgICAgaWYgKGNvbmYgPT0gKnN0cikK KyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvKiBwYXJzZSBwb3NpdGlvbmFsIHBhcmFtZXRl cnMgaGVyZSAqLwogICAgIGlmICggc3RybmNtcChjb25mLCAiYXV0byIsIDQpID09IDAgKQogICAg IHsKICAgICAgICAgdWFydC0+YmF1ZCA9IEJBVURfQVVUTzsKQEAgLTExMzIsMTMgKzEyMjQsMTMg QEAgc3RhdGljIHZvaWQgX19pbml0IG5zMTY1NTBfcGFyc2VfcG9ydF9jb25maWcoCiAgICAgICAg IGlmICggc3RybmNtcChjb25mLCAicGNpIiwgMykgPT0gMCApCiAgICAgICAgIHsKICAgICAgICAg ICAgIGlmICggcGNpX3VhcnRfY29uZmlnKHVhcnQsIDEvKiBza2lwIEFNVCAqLywgdWFydCAtIG5z MTY1NTBfY29tKSApCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJl dHVybiB0cnVlOwogICAgICAgICAgICAgY29uZiArPSAzOwogICAgICAgICB9CiAgICAgICAgIGVs c2UgaWYgKCBzdHJuY21wKGNvbmYsICJhbXQiLCAzKSA9PSAwICkKICAgICAgICAgewogICAgICAg ICAgICAgaWYgKCBwY2lfdWFydF9jb25maWcodWFydCwgMCwgdWFydCAtIG5zMTY1NTBfY29tKSAp Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog ICAgICAgICAgICAgY29uZiArPSAzOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKQEAgLTExNTcs MTkgKzEyNDksMTI5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBuczE2NTUwX3BhcnNlX3BvcnRfY29u ZmlnKAogICAgICAgICBjb25mID0gcGFyc2VfcGNpKGNvbmYsIE5VTEwsICZ1YXJ0LT5wc19iZGZb MF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgJnVhcnQtPnBzX2JkZlsxXSwgJnVhcnQtPnBz X2JkZlsyXSk7CiAgICAgICAgIGlmICggIWNvbmYgKQotICAgICAgICAgICAgUEFSU0VfRVJSKCJC YWQgcG9ydCBQQ0kgY29vcmRpbmF0ZXMiKTsKLSAgICAgICAgdWFydC0+cHNfYmRmX2VuYWJsZSA9 IDE7CisgICAgICAgICAgICBQQVJTRV9FUlJfUkVUKCJCYWQgcG9ydCBQQ0kgY29vcmRpbmF0ZXMi KTsKKyAgICAgICAgdWFydC0+cHNfYmRmX2VuYWJsZSA9IHRydWU7CiAgICAgfQogCiAgICAgaWYg KCAqY29uZiA9PSAnLCcgJiYgKisrY29uZiAhPSAnLCcgKQogICAgIHsKICAgICAgICAgaWYgKCAh cGFyc2VfcGNpKGNvbmYsIE5VTEwsICZ1YXJ0LT5wYl9iZGZbMF0sCiAgICAgICAgICAgICAgICAg ICAgICAgICAmdWFydC0+cGJfYmRmWzFdLCAmdWFydC0+cGJfYmRmWzJdKSApCi0gICAgICAgICAg ICBQQVJTRV9FUlIoIkJhZCBicmlkZ2UgUENJIGNvb3JkaW5hdGVzIik7Ci0gICAgICAgIHVhcnQt PnBiX2JkZl9lbmFibGUgPSAxOworICAgICAgICAgICAgUEFSU0VfRVJSX1JFVCgiQmFkIGJyaWRn ZSBQQ0kgY29vcmRpbmF0ZXMiKTsKKyAgICAgICAgdWFydC0+cGJfYmRmX2VuYWJsZSA9IHRydWU7 CiAgICAgfQogI2VuZGlmCiAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgX19p bml0IHBhcnNlX25hbWV2YWx1ZV9wYWlycyhjaGFyICpzdHIsIHN0cnVjdCBuczE2NTUwICp1YXJ0 KQoreworICAgIGNoYXIgKnRva2VuLCAqc3RhcnQgPSBzdHI7CisgICAgY2hhciBwYXJhbV92YWx1 ZVsxNl07CisgICAgYm9vbCBkZXZfc2V0ID0gZmFsc2U7CisKKyAgICBpZiAoIChzdHIgPT0gTlVM TCkgfHwgKCpzdHIgPT0gJ1wwJykgKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8qIHN0 cnNlcCBnaXZlcyBOVUxMIHdoZW4gdGhlcmUgYXJlIG5vIHRva2VucyBmb3VuZCAqLworICAgIGRv CisgICAgeworICAgICAgICAvKiB3aGVuIG5vIHRva2VucyBhcmUgZm91bmQsIHN0YXJ0IHdpbGwg YmUgTlVMTCAqLworICAgICAgICB0b2tlbiA9IHN0cnNlcCgmc3RhcnQsICIsIik7CisKKyAgICAg ICAgc3dpdGNoKCBnZXRfdG9rZW4odG9rZW4sIHBhcmFtX3ZhbHVlKSApIHsKKyAgICAgICAgY2Fz ZSBiYXVkOgorICAgICAgICAgICAgdWFydC0+YmF1ZCA9IHNpbXBsZV9zdHJ0b3VsKHBhcmFtX3Zh bHVlLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGJyaWRnZV9i ZGY6CisgICAgICAgIGlmICggIXBhcnNlX3BjaShwYXJhbV92YWx1ZSwgTlVMTCwgJnVhcnQtPnBz X2JkZlswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZ1YXJ0LT5wc19iZGZbMV0sICZ1YXJ0 LT5wc19iZGZbMl0pKQorICAgICAgICAgICAgICAgIFBBUlNFX0VSUl9SRVQoIkJhZCBwb3J0IFBD SSBjb29yZGluYXRlc1xuIik7CisgICAgICAgICAgICB1YXJ0LT5wc19iZGZfZW5hYmxlID0gMTsK KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIGNsb2NrX2h6OgorICAgICAgICAgICAg dWFydC0+Y2xvY2tfaHogPSAoc2ltcGxlX3N0cnRvdWwocGFyYW1fdmFsdWUsIE5VTEwsIDApIDw8 IDQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgZGV2aWNlOgorICAgICAgICAg ICAgaWYgKCBzdHJuY21wKHBhcmFtX3ZhbHVlLCAicGNpIiwgMykgPT0gMCApCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgICAgcGNpX3VhcnRfY29uZmlnKHVhcnQsIDEvKiBza2lwIEFNVCAq LywgdWFydCAtIG5zMTY1NTBfY29tKTsKKyAgICAgICAgICAgICAgICBkZXZfc2V0ID0gdHJ1ZTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJuY21wKHBhcmFtX3ZhbHVl LCAiYW10IiwgMykgPT0gMCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGNpX3Vh cnRfY29uZmlnKHVhcnQsIDAsIHVhcnQgLSBuczE2NTUwX2NvbSk7CisgICAgICAgICAgICAgICAg ZGV2X3NldCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgY2FzZSBpb19iYXNlOgorICAgICAgICAgICAgaWYgKCBkZXZfc2V0ID09IHRydWUgKQorICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgIHByaW50ayhYRU5MT0dfV0FSTklORworICAgICAg ICAgICAgICAgICAgICAgICAiQ2FuJ3QgdXNlIGlvX2Jhc2Ugd2l0aCBkZXY9cGNpIG9yIGRldj1h bXQgb3B0aW9uc1xuIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg ICAgICAgICAgICB1YXJ0LT5pb19iYXNlID0gc2ltcGxlX3N0cnRvdWwocGFyYW1fdmFsdWUsIE5V TEwsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgaXJxOgorICAgICAgICAg ICAgdWFydC0+aXJxID0gc2ltcGxlX3N0cnRvdWwocGFyYW1fdmFsdWUsIE5VTEwsIDApOworICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgZGF0YV9iaXRzOgorICAgICAgICAgICAgdWFy dC0+ZGF0YV9iaXRzID0gc2ltcGxlX3N0cnRvdWwocGFyYW1fdmFsdWUsIE5VTEwsIDApOworICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgcGFyaXR5OgorICAgICAgICAgICAgdWFydC0+ cGFyaXR5ID0gcGFyc2VfcGFyaXR5X2NoYXIoKnBhcmFtX3ZhbHVlKTsKKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICBjYXNlIHBvcnRfYmRmOgorICAgICAgICAgICAgaWYgKCAhcGFyc2VfcGNp KHBhcmFtX3ZhbHVlLCBOVUxMLCAmdWFydC0+cGJfYmRmWzBdLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZ1YXJ0LT5wYl9iZGZbMV0sICZ1YXJ0LT5wYl9iZGZbMl0pKQorICAgICAgICAg ICAgICAgIFBBUlNFX0VSUl9SRVQoIkJhZCBwb3J0IFBDSSBjb29yZGluYXRlc1xuIik7CisgICAg ICAgICAgICB1YXJ0LT5wYl9iZGZfZW5hYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIHN0b3BfYml0czoKKyAgICAgICAgICAgIHVhcnQtPnN0b3BfYml0cyA9IHNp bXBsZV9zdHJ0b3VsKHBhcmFtX3ZhbHVlLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIHJlZ19zaGlmdDoKKyAgICAgICAgICAgIHVhcnQtPnJlZ19zaGlmdCA9IHNp bXBsZV9zdHJ0b3VsKHBhcmFtX3ZhbHVlLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBjYXNlIHJlZ193aWR0aDoKKyAgICAgICAgICAgIHVhcnQtPnJlZ193aWR0aCA9IHNp bXBsZV9zdHJ0b3VsKHBhcmFtX3ZhbHVlLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIGJyZWFrOwor ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUEFSU0VfRVJSX1JFVCgiSW52YWxpZCBwYXJh bWV0ZXI6ICVzXG4iLCB0b2tlbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg IH0gd2hpbGUgKCBzdGFydCAhPSBOVUxMICk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3Rh dGljIHZvaWQgX19pbml0IG5zMTY1NTBfcGFyc2VfcG9ydF9jb25maWcoCisgICAgc3RydWN0IG5z MTY1NTAgKnVhcnQsIGNvbnN0IGNoYXIgKmNvbmYpCit7CisgICAgY2hhciBjbWRsaW5lWzEyOF07 CisgICAgY2hhciAqc3RyOworCisgICAgLyogTm8gdXNlci1zcGVjaWZpZWQgY29uZmlndXJhdGlv bj8gKi8KKyAgICBpZiAoIChjb25mID09IE5VTEwpIHx8ICgqY29uZiA9PSAnXDAnKSApCisgICAg eworICAgICAgICAvKiBTb21lIHBsYXRmb3JtcyBtYXkgYXV0b21hdGljYWxseSBwcm9iZSB0aGUg VUFSVCBjb25maWd1YXJ0aW9uLiAqLworICAgICAgICBpZiAoIHVhcnQtPmJhdWQgIT0gMCApCisg ICAgICAgICAgICBnb3RvIGNvbmZpZ19wYXJzZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK KyAgICBzdHJsY3B5KGNtZGxpbmUsIGNvbmYsIEFSUkFZX1NJWkUoY21kbGluZSkpOworICAgIHN0 ciA9IGNtZGxpbmU7CisKKyAgICAvKiBwYXJzZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgYW5kIGdl dCBwb2ludGVyIGZvciBuYW1lLXZhbHVlIHBhaXJzICovCisgICAgaWYgKCAhcGFyc2VfcG9zaXRp b25hbCh1YXJ0LCAmc3RyKSApCisgICAgICAgIHJldHVybjsKKworICAgIGlmICggIXBhcnNlX25h bWV2YWx1ZV9wYWlycyhzdHIsIHVhcnQpICkKKyAgICAgICAgcmV0dXJuOworCiAgY29uZmlnX3Bh cnNlZDoKICAgICAvKiBTYW5pdHkgY2hlY2tzLiAqLwogICAgIGlmICggKHVhcnQtPmJhdWQgIT0g QkFVRF9BVVRPKSAmJgpAQCAtMTE3Nyw2ICsxMzc5LDggQEAgc3RhdGljIHZvaWQgX19pbml0IG5z MTY1NTBfcGFyc2VfcG9ydF9jb25maWcoCiAgICAgICAgIFBBUlNFX0VSUigiQmF1ZCByYXRlICVk IG91dHNpZGUgc3VwcG9ydGVkIHJhbmdlLiIsIHVhcnQtPmJhdWQpOwogICAgIGlmICggKHVhcnQt PmRhdGFfYml0cyA8IDUpIHx8ICh1YXJ0LT5kYXRhX2JpdHMgPiA4KSApCiAgICAgICAgIFBBUlNF X0VSUigiJWQgZGF0YSBiaXRzIGFyZSB1bnN1cHBvcnRlZC4iLCB1YXJ0LT5kYXRhX2JpdHMpOwor ICAgIGlmICggKHVhcnQtPnJlZ193aWR0aCAhPSAxKSAmJiAodWFydC0+cmVnX3dpZHRoICE9IDQp ICkKKyAgICAgICAgUEFSU0VfRVJSKCJBY2NlcHRlZCB2YWx1ZXMgb2YgcmVnX3dpZHRoIGFyZSAx IGFuZCA0IG9ubHkiKTsKICAgICBpZiAoICh1YXJ0LT5zdG9wX2JpdHMgPCAxKSB8fCAodWFydC0+ c3RvcF9iaXRzID4gMikgKQogICAgICAgICBQQVJTRV9FUlIoIiVkIHN0b3AgYml0cyBhcmUgdW5z dXBwb3J0ZWQuIiwgdWFydC0+c3RvcF9iaXRzKTsKICAgICBpZiAoIHVhcnQtPmlvX2Jhc2UgPT0g MCApCi0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0 cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=