From mboxrd@z Thu Jan 1 00:00:00 1970 From: Swapnil Paratey Subject: [PATCH v6] ns16550: Add support for UART parameters to be specifed with name-value pairs Date: Thu, 27 Apr 2017 18:01:20 -0500 Message-ID: <1493334080-20075-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 1d3sPl-0003CX-Mv for xen-devel@lists.xenproject.org; Thu, 27 Apr 2017 23:01:34 +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+ aQoKLS0tCkNoYW5nZWQgc2luY2UgdjU6CiAqIEV4dGVuZGVkIGNoYW5nZWxpc3QgZm9yIFBBVENI IHY0IGFuZCB2NQogKiBSZW1vdmVkIGNvbnN0IGZvciBuYW1lWzEyXSBpbiBzZXJpYWxfcGFyYW1f dmFyCiAqIENoYW5nZWQgImV4dF92YWx1ZSIgcG9pbnRlciB0byAidmFsdWUiIGRvdWJsZSBwb2lu dGVyIGluIGdldF90b2tlbigpCiAqIFJlbW92ZWQgcGFyZW50aGVzaXMgaW4gY2xvY2tfaHogY2Fz ZSBzdGF0ZW1lbnQKCkNoYW5nZWQgc2luY2UgdjQ6CiAqIENoYW5nZWQgbWF4X3NlcmlhbF9wYXJh bXMgdG8gbnVtX3NlcmlhbF9wYXJhbXMgaW4gZW51bSBlX3NlcmlhbF9wYXJhbV90eXBlCiAqIENo YW5nZWQgKnNwX25hbWUgaW4gc3RydWN0IHNlcmlhbF9wYXJhbV92YXIgdG8gYSAxMiBieXRlIGJ1 ZmZlcgogKiBSZW1vdmVkIHNwXyBwcmVmaXggaW4gc3BfbmFtZSBpbiBzdHJ1Y3Qgc2VyaWFsX3Bh cmFtX3ZhcgogKiBSZW1vdmVkIGlmKCBuYW1lX3ZhbF9wb3MgKSBjaGVjayBiZWZvcmUgd2hpbGUo KSBsb29wIGluIHBhcnNlX3Bvc2l0aW9uYWwoKQogKiBBZGRlZCBibGFuayBsaW5lcyBmb3Igbm9u LWZhbGwtdGhyb3VnaCBjYXNlIGJsb2NrcyBpbiBzd2l0Y2ggc3RhdGVtZW50IGluc2lkZQogICBw YXJzZV9uYW1ldmFsdWVfcGFpcnMKICogQ2hhbmdlZCBjb21wYXJpc29uIG9mIGEgYm9vbCB3aXRo ICJ0cnVlIiBmb3IgZGV2X3NldCBpbiBpb19iYXNlIGNhc2UuCiAqIENoYW5nZWQgY21kbGluZSB0 byBjb21fY29uc29sZV9vcHRpb25zIGluIG5zMTY1NTBfcGFyc2VfcG9ydF9jb25maWcoKQogKiBD aGFuZ2VkIGlvX2Jhc2Ugc2V0dGluZyBhZnRlciBwY2kgZGV2aWNlIHNwZWNpZmljYXRpb24gdG8g Z2l2ZSBhbiBlcnJvcgogICBtZXNzYWdlIGluc3RlYWQgb2YgUEFSU0VfRVJSX1JFVAogKiBSZW1v dmVkIGNvbmZpZ19wYXJzZWQgZ290byBzdGF0ZW1lbnRzIG91dHNpZGUgb2YgZXJyb3IgY2xlYW51 cAogKiBSZW1vdmVkIHRoZSBmdWxsLXN0b3AgKC4pIGluIHNhbml0eSBjaGVja3MgZm9yIHJlZ193 aWR0aCBhdCB0aGUgZW5kIG9mCiAgIG5zMTY1NTBfcGFyc2VfcG9ydF9jb25maWcKCkNoYW5nZWQg c2luY2UgdjM6CiAqIENoYW5nZWQgc3ViamVjdC90aXRsZSBvZiB0aGUgcGF0Y2gKICAgUHJldmlv dXMgbmFtZTogbnMxNjU1MC1BZGQtY29tbWFuZC1saW5lLXBhcnNpbmctYWRqdXN0bWVudHMKICog SW5jcmVhc2VkIGxlbmd0aCBvZiBvcHRfY29tMSBhbmQgb3B0X2NvbTIgYnVmZmVycyB0byAxMjgg Ynl0ZXMuCiAqIENoYW5nZWQgd3JvbmdseSB1c2VkIGJ1czpkZXZpY2U6ZnVuY3Rpb24gdG8gYnVz OmRldmljZS5mdW5jdGlvbiBpbgogICB4ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duCiAqIFVzaW5n ICctJyBpbnN0ZWFkIG9mICdfJyBmb3IgbmFtZS12YWx1ZSBwYWlycwogICBlZy4gcmVnLXdpZHRo IGluc3RlYWQgb2YgcmVnX3dpZHRoLCBzdG9wLWJpdHMgaW5zdGVhZCBvZiBzdG9wX2JpdHMKICog VXNlZCBfX2luaXRjb25zdCBmb3Igc2VyaWFsX3BhcmFtX3ZhciBzdHJ1Y3QKICogQ2hhbmdlZCBn ZXRfdG9rZW5fdmFsdWUgZnVuY3Rpb24gbmFtZSB0byBnZXRfdG9rZW4KICogVmFsdWVzIGZvciBu YW1lLXZhbHVlIHBhaXJzIGluIGdldF90b2tlbiBhcmUgZXh0cmFjdGVkIG9ubHkgd2hlbiBhIG1h dGNoCiAgIGlzIGZvdW5kIGluIHRoZSB0YWJsZSBmb3IgdmFsaWQgbmFtZS12YWx1ZSBwYWlycwog KiBSZW1vdmVkIGludGVybWVkaWF0ZSByZXR1cm4gdmFyaWFibGUgZm9yIGdldF90b2tlbiBmdW5j dGlvbiBhbmQgdXNlZCBpdAogICBkaXJlY3RseSBpbiB0aGUgc3dpdGNoIHN0YXRlbWVudCBmb3Ig c2V0dGluZyBVQVJUIGNvbmZpZ3MgaW4KICAgcGFyc2VfbmFtZXZhbHVlX3BhaXJzCgpDaGFuZ2Vk IHNpbmNlIHYyOgogKiBBZGRlZCBuYW1lPXZhbHVlIHNwZWNpZmljYXRpb24gZm9yIGNvbTEgYW5k IGNvbTIgY29tbWFuZCBsaW5lCiAgIHBhcmFtZXRlciBpbnB1dCBmb3IgVUFSVCBkZXZpY2VzCiAg IFN5bnRheDogImNvbTE9KHBvc2l0aW9uYWwgcGFyYW1ldGVycyksKG5hbWUtdmFsdWUgcGFyYW1l dGVycykiCiAqIE1haW50YWluZWQgcHJldmlvdXMgcG9zaXRpb25hbCBzcGVjaWZpY2F0aW9uIGZv ciBVQVJUIHBhcmFtZXRlcnMKICogQWxsIHBhcmFtZXRlcnMgc2hvdWxkIGJlIGNvbW1hLXNlcGFy YXRlZAoKQ2hhbmdlZCBzaW5jZSB2MToKICogQ2hhbmdlZCBvcHRfY29tMSBhbmQgb3B0X2NvbTIg YXJyYXkgc2l6ZSB0byA2NCAocG93ZXIgb2YgMikuCiAqIEFkZGVkIGRlc2NyaXB0aW9ucyBmb3Ig cmVnX3dpZHRoIGFuZCByZWdfc2hpZnQgaW4KICAgZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUu bWFya2Rvd24KICogQ2hhbmdlZCBzdWJqZWN0IHRvIG5zMTY1NTAgZnJvbSAxNjU1MCBmb3IgYmV0 dGVyIHRyYWNraW5nLgotLS0KIGRvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLm1hcmtkb3duIHwg IDM4ICsrKysrKwogeGVuL2NvbW1vbi9rZXJuZWwuYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHhlbi9kcml2ZXJzL2NoYXIvbnMxNjU1MC5jICAgICAgICAgIHwgMjQ1ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCAyNjggaW5zZXJ0aW9ucygr KSwgMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxp bmUubWFya2Rvd24gYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgppbmRleCA0 NTBiMjIyLi41MzA1MmIyIDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5t YXJrZG93bgorKysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJrZG93bgpAQCAtMzI0 LDYgKzMyNCw0NCBAQCBCb3RoIG9wdGlvbiBgY29tMWAgYW5kIGBjb20yYCBmb2xsb3cgdGhlIHNh bWUgZm9ybWF0LgogCiBBIHR5cGljYWwgc2V0dXAgZm9yIG1vc3Qgc2l0dWF0aW9ucyBtaWdodCBi ZSBgY29tMT0xMTUyMDAsOG4xYAogCitJbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgcG9zaXRpb25h bCBzcGVjaWZpY2F0aW9uIGZvciBVQVJUIHBhcmFtZXRlcnMsCituYW1lPXZhbHVlIHBhaXIgc3Bl Y2ZpY2F0aW9ucyBhcmUgYWxzbyBzdXBwb3J0ZWQuIFRoaXMgaXMgdXNlZCB0byBhZGQKK2ZsZXhp YmlsaXR5IGZvciBVQVJUIGRldmljZXMgd2hpY2ggcmVxdWlyZSBhZGRpdGlvbmFsIFVBUlQgcGFy YW1ldGVyCitjb25maWd1cmF0aW9ucy4KKworVGhlIGNvbW1hIHNlcGFyYXRpb24gc3RpbGwgZGVs aW5lYXRlcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMuIEhlbmNlLAordW5sZXNzIHRoZSBwYXJhbWV0 ZXIgaXMgZXhwbGljaXRseSBzcGVjaWZpZWQgd2l0aCBuYW1lPXZhbHVlIG9wdGlvbiwgaXQKK3dp bGwgYmUgY29uc2lkZXJlZCBhIHBvc2l0aW9uYWwgcGFyYW1ldGVyLgorCitUaGUgc3ludGF4IGNv bnNpc3RzIG9mCitjb20xPShjb21tYS1zZXBhcmF0ZWQgcG9zaXRpb25hbCBwYXJhbWV0ZXJzKSwo Y29tbWEgc2VwYXJhdGVkIG5hbWUtdmFsdWUgcGFpcnMpCisKK1RoZSBhY2NlcHRlZCBuYW1lIGtl eXdvcmRzIGZvciBuYW1lPXZhbHVlIHBhaXJzIGFyZQorICogYGJhdWRgIC0gYWNjZXB0cyBpbnRl Z2VyIGJhdWQgcmF0ZSAoZWcuIDExNTIwMCkgb3IgYGF1dG9gCisgKiBgYnJpZGdlYC0gU2ltaWxh ciB0byBicmlkZ2UtYmRmIGluIHBvc2l0aW9uYWwgcGFyYW1ldGVycy4KKyAgICAgICAgICAgICBV c2VkIHRvIGRldGVybWluZSB0aGUgUENJIGJyaWRnZSB0byBhY2Nlc3MgdGhlIFVBUlQgZGV2aWNl LgorICAgICAgICAgICAgIE5vdGF0aW9uIGlzIHh4Onh4Lnh4IDxidXM+OjxkZXZpY2U+LjxmdW5j dGlvbj4KKyAqIGBjbG9jay1oemAtIGFjY2VwdHMgbGFyZ2UgaW50ZWdlcnMgdG8gc2V0dXAgVUFS VCBjbG9jayBmcmVxdWVuY2llcy4KKyAgICAgICAgICAgICAgIERvIG5vdGUgLSB0aGVzZSB2YWx1 ZXMgYXJlIG11bHRpcGxpZWQgYnkgMTYuCisgKiBgZGF0YS1iaXRzYCAtIGludGVnZXIgYmV0d2Vl biA1IGFuZCA4CisgKiBgZGV2YCAtIGFjY2VwdGVkIHZhbHVlcyBhcmUgYHBjaWAgT1IgYGFtdGAu IElmIHRoaXMgb3B0aW9uCisgICAgICAgICAgIGlzIHVzZWQgdG8gc3BlY2lmeSBpZiB0aGUgc2Vy aWFsIGRldmljZSBpcyBwY2ktYmFzZWQuIFRoZSBpb19iYXNlCisgICAgICAgICAgIGNhbm5vdCBi ZSBzcGVjaWZpZWQgd2hlbiBgZGV2PXBjaWAgb3IgYGRldj1hbXRgIGlzIHVzZWQuCisgKiBgaW8t YmFzZWAgLSBhY2NlcHRzIGludGVnZXIgd2hpY2ggc3BlY2lmaWVkIElPIGJhc2UgcG9ydCBmb3Ig VUFSVCByZWdpc3RlcnMKKyAqIGBpcnFgIC0gSVJRIG51bWJlciB0byB1c2UKKyAqIGBwYXJpdHlg IC0gYWNjZXB0ZWQgdmFsdWVzIGFyZSBzYW1lIGFzIHBvc2l0aW9uYWwgcGFyYW1ldGVycworICog YHBvcnRgIC0gVXNlZCB0byBzcGVjaWZ5IHdoaWNoIHBvcnQgdGhlIFBDSSBzZXJpYWwgZGV2aWNl IGlzIGxvY2F0ZWQgb24KKyAgICAgICAgICAgIE5vdGF0aW9uIGlzIHh4Onh4Lnh4IDxidXM+Ojxk ZXZpY2U+LjxmdW5jdGlvbj4KKyAqIGByZWctc2hpZnRgIC0gcmVnaXN0ZXIgc2hpZnRzIHJlcXVp cmVkIHRvIHNldCBVQVJUIHJlZ2lzdGVycworICogYHJlZy13aWR0aGAgLSByZWdpc3RlciB3aWR0 aCByZXF1aXJlZCB0byBzZXQgVUFSVCByZWdpc3RlcnMKKyAgICAgICAgICAgICAgICAgKG9ubHkg YWNjZXB0cyAxIGFuZCA0KQorICogYHN0b3AtYml0c2AgLSBvbmx5IGFjY2VwdHMgMSBvciAyIGZv ciB0aGUgbnVtYmVyIG9mIHN0b3AgYml0cworCitUaGUgZm9sbG93aW5nIGFyZSBleGFtcGxlcyBv ZiBjb3JyZWN0IHNwZWNpZmljYXRpb25zOgorYGNvbTE9MTE1MjAwLDhuMSwweDNmOCw0YAorYGNv bTE9MTE1MjAwLDhuMSwweDNmOCw0LHJlZ193aWR0aD00LHJlZ19zaGlmdD0yYAorYGNvbTE9YmF1 ZD0xMTUyMDAscGFyaXR5PW4sc3RvcF9iaXRzPTEsaW9fYmFzZT0weDNmOCxyZWdfd2lkdGg9NGAK KwogIyMjIGNvbnJpbmdcX3NpemUKID4gYD0gPHNpemU+YAogCmRpZmYgLS1naXQgYS94ZW4vY29t bW9uL2tlcm5lbC5jIGIveGVuL2NvbW1vbi9rZXJuZWwuYwppbmRleCA4NDYxODcxLi5lMWViYjBi IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2tlcm5lbC5jCisrKyBiL3hlbi9jb21tb24va2VybmVs LmMKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RhdGljIHZvaWQgX19pbml0IGFzc2lnbl9pbnRlZ2VyX3Bh cmFtKAogCiBzdGF0aWMgdm9pZCBfX2luaXQgX2NtZGxpbmVfcGFyc2UoY29uc3QgY2hhciAqY21k bGluZSkKIHsKLSAgICBjaGFyIG9wdFsxMDBdLCAqb3B0dmFsLCAqb3B0a2V5LCAqcTsKKyAgICBj aGFyIG9wdFsxMjhdLCAqb3B0dmFsLCAqb3B0a2V5LCAqcTsKICAgICBjb25zdCBjaGFyICpwID0g Y21kbGluZTsKICAgICBjb25zdCBzdHJ1Y3Qga2VybmVsX3BhcmFtICpwYXJhbTsKICAgICBpbnQg Ym9vbF9hc3NlcnQ7CmRpZmYgLS1naXQgYS94ZW4vZHJpdmVycy9jaGFyL25zMTY1NTAuYyBiL3hl bi9kcml2ZXJzL2NoYXIvbnMxNjU1MC5jCmluZGV4IGU0ZGUzYjQuLjgzY2Y4MjcgMTAwNjQ0Ci0t LSBhL3hlbi9kcml2ZXJzL2NoYXIvbnMxNjU1MC5jCisrKyBiL3hlbi9kcml2ZXJzL2NoYXIvbnMx NjU1MC5jCkBAIC0zOCwxMSArMzgsMjggQEAKICAqIGNhbiBiZSBzcGVjaWZpZWQgaW4gcGxhY2Ug b2YgYSBudW1lcmljIGJhdWQgcmF0ZS4gUG9sbGVkIG1vZGUgaXMgc3BlY2lmaWVkCiAgKiBieSBy ZXF1ZXN0aW5nIGlycSAwLgogICovCi1zdGF0aWMgY2hhciBfX2luaXRkYXRhIG9wdF9jb20xWzMw XSA9ICIiOwotc3RhdGljIGNoYXIgX19pbml0ZGF0YSBvcHRfY29tMlszMF0gPSAiIjsKK3N0YXRp YyBjaGFyIF9faW5pdGRhdGEgb3B0X2NvbTFbMTI4XSA9ICIiOworc3RhdGljIGNoYXIgX19pbml0 ZGF0YSBvcHRfY29tMlsxMjhdID0gIiI7CiBzdHJpbmdfcGFyYW0oImNvbTEiLCBvcHRfY29tMSk7 CiBzdHJpbmdfcGFyYW0oImNvbTIiLCBvcHRfY29tMik7CiAKK2VudW0gc2VyaWFsX3BhcmFtX3R5 cGUgeworICAgIGJhdWQsCisgICAgYnJpZGdlX2JkZiwKKyAgICBjbG9ja19oeiwKKyAgICBkYXRh X2JpdHMsCisgICAgZGV2aWNlLAorICAgIGlvX2Jhc2UsCisgICAgaXJxLAorICAgIHBhcml0eSwK KyAgICBwb3J0X2JkZiwKKyAgICByZWdfc2hpZnQsCisgICAgcmVnX3dpZHRoLAorICAgIHN0b3Bf Yml0cywKKyAgICAvKiBMaXN0IGFsbCBwYXJhbWV0ZXJzIGJlZm9yZSB0aGlzIGxpbmUuICovCisg ICAgbnVtX3NlcmlhbF9wYXJhbXMKK307CisKIHN0YXRpYyBzdHJ1Y3QgbnMxNjU1MCB7CiAgICAg aW50IGJhdWQsIGNsb2NrX2h6LCBkYXRhX2JpdHMsIHBhcml0eSwgc3RvcF9iaXRzLCBmaWZvX3Np emUsIGlycTsKICAgICB1NjQgaW9fYmFzZTsgICAvKiBJL08gcG9ydCBvciBtZW1vcnktbWFwcGVk IEkvTyBhZGRyZXNzLiAqLwpAQCAtNzcsNiArOTQsMzAgQEAgc3RhdGljIHN0cnVjdCBuczE2NTUw IHsKICNlbmRpZgogfSBuczE2NTUwX2NvbVsyXSA9IHsgeyAwIH0gfTsKIAorc3RydWN0IHNlcmlh bF9wYXJhbV92YXIgeworICAgIGNoYXIgbmFtZVsxMl07CisgICAgZW51bSBzZXJpYWxfcGFyYW1f dHlwZSB0eXBlOworfTsKKworLyoKKyAqIEVudW0gc3RydWN0IGtlZXBpbmcgYSB0YWJsZSBvZiBh bGwgYWNjZXB0ZWQgcGFyYW1ldGVyIG5hbWVzIGZvciBwYXJzaW5nCisgKiBjb21fY29uc29sZV9v cHRpb25zIGZvciBzZXJpYWwgcG9ydCBjb20xIGFuZCBjb20yLgorICovCitzdGF0aWMgY29uc3Qg c3RydWN0IHNlcmlhbF9wYXJhbV92YXIgX19pbml0Y29uc3Qgc3BfdmFyc1tdID0geworICAgIHsi YmF1ZCIsIGJhdWR9LAorICAgIHsiYnJpZGdlIiwgYnJpZGdlX2JkZn0sCisgICAgeyJjbG9jay1o eiIsIGNsb2NrX2h6fSwKKyAgICB7ImRhdGEtYml0cyIsIGRhdGFfYml0c30sCisgICAgeyJkZXYi LCBkZXZpY2V9LAorICAgIHsiaW8tYmFzZSIsIGlvX2Jhc2V9LAorICAgIHsiaXJxIiwgaXJxfSwK KyAgICB7InBhcml0eSIsIHBhcml0eX0sCisgICAgeyJwb3J0IiwgcG9ydF9iZGZ9LAorICAgIHsi cmVnLXNoaWZ0IiwgcmVnX3NoaWZ0fSwKKyAgICB7InJlZy13aWR0aCIsIHJlZ193aWR0aH0sCisg ICAgeyJzdG9wLWJpdHMiLCBzdG9wX2JpdHN9LAorfTsKKwogI2lmZGVmIENPTkZJR19IQVNfUENJ CiBzdHJ1Y3QgbnMxNjU1MF9jb25maWcgewogICAgIHUxNiB2ZW5kb3JfaWQ7CkBAIC0xMDgzLDI2 ICsxMTI0LDczIEBAIHBjaV91YXJ0X2NvbmZpZyhzdHJ1Y3QgbnMxNjU1MCAqdWFydCwgYm9vbF90 IHNraXBfYW10LCB1bnNpZ25lZCBpbnQgaWR4KQogfQogI2VuZGlmCiAKKy8qCisgKiBVc2VkIHRv IHBhcnNlIG5hbWUgdmFsdWUgcGFpcnMgYW5kIHJldHVybiB3aGljaCB2YWx1ZSBpdCBpcyBhbG9u ZyB3aXRoCisgKiBwb2ludGVyIGZvciB0aGUgZXh0cmFjdGVkIHZhbHVlLgorICovCitzdGF0aWMg ZW51bSBfX2luaXQgc2VyaWFsX3BhcmFtX3R5cGUgZ2V0X3Rva2VuKGNoYXIgKnRva2VuLCBjaGFy ICoqdmFsdWUpCit7CisgICAgY29uc3QgY2hhciAqcGFyYW1fbmFtZTsKKyAgICB1bnNpZ25lZCBp bnQgaTsKKworICAgIHBhcmFtX25hbWUgPSBzdHJzZXAoJnRva2VuLCAiPSIpOworICAgIGlmICgg cGFyYW1fbmFtZSA9PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIG51bV9zZXJpYWxfcGFyYW1zOwor CisgICAgLyogTGluZWFyIHNlYXJjaCBmb3IgdGhlIHBhcmFtZXRlci4gKi8KKyAgICBmb3IgKCBp ID0gMDsgaSA8IEFSUkFZX1NJWkUoc3BfdmFycyk7IGkrKyApCisgICAgeworICAgICAgICBpZiAo IHN0cmNtcChzcF92YXJzW2ldLm5hbWUsIHBhcmFtX25hbWUpID09IDAgKQorICAgICAgICB7Cisg ICAgICAgICAgICAqdmFsdWUgPSB0b2tlbjsKKyAgICAgICAgICAgIHJldHVybiBzcF92YXJzW2ld LnR5cGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVtX3NlcmlhbF9wYXJhbXM7 Cit9CisKICNkZWZpbmUgUEFSU0VfRVJSKF9mLCBfYS4uLikgICAgICAgICAgICAgICAgIFwKICAg ICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcHJp bnRrKCAiRVJST1I6ICIgX2YgIlxuIiAsICMjIF9hICk7IFwKICAgICAgICAgcmV0dXJuOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICggMCApCiAKLXN0YXRpYyB2 b2lkIF9faW5pdCBuczE2NTUwX3BhcnNlX3BvcnRfY29uZmlnKAotICAgIHN0cnVjdCBuczE2NTUw ICp1YXJ0LCBjb25zdCBjaGFyICpjb25mKQorI2RlZmluZSBQQVJTRV9FUlJfUkVUKF9mLCBfYS4u LikgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorICAgICAgICBwcmludGsoICJFUlJPUjogIiBfZiAiXG4iICwgIyMgX2EgKTsgXAor ICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp bGUgKCAwICkKKworCitzdGF0aWMgYm9vbCBfX2luaXQgcGFyc2VfcG9zaXRpb25hbChzdHJ1Y3Qg bnMxNjU1MCAqdWFydCwgY2hhciAqKnN0cikKIHsKICAgICBpbnQgYmF1ZDsKKyAgICBjb25zdCBj aGFyICpjb25mOworICAgIGNoYXIgKm5hbWVfdmFsX3BvczsKIAotICAgIC8qIE5vIHVzZXItc3Bl Y2lmaWVkIGNvbmZpZ3VyYXRpb24/ICovCi0gICAgaWYgKCAoY29uZiA9PSBOVUxMKSB8fCAoKmNv bmYgPT0gJ1wwJykgKQorICAgIGNvbmYgPSAqc3RyOworICAgIG5hbWVfdmFsX3BvcyA9IHN0cmNo cihjb25mLCAnPScpOworCisgICAgLyogRmluZGluZyB0aGUgZW5kIG9mIHRoZSBwb3NpdGlvbmFs IHBhcmFtZXRlcnMuICovCisgICAgd2hpbGUgKCBuYW1lX3ZhbF9wb3MgPiAqc3RyICkKICAgICB7 Ci0gICAgICAgIC8qIFNvbWUgcGxhdGZvcm1zIG1heSBhdXRvbWF0aWNhbGx5IHByb2JlIHRoZSBV QVJUIGNvbmZpZ3VhcnRpb24uICovCi0gICAgICAgIGlmICggdWFydC0+YmF1ZCAhPSAwICkKLSAg ICAgICAgICAgIGdvdG8gY29uZmlnX3BhcnNlZDsKLSAgICAgICAgcmV0dXJuOworICAgICAgICAv KiBXb3JraW5nIGJhY2t3YXJkcyBmcm9tIHRoZSAnPScgc2lnbi4gKi8KKyAgICAgICAgbmFtZV92 YWxfcG9zLS07CisgICAgICAgIGlmICggKm5hbWVfdmFsX3BvcyA9PSAnLCcgKQorICAgICAgICB7 CisgICAgICAgICAgICAqbmFtZV92YWxfcG9zID0gJ1wwJzsKKyAgICAgICAgICAgIG5hbWVfdmFs X3BvcysrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CiAKKyAgICAqc3Ry ID0gbmFtZV92YWxfcG9zOworICAgIC8qIFdoZW4gdGhlcmUgYXJlIG5vIHBvc2l0aW9uYWwgcGFy YW1ldGVycywgd2UgcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uLiAqLworICAgIGlmICggY29uZiA9 PSAqc3RyICkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvKiBQYXJzZSBwb3NpdGlvbmFs IHBhcmFtZXRlcnMgaGVyZS4gKi8KICAgICBpZiAoIHN0cm5jbXAoY29uZiwgImF1dG8iLCA0KSA9 PSAwICkKICAgICB7CiAgICAgICAgIHVhcnQtPmJhdWQgPSBCQVVEX0FVVE87CkBAIC0xMTMyLDEz ICsxMjIwLDEzIEBAIHN0YXRpYyB2b2lkIF9faW5pdCBuczE2NTUwX3BhcnNlX3BvcnRfY29uZmln KAogICAgICAgICBpZiAoIHN0cm5jbXAoY29uZiwgInBjaSIsIDMpID09IDAgKQogICAgICAgICB7 CiAgICAgICAgICAgICBpZiAoIHBjaV91YXJ0X2NvbmZpZyh1YXJ0LCAxLyogc2tpcCBBTVQgKi8s IHVhcnQgLSBuczE2NTUwX2NvbSkgKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIGNvbmYgKz0gMzsKICAgICAgICAgfQog ICAgICAgICBlbHNlIGlmICggc3RybmNtcChjb25mLCAiYW10IiwgMykgPT0gMCApCiAgICAgICAg IHsKICAgICAgICAgICAgIGlmICggcGNpX3VhcnRfY29uZmlnKHVhcnQsIDAsIHVhcnQgLSBuczE2 NTUwX2NvbSkgKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKICAgICAgICAgICAgIGNvbmYgKz0gMzsKICAgICAgICAgfQogICAgICAgICBlbHNl CkBAIC0xMTU3LDE5ICsxMjQ1LDE0MiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbnMxNjU1MF9wYXJz ZV9wb3J0X2NvbmZpZygKICAgICAgICAgY29uZiA9IHBhcnNlX3BjaShjb25mLCBOVUxMLCAmdWFy dC0+cHNfYmRmWzBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICZ1YXJ0LT5wc19iZGZbMV0s ICZ1YXJ0LT5wc19iZGZbMl0pOwogICAgICAgICBpZiAoICFjb25mICkKLSAgICAgICAgICAgIFBB UlNFX0VSUigiQmFkIHBvcnQgUENJIGNvb3JkaW5hdGVzIik7Ci0gICAgICAgIHVhcnQtPnBzX2Jk Zl9lbmFibGUgPSAxOworICAgICAgICAgICAgUEFSU0VfRVJSX1JFVCgiQmFkIHBvcnQgUENJIGNv b3JkaW5hdGVzIik7CisgICAgICAgIHVhcnQtPnBzX2JkZl9lbmFibGUgPSB0cnVlOwogICAgIH0K IAogICAgIGlmICggKmNvbmYgPT0gJywnICYmICorK2NvbmYgIT0gJywnICkKICAgICB7CiAgICAg ICAgIGlmICggIXBhcnNlX3BjaShjb25mLCBOVUxMLCAmdWFydC0+cGJfYmRmWzBdLAogICAgICAg ICAgICAgICAgICAgICAgICAgJnVhcnQtPnBiX2JkZlsxXSwgJnVhcnQtPnBiX2JkZlsyXSkgKQot ICAgICAgICAgICAgUEFSU0VfRVJSKCJCYWQgYnJpZGdlIFBDSSBjb29yZGluYXRlcyIpOwotICAg ICAgICB1YXJ0LT5wYl9iZGZfZW5hYmxlID0gMTsKKyAgICAgICAgICAgIFBBUlNFX0VSUl9SRVQo IkJhZCBicmlkZ2UgUENJIGNvb3JkaW5hdGVzIik7CisgICAgICAgIHVhcnQtPnBiX2JkZl9lbmFi bGUgPSB0cnVlOwogICAgIH0KICNlbmRpZgogCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp YyBib29sIF9faW5pdCBwYXJzZV9uYW1ldmFsdWVfcGFpcnMoY2hhciAqc3RyLCBzdHJ1Y3QgbnMx NjU1MCAqdWFydCkKK3sKKyAgICBjaGFyICp0b2tlbiwgKnN0YXJ0ID0gc3RyOworICAgIGNoYXIg KnBhcmFtX3ZhbHVlID0gTlVMTDsKKyAgICBib29sIGRldl9zZXQgPSBmYWxzZTsKKworICAgIGlm ICggKHN0ciA9PSBOVUxMKSB8fCAoKnN0ciA9PSAnXDAnKSApCisgICAgICAgIHJldHVybiB0cnVl OworCisgICAgZG8KKyAgICB7CisgICAgICAgIC8qIFdoZW4gbm8gdG9rZW5zIGFyZSBmb3VuZCwg c3RhcnQgd2lsbCBiZSBOVUxMICovCisgICAgICAgIHRva2VuID0gc3Ryc2VwKCZzdGFydCwgIiwi KTsKKworICAgICAgICBzd2l0Y2ggKCBnZXRfdG9rZW4odG9rZW4sICZwYXJhbV92YWx1ZSkgKQor ICAgICAgICB7CisgICAgICAgIGNhc2UgYmF1ZDoKKyAgICAgICAgICAgIHVhcnQtPmJhdWQgPSBz aW1wbGVfc3RydG91bChwYXJhbV92YWx1ZSwgTlVMTCwgMCk7CisgICAgICAgICAgICBicmVhazsK KworICAgICAgICBjYXNlIGJyaWRnZV9iZGY6CisgICAgICAgICAgICBpZiAoICFwYXJzZV9wY2ko cGFyYW1fdmFsdWUsIE5VTEwsICZ1YXJ0LT5wc19iZGZbMF0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJnVhcnQtPnBzX2JkZlsxXSwgJnVhcnQtPnBzX2JkZlsyXSkgKQorICAgICAgICAg ICAgICAgIFBBUlNFX0VSUl9SRVQoIkJhZCBwb3J0IFBDSSBjb29yZGluYXRlc1xuIik7CisgICAg ICAgICAgICB1YXJ0LT5wc19iZGZfZW5hYmxlID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgIGNhc2UgY2xvY2tfaHo6CisgICAgICAgICAgICB1YXJ0LT5jbG9ja19oeiA9IHNpbXBs ZV9zdHJ0b3VsKHBhcmFtX3ZhbHVlLCBOVUxMLCAwKSA8PCA0OworICAgICAgICAgICAgYnJlYWs7 CisKKyAgICAgICAgY2FzZSBkZXZpY2U6CisgICAgICAgICAgICBpZiAoIHN0cm5jbXAocGFyYW1f dmFsdWUsICJwY2kiLCAzKSA9PSAwICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBw Y2lfdWFydF9jb25maWcodWFydCwgMS8qIHNraXAgQU1UICovLCB1YXJ0IC0gbnMxNjU1MF9jb20p OworICAgICAgICAgICAgICAgIGRldl9zZXQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAg ICAgICAgZWxzZSBpZiAoIHN0cm5jbXAocGFyYW1fdmFsdWUsICJhbXQiLCAzKSA9PSAwICkKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBwY2lfdWFydF9jb25maWcodWFydCwgMCwgdWFy dCAtIG5zMTY1NTBfY29tKTsKKyAgICAgICAgICAgICAgICBkZXZfc2V0ID0gdHJ1ZTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgaW9fYmFzZToKKyAg ICAgICAgICAgIGlmICggZGV2X3NldCApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg cHJpbnRrKFhFTkxPR19XQVJOSU5HCisgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCB1c2Ug aW9fYmFzZSB3aXRoIGRldj1wY2kgb3IgZGV2PWFtdCBvcHRpb25zXG4iKTsKKyAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVhcnQtPmlvX2Jhc2UgPSBz aW1wbGVfc3RydG91bChwYXJhbV92YWx1ZSwgTlVMTCwgMCk7CisgICAgICAgICAgICBicmVhazsK KworICAgICAgICBjYXNlIGlycToKKyAgICAgICAgICAgIHVhcnQtPmlycSA9IHNpbXBsZV9zdHJ0 b3VsKHBhcmFtX3ZhbHVlLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg IGNhc2UgZGF0YV9iaXRzOgorICAgICAgICAgICAgdWFydC0+ZGF0YV9iaXRzID0gc2ltcGxlX3N0 cnRvdWwocGFyYW1fdmFsdWUsIE5VTEwsIDApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg ICAgY2FzZSBwYXJpdHk6CisgICAgICAgICAgICB1YXJ0LT5wYXJpdHkgPSBwYXJzZV9wYXJpdHlf Y2hhcigqcGFyYW1fdmFsdWUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBw b3J0X2JkZjoKKyAgICAgICAgICAgIGlmICggIXBhcnNlX3BjaShwYXJhbV92YWx1ZSwgTlVMTCwg JnVhcnQtPnBiX2JkZlswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdWFydC0+cGJf YmRmWzFdLCAmdWFydC0+cGJfYmRmWzJdKSApCisgICAgICAgICAgICAgICAgUEFSU0VfRVJSX1JF VCgiQmFkIHBvcnQgUENJIGNvb3JkaW5hdGVzXG4iKTsKKyAgICAgICAgICAgIHVhcnQtPnBiX2Jk Zl9lbmFibGUgPSB0cnVlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBzdG9w X2JpdHM6CisgICAgICAgICAgICB1YXJ0LT5zdG9wX2JpdHMgPSBzaW1wbGVfc3RydG91bChwYXJh bV92YWx1ZSwgTlVMTCwgMCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIHJl Z19zaGlmdDoKKyAgICAgICAgICAgIHVhcnQtPnJlZ19zaGlmdCA9IHNpbXBsZV9zdHJ0b3VsKHBh cmFtX3ZhbHVlLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug cmVnX3dpZHRoOgorICAgICAgICAgICAgdWFydC0+cmVnX3dpZHRoID0gc2ltcGxlX3N0cnRvdWwo cGFyYW1fdmFsdWUsIE5VTEwsIDApOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVm YXVsdDoKKyAgICAgICAgICAgIFBBUlNFX0VSUl9SRVQoIkludmFsaWQgcGFyYW1ldGVyOiAlc1xu IiwgdG9rZW4pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgfQorICAgIH0gd2hpbGUg KCBzdGFydCAhPSBOVUxMICk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQg X19pbml0IG5zMTY1NTBfcGFyc2VfcG9ydF9jb25maWcoCisgICAgc3RydWN0IG5zMTY1NTAgKnVh cnQsIGNvbnN0IGNoYXIgKmNvbmYpCit7CisgICAgY2hhciBjb21fY29uc29sZV9vcHRpb25zWzEy OF07CisgICAgY2hhciAqc3RyOworCisgICAgLyogTm8gdXNlci1zcGVjaWZpZWQgY29uZmlndXJh dGlvbj8gKi8KKyAgICBpZiAoIChjb25mID09IE5VTEwpIHx8ICgqY29uZiA9PSAnXDAnKSApCisg ICAgeworICAgICAgICAvKiBTb21lIHBsYXRmb3JtcyBtYXkgYXV0b21hdGljYWxseSBwcm9iZSB0 aGUgVUFSVCBjb25maWd1YXJ0aW9uLiAqLworICAgICAgICBpZiAoIHVhcnQtPmJhdWQgIT0gMCAp CisgICAgICAgICAgICBnb3RvIGNvbmZpZ19wYXJzZWQ7CisgICAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgICBzdHJsY3B5KGNvbV9jb25zb2xlX29wdGlvbnMsIGNvbmYsIEFSUkFZX1NJWkUoY29t X2NvbnNvbGVfb3B0aW9ucykpOworICAgIHN0ciA9IGNvbV9jb25zb2xlX29wdGlvbnM7CisKKyAg ICAvKiBwYXJzZSBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgYW5kIGdldCBwb2ludGVyIGZvciBuYW1l LXZhbHVlIHBhaXJzICovCisgICAgaWYgKCAhcGFyc2VfcG9zaXRpb25hbCh1YXJ0LCAmc3RyKSAp CisgICAgICAgIHJldHVybjsKKworICAgIGlmICggIXBhcnNlX25hbWV2YWx1ZV9wYWlycyhzdHIs IHVhcnQpICkKKyAgICAgICAgcmV0dXJuOworCiAgY29uZmlnX3BhcnNlZDoKICAgICAvKiBTYW5p dHkgY2hlY2tzLiAqLwogICAgIGlmICggKHVhcnQtPmJhdWQgIT0gQkFVRF9BVVRPKSAmJgpAQCAt MTE3Nyw2ICsxMzg4LDggQEAgc3RhdGljIHZvaWQgX19pbml0IG5zMTY1NTBfcGFyc2VfcG9ydF9j b25maWcoCiAgICAgICAgIFBBUlNFX0VSUigiQmF1ZCByYXRlICVkIG91dHNpZGUgc3VwcG9ydGVk IHJhbmdlLiIsIHVhcnQtPmJhdWQpOwogICAgIGlmICggKHVhcnQtPmRhdGFfYml0cyA8IDUpIHx8 ICh1YXJ0LT5kYXRhX2JpdHMgPiA4KSApCiAgICAgICAgIFBBUlNFX0VSUigiJWQgZGF0YSBiaXRz IGFyZSB1bnN1cHBvcnRlZC4iLCB1YXJ0LT5kYXRhX2JpdHMpOworICAgIGlmICggKHVhcnQtPnJl Z193aWR0aCAhPSAxKSAmJiAodWFydC0+cmVnX3dpZHRoICE9IDQpICkKKyAgICAgICAgUEFSU0Vf RVJSKCJBY2NlcHRlZCB2YWx1ZXMgb2YgcmVnX3dpZHRoIGFyZSAxIGFuZCA0IG9ubHkiKTsKICAg ICBpZiAoICh1YXJ0LT5zdG9wX2JpdHMgPCAxKSB8fCAodWFydC0+c3RvcF9iaXRzID4gMikgKQog ICAgICAgICBQQVJTRV9FUlIoIiVkIHN0b3AgYml0cyBhcmUgdW5zdXBwb3J0ZWQuIiwgdWFydC0+ c3RvcF9iaXRzKTsKICAgICBpZiAoIHVhcnQtPmlvX2Jhc2UgPT0gMCApCi0tIAoyLjcuNAoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=