From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [PATCH v8 14/17] libxl: Re-implement domain_suspend_device_model using libxl__ev_qmp Date: Fri, 4 Jan 2019 15:30:53 +0000 Message-ID: <20190104153056.19138-15-anthony.perard@citrix.com> References: <20190104153056.19138-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 1gfRsO-0003zY-I7 for xen-devel@lists.xenproject.org; Fri, 04 Jan 2019 15:59:12 +0000 In-Reply-To: <20190104153056.19138-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+CkFj a2VkLWJ5OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KLS0tCgpOb3Rl czoKICAgIHY4OgogICAgICAgIEFja2VkCiAgICAKICAgIHY3OgogICAgICAgIHVzZSBsaWJ4bF9f cmVtb3ZlX2ZpbGUgaW5zdGVhZCBvZiB1bmxpbmsuCiAgICAgICAgY29tbWVudCB0aGF0IGxpYnhs X19xbXBfc3VzcGVuZF9zYXZlIGNhbiBjYWxsYmFjayBzeW5jaHJvbm91c2x5CiAgICAKICAgIHY2 OgogICAgICAgIGV4dHJhY3Qgb3BlbiBjYWxsIGZyb20gbGlieGxfX2NhcmVmZF9vcGVuZWQgdG8g cmVzcGVjdCBjb2Rpbmcgc3R5bGUKICAgICAgICBsaWJ4bF9fcW1wX3N1c3BlbmRfc2F2ZSBub3cg YWx3YXlzIHJlcG9ydCBzdWNjZXNzL2Vycm9yCiAgICAgICAgICAgIHZpYSBkc3BzLT5jYWxsYmFj a19kZXZpY2VfbW9kZWxfZG9uZQogICAgCiAgICB2NToKICAgICAgICByZW5hbWUgZ290byAnb3V0 JyBsYWJlbCB0byAnZXJyb3InLCBhcyBpdCBpcyB1c2Ugb25seSBmb3IgZXJyb3JzLgogICAgICAg IHJlLWFkZC9rZWVwIHRoZSBjb21tZW50IGFib3V0IHRoZSAibGl2ZSIgcGFyYW1ldGVyIGluIGRt X3N0YXRlX2ZkX3JlYWR5CiAgICAgICAgdXNlIGxpYnhsX19yZW1vdmVfZmlsZSBpbnN0ZWFkIG9m IHBsYWluIHVubGluawogICAgCiAgICB2NDoKICAgICAgICBUaGlzIHBhdGNoIHJlcGxhY2UgdGhl IHBhdGNoICJsaWJ4bF9xbXA6IEhhdmUgUUVNVSBzYXZlIGl0cyBzdGF0ZSB0byBhIGZpbGUKICAg ICAgICBkZXNjcmlwdG9yIiBmcm9tIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIHNlcmllLgogICAg ICAgIEl0IHVzZXMgbGlieGxfX2V2X3FtcCBpbnN0ZWFkLgoKIHRvb2xzL2xpYnhsL2xpYnhsX2Rv bV9zdXNwZW5kLmMgfCAgMTkgKy0tLQogdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICB8 ICAxMSArKy0KIHRvb2xzL2xpYnhsL2xpYnhsX3FtcC5jICAgICAgICAgfCAxNjAgKysrKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTM5IGluc2VydGlvbnMo KyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9z dXNwZW5kLmMgYi90b29scy9saWJ4bC9saWJ4bF9kb21fc3VzcGVuZC5jCmluZGV4IGY4ZmY1Y2Yw YzUuLmQxYWYzYTY1NzMgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX2RvbV9zdXNwZW5k LmMKKysrIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tX3N1c3BlbmQuYwpAQCAtMzQsNiArMzQsNyBA QCBpbnQgbGlieGxfX2RvbWFpbl9zdXNwZW5kX2luaXQobGlieGxfX2VnYyAqZWdjLAogICAgIGxp YnhsX19ldl9ldnRjaG5faW5pdCgmZHNwcy0+Z3Vlc3RfZXZ0Y2huKTsKICAgICBsaWJ4bF9fZXZf eHN3YXRjaF9pbml0KCZkc3BzLT5ndWVzdF93YXRjaCk7CiAgICAgbGlieGxfX2V2X3RpbWVfaW5p dCgmZHNwcy0+Z3Vlc3RfdGltZW91dCk7CisgICAgbGlieGxfX2V2X3FtcF9pbml0KCZkc3BzLT5x bXApOwogCiAgICAgaWYgKHR5cGUgPT0gTElCWExfRE9NQUlOX1RZUEVfSU5WQUxJRCkgZ290byBv dXQ7CiAgICAgZHNwcy0+dHlwZSA9IHR5cGU7CkBAIC03Miw3ICs3Myw2IEBAIHZvaWQgbGlieGxf X2RvbWFpbl9zdXNwZW5kX2RldmljZV9tb2RlbChsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUg KmRzcHMpCiB7CiAgICAgU1RBVEVfQU9fR0MoZHNwcy0+YW8pOwotICAgIGludCByZXQgPSAwOwog ICAgIGludCByYyA9IDA7CiAgICAgdWludDMyX3QgY29uc3QgZG9taWQgPSBkc3BzLT5kb21pZDsK ICAgICBjb25zdCBjaGFyICpjb25zdCBmaWxlbmFtZSA9IGRzcHMtPmRtX3NhdmVmaWxlOwpAQCAt ODUsMTkgKzg1LDkgQEAgdm9pZCBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfZGV2aWNlX21vZGVsKGxp YnhsX19lZ2MgKmVnYywKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgTElCWExfREVW SUNFX01PREVMX1ZFUlNJT05fUUVNVV9YRU46Ci0gICAgICAgIHJldCA9IGxpYnhsX19xbXBfc3Rv cChnYywgZG9taWQpOwotICAgICAgICBpZiAocmV0KSB7Ci0gICAgICAgICAgICByYyA9IEVSUk9S X0ZBSUw7Ci0gICAgICAgICAgICBnb3RvIG91dDsKLSAgICAgICAgfQotICAgICAgICAvKiBTYXZl IERNIHN0YXRlIGludG8gZmlsZW5hbWUgKi8KLSAgICAgICAgcmV0ID0gbGlieGxfX3FtcF9zYXZl KGdjLCBkb21pZCwgZmlsZW5hbWUsIGRzcHMtPmxpdmUpOwotICAgICAgICBpZiAocmV0KSB7Ci0g ICAgICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Ci0gICAgICAgICAgICB1bmxpbmsoZmlsZW5hbWUp OwotICAgICAgICAgICAgZ290byBvdXQ7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAg ICAgIC8qIGNhbGxzIGRzcHMtPmNhbGxiYWNrX2RldmljZV9tb2RlbF9kb25lIHdoZW4gZG9uZSAq LworICAgICAgICBsaWJ4bF9fcW1wX3N1c3BlbmRfc2F2ZShlZ2MsIGRzcHMpOyAvKiBtdXN0IGJl IGxhc3QgKi8KKyAgICAgICAgcmV0dXJuOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJjID0gRVJS T1JfSU5WQUw7CiAgICAgICAgIGdvdG8gb3V0OwpAQCAtNDA2LDYgKzM5Niw3IEBAIHN0YXRpYyB2 b2lkIGRvbWFpbl9zdXNwZW5kX2NvbW1vbl9kb25lKGxpYnhsX19lZ2MgKmVnYywKICAgICBsaWJ4 bF9fZXZfZXZ0Y2huX2NhbmNlbChnYywgJmRzcHMtPmd1ZXN0X2V2dGNobik7CiAgICAgbGlieGxf X2V2X3hzd2F0Y2hfZGVyZWdpc3RlcihnYywgJmRzcHMtPmd1ZXN0X3dhdGNoKTsKICAgICBsaWJ4 bF9fZXZfdGltZV9kZXJlZ2lzdGVyKGdjLCAmZHNwcy0+Z3Vlc3RfdGltZW91dCk7CisgICAgbGli eGxfX2V2X3FtcF9kaXNwb3NlKGdjLCAmZHNwcy0+cW1wKTsKICAgICBkc3BzLT5jYWxsYmFja19j b21tb25fZG9uZShlZ2MsIGRzcHMsIHJjKTsKIH0KIApkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwv bGlieGxfaW50ZXJuYWwuaCBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKaW5kZXggNWEx ODkzNzU2Mi4uNzdhOGNkNWFhNSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfaW50ZXJu YWwuaAorKysgYi90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oCkBAIC0xOTYzLDEzICsxOTYz LDggQEAgX2hpZGRlbiBpbnQgbGlieGxfX3FtcF9wY2lfZGVsKGxpYnhsX19nYyAqZ2MsIGludCBk b21pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9kZXZpY2VfcGNpICpw Y2lkZXYpOwogLyogUmVzdW1lIGh2bSBkb21haW4gKi8KIF9oaWRkZW4gaW50IGxpYnhsX19xbXBf c3lzdGVtX3dha2V1cChsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQpOwotLyogU3VzcGVuZCBRRU1V LiAqLwotX2hpZGRlbiBpbnQgbGlieGxfX3FtcF9zdG9wKGxpYnhsX19nYyAqZ2MsIGludCBkb21p ZCk7CiAvKiBSZXN1bWUgUUVNVS4gKi8KIF9oaWRkZW4gaW50IGxpYnhsX19xbXBfcmVzdW1lKGxp YnhsX19nYyAqZ2MsIGludCBkb21pZCk7Ci0vKiBTYXZlIGN1cnJlbnQgUUVNVSBzdGF0ZSBpbnRv IGZkLiAqLwotX2hpZGRlbiBpbnQgbGlieGxfX3FtcF9zYXZlKGxpYnhsX19nYyAqZ2MsIGludCBk b21pZCwgY29uc3QgY2hhciAqZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg Ym9vbCBsaXZlKTsKIC8qIExvYWQgY3VycmVudCBRRU1VIHN0YXRlIGZyb20gZmlsZS4gKi8KIF9o aWRkZW4gaW50IGxpYnhsX19xbXBfcmVzdG9yZShsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQsIGNv bnN0IGNoYXIgKmZpbGVuYW1lKTsKIC8qIFNldCBkaXJ0eSBiaXRtYXAgbG9nZ2luZyBzdGF0dXMg Ki8KQEAgLTM0MzMsNiArMzQyOCw3IEBAIHN0cnVjdCBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3Rh dGUgewogICAgIGxpYnhsX194c3dhaXRfc3RhdGUgcHZjb250cm9sOwogICAgIGxpYnhsX19ldl94 c3dhdGNoIGd1ZXN0X3dhdGNoOwogICAgIGxpYnhsX19ldl90aW1lIGd1ZXN0X3RpbWVvdXQ7Cisg ICAgbGlieGxfX2V2X3FtcCBxbXA7CiAKICAgICBjb25zdCBjaGFyICpkbV9zYXZlZmlsZTsKICAg ICB2b2lkICgqY2FsbGJhY2tfZGV2aWNlX21vZGVsX2RvbmUpKGxpYnhsX19lZ2MqLApAQCAtMzQ0 NCw2ICszNDQwLDExIEBAIGludCBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfaW5pdChsaWJ4bF9fZWdj ICplZ2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2RvbWFpbl9zdXNw ZW5kX3N0YXRlICpkc3BzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX2Rv bWFpbl90eXBlIHR5cGUpOwogCisvKiBjYWxscyBkc3BzLT5jYWxsYmFja19kZXZpY2VfbW9kZWxf ZG9uZSB3aGVuIGRvbmUKKyAqIG1heSBzeW5jaHJvbm91c2x5IGNhbGxzIHRoaXMgY2FsbGJhY2sg Ki8KK19oaWRkZW4gdm9pZCBsaWJ4bF9fcW1wX3N1c3BlbmRfc2F2ZShsaWJ4bF9fZWdjICplZ2Ms CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX2RvbWFpbl9zdXNw ZW5kX3N0YXRlICpkc3BzKTsKKwogc3RydWN0IGxpYnhsX19kb21haW5fc2F2ZV9zdGF0ZSB7CiAg ICAgLyogc2V0IGJ5IGNhbGxlciBvZiBsaWJ4bF9fZG9tYWluX3NhdmUgKi8KICAgICBsaWJ4bF9f YW8gKmFvOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfcW1wLmMgYi90b29scy9saWJ4 bC9saWJ4bF9xbXAuYwppbmRleCA5YjRhMDdkNjIyLi4wMmJhMTU2ZGY5IDEwMDY0NAotLS0gYS90 b29scy9saWJ4bC9saWJ4bF9xbXAuYworKysgYi90b29scy9saWJ4bC9saWJ4bF9xbXAuYwpAQCAt NDA1LDEyICs0MDUsMTIgQEAgc3RhdGljIGludCBxbXBfaGFuZGxlX3Jlc3BvbnNlKGxpYnhsX19n YyAqZ2MsIGxpYnhsX19xbXBfaGFuZGxlciAqcW1wLAogICogICA9IDAgIGlmIHFlbXUncyB2ZXJz aW9uID09IGFza2VkIHZlcnNpb24KICAqICAgPiAwICBpZiBxZW11J3MgdmVyc2lvbiA+ICBhc2tl ZCB2ZXJzaW9uCiAgKi8KLXN0YXRpYyBpbnQgcW1wX3FlbXVfY29tcGFyZV92ZXJzaW9uKGxpYnhs X19xbXBfaGFuZGxlciAqcW1wLCBpbnQgbWFqb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgbWlub3IsIGludCBtaWNybykKK3N0YXRpYyBpbnQgcW1wX2V2X3FlbXVf Y29tcGFyZV92ZXJzaW9uKGxpYnhsX19ldl9xbXAgKmV2LCBpbnQgbWFqb3IsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWlub3IsIGludCBtaWNybykKIHsKICNk ZWZpbmUgQ0hFQ0tfVkVSU0lPTihsZXZlbCkgZG8geyBcCi0gICAgaWYgKHFtcC0+dmVyc2lvbi5s ZXZlbCA+IChsZXZlbCkpIHJldHVybiArMTsgXAotICAgIGlmIChxbXAtPnZlcnNpb24ubGV2ZWwg PCAobGV2ZWwpKSByZXR1cm4gLTE7IFwKKyAgICBpZiAoZXYtPnFlbXVfdmVyc2lvbi5sZXZlbCA+ IChsZXZlbCkpIHJldHVybiArMTsgXAorICAgIGlmIChldi0+cWVtdV92ZXJzaW9uLmxldmVsIDwg KGxldmVsKSkgcmV0dXJuIC0xOyBcCiB9IHdoaWxlICgwKQogCiAgICAgQ0hFQ0tfVkVSU0lPTiht YWpvcik7CkBAIC0xMDE5LDI5ICsxMDE5LDYgQEAgaW50IGxpYnhsX19xbXBfc3lzdGVtX3dha2V1 cChsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQpCiAgICAgcmV0dXJuIHFtcF9ydW5fY29tbWFuZChn YywgZG9taWQsICJzeXN0ZW1fd2FrZXVwIiwgTlVMTCwgTlVMTCwgTlVMTCk7CiB9CiAKLWludCBs aWJ4bF9fcW1wX3NhdmUobGlieGxfX2djICpnYywgaW50IGRvbWlkLCBjb25zdCBjaGFyICpmaWxl bmFtZSwgYm9vbCBsaXZlKQotewotICAgIGxpYnhsX19qc29uX29iamVjdCAqYXJncyA9IE5VTEw7 Ci0gICAgbGlieGxfX3FtcF9oYW5kbGVyICpxbXAgPSBOVUxMOwotICAgIGludCByYzsKLQotICAg IHFtcCA9IGxpYnhsX19xbXBfaW5pdGlhbGl6ZShnYywgZG9taWQpOwotICAgIGlmICghcW1wKQot ICAgICAgICByZXR1cm4gRVJST1JfRkFJTDsKLQotICAgIHFtcF9wYXJhbWV0ZXJzX2FkZF9zdHJp bmcoZ2MsICZhcmdzLCAiZmlsZW5hbWUiLCAoY2hhciAqKWZpbGVuYW1lKTsKLQotICAgIC8qIGxp dmUgcGFyYW1ldGVyIHdhcyBhZGRlZCB0byBRRU1VIDIuMTEuIEl0IHNpZ25hbCBRRU1VIHRoYXQg dGhlIHNhdmUKLSAgICAgKiBvcGVyYXRpb24gaXMgZm9yIGEgbGl2ZSBtaWdyYXRpb24gcmF0aGVy IHRoYXQgZm9yIHRha2luZyBhIHNuYXBzaG90LiAqLwotICAgIGlmIChxbXBfcWVtdV9jb21wYXJl X3ZlcnNpb24ocW1wLCAyLCAxMSwgMCkgPj0gMCkKLSAgICAgICAgcW1wX3BhcmFtZXRlcnNfYWRk X2Jvb2woZ2MsICZhcmdzLCAibGl2ZSIsIGxpdmUpOwotCi0gICAgcmMgPSBxbXBfc3luY2hyb25v dXNfc2VuZChxbXAsICJ4ZW4tc2F2ZS1kZXZpY2VzLXN0YXRlIiwgYXJncywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIHFtcC0+dGltZW91dCk7Ci0gICAgbGlieGxf X3FtcF9jbG9zZShxbXApOwotICAgIHJldHVybiByYzsKLX0KLQogaW50IGxpYnhsX19xbXBfcmVz dG9yZShsaWJ4bF9fZ2MgKmdjLCBpbnQgZG9taWQsIGNvbnN0IGNoYXIgKnN0YXRlX2ZpbGUpCiB7 CiAgICAgbGlieGxfX2pzb25fb2JqZWN0ICphcmdzID0gTlVMTDsKQEAgLTEwNzAsMTEgKzEwNDcs NiBAQCBzdGF0aWMgaW50IHFtcF9jaGFuZ2UobGlieGxfX2djICpnYywgbGlieGxfX3FtcF9oYW5k bGVyICpxbXAsCiAgICAgcmV0dXJuIHJjOwogfQogCi1pbnQgbGlieGxfX3FtcF9zdG9wKGxpYnhs X19nYyAqZ2MsIGludCBkb21pZCkKLXsKLSAgICByZXR1cm4gcW1wX3J1bl9jb21tYW5kKGdjLCBk b21pZCwgInN0b3AiLCBOVUxMLCBOVUxMLCBOVUxMKTsKLX0KLQogaW50IGxpYnhsX19xbXBfcmVz dW1lKGxpYnhsX19nYyAqZ2MsIGludCBkb21pZCkKIHsKICAgICByZXR1cm4gcW1wX3J1bl9jb21t YW5kKGdjLCBkb21pZCwgImNvbnQiLCBOVUxMLCBOVUxMLCBOVUxMKTsKQEAgLTEzMTQsNiArMTI4 NiwxMzAgQEAgaW50IGxpYnhsX19xbXBfaW5pdGlhbGl6YXRpb25zKGxpYnhsX19nYyAqZ2MsIHVp bnQzMl90IGRvbWlkLAogICAgIHJldHVybiByZXQ7CiB9CiAKKworLyoKKyAqIEZ1bmN0aW9ucyB1 c2luZyBsaWJ4bF9fZXZfcW1wCisgKi8KKworc3RhdGljIHZvaWQgZG1fc3RvcHBlZChsaWJ4bF9f ZWdjICplZ2MsIGxpYnhsX19ldl9xbXAgKmV2LAorICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBsaWJ4bF9fanNvbl9vYmplY3QgKnJlc3BvbnNlLCBpbnQgcmMpOworc3RhdGljIHZvaWQgZG1f c3RhdGVfZmRfcmVhZHkobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1wICpldiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX19qc29uX29iamVjdCAqcmVzcG9u c2UsIGludCByYyk7CitzdGF0aWMgdm9pZCBkbV9zdGF0ZV9zYXZlZChsaWJ4bF9fZWdjICplZ2Ms IGxpYnhsX19ldl9xbXAgKmV2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGli eGxfX2pzb25fb2JqZWN0ICpyZXNwb25zZSwgaW50IHJjKTsKKworLyogY2FsbHMgZHNwcy0+Y2Fs bGJhY2tfZGV2aWNlX21vZGVsX2RvbmUgd2hlbiBkb25lICovCit2b2lkIGxpYnhsX19xbXBfc3Vz cGVuZF9zYXZlKGxpYnhsX19lZ2MgKmVnYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlieGxfX2RvbWFpbl9zdXNwZW5kX3N0YXRlICpkc3BzKQoreworICAgIEVHQ19HQzsKKyAgICBp bnQgcmM7CisgICAgbGlieGxfX2V2X3FtcCAqZXYgPSAmZHNwcy0+cW1wOworCisgICAgZXYtPmFv ID0gZHNwcy0+YW87CisgICAgZXYtPmRvbWlkID0gZHNwcy0+ZG9taWQ7CisgICAgZXYtPmNhbGxi YWNrID0gZG1fc3RvcHBlZDsKKyAgICBldi0+cGF5bG9hZF9mZCA9IC0xOworCisgICAgcmMgPSBs aWJ4bF9fZXZfcW1wX3NlbmQoZ2MsIGV2LCAic3RvcCIsIE5VTEwpOworICAgIGlmIChyYykKKyAg ICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybjsKKworZXJyb3I6CisgICAgZHNwcy0+Y2Fs bGJhY2tfZGV2aWNlX21vZGVsX2RvbmUoZWdjLCBkc3BzLCByYyk7Cit9CisKK3N0YXRpYyB2b2lk IGRtX3N0b3BwZWQobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1wICpldiwKKyAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgbGlieGxfX2pzb25fb2JqZWN0ICpyZXNwb25zZSwgaW50IHJj KQoreworICAgIEVHQ19HQzsKKyAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUgKmRzcHMg PSBDT05UQUlORVJfT0YoZXYsICpkc3BzLCBxbXApOworICAgIGNvbnN0IGNoYXIgKmNvbnN0IGZp bGVuYW1lID0gZHNwcy0+ZG1fc2F2ZWZpbGU7CisKKyAgICBpZiAocmMpCisgICAgICAgIGdvdG8g ZXJyb3I7CisKKyAgICBldi0+cGF5bG9hZF9mZCA9IG9wZW4oZmlsZW5hbWUsIE9fV1JPTkxZIHwg T19DUkVBVCwgMDYwMCk7CisgICAgaWYgKGV2LT5wYXlsb2FkX2ZkIDwgMCkgeworICAgICAgICBM T0dFRChFUlJPUiwgZXYtPmRvbWlkLAorICAgICAgICAgICAgICAiRmFpbGVkIHRvIG9wZW4gZmls ZSAlcyBmb3IgUUVNVSIsIGZpbGVuYW1lKTsKKyAgICAgICAgcmMgPSBFUlJPUl9GQUlMOworICAg ICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGV2LT5jYWxsYmFjayA9IGRtX3N0YXRlX2Zk X3JlYWR5OworICAgIHJjID0gbGlieGxfX2V2X3FtcF9zZW5kKGdjLCBldiwgImFkZC1mZCIsIE5V TEwpOworICAgIGlmIChyYykKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybjsKKwor ZXJyb3I6CisgICAgaWYgKGV2LT5wYXlsb2FkX2ZkID49IDApIHsKKyAgICAgICAgY2xvc2UoZXYt PnBheWxvYWRfZmQpOworICAgICAgICBsaWJ4bF9fcmVtb3ZlX2ZpbGUoZ2MsIGZpbGVuYW1lKTsK KyAgICAgICAgZXYtPnBheWxvYWRfZmQgPSAtMTsKKyAgICB9CisgICAgZHNwcy0+Y2FsbGJhY2tf ZGV2aWNlX21vZGVsX2RvbmUoZWdjLCBkc3BzLCByYyk7Cit9CisKK3N0YXRpYyB2b2lkIGRtX3N0 YXRlX2ZkX3JlYWR5KGxpYnhsX19lZ2MgKmVnYywgbGlieGxfX2V2X3FtcCAqZXYsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9fanNvbl9vYmplY3QgKnJlc3BvbnNl LCBpbnQgcmMpCit7CisgICAgRUdDX0dDOworICAgIGludCBmZHNldDsKKyAgICBjb25zdCBsaWJ4 bF9fanNvbl9vYmplY3QgKm87CisgICAgbGlieGxfX2pzb25fb2JqZWN0ICphcmdzID0gTlVMTDsK KyAgICBsaWJ4bF9fZG9tYWluX3N1c3BlbmRfc3RhdGUgKmRzcHMgPSBDT05UQUlORVJfT0YoZXYs ICpkc3BzLCBxbXApOworCisgICAgY2xvc2UoZXYtPnBheWxvYWRfZmQpOworICAgIGV2LT5wYXls b2FkX2ZkID0gLTE7CisKKyAgICBpZiAocmMpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICBv ID0gbGlieGxfX2pzb25fbWFwX2dldCgiZmRzZXQtaWQiLCByZXNwb25zZSwgSlNPTl9JTlRFR0VS KTsKKyAgICBpZiAoIW8pIHsKKyAgICAgICAgcmMgPSBFUlJPUl9RRU1VX0FQSTsKKyAgICAgICAg Z290byBlcnJvcjsKKyAgICB9CisgICAgZmRzZXQgPSBsaWJ4bF9fanNvbl9vYmplY3RfZ2V0X2lu dGVnZXIobyk7CisKKyAgICBldi0+Y2FsbGJhY2sgPSBkbV9zdGF0ZV9zYXZlZDsKKworICAgIC8q IFRoZSBgbGl2ZWAgcGFyYW1ldGVyIHdhcyBhZGRlZCB0byBRRU1VIDIuMTEuIEl0IHNpZ25hbHMg UUVNVSB0aGF0CisgICAgICogdGhlIHNhdmUgb3BlcmF0aW9uIGlzIGZvciBhIGxpdmUgbWlncmF0 aW9uIHJhdGhlciB0aGFuIGZvciB0YWtpbmcgYQorICAgICAqIHNuYXBzaG90LiAqLworICAgIGlm IChxbXBfZXZfcWVtdV9jb21wYXJlX3ZlcnNpb24oZXYsIDIsIDExLCAwKSA+PSAwKQorICAgICAg ICBxbXBfcGFyYW1ldGVyc19hZGRfYm9vbChnYywgJmFyZ3MsICJsaXZlIiwgZHNwcy0+bGl2ZSk7 CisgICAgUU1QX1BBUkFNRVRFUlNfU1BSSU5URigmYXJncywgImZpbGVuYW1lIiwgIi9kZXYvZmRz ZXQvJWQiLCBmZHNldCk7CisgICAgcmMgPSBsaWJ4bF9fZXZfcW1wX3NlbmQoZ2MsIGV2LCAieGVu LXNhdmUtZGV2aWNlcy1zdGF0ZSIsIGFyZ3MpOworICAgIGlmIChyYykKKyAgICAgICAgZ290byBl cnJvcjsKKworICAgIHJldHVybjsKKworZXJyb3I6CisgICAgYXNzZXJ0KHJjKTsKKyAgICBsaWJ4 bF9fcmVtb3ZlX2ZpbGUoZ2MsIGRzcHMtPmRtX3NhdmVmaWxlKTsKKyAgICBkc3BzLT5jYWxsYmFj a19kZXZpY2VfbW9kZWxfZG9uZShlZ2MsIGRzcHMsIHJjKTsKK30KKworc3RhdGljIHZvaWQgZG1f c3RhdGVfc2F2ZWQobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1wICpldiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpYnhsX19qc29uX29iamVjdCAqcmVzcG9uc2UsIGlu dCByYykKK3sKKyAgICBFR0NfR0M7CisgICAgbGlieGxfX2RvbWFpbl9zdXNwZW5kX3N0YXRlICpk c3BzID0gQ09OVEFJTkVSX09GKGV2LCAqZHNwcywgcW1wKTsKKworICAgIGlmIChyYykKKyAgICAg ICAgbGlieGxfX3JlbW92ZV9maWxlKGdjLCBkc3BzLT5kbV9zYXZlZmlsZSk7CisKKyAgICBkc3Bz LT5jYWxsYmFja19kZXZpY2VfbW9kZWxfZG9uZShlZ2MsIGRzcHMsIHJjKTsKK30KKworCiAvKiAt LS0tLS0tLS0tLS0gSW1wbGVtZW50YXRpb24gb2YgbGlieGxfX2V2X3FtcCAtLS0tLS0tLS0tLS0t LS0tICovCiAKIC8qCi0tIApBbnRob255IFBFUkFSRAoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1h bi9saXN0aW5mby94ZW4tZGV2ZWw=