From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: Re: [PATCH v2 3/3] tools/libxc: use superpages during restore of HVM guest Date: Tue, 22 Aug 2017 16:31:16 +0100 Message-ID: <20170822153116.xi6tcqumodcxmrfd@citrix.com> References: <20170817170133.30939-1-olaf@aepfle.de> <20170817170133.30939-4-olaf@aepfle.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170817170133.30939-4-olaf@aepfle.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Olaf Hering Cc: Andrew Cooper , Ian Jackson , Wei Liu , xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org T24gVGh1LCBBdWcgMTcsIDIwMTcgYXQgMDc6MDE6MzNQTSArMDIwMCwgT2xhZiBIZXJpbmcgd3Jv dGU6ClsuLi5dCj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmVfeDg2X2h2 bS5jIGIvdG9vbHMvbGlieGMveGNfc3JfcmVzdG9yZV94ODZfaHZtLmMKPiBpbmRleCAxZGNhODUz NTRhLi42MDQ1NDE0OGRiIDEwMDY0NAo+IC0tLSBhL3Rvb2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmVf eDg2X2h2bS5jCj4gKysrIGIvdG9vbHMvbGlieGMveGNfc3JfcmVzdG9yZV94ODZfaHZtLmMKPiBA QCAtMTM1LDYgKzEzNSw4IEBAIHN0YXRpYyBpbnQgeDg2X2h2bV9sb2NhbGlzZV9wYWdlKHN0cnVj dCB4Y19zcl9jb250ZXh0ICpjdHgsCj4gIHN0YXRpYyBpbnQgeDg2X2h2bV9zZXR1cChzdHJ1Y3Qg eGNfc3JfY29udGV4dCAqY3R4KQo+ICB7Cj4gICAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGN0eC0+ eGNoOwo+ICsgICAgc3RydWN0IHhjX3NyX2JpdG1hcCAqYm07Cj4gKyAgICB1bnNpZ25lZCBsb25n IGJpdHM7Cj4gIAo+ICAgICAgaWYgKCBjdHgtPnJlc3RvcmUuZ3Vlc3RfdHlwZSAhPSBESERSX1RZ UEVfWDg2X0hWTSApCj4gICAgICB7Cj4gQEAgLTE0OSw3ICsxNTEsMzAgQEAgc3RhdGljIGludCB4 ODZfaHZtX3NldHVwKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4gICAgICAgICAgcmV0dXJu IC0xOwo+ICAgICAgfQo+ICAKPiArICAgIGJtID0gJmN0eC0+eDg2X2h2bS5yZXN0b3JlLmF0dGVt cHRlZF8xZzsKPiArICAgIGJpdHMgPSAoY3R4LT5yZXN0b3JlLnAybV9zaXplID4+IFNVUEVSUEFH RV8xR0JfU0hJRlQpICsgMTsKPiArICAgIGlmICggeGNfc3JfYml0bWFwX3Jlc2l6ZShibSwgYml0 cykgPT0gZmFsc2UgKQo+ICsgICAgICAgIGdvdG8gb3V0Owo+ICsKPiArICAgIGJtID0gJmN0eC0+ eDg2X2h2bS5yZXN0b3JlLmF0dGVtcHRlZF8ybTsKPiArICAgIGJpdHMgPSAoY3R4LT5yZXN0b3Jl LnAybV9zaXplID4+IFNVUEVSUEFHRV8yTUJfU0hJRlQpICsgMTsKPiArICAgIGlmICggeGNfc3Jf Yml0bWFwX3Jlc2l6ZShibSwgYml0cykgPT0gZmFsc2UgKQo+ICsgICAgICAgIGdvdG8gb3V0Owo+ ICsKPiArICAgIGJtID0gJmN0eC0+eDg2X2h2bS5yZXN0b3JlLmFsbG9jYXRlZF9wZm5zOwo+ICsg ICAgYml0cyA9IGN0eC0+cmVzdG9yZS5wMm1fc2l6ZSArIDE7Cj4gKyAgICBpZiAoIHhjX3NyX2Jp dG1hcF9yZXNpemUoYm0sIGJpdHMpID09IGZhbHNlICkKPiArICAgICAgICBnb3RvIG91dDsKPiAr Cj4gKyAgICAvKiBObyBzdXBlcnBhZ2UgaW4gMXN0IDJNQiBkdWUgdG8gVkdBIGhvbGUgKi8KPiAr ICAgIHhjX3NyX3NldF9iaXQoMCwgJmN0eC0+eDg2X2h2bS5yZXN0b3JlLmF0dGVtcHRlZF8xZyk7 Cj4gKyAgICB4Y19zcl9zZXRfYml0KDAsICZjdHgtPng4Nl9odm0ucmVzdG9yZS5hdHRlbXB0ZWRf Mm0pOwo+ICsKCkkgZG9uJ3QgcXVpdGUgZ2V0IHRoaXMuIFdoYXQgYWJvdXQgb3RoZXIgaG9sZXMg c3VjaCBhcyBNTUlPPwoKPiAgICAgIHJldHVybiAwOwo+ICsKPiArb3V0Ogo+ICsgICAgRVJST1Io IlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHBmbiBiaXRtYXBzIik7Cj4gKyAgICByZXR1 cm4gLTE7Cj4gIH0KPiAgCj4gIC8qCj4gQEAgLTIyNCwxMCArMjQ5LDE2NCBAQCBzdGF0aWMgaW50 IHg4Nl9odm1fc3RyZWFtX2NvbXBsZXRlKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4gIHN0 YXRpYyBpbnQgeDg2X2h2bV9jbGVhbnVwKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCj4gIHsK PiAgICAgIGZyZWUoY3R4LT54ODZfaHZtLnJlc3RvcmUuY29udGV4dCk7Cj4gKyAgICB4Y19zcl9i aXRtYXBfZnJlZSgmY3R4LT54ODZfaHZtLnJlc3RvcmUuYXR0ZW1wdGVkXzFnKTsKPiArICAgIHhj X3NyX2JpdG1hcF9mcmVlKCZjdHgtPng4Nl9odm0ucmVzdG9yZS5hdHRlbXB0ZWRfMm0pOwo+ICsg ICAgeGNfc3JfYml0bWFwX2ZyZWUoJmN0eC0+eDg2X2h2bS5yZXN0b3JlLmFsbG9jYXRlZF9wZm5z KTsKPiAgCj4gICAgICByZXR1cm4gMDsKPiAgfQo+ICAKPiArLyoKPiArICogU2V0IGEgcGZuIGFz IGFsbG9jYXRlZCwgZXhwYW5kaW5nIHRoZSB0cmFja2luZyBzdHJ1Y3R1cmVzIGlmIG5lZWRlZC4K PiArICovCj4gK3N0YXRpYyBpbnQgcGZuX3NldF9hbGxvY2F0ZWQoc3RydWN0IHhjX3NyX2NvbnRl eHQgKmN0eCwgeGVuX3Bmbl90IHBmbikKPiArewo+ICsgICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBj dHgtPnhjaDsKPiArCj4gKyAgICBpZiAoICF4Y19zcl9zZXRfYml0KHBmbiwgJmN0eC0+eDg2X2h2 bS5yZXN0b3JlLmFsbG9jYXRlZF9wZm5zKSApCj4gKyAgICB7Cj4gKyAgICAgICAgRVJST1IoIkZh aWxlZCB0byByZWFsbG9jIGFsbG9jYXRlZF9wZm5zIGJpdG1hcCIpOwo+ICsgICAgICAgIGVycm5v ID0gRU5PTUVNOwo+ICsgICAgICAgIHJldHVybiAtMTsKPiArICAgIH0KPiArICAgIHJldHVybiAw Owo+ICt9Cj4gKwo+ICsvKgo+ICsgKiBBdHRlbXB0IHRvIGFsbG9jYXRlIGEgc3VwZXJwYWdlIHdo ZXJlIHRoZSBwZm4gcmVzaWRlcy4KPiArICovCj4gK3N0YXRpYyBpbnQgeDg2X2h2bV9hbGxvY2F0 ZV9wZm4oc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwgeGVuX3Bmbl90IHBmbikKPiArewo+ICsg ICAgeGNfaW50ZXJmYWNlICp4Y2ggPSBjdHgtPnhjaDsKPiArICAgIGJvb2wgc3VjY2VzcyA9IGZh bHNlOwo+ICsgICAgaW50IHJjID0gLTEsIGRvbmU7Cj4gKyAgICB1bnNpZ25lZCBpbnQgb3JkZXI7 Cj4gKyAgICB1bnNpZ25lZCBsb25nIGk7Cj4gKyAgICB1bnNpZ25lZCBsb25nIHN0YXRfMWcgPSAw LCBzdGF0XzJtID0gMCwgc3RhdF80ayA9IDA7Cj4gKyAgICB1bnNpZ25lZCBsb25nIGlkeF8xZywg aWR4XzJtOwo+ICsgICAgdW5zaWduZWQgbG9uZyBjb3VudDsKPiArICAgIHhlbl9wZm5fdCBiYXNl X3BmbiA9IDAsIGV4dG50Owo+ICsKPiArICAgIGlmICh4Y19zcl90ZXN0X2JpdChwZm4sICZjdHgt Png4Nl9odm0ucmVzdG9yZS5hbGxvY2F0ZWRfcGZucykpCgpTdHlsZSBpcyB3cm9uZyBoZXJlIGFu ZCBpbiBzb21lIG90aGVyIHBsYWNlcy4KCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAg aWR4XzFnID0gcGZuID4+IFNVUEVSUEFHRV8xR0JfU0hJRlQ7Cj4gKyAgICBpZHhfMm0gPSBwZm4g Pj4gU1VQRVJQQUdFXzJNQl9TSElGVDsKPiArICAgIGlmICgheGNfc3JfYml0bWFwX3Jlc2l6ZSgm Y3R4LT54ODZfaHZtLnJlc3RvcmUuYXR0ZW1wdGVkXzFnLCBpZHhfMWcpKQo+ICsgICAgewo+ICsg ICAgICAgIFBFUlJPUigiRmFpbGVkIHRvIHJlYWxsb2MgYXR0ZW1wdGVkXzFnIik7Cj4gKyAgICAg ICAgcmV0dXJuIC0xOwo+ICsgICAgfQo+ICsgICAgaWYgKCF4Y19zcl9iaXRtYXBfcmVzaXplKCZj dHgtPng4Nl9odm0ucmVzdG9yZS5hdHRlbXB0ZWRfMm0sIGlkeF8ybSkpCj4gKyAgICB7Cj4gKyAg ICAgICAgUEVSUk9SKCJGYWlsZWQgdG8gcmVhbGxvYyBhdHRlbXB0ZWRfMm0iKTsKPiArICAgICAg ICByZXR1cm4gLTE7Cj4gKyAgICB9Cj4gKyAgICBEUFJJTlRGKCJpZHhfMWcgJWx1IGlkeF8ybSAl bHVcbiIsIGlkeF8xZywgaWR4XzJtKTsKPiArICAgIGlmICgheGNfc3JfdGVzdF9hbmRfc2V0X2Jp dChpZHhfMWcsICZjdHgtPng4Nl9odm0ucmVzdG9yZS5hdHRlbXB0ZWRfMWcpKSB7Cj4gKyAgICAg ICAgb3JkZXIgPSBTVVBFUlBBR0VfMUdCX1NISUZUOwo+ICsgICAgICAgIGNvdW50ID0gMVVMIDw8 IG9yZGVyOwo+ICsgICAgICAgIGJhc2VfcGZuID0gKHBmbiA+PiBvcmRlcikgPDwgb3JkZXI7Cj4g KyAgICAgICAgZXh0bnQgPSBiYXNlX3BmbjsKPiArICAgICAgICBkb25lID0geGNfZG9tYWluX3Bv cHVsYXRlX3BoeXNtYXAoeGNoLCBjdHgtPmRvbWlkLCAxLCBvcmRlciwgMCwgJmV4dG50KTsKPiAr ICAgICAgICBEUFJJTlRGKCIxRyBiYXNlX3BmbiAlIiBQUklfeGVuX3BmbiAiIGRvbmUgJWRcbiIs IGJhc2VfcGZuLCBkb25lKTsKPiArICAgICAgICBpZiAoZG9uZSA+IDApIHsKPiArICAgICAgICAg ICAgc3RydWN0IHhjX3NyX2JpdG1hcCAqYm0gPSAmY3R4LT54ODZfaHZtLnJlc3RvcmUuYXR0ZW1w dGVkXzJtOwo+ICsgICAgICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKPiArICAgICAgICAgICAgc3Rh dF8xZyA9IGRvbmU7Cj4gKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoY291bnQgPj4gU1VQ RVJQQUdFXzJNQl9TSElGVCk7IGkrKykKPiArICAgICAgICAgICAgICAgIHhjX3NyX3NldF9iaXQo KGJhc2VfcGZuID4+IFNVUEVSUEFHRV8yTUJfU0hJRlQpICsgaSwgYm0pOwo+ICsgICAgICAgIH0K PiArICAgIH0KPiArCj4gKyAgICBpZiAoIXhjX3NyX3Rlc3RfYW5kX3NldF9iaXQoaWR4XzJtLCAm Y3R4LT54ODZfaHZtLnJlc3RvcmUuYXR0ZW1wdGVkXzJtKSkgewo+ICsgICAgICAgIG9yZGVyID0g U1VQRVJQQUdFXzJNQl9TSElGVDsKPiArICAgICAgICBjb3VudCA9IDFVTCA8PCBvcmRlcjsKPiAr ICAgICAgICBiYXNlX3BmbiA9IChwZm4gPj4gb3JkZXIpIDw8IG9yZGVyOwo+ICsgICAgICAgIGV4 dG50ID0gYmFzZV9wZm47Cj4gKyAgICAgICAgZG9uZSA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlz bWFwKHhjaCwgY3R4LT5kb21pZCwgMSwgb3JkZXIsIDAsICZleHRudCk7Cj4gKyAgICAgICAgRFBS SU5URigiMk0gYmFzZV9wZm4gJSIgUFJJX3hlbl9wZm4gIiBkb25lICVkXG4iLCBiYXNlX3Bmbiwg ZG9uZSk7Cj4gKyAgICAgICAgaWYgKGRvbmUgPiAwKSB7Cj4gKyAgICAgICAgICAgIHN1Y2Nlc3Mg PSB0cnVlOwo+ICsgICAgICAgICAgICBzdGF0XzJtID0gZG9uZTsKPiArICAgICAgICB9Cj4gKyAg ICB9Cj4gKyAgICBpZiAoc3VjY2VzcyA9PSBmYWxzZSkgewo+ICsgICAgICAgIGNvdW50ID0gMTsK PiArICAgICAgICBleHRudCA9IGJhc2VfcGZuID0gcGZuOwo+ICsgICAgICAgIGRvbmUgPSB4Y19k b21haW5fcG9wdWxhdGVfcGh5c21hcCh4Y2gsIGN0eC0+ZG9taWQsIGNvdW50LCAwLCAwLCAmZXh0 bnQpOwo+ICsgICAgICAgIGlmIChkb25lID4gMCkgewo+ICsgICAgICAgICAgICBzdWNjZXNzID0g dHJ1ZTsKPiArICAgICAgICAgICAgc3RhdF80ayA9IGNvdW50Owo+ICsgICAgICAgIH0KPiArICAg IH0KPiArICAgIERQUklOVEYoImNvdW50ICVsdSAxRyAlbHUgMk0gJWx1IDRrICVsdVxuIiwgY291 bnQsIHN0YXRfMWcsIHN0YXRfMm0sIHN0YXRfNGspOwo+ICsgICAgaWYgKHN1Y2Nlc3MgPT0gdHJ1 ZSkgewo+ICsgICAgICAgIGRvIHsKPiArICAgICAgICAgICAgY291bnQtLTsKPiArICAgICAgICAg ICAgcmMgPSBwZm5fc2V0X2FsbG9jYXRlZChjdHgsIGJhc2VfcGZuICsgY291bnQpOwo+ICsgICAg ICAgICAgICBpZiAocmMpCj4gKyAgICAgICAgICAgICAgICBicmVhazsKPiArICAgICAgICB9IHdo aWxlIChjb3VudCk7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgeDg2X2h2bV9wb3B1bGF0ZV9wZm5zKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgsIHVu c2lnbmVkIGNvdW50LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4 ZW5fcGZuX3QgKm9yaWdpbmFsX3BmbnMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHVpbnQzMl90ICp0eXBlcykKPiArewo+ICsgICAgeGNfaW50ZXJmYWNlICp4Y2gg PSBjdHgtPnhjaDsKPiArICAgIHhlbl9wZm5fdCBtaW5fcGZuID0gb3JpZ2luYWxfcGZuc1swXSwg bWF4X3BmbiA9IG9yaWdpbmFsX3BmbnNbMF07Cj4gKyAgICB1bnNpZ25lZCBpOwo+ICsgICAgaW50 IHJjID0gLTE7Cj4gKwo+ICsgICAgZm9yICggaSA9IDA7IGkgPCBjb3VudDsgKytpICkKPiArICAg IHsKPiArICAgICAgICBpZiAob3JpZ2luYWxfcGZuc1tpXSA8IG1pbl9wZm4pCj4gKyAgICAgICAg ICAgIG1pbl9wZm4gPSBvcmlnaW5hbF9wZm5zW2ldOwo+ICsgICAgICAgIGlmIChvcmlnaW5hbF9w Zm5zW2ldID4gbWF4X3BmbikKPiArICAgICAgICAgICAgbWF4X3BmbiA9IG9yaWdpbmFsX3BmbnNb aV07Cj4gKyAgICAgICAgaWYgKCAodHlwZXNbaV0gIT0gWEVOX0RPTUNUTF9QRklORk9fWFRBQiAm Jgo+ICsgICAgICAgICAgICAgIHR5cGVzW2ldICE9IFhFTl9ET01DVExfUEZJTkZPX0JST0tFTikg JiYKPiArICAgICAgICAgICAgICFwZm5faXNfcG9wdWxhdGVkKGN0eCwgb3JpZ2luYWxfcGZuc1tp XSkgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgcmMgPSB4ODZfaHZtX2FsbG9jYXRlX3Bm bihjdHgsIG9yaWdpbmFsX3BmbnNbaV0pOwo+ICsgICAgICAgICAgICBpZiAoIHJjICkKPiArICAg ICAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAgICAgICByYyA9IHBmbl9zZXRfcG9wdWxh dGVkKGN0eCwgb3JpZ2luYWxfcGZuc1tpXSk7Cj4gKyAgICAgICAgICAgIGlmICggcmMgKQo+ICsg ICAgICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsgICAgfQoKT25lIHBvdGVu dGlhbCBpc3N1ZSBJIGNhbiBzZWUgd2l0aCB5b3VyIGFsZ29yaXRobSBpcywgaWYgdGhlIHN0cmVh bSBvZgpwYWdlIGluZm8gY29udGFpbnMgcGFnZXMgZnJvbSBkaWZmZXJlbnQgc3VwZXIgcGFnZXMs IHRoZSByaXNrIG9mIGdvaW5nCm92ZXIgbWVtb3J5IGxpbWl0IGlzIGhpZ2ggKGhlbmNlIGZhaWxp bmcgdGhlIG1pZ3JhdGlvbikuCgpJcyBteSBjb25jZXJuIHVuZm91bmRlZD8KCj4gKwo+ICsgICAg d2hpbGUgKG1pbl9wZm4gPCBtYXhfcGZuKQo+ICsgICAgewo+ICsgICAgICAgIGlmICgheGNfc3Jf Yml0bWFwX3Jlc2l6ZSgmY3R4LT54ODZfaHZtLnJlc3RvcmUuYWxsb2NhdGVkX3BmbnMsIG1pbl9w Zm4pKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgUEVSUk9SKCJGYWlsZWQgdG8gcmVhbGxv YyBhbGxvY2F0ZWRfcGZucyAlIiBQUklfeGVuX3BmbiwgbWluX3Bmbik7Cj4gKyAgICAgICAgICAg IGdvdG8gZXJyOwo+ICsgICAgICAgIH0KPiArICAgICAgICBpZiAoIXBmbl9pc19wb3B1bGF0ZWQo Y3R4LCBtaW5fcGZuKSAmJgo+ICsgICAgICAgICAgICB4Y19zcl90ZXN0X2FuZF9jbGVhcl9iaXQo bWluX3BmbiwgJmN0eC0+eDg2X2h2bS5yZXN0b3JlLmFsbG9jYXRlZF9wZm5zKSkgewo+ICsgICAg ICAgICAgICB4ZW5fcGZuX3QgcGZuID0gbWluX3BmbjsKPiArICAgICAgICAgICAgcmMgPSB4Y19k b21haW5fZGVjcmVhc2VfcmVzZXJ2YXRpb25fZXhhY3QoeGNoLCBjdHgtPmRvbWlkLCAxLCAwLCAm cGZuKTsKPiArICAgICAgICAgICAgaWYgKCByYyApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAg ICAgICAgICAgIFBFUlJPUigiRmFpbGVkIHRvIHJlbGVhc2UgcGZuICUiIFBSSV94ZW5fcGZuLCBt aW5fcGZuKTsKPiArICAgICAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAgICAgICB9Cj4g KyAgICAgICAgfQo+ICsgICAgICAgIG1pbl9wZm4rKzsKPiArICAgIH0KPiArCj4gKyAgICByYyA9 IDA7Cj4gKwo+ICsgZXJyOgo+ICsgICAgcmV0dXJuIHJjOwo+ICt9Cj4gKwo+ICsKPiAgc3RydWN0 IHhjX3NyX3Jlc3RvcmVfb3BzIHJlc3RvcmVfb3BzX3g4Nl9odm0gPQo+ICB7Cj4gICAgICAucGZu X2lzX3ZhbGlkICAgID0geDg2X2h2bV9wZm5faXNfdmFsaWQsCj4gQEAgLTIzNiw2ICs0MTUsNyBA QCBzdHJ1Y3QgeGNfc3JfcmVzdG9yZV9vcHMgcmVzdG9yZV9vcHNfeDg2X2h2bSA9Cj4gICAgICAu c2V0X3BhZ2VfdHlwZSAgID0geDg2X2h2bV9zZXRfcGFnZV90eXBlLAo+ICAgICAgLmxvY2FsaXNl X3BhZ2UgICA9IHg4Nl9odm1fbG9jYWxpc2VfcGFnZSwKPiAgICAgIC5zZXR1cCAgICAgICAgICAg PSB4ODZfaHZtX3NldHVwLAo+ICsgICAgLnBvcHVsYXRlX3BmbnMgICA9IHg4Nl9odm1fcG9wdWxh dGVfcGZucywKPiAgICAgIC5wcm9jZXNzX3JlY29yZCAgPSB4ODZfaHZtX3Byb2Nlc3NfcmVjb3Jk LAo+ICAgICAgLnN0cmVhbV9jb21wbGV0ZSA9IHg4Nl9odm1fc3RyZWFtX2NvbXBsZXRlLAo+ICAg ICAgLmNsZWFudXAgICAgICAgICA9IHg4Nl9odm1fY2xlYW51cCwKPiBkaWZmIC0tZ2l0IGEvdG9v bHMvbGlieGMveGNfc3JfcmVzdG9yZV94ODZfcHYuYyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3Jlc3Rv cmVfeDg2X3B2LmMKPiBpbmRleCA1MGUyNWMxNjJjLi44Nzk1NzU1OWJjIDEwMDY0NAo+IC0tLSBh L3Rvb2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmVfeDg2X3B2LmMKPiArKysgYi90b29scy9saWJ4Yy94 Y19zcl9yZXN0b3JlX3g4Nl9wdi5jCj4gQEAgLTkzNiw2ICs5MzYsNzUgQEAgc3RhdGljIHZvaWQg eDg2X3B2X3NldF9nZm4oc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwgeGVuX3Bmbl90IHBmbiwK PiAgICAgICAgICAoKHVpbnQzMl90ICopY3R4LT54ODZfcHYucDJtKVtwZm5dID0gbWZuOwo+ICB9 Cj4gIAo+ICsvKgo+ICsgKiBHaXZlbiBhIHNldCBvZiBwZm5zLCBvYnRhaW4gbWVtb3J5IGZyb20g WGVuIHRvIGZpbGwgdGhlIHBoeXNtYXAgZm9yIHRoZQo+ICsgKiB1bnBvcHVsYXRlZCBzdWJzZXQu ICBJZiB0eXBlcyBpcyBOVUxMLCBubyBwYWdlIHR5cGUgY2hlY2tpbmcgaXMgcGVyZm9ybWVkCj4g KyAqIGFuZCBhbGwgdW5wb3B1bGF0ZWQgcGZucyBhcmUgcG9wdWxhdGVkLgo+ICsgKi8KPiArc3Rh dGljIGludCB4ODZfcHZfcG9wdWxhdGVfcGZucyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LCB1 bnNpZ25lZCBjb3VudCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB4 ZW5fcGZuX3QgKm9yaWdpbmFsX3BmbnMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdWludDMyX3QgKnR5cGVzKQo+ICt7Cj4gKyAgICB4Y19pbnRlcmZhY2UgKnhjaCA9 IGN0eC0+eGNoOwo+ICsgICAgeGVuX3Bmbl90ICptZm5zID0gbWFsbG9jKGNvdW50ICogc2l6ZW9m KCptZm5zKSksCj4gKyAgICAgICAgKnBmbnMgPSBtYWxsb2MoY291bnQgKiBzaXplb2YoKnBmbnMp KTsKPiArICAgIHVuc2lnbmVkIGksIG5yX3BmbnMgPSAwOwo+ICsgICAgaW50IHJjID0gLTE7Cj4g Kwo+ICsgICAgaWYgKCAhbWZucyB8fCAhcGZucyApCj4gKyAgICB7Cj4gKyAgICAgICAgRVJST1Io IkZhaWxlZCB0byBhbGxvY2F0ZSAlenUgYnl0ZXMgZm9yIHBvcHVsYXRpbmcgdGhlIHBoeXNtYXAi LAo+ICsgICAgICAgICAgICAgIDIgKiBjb3VudCAqIHNpemVvZigqbWZucykpOwo+ICsgICAgICAg IGdvdG8gZXJyOwo+ICsgICAgfQo+ICsKPiArICAgIGZvciAoIGkgPSAwOyBpIDwgY291bnQ7ICsr aSApCj4gKyAgICB7Cj4gKyAgICAgICAgaWYgKCAoIXR5cGVzIHx8ICh0eXBlcyAmJgo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgKHR5cGVzW2ldICE9IFhFTl9ET01DVExfUEZJTkZPX1hUQUIg JiYKPiArICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlc1tpXSAhPSBYRU5fRE9NQ1RMX1BG SU5GT19CUk9LRU4pKSkgJiYKPiArICAgICAgICAgICAgICFwZm5faXNfcG9wdWxhdGVkKGN0eCwg b3JpZ2luYWxfcGZuc1tpXSkgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgcmMgPSBwZm5f c2V0X3BvcHVsYXRlZChjdHgsIG9yaWdpbmFsX3BmbnNbaV0pOwo+ICsgICAgICAgICAgICBpZiAo IHJjICkKPiArICAgICAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAgICAgICBwZm5zW25y X3BmbnNdID0gbWZuc1tucl9wZm5zXSA9IG9yaWdpbmFsX3BmbnNbaV07Cj4gKyAgICAgICAgICAg ICsrbnJfcGZuczsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKCBucl9wZm5z ICkKPiArICAgIHsKPiArICAgICAgICByYyA9IHhjX2RvbWFpbl9wb3B1bGF0ZV9waHlzbWFwX2V4 YWN0KAo+ICsgICAgICAgICAgICB4Y2gsIGN0eC0+ZG9taWQsIG5yX3BmbnMsIDAsIDAsIG1mbnMp Owo+ICsgICAgICAgIGlmICggcmMgKQo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAgUEVSUk9S KCJGYWlsZWQgdG8gcG9wdWxhdGUgcGh5c21hcCIpOwo+ICsgICAgICAgICAgICBnb3RvIGVycjsK PiArICAgICAgICB9Cj4gKwo+ICsgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgbnJfcGZuczsgKytp ICkKPiArICAgICAgICB7Cj4gKyAgICAgICAgICAgIGlmICggbWZuc1tpXSA9PSBJTlZBTElEX01G TiApCj4gKyAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgIEVSUk9SKCJQb3B1bGF0ZSBw aHlzbWFwIGZhaWxlZCBmb3IgcGZuICV1IiwgaSk7Cj4gKyAgICAgICAgICAgICAgICByYyA9IC0x Owo+ICsgICAgICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgICAgIH0KPiArCj4gKyAg ICAgICAgICAgIGN0eC0+cmVzdG9yZS5vcHMuc2V0X2dmbihjdHgsIHBmbnNbaV0sIG1mbnNbaV0p Owo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICByYyA9IDA7Cj4gKwo+ICsgZXJyOgo+ ICsgICAgZnJlZShwZm5zKTsKPiArICAgIGZyZWUobWZucyk7Cj4gKwo+ICsgICAgcmV0dXJuIHJj Owo+ICt9Cj4gKwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczov L2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==