From mboxrd@z Thu Jan 1 00:00:00 1970 From: Roger Pau Monne Subject: [PATCH RFC v1 01/13] libxc: split x86 HVM setup_guest into smaller logical functions Date: Mon, 22 Jun 2015 18:11:15 +0200 Message-ID: <1434989487-74940-2-git-send-email-roger.pau@citrix.com> References: <1434989487-74940-1-git-send-email-roger.pau@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1Z74KA-000893-0G for xen-devel@lists.xenproject.org; Mon, 22 Jun 2015 16:11:54 +0000 In-Reply-To: <1434989487-74940-1-git-send-email-roger.pau@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: xen-devel@lists.xenproject.org Cc: Elena Ufimtseva , Wei Liu , Ian Campbell , Stefano Stabellini , Andrew Cooper , Ian Jackson , Jan Beulich , Boris Ostrovsky , Roger Pau Monne List-Id: xen-devel@lists.xenproject.org VGhpcyBpcyBqdXN0IGEgcHJlcGFyYXRvcnkgY2hhbmdlIHRvIGNsZWFuIHVwIHRoZSBjb2RlIGlu IHNldHVwX2d1ZXN0LgpTaG91bGQgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2Vz LgoKU2lnbmVkLW9mZi1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ CkNjOiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IFN0ZWZhbm8g U3RhYmVsbGluaSA8c3RlZmFuby5zdGFiZWxsaW5pQGV1LmNpdHJpeC5jb20+CkNjOiBJYW4gQ2Ft cGJlbGwgPGlhbi5jYW1wYmVsbEBjaXRyaXguY29tPgpDYzogV2VpIExpdSA8d2VpLmxpdTJAY2l0 cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEFuZHJldyBD b29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+CkNjOiBCb3JpcyBPc3Ryb3Zza3kgPGJv cmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25y YWQud2lsa0BvcmFjbGUuY29tPgpDYzogRWxlbmEgVWZpbXRzZXZhIDxlbGVuYS51ZmltdHNldmFA b3JhY2xlLmNvbT4KLS0tCiB0b29scy9saWJ4Yy94Y19odm1fYnVpbGRfeDg2LmMgfCAxOTggKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAx MTcgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvdG9vbHMvbGli eGMveGNfaHZtX2J1aWxkX3g4Ni5jIGIvdG9vbHMvbGlieGMveGNfaHZtX2J1aWxkX3g4Ni5jCmlu ZGV4IDAwM2VhMDYuLmY3NjE2YTggMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX2h2bV9idWls ZF94ODYuYworKysgYi90b29scy9saWJ4Yy94Y19odm1fYnVpbGRfeDg2LmMKQEAgLTIzMiwyOCAr MjMyLDIwIEBAIHN0YXRpYyBpbnQgY2hlY2tfbW1pb19ob2xlKHVpbnQ2NF90IHN0YXJ0LCB1aW50 NjRfdCBtZW1zaXplLAogICAgICAgICByZXR1cm4gMTsKIH0KIAotc3RhdGljIGludCBzZXR1cF9n dWVzdCh4Y19pbnRlcmZhY2UgKnhjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ZG9tLCBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MgKmFyZ3MsCi0gICAgICAgICAgICAgICAgICAg ICAgIGNoYXIgKmltYWdlLCB1bnNpZ25lZCBsb25nIGltYWdlX3NpemUpCitzdGF0aWMgaW50IHhj X2h2bV9wb3B1bGF0ZV9tZW1vcnkoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3Mg KmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeGVuX3Bmbl90ICpwYWdl X2FycmF5KQogewotICAgIHhlbl9wZm5fdCAqcGFnZV9hcnJheSA9IE5VTEw7CiAgICAgdW5zaWdu ZWQgbG9uZyBpLCB2bWVtaWQsIG5yX3BhZ2VzID0gYXJncy0+bWVtX3NpemUgPj4gUEFHRV9TSElG VDsKICAgICB1bnNpZ25lZCBsb25nIHAybV9zaXplOwogICAgIHVuc2lnbmVkIGxvbmcgdGFyZ2V0 X3BhZ2VzID0gYXJncy0+bWVtX3RhcmdldCA+PiBQQUdFX1NISUZUOwotICAgIHVuc2lnbmVkIGxv bmcgZW50cnlfZWlwLCBjdXJfcGFnZXMsIGN1cl9wZm47Ci0gICAgdm9pZCAqaHZtX2luZm9fcGFn ZTsKLSAgICB1aW50MzJfdCAqaWRlbnRfcHQ7Ci0gICAgc3RydWN0IGVsZl9iaW5hcnkgZWxmOwot ICAgIHVpbnQ2NF90IHZfc3RhcnQsIHZfZW5kOwotICAgIHVpbnQ2NF90IG1fc3RhcnQgPSAwLCBt X2VuZCA9IDA7CisgICAgdW5zaWduZWQgbG9uZyBjdXJfcGFnZXMsIGN1cl9wZm47CiAgICAgaW50 IHJjOwogICAgIHhlbl9jYXBhYmlsaXRpZXNfaW5mb190IGNhcHM7CiAgICAgdW5zaWduZWQgbG9u ZyBzdGF0X25vcm1hbF9wYWdlcyA9IDAsIHN0YXRfMm1iX3BhZ2VzID0gMCwgCiAgICAgICAgIHN0 YXRfMWdiX3BhZ2VzID0gMDsKICAgICB1bnNpZ25lZCBpbnQgbWVtZmxhZ3MgPSAwOwogICAgIGlu dCBjbGFpbV9lbmFibGVkID0gYXJncy0+Y2xhaW1fZW5hYmxlZDsKLSAgICB4ZW5fcGZuX3Qgc3Bl Y2lhbF9hcnJheVtOUl9TUEVDSUFMX1BBR0VTXTsKLSAgICB4ZW5fcGZuX3QgaW9yZXFfc2VydmVy X2FycmF5W05SX0lPUkVRX1NFUlZFUl9QQUdFU107CiAgICAgdWludDY0X3QgdG90YWxfcGFnZXM7 CiAgICAgeGVuX3ZtZW1yYW5nZV90IGR1bW15X3ZtZW1yYW5nZVsyXTsKICAgICB1bnNpZ25lZCBp bnQgZHVtbXlfdm5vZGVfdG9fcG5vZGVbMV07CkBAIC0yNjEsMTkgKzI1Myw2IEBAIHN0YXRpYyBp bnQgc2V0dXBfZ3Vlc3QoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgdW5zaWduZWQgaW50ICp2bm9k ZV90b19wbm9kZTsKICAgICB1bnNpZ25lZCBpbnQgbnJfdm1lbXJhbmdlcywgbnJfdm5vZGVzOwog Ci0gICAgbWVtc2V0KCZlbGYsIDAsIHNpemVvZihlbGYpKTsKLSAgICBpZiAoIGVsZl9pbml0KCZl bGYsIGltYWdlLCBpbWFnZV9zaXplKSAhPSAwICkKLSAgICB7Ci0gICAgICAgIFBFUlJPUigiQ291 bGQgbm90IGluaXRpYWxpc2UgRUxGIGltYWdlIik7Ci0gICAgICAgIGdvdG8gZXJyb3Jfb3V0Owot ICAgIH0KLQotICAgIHhjX2VsZl9zZXRfbG9nZmlsZSh4Y2gsICZlbGYsIDEpOwotCi0gICAgZWxm X3BhcnNlX2JpbmFyeSgmZWxmKTsKLSAgICB2X3N0YXJ0ID0gMDsKLSAgICB2X2VuZCA9IGFyZ3Mt Pm1lbV9zaXplOwotCiAgICAgaWYgKCBucl9wYWdlcyA+IHRhcmdldF9wYWdlcyApCiAgICAgICAg IG1lbWZsYWdzIHw9IFhFTk1FTUZfcG9wdWxhdGVfb25fZGVtYW5kOwogCkBAIC0zNDYsMjQgKzMy NSw2IEBAIHN0YXRpYyBpbnQgc2V0dXBfZ3Vlc3QoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgICAg IGdvdG8gZXJyb3Jfb3V0OwogICAgIH0KIAotICAgIGlmICggbW9kdWxlc19pbml0KGFyZ3MsIHZf ZW5kLCAmZWxmLCAmbV9zdGFydCwgJm1fZW5kKSAhPSAwICkKLSAgICB7Ci0gICAgICAgIEVSUk9S KCJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gbG9hZCBtb2R1bGVzLiIpOwotICAgICAgICBnb3RvIGVy cm9yX291dDsKLSAgICB9Ci0KLSAgICBEUFJJTlRGKCJWSVJUVUFMIE1FTU9SWSBBUlJBTkdFTUVO VDpcbiIpOwotICAgIERQUklOVEYoIiAgTG9hZGVyOiAgICUwMTYiUFJJeDY0Ii0+JTAxNiJQUkl4 NjQiXG4iLCBlbGYucHN0YXJ0LCBlbGYucGVuZCk7Ci0gICAgRFBSSU5URigiICBNb2R1bGVzOiAg JTAxNiJQUkl4NjQiLT4lMDE2IlBSSXg2NCJcbiIsIG1fc3RhcnQsIG1fZW5kKTsKLSAgICBEUFJJ TlRGKCIgIFRPVEFMOiAgICAlMDE2IlBSSXg2NCItPiUwMTYiUFJJeDY0IlxuIiwgdl9zdGFydCwg dl9lbmQpOwotICAgIERQUklOVEYoIiAgRU5UUlk6ICAgICUwMTYiUFJJeDY0IlxuIiwgZWxmX3V2 YWwoJmVsZiwgZWxmLmVoZHIsIGVfZW50cnkpKTsKLQotICAgIGlmICggKHBhZ2VfYXJyYXkgPSBt YWxsb2MocDJtX3NpemUgKiBzaXplb2YoeGVuX3Bmbl90KSkpID09IE5VTEwgKQotICAgIHsKLSAg ICAgICAgUEVSUk9SKCJDb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5LiIpOwotICAgICAgICBnb3Rv IGVycm9yX291dDsKLSAgICB9Ci0KICAgICBmb3IgKCBpID0gMDsgaSA8IHAybV9zaXplOyBpKysg KQogICAgICAgICBwYWdlX2FycmF5W2ldID0gKCh4ZW5fcGZuX3QpLTEpOwogICAgIGZvciAoIHZt ZW1pZCA9IDA7IHZtZW1pZCA8IG5yX3ZtZW1yYW5nZXM7IHZtZW1pZCsrICkKQEAgLTU2Myw3ICs1 MjQsNTQgQEAgc3RhdGljIGludCBzZXR1cF9ndWVzdCh4Y19pbnRlcmZhY2UgKnhjaCwKICAgICBE UFJJTlRGKCIgIDRLQiBQQUdFUzogMHglMDE2bHhcbiIsIHN0YXRfbm9ybWFsX3BhZ2VzKTsKICAg ICBEUFJJTlRGKCIgIDJNQiBQQUdFUzogMHglMDE2bHhcbiIsIHN0YXRfMm1iX3BhZ2VzKTsKICAg ICBEUFJJTlRGKCIgIDFHQiBQQUdFUzogMHglMDE2bHhcbiIsIHN0YXRfMWdiX3BhZ2VzKTsKLSAg ICAKKworICAgIHJjID0gMDsKKyAgICBnb3RvIG91dDsKKyBlcnJvcl9vdXQ6CisgICAgcmMgPSAt MTsKKyBvdXQ6CisKKyAgICAvKiBlbnN1cmUgbm8gdW5jbGFpbWVkIHBhZ2VzIGFyZSBsZWZ0IHVu dXNlZCAqLworICAgIHhjX2RvbWFpbl9jbGFpbV9wYWdlcyh4Y2gsIGRvbSwgMCAvKiBjYW5jZWxz IHRoZSBjbGFpbSAqLyk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKK3N0YXRpYyBpbnQgeGNfaHZt X2xvYWRfaW1hZ2UoeGNfaW50ZXJmYWNlICp4Y2gsCisgICAgICAgICAgICAgICAgICAgICAgIHVp bnQzMl90IGRvbSwgc3RydWN0IHhjX2h2bV9idWlsZF9hcmdzICphcmdzLAorICAgICAgICAgICAg ICAgICAgICAgICB4ZW5fcGZuX3QgKnBhZ2VfYXJyYXkpCit7CisgICAgdW5zaWduZWQgbG9uZyBl bnRyeV9laXAsIGltYWdlX3NpemU7CisgICAgc3RydWN0IGVsZl9iaW5hcnkgZWxmOworICAgIHVp bnQ2NF90IHZfc3RhcnQsIHZfZW5kOworICAgIHVpbnQ2NF90IG1fc3RhcnQgPSAwLCBtX2VuZCA9 IDA7CisgICAgY2hhciAqaW1hZ2U7CisgICAgaW50IHJjOworCisgICAgaW1hZ2UgPSB4Y19yZWFk X2ltYWdlKHhjaCwgYXJncy0+aW1hZ2VfZmlsZV9uYW1lLCAmaW1hZ2Vfc2l6ZSk7CisgICAgaWYg KCBpbWFnZSA9PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgbWVtc2V0KCZlbGYs IDAsIHNpemVvZihlbGYpKTsKKyAgICBpZiAoIGVsZl9pbml0KCZlbGYsIGltYWdlLCBpbWFnZV9z aXplKSAhPSAwICkKKyAgICAgICAgZ290byBlcnJvcl9vdXQ7CisKKyAgICB4Y19lbGZfc2V0X2xv Z2ZpbGUoeGNoLCAmZWxmLCAxKTsKKworICAgIGVsZl9wYXJzZV9iaW5hcnkoJmVsZik7CisgICAg dl9zdGFydCA9IDA7CisgICAgdl9lbmQgPSBhcmdzLT5tZW1fc2l6ZTsKKworICAgIGlmICggbW9k dWxlc19pbml0KGFyZ3MsIHZfZW5kLCAmZWxmLCAmbV9zdGFydCwgJm1fZW5kKSAhPSAwICkKKyAg ICB7CisgICAgICAgIEVSUk9SKCJJbnN1ZmZpY2llbnQgc3BhY2UgdG8gbG9hZCBtb2R1bGVzLiIp OworICAgICAgICBnb3RvIGVycm9yX291dDsKKyAgICB9CisKKyAgICBEUFJJTlRGKCJWSVJUVUFM IE1FTU9SWSBBUlJBTkdFTUVOVDpcbiIpOworICAgIERQUklOVEYoIiAgTG9hZGVyOiAgICUwMTYi UFJJeDY0Ii0+JTAxNiJQUkl4NjQiXG4iLCBlbGYucHN0YXJ0LCBlbGYucGVuZCk7CisgICAgRFBS SU5URigiICBNb2R1bGVzOiAgJTAxNiJQUkl4NjQiLT4lMDE2IlBSSXg2NCJcbiIsIG1fc3RhcnQs IG1fZW5kKTsKKwogICAgIGlmICggbG9hZGVsZmltYWdlKHhjaCwgJmVsZiwgZG9tLCBwYWdlX2Fy cmF5KSAhPSAwICkKICAgICB7CiAgICAgICAgIFBFUlJPUigiQ291bGQgbm90IGxvYWQgRUxGIGlt YWdlIik7CkBAIC01NzYsNiArNTg0LDQ0IEBAIHN0YXRpYyBpbnQgc2V0dXBfZ3Vlc3QoeGNfaW50 ZXJmYWNlICp4Y2gsCiAgICAgICAgIGdvdG8gZXJyb3Jfb3V0OwogICAgIH0KIAorICAgIC8qIElu c2VydCBKTVAgPHJlbDMyPiBpbnN0cnVjdGlvbiBhdCBhZGRyZXNzIDB4MCB0byByZWFjaCBlbnRy eSBwb2ludC4gKi8KKyAgICBlbnRyeV9laXAgPSBlbGZfdXZhbCgmZWxmLCBlbGYuZWhkciwgZV9l bnRyeSk7CisgICAgaWYgKCBlbnRyeV9laXAgIT0gMCApCisgICAgeworICAgICAgICBjaGFyICpw YWdlMCA9IHhjX21hcF9mb3JlaWduX3JhbmdlKAorICAgICAgICAgICAgeGNoLCBkb20sIFBBR0Vf U0laRSwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgMCk7CisgICAgICAgIGlmICggcGFnZTAgPT0g TlVMTCApCisgICAgICAgICAgICBnb3RvIGVycm9yX291dDsKKyAgICAgICAgcGFnZTBbMF0gPSAw eGU5OworICAgICAgICAqKHVpbnQzMl90ICopJnBhZ2UwWzFdID0gZW50cnlfZWlwIC0gNTsKKyAg ICAgICAgbXVubWFwKHBhZ2UwLCBQQUdFX1NJWkUpOworICAgIH0KKworICAgIHJjID0gMDsKKyAg ICBnb3RvIG91dDsKKyBlcnJvcl9vdXQ6CisgICAgcmMgPSAtMTsKKyBvdXQ6CisgICAgaWYgKCBl bGZfY2hlY2tfYnJva2VuKCZlbGYpICkKKyAgICAgICAgRVJST1IoIkhWTSBFTEYgYnJva2VuOiAl cyIsIGVsZl9jaGVja19icm9rZW4oJmVsZikpOworICAgIGZyZWUoaW1hZ2UpOworCisgICAgcmV0 dXJuIHJjOworfQorCitzdGF0aWMgaW50IHhjX2h2bV9wb3B1bGF0ZV9wYXJhbXMoeGNfaW50ZXJm YWNlICp4Y2gsIHVpbnQzMl90IGRvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MgKmFyZ3MpCit7CisgICAgdW5zaWduZWQgbG9uZyBp OworICAgIHZvaWQgKmh2bV9pbmZvX3BhZ2U7CisgICAgdWludDMyX3QgKmlkZW50X3B0OworICAg IHVpbnQ2NF90IHZfZW5kOworICAgIGludCByYzsKKyAgICB4ZW5fcGZuX3Qgc3BlY2lhbF9hcnJh eVtOUl9TUEVDSUFMX1BBR0VTXTsKKyAgICB4ZW5fcGZuX3QgaW9yZXFfc2VydmVyX2FycmF5W05S X0lPUkVRX1NFUlZFUl9QQUdFU107CisKKyAgICB2X2VuZCA9IGFyZ3MtPm1lbV9zaXplOworCiAg ICAgaWYgKCAoaHZtX2luZm9fcGFnZSA9IHhjX21hcF9mb3JlaWduX3JhbmdlKAogICAgICAgICAg ICAgICB4Y2gsIGRvbSwgUEFHRV9TSVpFLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLAogICAgICAg ICAgICAgICBIVk1fSU5GT19QRk4pKSA9PSBOVUxMICkKQEAgLTY2NCwzNCArNzEwLDEyIEBAIHN0 YXRpYyBpbnQgc2V0dXBfZ3Vlc3QoeGNfaW50ZXJmYWNlICp4Y2gsCiAgICAgeGNfaHZtX3BhcmFt X3NldCh4Y2gsIGRvbSwgSFZNX1BBUkFNX0lERU5UX1BULAogICAgICAgICAgICAgICAgICAgICAg c3BlY2lhbF9wZm4oU1BFQ0lBTFBBR0VfSURFTlRfUFQpIDw8IFBBR0VfU0hJRlQpOwogCi0gICAg LyogSW5zZXJ0IEpNUCA8cmVsMzI+IGluc3RydWN0aW9uIGF0IGFkZHJlc3MgMHgwIHRvIHJlYWNo IGVudHJ5IHBvaW50LiAqLwotICAgIGVudHJ5X2VpcCA9IGVsZl91dmFsKCZlbGYsIGVsZi5laGRy LCBlX2VudHJ5KTsKLSAgICBpZiAoIGVudHJ5X2VpcCAhPSAwICkKLSAgICB7Ci0gICAgICAgIGNo YXIgKnBhZ2UwID0geGNfbWFwX2ZvcmVpZ25fcmFuZ2UoCi0gICAgICAgICAgICB4Y2gsIGRvbSwg UEFHRV9TSVpFLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCAwKTsKLSAgICAgICAgaWYgKCBwYWdl MCA9PSBOVUxMICkKLSAgICAgICAgewotICAgICAgICAgICAgUEVSUk9SKCJDb3VsZCBub3QgbWFw IHBhZ2UwIik7Ci0gICAgICAgICAgICBnb3RvIGVycm9yX291dDsKLSAgICAgICAgfQotICAgICAg ICBwYWdlMFswXSA9IDB4ZTk7Ci0gICAgICAgICoodWludDMyX3QgKikmcGFnZTBbMV0gPSBlbnRy eV9laXAgLSA1OwotICAgICAgICBtdW5tYXAocGFnZTAsIFBBR0VfU0laRSk7Ci0gICAgfQotCiAg ICAgcmMgPSAwOwogICAgIGdvdG8gb3V0OwogIGVycm9yX291dDoKICAgICByYyA9IC0xOwogIG91 dDoKLSAgICBpZiAoIGVsZl9jaGVja19icm9rZW4oJmVsZikgKQotICAgICAgICBFUlJPUigiSFZN IEVMRiBicm9rZW46ICVzIiwgZWxmX2NoZWNrX2Jyb2tlbigmZWxmKSk7Ci0KLSAgICAvKiBlbnN1 cmUgbm8gdW5jbGFpbWVkIHBhZ2VzIGFyZSBsZWZ0IHVudXNlZCAqLwotICAgIHhjX2RvbWFpbl9j bGFpbV9wYWdlcyh4Y2gsIGRvbSwgMCAvKiBjYW5jZWxzIHRoZSBjbGFpbSAqLyk7CiAKLSAgICBm cmVlKHBhZ2VfYXJyYXkpOwogICAgIHJldHVybiByYzsKIH0KIApAQCAtNzAyLDkgKzcyNiw4IEBA IGludCB4Y19odm1fYnVpbGQoeGNfaW50ZXJmYWNlICp4Y2gsIHVpbnQzMl90IGRvbWlkLAogICAg ICAgICAgICAgICAgICBzdHJ1Y3QgeGNfaHZtX2J1aWxkX2FyZ3MgKmh2bV9hcmdzKQogewogICAg IHN0cnVjdCB4Y19odm1fYnVpbGRfYXJncyBhcmdzID0gKmh2bV9hcmdzOwotICAgIHZvaWQgKmlt YWdlOwotICAgIHVuc2lnbmVkIGxvbmcgaW1hZ2Vfc2l6ZTsKLSAgICBpbnQgc3RzOworICAgIHhl bl9wZm5fdCAqcGFycmF5ID0gTlVMTDsKKyAgICBpbnQgcmM7CiAKICAgICBpZiAoIGRvbWlkID09 IDAgKQogICAgICAgICByZXR1cm4gLTE7CkBAIC03MTUsMjQgKzczOCwzNyBAQCBpbnQgeGNfaHZt X2J1aWxkKHhjX2ludGVyZmFjZSAqeGNoLCB1aW50MzJfdCBkb21pZCwKICAgICBpZiAoIGFyZ3Mu bWVtX3NpemUgPCAoMnVsbCA8PCAyMCkgfHwgYXJncy5tZW1fdGFyZ2V0IDwgKDJ1bGwgPDwgMjAp ICkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgaW1hZ2UgPSB4Y19yZWFkX2ltYWdlKHhjaCwg YXJncy5pbWFnZV9maWxlX25hbWUsICZpbWFnZV9zaXplKTsKLSAgICBpZiAoIGltYWdlID09IE5V TEwgKQorICAgIHBhcnJheSA9IG1hbGxvYygoYXJncy5tZW1fc2l6ZSA+PiBQQUdFX1NISUZUKSAq IHNpemVvZih4ZW5fcGZuX3QpKTsKKyAgICBpZiAoIHBhcnJheSA9PSBOVUxMICkKICAgICAgICAg cmV0dXJuIC0xOwogCi0gICAgc3RzID0gc2V0dXBfZ3Vlc3QoeGNoLCBkb21pZCwgJmFyZ3MsIGlt YWdlLCBpbWFnZV9zaXplKTsKLQotICAgIGlmICghc3RzKQorICAgIHJjID0geGNfaHZtX3BvcHVs YXRlX21lbW9yeSh4Y2gsIGRvbWlkLCAmYXJncywgcGFycmF5KTsKKyAgICBpZiAoIHJjICE9IDAg KQogICAgIHsKLSAgICAgICAgLyogUmV0dXJuIG1vZHVsZSBsb2FkIGFkZHJlc3NlcyB0byBjYWxs ZXIgKi8KLSAgICAgICAgaHZtX2FyZ3MtPmFjcGlfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0ID0gCi0g ICAgICAgICAgICBhcmdzLmFjcGlfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0OwotICAgICAgICBodm1f YXJncy0+c21iaW9zX21vZHVsZS5ndWVzdF9hZGRyX291dCA9IAotICAgICAgICAgICAgYXJncy5z bWJpb3NfbW9kdWxlLmd1ZXN0X2FkZHJfb3V0OworICAgICAgICBQRVJST1IoInhjX2h2bV9wb3B1 bGF0ZV9tZW1vcnkgZmFpbGVkIik7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICByYyA9 IHhjX2h2bV9sb2FkX2ltYWdlKHhjaCwgZG9taWQsICZhcmdzLCBwYXJyYXkpOworICAgIGlmICgg cmMgIT0gMCApCisgICAgeworICAgICAgICBQRVJST1IoInhjX2h2bV9sb2FkX2ltYWdlIGZhaWxl ZCIpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgcmMgPSB4Y19odm1fcG9wdWxhdGVf cGFyYW1zKHhjaCwgZG9taWQsICZhcmdzKTsKKyAgICBpZiAoIHJjICE9IDAgKQorICAgIHsKKyAg ICAgICAgUEVSUk9SKCJ4Y19odm1fcG9wdWxhdGVfcGFyYW1zIGZhaWxlZCIpOworICAgICAgICBn b3RvIG91dDsKICAgICB9CiAKLSAgICBmcmVlKGltYWdlKTsKKyAgICAvKiBSZXR1cm4gbW9kdWxl IGxvYWQgYWRkcmVzc2VzIHRvIGNhbGxlciAqLworICAgIGh2bV9hcmdzLT5hY3BpX21vZHVsZS5n dWVzdF9hZGRyX291dCA9IGFyZ3MuYWNwaV9tb2R1bGUuZ3Vlc3RfYWRkcl9vdXQ7CisgICAgaHZt X2FyZ3MtPnNtYmlvc19tb2R1bGUuZ3Vlc3RfYWRkcl9vdXQgPSBhcmdzLnNtYmlvc19tb2R1bGUu Z3Vlc3RfYWRkcl9vdXQ7CiAKLSAgICByZXR1cm4gc3RzOworb3V0OgorICAgIGZyZWUocGFycmF5 KTsKKworICAgIHJldHVybiByYzsKIH0KIAogLyogeGNfaHZtX2J1aWxkX3RhcmdldF9tZW06IAot LSAKMS45LjUgKEFwcGxlIEdpdC01MC4zKQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3Rz Lnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==