From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [PATCH v4 30/32] libxl: Re-implement domain_suspend_device_model using libxl__ev_qmp Date: Fri, 27 Jul 2018 15:06:12 +0100 Message-ID: <20180727140614.13256-31-anthony.perard@citrix.com> References: <20180727140614.13256-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 1fj3jk-00006n-1C for xen-devel@lists.xenproject.org; Fri, 27 Jul 2018 14:28:56 +0000 In-Reply-To: <20180727140614.13256-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 LQoKTm90ZXM6CiAgICB2NDoKICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2UgdGhlIHBhdGNoICJs aWJ4bF9xbXA6IEhhdmUgUUVNVSBzYXZlIGl0cyBzdGF0ZSB0byBhIGZpbGUKICAgICAgICBkZXNj cmlwdG9yIiBmcm9tIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIHNlcmllLgogICAgICAgIEl0IHVz ZXMgbGlieGxfX2V2X3FtcCBpbnN0ZWFkLgoKIHRvb2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5k LmMgfCAgMTYgKystLQogdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICB8ICAgOSArLQog dG9vbHMvbGlieGwvbGlieGxfcW1wLmMgICAgICAgICB8IDE1MiArKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwgNDggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3BlbmQuYyBi L3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5kLmMKaW5kZXggNTFjNDMyYTAwYS4uMGY0ZTFi ZTExNSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3BlbmQuYworKysgYi90 b29scy9saWJ4bC9saWJ4bF9kb21fc3VzcGVuZC5jCkBAIC0zNCw2ICszNCw3IEBAIGludCBsaWJ4 bF9fZG9tYWluX3N1c3BlbmRfaW5pdChsaWJ4bF9fZWdjICplZ2MsCiAgICAgbGlieGxfX2V2X2V2 dGNobl9pbml0KCZkc3BzLT5ndWVzdF9ldnRjaG4pOwogICAgIGxpYnhsX19ldl94c3dhdGNoX2lu aXQoJmRzcHMtPmd1ZXN0X3dhdGNoKTsKICAgICBsaWJ4bF9fZXZfdGltZV9pbml0KCZkc3BzLT5n dWVzdF90aW1lb3V0KTsKKyAgICBsaWJ4bF9fZXZfcW1wX2luaXQoJmRzcHMtPnFtcCk7CiAKICAg ICBpZiAodHlwZSA9PSBMSUJYTF9ET01BSU5fVFlQRV9JTlZBTElEKSBnb3RvIG91dDsKICAgICBk c3BzLT50eXBlID0gdHlwZTsKQEAgLTcyLDcgKzczLDcgQEAgaW50IGxpYnhsX19kb21haW5fc3Vz cGVuZF9kZXZpY2VfbW9kZWwobGlieGxfX2VnYyAqZWdjLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGlieGxfX2RvbWFpbl9zdXNwZW5kX3N0YXRlICpkc3BzKQogewog ICAgIFNUQVRFX0FPX0dDKGRzcHMtPmFvKTsKLSAgICBpbnQgcmV0ID0gMDsKKyAgICBpbnQgcmM7 CiAgICAgdWludDMyX3QgY29uc3QgZG9taWQgPSBkc3BzLT5kb21pZDsKICAgICBjb25zdCBjaGFy ICpjb25zdCBmaWxlbmFtZSA9IGRzcHMtPmRtX3NhdmVmaWxlOwogCkBAIC04MSwyMiArODIsMTgg QEAgaW50IGxpYnhsX19kb21haW5fc3VzcGVuZF9kZXZpY2VfbW9kZWwobGlieGxfX2VnYyAqZWdj LAogICAgICAgICBMT0dEKERFQlVHLCBkb21pZCwgIlNhdmluZyBkZXZpY2UgbW9kZWwgc3RhdGUg dG8gJXMiLCBmaWxlbmFtZSk7CiAgICAgICAgIGxpYnhsX19xZW11X3RyYWRpdGlvbmFsX2NtZChn YywgZG9taWQsICJzYXZlIik7CiAgICAgICAgIGxpYnhsX193YWl0X2Zvcl9kZXZpY2VfbW9kZWxf ZGVwcmVjYXRlZChnYywgZG9taWQsICJwYXVzZWQiLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAg ICAgZHNwcy0+Y2FsbGJhY2tfZGV2aWNlX21vZGVsX2RvbmUoZWdjLCBkc3BzLCAwKTsKKyAgICAg ICAgcmMgPSAwOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBMSUJYTF9ERVZJQ0Vf TU9ERUxfVkVSU0lPTl9RRU1VX1hFTjoKLSAgICAgICAgaWYgKGxpYnhsX19xbXBfc3RvcChnYywg ZG9taWQpKQotICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0ZBSUw7Ci0gICAgICAgIC8qIFNhdmUg RE0gc3RhdGUgaW50byBmaWxlbmFtZSAqLwotICAgICAgICByZXQgPSBsaWJ4bF9fcW1wX3NhdmUo Z2MsIGRvbWlkLCBmaWxlbmFtZSwgZHNwcy0+bGl2ZSk7Ci0gICAgICAgIGlmIChyZXQpCi0gICAg ICAgICAgICB1bmxpbmsoZmlsZW5hbWUpOworICAgICAgICByYyA9IGxpYnhsX19xbXBfc3VzcGVu ZF9zYXZlKGdjLCBkc3BzKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAg cmV0dXJuIEVSUk9SX0lOVkFMOwogICAgIH0KIAotICAgIGRzcHMtPmNhbGxiYWNrX2RldmljZV9t b2RlbF9kb25lKGVnYywgZHNwcywgcmV0KTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiBy YzsKIH0KIAogc3RhdGljIHZvaWQgZG9tYWluX3N1c3BlbmRfY29tbW9uX3dhaXRfZ3Vlc3QobGli eGxfX2VnYyAqZWdjLApAQCAtNDAyLDYgKzM5OSw3IEBAIHN0YXRpYyB2b2lkIGRvbWFpbl9zdXNw ZW5kX2NvbW1vbl9kb25lKGxpYnhsX19lZ2MgKmVnYywKICAgICBsaWJ4bF9fZXZfZXZ0Y2huX2Nh bmNlbChnYywgJmRzcHMtPmd1ZXN0X2V2dGNobik7CiAgICAgbGlieGxfX2V2X3hzd2F0Y2hfZGVy ZWdpc3RlcihnYywgJmRzcHMtPmd1ZXN0X3dhdGNoKTsKICAgICBsaWJ4bF9fZXZfdGltZV9kZXJl Z2lzdGVyKGdjLCAmZHNwcy0+Z3Vlc3RfdGltZW91dCk7CisgICAgbGlieGxfX2V2X3FtcF9kaXNw b3NlKGdjLCAmZHNwcy0+cW1wKTsKICAgICBkc3BzLT5jYWxsYmFja19jb21tb25fZG9uZShlZ2Ms IGRzcHMsIHJjKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwu aCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggNWI2NWNkYmU0MC4uY2FmZThi NTczMyAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaAorKysgYi90b29s cy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCkBAIC0xOTQyLDEzICsxOTQyLDggQEAgX2hpZGRlbiBp bnQgbGlieGxfX3FtcF9wY2lfZGVsKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfcGNpICpwY2lkZXYpOwogLyogUmVz dW1lIGh2bSBkb21haW4gKi8KIF9oaWRkZW4gaW50IGxpYnhsX19xbXBfc3lzdGVtX3dha2V1cChs aWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQpOwotLyogU3VzcGVuZCBRRU1VLiAqLwotX2hpZGRlbiBp bnQgbGlieGxfX3FtcF9zdG9wKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCk7CiAvKiBSZXN1bWUg UUVNVS4gKi8KIF9oaWRkZW4gaW50IGxpYnhsX19xbXBfcmVzdW1lKGxpYnhsX19nYyAqZ2MsIGlu dCBkb21pZCk7Ci0vKiBTYXZlIGN1cnJlbnQgUUVNVSBzdGF0ZSBpbnRvIGZkLiAqLwotX2hpZGRl biBpbnQgbGlieGxfX3FtcF9zYXZlKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCwgY29uc3QgY2hh ciAqZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsaXZlKTsKIC8q IExvYWQgY3VycmVudCBRRU1VIHN0YXRlIGZyb20gZmlsZS4gKi8KIF9oaWRkZW4gaW50IGxpYnhs X19xbXBfcmVzdG9yZShsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQsIGNvbnN0IGNoYXIgKmZpbGVu YW1lKTsKIC8qIFNldCBkaXJ0eSBiaXRtYXAgbG9nZ2luZyBzdGF0dXMgKi8KQEAgLTM0MDYsNiAr MzQwMSw3IEBAIHN0cnVjdCBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUgewogICAgIGxpYnhs X194c3dhaXRfc3RhdGUgcHZjb250cm9sOwogICAgIGxpYnhsX19ldl94c3dhdGNoIGd1ZXN0X3dh dGNoOwogICAgIGxpYnhsX19ldl90aW1lIGd1ZXN0X3RpbWVvdXQ7CisgICAgbGlieGxfX2V2X3Ft cCBxbXA7CiAKICAgICBjb25zdCBjaGFyICpkbV9zYXZlZmlsZTsKICAgICB2b2lkICgqY2FsbGJh Y2tfZGV2aWNlX21vZGVsX2RvbmUpKGxpYnhsX19lZ2MqLApAQCAtMzQxNyw2ICszNDEzLDkgQEAg aW50IGxpYnhsX19kb21haW5fc3VzcGVuZF9pbml0KGxpYnhsX19lZ2MgKmVnYywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUgKmRzcHMs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfZG9tYWluX3R5cGUgdHlwZSk7 CiAKK19oaWRkZW4gaW50IGxpYnhsX19xbXBfc3VzcGVuZF9zYXZlKGxpYnhsX19nYyAqZ2MsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRf c3RhdGUgKmRzcHMpOworCiBzdHJ1Y3QgbGlieGxfX2RvbWFpbl9zYXZlX3N0YXRlIHsKICAgICAv KiBzZXQgYnkgY2FsbGVyIG9mIGxpYnhsX19kb21haW5fc2F2ZSAqLwogICAgIGxpYnhsX19hbyAq YW87CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9xbXAuYyBiL3Rvb2xzL2xpYnhsL2xp YnhsX3FtcC5jCmluZGV4IDMzMmRjZjIwNjkuLjA3MjAzYTZmZTYgMTAwNjQ0Ci0tLSBhL3Rvb2xz L2xpYnhsL2xpYnhsX3FtcC5jCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3FtcC5jCkBAIC0zOTgs MTMgKzM5OCwxNCBAQCBzdGF0aWMgaW50IHFtcF9oYW5kbGVfcmVzcG9uc2UobGlieGxfX2djICpn YywgbGlieGxfX3FtcF9oYW5kbGVyICpxbXAsCiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBi b29sIHFtcF9xZW11X2NoZWNrX3ZlcnNpb24obGlieGxfX3FtcF9oYW5kbGVyICpxbXAsIGludCBt YWpvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbm9yLCBpbnQg bWljcm8pCitzdGF0aWMgYm9vbCBxbXBfZXZfcWVtdV9jaGVja192ZXJzaW9uKGxpYnhsX19ldl9x bXAgKmV2LCBpbnQgbWFqb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBtaW5vciwgaW50IG1pY3JvKQogewotICAgIHJldHVybiBxbXAtPnZlcnNpb24ubWFqb3Ig PiBtYWpvciB8fAotICAgICAgICAocW1wLT52ZXJzaW9uLm1ham9yID09IG1ham9yICYmCi0gICAg ICAgICAgICAocW1wLT52ZXJzaW9uLm1pbm9yID4gbWlub3IgfHwKLSAgICAgICAgICAgICAocW1w LT52ZXJzaW9uLm1pbm9yID09IG1pbm9yICYmIHFtcC0+dmVyc2lvbi5taWNybyA+PSBtaWNybykp KTsKKyAgICByZXR1cm4gZXYtPnFlbXVfdmVyc2lvbi5tYWpvciA+IG1ham9yIHx8CisgICAgICAg IChldi0+cWVtdV92ZXJzaW9uLm1ham9yID09IG1ham9yICYmCisgICAgICAgICAgICAoZXYtPnFl bXVfdmVyc2lvbi5taW5vciA+IG1pbm9yIHx8CisgICAgICAgICAgICAgKGV2LT5xZW11X3ZlcnNp b24ubWlub3IgPT0gbWlub3IgJiYKKyAgICAgICAgICAgICAgZXYtPnFlbXVfdmVyc2lvbi5taWNy byA+PSBtaWNybykpKTsKIH0KIAogLyoKQEAgLTEwMTcsMjkgKzEwMTgsNiBAQCBpbnQgbGlieGxf X3FtcF9zeXN0ZW1fd2FrZXVwKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCkKICAgICByZXR1cm4g cW1wX3J1bl9jb21tYW5kKGdjLCBkb21pZCwgInN5c3RlbV93YWtldXAiLCBOVUxMLCBOVUxMLCBO VUxMKTsKIH0KIAotaW50IGxpYnhsX19xbXBfc2F2ZShsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQs IGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBib29sIGxpdmUpCi17Ci0gICAgbGlieGxfX2pzb25fb2Jq ZWN0ICphcmdzID0gTlVMTDsKLSAgICBsaWJ4bF9fcW1wX2hhbmRsZXIgKnFtcCA9IE5VTEw7Ci0g ICAgaW50IHJjOwotCi0gICAgcW1wID0gbGlieGxfX3FtcF9pbml0aWFsaXplKGdjLCBkb21pZCk7 Ci0gICAgaWYgKCFxbXApCi0gICAgICAgIHJldHVybiBFUlJPUl9GQUlMOwotCi0gICAgcW1wX3Bh cmFtZXRlcnNfYWRkX3N0cmluZyhnYywgJmFyZ3MsICJmaWxlbmFtZSIsIChjaGFyICopZmlsZW5h bWUpOwotCi0gICAgLyogbGl2ZSBwYXJhbWV0ZXIgd2FzIGFkZGVkIHRvIFFFTVUgMi4xMS4gSXQg c2lnbmFsIFFFTVUgdGhhdCB0aGUgc2F2ZQotICAgICAqIG9wZXJhdGlvbiBpcyBmb3IgYSBsaXZl IG1pZ3JhdGlvbiByYXRoZXIgdGhhdCBmb3IgdGFraW5nIGEgc25hcHNob3QuICovCi0gICAgaWYg KHFtcF9xZW11X2NoZWNrX3ZlcnNpb24ocW1wLCAyLCAxMSwgMCkpCi0gICAgICAgIHFtcF9wYXJh bWV0ZXJzX2FkZF9ib29sKGdjLCAmYXJncywgImxpdmUiLCBsaXZlKTsKLQotICAgIHJjID0gcW1w X3N5bmNocm9ub3VzX3NlbmQocW1wLCAieGVuLXNhdmUtZGV2aWNlcy1zdGF0ZSIsIGFyZ3MsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBxbXAtPnRpbWVvdXQpOwot ICAgIGxpYnhsX19xbXBfY2xvc2UocW1wKTsKLSAgICByZXR1cm4gcmM7Ci19Ci0KIGludCBsaWJ4 bF9fcW1wX3Jlc3RvcmUobGlieGxfX2djICpnYywgaW50IGRvbWlkLCBjb25zdCBjaGFyICpzdGF0 ZV9maWxlKQogewogICAgIGxpYnhsX19qc29uX29iamVjdCAqYXJncyA9IE5VTEw7CkBAIC0xMDY4 LDExICsxMDQ2LDYgQEAgc3RhdGljIGludCBxbXBfY2hhbmdlKGxpYnhsX19nYyAqZ2MsIGxpYnhs X19xbXBfaGFuZGxlciAqcW1wLAogICAgIHJldHVybiByYzsKIH0KIAotaW50IGxpYnhsX19xbXBf c3RvcChsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQpCi17Ci0gICAgcmV0dXJuIHFtcF9ydW5fY29t bWFuZChnYywgZG9taWQsICJzdG9wIiwgTlVMTCwgTlVMTCwgTlVMTCk7Ci19Ci0KIGludCBsaWJ4 bF9fcW1wX3Jlc3VtZShsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQpCiB7CiAgICAgcmV0dXJuIHFt cF9ydW5fY29tbWFuZChnYywgZG9taWQsICJjb250IiwgTlVMTCwgTlVMTCwgTlVMTCk7CkBAIC0x MzEyLDYgKzEyODUsMTE3IEBAIGludCBsaWJ4bF9fcW1wX2luaXRpYWxpemF0aW9ucyhsaWJ4bF9f Z2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICByZXR1cm4gcmV0OwogfQogCisKKy8qCisgKiBG dW5jdGlvbiB1c2luZyBsaWJ4bF9fZXZfcW1wCisgKi8KKworc3RhdGljIHZvaWQgZG1fc3RvcHBl ZChsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19ldl9xbXAgKmV2LAorICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBsaWJ4bF9fanNvbl9vYmplY3QgKnJlc3BvbnNlLCBpbnQgcmMpOworc3RhdGlj IHZvaWQgZG1fc3RhdGVfZmRfcmVhZHkobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1wICpl diwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX19qc29uX29iamVj dCAqcmVzcG9uc2UsIGludCByYyk7CitzdGF0aWMgdm9pZCBkbV9zdGF0ZV9zYXZlZChsaWJ4bF9f ZWdjICplZ2MsIGxpYnhsX19ldl9xbXAgKmV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgbGlieGxfX2pzb25fb2JqZWN0ICpyZXNwb25zZSwgaW50IHJjKTsKK2ludCBsaWJ4bF9f cW1wX3N1c3BlbmRfc2F2ZShsaWJ4bF9fZ2MgKmdjLCBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3Rh dGUgKmRzcHMpCit7CisgICAgbGlieGxfX2V2X3FtcCAqZXYgPSAmZHNwcy0+cW1wOworICAgIHVp bnQzMl90IGNvbnN0IGRvbWlkID0gZHNwcy0+ZG9taWQ7CisKKyAgICBldi0+ZG9taWQgPSBkb21p ZDsKKyAgICBldi0+Y2FsbGJhY2sgPSBkbV9zdG9wcGVkOworICAgIGV2LT5jZmQgPSBOVUxMOwor CisgICAgcmV0dXJuIGxpYnhsX19ldl9xbXBfc2VuZChnYywgZXYsICJzdG9wIiwgTlVMTCk7Cit9 CisKK3N0YXRpYyB2b2lkIGRtX3N0b3BwZWQobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1w ICpldiwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGlieGxfX2pzb25fb2JqZWN0ICpy ZXNwb25zZSwgaW50IHJjKQoreworICAgIEVHQ19HQzsKKyAgICBsaWJ4bF9fZG9tYWluX3N1c3Bl bmRfc3RhdGUgKmRzcHMgPSBDT05UQUlORVJfT0YoZXYsICpkc3BzLCBxbXApOworICAgIGNvbnN0 IGNoYXIgKmNvbnN0IGZpbGVuYW1lID0gZHNwcy0+ZG1fc2F2ZWZpbGU7CisgICAgdWludDMyX3Qg Y29uc3QgZG9taWQgPSBldi0+ZG9taWQ7CisKKyAgICBpZiAocmMpCisgICAgICAgIGdvdG8gb3V0 OworCisgICAgbGlieGxfX2NhcmVmZF9iZWdpbigpOworICAgIGV2LT5jZmQgPSBsaWJ4bF9fY2Fy ZWZkX29wZW5lZChDVFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuKGZp bGVuYW1lLCBPX1dST05MWSB8IE9fQ1JFQVQsIDA2MDApKTsKKyAgICBpZiAoIWV2LT5jZmQpIHsK KyAgICAgICAgTE9HRUQoRVJST1IsIGRvbWlkLCAiRmFpbGVkIHRvIG9wZW4gZmlsZSAlcyBmb3Ig UUVNVSIsIGZpbGVuYW1lKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAgICAgICBnb3Rv IG91dDsKKyAgICB9CisKKyAgICBldi0+Y2FsbGJhY2sgPSBkbV9zdGF0ZV9mZF9yZWFkeTsKKyAg ICByYyA9IGxpYnhsX19ldl9xbXBfc2VuZChnYywgZXYsICJhZGQtZmQiLCBOVUxMKTsKKyAgICBp ZiAocmMpCisgICAgICAgIGdvdG8gb3V0OworCisgICAgcmV0dXJuOworb3V0OgorICAgIGlmIChl di0+Y2ZkKSB7CisgICAgICAgIGxpYnhsX19jYXJlZmRfY2xvc2UoZXYtPmNmZCk7CisgICAgICAg IHVubGluayhmaWxlbmFtZSk7CisgICAgICAgIGV2LT5jZmQgPSBOVUxMOworICAgIH0KKyAgICBk c3BzLT5jYWxsYmFja19kZXZpY2VfbW9kZWxfZG9uZShlZ2MsIGRzcHMsIHJjKTsKK30KKworc3Rh dGljIHZvaWQgZG1fc3RhdGVfZmRfcmVhZHkobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1w ICpldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX19qc29uX29i amVjdCAqcmVzcG9uc2UsIGludCByYykKK3sKKyAgICBFR0NfR0M7CisgICAgbGlieGxfX2RvbWFp bl9zdXNwZW5kX3N0YXRlICpkc3BzID0gQ09OVEFJTkVSX09GKGV2LCAqZHNwcywgcW1wKTsKKyAg ICBsaWJ4bF9fanNvbl9vYmplY3QgKmFyZ3MgPSBOVUxMOworICAgIGNvbnN0IGxpYnhsX19qc29u X29iamVjdCAqbzsKKyAgICBpbnQgZmRzZXQ7CisKKyAgICBsaWJ4bF9fY2FyZWZkX2Nsb3NlKGV2 LT5jZmQpOworICAgIGV2LT5jZmQgPSBOVUxMOworCisgICAgaWYgKHJjKQorICAgICAgICBnb3Rv IG91dDsKKworICAgIG8gPSBsaWJ4bF9fanNvbl9tYXBfZ2V0KCJmZHNldC1pZCIsIHJlc3BvbnNl LCBKU09OX0lOVEVHRVIpOworICAgIGlmICghbykgeworICAgICAgICByYyA9IEVSUk9SX0ZBSUw7 CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBmZHNldCA9IGxpYnhsX19qc29uX29iamVj dF9nZXRfaW50ZWdlcihvKTsKKworICAgIGV2LT5jYWxsYmFjayA9IGRtX3N0YXRlX3NhdmVkOwor CisgICAgaWYgKHFtcF9ldl9xZW11X2NoZWNrX3ZlcnNpb24oZXYsIDIsIDExLCAwKSkKKyAgICAg ICAgcW1wX3BhcmFtZXRlcnNfYWRkX2Jvb2woZ2MsICZhcmdzLCAibGl2ZSIsIGRzcHMtPmxpdmUp OworICAgIFFNUF9QQVJBTUVURVJTX1NQUklOVEYoJmFyZ3MsICJmaWxlbmFtZSIsICIvZGV2L2Zk c2V0LyVkIiwgZmRzZXQpOworICAgIHJjID0gbGlieGxfX2V2X3FtcF9zZW5kKGdjLCBldiwgInhl bi1zYXZlLWRldmljZXMtc3RhdGUiLCBhcmdzKTsKKyAgICBpZiAocmMpCisgICAgICAgIGdvdG8g b3V0OworCisgICAgcmV0dXJuOworb3V0OgorICAgIGlmIChyYykKKyAgICAgICAgdW5saW5rKGRz cHMtPmRtX3NhdmVmaWxlKTsKKyAgICBkc3BzLT5jYWxsYmFja19kZXZpY2VfbW9kZWxfZG9uZShl Z2MsIGRzcHMsIHJjKTsKK30KKworc3RhdGljIHZvaWQgZG1fc3RhdGVfc2F2ZWQobGlieGxfX2Vn YyAqZWdjLCBsaWJ4bF9fZXZfcW1wICpldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGxpYnhsX19qc29uX29iamVjdCAqcmVzcG9uc2UsIGludCByYykKK3sKKyAgICBFR0NfR0M7 CisgICAgbGlieGxfX2RvbWFpbl9zdXNwZW5kX3N0YXRlICpkc3BzID0gQ09OVEFJTkVSX09GKGV2 LCAqZHNwcywgcW1wKTsKKworICAgIGlmIChyYykKKyAgICAgICAgdW5saW5rKGRzcHMtPmRtX3Nh dmVmaWxlKTsKKworICAgIGxpYnhsX19ldl9xbXBfZGlzcG9zZShnYywgZXYpOworICAgIGRzcHMt PmNhbGxiYWNrX2RldmljZV9tb2RlbF9kb25lKGVnYywgZHNwcywgcmMpOworfQorCisKKwogLyog LS0tLS0tLS0tLS0tIEltcGxlbWVudGF0aW9uIG9mIGxpYnhsX19ldl9xbXAgLS0tLS0tLS0tLS0t LS0tLSAqLwogCiAvKiBoYXJkIGNvZGVkIG1lc3NhZ2UgSUQgdXNlZCBmb3IgY2FwYWJpbGl0eSBu ZWdvY2lhdGlvbiAqLwotLSAKQW50aG9ueSBQRVJBUkQKCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZl bEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxt YW4vbGlzdGluZm8veGVuLWRldmVs