From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bo Cao Subject: [PATCH v0 RFC 2/2] xl: Add commands for usb hot-plug Date: Mon, 11 Aug 2014 04:23:54 +0800 Message-ID: <1407702234-22309-3-git-send-email-caobosimon@gmail.com> References: <1407702234-22309-1-git-send-email-caobosimon@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1407702234-22309-1-git-send-email-caobosimon@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xensource.com Cc: Lars Kurth , Ian Campbell , George Dunlap , Ian Jackson , Bo Cao List-Id: xen-devel@lists.xenproject.org QWRkIHhsIGNvbW1hbmRzIGZvciBVU0IgaG90LXBsdWcuCgpTaWduZWQtb2ZmLWJ5OiBTaW1vbiBD YW8gPGNhb2Jvc2ltb25AZ21haWwuY29tPgotLS0KQ0M6IEdlb3JnZSBEdW5sYXAgPGdlb3JnZS5k dW5sYXBAZXUuY2l0cml4LmNvbT4KQ0M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBjaXRyaXgu Y29tPgpDQzogSWFuIENhbXBiZWxsIDxpYW4uY2FtcGJlbGxAY2l0cml4LmNvbT4KQ0M6IFBhc2kg S8Okcmtrw6RpbmVuIDxwYXNpa0Bpa2kuZmk+CkNDOiBMYXJzIEt1cnRoIDxsYXJzLmt1cnRoQGNp dHJpeC5jb20+Ci0tLQogdG9vbHMvbGlieGwveGwuaCAgICAgICAgICB8ICAgIDcgKwogdG9vbHMv bGlieGwveGxfY21kaW1wbC5jICB8ICAzMjAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCiB0b29scy9saWJ4bC94bF9jbWR0YWJsZS5jIHwgICAzMyArKysrKwog MyBmaWxlcyBjaGFuZ2VkLCAzNTkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAt LWdpdCBhL3Rvb2xzL2xpYnhsL3hsLmggYi90b29scy9saWJ4bC94bC5oCmluZGV4IDEwYTJlNjYu LjZjZGUwZmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsLmgKKysrIGIvdG9vbHMvbGlieGwv eGwuaApAQCAtODQsNiArODQsMTMgQEAgaW50IG1haW5fYmxvY2tkZXRhY2goaW50IGFyZ2MsIGNo YXIgKiphcmd2KTsKIGludCBtYWluX3Z0cG1hdHRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsK IGludCBtYWluX3Z0cG1saXN0KGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl92dHBt ZGV0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFpbl91c2Jhc3NpZ25hYmxlX2xp c3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3VzYmFzc2lnbmVkX2xpc3QoaW50 IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3VzYmN0cmxfYXR0YWNoKGludCBhcmdjLCBj aGFyICoqYXJndik7CitpbnQgbWFpbl91c2JjdHJsX2RldGFjaChpbnQgYXJnYywgY2hhciAqKmFy Z3YpOworaW50IG1haW5fdXNiYXR0YWNoKGludCBhcmdjLCBjaGFyICoqYXJndik7CitpbnQgbWFp bl91c2JkZXRhY2goaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKK2ludCBtYWluX3VzYmxpc3QoaW50 IGFyZ2MsIGNoYXIgKiphcmd2KTsKIGludCBtYWluX3VwdGltZShpbnQgYXJnYywgY2hhciAqKmFy Z3YpOwogaW50IG1haW5fY2xhaW1zKGludCBhcmdjLCBjaGFyICoqYXJndik7CiBpbnQgbWFpbl90 bWVtX2xpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhs L3hsX2NtZGltcGwuYyBiL3Rvb2xzL2xpYnhsL3hsX2NtZGltcGwuYwppbmRleCA2NGExYzc3Li41 ZGJhNWVjIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC94bF9jbWRpbXBsLmMKKysrIGIvdG9vbHMv bGlieGwveGxfY21kaW1wbC5jCkBAIC03MDEsNyArNzAxLDcgQEAgc3RhdGljIHZvaWQgcGFyc2Vf Y29uZmlnX2RhdGEoY29uc3QgY2hhciAqY29uZmlnX3NvdXJjZSwKICAgICBjb25zdCBjaGFyICpi dWY7CiAgICAgbG9uZyBsOwogICAgIFhMVV9Db25maWcgKmNvbmZpZzsKLSAgICBYTFVfQ29uZmln TGlzdCAqY3B1cywgKnZiZHMsICpuaWNzLCAqcGNpcywgKmN2ZmJzLCAqY3B1aWRzLCAqdnRwbXM7 CisgICAgWExVX0NvbmZpZ0xpc3QgKmNwdXMsICp2YmRzLCAqbmljcywgKnBjaXMsICp1c2JzLCAq Y3ZmYnMsICpjcHVpZHMsICp2dHBtczsKICAgICBYTFVfQ29uZmlnTGlzdCAqaW9wb3J0cywgKmly cXMsICppb21lbTsKICAgICBpbnQgbnVtX2lvcG9ydHMsIG51bV9pcnFzLCBudW1faW9tZW07CiAg ICAgaW50IHBjaV9wb3dlcl9tZ210ID0gMDsKQEAgLTE0NjAsNiArMTQ2MCw0NCBAQCBza2lwX3Zm YjoKICAgICAgICAgICAgIGxpYnhsX2RlZmJvb2xfc2V0KCZiX2luZm8tPnUucHYuZTgyMF9ob3N0 LCB0cnVlKTsKICAgICB9CiAKKyAgICBpZiAoIXhsdV9jZmdfZ2V0X2xpc3QgKGNvbmZpZywgInVz YiIsICZ1c2JzLCAwLCAwKSApIHsKKyAgICAgICAgZF9jb25maWctPm51bV91c2JzID0gMDsKKyAg ICAgICAgZF9jb25maWctPnVzYnMgPSBOVUxMOworICAgICAgICB3aGlsZSAoKGJ1ZiA9IHhsdV9j ZmdfZ2V0X2xpc3RpdGVtICh1c2JzLCBkX2NvbmZpZy0+bnVtX3VzYnMpKSAhPSBOVUxMKSB7Cisg ICAgICAgICAgICBsaWJ4bF9kZXZpY2VfdXNiICp1c2I7CisgICAgICAgICAgICBjaGFyICpidWYy ID0gc3RyZHVwKGJ1Zik7CisgICAgICAgICAgICBjaGFyICpwLCAqcDI7CisgICAgCisgICAgICAg ICAgICBkX2NvbmZpZy0+dXNicyA9IChsaWJ4bF9kZXZpY2VfdXNiICopIHJlYWxsb2MoZF9jb25m aWctPnVzYnMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKGxpYnhs X2RldmljZV91c2IpICogKGRfY29uZmlnLT5udW1fdXNicysxKSk7CisgICAgICAgICAgICB1c2Ig PSBkX2NvbmZpZy0+dXNicyArIGRfY29uZmlnLT5udW1fdXNiczsKKyAgICAgICAgICAgIGxpYnhs X2RldmljZV91c2JfaW5pdCh1c2IpOworCisgICAgICAgICAgICBwID0gc3RydG9rKGJ1ZjIsICIs Iik7CisgICAgICAgICAgICBpZihwKSB7CisgICAgICAgICAgICAgICAgdXNiLT5wb3J0ID0gLTE7 CisgICAgICAgICAgICAgICAgdXNiLT5jdHJsID0gLTE7CisgICAgICAgICAgICAgICAgZG8gewor ICAgICAgICAgICAgICAgICAgICB3aGlsZSgqcCA9PSAnICcpCisgICAgICAgICAgICAgICAgICAg ICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgIGlmICgocDIgPSBzdHJjaHIocCwgJz0nKSkg PT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAg ICAqcDIgPSAnXDAnOworICAgICAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcChwLCAidHlwZSIp KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL1NldCB0eXBlIGluIGxpYnhsX2RldmljZV91 c2IKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKHAsICJpbnRlcmZhY2Ui KSApeworICAgICAgICAgICAgICAgICAgICAgICAgdXNiLT5pbnRmID0gc3RyZHVwKHAyICsgMSk7 CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBm cHJpbnRmKHN0ZGVyciwgIlVua25vd24gc3RyaW5nIGAlcycgaW4gdXNiIHNwZWNcbiIsIHApOwor ICAgICAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0gd2hpbGUgKChwID0gc3RydG9rKE5VTEwsICIsIikpICE9IE5VTEwp OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZShidWYyKTsKKyAgICAgICAgICAgIGRf Y29uZmlnLT5udW1fdXNicysrOworICAgICAgICB9CisgICAgfQorCiAgICAgc3dpdGNoICh4bHVf Y2ZnX2dldF9saXN0KGNvbmZpZywgImNwdWlkIiwgJmNwdWlkcywgMCwgMSkpIHsKICAgICBjYXNl IDA6CiAgICAgICAgIHsKQEAgLTI3MzQsNiArMjc3MiwyODYgQEAgaW50IG1haW5fY2RfaW5zZXJ0 KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQg dXNiaW5mb19wcmludChsaWJ4bF9kZXZpY2VfdXNiICp1c2JzLCBpbnQgbnVtKSB7CisgICAgaW50 IGk7CisgICAgaWYgKCB1c2JzID09IE5VTEwgKQorICAgICAgICAgcmV0dXJuOworICAgIGxpYnhs X3VzYmluZm8gdXNiaW5mbzsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKKyAgICAg ICAgLyogVE8gQkUgSW1wcm92ZWQgKi8KKyAgICAgICAgaWYgKHVzYnNbaV0ucG9ydCApCisgICAg ICAgICAgICBwcmludGYoIlBvcnQgJWQ6IiwgdXNic1tpXS5wb3J0KTsKKyAgICAgICAgcHJpbnRm KCJJbnRlcmZhY2UgJThzICIsIHVzYnNbaV0uaW50Zik7CisgICAgICAgIGlmICghbGlieGxfZGV2 aWNlX3VzYl9nZXRpbmZvKGN0eCwgdXNic1tpXS5pbnRmLCAmdXNiaW5mbykpIHsKKyAgICAgICAg ICAgIHByaW50ZigiQnVzICUwM2QgRGV2ICUwM2Q6ICUwNGQ6JTA0ZCAlcyAlc1xuIiwKKyAgICAg ICAgICAgICAgICAgICAgdXNiaW5mby5idXMsIHVzYmluZm8uZGV2bnVtLCB1c2JpbmZvLmlkVmVu ZG9yLAorICAgICAgICAgICAgICAgICAgICB1c2JpbmZvLmlkUHJvZHVjdCwgdXNiaW5mby5tYW51 ZiwgdXNiaW5mby5wcm9kKTsKKyAgICAgICAgfQorICAgICAgICBsaWJ4bF91c2JpbmZvX2Rpc3Bv c2UoJnVzYmluZm8pOworICAgIH0KK30gCisKKworc3RhdGljIHZvaWQgdXNiX2Fzc2lnbmFibGVf bGlzdCh2b2lkKQoreworICAgIGxpYnhsX2RldmljZV91c2IgKnVzYnM7CisgICAgaW50IG51bTsK KworICAgIHVzYnMgPSBsaWJ4bF9kZXZpY2VfdXNiX2Fzc2lnbmFibGVfbGlzdChjdHgsICZudW0p OworICAgIAorICAgIHVzYmluZm9fcHJpbnQodXNicywgbnVtKTsKKworICAgIGZyZWUodXNicyk7 Cit9CisKK2ludCBtYWluX3VzYmFzc2lnbmFibGVfbGlzdChpbnQgYXJnYywgY2hhciAqKmFyZ3Yp Cit7CisgICAgaW50IG9wdDsKKyAgICAKKyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwg TlVMTCwgInVzYi1hc3NpZ25hYmxlLWxpc3QiLCAwKSB7CisgICAgICAgIC8qIE5vIG9wdGlvbnMg Ki8KKyAgICB9CisgICAgCisgICAgdXNiX2Fzc2lnbmFibGVfbGlzdCgpOworICAgIHJldHVybiAw OyAgIAorfQorCitzdGF0aWMgdm9pZCB1c2JfYXNzaWduZWRfbGlzdCh2b2lkKQoreworICAgIGxp YnhsX2RldmljZV91c2IgKnVzYnM7CisgICAgaW50IG51bTsKKyAgICB1c2JzID0gbGlieGxfZGV2 aWNlX3VzYl9hc3NpZ25lZF9saXN0KGN0eCwgJm51bSk7CisgICAgCisgICAgdXNiaW5mb19wcmlu dCh1c2JzLCBudW0pOworICAgIGZyZWUodXNicyk7Cit9CisKK2ludCBtYWluX3VzYmFzc2lnbmVk X2xpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIGludCBvcHQ7CisgICAgU1dJVENI X0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ1c2ItYXNzaWduYWJsZS1saXN0IiwgMCkgewor ICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAgfQorICAgIAorICAgIHVzYl9hc3NpZ25lZF9s aXN0KCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBtYWluX3VzYmN0cmxfYXR0YWNoKGludCBh cmdjLCBjaGFyICoqYXJndikKK3sKKyAgICB1aW50MzJfdCBkb21pZDsKKyAgICBpbnQgb3B0Owor ICAgIGNoYXIgKm9wYXJnOworICAgIGxpYnhsX2RldmljZV91c2JjdHJsIHVzYmN0cmw7CisgICAg CisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ1c2ItY29udHJvbGxlci1h dHRhY2giLCAxKSB7CisgICAgICAgIC8qIE5vIG9wdGlvbnMgKi8KKyAgICB9CisgICAgCisgICAg ZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZF0pOworICAgIAorICAgIGxpYnhsX2Rldmlj ZV91c2JjdHJsX2luaXQoJnVzYmN0cmwpOworICAgIAorICAgIGZvciAoYXJndiArPSBvcHRpbmQr MSwgYXJnYyAtPSBvcHRpbmQrMTsgYXJnYyA+IDA7ICsrYXJndiwgLS1hcmdjKSB7CisgICAgICAg IGlmIChNQVRDSF9PUFRJT04oIm5hbWUiLCAqYXJndiwgb3BhcmcpKSB7CisgICAgICAgICAgICBy ZXBsYWNlX3N0cmluZygmdXNiY3RybC5uYW1lLCBvcGFyZyk7CisgICAgICAgIH0gZWxzZSBpZiAo TUFUQ0hfT1BUSU9OKCJ0eXBlIiwgICphcmd2LCBvcGFyZykpIHsKKyAgICAgICAgICAgIGlmICgh c3RyY21wKCJwdiIsIG9wYXJnKSkgeworICAgICAgICAgICAgICAgIHVzYmN0cmwudHlwZSA9IExJ QlhMX1VTQkNUUkxfVFlQRV9QVjsKKyAgICAgICAgICAgIH0gZWxzZSBpZighc3RyY21wKCJpb2Vt dSIsIG9wYXJnKSkgeworICAgICAgICAgICAgICAgIHVzYmN0cmwudHlwZSA9IExJQlhMX1VTQkNU UkxfVFlQRV9ERVZJQ0VNT0RFTDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg ICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHBhcmFtZXRlciBgdHlwZScuXG4iKTsKKyAgICAg ICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChN QVRDSF9PUFRJT04oInZlcnNpb24iLCAqYXJndiwgb3BhcmcpKSB7CisgICAgICAgICAgICB1c2Jj dHJsLnVzYl92ZXJzaW9uID0gYXRvaShvcGFyZyk7CisgICAgICAgIH0gZWxzZSBpZiAoTUFUQ0hf T1BUSU9OKCJudW1fcG9ydHMiLCAqYXJndiwgb3BhcmcpKSB7CisgICAgICAgICAgICB1c2JjdHJs Lm51bV9wb3J0cyA9IGF0b2kob3BhcmcpOworICAgICAgICB9ICBlbHNlIHsKKyAgICAgICAgICAg IGZwcmludGYoc3RkZXJyLCAidW5yZWNvZ25pemVkIGFyZ3VtZW50IGAlcydcbiIsICphcmd2KTsK KyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRyeXJ1 bl9vbmx5KSB7CisgICAgICAgY2hhcioganNvbiA9IGxpYnhsX2RldmljZV91c2JjdHJsX3RvX2pz b24oY3R4LCAmdXNiY3RybCk7CisgICAgICAgcHJpbnRmKCJ1c2IgY29udHJvbGxlcjogJXNcbiIs IGpzb24pOworICAgICAgIGZyZWUoanNvbik7CisgICAgICAgbGlieGxfZGV2aWNlX3VzYmN0cmxf ZGlzcG9zZSgmdXNiY3RybCk7CisgICAgICAgaWYgKGZlcnJvcihzdGRvdXQpIHx8IGZmbHVzaChz dGRvdXQpKSB7IHBlcnJvcigic3Rkb3V0Iik7IGV4aXQoLTEpOyB9CisgICAgICAgcmV0dXJuIDA7 CisgICAgfQorICAgIAorICAgIGlmIChsaWJ4bF9kZXZpY2VfdXNiY3RybF9hZGQoY3R4LCBkb21p ZCwgJnVzYmN0cmwsIDApKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfZGV2aWNl X3VzYmN0cmxfYWRkIGZhaWxlZC5cbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAg bGlieGxfZGV2aWNlX3VzYmN0cmxfZGlzcG9zZSgmdXNiY3RybCk7CisgICAgcmV0dXJuIDA7IAor fQorCitpbnQgbWFpbl91c2JjdHJsX2RldGFjaChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7Cisg ICAgdWludDMyX3QgZG9taWQ7CisgICAgaW50IG9wdDsKKyAgICBsaWJ4bF9kZXZpY2VfdXNiY3Ry bCB1c2JjdHJsOworCisgICAgU1dJVENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ1c2It Y29udHJvbGxlci1kZXR0YWNoIiwgMikgeworICAgICAgICAvKiBObyBvcHRpb25zICovCisgICAg fQorCisgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2W29wdGluZF0pOworCisgICAgbGlieGxf ZGV2aWNlX3VzYmN0cmxfaW5pdCgmdXNiY3RybCk7CisKKyAgICBpZiAobGlieGxfZGV2aWRfdG9f ZGV2aWNlX3VzYmN0cmwoY3R4LCBkb21pZCwgYXRvaShhcmd2W29wdGluZCsxXSksICZ1c2JjdHJs KSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVua25vd24gZGV2aWNlICVzLlxuIiwgYXJn dltvcHRpbmQrMV0pOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZihsaWJ4bF9k ZXZpY2VfdXNiY3RybF9yZW1vdmUoY3R4LCBkb21pZCwgJnVzYmN0cmwsIDApKSB7CisgICAgICAg IGZwcmludGYoc3RkZXJyLCAibGlieGxfZGV2aWNlX3VzYmN0cmxfYWRkIGZhaWxlZC5cbiIpOwor ICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgbGlieGxfZGV2aWNlX3VzYmN0cmxfZGlzcG9z ZSgmdXNiY3RybCk7CisgICAgcmV0dXJuIDA7CisgICAgCit9CisKK2ludCBtYWluX3VzYmF0dGFj aChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgICAgdWludDMyX3QgZG9taWQ7CisgICAgaW50 IG9wdDsKKyAgICBjaGFyICpvcGFyZzsKKyAgICBsaWJ4bF9kZXZpY2VfdXNiIHVzYjsKKyAgICAK KyAgICBTV0lUQ0hfRk9SRUFDSF9PUFQob3B0LCAiIiwgTlVMTCwgInVzYi1hdHRhY2giLCAxKSB7 CisgICAgICAgIC8qIE5vIG9wdGlvbnMgKi8KKyAgICB9CisgICAgZG9taWQgPSBmaW5kX2RvbWFp bihhcmd2W29wdGluZF0pOworCisgICAgbGlieGxfZGV2aWNlX3VzYl9pbml0KCZ1c2IpOworICAg IAorICAgIC8qIHNldCBkZWZhdWx0IHZhbHVlIGZvciB1c2IuY3RybCBhbmQgdXNiLnBvcnQgKi8K KyAgICB1c2IuY3RybCA9IC0xLCB1c2IucG9ydCA9IC0xOworICAgIGZvciAoYXJndiArPSBvcHRp bmQrMSwgYXJnYyAtPSBvcHRpbmQrMTsgYXJnYyA+IDA7ICsrYXJndiwgLS1hcmdjKSB7CisgICAg ICAgIGlmIChNQVRDSF9PUFRJT04oImNvbnRyb2xsZXIiLCAqYXJndiwgb3BhcmcpKSB7CisgICAg ICAgICAgICB1c2IuY3RybCA9IGF0b2kob3BhcmcpOworICAgICAgICB9IGVsc2UgaWYgKE1BVENI X09QVElPTigiaG9zdGRldiIsICphcmd2LCBvcGFyZykpIHsKKyAgICAgICAgICAgIC8qIFRPLURP OiBjb252ZXJ0IHRoZSAibHN1c2IiIGJ1czphZGRyIHRvIHRoZSBzeXNmcyB1c2IgYWRkcmVzcyAq LworICAgICAgICB9IGVsc2UgaWYgKE1BVENIX09QVElPTigiaW50ZiIsICphcmd2LCBvcGFyZykp IHsKKyAgICAgICAgICAgIHJlcGxhY2Vfc3RyaW5nKCZ1c2IuaW50Ziwgb3BhcmcpOworICAgICAg ICB9IGVsc2UgaWYgKE1BVENIX09QVElPTigicG9ydCIsICphcmd2LCBvcGFyZykpIHsKKyAgICAg ICAgICAgIHVzYi5wb3J0ID0gYXRvaShvcGFyZyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgInVucmVjb2duaXplZCBhcmd1bWVudCBgJXMnXG4iLCAqYXJn dik7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgaWYg KGRyeXJ1bl9vbmx5KSB7CisgICAgICAgIGNoYXIgKmpzb24gPSBsaWJ4bF9kZXZpY2VfdXNiX3Rv X2pzb24oY3R4LCAmdXNiKTsKKyAgICAgICAgcHJpbnRmKCJ1c2I6ICVzXG4iLCBqc29uKTsKKyAg ICAgICAgZnJlZShqc29uKTsKKyAgICAgICAgbGlieGxfZGV2aWNlX3VzYl9kaXNwb3NlKCZ1c2Ip OworICAgICAgICBpZiAoZmVycm9yKHN0ZG91dCkgfHwgZmZsdXNoKHN0ZG91dCkpIHsgcGVycm9y KCJzdGRvdXQiKTsgZXhpdCgtMSk7IH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAor ICAgIGlmIChsaWJ4bF9kZXZpY2VfdXNiX2FkZChjdHgsIGRvbWlkLCAmdXNiLCAwKSkgeworICAg ICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX2RldmljZV91c2JfYWRkIGZhaWxlZC5cbiIpOwor ICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgCisgICAgbGlieGxfZGV2aWNlX3VzYl9kaXNw b3NlKCZ1c2IpOworICAgIHJldHVybiAwOworfQorCitpbnQgbWFpbl91c2JkZXRhY2goaW50IGFy Z2MsIGNoYXIgKiphcmd2KQoreworICAgIHVpbnQzMl90IGRvbWlkOworICAgIGludCBvcHQ7Cisg ICAgbGlieGxfZGV2aWNlX3VzYiB1c2I7CisgICAgY2hhciAqb3Bhcmc7CisgICAgCisgICAgU1dJ VENIX0ZPUkVBQ0hfT1BUKG9wdCwgIiIsIE5VTEwsICJ1c2ItZGV0YWNoIiwgMikgeworICAgICAg ICAvKiBObyBvcHRpb25zICovCisgICAgfQorCisgICAgZG9taWQgPSBmaW5kX2RvbWFpbihhcmd2 W29wdGluZF0pOworCisgICAgbGlieGxfZGV2aWNlX3VzYl9pbml0KCZ1c2IpOworCisgICAgZm9y IChhcmd2ICs9IG9wdGluZCsxLCBhcmdjIC09IG9wdGluZCsxOyBhcmdjID4gMDsgKythcmd2LCAt LWFyZ2MpIHsKKyAgICAgICAgaWYgKE1BVENIX09QVElPTigiY29udHJvbGxlciIsICphcmd2LCBv cGFyZykpIHsKKyAgICAgICAgICAgIHVzYi5jdHJsID0gYXRvaShvcGFyZyk7CisgICAgICAgIH0g ZWxzZSBpZiAoTUFUQ0hfT1BUSU9OKCJpbnRmIiwgKmFyZ3YsIG9wYXJnKSkgeworICAgICAgICAg ICAgcmVwbGFjZV9zdHJpbmcoJnVzYi5pbnRmLCBvcGFyZyk7CisgICAgICAgIH0gZWxzZSBpZiAo TUFUQ0hfT1BUSU9OKCJwb3J0IiwgKmFyZ3YsIG9wYXJnKSkgeworICAgICAgICAgICAgdXNiLnBv cnQgPSBhdG9pKG9wYXJnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZwcmludGYo c3RkZXJyLCAidW5yZWNvZ25pemVkIGFyZ3VtZW50IGAlcydcbiIsICphcmd2KTsKKyAgICAgICAg ICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGxpYnhsX2ludGZfdG9f ZGV2aWNlX3VzYihjdHgsIGRvbWlkLCB1c2IuaW50ZiwgJnVzYikgKSB7CisgICAgICAgIGZwcmlu dGYoc3RkZXJyLCAibGlieGxfaW50Zl90b19kZXZpY2VfdXNiIGZhaWxlZC5cbiIpOworICAgICAg ICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAobGlieGxfZGV2aWNlX3VzYl9yZW1vdmUoY3R4 LCBkb21pZCwgJnVzYiwgMCkgKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAibGlieGxfZGV2 aWNlX3VzYl9yZW1vdmUgZmFpbGVkLlxuIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAg ICBsaWJ4bF9kZXZpY2VfdXNiX2Rpc3Bvc2UoJnVzYik7CisgICAgcmV0dXJuIDA7Cit9CisKK2lu dCBtYWluX3VzYmxpc3QoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICAgIHVpbnQzMl90IGRv bWlkOworICAgIGxpYnhsX2RldmljZV91c2JjdHJsICp1c2JjdHJsczsKKyAgICBsaWJ4bF9kZXZp Y2VfdXNiICp1c2JzOworICAgIGxpYnhsX3VzYmN0cmxpbmZvIHVzYmN0cmxpbmZvOworICAgIGlu dCBudW1jdHJsLCBudW11c2IsIGksIG9wdDsKKworICAgIFNXSVRDSF9GT1JFQUNIX09QVChvcHQs ICIiLCBOVUxMLCAidXNiLWxpc3QiLCAxKSB7CisgICAgICAgIC8qIE5vIG9wdGlvbnMgKi8KKyAg ICB9CisKKyAgICBmb3IgKGFyZ3YgKz0gb3B0aW5kLCBhcmdjIC09IG9wdGluZDsgYXJnYyA+IDA7 IC0tYXJnYywgKythcmd2KSB7CisgICAgICAgIGRvbWlkID0gZmluZF9kb21haW4oKmFyZ3YpOwor ICAgICAgICB1c2JjdHJscyA9IGxpYnhsX2RldmljZV91c2JjdHJsX2xpc3QoY3R4LCBkb21pZCwg Jm51bWN0cmwpOworICAgICAgICBpZiAoIXVzYmN0cmxzKSB7CisgICAgICAgICAgICBjb250aW51 ZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtY3RybDsgKytpKSB7Cisg ICAgICAgICAgICAvKiBJZHggIHR5cGUgQkUgc3RhdGUgdXNiLXZlciBCRS1wYXRoICovIAorICAg ICAgICAgICAgcHJpbnRmKCIlLTNzICUtNXMgJS0zcyAlLTVzICUtN3MgICUtMzBzXG4iLAorICAg ICAgICAgICAgICAgICAgICAiSWR4IiwgInR5cGUiLCAiQkUiLCAic3RhdGUiLCAidXNiLXZlciIs ICJCRS1wYXRoIik7CisgICAgCisgICAgICAgICAgICBpZiAoIWxpYnhsX2RldmljZV91c2JjdHJs X2dldGluZm8oY3R4LCBkb21pZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmdXNiY3RybHNbaV0sICZ1c2JjdHJsaW5mbykpIHsKKyAgICAgICAgICAgICAgICBwcmludGYo IiUtM2QgJS01cyAlLTNkICUtNWQgJS03ZCAlLTMwc1xuIiwKKyAgICAgICAgICAgICAgICAgICAg ICAgIGksIHVzYmN0cmxpbmZvLnR5cGUsIHVzYmN0cmxpbmZvLmJhY2tlbmRfaWQsCisgICAgICAg ICAgICAgICAgICAgICAgICB1c2JjdHJsaW5mby5zdGF0ZSwgdXNiY3RybGluZm8udmVyc2lvbiwK KyAgICAgICAgICAgICAgICAgICAgICAgIHVzYmN0cmxpbmZvLmJhY2tlbmQgKTsKKworICAgICAg ICAgICAgICAgIHVzYnMgPSBsaWJ4bF9kZXZpY2VfdXNiX2xpc3QoY3R4LCBkb21pZCwgdXNiY3Ry bGluZm8uZGV2aWQsICZudW11c2IpOworICAgICAgICAgICAgICAgIHVzYmluZm9fcHJpbnQodXNi cywgbnVtdXNiKTsKKworICAgICAgICAgICAgICAgIGxpYnhsX3VzYmN0cmxpbmZvX2Rpc3Bvc2Uo JnVzYmN0cmxpbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxpYnhsX2RldmljZV91 c2JjdHJsX2Rpc3Bvc2UoJnVzYmN0cmxzW2ldKTsgCisgICAgICAgIH0KKyAgICAgICAgZnJlZSh1 c2JjdHJscyk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBpbnQgbWFpbl9jb25zb2xlKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIHsKICAgICB1aW50MzJfdCBkb21pZDsKZGlmZiAtLWdpdCBh L3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxlLmMgYi90b29scy9saWJ4bC94bF9jbWR0YWJsZS5jCmlu ZGV4IDQyNzliOWYuLmQyZGEyNzEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL3hsX2NtZHRhYmxl LmMKKysrIGIvdG9vbHMvbGlieGwveGxfY21kdGFibGUuYwpAQCAtMTk0LDYgKzE5NCwzOSBAQCBz dHJ1Y3QgY21kX3NwZWMgY21kX3RhYmxlW10gPSB7CiAgICAgICAiRWplY3QgYSBjZHJvbSBmcm9t IGEgZ3Vlc3QncyBjZCBkcml2ZSIsCiAgICAgICAiPERvbWFpbj4gPFZpcnR1YWxEZXZpY2U+IiwK ICAgICB9LAorCXsgInVzYi1hc3NpZ25hYmxlLWxpc3QiLAorCSAgJm1haW5fdXNiYXNzaWduYWJs ZV9saXN0LCAwLCAwLAorCSAgIkxpc3QgYWxsIHRoZSBhc3NpZ25hYmxlIFVTQiBkZXZpY2VzIiwK Kwl9LAorCXsgInVzYi1hc3NpZ25lZC1saXN0IiwKKwkgICZtYWluX3VzYmFzc2lnbmVkX2xpc3Qs IDAsIDAsCisJICAiTGlzdCBhbGwgdGhlIFVTQiBkZXZpY2VzIHRoYXQgaGF2ZSBiZWVuIGFzc2ln bmVkIiwKKwl9LAorCXsgInVzYi1jb250cm9sbGVyLWF0dGFjaCIsCisJICAmbWFpbl91c2JjdHJs X2F0dGFjaCwgMSwgMSwKKwkgICJDcmVhdGUgYSB2aXJ0dWFsIFVTQiBjb250cm9sbGVyIGZvciBh IGRvbWFpbiIsCisJICAiPERvbWFpbj4gW3ZlcnNpb249PHZlcnNpb24+XSBbbnVtYmVyT2ZQb3J0 cz08bnVtYmVyPl0gW3R5cGU9PHR5cGU+XSIsCisJfSwKKwl7ICJ1c2ItY29udHJvbGxlci1kZXRh Y2giLAorCSAgJm1haW5fdXNiY3RybF9kZXRhY2gsIDAsIDEsCisJICAiRGVzdG9yeSB0aGUgdmly dHVhbCBVU0IgY29udHJvbGxlciBzcGVjaWZpZWQgYnkgPENvbnRyb2xsZXJOYW1lPiBmb3IgYSBk b21haW4iLAorCSAgIjxEb21haW4+IDxEZXZJZHxDb250cm9sbGVyTmFtZVsncHYwJ3wnaGNpMCd8 Li5dPiIsCisJfSwKKwl7ICJ1c2ItYXR0YWNoIiwKKwkgICZtYWluX3VzYmF0dGFjaCwgMSwgMSwK KwkgICJBdHRhY2ggYSBVU0IgZGV2aWNlIHRvIGEgZG9tYWluIiwKKwkgICI8RG9tYWluPiA8aG9z dGRldj08SG9zdGJ1cy5Ib3N0ZGV2Pj4gW0NvbnRyb2xsZXJOYW1lWydwdjAnfCdoY2kwJ11dIiwK Kwl9LAorCXsgInVzYi1kZXRhY2giLAorCSAgJm1haW5fdXNiZGV0YWNoLCAwLCAxLAorCSAgIkRl dGFjaCBhIFVTQiBkZXZpY2UgZnJvbSBhIGRvbWFpbiIsCisJICAiPERvbWFpbj4gPERldklkfDxI b3N0YnVzLkhvc3RkZXY+PiIsCisJfSwKKwl7ICJ1c2ItbGlzdCIsCisJICAmbWFpbl91c2JsaXN0 LCAwLCAwLAorCSAgIkxpc3QgaW5mb3JtYXRpb24gYWJvdXQgVVNCIGRldmljZXMgZm9yIGEgZG9t YWluIiwKKwkgICI8RG9tYWluPiIsCisJfSwKICAgICB7ICJtZW0tbWF4IiwKICAgICAgICZtYWlu X21lbW1heCwgMCwgMSwKICAgICAgICJTZXQgdGhlIG1heGltdW0gYW1vdW50IHJlc2VydmF0aW9u IGZvciBhIGRvbWFpbiIsCi0tIAoxLjcuMTAuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==