From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v7 08/16] x86: implement set value flow for MBA Date: Fri, 13 Oct 2017 16:41:00 +0800 Message-ID: <1507884068-18757-9-git-send-email-yi.y.sun@linux.intel.com> References: <1507884068-18757-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1e2vr9-0001sA-CU for xen-devel@lists.xenproject.org; Fri, 13 Oct 2017 09:02:11 +0000 In-Reply-To: <1507884068-18757-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 bnV4LmludGVsLmNvbT4KCnY3OgogICAgLSBjaGFuZ2UgbmFtZSBvZiAnY2hlY2tfdmFsJyB0byAn c2FuaXRpemUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBmaXggY29t bWVudHMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCBwYXJlbnRo ZXNlcyBhbmQgY2hhbmdlICc9PSAwJyB0byAnIScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2FyeSBjaGVjayBvZiAnbWJhLnRocnRsX21heCcu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5lY2Vzc2Fy eSBpbnRlcm1lZGlhdGUgdmFyaWFibGUgJ21vZCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIHJlZmluZSBhbiBhc3NpZ25lbWVudCBzZW50ZW5jZSB0byB1c2UgJyY9Jy4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIHR5cGUgb2YgbGFz dCBwYXJhbWV0ZXIgb2YgJ3Nhbml0aXplJyB0byAndWludDMyX3QnIGFuZAogICAgICBhcHBseSBz YW1lIGNoYW5nZSB0byAnY2F0X2NoZWNrX2NibScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCnY2OgogICAgLSBzcGxpdCBjby1leGlzdCBmZWF0dXJlcycgdmFsdWVzIHNldHRpbmcg ZmxvdyB0byBhIG5ldyBwYXRjaC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gcmVzdG9yZSBjb2RlcyByZWxhdGVkIHRvICdtYmFfY2hlY2tfdGhydGwnIGFuZCAnY2hlY2tf dmFsdWUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2NToKICAgIC0gYWRqdXN0 IHBvc2l0aW9uIG9mICdjYXRfY2hlY2tfY2JtJyB0byBub3QgdG8gbWFrZSBjaGFuZ2VzIHNvIGJp Zy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSByZW1vdmUgJ3By b3BzJyBmcm9tICdzdHJ1Y3QgY29zX3dyaXRlX2luZm8nLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJv Z2VyIFBhdSBNb25uw6kpCiAgICAtIG1ha2UgYSBzaW5nbGUgcmV0dXJuIHN0YXRlbWVudCBpbiAn bWJhX2NoZWNrX3RocnRsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjQ6CiAg ICAtIHJlbW92ZSAnQUxMT0NfJyBmcm9tIG1hY3JvIG5hbWVzLgogICAgICAoc3VnZ2VzdGVkIGJ5 IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGpvaW4gdHdvIGNoZWNrcyBpbnRvIGEgc2luZ2xlIGlm LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJlbW92ZSByZWR1 bmRhbnQgbG9jYWwgdmFyaWFibGUgJ2FycmF5X2xlbicuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9n ZXIgUGF1IE1vbm7DqSkKdjM6CiAgICAtIG1vZGlmeSBjb21taXQgbWVzc2FnZSB0byBtYWtlIGl0 IGNsZWFyLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIG1vZGlm eSBmdW5jdGlvbmFsaXR5IG9mICdjaGVja192YWwnIHRvIG1ha2UgaXQgc2ltcGxlIHRvIG9ubHkg Y2hlY2sgdmFsdWUuCiAgICAgIENoYW5nZSB0aGUgbGFzdCBwYXJhbWV0ZXIgdHlwZSBmcm9tICd1 bnNpZ25lZCBsb25nIConIHRvICd1bnNpZ25lZCBsb25nJy4KICAgICAgKHN1Z2dlc3RlZCBieSBS b2dlciBQYXUgTW9ubsOpKQogICAgLSBjYWxsIHJkbXNybCB0byBnZXQgdmFsdWUganVzdCB3cml0 dGVuIGludG8gTVNSIGZvciBNQkEuIEJlY2F1c2UgSFcgY2FuCiAgICAgIGF1dG9tYXRpY2FsbHkg Y2hhbmdlIGlucHV0IHZhbHVlIHRvIHdoYXQgaXQgd2FudHMuCiAgICAgIChzdWdnZXN0ZWQgYnkg Um9nZXIgUGF1IE1vbm7DqSkKICAgIC0gY2hhbmdlIHR5cGUgb2YgJ3dyaXRlX21zcicgdG8gJ3Vp bnQzMl90JyB0byByZXR1cm4gdGhlIHZhbHVlIGFjdHVhbGx5CiAgICAgIHdyaXR0ZW4gaW50byBN U1IuIFRoZW4sIGNoYW5nZSAnZG9fd3JpdGVfcHNyX21zcnMnIHRvIHNldCB0aGUgcmV0dXJuZWQK ICAgICAgdmFsdWUgaW50byAnY29zX3JlZ192YWxbXScKICAgIC0gbW92ZSB0aGUgZGVjbGFyYXRp b24gb2YgJ2onIGludG8gbG9vcCBpbiAnZG9fd3JpdGVfcHNyX21zcnMnLgogICAgICAoc3VnZ2Vz dGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSAnbWJhX2luZm8nIHRvICdtYmEn LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSAnY2F0 X2luZm8nIHRvICdjYXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAg ICAtIHJlbmFtZSAncHNyX2NhdC9QU1JfQ0FUJyB0byAncHNyX2FsbG9jL1BTUl9BTExPQycgYW5k IHJlbW92ZSAnb3AvT1AnCiAgICAgIGZyb20gbmFtZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dl ciBQYXUgTW9ubsOpKQogICAgLSBjaGFuZ2UgJ1BTUl9WQUxfVFlQRV9NQkEnIHRvICdQU1JfVFlQ RV9NQkFfVEhSVEwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCnYyOgog ICAgLSByZW1vdmUgbGluZWFyIG1vZGUgJ3RocnRsX21heCcgY2hlY2sgaW4gJ21iYV9jaGVja190 aHJ0bCcgYmVjYXVzZSBpdCBoYXMKICAgICAgYmVlbiBjaGVja2VkIGluICdtYmFfaW5pdF9mZWF0 dXJlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGZvciBub24tbGluZWFy IG1vZGUsIGNoZWNrIGlmICcqdGhydGwnIGlzIG5vdCAwIGluICdtYmFfY2hlY2tfdGhydGwnLiBJ ZgogICAgICBpdCBpcyAwLCB3ZSBkbyBub3QgbmVlZCB0byBjaGFuZ2UgaXQuCiAgICAgIChzdWdn ZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAgLSBtb3ZlIGNvbW1lbnRzIHRvIGV4cGxhaW4gY2hhbmdl cyBvZiAnY29zX3dyaXRlX2luZm8nIGZyb20gcHNyLmMgdG8gY29tbWl0CiAgICAgIG1lc3NhZ2Uu CiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQotLS0KIHhlbi9hcmNoL3g4Ni9kb21jdGwu YyAgICAgICB8ICA2ICsrKysrCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAgICAgICAgfCA1OCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIHhlbi9pbmNsdWRlL3B1 YmxpYy9kb21jdGwuaCB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNTYgaW5zZXJ0aW9ucygrKSwg OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMgYi94ZW4v YXJjaC94ODYvZG9tY3RsLmMKaW5kZXggZmZiMDM4Yy4uZTk1MDA0YiAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2RvbWN0bC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwpAQCAtMTQ2NSw2 ICsxNDY1LDEyIEBAIGxvbmcgYXJjaF9kb19kb21jdGwoCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBQU1JfVFlQRV9MMl9DQk0pOwogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAg Y2FzZSBYRU5fRE9NQ1RMX1BTUl9TRVRfTUJBX1RIUlRMOgorICAgICAgICAgICAgcmV0ID0gcHNy X3NldF92YWwoZCwgZG9tY3RsLT51LnBzcl9hbGxvYy50YXJnZXQsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkb21jdGwtPnUucHNyX2FsbG9jLmRhdGEsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQU1JfVFlQRV9NQkFfVEhSVEwpOworICAgICAgICAgICAgYnJlYWs7CisK ICNkZWZpbmUgZG9tY3RsX3Bzcl9nZXRfdmFsKGQsIGRvbWN0bCwgdHlwZSwgY29weWJhY2spICh7 ICAgIFwKICAgICB1aW50MzJfdCB2XzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKICAgICBpbnQgcl8gPSBwc3JfZ2V0X3ZhbCgoZCksIChkb21jdGwpLT51LnBz cl9hbGxvYy50YXJnZXQsIFwKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9h cmNoL3g4Ni9wc3IuYwppbmRleCBmNWIzOTViLi5jODBiYTI1IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0xMzgsNiArMTM4LDEyIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyB7CiAKICAgICAvKiB3cml0ZV9tc3IgaXMg dXNlZCB0byB3cml0ZSBvdXQgZmVhdHVyZSBNU1IgcmVnaXN0ZXIuICovCiAgICAgdm9pZCAoKndy aXRlX21zcikodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLCBlbnVtIHBzcl90eXBlIHR5 cGUpOworCisgICAgLyoKKyAgICAgKiBzYW5pdGl6ZSBpcyB1c2VkIHRvIGNoZWNrIGlmIGlucHV0 IHZhbCBmdWxmaWxscyBTRE0gcmVxdWlyZW1lbnQuCisgICAgICogQW5kIGNoYW5nZSBpdCB0byB2 YWxpZCB2YWx1ZSBpZiBTRE0gYWxsb3dzLgorICAgICAqLworICAgIGJvb2wgKCpzYW5pdGl6ZSko Y29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdWludDMyX3QgKnZhbCk7CiB9ICpmZWF0X3By b3BzW0ZFQVRfVFlQRV9OVU1dOwogCiAvKgpAQCAtMjc0LDE2ICsyODAsMTggQEAgc3RhdGljIGVu dW0gcHNyX2ZlYXRfdHlwZSBwc3JfdHlwZV90b19mZWF0X3R5cGUoZW51bSBwc3JfdHlwZSB0eXBl KQogICAgIHJldHVybiBmZWF0X3R5cGU7CiB9CiAKLXN0YXRpYyBib29sIHBzcl9jaGVja19jYm0o dW5zaWduZWQgaW50IGNibV9sZW4sIHVuc2lnbmVkIGxvbmcgY2JtKQorLyogSW1wbGVtZW50YXRp b24gb2YgYWxsb2NhdGlvbiBmZWF0dXJlcycgZnVuY3Rpb25zLiAqLworc3RhdGljIGJvb2wgY2F0 X2NoZWNrX2NibShjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1aW50MzJfdCAqdmFsKQog ewogICAgIHVuc2lnbmVkIGludCBmaXJzdF9iaXQsIHplcm9fYml0OworICAgIHVuc2lnbmVkIGlu dCBjYm1fbGVuID0gZmVhdC0+Y2F0LmNibV9sZW47CisgICAgdW5zaWduZWQgbG9uZyBjYm0gPSAq dmFsOwogCi0gICAgLyogU2V0IGJpdHMgc2hvdWxkIG9ubHkgaW4gdGhlIHJhbmdlIG9mIFswLCBj Ym1fbGVuXS4gKi8KLSAgICBpZiAoIGNibSAmICh+MHVsIDw8IGNibV9sZW4pICkKLSAgICAgICAg cmV0dXJuIGZhbHNlOwotCi0gICAgLyogQXQgbGVhc3Qgb25lIGJpdCBuZWVkIHRvIGJlIHNldC4g Ki8KLSAgICBpZiAoIGNibSA9PSAwICkKKyAgICAvKgorICAgICAqIFNldCBiaXRzIHNob3VsZCBi ZSBvbmx5IGluIHRoZSByYW5nZSBvZiBbMCwgY2JtX2xlbikuCisgICAgICogQW5kLCBhdCBsZWFz dCBvbmUgYml0IG5lZWQgdG8gYmUgc2V0LgorICAgICAqLworICAgIGlmICggKGNibSAmICh+MHVs IDw8IGNibV9sZW4pKSB8fCAhY2JtICkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZmly c3RfYml0ID0gZmluZF9maXJzdF9iaXQoJmNibSwgY2JtX2xlbik7CkBAIC0yOTcsNyArMzA1LDYg QEAgc3RhdGljIGJvb2wgcHNyX2NoZWNrX2NibSh1bnNpZ25lZCBpbnQgY2JtX2xlbiwgdW5zaWdu ZWQgbG9uZyBjYm0pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8qIEltcGxlbWVudGF0aW9uIG9m IGFsbG9jYXRpb24gZmVhdHVyZXMnIGZ1bmN0aW9ucy4gKi8KIHN0YXRpYyBib29sIGNhdF9pbml0 X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCkBAIC00MzYsNiArNDQzLDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwzX2NhdF9wcm9wcyA9IHsKICAgICAu YWx0X3R5cGUgPSBQU1JfVFlQRV9VTktOT1dOLAogICAgIC5nZXRfZmVhdF9pbmZvID0gY2F0X2dl dF9mZWF0X2luZm8sCiAgICAgLndyaXRlX21zciA9IGwzX2NhdF93cml0ZV9tc3IsCisgICAgLnNh bml0aXplID0gY2F0X2NoZWNrX2NibSwKIH07CiAKIC8qIEwzIENEUCBwcm9wcyAqLwpAQCAtNDY2 LDYgKzQ3NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBsM19jZHBfcHJvcHMg PSB7CiAgICAgLmFsdF90eXBlID0gUFNSX1RZUEVfTDNfQ0JNLAogICAgIC5nZXRfZmVhdF9pbmZv ID0gbDNfY2RwX2dldF9mZWF0X2luZm8sCiAgICAgLndyaXRlX21zciA9IGwzX2NkcF93cml0ZV9t c3IsCisgICAgLnNhbml0aXplID0gY2F0X2NoZWNrX2NibSwKIH07CiAKIC8qIEwyIENBVCBwcm9w cyAqLwpAQCAtNDgxLDYgKzQ5MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBs Ml9jYXRfcHJvcHMgPSB7CiAgICAgLmFsdF90eXBlID0gUFNSX1RZUEVfVU5LTk9XTiwKICAgICAu Z2V0X2ZlYXRfaW5mbyA9IGNhdF9nZXRfZmVhdF9pbmZvLAogICAgIC53cml0ZV9tc3IgPSBsMl9j YXRfd3JpdGVfbXNyLAorICAgIC5zYW5pdGl6ZSA9IGNhdF9jaGVja19jYm0sCiB9OwogCiAvKiBN QkEgcHJvcHMgKi8KQEAgLTUwMSw2ICs1MTEsMzUgQEAgc3RhdGljIGJvb2wgbWJhX2dldF9mZWF0 X2luZm8oY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKIHN0YXRpYyB2b2lkIG1iYV93cml0 ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAogICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIHBzcl90eXBlIHR5cGUpCiB7CisgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9N QkFfTUFTSyhjb3MpLCB2YWwpOworfQorCitzdGF0aWMgYm9vbCBtYmFfc2FuaXRpemVfdGhydGwo Y29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdWludDMyX3QgKnRocnRsKQoreworICAgIGlm ICggKnRocnRsID4gZmVhdC0+bWJhLnRocnRsX21heCApCisgICAgICAgIHJldHVybiBmYWxzZTsK KworICAgIC8qCisgICAgICogUGVyIFNETSAoY2hhcHRlciAiTWVtb3J5IEJhbmR3aWR0aCBBbGxv Y2F0aW9uIENvbmZpZ3VyYXRpb24iKToKKyAgICAgKiAxLiBMaW5lYXIgbW9kZTogSW4gdGhlIGxp bmVhciBtb2RlIHRoZSBpbnB1dCBwcmVjaXNpb24gaXMgZGVmaW5lZAorICAgICAqICAgIGFzIDEw MC0oTUJBX01BWCkuIEZvciBpbnN0YW5jZSwgaWYgdGhlIE1CQV9NQVggdmFsdWUgaXMgOTAsIHRo ZQorICAgICAqICAgIGlucHV0IHByZWNpc2lvbiBpcyAxMCUuIFZhbHVlcyBub3QgYW4gZXZlbiBt dWx0aXBsZSBvZiB0aGUKKyAgICAgKiAgICBwcmVjaXNpb24gKGUuZy4sIDEyJSkgd2lsbCBiZSBy b3VuZGVkIGRvd24gKGUuZy4sIHRvIDEwJSBkZWxheQorICAgICAqICAgIGFwcGxpZWQpLgorICAg ICAqIDIuIE5vbi1saW5lYXIgbW9kZTogSW5wdXQgZGVsYXkgdmFsdWVzIGFyZSBwb3dlcnMtb2Yt dHdvIGZyb20gemVybworICAgICAqICAgIHRvIHRoZSBNQkFfTUFYIHZhbHVlIGZyb20gQ1BVSUQu IEluIHRoaXMgY2FzZSBhbnkgdmFsdWVzIG5vdCBhCisgICAgICogICAgcG93ZXIgb2YgdHdvIHdp bGwgYmUgcm91bmRlZCBkb3duIHRoZSBuZXh0IG5lYXJlc3QgcG93ZXIgb2YgdHdvLgorICAgICAq LworICAgIGlmICggZmVhdC0+bWJhLmxpbmVhciApCisgICAgICAgICp0aHJ0bCAtPSAqdGhydGwg JSAoMTAwIC0gZmVhdC0+bWJhLnRocnRsX21heCk7CisgICAgZWxzZQorICAgIHsKKyAgICAgICAg LyogTm90IHBvd2VyIG9mIDIuICovCisgICAgICAgIGlmICggKnRocnRsICYgKCp0aHJ0bCAtIDEp ICkKKyAgICAgICAgICAgICp0aHJ0bCAmPSAxIDw8IChmbHNsKCp0aHJ0bCkgLSAxKTsKKyAgICB9 CisKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3Bz IG1iYV9wcm9wcyA9IHsKQEAgLTUwOSw2ICs1NDgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZl YXRfcHJvcHMgbWJhX3Byb3BzID0gewogICAgIC5hbHRfdHlwZSA9IFBTUl9UWVBFX1VOS05PV04s CiAgICAgLmdldF9mZWF0X2luZm8gPSBtYmFfZ2V0X2ZlYXRfaW5mbywKICAgICAud3JpdGVfbXNy ID0gbWJhX3dyaXRlX21zciwKKyAgICAuc2FuaXRpemUgPSBtYmFfc2FuaXRpemVfdGhydGwsCiB9 OwogCiBzdGF0aWMgYm9vbCBfX2luaXQgcGFyc2VfcHNyX2Jvb2woY29uc3QgY2hhciAqcywgY29u c3QgY2hhciAqZGVsaW0sCkBAIC05NzQsNyArMTAxNCw3IEBAIHN0YXRpYyBpbnQgaW5zZXJ0X3Zh bF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGlmICggYXJyYXlfbGVuIDwgcHJvcHMt PmNvc19udW0gKQogICAgICAgICByZXR1cm4gLUVOT1NQQzsKIAotICAgIGlmICggIXBzcl9jaGVj a19jYm0oZmVhdC0+Y2F0LmNibV9sZW4sIG5ld192YWwpICkKKyAgICBpZiAoICFwcm9wcy0+c2Fu aXRpemUoZmVhdCwgJm5ld192YWwpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKICAgICAv KgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oIGIveGVuL2luY2x1ZGUv cHVibGljL2RvbWN0bC5oCmluZGV4IGU4ZjRjNGMuLmZiNTdlNjQgMTAwNjQ0Ci0tLSBhL3hlbi9p bmNsdWRlL3B1YmxpYy9kb21jdGwuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgK QEAgLTEwNjksNiArMTA2OSw3IEBAIHN0cnVjdCB4ZW5fZG9tY3RsX3Bzcl9hbGxvYyB7CiAjZGVm aW5lIFhFTl9ET01DVExfUFNSX0dFVF9MM19EQVRBICAgIDUKICNkZWZpbmUgWEVOX0RPTUNUTF9Q U1JfU0VUX0wyX0NCTSAgICAgNgogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9HRVRfTDJfQ0JNICAg ICA3CisjZGVmaW5lIFhFTl9ET01DVExfUFNSX1NFVF9NQkFfVEhSVEwgIDgKICNkZWZpbmUgWEVO X0RPTUNUTF9QU1JfR0VUX01CQV9USFJUTCAgOQogICAgIHVpbnQzMl90IGNtZDsgICAgICAgLyog SU46IFhFTl9ET01DVExfUFNSXyogKi8KICAgICB1aW50MzJfdCB0YXJnZXQ7ICAgIC8qIElOICov Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=