From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v8 08/16] x86: implement set value flow for MBA Date: Mon, 16 Oct 2017 11:04:13 +0800 Message-ID: <1508123061-6600-9-git-send-email-yi.y.sun@linux.intel.com> References: <1508123061-6600-1-git-send-email-yi.y.sun@linux.intel.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.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e3w2A-0002Vg-OJ for xen-devel@lists.xenproject.org; Mon, 16 Oct 2017 03:25:42 +0000 In-Reply-To: <1508123061-6600-1-git-send-email-yi.y.sun@linux.intel.com> 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 Liu , Yi Sun , Andrew Cooper , Jan Beulich , Chao Peng , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHNldCB2YWx1ZSBmbG93IGZvciBNQkEgaW5jbHVkaW5nIGl0 cyBjYWxsYmFjawpmdW5jdGlvbiBhbmQgZG9tY3RsIGludGVyZmFjZS4KClNpZ25lZC1vZmYtYnk6 IFlpIFN1biA8eWkueS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KQ0M6IEphbiBCZXVsaWNoIDxq YmV1bGljaEBzdXNlLmNvbT4KQ0M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJp eC5jb20+CkNDOiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgpDQzogUm9nZXIgUGF1IE1v bm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNDOiBDaGFvIFBlbmcgPGNoYW8ucC5wZW5nQGxp bnV4LmludGVsLmNvbT4KCnY4OgogICAgLSByZXN0b3JlIHNvbWUgdW5uZWNlc3NhcnkgY2hhbmdl cyBpbiAnY2F0X2NoZWNrX2NibScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIHVzZSAnZmxzKCknIGJ1dCBub3QgJ2Zsc2woKScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIHVzZSBwbGFpbiAnPScgdG8gYXNzaWduIHZhbHVlIGZvciB0aHJ0bCBp biAnbWJhX3Nhbml0aXplX3RocnRsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK djc6CiAgICAtIGNoYW5nZSBuYW1lIG9mICdjaGVja192YWwnIHRvICdzYW5pdGl6ZScuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGZpeCBjb21tZW50cy4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkIHBhcmVudGhlc2VzIGFuZCBjaGFuZ2Ug Jz09IDAnIHRvICchJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVt b3ZlIHVubmVjZXNzYXJ5IGNoZWNrIG9mICdtYmEudGhydGxfbWF4Jy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGludGVybWVkaWF0ZSB2 YXJpYWJsZSAnbW9kJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVm aW5lIGFuIGFzc2lnbmVtZW50IHNlbnRlbmNlIHRvIHVzZSAnJj0nLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2UgdHlwZSBvZiBsYXN0IHBhcmFtZXRlciBvZiAn c2FuaXRpemUnIHRvICd1aW50MzJfdCcgYW5kCiAgICAgIGFwcGx5IHNhbWUgY2hhbmdlIHRvICdj YXRfY2hlY2tfY2JtJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjY6CiAgICAt IHNwbGl0IGNvLWV4aXN0IGZlYXR1cmVzJyB2YWx1ZXMgc2V0dGluZyBmbG93IHRvIGEgbmV3IHBh dGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZXN0b3JlIGNvZGVz IHJlbGF0ZWQgdG8gJ21iYV9jaGVja190aHJ0bCcgYW5kICdjaGVja192YWx1ZScuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY1OgogICAgLSBhZGp1c3QgcG9zaXRpb24gb2YgJ2Nh dF9jaGVja19jYm0nIHRvIG5vdCB0byBtYWtlIGNoYW5nZXMgc28gYmlnLgogICAgICAoc3VnZ2Vz dGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJlbW92ZSAncHJvcHMnIGZyb20gJ3N0cnVj dCBjb3Nfd3JpdGVfaW5mbycuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkK ICAgIC0gbWFrZSBhIHNpbmdsZSByZXR1cm4gc3RhdGVtZW50IGluICdtYmFfY2hlY2tfdGhydGwn LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2NDoKICAgIC0gcmVtb3ZlICdBTExP Q18nIGZyb20gbWFjcm8gbmFtZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7D qSkKICAgIC0gam9pbiB0d28gY2hlY2tzIGludG8gYSBzaW5nbGUgaWYuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gcmVtb3ZlIHJlZHVuZGFudCBsb2NhbCB2YXJp YWJsZSAnYXJyYXlfbGVuJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2 MzoKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlIHRvIG1ha2UgaXQgY2xlYXIuCiAgICAgIChz dWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gbW9kaWZ5IGZ1bmN0aW9uYWxpdHkg b2YgJ2NoZWNrX3ZhbCcgdG8gbWFrZSBpdCBzaW1wbGUgdG8gb25seSBjaGVjayB2YWx1ZS4KICAg ICAgQ2hhbmdlIHRoZSBsYXN0IHBhcmFtZXRlciB0eXBlIGZyb20gJ3Vuc2lnbmVkIGxvbmcgKicg dG8gJ3Vuc2lnbmVkIGxvbmcnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kp CiAgICAtIGNhbGwgcmRtc3JsIHRvIGdldCB2YWx1ZSBqdXN0IHdyaXR0ZW4gaW50byBNU1IgZm9y IE1CQS4gQmVjYXVzZSBIVyBjYW4KICAgICAgYXV0b21hdGljYWxseSBjaGFuZ2UgaW5wdXQgdmFs dWUgdG8gd2hhdCBpdCB3YW50cy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOp KQogICAgLSBjaGFuZ2UgdHlwZSBvZiAnd3JpdGVfbXNyJyB0byAndWludDMyX3QnIHRvIHJldHVy biB0aGUgdmFsdWUgYWN0dWFsbHkKICAgICAgd3JpdHRlbiBpbnRvIE1TUi4gVGhlbiwgY2hhbmdl ICdkb193cml0ZV9wc3JfbXNycycgdG8gc2V0IHRoZSByZXR1cm5lZAogICAgICB2YWx1ZSBpbnRv ICdjb3NfcmVnX3ZhbFtdJwogICAgLSBtb3ZlIHRoZSBkZWNsYXJhdGlvbiBvZiAnaicgaW50byBs b29wIGluICdkb193cml0ZV9wc3JfbXNycycuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1 IE1vbm7DqSkKICAgIC0gY2hhbmdlICdtYmFfaW5mbycgdG8gJ21iYScuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gY2hhbmdlICdjYXRfaW5mbycgdG8gJ2NhdCcu CiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gcmVuYW1lICdwc3Jf Y2F0L1BTUl9DQVQnIHRvICdwc3JfYWxsb2MvUFNSX0FMTE9DJyBhbmQgcmVtb3ZlICdvcC9PUCcK ICAgICAgZnJvbSBuYW1lLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAg ICAtIGNoYW5nZSAnUFNSX1ZBTF9UWVBFX01CQScgdG8gJ1BTUl9UWVBFX01CQV9USFJUTCcuCiAg ICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjI6CiAgICAtIHJlbW92ZSBsaW5l YXIgbW9kZSAndGhydGxfbWF4JyBjaGVjayBpbiAnbWJhX2NoZWNrX3RocnRsJyBiZWNhdXNlIGl0 IGhhcwogICAgICBiZWVuIGNoZWNrZWQgaW4gJ21iYV9pbml0X2ZlYXR1cmUnLgogICAgICAoc3Vn Z2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0gZm9yIG5vbi1saW5lYXIgbW9kZSwgY2hlY2sgaWYg Jyp0aHJ0bCcgaXMgbm90IDAgaW4gJ21iYV9jaGVja190aHJ0bCcuIElmCiAgICAgIGl0IGlzIDAs IHdlIGRvIG5vdCBuZWVkIHRvIGNoYW5nZSBpdC4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBl bmcpCiAgICAtIG1vdmUgY29tbWVudHMgdG8gZXhwbGFpbiBjaGFuZ2VzIG9mICdjb3Nfd3JpdGVf aW5mbycgZnJvbSBwc3IuYyB0byBjb21taXQKICAgICAgbWVzc2FnZS4KICAgICAgKHN1Z2dlc3Rl ZCBieSBDaGFvIFBlbmcpCi0tLQogeGVuL2FyY2gveDg2L2RvbWN0bC5jICAgICAgIHwgIDYgKysr KysrCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAgICAgICAgfCA0OSArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHhlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCB8 ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94ZW4vYXJjaC94ODYvZG9tY3Rs LmMKaW5kZXggYjcyNmVhZS4uNGJjYTE1ZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbWN0 bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwpAQCAtMTQ2NSw2ICsxNDY1LDEyIEBAIGxv bmcgYXJjaF9kb19kb21jdGwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1JfVFlQ RV9MMl9DQk0pOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgY2FzZSBYRU5fRE9NQ1RM X1BTUl9TRVRfTUJBX1RIUlRMOgorICAgICAgICAgICAgcmV0ID0gcHNyX3NldF92YWwoZCwgZG9t Y3RsLT51LnBzcl9hbGxvYy50YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk b21jdGwtPnUucHNyX2FsbG9jLmRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ U1JfVFlQRV9NQkFfVEhSVEwpOworICAgICAgICAgICAgYnJlYWs7CisKICNkZWZpbmUgZG9tY3Rs X3Bzcl9nZXRfdmFsKGQsIGRvbWN0bCwgdHlwZSwgY29weWJhY2spICh7ICAgIFwKICAgICB1aW50 MzJfdCB2XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAg ICBpbnQgcl8gPSBwc3JfZ2V0X3ZhbCgoZCksIChkb21jdGwpLT51LnBzcl9hbGxvYy50YXJnZXQs IFwKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpp bmRleCA1NDlmMjFiLi4wNGRkNGExIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysr IGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0xMzgsNiArMTM4LDEyIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZmVhdF9wcm9wcyB7CiAKICAgICAvKiB3cml0ZV9tc3IgaXMgdXNlZCB0byB3cml0ZSBv dXQgZmVhdHVyZSBNU1IgcmVnaXN0ZXIuICovCiAgICAgdm9pZCAoKndyaXRlX21zcikodW5zaWdu ZWQgaW50IGNvcywgdWludDMyX3QgdmFsLCBlbnVtIHBzcl90eXBlIHR5cGUpOworCisgICAgLyoK KyAgICAgKiBzYW5pdGl6ZSBpcyB1c2VkIHRvIGNoZWNrIGlmIGlucHV0IHZhbCBmdWxmaWxscyBT RE0gcmVxdWlyZW1lbnQuCisgICAgICogQW5kIGNoYW5nZSBpdCB0byB2YWxpZCB2YWx1ZSBpZiBT RE0gYWxsb3dzLgorICAgICAqLworICAgIGJvb2wgKCpzYW5pdGl6ZSkoY29uc3Qgc3RydWN0IGZl YXRfbm9kZSAqZmVhdCwgdWludDMyX3QgKnZhbCk7CiB9ICpmZWF0X3Byb3BzW0ZFQVRfVFlQRV9O VU1dOwogCiAvKgpAQCAtMjc0LDExICsyODAsMTQgQEAgc3RhdGljIGVudW0gcHNyX2ZlYXRfdHlw ZSBwc3JfdHlwZV90b19mZWF0X3R5cGUoZW51bSBwc3JfdHlwZSB0eXBlKQogICAgIHJldHVybiBm ZWF0X3R5cGU7CiB9CiAKLXN0YXRpYyBib29sIHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50IGNi bV9sZW4sIHVuc2lnbmVkIGxvbmcgY2JtKQorLyogSW1wbGVtZW50YXRpb24gb2YgYWxsb2NhdGlv biBmZWF0dXJlcycgZnVuY3Rpb25zLiAqLworc3RhdGljIGJvb2wgY2F0X2NoZWNrX2NibShjb25z dCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1aW50MzJfdCAqdmFsKQogewogICAgIHVuc2lnbmVk IGludCBmaXJzdF9iaXQsIHplcm9fYml0OworICAgIHVuc2lnbmVkIGludCBjYm1fbGVuID0gZmVh dC0+Y2F0LmNibV9sZW47CisgICAgdW5zaWduZWQgbG9uZyBjYm0gPSAqdmFsOwogCi0gICAgLyog U2V0IGJpdHMgc2hvdWxkIG9ubHkgaW4gdGhlIHJhbmdlIG9mIFswLCBjYm1fbGVuXS4gKi8KKyAg ICAvKiBTZXQgYml0cyBzaG91bGQgb25seSBpbiB0aGUgcmFuZ2Ugb2YgWzAsIGNibV9sZW4pLiAq LwogICAgIGlmICggY2JtICYgKH4wdWwgPDwgY2JtX2xlbikgKQogICAgICAgICByZXR1cm4gZmFs c2U7CiAKQEAgLTI5Nyw3ICszMDYsNiBAQCBzdGF0aWMgYm9vbCBwc3JfY2hlY2tfY2JtKHVuc2ln bmVkIGludCBjYm1fbGVuLCB1bnNpZ25lZCBsb25nIGNibSkKICAgICByZXR1cm4gdHJ1ZTsKIH0K IAotLyogSW1wbGVtZW50YXRpb24gb2YgYWxsb2NhdGlvbiBmZWF0dXJlcycgZnVuY3Rpb25zLiAq Lwogc3RhdGljIGJvb2wgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAq cmVncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVh dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAq aW5mbywKQEAgLTQzNCw2ICs0NDIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMg bDNfY2F0X3Byb3BzID0gewogICAgIC5hbHRfdHlwZSA9IFBTUl9UWVBFX1VOS05PV04sCiAgICAg LmdldF9mZWF0X2luZm8gPSBjYXRfZ2V0X2ZlYXRfaW5mbywKICAgICAud3JpdGVfbXNyID0gbDNf Y2F0X3dyaXRlX21zciwKKyAgICAuc2FuaXRpemUgPSBjYXRfY2hlY2tfY2JtLAogfTsKIAogLyog TDMgQ0RQIHByb3BzICovCkBAIC00NjQsNiArNDczLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBm ZWF0X3Byb3BzIGwzX2NkcF9wcm9wcyA9IHsKICAgICAuYWx0X3R5cGUgPSBQU1JfVFlQRV9MM19D Qk0sCiAgICAgLmdldF9mZWF0X2luZm8gPSBsM19jZHBfZ2V0X2ZlYXRfaW5mbywKICAgICAud3Jp dGVfbXNyID0gbDNfY2RwX3dyaXRlX21zciwKKyAgICAuc2FuaXRpemUgPSBjYXRfY2hlY2tfY2Jt LAogfTsKIAogLyogTDIgQ0FUIHByb3BzICovCkBAIC00NzksNiArNDg5LDcgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwyX2NhdF9wcm9wcyA9IHsKICAgICAuYWx0X3R5cGUgPSBQ U1JfVFlQRV9VTktOT1dOLAogICAgIC5nZXRfZmVhdF9pbmZvID0gY2F0X2dldF9mZWF0X2luZm8s CiAgICAgLndyaXRlX21zciA9IGwyX2NhdF93cml0ZV9tc3IsCisgICAgLnNhbml0aXplID0gY2F0 X2NoZWNrX2NibSwKIH07CiAKIC8qIE1CQSBwcm9wcyAqLwpAQCAtNDk5LDYgKzUxMCwzNSBAQCBz dGF0aWMgYm9vbCBtYmFfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0 LAogc3RhdGljIHZvaWQgbWJhX3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2 YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkKIHsKKyAg ICB3cm1zcmwoTVNSX0lBMzJfUFNSX01CQV9NQVNLKGNvcyksIHZhbCk7Cit9CisKK3N0YXRpYyBi b29sIG1iYV9zYW5pdGl6ZV90aHJ0bChjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1aW50 MzJfdCAqdGhydGwpCit7CisgICAgaWYgKCAqdGhydGwgPiBmZWF0LT5tYmEudGhydGxfbWF4ICkK KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLyoKKyAgICAgKiBQZXIgU0RNIChjaGFwdGVy ICJNZW1vcnkgQmFuZHdpZHRoIEFsbG9jYXRpb24gQ29uZmlndXJhdGlvbiIpOgorICAgICAqIDEu IExpbmVhciBtb2RlOiBJbiB0aGUgbGluZWFyIG1vZGUgdGhlIGlucHV0IHByZWNpc2lvbiBpcyBk ZWZpbmVkCisgICAgICogICAgYXMgMTAwLShNQkFfTUFYKS4gRm9yIGluc3RhbmNlLCBpZiB0aGUg TUJBX01BWCB2YWx1ZSBpcyA5MCwgdGhlCisgICAgICogICAgaW5wdXQgcHJlY2lzaW9uIGlzIDEw JS4gVmFsdWVzIG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHRoZQorICAgICAqICAgIHByZWNpc2lv biAoZS5nLiwgMTIlKSB3aWxsIGJlIHJvdW5kZWQgZG93biAoZS5nLiwgdG8gMTAlIGRlbGF5Cisg ICAgICogICAgYXBwbGllZCkuCisgICAgICogMi4gTm9uLWxpbmVhciBtb2RlOiBJbnB1dCBkZWxh eSB2YWx1ZXMgYXJlIHBvd2Vycy1vZi10d28gZnJvbSB6ZXJvCisgICAgICogICAgdG8gdGhlIE1C QV9NQVggdmFsdWUgZnJvbSBDUFVJRC4gSW4gdGhpcyBjYXNlIGFueSB2YWx1ZXMgbm90IGEKKyAg ICAgKiAgICBwb3dlciBvZiB0d28gd2lsbCBiZSByb3VuZGVkIGRvd24gdGhlIG5leHQgbmVhcmVz dCBwb3dlciBvZiB0d28uCisgICAgICovCisgICAgaWYgKCBmZWF0LT5tYmEubGluZWFyICkKKyAg ICAgICAgKnRocnRsIC09ICp0aHJ0bCAlICgxMDAgLSBmZWF0LT5tYmEudGhydGxfbWF4KTsKKyAg ICBlbHNlCisgICAgeworICAgICAgICAvKiBOb3QgcG93ZXIgb2YgMi4gKi8KKyAgICAgICAgaWYg KCAqdGhydGwgJiAoKnRocnRsIC0gMSkgKQorICAgICAgICAgICAgKnRocnRsID0gMSA8PCAoZmxz KCp0aHJ0bCkgLSAxKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGNv bnN0IHN0cnVjdCBmZWF0X3Byb3BzIG1iYV9wcm9wcyA9IHsKQEAgLTUwNyw2ICs1NDcsNyBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbWJhX3Byb3BzID0gewogICAgIC5hbHRfdHlw ZSA9IFBTUl9UWVBFX1VOS05PV04sCiAgICAgLmdldF9mZWF0X2luZm8gPSBtYmFfZ2V0X2ZlYXRf aW5mbywKICAgICAud3JpdGVfbXNyID0gbWJhX3dyaXRlX21zciwKKyAgICAuc2FuaXRpemUgPSBt YmFfc2FuaXRpemVfdGhydGwsCiB9OwogCiBzdGF0aWMgYm9vbCBfX2luaXQgcGFyc2VfcHNyX2Jv b2woY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZGVsaW0sCkBAIC05NzIsNyArMTAxMyw3IEBA IHN0YXRpYyBpbnQgaW5zZXJ0X3ZhbF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGlm ICggYXJyYXlfbGVuIDwgcHJvcHMtPmNvc19udW0gKQogICAgICAgICByZXR1cm4gLUVOT1NQQzsK IAotICAgIGlmICggIXBzcl9jaGVja19jYm0oZmVhdC0+Y2F0LmNibV9sZW4sIG5ld192YWwpICkK KyAgICBpZiAoICFwcm9wcy0+c2FuaXRpemUoZmVhdCwgJm5ld192YWwpICkKICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2Rv bWN0bC5oIGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCmluZGV4IDAwMmEyNmYuLmIzMTJj NjkgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAorKysgYi94ZW4vaW5j bHVkZS9wdWJsaWMvZG9tY3RsLmgKQEAgLTEwNzAsNiArMTA3MCw3IEBAIHN0cnVjdCB4ZW5fZG9t Y3RsX3Bzcl9hbGxvYyB7CiAjZGVmaW5lIFhFTl9ET01DVExfUFNSX0dFVF9MM19EQVRBICAgIDUK ICNkZWZpbmUgWEVOX0RPTUNUTF9QU1JfU0VUX0wyX0NCTSAgICAgNgogI2RlZmluZSBYRU5fRE9N Q1RMX1BTUl9HRVRfTDJfQ0JNICAgICA3CisjZGVmaW5lIFhFTl9ET01DVExfUFNSX1NFVF9NQkFf VEhSVEwgIDgKICNkZWZpbmUgWEVOX0RPTUNUTF9QU1JfR0VUX01CQV9USFJUTCAgOQogICAgIHVp bnQzMl90IGNtZDsgICAgICAgLyogSU46IFhFTl9ET01DVExfUFNSXyogKi8KICAgICB1aW50MzJf dCB0YXJnZXQ7ICAgIC8qIElOICovCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVs QGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=