From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joshua Otto Subject: [PATCH RFC 09/20] libxc/xc_sr_save: introduce save batch types Date: Mon, 27 Mar 2017 05:06:21 -0400 Message-ID: <1490605592-12189-10-git-send-email-jtotto@uwaterloo.ca> References: <1490605592-12189-1-git-send-email-jtotto@uwaterloo.ca> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1csQdv-0005Pv-DG for xen-devel@lists.xenproject.org; Mon, 27 Mar 2017 09:08:51 +0000 In-Reply-To: <1490605592-12189-1-git-send-email-jtotto@uwaterloo.ca> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, czylin@uwaterloo.ca, Joshua Otto , imhy.yang@gmail.com, hjarmstr@uwaterloo.ca List-Id: xen-devel@lists.xenproject.org VG8gd3JpdGUgZ3Vlc3QgcGFnZXMgaW50byB0aGUgc3RyZWFtLCB0aGUgc2F2ZSBsb2dpYyBidWls ZHMgdXAgYmF0Y2hlcwpvZiBwZm5zIHRvIGJlIHdyaXR0ZW4gYW5kIHBlcmZvcm1zIGFsbCBvZiB0 aGUgd29yayBuZWNlc3NhcnkgdG8gd3JpdGUKdGhlbSB3aGVuZXZlciBhIGZ1bGwgYmF0Y2ggaGFz IGJlZW4gYWNjdW11bGF0ZWQuICBXcml0aW5nIGEgUEFHRV9EQVRBCmJhdGNoIGVudGFpbHMgZGV0 ZXJtaW5pbmcgdGhlIHR5cGVzIG9mIGFsbCBwZm5zIGluIHRoZSBiYXRjaCwgbWFwcGluZwp0aGUg c3Vic2V0IG9mIHBmbnMgdGhhdCBhcmUgYmFja2VkIGJ5IHJlYWwgbWVtb3J5IGNvbnN0cnVjdGlu ZyBhClBBR0VfREFUQSByZWNvcmQgZGVzY3JpYmluZyB0aGUgYmF0Y2ggYW5kIHdyaXRpbmcgZXZl cnl0aGluZyBpbnRvIHRoZQpzdHJlYW0uCgpQb3N0Y29weSBsaXZlIG1pZ3JhdGlvbiBpbnRyb2R1 Y2VzIHNldmVyYWwgbmV3IHR5cGVzIG9mIGJhdGNoZXMuICBUbwplbmFibGUgdGhlIHBvc3Rjb3B5 IGxvZ2ljIHRvIHJlLXVzZSB0aGUgYnVsayBvZiB0aGUgY29kZSB1c2VkIHRvIG1hbmFnZQphbmQg d3JpdGUgUEFHRV9EQVRBIHJlY29yZHMsIGludHJvZHVjZSBhIGJhdGNoX3R5cGUgbWVtYmVyIHRv IHRoZSBzYXZlCmNvbnRleHQgKHdoaWNoIGZvciBub3cgY2FuIHRha2Ugb24gb25seSBhIHNpbmds ZSB2YWx1ZSksIGFuZCByZWZhY3Rvcgp3cml0ZV9iYXRjaCgpIHRvIHRha2UgdGhlIGJhdGNoX3R5 cGUgaW50byBhY2NvdW50IHdoZW4gcHJlcGFyaW5nIGFuZAp3cml0aW5nIGVhY2ggcmVjb3JkLgoK V2hpbGUgcmVmYWN0b3Jpbmcgd3JpdGVfYmF0Y2goKSwgZmFjdG9yIHRoZSBvcGVyYXRpb24gb2Yg cXVlcnlpbmcgdGhlCnBhZ2UgdHlwZXMgb2YgYSBiYXRjaCBpbnRvIGEgc3Vicm91dGluZSB0aGF0 IGlzIHVzZWFibGUgaW5kZXBlbmRlbnRseSBvZgp3cml0ZV9iYXRjaCgpLgoKTm8gZnVuY3Rpb25h bCBjaGFuZ2UuCgpTaWduZWQtb2ZmLWJ5OiBKb3NodWEgT3R0byA8anRvdHRvQHV3YXRlcmxvby5j YT4KLS0tCiB0b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCAgICB8ICAgMyArCiB0b29scy9saWJ4 Yy94Y19zcl9zYXZlLmMgICAgICB8IDIxNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KIHRvb2xzL2xpYnhjL3hnX3NhdmVfcmVzdG9yZS5oIHwgICAyICstCiAzIGZp bGVzIGNoYW5nZWQsIDE1MSBpbnNlcnRpb25zKCspLCA3MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS90b29scy9saWJ4Yy94Y19zcl9jb21tb24uaCBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1v bi5oCmluZGV4IGE5MTYwYmQuLmVlNDYzZDkgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhjL3hjX3Ny X2NvbW1vbi5oCisrKyBiL3Rvb2xzL2xpYnhjL3hjX3NyX2NvbW1vbi5oCkBAIC0yMDMsNiArMjAz LDkgQEAgc3RydWN0IHhjX3NyX2NvbnRleHQKICAgICAgICAgICAgIHN0cnVjdCBwcmVjb3B5X3N0 YXRzIHN0YXRzOwogICAgICAgICAgICAgaW50IHBvbGljeV9kZWNpc2lvbjsKIAorICAgICAgICAg ICAgZW51bSB7CisgICAgICAgICAgICAgICAgWENfU1JfU0FWRV9CQVRDSF9QUkVDT1BZX1BBR0UK KyAgICAgICAgICAgIH0gYmF0Y2hfdHlwZTsKICAgICAgICAgICAgIHhlbl9wZm5fdCAqYmF0Y2hf cGZuczsKICAgICAgICAgICAgIHVuc2lnbmVkIG5yX2JhdGNoX3BmbnM7CiAgICAgICAgICAgICB1 bnNpZ25lZCBsb25nICpkZWZlcnJlZF9wYWdlczsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhjL3hj X3NyX3NhdmUuYyBiL3Rvb2xzL2xpYnhjL3hjX3NyX3NhdmUuYwppbmRleCBlYjk1MzM0Li5hYzk3 ZDkzIDEwMDY0NAotLS0gYS90b29scy9saWJ4Yy94Y19zcl9zYXZlLmMKKysrIGIvdG9vbHMvbGli eGMveGNfc3Jfc2F2ZS5jCkBAIC0zLDYgKzMsMjMgQEAKIAogI2luY2x1ZGUgInhjX3NyX2NvbW1v bi5oIgogCisjZGVmaW5lIE1BWF9CQVRDSF9TSVpFIE1BWF9QUkVDT1BZX0JBVENIX1NJWkUKKwor c3RhdGljIGNvbnN0IHVuc2lnbmVkIGJhdGNoX3NpemVzW10gPQoreworICAgIFtYQ19TUl9TQVZF X0JBVENIX1BSRUNPUFlfUEFHRV0gID0gTUFYX1BSRUNPUFlfQkFUQ0hfU0laRQorfTsKKworc3Rh dGljIGNvbnN0IGJvb2wgYmF0Y2hfaW5jbHVkZXNfY29udGVudHNbXSA9Cit7CisgICAgW1hDX1NS X1NBVkVfQkFUQ0hfUFJFQ09QWV9QQUdFXSA9IHRydWUKK307CisKK3N0YXRpYyBjb25zdCB1aW50 MzJfdCBiYXRjaF9yZWNfdHlwZXNbXSA9Cit7CisgICAgW1hDX1NSX1NBVkVfQkFUQ0hfUFJFQ09Q WV9QQUdFXSAgPSBSRUNfVFlQRV9QQUdFX0RBVEEKK307CisKIC8qCiAgKiBXcml0ZXMgYW4gSW1h Z2UgaGVhZGVyIGFuZCBEb21haW4gaGVhZGVyIGludG8gdGhlIHN0cmVhbS4KICAqLwpAQCAtNjEs MTkgKzc4LDgwIEBAIFdSSVRFX1RSSVZJQUxfUkVDT1JEX0ZOKGVuZCwgICAgICAgICAgICAgICAg IFJFQ19UWVBFX0VORCk7CiBXUklURV9UUklWSUFMX1JFQ09SRF9GTihjaGVja3BvaW50LCAgICAg ICAgICBSRUNfVFlQRV9DSEVDS1BPSU5UKTsKIAogLyoKKyAqIFRoaXMgZnVuY3Rpb246CisgKiAt IG1hcHMgZWFjaCBwZm4gaW4gdGhlIGN1cnJlbnQgYmF0Y2ggdG8gaXRzIGdmbgorICogLSBnZXRz IHRoZSB0eXBlIG9mIGVhY2ggcGZuIGluIHRoZSBiYXRjaC4KKyAqCisgKiBUaGUgY2FsbGVyIG11 c3QgZnJlZSgpIGJvdGggb2YgdGhlIHJldHVybmVkIGJ1ZmZlcnMuICBCb3RoIHBvaW50ZXJzIGFy ZSBzYWZlCisgKiB0byBmcmVlKCkgYWZ0ZXIgZmFpbHVyZS4KKyAqLworc3RhdGljIGludCBnZXRf YmF0Y2hfaW5mbyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBPVVQgKi8geGVuX3Bmbl90ICoqcF9tZm5zLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAvKiBPVVQgKi8geGVuX3Bmbl90ICoqcF90eXBlcykKK3sKKyAgICBpbnQgcmMgPSAt MTsKKyAgICB1bnNpZ25lZCBucl9wZm5zID0gY3R4LT5zYXZlLm5yX2JhdGNoX3BmbnM7CisgICAg eGNfaW50ZXJmYWNlICp4Y2ggPSBjdHgtPnhjaDsKKyAgICB4ZW5fcGZuX3QgKm1mbnMsICp0eXBl czsKKyAgICB1bnNpZ25lZCBpOworCisgICAgYXNzZXJ0KHBfbWZucyk7CisgICAgYXNzZXJ0KHBf dHlwZXMpOworCisgICAgKnBfbWZucyA9IG1mbnMgPSBtYWxsb2MobnJfcGZucyAqIHNpemVvZigq bWZucykpOworICAgICpwX3R5cGVzID0gdHlwZXMgPSBtYWxsb2MobnJfcGZucyAqIHNpemVvZigq dHlwZXMpKTsKKworICAgIGlmICggIW1mbnMgfHwgIXR5cGVzICkKKyAgICB7CisgICAgICAgIEVS Uk9SKCJVbmFibGUgdG8gYWxsb2NhdGUgYXJyYXlzIGZvciBhIGJhdGNoIG9mICV1IHBhZ2VzIiwK KyAgICAgICAgICAgICAgbnJfcGZucyk7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAg IGZvciAoIGkgPSAwOyBpIDwgbnJfcGZuczsgKytpICkKKyAgICAgICAgdHlwZXNbaV0gPSBtZm5z W2ldID0gY3R4LT5zYXZlLm9wcy5wZm5fdG9fZ2ZuKGN0eCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eC0+c2F2ZS5iYXRjaF9wZm5zW2ld KTsKKworICAgIC8qIFRoZSB0eXBlIHF1ZXJ5IGRvbWN0bCBhY2NlcHRzIGJhdGNoZXMgb2YgYXQg bW9zdCAxMDI0IHBmbnMsIHNvIHdlIG5lZWQgdG8KKyAgICAgKiBicmVhayBvdXIgYmF0Y2ggaGVy ZSBpbnRvIGFwcHJvcHJpYXRlbHktc2l6ZWQgc3ViLWJhdGNoZXMuICovCisgICAgZm9yICggaSA9 IDA7IGkgPCBucl9wZm5zOyBpICs9IDEwMjQgKQorICAgIHsKKyAgICAgICAgcmMgPSB4Y19nZXRf cGZuX3R5cGVfYmF0Y2goeGNoLCBjdHgtPmRvbWlkLCBtaW4oMTAyNFUsIG5yX3BmbnMgLSBpKSwg JnR5cGVzW2ldKTsKKyAgICAgICAgaWYgKCByYyApCisgICAgICAgIHsKKyAgICAgICAgICAgIFBF UlJPUigiRmFpbGVkIHRvIGdldCB0eXBlcyBmb3IgcGZuIGJhdGNoIik7CisgICAgICAgICAgICBn b3RvIGVycjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJjID0gMDsKKyAgICBnb3RvIGRvbmU7 CisKKyBlcnI6CisgICAgZnJlZShtZm5zKTsKKyAgICAqcF9tZm5zID0gTlVMTDsKKworICAgIGZy ZWUodHlwZXMpOworICAgICpwX3R5cGVzID0gTlVMTDsKKworIGRvbmU6CisgICAgcmV0dXJuIHJj OworfQorCisvKgogICogV3JpdGVzIGEgYmF0Y2ggb2YgbWVtb3J5IGFzIGEgUEFHRV9EQVRBIHJl Y29yZCBpbnRvIHRoZSBzdHJlYW0uICBUaGUgYmF0Y2gKICAqIGlzIGNvbnN0cnVjdGVkIGluIGN0 eC0+c2F2ZS5iYXRjaF9wZm5zLgogICoKICAqIFRoaXMgZnVuY3Rpb246Ci0gKiAtIGdldHMgdGhl IHR5cGVzIGZvciBlYWNoIHBmbiBpbiB0aGUgYmF0Y2guCiAgKiAtIGZvciBlYWNoIHBmbiB3aXRo IHJlYWwgZGF0YToKICAqICAgLSBtYXBzIGFuZCBhdHRlbXB0cyB0byBsb2NhbGlzZSB0aGUgcGFn ZXMuCiAgKiAtIGNvbnN0cnVjdCBhbmQgd3JpdGVzIGEgUEFHRV9EQVRBIHJlY29yZCBpbnRvIHRo ZSBzdHJlYW0uCiAgKi8KLXN0YXRpYyBpbnQgd3JpdGVfYmF0Y2goc3RydWN0IHhjX3NyX2NvbnRl eHQgKmN0eCkKK3N0YXRpYyBpbnQgd3JpdGVfYmF0Y2goc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0 eCwgeGVuX3Bmbl90ICptZm5zLAorICAgICAgICAgICAgICAgICAgICAgICB4ZW5fcGZuX3QgKnR5 cGVzKQogewogICAgIHhjX2ludGVyZmFjZSAqeGNoID0gY3R4LT54Y2g7Ci0gICAgeGVuX3Bmbl90 ICptZm5zID0gTlVMTCwgKnR5cGVzID0gTlVMTDsKKyAgICB4ZW5fcGZuX3QgKmJtZm5zID0gTlVM TDsKICAgICB2b2lkICpndWVzdF9tYXBwaW5nID0gTlVMTDsKICAgICB2b2lkICoqZ3Vlc3RfZGF0 YSA9IE5VTEw7CiAgICAgdm9pZCAqKmxvY2FsX3BhZ2VzID0gTlVMTDsKQEAgLTg0LDE3ICsxNjIs MTYgQEAgc3RhdGljIGludCB3cml0ZV9iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQog ICAgIHVpbnQ2NF90ICpyZWNfcGZucyA9IE5VTEw7CiAgICAgc3RydWN0IGlvdmVjICppb3YgPSBO VUxMOyBpbnQgaW92Y250ID0gMDsKICAgICBzdHJ1Y3QgeGNfc3JfcmVjX3BhZ2VzX2hlYWRlciBo ZHIgPSB7IDAgfTsKKyAgICBib29sIHNlbmRfcGFnZV9jb250ZW50cyA9IGJhdGNoX2luY2x1ZGVz X2NvbnRlbnRzW2N0eC0+c2F2ZS5iYXRjaF90eXBlXTsKICAgICBzdHJ1Y3QgeGNfc3JfcmVjb3Jk IHJlYyA9CiAgICAgewotICAgICAgICAudHlwZSA9IFJFQ19UWVBFX1BBR0VfREFUQSwKKyAgICAg ICAgLnR5cGUgPSBiYXRjaF9yZWNfdHlwZXNbY3R4LT5zYXZlLmJhdGNoX3R5cGVdLAogICAgIH07 CiAKICAgICBhc3NlcnQobnJfcGZucyAhPSAwKTsKIAotICAgIC8qIE1mbnMgb2YgdGhlIGJhdGNo IHBmbnMuICovCi0gICAgbWZucyA9IG1hbGxvYyhucl9wZm5zICogc2l6ZW9mKCptZm5zKSk7Ci0g ICAgLyogVHlwZXMgb2YgdGhlIGJhdGNoIHBmbnMuICovCi0gICAgdHlwZXMgPSBtYWxsb2MobnJf cGZucyAqIHNpemVvZigqdHlwZXMpKTsKKyAgICAvKiBUaGUgc3Vic2V0IG9mIG1mbnMgdGhhdCBh cmUgcGh5c2ljYWxseS1iYWNrZWQuICovCisgICAgYm1mbnMgPSBtYWxsb2MobnJfcGZucyAqIHNp emVvZigqYm1mbnMpKTsKICAgICAvKiBFcnJvcnMgZnJvbSBhdHRlbXB0aW5nIHRvIG1hcCB0aGUg Z2Zucy4gKi8KICAgICBlcnJvcnMgPSBtYWxsb2MobnJfcGZucyAqIHNpemVvZigqZXJyb3JzKSk7 CiAgICAgLyogUG9pbnRlcnMgdG8gcGFnZSBkYXRhIHRvIHNlbmQuICBNYXBwZWQgZ2ZucyBvciBs b2NhbCBhbGxvY2F0aW9ucy4gKi8KQEAgLTEwNCwxOSArMTgxLDE2IEBAIHN0YXRpYyBpbnQgd3Jp dGVfYmF0Y2goc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCkKICAgICAvKiBpb3ZlY1tdIGZvciB3 cml0ZXYoKS4gKi8KICAgICBpb3YgPSBtYWxsb2MoKG5yX3BmbnMgKyA0KSAqIHNpemVvZigqaW92 KSk7CiAKLSAgICBpZiAoICFtZm5zIHx8ICF0eXBlcyB8fCAhZXJyb3JzIHx8ICFndWVzdF9kYXRh IHx8ICFsb2NhbF9wYWdlcyB8fCAhaW92ICkKKyAgICBpZiAoICFibWZucyB8fCAhZXJyb3JzIHx8 ICFndWVzdF9kYXRhIHx8ICFsb2NhbF9wYWdlcyB8fCAhaW92ICkKICAgICB7CiAgICAgICAgIEVS Uk9SKCJVbmFibGUgdG8gYWxsb2NhdGUgYXJyYXlzIGZvciBhIGJhdGNoIG9mICV1IHBhZ2VzIiwK ICAgICAgICAgICAgICAgbnJfcGZucyk7CiAgICAgICAgIGdvdG8gZXJyOwogICAgIH0KIAorICAg IC8qIE1hcmsgbGlrZWx5LWJhbGxvb25lZCBwYWdlcyBhcyBkZWZlcnJlZC4gKi8KICAgICBmb3Ig KCBpID0gMDsgaSA8IG5yX3BmbnM7ICsraSApCiAgICAgewotICAgICAgICB0eXBlc1tpXSA9IG1m bnNbaV0gPSBjdHgtPnNhdmUub3BzLnBmbl90b19nZm4oY3R4LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LT5zYXZlLmJhdGNoX3BmbnNb aV0pOwotCi0gICAgICAgIC8qIExpa2VseSBhIGJhbGxvb25lZCBwYWdlLiAqLwogICAgICAgICBp ZiAoIG1mbnNbaV0gPT0gSU5WQUxJRF9NRk4gKQogICAgICAgICB7CiAgICAgICAgICAgICBzZXRf Yml0KGN0eC0+c2F2ZS5iYXRjaF9wZm5zW2ldLCBjdHgtPnNhdmUuZGVmZXJyZWRfcGFnZXMpOwpA QCAtMTI0LDM5ICsxOTgsOSBAQCBzdGF0aWMgaW50IHdyaXRlX2JhdGNoKHN0cnVjdCB4Y19zcl9j b250ZXh0ICpjdHgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByYyA9IHhjX2dldF9wZm5fdHlw ZV9iYXRjaCh4Y2gsIGN0eC0+ZG9taWQsIG5yX3BmbnMsIHR5cGVzKTsKLSAgICBpZiAoIHJjICkK LSAgICB7Ci0gICAgICAgIFBFUlJPUigiRmFpbGVkIHRvIGdldCB0eXBlcyBmb3IgcGZuIGJhdGNo Iik7Ci0gICAgICAgIGdvdG8gZXJyOwotICAgIH0KLSAgICByYyA9IC0xOwotCi0gICAgZm9yICgg aSA9IDA7IGkgPCBucl9wZm5zOyArK2kgKQotICAgIHsKLSAgICAgICAgc3dpdGNoICggdHlwZXNb aV0gKQotICAgICAgICB7Ci0gICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QRklORk9fQlJPS0VOOgot ICAgICAgICBjYXNlIFhFTl9ET01DVExfUEZJTkZPX1hBTExPQzoKLSAgICAgICAgY2FzZSBYRU5f RE9NQ1RMX1BGSU5GT19YVEFCOgotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQot ICAgICAgICBtZm5zW25yX3BhZ2VzKytdID0gbWZuc1tpXTsKLSAgICB9Ci0KLSAgICBpZiAoIG5y X3BhZ2VzID4gMCApCisgICAgaWYgKCBzZW5kX3BhZ2VfY29udGVudHMgKQogICAgIHsKLSAgICAg ICAgZ3Vlc3RfbWFwcGluZyA9IHhlbmZvcmVpZ25tZW1vcnlfbWFwKHhjaC0+Zm1lbSwKLSAgICAg ICAgICAgIGN0eC0+ZG9taWQsIFBST1RfUkVBRCwgbnJfcGFnZXMsIG1mbnMsIGVycm9ycyk7Ci0g ICAgICAgIGlmICggIWd1ZXN0X21hcHBpbmcgKQotICAgICAgICB7Ci0gICAgICAgICAgICBQRVJS T1IoIkZhaWxlZCB0byBtYXAgZ3Vlc3QgcGFnZXMiKTsKLSAgICAgICAgICAgIGdvdG8gZXJyOwot ICAgICAgICB9Ci0gICAgICAgIG5yX3BhZ2VzX21hcHBlZCA9IG5yX3BhZ2VzOwotCi0gICAgICAg IGZvciAoIGkgPSAwLCBwID0gMDsgaSA8IG5yX3BmbnM7ICsraSApCisgICAgICAgIGZvciAoIGkg PSAwOyBpIDwgbnJfcGZuczsgKytpICkKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoICgg dHlwZXNbaV0gKQogICAgICAgICAgICAgewpAQCAtMTY2LDM2ICsyMTAsNjIgQEAgc3RhdGljIGlu dCB3cml0ZV9iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQogICAgICAgICAgICAgICAg IGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoIGVycm9yc1twXSAp CisgICAgICAgICAgICBibWZuc1tucl9wYWdlcysrXSA9IG1mbnNbaV07CisgICAgICAgIH0KKwor ICAgICAgICBpZiAoIG5yX3BhZ2VzID4gMCApCisgICAgICAgIHsKKyAgICAgICAgICAgIGd1ZXN0 X21hcHBpbmcgPSB4ZW5mb3JlaWdubWVtb3J5X21hcCh4Y2gtPmZtZW0sCisgICAgICAgICAgICAg ICAgY3R4LT5kb21pZCwgUFJPVF9SRUFELCBucl9wYWdlcywgYm1mbnMsIGVycm9ycyk7CisgICAg ICAgICAgICBpZiAoICFndWVzdF9tYXBwaW5nICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICBFUlJPUigiTWFwcGluZyBvZiBwZm4gJSMiUFJJcGZuIiAobWZuICUjIlBSSXBmbiIpIGZh aWxlZCAlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgY3R4LT5zYXZlLmJhdGNoX3BmbnNbaV0s IG1mbnNbcF0sIGVycm9yc1twXSk7CisgICAgICAgICAgICAgICAgUEVSUk9SKCJGYWlsZWQgdG8g bWFwIGd1ZXN0IHBhZ2VzIik7CiAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAg ICB9CisgICAgICAgICAgICBucl9wYWdlc19tYXBwZWQgPSBucl9wYWdlczsKIAotICAgICAgICAg ICAgb3JpZ19wYWdlID0gcGFnZSA9IGd1ZXN0X21hcHBpbmcgKyAocCAqIFBBR0VfU0laRSk7Ci0g ICAgICAgICAgICByYyA9IGN0eC0+c2F2ZS5vcHMubm9ybWFsaXNlX3BhZ2UoY3R4LCB0eXBlc1tp XSwgJnBhZ2UpOworICAgICAgICAgICAgZm9yICggaSA9IDAsIHAgPSAwOyBpIDwgbnJfcGZuczsg KytpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCB0eXBlc1tpXSAp CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QRklO Rk9fQlJPS0VOOgorICAgICAgICAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QRklORk9fWEFMTE9D OgorICAgICAgICAgICAgICAgIGNhc2UgWEVOX0RPTUNUTF9QRklORk9fWFRBQjoKKyAgICAgICAg ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg ICAgaWYgKCBlcnJvcnNbcF0gKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg ICAgRVJST1IoIk1hcHBpbmcgb2YgcGZuICUjIlBSSXBmbiIgKG1mbiAlIyJQUklwZm4iKSBmYWls ZWQgJWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgtPnNhdmUuYmF0Y2hfcGZuc1tp XSwgYm1mbnNbcF0sIGVycm9yc1twXSk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwor ICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCBvcmlnX3BhZ2UgIT0gcGFnZSAp Ci0gICAgICAgICAgICAgICAgbG9jYWxfcGFnZXNbaV0gPSBwYWdlOworICAgICAgICAgICAgICAg IG9yaWdfcGFnZSA9IHBhZ2UgPSBndWVzdF9tYXBwaW5nICsgKHAgKiBQQUdFX1NJWkUpOworICAg ICAgICAgICAgICAgIHJjID0gY3R4LT5zYXZlLm9wcy5ub3JtYWxpc2VfcGFnZShjdHgsIHR5cGVz W2ldLCAmcGFnZSk7CiAKLSAgICAgICAgICAgIGlmICggcmMgKQotICAgICAgICAgICAgewotICAg ICAgICAgICAgICAgIGlmICggcmMgPT0gLTEgJiYgZXJybm8gPT0gRUFHQUlOICkKKyAgICAgICAg ICAgICAgICBpZiAoIG9yaWdfcGFnZSAhPSBwYWdlICkKKyAgICAgICAgICAgICAgICAgICAgbG9j YWxfcGFnZXNbaV0gPSBwYWdlOworCisgICAgICAgICAgICAgICAgaWYgKCByYyApCiAgICAgICAg ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzZXRfYml0KGN0eC0+c2F2ZS5iYXRjaF9w Zm5zW2ldLCBjdHgtPnNhdmUuZGVmZXJyZWRfcGFnZXMpOwotICAgICAgICAgICAgICAgICAgICAr K2N0eC0+c2F2ZS5ucl9kZWZlcnJlZF9wYWdlczsKLSAgICAgICAgICAgICAgICAgICAgdHlwZXNb aV0gPSBYRU5fRE9NQ1RMX1BGSU5GT19YVEFCOwotICAgICAgICAgICAgICAgICAgICAtLW5yX3Bh Z2VzOworICAgICAgICAgICAgICAgICAgICBpZiAoIHJjID09IC0xICYmIGVycm5vID09IEVBR0FJ TiApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNldF9i aXQoY3R4LT5zYXZlLmJhdGNoX3BmbnNbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGN0eC0+c2F2ZS5kZWZlcnJlZF9wYWdlcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAr K2N0eC0+c2F2ZS5ucl9kZWZlcnJlZF9wYWdlczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5 cGVzW2ldID0gWEVOX0RPTUNUTF9QRklORk9fWFRBQjsKKyAgICAgICAgICAgICAgICAgICAgICAg IC0tbnJfcGFnZXM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CiAgICAgICAgICAgICAgICAg fQogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7Ci0g ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZ3Vlc3RfZGF0 YVtpXSA9IHBhZ2U7CisgICAgICAgICAgICAgICAgICAgIGd1ZXN0X2RhdGFbaV0gPSBwYWdlOwog Ci0gICAgICAgICAgICByYyA9IC0xOwotICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAg IHJjID0gLTE7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQogICAgICAgICB9 CiAgICAgfQogCkBAIC0yNjQsOCArMzM0LDcgQEAgc3RhdGljIGludCB3cml0ZV9iYXRjaChzdHJ1 Y3QgeGNfc3JfY29udGV4dCAqY3R4KQogICAgIGZyZWUobG9jYWxfcGFnZXMpOwogICAgIGZyZWUo Z3Vlc3RfZGF0YSk7CiAgICAgZnJlZShlcnJvcnMpOwotICAgIGZyZWUodHlwZXMpOwotICAgIGZy ZWUobWZucyk7CisgICAgZnJlZShibWZucyk7CiAKICAgICByZXR1cm4gcmM7CiB9CkBAIC0yNzUs NyArMzQ0LDcgQEAgc3RhdGljIGludCB3cml0ZV9iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAq Y3R4KQogICovCiBzdGF0aWMgYm9vbCBiYXRjaF9mdWxsKHN0cnVjdCB4Y19zcl9jb250ZXh0ICpj dHgpCiB7Ci0gICAgcmV0dXJuIGN0eC0+c2F2ZS5ucl9iYXRjaF9wZm5zID09IE1BWF9CQVRDSF9T SVpFOworICAgIHJldHVybiBjdHgtPnNhdmUubnJfYmF0Y2hfcGZucyA9PSBiYXRjaF9zaXplc1tj dHgtPnNhdmUuYmF0Y2hfdHlwZV07CiB9CiAKIC8qCkBAIC0yOTIsMTEgKzM2MSwxOCBAQCBzdGF0 aWMgYm9vbCBiYXRjaF9lbXB0eShzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQogc3RhdGljIGlu dCBmbHVzaF9iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQogewogICAgIGludCByYyA9 IDA7CisgICAgeGVuX3Bmbl90ICptZm5zID0gTlVMTCwgKnR5cGVzID0gTlVMTDsKIAogICAgIGlm ICggYmF0Y2hfZW1wdHkoY3R4KSApCiAgICAgICAgIHJldHVybiByYzsKIAotICAgIHJjID0gd3Jp dGVfYmF0Y2goY3R4KTsKKyAgICByYyA9IGdldF9iYXRjaF9pbmZvKGN0eCwgJm1mbnMsICZ0eXBl cyk7CisgICAgaWYgKCByYyApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHJjID0gd3JpdGVf YmF0Y2goY3R4LCBtZm5zLCB0eXBlcyk7CisgICAgZnJlZShtZm5zKTsKKyAgICBmcmVlKHR5cGVz KTsKIAogICAgIGlmICggIXJjICkKICAgICB7CkBAIC0zMTMsNyArMzg5LDcgQEAgc3RhdGljIGlu dCBmbHVzaF9iYXRjaChzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4KQogICovCiBzdGF0aWMgdm9p ZCBhZGRfdG9fYmF0Y2goc3RydWN0IHhjX3NyX2NvbnRleHQgKmN0eCwgeGVuX3Bmbl90IHBmbikK IHsKLSAgICBhc3NlcnQoY3R4LT5zYXZlLm5yX2JhdGNoX3BmbnMgPCBNQVhfQkFUQ0hfU0laRSk7 CisgICAgYXNzZXJ0KGN0eC0+c2F2ZS5ucl9iYXRjaF9wZm5zIDwgYmF0Y2hfc2l6ZXNbY3R4LT5z YXZlLmJhdGNoX3R5cGVdKTsKICAgICBjdHgtPnNhdmUuYmF0Y2hfcGZuc1tjdHgtPnNhdmUubnJf YmF0Y2hfcGZucysrXSA9IHBmbjsKIH0KIApAQCAtMzgzLDYgKzQ1OSw3IEBAIHN0YXRpYyBpbnQg c2VuZF9kaXJ0eV9wYWdlcyhzdHJ1Y3QgeGNfc3JfY29udGV4dCAqY3R4LAogICAgIHZvaWQgKmRh dGEgPSBjdHgtPnNhdmUuY2FsbGJhY2tzLT5kYXRhOwogCiAgICAgYXNzZXJ0KGJhdGNoX2VtcHR5 KGN0eCkpOworICAgIGN0eC0+c2F2ZS5iYXRjaF90eXBlID0gWENfU1JfU0FWRV9CQVRDSF9QUkVD T1BZX1BBR0U7CiAgICAgZm9yICggcCA9IDAsIHdyaXR0ZW4gPSAwOyBwIDwgY3R4LT5zYXZlLnAy bV9zaXplOyApCiAgICAgewogICAgICAgICBpZiAoIGN0eC0+c2F2ZS5saXZlICYmIHByZWNvcHkg KQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGMveGdfc2F2ZV9yZXN0b3JlLmggYi90b29scy9saWJ4 Yy94Z19zYXZlX3Jlc3RvcmUuaAppbmRleCAzMDMwODFkLi40MGRlYmY2IDEwMDY0NAotLS0gYS90 b29scy9saWJ4Yy94Z19zYXZlX3Jlc3RvcmUuaAorKysgYi90b29scy9saWJ4Yy94Z19zYXZlX3Jl c3RvcmUuaApAQCAtMjQsNyArMjQsNyBAQAogKiogV2UgcHJvY2VzcyBzYXZlL3Jlc3RvcmUvbWln cmF0ZSBpbiBiYXRjaGVzIG9mIHBhZ2VzOyB0aGUgYmVsb3cKICoqIGRldGVybWluZXMgaG93IG1h bnkgcGFnZXMgd2UgKGF0IG1heGltdW0pIGRlYWwgd2l0aCBpbiBlYWNoIGJhdGNoLgogKi8KLSNk ZWZpbmUgTUFYX0JBVENIX1NJWkUgMTAyNCAgIC8qIHVwIHRvIDEwMjQgcGFnZXMgKDRNQikgYXQg YSB0aW1lICovCisjZGVmaW5lIE1BWF9QUkVDT1BZX0JBVENIX1NJWkUgMTAyNCAgIC8qIHVwIHRv IDEwMjQgcGFnZXMgKDRNQikgYXQgYSB0aW1lICovCiAKIC8qIFdoZW4gcGlubmluZyBwYWdlIHRh YmxlcyBhdCB0aGUgZW5kIG9mIHJlc3RvcmUsIHdlIGFsc28gdXNlIGJhdGNoaW5nLiAqLwogI2Rl ZmluZSBNQVhfUElOX0JBVENIICAxMDI0Ci0tIAoyLjcuNAoKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRl dmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=