From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [RFC v2 8/9] HACK libxl_exec: Check QEMU status via QMP instead of xenstore Date: Mon, 16 Apr 2018 18:32:26 +0100 Message-ID: <20180416173227.22671-9-anthony.perard@citrix.com> References: <20180416173227.22671-1-anthony.perard@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1f87zW-0006iv-Ki for xen-devel@lists.xenproject.org; Mon, 16 Apr 2018 17:32:34 +0000 In-Reply-To: <20180416173227.22671-1-anthony.perard@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Anthony PERARD , Ian Jackson , Wei Liu List-Id: xen-devel@lists.xenproject.org V2hlbiBRRU1VIGlzIHJlc3RyaWN0ZWQsIHRoZSBxZW11IG9uIHRoZSByZWNlaXZpbmcgc2lkZSBj YW5uJ3Qgd3JpdGUKYW55dGhpbmcgdG8geGVuc3RvcmUgb25jZSB0aGUgbWlncmF0aW9uIGlzIHN0 YXJ0ZWQuIFNvIGl0IGNhbm4ndCB0ZWxsCmxpYnhsIHRoYXQgaXQgaXMgcmVhZHkgdG8gY29udGlu dWUgcnVubmluZyB0aGUgZ3Vlc3QuCgpJbiBvcmRlciB0byBmaW5kIG91dCBpZiBRRU1VIGlzIHJl YWR5LCB3ZSBjYW4gaXNzdWUgUU1QIGNvbW1hbmRzIGFuZApjaGVjayBpZiBpdCByZXNwb25kLgoK QnV0IHRoZXJlIGlzIG5vIFFNUCBzb2NrZXQgdG8gY29ubmVjdCB0byBiZWZvcmUgcWVtdSBpcyBz dGFydGVkLiBCdXQgd2UKY2FuIHVzZXMgZGlmZmVyZW50IGZhY2lsaXR5IGZyb20gcWVtdSBpbiBv cmRlciB0byBzZXR1cCBzb21lIGtpbmQgb2YKY2FsbGJhY2sgYmVmb3JlIHN0YXJ0aW5nIFFFTVUu IEZvciB0aGF0LCB3ZSBvcGVuIGEgZmlsZSBkZXNjcmlwdG9yIGFuZApnaXZlIGl0IHRvIHFlbXUu CgpUaGlzIHBhdGNoIGNyZWF0ZXMgYSBwaXBlLCBnaXZlIHRoZSB3cml0ZS1lbmQgdG8gcWVtdSwg YW5kIHdhaXQgZm9yCnNvbWV0aGluZyB0byBiZSB3cml0dGVuIHRvIGl0LiAoV2UgY291bGQgY2hl Y2sgaWYgaXQgaXMgYWN0dWFsbHkgdGhlIFFNUApncmVldGluZyBtZXNzYWdlLikKClFFTVUgaXMg YXNrZWQgdG8gc2V0dXAgYSBRTVAgc2VydmVyIG9uIHRoaXMgcGlwZSwgYnV0IGV2ZW4gaWYgaXQg aXMgYQpvbmUtd2F5IG9ubHksIHFlbXUgd2lsbCB3cml0ZSB0aGUgUU1QIGdyZWV0aW5nIG1lc3Nh Z2UgdG8gdGhlIHBpcGUuClRoaXMgaXMgZG9uZSB3aXRoOgotYWRkLWZkLCB0byBjcmVhdGUgYSBm ZHNldCB3aGljaCBpcyB1c2UgbGF0ZXIuCi1jaGFyZGV2ICdmaWxlLHBhdGg9L2Rldi9mZHNldC8x LGFwcGVuZD10cnVlJywgdGhpcyBvcGVuIGEgY2hhciBkZXZpY2UKb24gdGhlIHdyaXRlLWVuZCBv ZiB0aGUgcGlwZSwgdGVsbCBxZW11IHRoYXQgdGhlIEZEIGlzIHdyaXRlLW9ubHksIGFuZApub3Qg dG8gcnVuIHRydW5jYXRlIG9uIGl0LgotbW9uLCBqdXN0IHN0YXJ0IHRoZSBRTVAgc2VydmVyIG9u IHRoaXMgbmV3IGNoYXJkZXYuCgpXaXRoIHRoYXQsIHFlbXUgd2lsbCBzdGFydCB0aGUgUU1QIHNl cnZlciBvbiB0aGUgd3JpdGUtb25seSBmZCwgd2hpY2ggaXMKZW5vdWdoIHRvIGhhdmUgdGhlIFFN UCBncmVldGluZyBtZXNzYWdlLiBBdCB0aGlzIHBvaW50LCB0aGUgUU1QIHNvY2tldAppcyByZWFk eSwgYW5kIEkgdGhpbmsgcWVtdSBpcyBpbiB0aGUgbWFpbi1sb29wIGFuZCByZWFkeSB0byBzdGFy dCB0aGUKZW11bGF0aW9uIGFuZCByZXNwb25kIHRvIFFNUCBjb21tYW5kcy4KClRoaXMgcGF0Y2gg Y2FsbHMgJ3F1ZXJ5LXN0YXR1cycsIGFueSByZXNwb25zZSB0byB0aGF0IHdpdGhvdXQgZXJyb3IK bWVhbnMgdGhhdCBRRU1VIGlzIHJlYWR5LiBJZiB0aGUgc3RhdHVzIGlzICJydW5uaW5nIiwgUUVN VSB3b3VsZCBhbHJlYWR5CmhhdmUgd3JpdHRlbiB0aGUgeGVuc3RvcmUgbm9kZSBpZiBpdCBjb3Vs ZCBhbmQgaXMgZG9pbmcgZW11bGF0aW9uLgooQW55IHN1YnNlcXVlbnQgUU1QIGNvbW1hbmQgJ2Nv bnQnLCBsaWJ4bF9fcW1wX3Jlc3VtZSgpLCAgaXMgbm90CmNoYW5naW5nIGFueXRoaW5nLiAgSWYg b25lIGFkZHMgJy1TJyB0byB0aGUgUUVNVSBjb21tYW5kIGxpbmUsIFFFTVUgd2lsbApoYXZlIHRo ZSBzdGF0dXMgInByZWxhdW5jaCIgYXMgYSByZXNwb25zZSB0byAncXVlcnktc3RhdHVzJywgdGhl biBRRU1VCmNhbiBiZSBhc2tlZCB0byBzdGFydCBlbXVsYXRpb24gd2l0aCAnY29udCcgdmlhIFFN UC4pCgpUaGlzIHBhdGNoIGNvcGllcyBtb3N0IG9mICJ4c3dhaXQiIGFuZCBjYWxsIGl0ICJxbXB3 YWl0Ii4gVGhpcyBpcwpwcm9iYWJseSBub3QgdGhlIGJlc3Qgd2F5IGZvcndhcmQgZHVlIHRvIGR1 cGxpY2F0aW9uLgoKU2lnbmVkLW9mZi1ieTogQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJk QGNpdHJpeC5jb20+Ci0tLQogdG9vbHMvbGlieGwvbGlieGxfYW91dGlscy5jICB8IDE1NiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdG9vbHMvbGlieGwvbGlieGxfZG0uYyAg ICAgICB8ICA0NCArKysrKysrKy0tCiB0b29scy9saWJ4bC9saWJ4bF9leGVjLmMgICAgIHwgIDI4 ICsrKysrLS0KIHRvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmggfCAgMzAgKysrKysrKwogNCBm aWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlieGwvbGlieGxfYW91dGlscy5jIGIvdG9vbHMvbGlieGwvbGlieGxfYW91 dGlscy5jCmluZGV4IDllNDkzY2Q0ODcuLjdkNjU0OTk2YzMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xp YnhsL2xpYnhsX2FvdXRpbHMuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9hb3V0aWxzLmMKQEAg LTYyNiw2ICs2MjYsMTYyIEBAIHZvaWQgbGlieGxfX2tpbGwobGlieGxfX2djICpnYywgcGlkX3Qg cGlkLCBpbnQgc2lnLCBjb25zdCBjaGFyICp3aGF0KQogICAgICAgICAgICAgICAgIHdoYXQsICh1 bnNpZ25lZCBsb25nKXBpZCwgc2lnKTsKIH0KIAorLyotLS0tLSBxbXB3YWl0IC0tLS0tKi8KKwor c3RhdGljIGxpYnhsX19ldl9mZF9jYWxsYmFjayBxbXB3YWl0X2ZkX3JlYWRfY2FsbGJhY2s7Citz dGF0aWMgbGlieGxfX2V2X3RpbWVfY2FsbGJhY2sgcW1wd2FpdF90aW1lb3V0X2NhbGxiYWNrOwor c3RhdGljIHZvaWQgcW1wd2FpdF9yZXBvcnRfZXJyb3IobGlieGxfX2VnYyosIGxpYnhsX19xbXB3 YWl0X3N0YXRlKiwgaW50IHJjKTsKKwordm9pZCBsaWJ4bF9fcW1wd2FpdF9pbml0KGxpYnhsX19x bXB3YWl0X3N0YXRlICpxbXB3YSkKK3sKKyAgICBsaWJ4bF9fZXZfdGltZV9pbml0KCZxbXB3YS0+ dGltZV9ldik7CisgICAgbGlieGxfX2V2X2ZkX2luaXQoJnFtcHdhLT5ub3RpZnlfZWZkKTsKK30K Kwordm9pZCBsaWJ4bF9fcW1wd2FpdF9zdG9wKGxpYnhsX19nYyAqZ2MsIGxpYnhsX19xbXB3YWl0 X3N0YXRlICpxbXB3YSkKK3sKKyAgICBsaWJ4bF9fZXZfdGltZV9kZXJlZ2lzdGVyKGdjLCAmcW1w d2EtPnRpbWVfZXYpOworICAgIGxpYnhsX19ldl9mZF9kZXJlZ2lzdGVyKGdjLCAmcW1wd2EtPm5v dGlmeV9lZmQpOworICAgIGxpYnhsX19jYXJlZmRfY2xvc2UocW1wd2EtPm5vdGlmeV9jZmQpOwor ICAgIHFtcHdhLT5ub3RpZnlfY2ZkID0gTlVMTDsKK30KKworYm9vbCBsaWJ4bF9fcW1wd2FpdF9p bnVzZShjb25zdCBsaWJ4bF9fcW1wd2FpdF9zdGF0ZSAqcW1wd2EpCit7CisgICAgYm9vbCB0aW1l X2ludXNlID0gbGlieGxfX2V2X3RpbWVfaXNyZWdpc3RlcmVkKCZxbXB3YS0+dGltZV9ldik7Cisg ICAgYm9vbCB3YXRjaF9pbnVzZSA9IGxpYnhsX19ldl9mZF9pc3JlZ2lzdGVyZWQoJnFtcHdhLT5u b3RpZnlfZWZkKTsKKyAgICBhc3NlcnQodGltZV9pbnVzZSA9PSB3YXRjaF9pbnVzZSk7CisgICAg cmV0dXJuIHRpbWVfaW51c2U7Cit9CisKK2ludCBsaWJ4bF9fcW1wd2FpdF9zdGFydChsaWJ4bF9f Z2MgKmdjLCBsaWJ4bF9fcW1wd2FpdF9zdGF0ZSAqcW1wd2EpCit7CisgICAgaW50IHJjOworCisg ICAgcmMgPSBsaWJ4bF9fZXZfdGltZV9yZWdpc3Rlcl9yZWwocW1wd2EtPmFvLCAmcW1wd2EtPnRp bWVfZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcW1wd2FpdF90aW1l b3V0X2NhbGxiYWNrLCBxbXB3YS0+dGltZW91dF9tcyk7CisgICAgaWYgKHJjKSBnb3RvIGVycjsK KworICAgIHJjID0gbGlieGxfX2V2X2ZkX3JlZ2lzdGVyKGdjLCAmcW1wd2EtPm5vdGlmeV9lZmQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcW1wd2FpdF9mZF9yZWFkX2NhbGxiYWNr LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19jYXJlZmRfZmQocW1wd2Et Pm5vdGlmeV9jZmQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBPTExJTik7Cisg ICAgaWYgKHJjKSBnb3RvIGVycjsKKworICAgIHJldHVybiAwOworCisgZXJyOgorICAgIGxpYnhs X19xbXB3YWl0X3N0b3AoZ2MsIHFtcHdhKTsKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyB2 b2lkIHFtcHdhaXRfZmRfcmVhZF9jYWxsYmFjayhsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9m ZCAqZXYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZkLCBzaG9y dCBldmVudHMsIHNob3J0IHJldmVudHMpCit7CisgICAgLy8gY2hlY2tvdXQ6CisgICAgLy8gLSBk YXRhY29waWVyX3JlYWRhYmxlCisgICAgLy8gLSB3YXRjaGZkX2NhbGxiYWNrCisKKyAgICBsaWJ4 bF9fcW1wd2FpdF9zdGF0ZSAqcW1wd2EgPSBDT05UQUlORVJfT0YoZXYsICpxbXB3YSwgbm90aWZ5 X2VmZCk7CisgICAgbGlieGxfX3NwYXduX3N0YXRlICpzcyA9IENPTlRBSU5FUl9PRihldiwgKnNz LCBxbXB3YWl0Lm5vdGlmeV9lZmQpOworICAgIFNUQVRFX0FPX0dDKHFtcHdhLT5hbyk7CisKKyAg ICAvLyBuZWVkIHRvIGhhbmRsZSBQT0xMRVJSCisgICAgLy8gUE9MTEhVUCBhbmQgUE9MTElOIG1p Z2h0IGJlIGJvdGggc2V0LgorICAgIGlmIChyZXZlbnRzICYgUE9MTEhVUCAmJiAhKHJldmVudHMg JiBQT0xMSU4pKSB7CisgICAgICAgIExPRyhERUJVRywgInJlY2VpdmVkIFBPTExIVVAgb24gZmQg JWQ6IHJlYWQgZm9yICVzIiwKKyAgICAgICAgICAgIGZkLCBxbXB3YS0+d2hhdCk7CisgICAgICAg IGxpYnhsX19ldl9mZF9kZXJlZ2lzdGVyKGdjLCAmcW1wd2EtPm5vdGlmeV9lZmQpOworICAgICAg ICBpZiAoIXFtcHdhLT5saWZlX3RpbWVfcmVhZCkKKyAgICAgICAgICAgIHNzLT5mYWlsdXJlX2Ni KGVnYywgc3MsIEVSUk9SX0ZBSUwpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChy ZXZlbnRzICYgfihQT0xMSU58UE9MTEhVUCkpIHsKKyAgICAgICAgTE9HKEVSUk9SLCAidW5leHBl Y3RlZCBwb2xsIGV2ZW50IDB4JXggb24gZmQgJWQgKGV4cGVjdGVkIFBPTExJTiAiCisgICAgICAg ICAgICAiYW5kL29yIFBPTExIVVApIHJlYWRpbmcgJXMiLAorICAgICAgICAgICAgcmV2ZW50cywg ZmQsIHFtcHdhLT53aGF0KTsKKyAgICAgICAgbGlieGxfX2V2X2ZkX2RlcmVnaXN0ZXIoZ2MsICZx bXB3YS0+bm90aWZ5X2VmZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZm9yICg7Oykg eworICAgICAgICBpbnQgcjsKKyAgICAgICAgY2hhciBidWZmZXJbMTI4XTsKKworCisgICAgICAg IHIgPSByZWFkKGZkLCBidWZmZXIsIHNpemVvZihidWZmZXIpIC0gMSk7CisgICAgICAgIGlmIChy IDwgMCkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSBjb250aW51ZTsKKyAgICAg ICAgICAgIGFzc2VydChlcnJubyk7CisgICAgICAgICAgICBpZiAoZXJybm8gPT0gRVdPVUxEQkxP Q0spIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IExPR0UoRVJST1IsICJlcnJvciByZWFkaW5nICVzIiwgcW1wd2EtPndoYXQpOworICAgICAgICAg ICAgLypkYXRhY29waWVyX2NhbGxiYWNrKGVnYywgZGMsIEVSUk9SX0ZBSUwsIDAsIGVycm5vKTsq LworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChyID09IDApIHsK KyAgICAgICAgICAgIExPRyhFUlJPUiwgImVvZiBtYXliZSBvbiBmZCAlZCBmb3IgJXMiLAorICAg ICAgICAgICAgICAgIGZkLCBxbXB3YS0+d2hhdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg ICAgIH0KKyAgICAgICAgTE9HKERFQlVHLCAiaGF2ZSByZWFkICVkIGZyb20gZmQgJWQgZm9yICVz IiwKKyAgICAgICAgICAgIHIsIGZkLCBxbXB3YS0+d2hhdCk7CisgICAgICAgIGJ1ZmZlcltyXSA9 ICdcMCc7CisgICAgICAgIExPRyhERUJVRywgInJlYWQ6ICclcyciLCBidWZmZXIpOworICAgICAg ICBpZiAoIXFtcHdhLT5saWZlX3RpbWVfcmVhZCkgeworICAgICAgICAgICAgcW1wd2EtPmxpZmVf dGltZV9yZWFkKys7CisKKyAgICAgICAgICAgIGludCByYzsKKyAgICAgICAgICAgIGxpYnhsX19k bV9zcGF3bl9zdGF0ZSAqZG1zcyA9IENPTlRBSU5FUl9PRihzcywgKmRtc3MsIHNwYXduKTsKKwor ICAgICAgICAgICAgTE9HRChERUJVRywgZG1zcy0+Z3Vlc3RfZG9taWQsICJ3aWxsIHF1ZXJ5IHN0 YXR1cyB2aWEgcW1wIik7CisgICAgICAgICAgICByYyA9IGxpYnhsX19xbXBfcXVlcnlfc3RhdHVz KGdjLCBkbXNzLT5ndWVzdF9kb21pZCwgInJ1bm5pbmciKTsKKyAgICAgICAgICAgIGlmIChyYykg eworICAgICAgICAgICAgICAgIExPR0QoREVCVUcsIGRtc3MtPmd1ZXN0X2RvbWlkLCAicXVlcnkg c3RhdHVzIGZhaWxlZCB3aXRoOiAlZCIsIHJjKTsKKworICAgICAgICAgICAgICAgIGlmIChyYyA9 PSBFUlJPUl9OT1RfUkVBRFkpeworICAgICAgICAgICAgICAgICAgICBMT0dEKERFQlVHLCBkbXNz LT5ndWVzdF9kb21pZCwgInJldHJ5IGZvciBwcmVsYXVuY2ggc3RhdGUiKTsKKyAgICAgICAgICAg ICAgICAgICAgcmMgPSBsaWJ4bF9fcW1wX3F1ZXJ5X3N0YXR1cyhnYywgZG1zcy0+Z3Vlc3RfZG9t aWQsICJwcmVsYXVuY2giKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg ICAgICAgICBpZiAoIXJjKQorICAgICAgICAgICAgICAgIGxpYnhsX19zcGF3bl9pbml0aWF0ZV9k ZXRhY2goZ2MsIHNzKTsKKyAgICAgICAgfQorICAgICAgICAvLyBlbmQgb2YgYSBRTVAgcmVzdWx0 CisgICAgICAgIGlmIChzdHJzdHIoYnVmZmVyLCAiXHJcbiIpKSB7CisgICAgICAgICAgICBsaWJ4 bF9fZG1fc3Bhd25fc3RhdGUgKmRtc3MgPSBDT05UQUlORVJfT0Yoc3MsICpkbXNzLCBzcGF3bik7 CisgICAgICAgICAgICBMT0dEKERFQlVHLCBkbXNzLT5ndWVzdF9kb21pZCwgImhhdmUgYSBmdWxs IFFNUCBsaW5lLCBjbG9zZSBmZCIpOworICAgICAgICAgICAgbGlieGxfX2V2X2ZkX2RlcmVnaXN0 ZXIoZ2MsICZxbXB3YS0+bm90aWZ5X2VmZCk7CisgICAgICAgICAgICBsaWJ4bF9fY2FyZWZkX2Ns b3NlKHFtcHdhLT5ub3RpZnlfY2ZkKTsKKyAgICAgICAgICAgIHFtcHdhLT5ub3RpZnlfY2ZkID0g TlVMTDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgcW1wd2Fp dF90aW1lb3V0X2NhbGxiYWNrKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2V2X3RpbWUgKmV2LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdGltZXZhbCAqcmVxdWVz dGVkX2FicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJjKQoreworICAgIEVH Q19HQzsKKyAgICBsaWJ4bF9fcW1wd2FpdF9zdGF0ZSAqcW1wd2EgPSBDT05UQUlORVJfT0YoZXYs ICpxbXB3YSwgdGltZV9ldik7CisgICAgTE9HKERFQlVHLCAiJXM6IHFtcHdhaXQgdGltZW91dCIs IHFtcHdhLT53aGF0KTsKKyAgICBxbXB3YWl0X3JlcG9ydF9lcnJvcihlZ2MsIHFtcHdhLCByYyk7 Cit9CisKK3N0YXRpYyB2b2lkIHFtcHdhaXRfcmVwb3J0X2Vycm9yKGxpYnhsX19lZ2MgKmVnYywg bGlieGxfX3FtcHdhaXRfc3RhdGUgKnFtcHdhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgcmMpCit7CisgICAgRUdDX0dDOworICAgIGxpYnhsX19xbXB3YWl0X3N0b3AoZ2Ms IHFtcHdhKTsKKyAgICAvKnFtcHdhLT5jYWxsYmFjayhlZ2MsIHFtcHdhLCByYywgMCk7Ki8KKyAg ICB7CisgICAgICAgIC8vIHJldXNlIHRoZSB4c3dhaXQgY2FsbGJhY2sgZm9yIHRoZSBlcnJvciBo YW5kbGluZy4KKyAgICAgICAgbGlieGxfX3NwYXduX3N0YXRlICpzcyA9IENPTlRBSU5FUl9PRihx bXB3YSwgKnNzLCBxbXB3YWl0KTsKKyAgICAgICAgcW1wd2EtPmNhbGxiYWNrKGVnYywgJnNzLT54 c3dhaXQsIHJjLCAwKTsKKyAgICB9Cit9CisKIC8qCiAgKiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBt b2RlOiBDCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9kbS5jIGIvdG9vbHMvbGlieGwv bGlieGxfZG0uYwppbmRleCBiNjYyMzk1YjJlLi43NzIzNTBhYmQ0IDEwMDY0NAotLS0gYS90b29s cy9saWJ4bC9saWJ4bF9kbS5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2RtLmMKQEAgLTkyNiw3 ICs5MjYsNyBAQCBzdGF0aWMgaW50IGxpYnhsX19idWlsZF9kZXZpY2VfbW9kZWxfYXJnc19uZXco bGlieGxfX2djICpnYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBsaWJ4bF9kb21haW5fY29uZmlnICpndWVzdF9jb25maWcsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKiphcmdzLCBjaGFyICoqKmVudnMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfX2RvbWFpbl9i dWlsZF9zdGF0ZSAqc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50ICpkbV9zdGF0ZV9mZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpbnQgKmRtX3N0YXRlX2ZkLCBpbnQgZG1fbm90aWZ5X2ZkKQogewogICAgIGNvbnN0IGxp YnhsX2RvbWFpbl9jcmVhdGVfaW5mbyAqY19pbmZvID0gJmd1ZXN0X2NvbmZpZy0+Y19pbmZvOwog ICAgIGNvbnN0IGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvICpiX2luZm8gPSAmZ3Vlc3RfY29uZmln LT5iX2luZm87CkBAIC05NzMsNiArOTczLDIwIEBAIHN0YXRpYyBpbnQgbGlieGxfX2J1aWxkX2Rl dmljZV9tb2RlbF9hcmdzX25ldyhsaWJ4bF9fZ2MgKmdjLAogICAgIGZsZXhhcnJheV9hcHBlbmQo ZG1fYXJncywgIi1tb24iKTsKICAgICBmbGV4YXJyYXlfYXBwZW5kKGRtX2FyZ3MsICJjaGFyZGV2 PWxpYnhlbnN0YXQtY21kLG1vZGU9Y29udHJvbCIpOwogCisgICAgLyogTW9uaXRvciB1c2VkIGF0 IGJvb3QgdGltZSAqLworICAgIGlmIChkbV9ub3RpZnlfZmQgPj0gMCkgeworICAgICAgICBmbGV4 YXJyYXlfdmFwcGVuZChkbV9hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiLWFkZC1m ZCIsIEdDU1BSSU5URigiZmQ9JWQsc2V0PTEiLCBkbV9ub3RpZnlfZmQpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBjYW4ndCBiZSBhIHBpcGUsIGJlY2F1c2UgcGlwZSB3b3VsZCBuZWVk cyB0byBiZSByL3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGl0J3Mgd3JpdGUg b25seQorICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcHBlbmQgaXMgYmVjYXVzZSBvdGhl cndpc2UgcWVtdSB3aWxsIGF0dGVtcHQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g dHJ1bmNhdGUgdGhlIGZkCisgICAgICAgICAgICAgICAgICAgICAgICAgICItY2hhcmRldiIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlLGlkPW5vdGlmeSxwYXRoPS9kZXYvZmRzZXQv MSxhcHBlbmQ9b24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiLW1vbiIsICJjaGFyZGV2 PW5vdGlmeSxtb2RlPWNvbnRyb2wiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK KyAgICB9CisKICAgICBmb3IgKGkgPSAwOyBpIDwgZ3Vlc3RfY29uZmlnLT5udW1fY2hhbm5lbHM7 IGkrKykgewogICAgICAgICBjb25uZWN0aW9uID0gZ3Vlc3RfY29uZmlnLT5jaGFubmVsc1tpXS5j b25uZWN0aW9uOwogICAgICAgICBkZXZpZCA9IGd1ZXN0X2NvbmZpZy0+Y2hhbm5lbHNbaV0uZGV2 aWQ7CkBAIC0xNzM1LDcgKzE3NDksOCBAQCBzdGF0aWMgaW50IGxpYnhsX19idWlsZF9kZXZpY2Vf bW9kZWxfYXJncyhsaWJ4bF9fZ2MgKmdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGxpYnhsX2RvbWFpbl9jb25maWcgKmd1ZXN0X2NvbmZpZywKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqKmFyZ3MsIGNoYXIgKioq ZW52cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4 bF9fZG9tYWluX2J1aWxkX3N0YXRlICpzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgKmRtX3N0YXRlX2ZkKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqZG1fc3RhdGVfZmQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaW50IGRtX25vdGlmeV9mZCkKIC8qIGRtX3N0YXRlX2ZkIG1heSBi ZSBOVUxMIGlmZiBjYWxsZXIga25vd3Mgd2UgYXJlIHVzaW5nIG9sZCBzdHViZG9tCiAgKiBhbmQg dGhlcmVmb3JlIHdpbGwgYmUgcGFzc2luZyBhIGZpbGVuYW1lIHJhdGhlciB0aGFuIGEgZmQuICov CiB7CkBAIC0xNzUxLDcgKzE3NjYsNyBAQCBzdGF0aWMgaW50IGxpYnhsX19idWlsZF9kZXZpY2Vf bW9kZWxfYXJncyhsaWJ4bF9fZ2MgKmdjLAogICAgICAgICByZXR1cm4gbGlieGxfX2J1aWxkX2Rl dmljZV9tb2RlbF9hcmdzX25ldyhnYywgZG0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGd1ZXN0X2RvbWlkLCBndWVzdF9jb25maWcsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MsIGVudnMsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLCBk bV9zdGF0ZV9mZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0YXRlLCBkbV9zdGF0ZV9mZCwgZG1fbm90aWZ5X2ZkKTsKICAgICBkZWZhdWx0Ogog ICAgICAgICBMT0dFRChFUlJPUiwgZ3Vlc3RfZG9taWQsICJ1bmtub3duIGRldmljZSBtb2RlbCB2 ZXJzaW9uICVkIiwKICAgICAgICAgICAgICAgZ3Vlc3RfY29uZmlnLT5iX2luZm8uZGV2aWNlX21v ZGVsX3ZlcnNpb24pOwpAQCAtMTk3MSw3ICsxOTg2LDcgQEAgdm9pZCBsaWJ4bF9fc3Bhd25fc3R1 Yl9kbShsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19zdHViX2RtX3NwYXduX3N0YXRlICpzZHNzKQog CiAgICAgcmV0ID0gbGlieGxfX2J1aWxkX2RldmljZV9tb2RlbF9hcmdzKGdjLCAic3R1YmRvbS1k bSIsIGd1ZXN0X2RvbWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBndWVzdF9jb25maWcsICZhcmdzLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkX3N0YXRlLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZF9zdGF0ZSwgTlVMTCwgLTEpOwogICAgIGlmIChyZXQpIHsKICAgICAg ICAgcmV0ID0gRVJST1JfRkFJTDsKICAgICAgICAgZ290byBvdXQ7CkBAIC0yMjU3LDYgKzIyNzIs OCBAQCB2b2lkIGxpYnhsX19zcGF3bl9sb2NhbF9kbShsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19k bV9zcGF3bl9zdGF0ZSAqZG1zcykKICAgICBjaGFyICoqcGFzc19zdHVmZjsKICAgICBjb25zdCBj aGFyICpkbTsKICAgICBpbnQgZG1fc3RhdGVfZmQgPSAtMTsKKyAgICBpbnQgZG1fbm90aWZ5X2Zk WzJdID0geyAtMSwgLTEgfTsKKyAgICBsaWJ4bF9fY2FyZWZkICpjZl9yZWFkX2VuZDsKIAogICAg IGlmIChsaWJ4bF9kZWZib29sX3ZhbChiX2luZm8tPmRldmljZV9tb2RlbF9zdHViZG9tYWluKSkg ewogICAgICAgICBhYm9ydCgpOwpAQCAtMjI3Miw5ICsyMjg5LDIwIEBAIHZvaWQgbGlieGxfX3Nw YXduX2xvY2FsX2RtKGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2RtX3NwYXduX3N0YXRlICpkbXNz KQogICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CiAgICAgICAgIGdvdG8gb3V0OwogICAgIH0KKyAg ICBpZiAoYl9pbmZvLT5kZXZpY2VfbW9kZWxfdmVyc2lvbiA9PSBMSUJYTF9ERVZJQ0VfTU9ERUxf VkVSU0lPTl9RRU1VX1hFTikgeworICAgICAgICBsaWJ4bF9fY2FyZWZkX2JlZ2luKCk7CisgICAg ICAgIHJjID0gbGlieGxfcGlwZShjdHgsIGRtX25vdGlmeV9mZCk7CisgICAgICAgIGNmX3JlYWRf ZW5kID0gbGlieGxfX2NhcmVmZF9vcGVuZWQoY3R4LCBkbV9ub3RpZnlfZmRbMF0pOworICAgICAg ICBpZiAocmMpCisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgcmMgPSBsaWJ4bF9mZF9z ZXRfbm9uYmxvY2soQ1RYLCBsaWJ4bF9fY2FyZWZkX2ZkKGNmX3JlYWRfZW5kKSwgMSk7CisgICAg ICAgIGlmIChyYykKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgIH0KICAgICByYyA9IGxpYnhs X19idWlsZF9kZXZpY2VfbW9kZWxfYXJncyhnYywgZG0sIGRvbWlkLCBndWVzdF9jb25maWcsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJncywgJmVudnMsIHN0 YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRtX3N0YXRl X2ZkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkbV9zdGF0 ZV9mZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtX25vdGlm eV9mZFsxXSk7CiAgICAgaWYgKHJjKQogICAgICAgICBnb3RvIG91dDsKIApAQCAtMjM1Nyw2ICsy Mzg1LDkgQEAgcmV0cnlfdHJhbnNhY3Rpb246CiAgICAgc3Bhd24tPmZhaWx1cmVfY2IgPSBkZXZp Y2VfbW9kZWxfc3RhcnR1cF9mYWlsZWQ7CiAgICAgc3Bhd24tPmRldGFjaGVkX2NiID0gZGV2aWNl X21vZGVsX2RldGFjaGVkOwogCisgICAgTE9HRChERUJVRywgZG9taWQsICJVc2luZyBRTVAgaW5z dGVhZCBvZiB4ZW5zdG9yZSBmb3IgUUVNVSBzdGFydHVwIG5vdGlmaWNhdGlvbiIpOworICAgIHNw YXduLT5xbXB3YWl0Lm5vdGlmeV9jZmQgPSBjZl9yZWFkX2VuZDsKKwogICAgIHJjID0gbGlieGxf X3NwYXduX3NwYXduKGVnYywgc3Bhd24pOwogICAgIGlmIChyYyA8IDApCiAgICAgICAgIGdvdG8g b3V0X2Nsb3NlOwpAQCAtMjM3Miw2ICsyNDAzLDkgQEAgb3V0X2Nsb3NlOgogICAgIGlmIChsb2dm aWxlX3cgPj0gMCkgY2xvc2UobG9nZmlsZV93KTsKIG91dDoKICAgICBpZiAoZG1fc3RhdGVfZmQg Pj0gMCkgY2xvc2UoZG1fc3RhdGVfZmQpOworICAgIGlmIChyYyAmJiBjZl9yZWFkX2VuZCkKKyAg ICAgICAgbGlieGxfX2NhcmVmZF9jbG9zZShjZl9yZWFkX2VuZCk7CisgICAgaWYgKGRtX25vdGlm eV9mZFsxXSA+PSAwKSBjbG9zZShkbV9ub3RpZnlfZmRbMV0pOwogICAgIGlmIChyYykKICAgICAg ICAgZGV2aWNlX21vZGVsX3NwYXduX291dGNvbWUoZWdjLCBkbXNzLCByYyk7CiB9CmRpZmYgLS1n aXQgYS90b29scy9saWJ4bC9saWJ4bF9leGVjLmMgYi90b29scy9saWJ4bC9saWJ4bF9leGVjLmMK aW5kZXggMDJlNmM5MTdmMC4uMTY1YjZlODQxMCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGli eGxfZXhlYy5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2V4ZWMuYwpAQCAtMjcyLDYgKzI3Miw3 IEBAIHZvaWQgbGlieGxfX3NwYXduX2luaXQobGlieGxfX3NwYXduX3N0YXRlICpzcykKIHsKICAg ICBsaWJ4bF9fZXZfY2hpbGRfaW5pdCgmc3MtPm1pZCk7CiAgICAgbGlieGxfX3hzd2FpdF9pbml0 KCZzcy0+eHN3YWl0KTsKKyAgICBsaWJ4bF9fcW1wd2FpdF9pbml0KCZzcy0+cW1wd2FpdCk7CiB9 CiAKIGludCBsaWJ4bF9fc3Bhd25fc3Bhd24obGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fc3Bhd25f c3RhdGUgKnNzKQpAQCAtMjg0LDEzICsyODUsMjQgQEAgaW50IGxpYnhsX19zcGF3bl9zcGF3bihs aWJ4bF9fZWdjICplZ2MsIGxpYnhsX19zcGF3bl9zdGF0ZSAqc3MpCiAgICAgbGlieGxfX3NwYXdu X2luaXQoc3MpOwogICAgIHNzLT5yYyA9IHNzLT5kZXRhY2hpbmcgPSAwOwogCi0gICAgc3MtPnhz d2FpdC5hbyA9IGFvOwotICAgIHNzLT54c3dhaXQud2hhdCA9IEdDU1BSSU5URigiJXMgc3RhcnR1 cCIsIHNzLT53aGF0KTsKLSAgICBzcy0+eHN3YWl0LnBhdGggPSBzcy0+eHNwYXRoOwotICAgIHNz LT54c3dhaXQudGltZW91dF9tcyA9IHNzLT50aW1lb3V0X21zOwotICAgIHNzLT54c3dhaXQuY2Fs bGJhY2sgPSBzcGF3bl93YXRjaF9ldmVudDsKLSAgICByYyA9IGxpYnhsX194c3dhaXRfc3RhcnQo Z2MsICZzcy0+eHN3YWl0KTsKLSAgICBpZiAocmMpIGdvdG8gb3V0X2VycjsKKyAgICBpZiAoc3Mt PnFtcHdhaXQubm90aWZ5X2NmZCkgeworICAgICAgICBzcy0+cW1wd2FpdC5hbyA9IGFvOworICAg ICAgICBzcy0+cW1wd2FpdC53aGF0ID0gR0NTUFJJTlRGKCIlcyBzdGFydHVwIChRTVApIiwgc3Mt PndoYXQpOworICAgICAgICBzcy0+cW1wd2FpdC50aW1lb3V0X21zID0gc3MtPnRpbWVvdXRfbXM7 CisgICAgICAgIHNzLT5xbXB3YWl0LmNhbGxiYWNrID0gc3Bhd25fd2F0Y2hfZXZlbnQ7CisKKyAg ICAgICAgcmMgPSBsaWJ4bF9fcW1wd2FpdF9zdGFydChnYywgJnNzLT5xbXB3YWl0KTsKKyAgICAg ICAgaWYgKHJjKSBnb3RvIG91dF9lcnI7CisKKyAgICB9IGVsc2UgeworICAgICAgICBzcy0+eHN3 YWl0LmFvID0gYW87CisgICAgICAgIHNzLT54c3dhaXQud2hhdCA9IEdDU1BSSU5URigiJXMgc3Rh cnR1cCIsIHNzLT53aGF0KTsKKyAgICAgICAgc3MtPnhzd2FpdC5wYXRoID0gc3MtPnhzcGF0aDsK KyAgICAgICAgc3MtPnhzd2FpdC50aW1lb3V0X21zID0gc3MtPnRpbWVvdXRfbXM7CisgICAgICAg IHNzLT54c3dhaXQuY2FsbGJhY2sgPSBzcGF3bl93YXRjaF9ldmVudDsKKyAgICAgICAgcmMgPSBs aWJ4bF9feHN3YWl0X3N0YXJ0KGdjLCAmc3MtPnhzd2FpdCk7CisgICAgICAgIGlmIChyYykgZ290 byBvdXRfZXJyOworICAgIH0KIAogICAgIHBpZF90IG1pZGRsZSA9IGxpYnhsX19ldl9jaGlsZF9m b3JrKGdjLCAmc3MtPm1pZCwgc3Bhd25fbWlkZGxlX2RlYXRoKTsKICAgICBpZiAobWlkZGxlID09 LTEpIHsgcmMgPSBFUlJPUl9GQUlMOyBnb3RvIG91dF9lcnI7IH0KQEAgLTM0Nyw2ICszNTksNyBA QCBzdGF0aWMgdm9pZCBzcGF3bl9jbGVhbnVwKGxpYnhsX19nYyAqZ2MsIGxpYnhsX19zcGF3bl9z dGF0ZSAqc3MpCiB7CiAgICAgYXNzZXJ0KCFsaWJ4bF9fZXZfY2hpbGRfaW51c2UoJnNzLT5taWQp KTsKICAgICBsaWJ4bF9feHN3YWl0X3N0b3AoZ2MsICZzcy0+eHN3YWl0KTsKKyAgICBsaWJ4bF9f cW1wd2FpdF9zdG9wKGdjLCAmc3MtPnFtcHdhaXQpOwogfQogCiBzdGF0aWMgdm9pZCBzcGF3bl9k ZXRhY2gobGlieGxfX2djICpnYywgbGlieGxfX3NwYXduX3N0YXRlICpzcykKQEAgLTM1OSw2ICsz NzIsNyBAQCBzdGF0aWMgdm9pZCBzcGF3bl9kZXRhY2gobGlieGxfX2djICpnYywgbGlieGxfX3Nw YXduX3N0YXRlICpzcykKICAgICBhc3NlcnQobGlieGxfX2V2X2NoaWxkX2ludXNlKCZzcy0+bWlk KSk7CiAgICAgYXNzZXJ0KHNzLT5kZXRhY2hpbmcgfHwgc3MtPnJjKTsKICAgICBsaWJ4bF9feHN3 YWl0X3N0b3AoZ2MsICZzcy0+eHN3YWl0KTsKKyAgICBsaWJ4bF9fcW1wd2FpdF9zdG9wKGdjLCAm c3MtPnFtcHdhaXQpOwogCiAgICAgcGlkX3QgY2hpbGQgPSBzcy0+bWlkLnBpZDsKICAgICByID0g a2lsbChjaGlsZCwgU0lHS0lMTCk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRl cm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAppbmRleCAzNzY0ZDI2NDYzLi5h YTc4YjhlMzY5IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCisrKyBi L3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKQEAgLTIwMSw2ICsyMDEsNyBAQCB0eXBlZGVm IHN0cnVjdCBsaWJ4bF9fYW8gbGlieGxfX2FvOwogdHlwZWRlZiBzdHJ1Y3QgbGlieGxfX2FvcF9v Y2N1cnJlZCBsaWJ4bF9fYW9wX29jY3VycmVkOwogdHlwZWRlZiBzdHJ1Y3QgbGlieGxfX29zZXZl bnRfaG9va19uZXh1cyBsaWJ4bF9fb3NldmVudF9ob29rX25leHVzOwogdHlwZWRlZiBzdHJ1Y3Qg bGlieGxfX29zZXZlbnRfaG9va19uZXhpIGxpYnhsX19vc2V2ZW50X2hvb2tfbmV4aTsKK3R5cGVk ZWYgc3RydWN0IGxpYnhsX19jYXJlZmQgbGlieGxfX2NhcmVmZDsKIAogdHlwZWRlZiBzdHJ1Y3Qg bGlieGxfX2RvbWFpbl9jcmVhdGVfc3RhdGUgbGlieGxfX2RvbWFpbl9jcmVhdGVfc3RhdGU7CiB0 eXBlZGVmIHZvaWQgbGlieGxfX2RvbWFpbl9jcmVhdGVfY2Ioc3RydWN0IGxpYnhsX19lZ2MgKmVn YywKQEAgLTEzMjgsNiArMTMyOSwzNCBAQCBib29sIGxpYnhsX194c3dhaXRfaW51c2UoY29uc3Qg bGlieGxfX3hzd2FpdF9zdGF0ZSAqc3MpOwogCiBpbnQgbGlieGxfX3hzd2FpdF9zdGFydChsaWJ4 bF9fZ2MqLCBsaWJ4bF9feHN3YWl0X3N0YXRlKik7CiAKKy8qLS0tLS0tLS0gcW1wd2FpdDogd2Fp dCBmb3IgUUVNVSB0byBzdGFydCBRTVAgb24gYSBwaXBlIC0tLS0tLS0qLworCit0eXBlZGVmIHN0 cnVjdCBsaWJ4bF9fcW1wd2FpdF9zdGF0ZSAgbGlieGxfX3FtcHdhaXRfc3RhdGU7CisKK3N0cnVj dCBsaWJ4bF9fcW1wd2FpdF9zdGF0ZSB7CisgICAgLyogY2FsbGVyIG11c3QgZmlsbCB0aGVzZSBp biwgYW5kIHRoZXkgbXVzdCBhbGwgcmVtYWluIHZhbGlkICovCisgICAgbGlieGxfX2FvICphbzsK KyAgICBjb25zdCBjaGFyICp3aGF0OyAvKiBmb3IgZXJyb3IgbXNnczogbm91biBwaHJhc2UsIHdo YXQgd2UncmUgd2FpdGluZyBmb3IgKi8KKyAgICBpbnQgdGltZW91dF9tczsgLyogYXMgZm9yIHBv bGwoMikgKi8KKyAgICAvKiByZWFkLWVuZCBvZiBhIHBpcGUgd2hlcmUgUUVNVSBpcyBnb2luZyB0 byB3cml0ZSBvbmNlIFFNUCBpcyBhdmFpbGFibGUgKi8KKyAgICBsaWJ4bF9fY2FyZWZkICpub3Rp ZnlfY2ZkOworICAgIC8qIHJlbWFpbmluZyBmaWVsZHMgYXJlIHByaXZhdGUgdG8gcW1wd2FpdCAq LworICAgIGxpYnhsX19ldl90aW1lIHRpbWVfZXY7CisgICAgbGlieGxfX2V2X2ZkIG5vdGlmeV9l ZmQ7CisgICAgLy8gdW50aWwgYmV0dGVyIGltcGxlbWVudGF0aW9uCisgICAgbGlieGxfX3hzd2Fp dF9jYWxsYmFjayAqY2FsbGJhY2s7CisKKyAgICAvKiBVc2VkIHRvIGZpbmQgb3V0IGlmIHNvbWV0 aGluZyBoYXMgYmVlbiB3cml0dGVuIHRvIHRoZSBwaXBlICovCisgICAgaW50IGxpZmVfdGltZV9y ZWFkOworfTsKKwordm9pZCBsaWJ4bF9fcW1wd2FpdF9pbml0KGxpYnhsX19xbXB3YWl0X3N0YXRl Kik7Cit2b2lkIGxpYnhsX19xbXB3YWl0X3N0b3AobGlieGxfX2djKiwgbGlieGxfX3FtcHdhaXRf c3RhdGUqKTsgLyppZGVtcG90ZW50Ki8KK2Jvb2wgbGlieGxfX3FtcHdhaXRfaW51c2UoY29uc3Qg bGlieGxfX3FtcHdhaXRfc3RhdGUgKnNzKTsKKworaW50IGxpYnhsX19xbXB3YWl0X3N0YXJ0KGxp YnhsX19nYyosIGxpYnhsX19xbXB3YWl0X3N0YXRlKik7CisKKwogLyoKICAqIGxpYnhsX19ldl9k ZXZzdGF0ZSAtIHdhaXRzIGEgZ2l2ZW4gdGltZSBmb3IgYSBkZXZpY2UgdG8KICAqIHJlYWNoIGEg Z2l2ZW4gc3RhdGUuICBGb2xsb3dzIHRoZSBsaWJ4bF9ldl8qIGNvbnZlbnRpb25zLgpAQCAtMTU2 OCw2ICsxNTk3LDcgQEAgc3RydWN0IGxpYnhsX19zcGF3bl9zdGF0ZSB7CiAgICAgaW50IHJjOyAv KiBtaWdodCBiZSBub24tMCB3aGVuZXZlciB3ZSBhcmUgbm90IElkbGUgKi8KICAgICBsaWJ4bF9f ZXZfY2hpbGQgbWlkOyAvKiBhbHdheXMgaW4gdXNlIHdoZW5ldmVyIHdlIGFyZSBub3QgSWRsZSAq LwogICAgIGxpYnhsX194c3dhaXRfc3RhdGUgeHN3YWl0OworICAgIGxpYnhsX19xbXB3YWl0X3N0 YXRlIHFtcHdhaXQ7CiB9OwogCiBzdGF0aWMgaW5saW5lIGludCBsaWJ4bF9fc3Bhd25faW51c2Uo Y29uc3QgbGlieGxfX3NwYXduX3N0YXRlICpzcykKLS0gCkFudGhvbnkgUEVSQVJECgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5w cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==