From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [PATCH v5 15/15] libxl: Re-implement domain_suspend_device_model using libxl__ev_qmp Date: Fri, 7 Sep 2018 16:11:04 +0100 Message-ID: <20180907151104.32306-16-anthony.perard@citrix.com> References: <20180907151104.32306-1-anthony.perard@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1fyIgX-0005iQ-L9 for xen-devel@lists.xenproject.org; Fri, 07 Sep 2018 15:28:37 +0000 In-Reply-To: <20180907151104.32306-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 VGhlIHJlLWltcGxlbWVudGF0aW9uIGlzIGRvbmUgYmVjYXVzZSB3ZSB3YW50IHRvIGJlIGFibGUg dG8gc2VuZCB0aGUKZmlsZSBkZXNjcmlwdGlvbiB0aGF0IFFFTVUgY2FuIHVzZSB0byBzYXZlIGl0 cyBzdGF0ZS4gV2hlbiBRRU1VIGlzCnJlc3RyaWN0ZWQsIGl0IHdvdWxkIG5vdCBiZSBhYmxlIHRv IHdyaXRlIHRvIGEgcGF0aC4KClRoaXMgcmVwbGFjZSBib3RoIGxpYnhsX19xbXBfc3RvcCgpIGFu ZCBsaWJ4bF9fcW1wX3NhdmUoKS4KCnFtcF9xZW11X2NoZWNrX3ZlcnNpb24oKSB3YXMgb25seSB1 c2VkIGJ5IGxpYnhsX19xbXBfc2F2ZSgpLCBzbyBpdCBpcwpyZXBsYWNlIGJ5IGEgdmVyc2lvbiB1 c2luZyBsaWJ4bF9fZXZfcW1wIGluc3RlYWQuCgpDb2Rpbmcgc3R5bGUgZml4ZWQgaW4gbGlieGxf X2RvbWFpbl9zdXNwZW5kX2RldmljZV9tb2RlbCgpIGZvciB0aGUKcmV0dXJuIHZhbHVlLgoKU2ln bmVkLW9mZi1ieTogQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+Ci0t LQoKTm90ZXM6CiAgICB2NToKICAgICAgICByZW5hbWUgZ290byAnb3V0JyBsYWJlbCB0byAnZXJy b3InLCBhcyBpdCBpcyB1c2Ugb25seSBmb3IgZXJyb3JzLgogICAgICAgIHJlLWFkZC9rZWVwIHRo ZSBjb21tZW50IGFib3V0IHRoZSAibGl2ZSIgcGFyYW1ldGVyIGluIGRtX3N0YXRlX2ZkX3JlYWR5 CiAgICAgICAgdXNlIGxpYnhsX19yZW1vdmVfZmlsZSBpbnN0ZWFkIG9mIHBsYWluIHVubGluawog ICAgCiAgICB2NDoKICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2UgdGhlIHBhdGNoICJsaWJ4bF9x bXA6IEhhdmUgUUVNVSBzYXZlIGl0cyBzdGF0ZSB0byBhIGZpbGUKICAgICAgICBkZXNjcmlwdG9y IiBmcm9tIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIHNlcmllLgogICAgICAgIEl0IHVzZXMgbGli eGxfX2V2X3FtcCBpbnN0ZWFkLgoKIHRvb2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5kLmMgfCAg MTYgKystLQogdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICB8ICAgOSArLQogdG9vbHMv bGlieGwvbGlieGxfcW1wLmMgICAgICAgICB8IDE1MyArKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3BlbmQuYyBiL3Rvb2xz L2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5kLmMKaW5kZXggNTFjNDMyYTAwYS4uMGY0ZTFiZTExNSAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3BlbmQuYworKysgYi90b29scy9s aWJ4bC9saWJ4bF9kb21fc3VzcGVuZC5jCkBAIC0zNCw2ICszNCw3IEBAIGludCBsaWJ4bF9fZG9t YWluX3N1c3BlbmRfaW5pdChsaWJ4bF9fZWdjICplZ2MsCiAgICAgbGlieGxfX2V2X2V2dGNobl9p bml0KCZkc3BzLT5ndWVzdF9ldnRjaG4pOwogICAgIGxpYnhsX19ldl94c3dhdGNoX2luaXQoJmRz cHMtPmd1ZXN0X3dhdGNoKTsKICAgICBsaWJ4bF9fZXZfdGltZV9pbml0KCZkc3BzLT5ndWVzdF90 aW1lb3V0KTsKKyAgICBsaWJ4bF9fZXZfcW1wX2luaXQoJmRzcHMtPnFtcCk7CiAKICAgICBpZiAo dHlwZSA9PSBMSUJYTF9ET01BSU5fVFlQRV9JTlZBTElEKSBnb3RvIG91dDsKICAgICBkc3BzLT50 eXBlID0gdHlwZTsKQEAgLTcyLDcgKzczLDcgQEAgaW50IGxpYnhsX19kb21haW5fc3VzcGVuZF9k ZXZpY2VfbW9kZWwobGlieGxfX2VnYyAqZWdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGlieGxfX2RvbWFpbl9zdXNwZW5kX3N0YXRlICpkc3BzKQogewogICAgIFNU QVRFX0FPX0dDKGRzcHMtPmFvKTsKLSAgICBpbnQgcmV0ID0gMDsKKyAgICBpbnQgcmM7CiAgICAg dWludDMyX3QgY29uc3QgZG9taWQgPSBkc3BzLT5kb21pZDsKICAgICBjb25zdCBjaGFyICpjb25z dCBmaWxlbmFtZSA9IGRzcHMtPmRtX3NhdmVmaWxlOwogCkBAIC04MSwyMiArODIsMTggQEAgaW50 IGxpYnhsX19kb21haW5fc3VzcGVuZF9kZXZpY2VfbW9kZWwobGlieGxfX2VnYyAqZWdjLAogICAg ICAgICBMT0dEKERFQlVHLCBkb21pZCwgIlNhdmluZyBkZXZpY2UgbW9kZWwgc3RhdGUgdG8gJXMi LCBmaWxlbmFtZSk7CiAgICAgICAgIGxpYnhsX19xZW11X3RyYWRpdGlvbmFsX2NtZChnYywgZG9t aWQsICJzYXZlIik7CiAgICAgICAgIGxpYnhsX193YWl0X2Zvcl9kZXZpY2VfbW9kZWxfZGVwcmVj YXRlZChnYywgZG9taWQsICJwYXVzZWQiLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgZHNw cy0+Y2FsbGJhY2tfZGV2aWNlX21vZGVsX2RvbmUoZWdjLCBkc3BzLCAwKTsKKyAgICAgICAgcmMg PSAwOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBMSUJYTF9ERVZJQ0VfTU9ERUxf VkVSU0lPTl9RRU1VX1hFTjoKLSAgICAgICAgaWYgKGxpYnhsX19xbXBfc3RvcChnYywgZG9taWQp KQotICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7Ci0gICAgICAgIC8qIFNhdmUgRE0gc3Rh dGUgaW50byBmaWxlbmFtZSAqLwotICAgICAgICByZXQgPSBsaWJ4bF9fcW1wX3NhdmUoZ2MsIGRv bWlkLCBmaWxlbmFtZSwgZHNwcy0+bGl2ZSk7Ci0gICAgICAgIGlmIChyZXQpCi0gICAgICAgICAg ICB1bmxpbmsoZmlsZW5hbWUpOworICAgICAgICByYyA9IGxpYnhsX19xbXBfc3VzcGVuZF9zYXZl KGdjLCBkc3BzKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJu IEVSUk9SX0lOVkFMOwogICAgIH0KIAotICAgIGRzcHMtPmNhbGxiYWNrX2RldmljZV9tb2RlbF9k b25lKGVnYywgZHNwcywgcmV0KTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByYzsKIH0K IAogc3RhdGljIHZvaWQgZG9tYWluX3N1c3BlbmRfY29tbW9uX3dhaXRfZ3Vlc3QobGlieGxfX2Vn YyAqZWdjLApAQCAtNDAyLDYgKzM5OSw3IEBAIHN0YXRpYyB2b2lkIGRvbWFpbl9zdXNwZW5kX2Nv bW1vbl9kb25lKGxpYnhsX19lZ2MgKmVnYywKICAgICBsaWJ4bF9fZXZfZXZ0Y2huX2NhbmNlbChn YywgJmRzcHMtPmd1ZXN0X2V2dGNobik7CiAgICAgbGlieGxfX2V2X3hzd2F0Y2hfZGVyZWdpc3Rl cihnYywgJmRzcHMtPmd1ZXN0X3dhdGNoKTsKICAgICBsaWJ4bF9fZXZfdGltZV9kZXJlZ2lzdGVy KGdjLCAmZHNwcy0+Z3Vlc3RfdGltZW91dCk7CisgICAgbGlieGxfX2V2X3FtcF9kaXNwb3NlKGdj LCAmZHNwcy0+cW1wKTsKICAgICBkc3BzLT5jYWxsYmFja19jb21tb25fZG9uZShlZ2MsIGRzcHMs IHJjKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCBiL3Rv b2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggN2YwYWQ3NTE2MC4uZjIxNjJmN2U5MiAx MDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29scy9saWJ4 bC9saWJ4bF9pbnRlcm5hbC5oCkBAIC0xOTQxLDEzICsxOTQxLDggQEAgX2hpZGRlbiBpbnQgbGli eGxfX3FtcF9wY2lfZGVsKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfcGNpICpwY2lkZXYpOwogLyogUmVzdW1lIGh2 bSBkb21haW4gKi8KIF9oaWRkZW4gaW50IGxpYnhsX19xbXBfc3lzdGVtX3dha2V1cChsaWJ4bF9f Z2MgKmdjLCBpbnQgZG9taWQpOwotLyogU3VzcGVuZCBRRU1VLiAqLwotX2hpZGRlbiBpbnQgbGli eGxfX3FtcF9zdG9wKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCk7CiAvKiBSZXN1bWUgUUVNVS4g Ki8KIF9oaWRkZW4gaW50IGxpYnhsX19xbXBfcmVzdW1lKGxpYnhsX19nYyAqZ2MsIGludCBkb21p ZCk7Ci0vKiBTYXZlIGN1cnJlbnQgUUVNVSBzdGF0ZSBpbnRvIGZkLiAqLwotX2hpZGRlbiBpbnQg bGlieGxfX3FtcF9zYXZlKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCwgY29uc3QgY2hhciAqZmls ZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsaXZlKTsKIC8qIExvYWQg Y3VycmVudCBRRU1VIHN0YXRlIGZyb20gZmlsZS4gKi8KIF9oaWRkZW4gaW50IGxpYnhsX19xbXBf cmVzdG9yZShsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsK IC8qIFNldCBkaXJ0eSBiaXRtYXAgbG9nZ2luZyBzdGF0dXMgKi8KQEAgLTM0MDUsNiArMzQwMCw3 IEBAIHN0cnVjdCBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUgewogICAgIGxpYnhsX194c3dh aXRfc3RhdGUgcHZjb250cm9sOwogICAgIGxpYnhsX19ldl94c3dhdGNoIGd1ZXN0X3dhdGNoOwog ICAgIGxpYnhsX19ldl90aW1lIGd1ZXN0X3RpbWVvdXQ7CisgICAgbGlieGxfX2V2X3FtcCBxbXA7 CiAKICAgICBjb25zdCBjaGFyICpkbV9zYXZlZmlsZTsKICAgICB2b2lkICgqY2FsbGJhY2tfZGV2 aWNlX21vZGVsX2RvbmUpKGxpYnhsX19lZ2MqLApAQCAtMzQxNiw2ICszNDEyLDkgQEAgaW50IGxp YnhsX19kb21haW5fc3VzcGVuZF9pbml0KGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUgKmRzcHMsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX3R5cGUgdHlwZSk7CiAKK19o aWRkZW4gaW50IGxpYnhsX19xbXBfc3VzcGVuZF9zYXZlKGxpYnhsX19nYyAqZ2MsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUg KmRzcHMpOworCiBzdHJ1Y3QgbGlieGxfX2RvbWFpbl9zYXZlX3N0YXRlIHsKICAgICAvKiBzZXQg YnkgY2FsbGVyIG9mIGxpYnhsX19kb21haW5fc2F2ZSAqLwogICAgIGxpYnhsX19hbyAqYW87CmRp ZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9xbXAuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3Ft cC5jCmluZGV4IDc3MzgwYTg2OWMuLmUyYzNmY2EwODUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhs L2xpYnhsX3FtcC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3FtcC5jCkBAIC0zOTgsMTMgKzM5 OCwxNCBAQCBzdGF0aWMgaW50IHFtcF9oYW5kbGVfcmVzcG9uc2UobGlieGxfX2djICpnYywgbGli eGxfX3FtcF9oYW5kbGVyICpxbXAsCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBib29sIHFt cF9xZW11X2NoZWNrX3ZlcnNpb24obGlieGxfX3FtcF9oYW5kbGVyICpxbXAsIGludCBtYWpvciwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbm9yLCBpbnQgbWljcm8p CitzdGF0aWMgYm9vbCBxbXBfZXZfcWVtdV9jaGVja192ZXJzaW9uKGxpYnhsX19ldl9xbXAgKmV2 LCBpbnQgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBt aW5vciwgaW50IG1pY3JvKQogewotICAgIHJldHVybiBxbXAtPnZlcnNpb24ubWFqb3IgPiBtYWpv ciB8fAotICAgICAgICAocW1wLT52ZXJzaW9uLm1ham9yID09IG1ham9yICYmCi0gICAgICAgICAg ICAocW1wLT52ZXJzaW9uLm1pbm9yID4gbWlub3IgfHwKLSAgICAgICAgICAgICAocW1wLT52ZXJz aW9uLm1pbm9yID09IG1pbm9yICYmIHFtcC0+dmVyc2lvbi5taWNybyA+PSBtaWNybykpKTsKKyAg ICByZXR1cm4gZXYtPnFlbXVfdmVyc2lvbi5tYWpvciA+IG1ham9yIHx8CisgICAgICAgIChldi0+ cWVtdV92ZXJzaW9uLm1ham9yID09IG1ham9yICYmCisgICAgICAgICAgICAoZXYtPnFlbXVfdmVy c2lvbi5taW5vciA+IG1pbm9yIHx8CisgICAgICAgICAgICAgKGV2LT5xZW11X3ZlcnNpb24ubWlu b3IgPT0gbWlub3IgJiYKKyAgICAgICAgICAgICAgZXYtPnFlbXVfdmVyc2lvbi5taWNybyA+PSBt aWNybykpKTsKIH0KIAogLyoKQEAgLTEwMTMsMjkgKzEwMTQsNiBAQCBpbnQgbGlieGxfX3FtcF9z eXN0ZW1fd2FrZXVwKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCkKICAgICByZXR1cm4gcW1wX3J1 bl9jb21tYW5kKGdjLCBkb21pZCwgInN5c3RlbV93YWtldXAiLCBOVUxMLCBOVUxMLCBOVUxMKTsK IH0KIAotaW50IGxpYnhsX19xbXBfc2F2ZShsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQsIGNvbnN0 IGNoYXIgKmZpbGVuYW1lLCBib29sIGxpdmUpCi17Ci0gICAgbGlieGxfX2pzb25fb2JqZWN0ICph cmdzID0gTlVMTDsKLSAgICBsaWJ4bF9fcW1wX2hhbmRsZXIgKnFtcCA9IE5VTEw7Ci0gICAgaW50 IHJjOwotCi0gICAgcW1wID0gbGlieGxfX3FtcF9pbml0aWFsaXplKGdjLCBkb21pZCk7Ci0gICAg aWYgKCFxbXApCi0gICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwotCi0gICAgcW1wX3BhcmFtZXRl cnNfYWRkX3N0cmluZyhnYywgJmFyZ3MsICJmaWxlbmFtZSIsIChjaGFyICopZmlsZW5hbWUpOwot Ci0gICAgLyogbGl2ZSBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIFFFTVUgMi4xMS4gSXQgc2lnbmFs IFFFTVUgdGhhdCB0aGUgc2F2ZQotICAgICAqIG9wZXJhdGlvbiBpcyBmb3IgYSBsaXZlIG1pZ3Jh dGlvbiByYXRoZXIgdGhhdCBmb3IgdGFraW5nIGEgc25hcHNob3QuICovCi0gICAgaWYgKHFtcF9x ZW11X2NoZWNrX3ZlcnNpb24ocW1wLCAyLCAxMSwgMCkpCi0gICAgICAgIHFtcF9wYXJhbWV0ZXJz X2FkZF9ib29sKGdjLCAmYXJncywgImxpdmUiLCBsaXZlKTsKLQotICAgIHJjID0gcW1wX3N5bmNo cm9ub3VzX3NlbmQocW1wLCAieGVuLXNhdmUtZGV2aWNlcy1zdGF0ZSIsIGFyZ3MsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBxbXAtPnRpbWVvdXQpOwotICAgIGxp YnhsX19xbXBfY2xvc2UocW1wKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KIGludCBsaWJ4bF9fcW1w X3Jlc3RvcmUobGlieGxfX2djICpnYywgaW50IGRvbWlkLCBjb25zdCBjaGFyICpzdGF0ZV9maWxl KQogewogICAgIGxpYnhsX19qc29uX29iamVjdCAqYXJncyA9IE5VTEw7CkBAIC0xMDY0LDExICsx MDQyLDYgQEAgc3RhdGljIGludCBxbXBfY2hhbmdlKGxpYnhsX19nYyAqZ2MsIGxpYnhsX19xbXBf aGFuZGxlciAqcW1wLAogICAgIHJldHVybiByYzsKIH0KIAotaW50IGxpYnhsX19xbXBfc3RvcChs aWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQpCi17Ci0gICAgcmV0dXJuIHFtcF9ydW5fY29tbWFuZChn YywgZG9taWQsICJzdG9wIiwgTlVMTCwgTlVMTCwgTlVMTCk7Ci19Ci0KIGludCBsaWJ4bF9fcW1w X3Jlc3VtZShsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQpCiB7CiAgICAgcmV0dXJuIHFtcF9ydW5f Y29tbWFuZChnYywgZG9taWQsICJjb250IiwgTlVMTCwgTlVMTCwgTlVMTCk7CkBAIC0xMzA4LDYg KzEyODEsMTE4IEBAIGludCBsaWJ4bF9fcW1wX2luaXRpYWxpemF0aW9ucyhsaWJ4bF9fZ2MgKmdj LCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmV0OwogfQogCisKKy8qCisgKiBGdW5jdGlv biB1c2luZyBsaWJ4bF9fZXZfcW1wCisgKi8KKworc3RhdGljIHZvaWQgZG1fc3RvcHBlZChsaWJ4 bF9fZWdjICplZ2MsIGxpYnhsX19ldl9xbXAgKmV2LAorICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBsaWJ4bF9fanNvbl9vYmplY3QgKnJlc3BvbnNlLCBpbnQgcmMpOworc3RhdGljIHZvaWQg ZG1fc3RhdGVfZmRfcmVhZHkobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1wICpldiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX19qc29uX29iamVjdCAqcmVz cG9uc2UsIGludCByYyk7CitzdGF0aWMgdm9pZCBkbV9zdGF0ZV9zYXZlZChsaWJ4bF9fZWdjICpl Z2MsIGxpYnhsX19ldl9xbXAgKmV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg bGlieGxfX2pzb25fb2JqZWN0ICpyZXNwb25zZSwgaW50IHJjKTsKK2ludCBsaWJ4bF9fcW1wX3N1 c3BlbmRfc2F2ZShsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUgKmRz cHMpCit7CisgICAgbGlieGxfX2V2X3FtcCAqZXYgPSAmZHNwcy0+cW1wOworICAgIHVpbnQzMl90 IGNvbnN0IGRvbWlkID0gZHNwcy0+ZG9taWQ7CisKKyAgICBldi0+ZG9taWQgPSBkb21pZDsKKyAg ICBldi0+Y2FsbGJhY2sgPSBkbV9zdG9wcGVkOworICAgIGV2LT5jZmQgPSBOVUxMOworCisgICAg cmV0dXJuIGxpYnhsX19ldl9xbXBfc2VuZChnYywgZXYsICJzdG9wIiwgTlVMTCk7Cit9CisKK3N0 YXRpYyB2b2lkIGRtX3N0b3BwZWQobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1wICpldiwK KyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfX2pzb25fb2JqZWN0ICpyZXNwb25z ZSwgaW50IHJjKQoreworICAgIEVHQ19HQzsKKyAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3Rh dGUgKmRzcHMgPSBDT05UQUlORVJfT0YoZXYsICpkc3BzLCBxbXApOworICAgIGNvbnN0IGNoYXIg KmNvbnN0IGZpbGVuYW1lID0gZHNwcy0+ZG1fc2F2ZWZpbGU7CisgICAgdWludDMyX3QgY29uc3Qg ZG9taWQgPSBldi0+ZG9taWQ7CisKKyAgICBpZiAocmMpCisgICAgICAgIGdvdG8gZXJyb3I7CisK KyAgICBsaWJ4bF9fY2FyZWZkX2JlZ2luKCk7CisgICAgZXYtPmNmZCA9IGxpYnhsX19jYXJlZmRf b3BlbmVkKENUWCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW4oZmlsZW5h bWUsIE9fV1JPTkxZIHwgT19DUkVBVCwgMDYwMCkpOworICAgIGlmICghZXYtPmNmZCkgeworICAg ICAgICBMT0dFRChFUlJPUiwgZG9taWQsICJGYWlsZWQgdG8gb3BlbiBmaWxlICVzIGZvciBRRU1V IiwgZmlsZW5hbWUpOworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7CisgICAgICAgIGdvdG8gZXJy b3I7CisgICAgfQorCisgICAgZXYtPmNhbGxiYWNrID0gZG1fc3RhdGVfZmRfcmVhZHk7CisgICAg cmMgPSBsaWJ4bF9fZXZfcW1wX3NlbmQoZ2MsIGV2LCAiYWRkLWZkIiwgTlVMTCk7CisgICAgaWYg KHJjKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmV0dXJuOworZXJyb3I6CisgICAgaWYg KGV2LT5jZmQpIHsKKyAgICAgICAgbGlieGxfX2NhcmVmZF9jbG9zZShldi0+Y2ZkKTsKKyAgICAg ICAgdW5saW5rKGZpbGVuYW1lKTsKKyAgICAgICAgZXYtPmNmZCA9IE5VTEw7CisgICAgfQorICAg IGRzcHMtPmNhbGxiYWNrX2RldmljZV9tb2RlbF9kb25lKGVnYywgZHNwcywgcmMpOworfQorCitz dGF0aWMgdm9pZCBkbV9zdGF0ZV9mZF9yZWFkeShsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9x bXAgKmV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfX2pzb25f b2JqZWN0ICpyZXNwb25zZSwgaW50IHJjKQoreworICAgIEVHQ19HQzsKKyAgICBsaWJ4bF9fZG9t YWluX3N1c3BlbmRfc3RhdGUgKmRzcHMgPSBDT05UQUlORVJfT0YoZXYsICpkc3BzLCBxbXApOwor ICAgIGxpYnhsX19qc29uX29iamVjdCAqYXJncyA9IE5VTEw7CisgICAgY29uc3QgbGlieGxfX2pz b25fb2JqZWN0ICpvOworICAgIGludCBmZHNldDsKKworICAgIGxpYnhsX19jYXJlZmRfY2xvc2Uo ZXYtPmNmZCk7CisgICAgZXYtPmNmZCA9IE5VTEw7CisKKyAgICBpZiAocmMpCisgICAgICAgIGdv dG8gZXJyb3I7CisKKyAgICBvID0gbGlieGxfX2pzb25fbWFwX2dldCgiZmRzZXQtaWQiLCByZXNw b25zZSwgSlNPTl9JTlRFR0VSKTsKKyAgICBpZiAoIW8pIHsKKyAgICAgICAgcmMgPSBFUlJPUl9G QUlMOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBmZHNldCA9IGxpYnhsX19qc29u X29iamVjdF9nZXRfaW50ZWdlcihvKTsKKworICAgIGV2LT5jYWxsYmFjayA9IGRtX3N0YXRlX3Nh dmVkOworCisgICAgLyogbGl2ZSBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIFFFTVUgMi4xMS4gSXQg c2lnbmFsIFFFTVUgdGhhdCB0aGUgc2F2ZQorICAgICAqIG9wZXJhdGlvbiBpcyBmb3IgYSBsaXZl IG1pZ3JhdGlvbiByYXRoZXIgdGhhdCBmb3IgdGFraW5nIGEgc25hcHNob3QuICovCisgICAgaWYg KHFtcF9ldl9xZW11X2NoZWNrX3ZlcnNpb24oZXYsIDIsIDExLCAwKSkKKyAgICAgICAgcW1wX3Bh cmFtZXRlcnNfYWRkX2Jvb2woZ2MsICZhcmdzLCAibGl2ZSIsIGRzcHMtPmxpdmUpOworICAgIFFN UF9QQVJBTUVURVJTX1NQUklOVEYoJmFyZ3MsICJmaWxlbmFtZSIsICIvZGV2L2Zkc2V0LyVkIiwg ZmRzZXQpOworICAgIHJjID0gbGlieGxfX2V2X3FtcF9zZW5kKGdjLCBldiwgInhlbi1zYXZlLWRl dmljZXMtc3RhdGUiLCBhcmdzKTsKKyAgICBpZiAocmMpCisgICAgICAgIGdvdG8gZXJyb3I7CisK KyAgICByZXR1cm47CitlcnJvcjoKKyAgICBpZiAocmMpCisgICAgICAgIGxpYnhsX19yZW1vdmVf ZmlsZShnYywgZHNwcy0+ZG1fc2F2ZWZpbGUpOworICAgIGRzcHMtPmNhbGxiYWNrX2RldmljZV9t b2RlbF9kb25lKGVnYywgZHNwcywgcmMpOworfQorCitzdGF0aWMgdm9pZCBkbV9zdGF0ZV9zYXZl ZChsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9xbXAgKmV2LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgbGlieGxfX2pzb25fb2JqZWN0ICpyZXNwb25zZSwgaW50IHJjKQorewor ICAgIEVHQ19HQzsKKyAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUgKmRzcHMgPSBDT05U QUlORVJfT0YoZXYsICpkc3BzLCBxbXApOworCisgICAgaWYgKHJjKQorICAgICAgICB1bmxpbmso ZHNwcy0+ZG1fc2F2ZWZpbGUpOworCisgICAgbGlieGxfX2V2X3FtcF9kaXNwb3NlKGdjLCBldik7 CisgICAgZHNwcy0+Y2FsbGJhY2tfZGV2aWNlX21vZGVsX2RvbmUoZWdjLCBkc3BzLCByYyk7Cit9 CisKKwogLyogLS0tLS0tLS0tLS0tIEltcGxlbWVudGF0aW9uIG9mIGxpYnhsX19ldl9xbXAgLS0t LS0tLS0tLS0tLS0tLSAqLwogCiAvKiBoYXJkIGNvZGVkIG1lc3NhZ2UgSUQgdXNlZCBmb3IgY2Fw YWJpbGl0eSBuZWdvdGlhdGlvbiAqLwotLSAKQW50aG9ueSBQRVJBUkQKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qu b3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs