From mboxrd@z Thu Jan 1 00:00:00 1970 From: Olaf Hering Subject: [PATCH v8 2/3] tools/libxc: add API for bitmap access for restore Date: Fri, 1 Sep 2017 10:21:48 +0200 Message-ID: <20170901082149.6355-3-olaf@aepfle.de> References: <20170901082149.6355-1-olaf@aepfle.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170901082149.6355-1-olaf@aepfle.de> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org, Andrew Cooper , Ian Jackson , Wei Liu Cc: Olaf Hering List-Id: xen-devel@lists.xenproject.org RXh0ZW5kIEFQSSBmb3IgbWFuYWdpbmcgYml0bWFwcy4gRWFjaCBiaXRtYXAgaXMgbm93IHJlcHJl c2VudGVkIGJ5IGEKZ2VuZXJpYyBzdHJ1Y3QgeGNfc3JfYml0bWFwLgpTd2l0Y2ggdGhlIGV4aXN0 aW5nIHBvcHVsYXRlZF9wZm5zIHRvIHRoaXMgQVBJLgoKU2lnbmVkLW9mZi1ieTogT2xhZiBIZXJp bmcgPG9sYWZAYWVwZmxlLmRlPgpBY2tlZC1ieTogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNv bT4KLS0tCiB0b29scy9saWJ4Yy94Y19zcl9jb21tb24uYyAgfCA0MSArKysrKysrKysrKysrKysr KysrKysrKysrKysKIHRvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oICB8IDY4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogdG9vbHMvbGlieGMveGNfc3JfcmVz dG9yZS5jIHwgNjYgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog MyBmaWxlcyBjaGFuZ2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfc3JfY29tbW9uLmMgYi90b29scy9saWJ4Yy94Y19zcl9j b21tb24uYwppbmRleCA3OWI5YzNlOTQwLi40ZDIyMWNhOTBjIDEwMDY0NAotLS0gYS90b29scy9s aWJ4Yy94Y19zcl9jb21tb24uYworKysgYi90b29scy9saWJ4Yy94Y19zcl9jb21tb24uYwpAQCAt MTU1LDYgKzE1NSw0NyBAQCBzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBidWls ZF9hc3NlcnRpb25zKHZvaWQpCiAgICAgQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgeGNfc3Jf cmVjX2h2bV9wYXJhbXMpICAgICAgICAhPSA4KTsKIH0KIAorLyoKKyAqIEV4cGFuZCB0aGUgdHJh Y2tpbmcgc3RydWN0dXJlcyBhcyBuZWVkZWQuCisgKiBUbyBhdm9pZCByZWFsbG9jKClpbmcgdG9v IGV4Y2Vzc2l2ZWx5LCB0aGUgc2l6ZSBpbmNyZWFzZWQgdG8gdGhlIG5lYXJlc3QgcG93ZXIKKyAq IG9mIHR3byBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGJp dHMuCisgKi8KK2Jvb2wgX3hjX3NyX2JpdG1hcF9yZXNpemUoc3RydWN0IHhjX3NyX2JpdG1hcCAq Ym0sIHVuc2lnbmVkIGxvbmcgYml0cykKK3sKKyAgICBpZiAoYml0cyA+IGJtLT5iaXRzKQorICAg IHsKKyAgICAgICAgc2l6ZV90IG5ld19tYXg7CisgICAgICAgIHNpemVfdCBvbGRfc3osIG5ld19z ejsKKyAgICAgICAgdm9pZCAqcDsKKworICAgICAgICAvKiBSb3VuZCB1cCB0byB0aGUgbmVhcmVz dCBwb3dlciBvZiB0d28gbGFyZ2VyIHRoYW4gYml0LCBsZXNzIDEuICovCisgICAgICAgIG5ld19t YXggPSBiaXRzOworICAgICAgICBuZXdfbWF4IHw9IG5ld19tYXggPj4gMTsKKyAgICAgICAgbmV3 X21heCB8PSBuZXdfbWF4ID4+IDI7CisgICAgICAgIG5ld19tYXggfD0gbmV3X21heCA+PiA0Owor ICAgICAgICBuZXdfbWF4IHw9IG5ld19tYXggPj4gODsKKyAgICAgICAgbmV3X21heCB8PSBuZXdf bWF4ID4+IDE2OworI2lmZGVmIF9feDg2XzY0X18KKyAgICAgICAgbmV3X21heCB8PSBuZXdfbWF4 ID4+IDMyOworI2VuZGlmCisKKyAgICAgICAgb2xkX3N6ID0gYml0bWFwX3NpemUoYm0tPmJpdHMg KyAxKTsKKyAgICAgICAgbmV3X3N6ID0gYml0bWFwX3NpemUobmV3X21heCArIDEpOworICAgICAg ICBwID0gcmVhbGxvYyhibS0+cCwgbmV3X3N6KTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChibS0+cCkKKyAgICAgICAgICAgIG1lbXNl dChwICsgb2xkX3N6LCAwLCBuZXdfc3ogLSBvbGRfc3opOworICAgICAgICBlbHNlCisgICAgICAg ICAgICBtZW1zZXQocCwgMCwgbmV3X3N6KTsKKworICAgICAgICBibS0+cCA9IHA7CisgICAgICAg IGJtLT5iaXRzID0gbmV3X21heDsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKIC8qCiAg KiBMb2NhbCB2YXJpYWJsZXM6CiAgKiBtb2RlOiBDCmRpZmYgLS1naXQgYS90b29scy9saWJ4Yy94 Y19zcl9jb21tb24uaCBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCmluZGV4IGE4M2YyMmFm NGUuLmRhMjY5MWJhNzkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCisr KyBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCkBAIC0xNzIsNiArMTcyLDEyIEBAIHN0cnVj dCB4Y19zcl94ODZfcHZfcmVzdG9yZV92Y3B1CiAgICAgc2l6ZV90IGJhc2ljc3osIGV4dGRzeiwg eHNhdmVzeiwgbXNyc3o7CiB9OwogCitzdHJ1Y3QgeGNfc3JfYml0bWFwCit7CisgICAgdm9pZCAq cDsKKyAgICB1bnNpZ25lZCBsb25nIGJpdHM7Cit9OworCiBzdHJ1Y3QgeGNfc3JfY29udGV4dAog ewogICAgIHhjX2ludGVyZmFjZSAqeGNoOwpAQCAtMjU1LDggKzI2MSw3IEBAIHN0cnVjdCB4Y19z cl9jb250ZXh0CiAgICAgICAgICAgICBkb21pZF90ICAgICAgeGVuc3RvcmVfZG9taWQsICBjb25z b2xlX2RvbWlkOwogCiAgICAgICAgICAgICAvKiBCaXRtYXAgb2YgY3VycmVudGx5IHBvcHVsYXRl ZCBQRk5zIGR1cmluZyByZXN0b3JlLiAqLwotICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqcG9w dWxhdGVkX3BmbnM7Ci0gICAgICAgICAgICB4ZW5fcGZuX3QgbWF4X3BvcHVsYXRlZF9wZm47Cisg ICAgICAgICAgICBzdHJ1Y3QgeGNfc3JfYml0bWFwIHBvcHVsYXRlZF9wZm5zOwogCiAgICAgICAg ICAgICAvKiBTZW5kZXIgaGFzIGludm9rZWQgdmVyaWZ5IG1vZGUgb24gdGhlIHN0cmVhbS4gKi8K ICAgICAgICAgICAgIGJvb2wgdmVyaWZ5OwpAQCAtMzQzLDYgKzM0OCw2NSBAQCBleHRlcm4gc3Ry dWN0IHhjX3NyX3NhdmVfb3BzIHNhdmVfb3BzX3g4Nl9odm07CiBleHRlcm4gc3RydWN0IHhjX3Ny X3Jlc3RvcmVfb3BzIHJlc3RvcmVfb3BzX3g4Nl9wdjsKIGV4dGVybiBzdHJ1Y3QgeGNfc3JfcmVz dG9yZV9vcHMgcmVzdG9yZV9vcHNfeDg2X2h2bTsKIAorZXh0ZXJuIGJvb2wgX3hjX3NyX2JpdG1h cF9yZXNpemUoc3RydWN0IHhjX3NyX2JpdG1hcCAqYm0sIHVuc2lnbmVkIGxvbmcgYml0cyk7CisK K3N0YXRpYyBpbmxpbmUgYm9vbCB4Y19zcl9iaXRtYXBfcmVzaXplKHN0cnVjdCB4Y19zcl9iaXRt YXAgKmJtLCB1bnNpZ25lZCBsb25nIGJpdHMpCit7CisgICAgaWYgKGJpdHMgPiBibS0+Yml0cykK KyAgICAgICAgcmV0dXJuIF94Y19zcl9iaXRtYXBfcmVzaXplKGJtLCBiaXRzKTsKKyAgICByZXR1 cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHhjX3NyX2JpdG1hcF9mcmVlKHN0cnVj dCB4Y19zcl9iaXRtYXAgKmJtKQoreworICAgIGZyZWUoYm0tPnApOworICAgIGJtLT5wID0gTlVM TDsKK30KKworc3RhdGljIGlubGluZSBib29sIHhjX3NyX3NldF9iaXQodW5zaWduZWQgbG9uZyBi aXQsIHN0cnVjdCB4Y19zcl9iaXRtYXAgKmJtKQoreworICAgIGlmICgheGNfc3JfYml0bWFwX3Jl c2l6ZShibSwgYml0KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2V0X2JpdChiaXQs IGJtLT5wKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGlubGluZSBib29sIHhjX3Ny X3Rlc3RfYml0KHVuc2lnbmVkIGxvbmcgYml0LCBzdHJ1Y3QgeGNfc3JfYml0bWFwICpibSkKK3sK KyAgICBpZiAoYml0ID4gYm0tPmJpdHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1 cm4gISF0ZXN0X2JpdChiaXQsIGJtLT5wKTsKK30KKworc3RhdGljIGlubGluZSBpbnQgeGNfc3Jf dGVzdF9hbmRfY2xlYXJfYml0KHVuc2lnbmVkIGxvbmcgYml0LCBzdHJ1Y3QgeGNfc3JfYml0bWFw ICpibSkKK3sKKyAgICByZXR1cm4gdGVzdF9hbmRfY2xlYXJfYml0KGJpdCwgYm0tPnApOworfQor CitzdGF0aWMgaW5saW5lIGludCB4Y19zcl90ZXN0X2FuZF9zZXRfYml0KHVuc2lnbmVkIGxvbmcg Yml0LCBzdHJ1Y3QgeGNfc3JfYml0bWFwICpibSkKK3sKKyAgICByZXR1cm4gdGVzdF9hbmRfc2V0 X2JpdChiaXQsIGJtLT5wKTsKK30KKworc3RhdGljIGlubGluZSBib29sIHBmbl9pc19wb3B1bGF0 ZWQoc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwgeGVuX3Bmbl90IHBmbikKK3sKKyAgICByZXR1 cm4geGNfc3JfdGVzdF9iaXQocGZuLCAmY3R4LT5yZXN0b3JlLnBvcHVsYXRlZF9wZm5zKTsKK30K Kworc3RhdGljIGlubGluZSBpbnQgcGZuX3NldF9wb3B1bGF0ZWQoc3RydWN0IHhjX3NyX2NvbnRl eHQgKmN0eCwgeGVuX3Bmbl90IHBmbikKK3sKKyAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGN0eC0+ eGNoOworCisgICAgaWYgKCAheGNfc3Jfc2V0X2JpdChwZm4sICZjdHgtPnJlc3RvcmUucG9wdWxh dGVkX3BmbnMpICkKKyAgICB7CisgICAgICAgIEVSUk9SKCJGYWlsZWQgdG8gcmVhbGxvYyBwb3B1 bGF0ZWRfcGZucyBiaXRtYXAiKTsKKyAgICAgICAgZXJybm8gPSBFTk9NRU07CisgICAgICAgIHJl dHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0cnVjdCB4Y19zcl9yZWNvcmQK IHsKICAgICB1aW50MzJfdCB0eXBlOwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGNfc3JfcmVz dG9yZS5jIGIvdG9vbHMvbGlieGMveGNfc3JfcmVzdG9yZS5jCmluZGV4IGEwMTY2NzgzMzIuLmQ1 Mzk0OGUxYTYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3NyX3Jlc3RvcmUuYworKysgYi90 b29scy9saWJ4Yy94Y19zcl9yZXN0b3JlLmMKQEAgLTY4LDY0ICs2OCw2IEBAIHN0YXRpYyBpbnQg cmVhZF9oZWFkZXJzKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiAgICAgcmV0dXJuIDA7CiB9 CiAKLS8qCi0gKiBJcyBhIHBmbiBwb3B1bGF0ZWQ/Ci0gKi8KLXN0YXRpYyBib29sIHBmbl9pc19w b3B1bGF0ZWQoY29uc3Qgc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwgeGVuX3Bmbl90IHBmbikK LXsKLSAgICBpZiAoIHBmbiA+IGN0eC0+cmVzdG9yZS5tYXhfcG9wdWxhdGVkX3BmbiApCi0gICAg ICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdGVzdF9iaXQocGZuLCBjdHgtPnJlc3RvcmUu cG9wdWxhdGVkX3BmbnMpOwotfQotCi0vKgotICogU2V0IGEgcGZuIGFzIHBvcHVsYXRlZCwgZXhw YW5kaW5nIHRoZSB0cmFja2luZyBzdHJ1Y3R1cmVzIGlmIG5lZWRlZC4gVG8KLSAqIGF2b2lkIHJl YWxsb2MoKWluZyB0b28gZXhjZXNzaXZlbHksIHRoZSBzaXplIGluY3JlYXNlZCB0byB0aGUgbmVh cmVzdCBwb3dlcgotICogb2YgdHdvIGxhcmdlIGVub3VnaCB0byBjb250YWluIHRoZSByZXF1aXJl ZCBwZm4uCi0gKi8KLXN0YXRpYyBpbnQgcGZuX3NldF9wb3B1bGF0ZWQoc3RydWN0IHhjX3NyX2Nv bnRleHQgKmN0eCwgeGVuX3Bmbl90IHBmbikKLXsKLSAgICB4Y19pbnRlcmZhY2UgKnhjaCA9IGN0 eC0+eGNoOwotCi0gICAgaWYgKCBwZm4gPiBjdHgtPnJlc3RvcmUubWF4X3BvcHVsYXRlZF9wZm4g KQotICAgIHsKLSAgICAgICAgeGVuX3Bmbl90IG5ld19tYXg7Ci0gICAgICAgIHNpemVfdCBvbGRf c3osIG5ld19zejsKLSAgICAgICAgdW5zaWduZWQgbG9uZyAqcDsKLQotICAgICAgICAvKiBSb3Vu ZCB1cCB0byB0aGUgbmVhcmVzdCBwb3dlciBvZiB0d28gbGFyZ2VyIHRoYW4gcGZuLCBsZXNzIDEu ICovCi0gICAgICAgIG5ld19tYXggPSBwZm47Ci0gICAgICAgIG5ld19tYXggfD0gbmV3X21heCA+ PiAxOwotICAgICAgICBuZXdfbWF4IHw9IG5ld19tYXggPj4gMjsKLSAgICAgICAgbmV3X21heCB8 PSBuZXdfbWF4ID4+IDQ7Ci0gICAgICAgIG5ld19tYXggfD0gbmV3X21heCA+PiA4OwotICAgICAg ICBuZXdfbWF4IHw9IG5ld19tYXggPj4gMTY7Ci0jaWZkZWYgX194ODZfNjRfXwotICAgICAgICBu ZXdfbWF4IHw9IG5ld19tYXggPj4gMzI7Ci0jZW5kaWYKLQotICAgICAgICBvbGRfc3ogPSBiaXRt YXBfc2l6ZShjdHgtPnJlc3RvcmUubWF4X3BvcHVsYXRlZF9wZm4gKyAxKTsKLSAgICAgICAgbmV3 X3N6ID0gYml0bWFwX3NpemUobmV3X21heCArIDEpOwotICAgICAgICBwID0gcmVhbGxvYyhjdHgt PnJlc3RvcmUucG9wdWxhdGVkX3BmbnMsIG5ld19zeik7Ci0gICAgICAgIGlmICggIXAgKQotICAg ICAgICB7Ci0gICAgICAgICAgICBFUlJPUigiRmFpbGVkIHRvIHJlYWxsb2MgcG9wdWxhdGVkIGJp dG1hcCIpOwotICAgICAgICAgICAgZXJybm8gPSBFTk9NRU07Ci0gICAgICAgICAgICByZXR1cm4g LTE7Ci0gICAgICAgIH0KLQotICAgICAgICBtZW1zZXQoKHVpbnQ4X3QgKilwICsgb2xkX3N6LCAw eDAwLCBuZXdfc3ogLSBvbGRfc3opOwotCi0gICAgICAgIGN0eC0+cmVzdG9yZS5wb3B1bGF0ZWRf cGZucyAgICA9IHA7Ci0gICAgICAgIGN0eC0+cmVzdG9yZS5tYXhfcG9wdWxhdGVkX3BmbiA9IG5l d19tYXg7Ci0gICAgfQotCi0gICAgYXNzZXJ0KCF0ZXN0X2JpdChwZm4sIGN0eC0+cmVzdG9yZS5w b3B1bGF0ZWRfcGZucykpOwotICAgIHNldF9iaXQocGZuLCBjdHgtPnJlc3RvcmUucG9wdWxhdGVk X3BmbnMpOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KIC8qCiAgKiBHaXZlbiBhIHNldCBvZiBwZm5z LCBvYnRhaW4gbWVtb3J5IGZyb20gWGVuIHRvIGZpbGwgdGhlIHBoeXNtYXAgZm9yIHRoZQogICog dW5wb3B1bGF0ZWQgc3Vic2V0LiAgSWYgdHlwZXMgaXMgTlVMTCwgbm8gcGFnZSB0eXBlIGNoZWNr aW5nIGlzIHBlcmZvcm1lZApAQCAtNjg0LDEwICs2MjYsOCBAQCBzdGF0aWMgaW50IHNldHVwKHN0 cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiAgICAgaWYgKCByYyApCiAgICAgICAgIGdvdG8gZXJy OwogCi0gICAgY3R4LT5yZXN0b3JlLm1heF9wb3B1bGF0ZWRfcGZuID0gKDMyICogMTAyNCAvIDQp IC0gMTsKLSAgICBjdHgtPnJlc3RvcmUucG9wdWxhdGVkX3BmbnMgPSBiaXRtYXBfYWxsb2MoCi0g ICAgICAgIGN0eC0+cmVzdG9yZS5tYXhfcG9wdWxhdGVkX3BmbiArIDEpOwotICAgIGlmICggIWN0 eC0+cmVzdG9yZS5wb3B1bGF0ZWRfcGZucyApCisgICAgcmMgPSAheGNfc3JfYml0bWFwX3Jlc2l6 ZSgmY3R4LT5yZXN0b3JlLnBvcHVsYXRlZF9wZm5zLCAzMiAqIDEwMjQgLyA0KTsKKyAgICBpZiAo IHJjICkKICAgICB7CiAgICAgICAgIEVSUk9SKCJVbmFibGUgdG8gYWxsb2NhdGUgbWVtb3J5IGZv ciBwb3B1bGF0ZWRfcGZucyBiaXRtYXAiKTsKICAgICAgICAgcmMgPSAtMTsKQEAgLTcyMiw3ICs2 NjIsNyBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpjdHgpCiAg ICAgICAgIHhjX2h5cGVyY2FsbF9idWZmZXJfZnJlZV9wYWdlcyh4Y2gsIGRpcnR5X2JpdG1hcCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlJQQUdFUyhiaXRtYXBfc2l6ZShj dHgtPnJlc3RvcmUucDJtX3NpemUpKSk7CiAgICAgZnJlZShjdHgtPnJlc3RvcmUuYnVmZmVyZWRf cmVjb3Jkcyk7Ci0gICAgZnJlZShjdHgtPnJlc3RvcmUucG9wdWxhdGVkX3BmbnMpOworICAgIHhj X3NyX2JpdG1hcF9mcmVlKCZjdHgtPnJlc3RvcmUucG9wdWxhdGVkX3BmbnMpOwogICAgIGlmICgg Y3R4LT5yZXN0b3JlLm9wcy5jbGVhbnVwKGN0eCkgKQogICAgICAgICBQRVJST1IoIkZhaWxlZCB0 byBjbGVhbiB1cCIpOwogfQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpo dHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==