From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruno Alvisio Subject: [PATCH RFC v2 8/8] Added support to handle QMP events Date: Wed, 18 Oct 2017 10:26:35 -0700 Message-ID: <1508347595-11657-9-git-send-email-bruno.alvisio@gmail.com> References: <1508347595-11657-1-git-send-email-bruno.alvisio@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1508347595-11657-1-git-send-email-bruno.alvisio@gmail.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: wei.liu2@citrix.com, ian.jackson@eu.citrix.com, bruno.alvisio@gmail.com, dave@recoil.org List-Id: xen-devel@lists.xenproject.org LS0tCiB0b29scy9saWJ4bC9saWJ4bF9kb21fc2F2ZS5jIHwgIDcxICsrKysrKysrLS0tLS0tLS0t LS0tCiB0b29scy9saWJ4bC9saWJ4bF9xbXAuYyAgICAgIHwgMTUwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTcwIGluc2VydGlv bnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2Rv bV9zYXZlLmMgYi90b29scy9saWJ4bC9saWJ4bF9kb21fc2F2ZS5jCmluZGV4IGRkZmUyZjguLmQx ODhkZDIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9zYXZlLmMKKysrIGIvdG9v bHMvbGlieGwvbGlieGxfZG9tX3NhdmUuYwpAQCAtNDMyLDYzICs0MzIsNDQgQEAgc3RhdGljIHZv aWQgbWlycm9yX3FlbXVfZGlza3MobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fc3RyZWFtX3dyaXRl X3N0YXRlICpzd3MsCiB7CiAgICAgaW50IGNvdW50ZXIgPSAyMDsKICAgICBjaGFyKiB0YXJnZXQ7 Ci0gICAgYm9vbCBqb2JfaXNfcmVhZHkgPSBmYWxzZTsKICAgICBsaWJ4bF9fZG9tYWluX3NhdmVf c3RhdGUgKmRzcyA9IHN3cy0+ZHNzOwogICAgIGNvbnN0IHVpbnQzMl90IGRvbWlkID0gZHNzLT5k b21pZDsKICAgICBTVEFURV9BT19HQyhkc3MtPmFvKTsKIAotICAgIGlmIChkc3MtPm1pcnJvcl9x ZW11X2Rpc2tzKSB7CisgICAgaWYgKHJjKQorICAgICAgICBnb3RvIGVycjsKICAgICAvKgogICAg ICAqIElmIHRoZSAtcSB3YXMgcHJvdmlkZWQsIHRoZSBkcml2ZS1taXJyb3Igam9iIGlzIHN0YXJ0 ZWQuCi0gICAgICogVE9ETzogTW92ZSB0aGUgZm9sbG93aW5nIGNvZGUgYXMgcGFydCBvZiB0aGUg ZG9tYWluX3N1c3BlbmQKICAgICAgKiBUT0RPOiBUaGUgcG9ydCBzaG91bGQgYmUgc2VudCBieSB0 aGUgZGVzdGluYXRpb24uCi0gICAgKi8KLXN0YXJ0X21pcnJvcjoKLSAgICAgICAgTE9HRChERUJV RywgZG9taWQsICJTbGVlcGluZyBmb3IgYSBiaXQgc28gdGhhdCBzb3VyY2UgY2FuIHN0YXJ0IE5C RFxuIik7Ci0gICAgICAgIHNsZWVwKDMwKTsKLSAgICAgICAgTE9HRChERUJVRywgZG9taWQsICJT dGFydGluZyBtaXJyb3ItZHJpdmUgb2YgZGV2aWNlICVzXG4iLAotICAgICAgICAgICAgIFFFTVVf RFJJVkVfTUlSUk9SX0RFVklDRSk7Ci0gICAgICAgIHRhcmdldCA9IEdDU1BSSU5URigibmJkOiVz OiVzOmV4cG9ydG5hbWU9JXMiLCBkc3MtPmhvc3RuYW1lLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgUUVNVV9EUklWRV9NSVJST1JfUE9SVCwgUUVNVV9EUklWRV9NSVJST1JfREVWSUNFKTsK LSAgICAgICAgcmMgPSBsaWJ4bF9fcW1wX2RyaXZlX21pcnJvcihnYywgZHNzLT5kb21pZCwgUUVN VV9EUklWRV9NSVJST1JfREVWSUNFLAorICAgICAqLworIHN0YXJ0X21pcnJvcjoKKyAgICBMT0dE KERFQlVHLCBkb21pZCwgIlNsZWVwaW5nIGZvciBhIGJpdCBzbyB0aGF0IHNvdXJjZSBjYW4gc3Rh cnQgTkJEXG4iKTsKKyAgICBzbGVlcCgzMCk7CisgICAgTE9HRChERUJVRywgZG9taWQsICJTdGFy dGluZyBtaXJyb3ItZHJpdmUgb2YgZGV2aWNlICVzXG4iLAorICAgICAgICAgUUVNVV9EUklWRV9N SVJST1JfREVWSUNFKTsKKyAgICB0YXJnZXQgPSBHQ1NQUklOVEYoIm5iZDolczolczpleHBvcnRu YW1lPSVzIiwgZHNzLT5ob3N0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgUUVNVV9EUklW RV9NSVJST1JfUE9SVCwgUUVNVV9EUklWRV9NSVJST1JfREVWSUNFKTsKKyAgICByYyA9IGxpYnhs X19xbXBfZHJpdmVfbWlycm9yKGdjLCBkc3MtPmRvbWlkLCBRRU1VX0RSSVZFX01JUlJPUl9ERVZJ Q0UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LCAicmF3Iik7 Ci0gICAgICAgIGlmICghcmMpIHsKLSAgICAgICAgICAgIExPR0QoSU5GTywgZG9taWQsICJEcml2 ZSBtaXJyb3IgY29tbWFuZCByZXR1cm5lZCBzdWNjZXNzZnVsbHlcbiIpOworICAgIGlmICghcmMp IHsKKyAgICAgICAgTE9HRChERUJVRywgZG9taWQsICJEcml2ZSBtaXJyb3IgY29tbWFuZCByZXR1 cm5lZCBzdWNjZXNzZnVsbHlcbiIpOworICAgIH1lbHNleworICAgICAgICBMT0dEKEVSUk9SLCBk b21pZCwgIlNlbmRpbmcgZHJpdmUgbWlycm9yIGNvbW1hbmQgZmFpbGVkXG4iKTsKKyAgICAgICAg aWYoY291bnRlciA+IDApeworICAgICAgICAgICAgTE9HRChJTkZPLCBkb21pZCwgIkNvdW50ZXI6 ICVkLiBTbGVlcGluZyBmb3IgMTAgc2VjIGFuZCByZXRyeVxuIiwgY291bnRlcik7CisgICAgICAg ICAgICBzbGVlcCgxMCk7CisgICAgICAgICAgICBjb3VudGVyLS07CisgICAgICAgICAgICBnb3Rv IHN0YXJ0X21pcnJvcjsKICAgICAgICAgfWVsc2V7Ci0gICAgICAgICAgICBMT0dEKEVSUk9SLCBk b21pZCwgIlNlbmRpbmcgZHJpdmUgbWlycm9yIGNvbW1hbmQgZmFpbGVkXG4iKTsKLSAgICAgICAg ICAgIGlmKGNvdW50ZXIgPiAwKXsKLSAgICAgICAgICAgICAgICBMT0dEKElORk8sIGRvbWlkLCAi Q291bnRlcjogJWQuIFNsZWVwaW5nIGZvciAxMCBzZWMgYW5kIHJldHJ5XG4iLCBjb3VudGVyKTsK LSAgICAgICAgICAgICAgICBzbGVlcCgxMCk7Ci0gICAgICAgICAgICAgICAgY291bnRlci0tOwot ICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRfbWlycm9yOwotICAgICAgICAgICAgfWVsc2V7Ci0g ICAgICAgICAgICAgICAgZ290byBjb250OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg ICAgICAgLyoKLSAgICAgICAgICogUXVlcnkgam9iIHN0YXR1cyB1bnRpbCBpdCBpcyByZWFkeQot ICAgICAgICAgKiBUT0RPOiBUaGlzIGNvZGUgaXMganVzdCBhbiBpbmVmZmljaWVudCBidXN5IHdh aXQuIFFNUCBzZW5kcyBhbgotICAgICAgICAgKiBUT0RPOiBhc3luY2hyb25vdXMgbWVzc2FnZSB3 aGVuIG1pcnJvcmluZyBqb2IgaXMgY29tcGxldGVkLiBDb25zaWRlcgotICAgICAgICAgKiBUT0RP OiBhZGRpbmcgdGhlIGNhcGFiaWxpdHkgdG8gaGFuZGxlIGFzeW5jaHJvbm91cyBRTVAgbWVzc2Fn ZXMgKGFscmVhZHkgZG9uZT8pCi0gICAgICAgICAqLwotICAgICAgICB3aGlsZSgham9iX2lzX3Jl YWR5KSB7Ci0gICAgICAgICAgICBMT0dEKElORk8sIGRvbWlkLCAiQ2hlY2tpbmcgZm9yIGRyaXZl LW1pcnJvciBqb2IiKTsKLSAgICAgICAgICAgIHJjID0gbGlieGxfX3FtcF9xdWVyeV9ibG9ja19q b2JzKGdjLCBkc3MtPmRvbWlkLCAmam9iX2lzX3JlYWR5KTsKLSAgICAgICAgICAgIGlmKHJjKXsK LSAgICAgICAgICAgICAgICBMT0dEKEVSUk9SLCBkb21pZCwgIkNoZWNraW5nIGJsb2NrIGpvYiBm YWlsZWRcbiIpOwotICAgICAgICAgICAgICAgIGdvdG8gY29udDsKLSAgICAgICAgICAgIH1lbHNl ewotICAgICAgICAgICAgICAgIExPR0QoSU5GTywgZG9taWQsICJDaGVja2luZyBibG9jayBqb2Ig c3VjY2VlZGVkXG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmKCFqb2JfaXNfcmVh ZHkpewotICAgICAgICAgICAgICAgIExPR0QoSU5GTywgZG9taWQsICJTbGVlcGluZyA1IHNlY1xu Iik7Ci0gICAgICAgICAgICAgICAgc2xlZXAoNSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAg ICBnb3RvIGVycjsKICAgICAgICAgfQogICAgIH0KLWNvbnQ6CisKICAgICBsaWJ4bF9fc3RyZWFt X3dyaXRlX3N0YXJ0KGVnYywgJnN3cy0+ZHNzLT5zd3MpOworICAgIHJldHVybjsKKworIGVycjoK KyAgIGRzcy0+Y2FsbGJhY2soZWdjLCBkc3MsIHJjKTsKIH0KIAogc3RhdGljIHZvaWQgc3RyZWFt X2RvbmUobGlieGxfX2VnYyAqZWdjLApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfcW1w LmMgYi90b29scy9saWJ4bC9saWJ4bF9xbXAuYwppbmRleCBmZTZmMDc2Li41ZWY1ZmIxIDEwMDY0 NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9xbXAuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9x bXAuYwpAQCAtNTksNiArNTksMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgY2FsbGJhY2tfaWRfcGFpciB7 CiAgICAgTElCWExfU1RBSUxRX0VOVFJZKHN0cnVjdCBjYWxsYmFja19pZF9wYWlyKSBuZXh0Owog fSBjYWxsYmFja19pZF9wYWlyOwogCit0eXBlZGVmIHN0cnVjdCBoYW5kbGVyX2V2ZW50X3BhaXIg eworICAgIGNvbnN0IGNoYXIqIGV2ZW50X3R5cGU7CisgICAgdm9pZCAqb3BhcXVlOworICAgIHFt cF9yZXF1ZXN0X2NvbnRleHQgKmNvbnRleHQ7CisgICAgcW1wX2NhbGxiYWNrX3QgZXZlbnRfaGFu ZGxlcjsKK30gZXZlbnRfaGFuZGxlcl9wYWlyOworCiBzdHJ1Y3QgbGlieGxfX3FtcF9oYW5kbGVy IHsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfdW4gYWRkcjsKICAgICBpbnQgcW1wX2ZkOwpAQCAtNjYs NiArNzMsOSBAQCBzdHJ1Y3QgbGlieGxfX3FtcF9oYW5kbGVyIHsKICAgICB0aW1lX3QgdGltZW91 dDsKICAgICAvKiB3YWl0X2Zvcl9pZCB3aWxsIGJlIHVzZWQgYnkgdGhlIHN5bmNocm9ub3VzIHNl bmQgZnVuY3Rpb24gKi8KICAgICBpbnQgd2FpdF9mb3JfaWQ7CisgICAgLyogd2FpdF9mb3JfZXZl bnRfdHlwZSBpcyB1c2VkIHRvIHdhaXQgb24gUU1QIGV2ZW50cyAqLworICAgIGNvbnN0IGNoYXIq IHdhaXRfZm9yX2V2ZW50X3R5cGU7CisgICAgZXZlbnRfaGFuZGxlcl9wYWlyICpoZXA7CiAKICAg ICBjaGFyIGJ1ZmZlcltRTVBfUkVDRUlWRV9CVUZGRVJfU0laRSArIDFdOwogICAgIGxpYnhsX195 YWpsX2N0eCAqeWFqbF9jdHg7CkBAIC0yODcsNiArMjk3LDI1IEBAIHN0YXRpYyB2b2lkIHFtcF9o YW5kbGVfZXJyb3JfcmVzcG9uc2UobGlieGxfX2djICpnYywgbGlieGxfX3FtcF9oYW5kbGVyICpx bXAsCiAgICAgICAgICBsaWJ4bF9fanNvbl9vYmplY3RfZ2V0X3N0cmluZyhyZXNwKSk7CiB9CiAK K3N0YXRpYyB2b2lkIHFtcF9oYW5kbGVfZXZlbnQobGlieGxfX2djICpnYywgbGlieGxfX3FtcF9o YW5kbGVyICpxbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX19q c29uX29iamVjdCAqZXZlbnQpCit7CisgICAgY29uc3QgY2hhciogZXZlbnRfdHlwZSA9IE5VTEw7 CisgICAgY29uc3QgbGlieGxfX2pzb25fb2JqZWN0ICpldmVudF9vID0gTlVMTDsKKyAgICBldmVu dF9vID0gbGlieGxfX2pzb25fbWFwX2dldCgiZXZlbnQiLCBldmVudCwgSlNPTl9BTlkpOworICAg IGV2ZW50X3R5cGUgPSBsaWJ4bF9fanNvbl9vYmplY3RfZ2V0X3N0cmluZyhldmVudF9vKTsKKyAg ICBpbnQgcmM7CisKKyAgICBpZihxbXAtPndhaXRfZm9yX2V2ZW50X3R5cGUgJiYKKyAgICAgICAh c3RyY21wKGV2ZW50X3R5cGUsIHFtcC0+d2FpdF9mb3JfZXZlbnRfdHlwZSkpIHsKKyAgICAgICBy YyA9IHFtcC0+aGVwLT5ldmVudF9oYW5kbGVyKHFtcCwKKyAgICAgICAgICAgICAgICAgICAgICBs aWJ4bF9fanNvbl9tYXBfZ2V0KCJkYXRhIiwgZXZlbnQsIEpTT05fQU5ZKSwKKyAgICAgICAgICAg ICAgICAgICAgICBxbXAtPmhlcC0+b3BhcXVlKTsKKyAgICAgICAgcW1wLT5oZXAtPmNvbnRleHQt PnJjID0gcmM7CisgICAgICAgIHFtcC0+d2FpdF9mb3JfZXZlbnRfdHlwZSA9IE5VTEw7CisgICAg fQorfQorCiBzdGF0aWMgaW50IHFtcF9oYW5kbGVfcmVzcG9uc2UobGlieGxfX2djICpnYywgbGli eGxfX3FtcF9oYW5kbGVyICpxbXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgbGlieGxfX2pzb25fb2JqZWN0ICpyZXNwKQogewpAQCAtMzI1LDYgKzM1NCw3IEBAIHN0YXRp YyBpbnQgcW1wX2hhbmRsZV9yZXNwb25zZShsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9fcW1wX2hhbmRs ZXIgKnFtcCwKICAgICAgICAgcW1wX2hhbmRsZV9lcnJvcl9yZXNwb25zZShnYywgcW1wLCByZXNw KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGNhc2UgTElCWExfX1FNUF9NRVNTQUdFX1RZUEVf RVZFTlQ6CisgICAgICAgIHFtcF9oYW5kbGVfZXZlbnQoZ2MsIHFtcCwgcmVzcCk7CiAgICAgICAg IHJldHVybiAwOwogICAgIGNhc2UgTElCWExfX1FNUF9NRVNTQUdFX1RZUEVfSU5WQUxJRDoKICAg ICAgICAgcmV0dXJuIC0xOwpAQCAtMzQ4LDkgKzM3OCw3IEBAIHN0YXRpYyBsaWJ4bF9fcW1wX2hh bmRsZXIgKnFtcF9pbml0X2hhbmRsZXIobGlieGxfX2djICpnYywgdWludDMyX3QgZG9taWQpCiAg ICAgcW1wLT5jdHggPSBDVFg7CiAgICAgcW1wLT5kb21pZCA9IGRvbWlkOwogCi0gICAgLy9UT0RP OiBDaGFuZ2VkIGRlZmF1bHQgdGltZW91dCBiZWNhdXNlIGRyaXZlLW1pcnJvciBjb21tYW5kIHRh a2VzIGEgbG9uZwotICAgIC8vVE9ETzogdG8gcmV0dXJuLiBDb25zaWRlciB0aW1lb3V0IHRvIGJl IHBhc3NlZCBhcyBwYXJhbS4KLSAgICBxbXAtPnRpbWVvdXQgPSA2MDA7CisgICAgcW1wLT50aW1l b3V0ID0gNTsKIAogICAgIExJQlhMX1NUQUlMUV9JTklUKCZxbXAtPmNhbGxiYWNrX2xpc3QpOwog CkBAIC02MjcsNiArNjU1LDMxIEBAIHN0YXRpYyB2b2lkIHFtcF9mcmVlX2hhbmRsZXIobGlieGxf X3FtcF9oYW5kbGVyICpxbXApCiAgICAgZnJlZShxbXApOwogfQogCitzdGF0aWMgaW50IHdhaXRf Zm9yX2V2ZW50KGxpYnhsX19xbXBfaGFuZGxlciAqcW1wLCBldmVudF9oYW5kbGVyX3BhaXIgKmhl cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbWVvdXQpCit7CisgICAgaW50IHJl dCA9IDA7CisgICAgR0NfSU5JVChxbXAtPmN0eCk7CisgICAgcW1wLT50aW1lb3V0ID0gdGltZW91 dDsKKyAgICBxbXBfcmVxdWVzdF9jb250ZXh0IGNvbnRleHQgPSB7IC5yYyA9IDAgfTsKKyAgICBx bXAtPmhlcCA9IGhlcDsKKyAgICBxbXAtPndhaXRfZm9yX2V2ZW50X3R5cGUgPSBoZXAtPmV2ZW50 X3R5cGU7CisgICAgaGVwLT5jb250ZXh0ID0gJmNvbnRleHQ7CisKKyAgICB3aGlsZSAocW1wLT53 YWl0X2Zvcl9ldmVudF90eXBlKSB7CisgICAgICAgIGlmICgocmV0ID0gcW1wX25leHQoZ2MsIHFt cCkpIDwgMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBp ZiAoIXFtcC0+d2FpdF9mb3JfZXZlbnRfdHlwZSAmJiByZXQgPT0gMCkgeworICAgICAgICByZXQg PSBjb250ZXh0LnJjOworICAgIH0KKyAgICBHQ19GUkVFOworCisgICAgcmV0dXJuIHJldDsKK30K KwogLyoKICAqIFFNUCBQYXJhbWV0ZXJzIEhlbHBlcnMKICAqLwpAQCAtMTA3MiwxMCArMTEyNSw4 MiBAQCBpbnQgbGlieGxfX3FtcF9uYmRfc2VydmVyX2FkZChsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9t aWQsIGNvbnN0IGNoYXIgKmRpc2spCiAgICAgcmV0dXJuIHFtcF9ydW5fY29tbWFuZChnYywgZG9t aWQsICJuYmQtc2VydmVyLWFkZCIsIGFyZ3MsIE5VTEwsIE5VTEwpOwogfQogCi1pbnQgbGlieGxf X3FtcF9kcml2ZV9taXJyb3IobGlieGxfX2djICpnYywgaW50IGRvbWlkLCBjb25zdCBjaGFyKiBk ZXZpY2UsIGNvbnN0IGNoYXIqIHRhcmdldCwgY29uc3QgY2hhciogZm9ybWF0KQorc3RhdGljIGlu dCBibG9ja19qb2JfcmVhZHlfaGFuZGxlcihsaWJ4bF9fcW1wX2hhbmRsZXIgKnFtcCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9fanNvbl9vYmplY3QgKmRhdGEsIHZv aWQgKm9wYXF1ZSl7CisKKyAgICBHQ19JTklUKHFtcC0+Y3R4KTsKKyAgICBpbnQgcmMgPSAtMTsK KworICAgIGNvbnN0IGNoYXIgKnR5cGU7CisgICAgY29uc3QgY2hhciAqZGV2aWNlOworICAgIHVu c2lnbmVkIGludCBsZW47CisgICAgdW5zaWduZWQgaW50IG9mZnNldDsKKyAgICB1bnNpZ25lZCBp bnQgc3BlZWQ7CisKKyAgICBjb25zdCBsaWJ4bF9fanNvbl9vYmplY3QgKm9iaiA9IE5VTEw7CisK KyAgICBvYmogPSBsaWJ4bF9fanNvbl9tYXBfZ2V0KCJ0eXBlIiwgZGF0YSwgSlNPTl9TVFJJTkcp OworICAgIGlmICghb2JqKSB7CisgICAgICAgIExPR0QoRVJST1IsIHFtcC0+ZG9taWQsICJGYWls ZWQgdG8gcmV0cmlldmUgam9iIHR5cGUuIik7CisgICAgICAgIHJjID0gRVJST1JfRkFJTDsKKyAg ICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIHR5cGUgPSBsaWJ4bF9fanNvbl9vYmplY3RfZ2V0 X3N0cmluZyhvYmopOworCisgICAgb2JqID0gbGlieGxfX2pzb25fbWFwX2dldCgiZGV2aWNlIiwg ZGF0YSwgSlNPTl9TVFJJTkcpOworICAgIGlmICghb2JqKSB7CisgICAgICAgIExPR0QoRVJST1Is IHFtcC0+ZG9taWQsICJGYWlsZWQgdG8gcmV0cmlldmUgZGV2aWNlLiIpOworICAgICAgICByYyA9 IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBkZXZpY2UgPSBsaWJ4 bF9fanNvbl9vYmplY3RfZ2V0X3N0cmluZyhvYmopOworCisgICAgb2JqID0gbGlieGxfX2pzb25f bWFwX2dldCgibGVuIiwgZGF0YSwgSlNPTl9JTlRFR0VSKTsKKyAgICBpZiAoIW9iaikgeworICAg ICAgICBMT0dEKEVSUk9SLCBxbXAtPmRvbWlkLCAiRmFpbGVkIHRvIHJldHJpZXZlIGxlbmd0aC4i KTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBnb3RvIG91dDsKKyAgICB9Cisg ICAgbGVuID0gbGlieGxfX2pzb25fb2JqZWN0X2dldF9pbnRlZ2VyKG9iaik7CisKKyAgICBvYmog PSBsaWJ4bF9fanNvbl9tYXBfZ2V0KCJvZmZzZXQiLCBkYXRhLCBKU09OX0lOVEVHRVIpOworICAg IGlmICghb2JqKSB7CisgICAgICAgIExPR0QoRVJST1IsIHFtcC0+ZG9taWQsICJGYWlsZWQgdG8g cmV0cmlldmUgb2Zmc2V0LiIpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdv dG8gb3V0OworICAgIH0KKyAgICBvZmZzZXQgPSBsaWJ4bF9fanNvbl9vYmplY3RfZ2V0X2ludGVn ZXIob2JqKTsKKworICAgIG9iaiA9IGxpYnhsX19qc29uX21hcF9nZXQoInNwZWVkIiwgZGF0YSwg SlNPTl9JTlRFR0VSKTsKKyAgICBpZiAoIW9iaikgeworICAgICAgICBMT0dEKEVSUk9SLCBxbXAt PmRvbWlkLCAiRmFpbGVkIHRvIHJldHJpZXZlIHNwZWVkLiIpOworICAgICAgICByYyA9IEVSUk9S X0ZBSUw7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBzcGVlZCA9IGxpYnhsX19qc29u X29iamVjdF9nZXRfaW50ZWdlcihvYmopOworCisgICAgTE9HRChJTkZPLCBxbXAtPmRvbWlkLCAi QmxvY2sgSm9iIFJlYWR5OiBEZXRhaWxzOiBEZXZpY2U6ICVzLCBUeXBlOiAlcywgTGVuOiAldSwg T2Zmc2V0OiAldSwgU3BlZWQgJXVcbiIsCisgICAgICAgICBkZXZpY2UsIHR5cGUsIGxlbiwgb2Zm c2V0LCBzcGVlZCk7CisKKyAgICByYyA9IDA7CitvdXQ6CisgICAgR0NfRlJFRTsKKyAgICByZXR1 cm4gcmM7Cit9CisKK2ludCBsaWJ4bF9fcW1wX2RyaXZlX21pcnJvcihsaWJ4bF9fZ2MgKmdjLCBp bnQgZG9taWQsIGNvbnN0IGNoYXIqIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBjaGFyKiB0YXJnZXQsIGNvbnN0IGNoYXIqIGZvcm1hdCkKIHsKKyAgICBsaWJ4bF9f cW1wX2hhbmRsZXIgKnFtcCA9IE5VTEw7CiAgICAgbGlieGxfX2pzb25fb2JqZWN0ICphcmdzID0g TlVMTDsKLSAgICAvL1RPRE86IEFsbG93IG1ldGhvZCB0byByZWNlaXZlICJzeW5jIiwgInNwZWVk IiwgIm1vZGUiLCAiZ3JhbnVyYWxpdHkiLCAiYnVmLXNpemUiCisgICAgaW50IHJjID0gMDsKKyAg ICAvKiBUT0RPOiBBbGxvdyBtZXRob2QgdG8gcmVjZWl2ZSAic3luYyIsICJzcGVlZCIsICJtb2Rl IiwgImdyYW51cmFsaXR5IgorICAgICAqICJidWYtc2l6ZSIKKyAgICAgKi8KKyAgICAgcW1wID0g bGlieGxfX3FtcF9pbml0aWFsaXplKGdjLCBkb21pZCk7CisgICAgIGlmICghcW1wKQorICAgICAg ICByZXR1cm4gLTE7CisKICAgICBxbXBfcGFyYW1ldGVyc19hZGRfc3RyaW5nKGdjLCAmYXJncywg ImRldmljZSIsIGRldmljZSk7CiAgICAgcW1wX3BhcmFtZXRlcnNfYWRkX3N0cmluZyhnYywgJmFy Z3MsICJ0YXJnZXQiLCB0YXJnZXQpOwogICAgIHFtcF9wYXJhbWV0ZXJzX2FkZF9zdHJpbmcoZ2Ms ICZhcmdzLCAic3luYyIsICJmdWxsIik7CkBAIC0xMDg0LDcgKzEyMDksMjAgQEAgaW50IGxpYnhs X19xbXBfZHJpdmVfbWlycm9yKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCwgY29uc3QgY2hhciog ZGV2aWNlLCBjb25zdAogICAgIHFtcF9wYXJhbWV0ZXJzX2FkZF9pbnRlZ2VyKGdjLCAmYXJncywg ImdyYW51bGFyaXR5IiwgMCk7CiAgICAgcW1wX3BhcmFtZXRlcnNfYWRkX2ludGVnZXIoZ2MsICZh cmdzLCAiYnVmLXNpemUiLCAwKTsKIAotICAgIHJldHVybiBxbXBfcnVuX2NvbW1hbmQoZ2MsIGRv bWlkLCAiZHJpdmUtbWlycm9yIiwgYXJncywgTlVMTCwgTlVMTCk7CisgICAgcmMgPSBxbXBfc3lu Y2hyb25vdXNfc2VuZChxbXAsICJkcml2ZS1taXJyb3IiLCBhcmdzLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwgcW1wLT50aW1lb3V0KTsKKworICAgIGlmICggIXJj ICkgeworICAgICAgICBldmVudF9oYW5kbGVyX3BhaXIgaGVwID0KKyAgICAgICAgICAgIHsKKyAg ICAgICAgICAgICAgICAuZXZlbnRfdHlwZSA9ICJCTE9DS19KT0JfUkVBRFkiLAorICAgICAgICAg ICAgICAgIC5ldmVudF9oYW5kbGVyID0gYmxvY2tfam9iX3JlYWR5X2hhbmRsZXIsCisgICAgICAg ICAgICB9OworCisgICAgICAgIHJjID0gd2FpdF9mb3JfZXZlbnQocW1wLCAmaGVwLCA2MDApOwor ICAgIH0KKyAgICBsaWJ4bF9fcW1wX2Nsb3NlKHFtcCk7CisgICAgcmV0dXJuIHJjOwogfQogCiBz dGF0aWMgaW50IHF1ZXJ5X2Jsb2NrX2NhbGxiYWNrKGxpYnhsX19xbXBfaGFuZGxlciAqcW1wLAot LSAKMi4zLjIgKEFwcGxlIEdpdC01NSkKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK