From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v2 07/15] x86: implement set value flow for MBA Date: Thu, 24 Aug 2017 09:14:41 +0800 Message-ID: <1503537289-56036-8-git-send-email-yi.y.sun@linux.intel.com> References: <1503537289-56036-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 1dkh0W-0000py-QS for xen-devel@lists.xenproject.org; Thu, 24 Aug 2017 01:32:29 +0000 In-Reply-To: <1503537289-56036-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: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , julien.grall@arm.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHNldCB2YWx1ZSBmbG93IGZvciBNQkEgaW5jbHVkaW5nIGl0 cyBjYWxsYmFjawpmdW5jdGlvbiBhbmQgZG9tY3RsIGludGVyZmFjZS4KCkl0IGFsc28gY2hhbmdl cyB0aGUgbWVtZWJlcnMgaW4gJ2Nvc193cml0ZV9pbmZvJyB0byB0cmFuc2ZlciB0aGUKZmVhdHVy ZSBhcnJheSwgZmVhdHVyZSBwcm9wZXJ0aWVzIGFycmF5IGFuZCB2YWx1ZSBhcnJheS4gVGhlbiwg d2UKY2FuIHdyaXRlIGFsbCBmZWF0dXJlcyB2YWx1ZXMgb24gdGhlIGNvcyBpZCBpbnRvIE1TUnMu CgpCZWNhdXNlIG11bHRpcGxlIGZlYXR1cmVzIG1heSBjby1leGlzdCwgd2UgbmVlZCBoYW5kbGUg YWxsIGZlYXR1cmVzIHRvIHdyaXRlCnZhbHVlcyBvZiB0aGVtIGludG8gYSBDT1MgcmVnaXN0ZXIg d2l0aCBuZXcgQ09TIElELiBFLmc6CjEuIEwzIENBVCBhbmQgTUJBIGNvLWV4aXN0LgoyLiBEb20x IGFuZCBEb20yIHNoYXJlIGEgc2FtZSBDT1MgSUQgKDIpLiBUaGUgTDMgQ0FUIENCTSBvZiBEb20x IGlzIDB4MWZmLAogICB0aGUgTUJBIFRocnRsZSBvZiBEb20xIGlzIDB4YS4KMy4gVXNlciB3YW50 cyB0byBjaGFuZ2UgTUJBIFRocnRsIG9mIERvbTEgdG8gYmUgMHgxNC4gQmVjYXVzZSBDT1MgSUQg MiBpcwogICB1c2VkIGJ5IERvbTIgdG9vLCB3ZSBoYXZlIHRvIHBpY2sgYSBuZXcgQ09TIElEIDMu IFRoZSBvcmlnaW5hbCB2YWx1ZXMgb2YKICAgRG9tMSBvbiBDT1MgSUQgMyBtYXkgYmUgYmVsb3c6 CiAgICAgICAgICAgLS0tLS0tLS0tCiAgICAgICAgICAgfCBDT1MgMyB8CiAgICAgICAgICAgLS0t LS0tLS0tCiAgIEwzIENBVCAgfCAweDdmZiB8CiAgICAgICAgICAgLS0tLS0tLS0tCiAgIE1CQSAg ICAgfCAweDAgICB8CiAgICAgICAgICAgLS0tLS0tLS0tCjQuIEFmdGVyIHNldHRpbmcsIHRoZSBM MyBDQVQgQ0JNIHZhbHVlIG9mIERvbTEgc2hvdWxkIGJlIGtlcHQgYW5kIHRoZSBuZXcgTUJBCiAg IFRocnRsIGlzIHNldC4gU28sIHRoZSB2YWx1ZXMgb24gQ09TIElEIDMgc2hvdWxkIGJlIGJlbG93 LgogICAgICAgICAgIC0tLS0tLS0tLQogICAgICAgICAgIHwgQ09TIDMgfAogICAgICAgICAgIC0t LS0tLS0tLQogICBMMyBDQVQgIHwgMHgxZmYgfAogICAgICAgICAgIC0tLS0tLS0tLQogICBNQkEg ICAgIHwgMHgxNCAgfAogICAgICAgICAgIC0tLS0tLS0tLQoKU28sIHdlIHNob3VsZCB3cml0ZSBh bGwgZmVhdHVyZXMgdmFsdWVzIGludG8gdGhlaXIgTVNScy4gVGhhdCByZXF1aXJlcyB0aGUKZmVh dHVyZSBhcnJheSwgZmVhdHVyZSBwcm9wZXJ0aWVzIGFycmF5IGFuZCB2YWx1ZSBhcnJheSBhcmUg aW5wdXQuCgpTaWduZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4K LS0tCnYyOgogICAgLSByZW1vdmUgbGluZWFyIG1vZGUgJ3RocnRsX21heCcgY2hlY2sgaW4gJ21i YV9jaGVja190aHJ0bCcgYmVjYXVzZSBpdCBoYXMKICAgICAgYmVlbiBjaGVja2VkIGluICdtYmFf aW5pdF9mZWF0dXJlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGZvciBu b24tbGluZWFyIG1vZGUsIGNoZWNrIGlmICcqdGhydGwnIGlzIG5vdCAwIGluICdtYmFfY2hlY2tf dGhydGwnLiBJZgogICAgICBpdCBpcyAwLCB3ZSBkbyBub3QgbmVlZCB0byBjaGFuZ2UgaXQuCiAg ICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAgLSBtb3ZlIGNvbW1lbnRzIHRvIGV4cGxh aW4gY2hhbmdlcyBvZiAnY29zX3dyaXRlX2luZm8nIGZyb20gcHNyLmMgdG8gY29tbWl0CiAgICAg IG1lc3NhZ2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQotLS0KIHhlbi9hcmNoL3g4 Ni9kb21jdGwuYyAgICAgICB8ICAgNiArKwogeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICAgIHwg MTUwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiB4ZW4vaW5j bHVkZS9wdWJsaWMvZG9tY3RsLmggfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMDkgaW5zZXJ0 aW9ucygrKSwgNDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0 bC5jIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCmluZGV4IDQ5MzZiY2IuLjBhZTQ3OTkgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMK QEAgLTE0NjgsNiArMTQ2OCwxMiBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUFNSX1ZBTF9UWVBFX0wyX0NCTSk7CiAgICAgICAgICAgICBicmVh azsKIAorICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX01CQV9PUF9TRVRfVEhSVEw6CisgICAg ICAgICAgICByZXQgPSBwc3Jfc2V0X3ZhbChkLCBkb21jdGwtPnUucHNyX2FsbG9jX29wLnRhcmdl dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfYWxsb2Nfb3Au ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9WQUxfVFlQRV9NQkEpOwor ICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1Bf R0VUX0wzX0NCTToKICAgICAgICAgICAgIHJldCA9IHBzcl9nZXRfdmFsKGQsIGRvbWN0bC0+dS5w c3JfYWxsb2Nfb3AudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhbDMy LCBQU1JfVkFMX1RZUEVfTDNfQ0JNKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBi L3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCA0YTBjOTgyLi5jZTgyOTc1IDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0xMzgsNiArMTM4 LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyB7CiAKICAgICAvKiB3cml0ZV9t c3IgaXMgdXNlZCB0byB3cml0ZSBvdXQgZmVhdHVyZSBNU1IgcmVnaXN0ZXIuICovCiAgICAgdm9p ZCAoKndyaXRlX21zcikodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLCBlbnVtIHBzcl92 YWxfdHlwZSB0eXBlKTsKKworICAgIC8qCisgICAgICogY2hlY2tfdmFsIGlzIHVzZWQgdG8gY2hl Y2sgaWYgaW5wdXQgdmFsIGZ1bGZpbGxzIFNETSByZXF1aXJlbWVudC4KKyAgICAgKiBDaGFuZ2Ug aXQgdG8gdmFsaWQgdmFsdWUgaWYgU0RNIGFsbG93cy4KKyAgICAgKi8KKyAgICBib29sICgqY2hl Y2tfdmFsKShjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1bnNpZ25lZCBsb25nICp2YWwp OwogfSAqZmVhdF9wcm9wc1tGRUFUX1RZUEVfTlVNXTsKIAogLyoKQEAgLTI3NSwyOSArMjgxLDYg QEAgc3RhdGljIGVudW0gcHNyX2ZlYXRfdHlwZSBwc3JfdmFsX3R5cGVfdG9fZmVhdF90eXBlKGVu dW0gcHNyX3ZhbF90eXBlIHR5cGUpCiAgICAgcmV0dXJuIGZlYXRfdHlwZTsKIH0KIAotc3RhdGlj IGJvb2wgcHNyX2NoZWNrX2NibSh1bnNpZ25lZCBpbnQgY2JtX2xlbiwgdW5zaWduZWQgbG9uZyBj Ym0pCi17Ci0gICAgdW5zaWduZWQgaW50IGZpcnN0X2JpdCwgemVyb19iaXQ7Ci0KLSAgICAvKiBT ZXQgYml0cyBzaG91bGQgb25seSBpbiB0aGUgcmFuZ2Ugb2YgWzAsIGNibV9sZW5dLiAqLwotICAg IGlmICggY2JtICYgKH4wdWwgPDwgY2JtX2xlbikgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K LSAgICAvKiBBdCBsZWFzdCBvbmUgYml0IG5lZWQgdG8gYmUgc2V0LiAqLwotICAgIGlmICggY2Jt ID09IDAgKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmaXJzdF9iaXQgPSBmaW5kX2Zp cnN0X2JpdCgmY2JtLCBjYm1fbGVuKTsKLSAgICB6ZXJvX2JpdCA9IGZpbmRfbmV4dF96ZXJvX2Jp dCgmY2JtLCBjYm1fbGVuLCBmaXJzdF9iaXQpOwotCi0gICAgLyogU2V0IGJpdHMgc2hvdWxkIGJl IGNvbnRpZ3VvdXMuICovCi0gICAgaWYgKCB6ZXJvX2JpdCA8IGNibV9sZW4gJiYKLSAgICAgICAg IGZpbmRfbmV4dF9iaXQoJmNibSwgY2JtX2xlbiwgemVyb19iaXQpIDwgY2JtX2xlbiApCi0gICAg ICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCiAvKiBJbXBsZW1lbnRh dGlvbiBvZiBhbGxvY2F0aW9uIGZlYXR1cmVzJyBmdW5jdGlvbnMuICovCiBzdGF0aWMgaW50IGNh dF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKQEAgLTQzMyw2ICs0MTYs MzAgQEAgc3RhdGljIGJvb2wgY2F0X2dldF9mZWF0X2luZm8oY29uc3Qgc3RydWN0IGZlYXRfbm9k ZSAqZmVhdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgY2F0X2NoZWNrX2Ni bShjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1bnNpZ25lZCBsb25nICpjYm0pCit7Cisg ICAgdW5zaWduZWQgaW50IGZpcnN0X2JpdCwgemVyb19iaXQ7CisgICAgdW5zaWduZWQgaW50IGNi bV9sZW4gPSBmZWF0LT5jYXRfaW5mby5jYm1fbGVuOworCisgICAgLyogU2V0IGJpdHMgc2hvdWxk IG9ubHkgaW4gdGhlIHJhbmdlIG9mIFswLCBjYm1fbGVuXS4gKi8KKyAgICBpZiAoICpjYm0gJiAo fjB1bCA8PCBjYm1fbGVuKSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8qIEF0IGxl YXN0IG9uZSBiaXQgbmVlZCB0byBiZSBzZXQuICovCisgICAgaWYgKCAqY2JtID09IDAgKQorICAg ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmaXJzdF9iaXQgPSBmaW5kX2ZpcnN0X2JpdChjYm0s IGNibV9sZW4pOworICAgIHplcm9fYml0ID0gZmluZF9uZXh0X3plcm9fYml0KGNibSwgY2JtX2xl biwgZmlyc3RfYml0KTsKKworICAgIC8qIFNldCBiaXRzIHNob3VsZCBiZSBjb250aWd1b3VzLiAq LworICAgIGlmICggemVyb19iaXQgPCBjYm1fbGVuICYmCisgICAgICAgICBmaW5kX25leHRfYml0 KGNibSwgY2JtX2xlbiwgemVyb19iaXQpIDwgY2JtX2xlbiApCisgICAgICAgIHJldHVybiBmYWxz ZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiAvKiBMMyBDQVQgcHJvcHMgKi8KIHN0YXRpYyB2 b2lkIGwzX2NhdF93cml0ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl92YWxfdHlwZSB0eXBlKQpAQCAtNDQ2 LDYgKzQ1Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBsM19jYXRfcHJvcHMg PSB7CiAgICAgLmFsdF90eXBlID0gUFNSX1ZBTF9UWVBFX1VOS05PV04sCiAgICAgLmdldF9mZWF0 X2luZm8gPSBjYXRfZ2V0X2ZlYXRfaW5mbywKICAgICAud3JpdGVfbXNyID0gbDNfY2F0X3dyaXRl X21zciwKKyAgICAuY2hlY2tfdmFsID0gY2F0X2NoZWNrX2NibSwKIH07CiAKIC8qIEwzIENEUCBw cm9wcyAqLwpAQCAtNDc2LDYgKzQ4NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9w cyBsM19jZHBfcHJvcHMgPSB7CiAgICAgLmFsdF90eXBlID0gUFNSX1ZBTF9UWVBFX0wzX0NCTSwK ICAgICAuZ2V0X2ZlYXRfaW5mbyA9IGwzX2NkcF9nZXRfZmVhdF9pbmZvLAogICAgIC53cml0ZV9t c3IgPSBsM19jZHBfd3JpdGVfbXNyLAorICAgIC5jaGVja192YWwgPSBjYXRfY2hlY2tfY2JtLAog fTsKIAogLyogTDIgQ0FUIHByb3BzICovCkBAIC00OTEsNiArNTAwLDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBmZWF0X3Byb3BzIGwyX2NhdF9wcm9wcyA9IHsKICAgICAuYWx0X3R5cGUgPSBQU1Jf VkFMX1RZUEVfVU5LTk9XTiwKICAgICAuZ2V0X2ZlYXRfaW5mbyA9IGNhdF9nZXRfZmVhdF9pbmZv LAogICAgIC53cml0ZV9tc3IgPSBsMl9jYXRfd3JpdGVfbXNyLAorICAgIC5jaGVja192YWwgPSBj YXRfY2hlY2tfY2JtLAogfTsKIAogLyogTUJBIHByb3BzICovCkBAIC01MTQsNiArNTI0LDQwIEBA IHN0YXRpYyBib29sIG1iYV9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZl YXQsCiBzdGF0aWMgdm9pZCBtYmFfd3JpdGVfbXNyKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90 IHZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSkK IHsKKyAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX01CQV9NQVNLKGNvcyksIHZhbCk7Cit9CisKK3N0 YXRpYyBib29sIG1iYV9jaGVja190aHJ0bChjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1 bnNpZ25lZCBsb25nICp0aHJ0bCkKK3sKKyAgICBpZiAoICp0aHJ0bCA+IGZlYXQtPm1iYV9pbmZv LnRocnRsX21heCApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8qCisgICAgICogUGVy IFNETSAoY2hhcHRlciAiTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uIENvbmZpZ3VyYXRpb24i KToKKyAgICAgKiAxLiBMaW5lYXIgbW9kZTogSW4gdGhlIGxpbmVhciBtb2RlIHRoZSBpbnB1dCBw cmVjaXNpb24gaXMgZGVmaW5lZAorICAgICAqICAgIGFzIDEwMC0oTUJBX01BWCkuIEZvciBpbnN0 YW5jZSwgaWYgdGhlIE1CQV9NQVggdmFsdWUgaXMgOTAsIHRoZQorICAgICAqICAgIGlucHV0IHBy ZWNpc2lvbiBpcyAxMCUuIFZhbHVlcyBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiB0aGUKKyAgICAg KiAgICBwcmVjaXNpb24gKGUuZy4sIDEyJSkgd2lsbCBiZSByb3VuZGVkIGRvd24gKGUuZy4sIHRv IDEwJSBkZWxheQorICAgICAqICAgIGFwcGxpZWQpLgorICAgICAqIDIuIE5vbi1saW5lYXIgbW9k ZTogSW5wdXQgZGVsYXkgdmFsdWVzIGFyZSBwb3dlcnMtb2YtdHdvIGZyb20gemVybworICAgICAq ICAgIHRvIHRoZSBNQkFfTUFYIHZhbHVlIGZyb20gQ1BVSUQuIEluIHRoaXMgY2FzZSBhbnkgdmFs dWVzIG5vdCBhCisgICAgICogICAgcG93ZXIgb2YgdHdvIHdpbGwgYmUgcm91bmRlZCBkb3duIHRo ZSBuZXh0IG5lYXJlc3QgcG93ZXIgb2YgdHdvLgorICAgICAqLworICAgIGlmICggZmVhdC0+bWJh X2luZm8ubGluZWFyICkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCBtb2Q7CisKKyAgICAg ICAgbW9kID0gKnRocnRsICUgKDEwMCAtIGZlYXQtPm1iYV9pbmZvLnRocnRsX21heCk7CisgICAg ICAgICp0aHJ0bCAtPSBtb2Q7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qIE5v dCBwb3dlciBvZiAyLiAqLworICAgICAgICBpZiAoICp0aHJ0bCAmJiAoKnRocnRsICYgKCp0aHJ0 bCAtIDEpKSApCisgICAgICAgICAgICAqdGhydGwgPSAqdGhydGwgJiAoMSA8PCAoZmxzbCgqdGhy dGwpIC0gMSkpOworICAgIH0KKworICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgY29uc3Qg c3RydWN0IGZlYXRfcHJvcHMgbWJhX3Byb3BzID0gewpAQCAtNTIyLDYgKzU2Niw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBtYmFfcHJvcHMgPSB7CiAgICAgLmFsdF90eXBlID0g UFNSX1ZBTF9UWVBFX1VOS05PV04sCiAgICAgLmdldF9mZWF0X2luZm8gPSBtYmFfZ2V0X2ZlYXRf aW5mbywKICAgICAud3JpdGVfbXNyID0gbWJhX3dyaXRlX21zciwKKyAgICAuY2hlY2tfdmFsID0g bWJhX2NoZWNrX3RocnRsLAogfTsKIAogc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29s KGNoYXIgKnMsIGNoYXIgKnZhbHVlLCBjaGFyICpmZWF0dXJlLApAQCAtOTQyLDYgKzk4Nyw3IEBA IHN0YXRpYyBpbnQgaW5zZXJ0X3ZhbF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGNv bnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7CiAgICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMg KnByb3BzOwogICAgIHVuc2lnbmVkIGludCBpOworICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tfdmFs ID0gbmV3X3ZhbDsKICAgICBpbnQgcmV0OwogCiAgICAgQVNTRVJUKGZlYXRfdHlwZSA8IEZFQVRf VFlQRV9OVU0pOwpAQCAtOTY2LDkgKzEwMTIsMTEgQEAgc3RhdGljIGludCBpbnNlcnRfdmFsX2lu dG9fYXJyYXkodWludDMyX3QgdmFsW10sCiAgICAgaWYgKCBhcnJheV9sZW4gPCBwcm9wcy0+Y29z X251bSApCiAgICAgICAgIHJldHVybiAtRU5PU1BDOwogCi0gICAgaWYgKCAhcHNyX2NoZWNrX2Ni bShmZWF0LT5jYXRfaW5mby5jYm1fbGVuLCBuZXdfdmFsKSApCisgICAgaWYgKCAhcHJvcHMtPmNo ZWNrX3ZhbChmZWF0LCAmY2hlY2tfdmFsKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCisg ICAgbmV3X3ZhbCA9IGNoZWNrX3ZhbDsKKwogICAgIC8qCiAgICAgICogVmFsdWUgc2V0dGluZyBw b3NpdGlvbiBpcyBzYW1lIGFzIGZlYXR1cmUgYXJyYXkuCiAgICAgICogRm9yIENEUCwgdXNlciBt YXkgc2V0IGJvdGggREFUQSBhbmQgQ09ERSB0byBzYW1lIHZhbHVlLiBGb3Igc3VjaCBjYXNlLApA QCAtMTE5OCwyNSArMTI0Niw0MiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9zb2NrZXRfY3B1 KHVuc2lnbmVkIGludCBzb2NrZXQpCiBzdHJ1Y3QgY29zX3dyaXRlX2luZm8KIHsKICAgICB1bnNp Z25lZCBpbnQgY29zOwotICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXR1cmU7CisgICAgc3RydWN0 IGZlYXRfbm9kZSAqKmZlYXR1cmVzOwogICAgIGNvbnN0IHVpbnQzMl90ICp2YWw7Ci0gICAgY29u c3Qgc3RydWN0IGZlYXRfcHJvcHMgKnByb3BzOworICAgIHVuc2lnbmVkIGludCBhcnJheV9sZW47 CisgICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKipwcm9wczsKIH07CiAKIHN0YXRpYyB2b2lk IGRvX3dyaXRlX3Bzcl9tc3JzKHZvaWQgKmRhdGEpCiB7CiAgICAgY29uc3Qgc3RydWN0IGNvc193 cml0ZV9pbmZvICppbmZvID0gZGF0YTsKLSAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0ID0gaW5m by0+ZmVhdHVyZTsKLSAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHMgPSBpbmZvLT5w cm9wczsKLSAgICB1bnNpZ25lZCBpbnQgaSwgY29zID0gaW5mby0+Y29zLCBjb3NfbnVtID0gcHJv cHMtPmNvc19udW07CisgICAgdW5zaWduZWQgaW50IGksIGosIGluZGV4ID0gMCwgYXJyYXlfbGVu ID0gaW5mby0+YXJyYXlfbGVuLCBjb3MgPSBpbmZvLT5jb3M7CisgICAgY29uc3QgdWludDMyX3Qg KnZhbF9hcnJheSA9IGluZm8tPnZhbDsKIAotICAgIGZvciAoIGkgPSAwOyBpIDwgY29zX251bTsg aSsrICkKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoZmVhdF9wcm9wcyk7IGkrKyAp CiAgICAgewotICAgICAgICBpZiAoIGZlYXQtPmNvc19yZWdfdmFsW2NvcyAqIGNvc19udW0gKyBp XSAhPSBpbmZvLT52YWxbaV0gKQorICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0ID0gaW5m by0+ZmVhdHVyZXNbaV07CisgICAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzICpwcm9wcyA9 IGluZm8tPnByb3BzW2ldOworICAgICAgICB1bnNpZ25lZCBpbnQgY29zX251bTsKKworICAgICAg ICBpZiAoICFmZWF0IHx8ICFwcm9wcyApCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg ICBjb3NfbnVtID0gcHJvcHMtPmNvc19udW07CisgICAgICAgIGlmICggYXJyYXlfbGVuIDwgY29z X251bSApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yICggaiA9IDA7IGogPCBj b3NfbnVtOyBqKysgKQogICAgICAgICB7Ci0gICAgICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFtj b3MgKiBjb3NfbnVtICsgaV0gPSBpbmZvLT52YWxbaV07Ci0gICAgICAgICAgICBwcm9wcy0+d3Jp dGVfbXNyKGNvcywgaW5mby0+dmFsW2ldLCBwcm9wcy0+dHlwZVtpXSk7CisgICAgICAgICAgICBp ZiAoIGZlYXQtPmNvc19yZWdfdmFsW2NvcyAqIGNvc19udW0gKyBqXSAhPSB2YWxfYXJyYXlbaW5k ZXggKyBqXSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmVhdC0+Y29zX3JlZ192 YWxbY29zICogY29zX251bSArIGpdID0gdmFsX2FycmF5W2luZGV4ICsgal07CisgICAgICAgICAg ICAgICAgcHJvcHMtPndyaXRlX21zcihjb3MsIHZhbF9hcnJheVtpbmRleCArIGpdLCBwcm9wcy0+ dHlwZVtqXSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBhcnJheV9sZW4g LT0gY29zX251bTsKKyAgICAgICAgaW5kZXggKz0gY29zX251bTsKICAgICB9CiB9CiAKQEAgLTEy MjQsMzAgKzEyODksMTkgQEAgc3RhdGljIGludCB3cml0ZV9wc3JfbXNycyh1bnNpZ25lZCBpbnQg c29ja2V0LCB1bnNpZ25lZCBpbnQgY29zLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1aW50MzJfdCB2YWxbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlwZSkKIHsKLSAgICBpbnQgcmV0 OwogICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBnZXRfc29ja2V0X2luZm8oc29j a2V0KTsKICAgICBzdHJ1Y3QgY29zX3dyaXRlX2luZm8gZGF0YSA9CiAgICAgewogICAgICAgICAu Y29zID0gY29zLAotICAgICAgICAuZmVhdHVyZSA9IGluZm8tPmZlYXR1cmVzW2ZlYXRfdHlwZV0s Ci0gICAgICAgIC5wcm9wcyA9IGZlYXRfcHJvcHNbZmVhdF90eXBlXSwKKyAgICAgICAgLmZlYXR1 cmVzID0gaW5mby0+ZmVhdHVyZXMsCisgICAgICAgIC52YWwgPSB2YWwsCisgICAgICAgIC5hcnJh eV9sZW4gPSBhcnJheV9sZW4sCisgICAgICAgIC5wcm9wcyA9IGZlYXRfcHJvcHMsCiAgICAgfTsK IAogICAgIGlmICggY29zID4gaW5mby0+ZmVhdHVyZXNbZmVhdF90eXBlXS0+Y29zX21heCApCiAg ICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgLyogU2tpcCB0byB0aGUgZmVhdHVyZSdzIHZh bHVlIGhlYWQuICovCi0gICAgcmV0ID0gc2tpcF9wcmlvcl9mZWF0dXJlcygmYXJyYXlfbGVuLCBm ZWF0X3R5cGUpOwotICAgIGlmICggcmV0IDwgMCApCi0gICAgICAgIHJldHVybiByZXQ7Ci0KLSAg ICB2YWwgKz0gcmV0OwotCi0gICAgaWYgKCBhcnJheV9sZW4gPCBmZWF0X3Byb3BzW2ZlYXRfdHlw ZV0tPmNvc19udW0gKQotICAgICAgICByZXR1cm4gLUVOT1NQQzsKLQotICAgIGRhdGEudmFsID0g dmFsOwotCiAgICAgaWYgKCBzb2NrZXQgPT0gY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lk KCkpICkKICAgICAgICAgZG9fd3JpdGVfcHNyX21zcnMoJmRhdGEpOwogICAgIGVsc2UKZGlmZiAt LWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9k b21jdGwuaAppbmRleCBhNTc3YTNlLi44ODI2Y2ZiIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9w dWJsaWMvZG9tY3RsLmgKKysrIGIveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCkBAIC0xMTQ0 LDYgKzExNDQsNyBAQCBzdHJ1Y3QgeGVuX2RvbWN0bF9wc3JfYWxsb2Nfb3AgewogI2RlZmluZSBY RU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wzX0RBVEEgICAgNQogI2RlZmluZSBYRU5fRE9NQ1RM X1BTUl9DQVRfT1BfU0VUX0wyX0NCTSAgICAgNgogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRf T1BfR0VUX0wyX0NCTSAgICAgNworI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9NQkFfT1BfU0VUX1RI UlRMICAgICAgOAogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9NQkFfT1BfR0VUX1RIUlRMICAgICAg OQogICAgIHVpbnQzMl90IGNtZDsgICAgICAgLyogSU46IFhFTl9ET01DVExfUFNSX0NBVF9PUF8q ICovCiAgICAgdWludDMyX3QgdGFyZ2V0OyAgICAvKiBJTiAqLwotLSAKMS45LjEKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGlu ZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4t ZGV2ZWwK