From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v1 07/13] x86: implement set value flow for MBA Date: Wed, 9 Aug 2017 15:41:46 +0800 Message-ID: <1502264512-4648-8-git-send-email-yi.y.sun@linux.intel.com> References: <1502264512-4648-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 1dfLsf-0001nH-0X for xen-devel@lists.xenproject.org; Wed, 09 Aug 2017 07:58:17 +0000 In-Reply-To: <1502264512-4648-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 CgpTaWduZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCnYx OgogICAgLSByZW5hbWUgJ2NoZWNrX2NoYW5nZV92YWwnIHRvICdjaGVja192YWwnLgogICAgICAo c3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0gcmVuYW1lICdjYXRfY2hlY2tfY2hhbmdlX3Zh bCcgdG8gJ2NhdF9jaGVja19jYm0nLgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAg IC0gcmVuYW1lICdtYmFfY2hlY2tfY2hhbmdlX3ZhbCcgdG8gJ21iYV9jaGVja190aHJ0bCcuCiAg ICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQotLS0KIHhlbi9hcmNoL3g4Ni9kb21jdGwuYyAg ICAgICB8ICAgNiArKwogeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICAgIHwgMTgyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiB4ZW4vaW5jbHVkZS9wdWJsaWMv ZG9tY3RsLmggfCAgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxNDEgaW5zZXJ0aW9ucygrKSwgNDgg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2RvbWN0bC5jIGIveGVuL2Fy Y2gveDg2L2RvbWN0bC5jCmluZGV4IGZhNWU2ZDQuLjBhYTlmMzQgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9kb21jdGwuYworKysgYi94ZW4vYXJjaC94ODYvZG9tY3RsLmMKQEAgLTE0NjgsNiAr MTQ2OCwxMiBAQCBsb25nIGFyY2hfZG9fZG9tY3RsKAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUFNSX1ZBTF9UWVBFX0wyKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNh c2UgWEVOX0RPTUNUTF9QU1JfTUJBX09QX1NFVF9USFJUTDoKKyAgICAgICAgICAgIHJldCA9IHBz cl9zZXRfdmFsKGQsIGRvbWN0bC0+dS5wc3JfYWxsb2Nfb3AudGFyZ2V0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG9tY3RsLT51LnBzcl9hbGxvY19vcC5kYXRhLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUFNSX1ZBTF9UWVBFX01CQSk7CisgICAgICAgICAgICBicmVh azsKKwogICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfQ0JNOgogICAg ICAgICAgICAgcmV0ID0gcHNyX2dldF92YWwoZCwgZG9tY3RsLT51LnBzcl9hbGxvY19vcC50YXJn ZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsMzIsIFBTUl9WQUxfVFlQRV9M Myk7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNyLmMK aW5kZXggOTQ1NWU2Ny4uYmNlZDI1MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCisr KyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtMTM4LDYgKzEzOCwxMiBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IGZlYXRfcHJvcHMgewogCiAgICAgLyogd3JpdGVfbXNyIGlzIHVzZWQgdG8gd3JpdGUg b3V0IGZlYXR1cmUgTVNSIHJlZ2lzdGVyLiAqLwogICAgIHZvaWQgKCp3cml0ZV9tc3IpKHVuc2ln bmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSk7CisKKyAg ICAvKgorICAgICAqIGNoZWNrX3ZhbCBpcyB1c2VkIHRvIGNoZWNrIGlmIGlucHV0IHZhbCBmdWxm aWxscyBTRE0gcmVxdWlyZW1lbnQuCisgICAgICogQ2hhbmdlIGl0IHRvIHZhbGlkIHZhbHVlIGlm IFNETSBhbGxvd3MuCisgICAgICovCisgICAgYm9vbCAoKmNoZWNrX3ZhbCkoY29uc3Qgc3RydWN0 IGZlYXRfbm9kZSAqZmVhdCwgdW5zaWduZWQgbG9uZyAqdmFsKTsKIH0gKmZlYXRfcHJvcHNbRkVB VF9UWVBFX05VTV07CiAKIC8qCkBAIC0yNzUsMjkgKzI4MSw2IEBAIHN0YXRpYyBlbnVtIHBzcl9m ZWF0X3R5cGUgcHNyX3ZhbF90eXBlX3RvX2ZlYXRfdHlwZShlbnVtIHBzcl92YWxfdHlwZSB0eXBl KQogICAgIHJldHVybiBmZWF0X3R5cGU7CiB9CiAKLXN0YXRpYyBib29sIHBzcl9jaGVja19jYm0o dW5zaWduZWQgaW50IGNibV9sZW4sIHVuc2lnbmVkIGxvbmcgY2JtKQotewotICAgIHVuc2lnbmVk IGludCBmaXJzdF9iaXQsIHplcm9fYml0OwotCi0gICAgLyogU2V0IGJpdHMgc2hvdWxkIG9ubHkg aW4gdGhlIHJhbmdlIG9mIFswLCBjYm1fbGVuXS4gKi8KLSAgICBpZiAoIGNibSAmICh+MHVsIDw8 IGNibV9sZW4pICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLyogQXQgbGVhc3Qgb25l IGJpdCBuZWVkIHRvIGJlIHNldC4gKi8KLSAgICBpZiAoIGNibSA9PSAwICkKLSAgICAgICAgcmV0 dXJuIGZhbHNlOwotCi0gICAgZmlyc3RfYml0ID0gZmluZF9maXJzdF9iaXQoJmNibSwgY2JtX2xl bik7Ci0gICAgemVyb19iaXQgPSBmaW5kX25leHRfemVyb19iaXQoJmNibSwgY2JtX2xlbiwgZmly c3RfYml0KTsKLQotICAgIC8qIFNldCBiaXRzIHNob3VsZCBiZSBjb250aWd1b3VzLiAqLwotICAg IGlmICggemVyb19iaXQgPCBjYm1fbGVuICYmCi0gICAgICAgICBmaW5kX25leHRfYml0KCZjYm0s IGNibV9sZW4sIHplcm9fYml0KSA8IGNibV9sZW4gKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQogLyogSW1wbGVtZW50YXRpb24gb2YgYWxsb2NhdGlvbiBm ZWF0dXJlcycgZnVuY3Rpb25zLiAqLwogc3RhdGljIGludCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0 IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCBmZWF0X25vZGUgKmZlYXQsCkBAIC00MzAsNiArNDEzLDMwIEBAIHN0YXRpYyBib29sIGNh dF9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCiAgICAgcmV0dXJu IHRydWU7CiB9CiAKK3N0YXRpYyBib29sIGNhdF9jaGVja19jYm0oY29uc3Qgc3RydWN0IGZlYXRf bm9kZSAqZmVhdCwgdW5zaWduZWQgbG9uZyAqY2JtKQoreworICAgIHVuc2lnbmVkIGludCBmaXJz dF9iaXQsIHplcm9fYml0OworICAgIHVuc2lnbmVkIGludCBjYm1fbGVuID0gZmVhdC0+Y2F0X2lu Zm8uY2JtX2xlbjsKKworICAgIC8qIFNldCBiaXRzIHNob3VsZCBvbmx5IGluIHRoZSByYW5nZSBv ZiBbMCwgY2JtX2xlbl0uICovCisgICAgaWYgKCAqY2JtICYgKH4wdWwgPDwgY2JtX2xlbikgKQor ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvKiBBdCBsZWFzdCBvbmUgYml0IG5lZWQgdG8g YmUgc2V0LiAqLworICAgIGlmICggKmNibSA9PSAwICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor CisgICAgZmlyc3RfYml0ID0gZmluZF9maXJzdF9iaXQoY2JtLCBjYm1fbGVuKTsKKyAgICB6ZXJv X2JpdCA9IGZpbmRfbmV4dF96ZXJvX2JpdChjYm0sIGNibV9sZW4sIGZpcnN0X2JpdCk7CisKKyAg ICAvKiBTZXQgYml0cyBzaG91bGQgYmUgY29udGlndW91cy4gKi8KKyAgICBpZiAoIHplcm9fYml0 IDwgY2JtX2xlbiAmJgorICAgICAgICAgZmluZF9uZXh0X2JpdChjYm0sIGNibV9sZW4sIHplcm9f Yml0KSA8IGNibV9sZW4gKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1 ZTsKK30KKwogLyogTDMgQ0FUIHByb3BzICovCiBzdGF0aWMgdm9pZCBsM19jYXRfd3JpdGVfbXNy KHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSkKQEAgLTQ0Myw2ICs0NTAsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDNfY2F0X3Byb3BzID0gewogICAgIC5hbHRfdHlwZSA9 IFBTUl9WQUxfVFlQRV9VTktOT1dOLAogICAgIC5nZXRfZmVhdF9pbmZvID0gY2F0X2dldF9mZWF0 X2luZm8sCiAgICAgLndyaXRlX21zciA9IGwzX2NhdF93cml0ZV9tc3IsCisgICAgLmNoZWNrX3Zh bCA9IGNhdF9jaGVja19jYm0sCiB9OwogCiAvKiBMMyBDRFAgcHJvcHMgKi8KQEAgLTQ3Myw2ICs0 ODEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDNfY2RwX3Byb3BzID0gewog ICAgIC5hbHRfdHlwZSA9IFBTUl9WQUxfVFlQRV9MMywKICAgICAuZ2V0X2ZlYXRfaW5mbyA9IGwz X2NkcF9nZXRfZmVhdF9pbmZvLAogICAgIC53cml0ZV9tc3IgPSBsM19jZHBfd3JpdGVfbXNyLAor ICAgIC5jaGVja192YWwgPSBjYXRfY2hlY2tfY2JtLAogfTsKIAogLyogTDIgQ0FUIHByb3BzICov CkBAIC00ODgsNiArNDk3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwyX2Nh dF9wcm9wcyA9IHsKICAgICAuYWx0X3R5cGUgPSBQU1JfVkFMX1RZUEVfVU5LTk9XTiwKICAgICAu Z2V0X2ZlYXRfaW5mbyA9IGNhdF9nZXRfZmVhdF9pbmZvLAogICAgIC53cml0ZV9tc3IgPSBsMl9j YXRfd3JpdGVfbXNyLAorICAgIC5jaGVja192YWwgPSBjYXRfY2hlY2tfY2JtLAogfTsKIAogLyog TUJBIHByb3BzICovCkBAIC01MDcsNiArNTE3LDQzIEBAIHN0YXRpYyBib29sIG1iYV9nZXRfZmVh dF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCiBzdGF0aWMgdm9pZCBtYmFfd3Jp dGVfbXNyKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgZW51bSBwc3JfdmFsX3R5cGUgdHlwZSkKIHsKKyAgICB3cm1zcmwoTVNSX0lBMzJf UFNSX01CQV9NQVNLKGNvcyksIHZhbCk7Cit9CisKK3N0YXRpYyBib29sIG1iYV9jaGVja190aHJ0 bChjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1bnNpZ25lZCBsb25nICp0aHJ0bCkKK3sK KyAgICBpZiAoICp0aHJ0bCA+IGZlYXQtPm1iYV9pbmZvLnRocnRsX21heCApCisgICAgICAgIHJl dHVybiBmYWxzZTsKKworICAgIC8qCisgICAgICogUGVyIFNETSAoY2hhcHRlciAiTWVtb3J5IEJh bmR3aWR0aCBBbGxvY2F0aW9uIENvbmZpZ3VyYXRpb24iKToKKyAgICAgKiAxLiBMaW5lYXIgbW9k ZTogSW4gdGhlIGxpbmVhciBtb2RlIHRoZSBpbnB1dCBwcmVjaXNpb24gaXMgZGVmaW5lZAorICAg ICAqICAgIGFzIDEwMC0oTUJBX01BWCkuIEZvciBpbnN0YW5jZSwgaWYgdGhlIE1CQV9NQVggdmFs dWUgaXMgOTAsIHRoZQorICAgICAqICAgIGlucHV0IHByZWNpc2lvbiBpcyAxMCUuIFZhbHVlcyBu b3QgYW4gZXZlbiBtdWx0aXBsZSBvZiB0aGUKKyAgICAgKiAgICBwcmVjaXNpb24gKGUuZy4sIDEy JSkgd2lsbCBiZSByb3VuZGVkIGRvd24gKGUuZy4sIHRvIDEwJSBkZWxheQorICAgICAqICAgIGFw cGxpZWQpLgorICAgICAqIDIuIE5vbi1saW5lYXIgbW9kZTogSW5wdXQgZGVsYXkgdmFsdWVzIGFy ZSBwb3dlcnMtb2YtdHdvIGZyb20gemVybworICAgICAqICAgIHRvIHRoZSBNQkFfTUFYIHZhbHVl IGZyb20gQ1BVSUQuIEluIHRoaXMgY2FzZSBhbnkgdmFsdWVzIG5vdCBhCisgICAgICogICAgcG93 ZXIgb2YgdHdvIHdpbGwgYmUgcm91bmRlZCBkb3duIHRoZSBuZXh0IG5lYXJlc3QgcG93ZXIgb2Yg dHdvLgorICAgICAqLworICAgIGlmICggZmVhdC0+bWJhX2luZm8ubGluZWFyICkKKyAgICB7Cisg ICAgICAgIHVuc2lnbmVkIGludCBtb2Q7CisKKyAgICAgICAgaWYgKCBmZWF0LT5tYmFfaW5mby50 aHJ0bF9tYXggPj0gMTAwICkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBt b2QgPSAqdGhydGwgJSAoMTAwIC0gZmVhdC0+bWJhX2luZm8udGhydGxfbWF4KTsKKyAgICAgICAg KnRocnRsIC09IG1vZDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLyogTm90IHBv d2VyIG9mIDIuICovCisgICAgICAgIGlmICggKnRocnRsICYgKCp0aHJ0bCAtIDEpICkKKyAgICAg ICAgICAgICp0aHJ0bCA9ICp0aHJ0bCAmICgxIDw8IChmbHNsKCp0aHJ0bCkgLSAxKSk7CisgICAg fQorCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9w cyBtYmFfcHJvcHMgPSB7CkBAIC01MTUsNiArNTYyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBm ZWF0X3Byb3BzIG1iYV9wcm9wcyA9IHsKICAgICAuYWx0X3R5cGUgPSBQU1JfVkFMX1RZUEVfVU5L Tk9XTiwKICAgICAuZ2V0X2ZlYXRfaW5mbyA9IG1iYV9nZXRfZmVhdF9pbmZvLAogICAgIC53cml0 ZV9tc3IgPSBtYmFfd3JpdGVfbXNyLAorICAgIC5jaGVja192YWwgPSBtYmFfY2hlY2tfdGhydGws CiB9OwogCiBzdGF0aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNyX2Jvb2woY2hhciAqcywgY2hhciAq dmFsdWUsIGNoYXIgKmZlYXR1cmUsCkBAIC05MzUsNiArOTgzLDcgQEAgc3RhdGljIGludCBpbnNl cnRfdmFsX2ludG9fYXJyYXkodWludDMyX3QgdmFsW10sCiAgICAgY29uc3Qgc3RydWN0IGZlYXRf bm9kZSAqZmVhdDsKICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHM7CiAgICAgdW5z aWduZWQgaW50IGk7CisgICAgdW5zaWduZWQgbG9uZyBjaGVja192YWwgPSBuZXdfdmFsOwogICAg IGludCByZXQ7CiAKICAgICBBU1NFUlQoZmVhdF90eXBlIDwgRkVBVF9UWVBFX05VTSk7CkBAIC05 NTksOSArMTAwOCwxMSBAQCBzdGF0aWMgaW50IGluc2VydF92YWxfaW50b19hcnJheSh1aW50MzJf dCB2YWxbXSwKICAgICBpZiAoIGFycmF5X2xlbiA8IHByb3BzLT5jb3NfbnVtICkKICAgICAgICAg cmV0dXJuIC1FTk9TUEM7CiAKLSAgICBpZiAoICFwc3JfY2hlY2tfY2JtKGZlYXQtPmNhdF9pbmZv LmNibV9sZW4sIG5ld192YWwpICkKKyAgICBpZiAoICFwcm9wcy0+Y2hlY2tfdmFsKGZlYXQsICZj aGVja192YWwpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKKyAgICBuZXdfdmFsID0gY2hl Y2tfdmFsOworCiAgICAgLyoKICAgICAgKiBWYWx1ZSBzZXR0aW5nIHBvc2l0aW9uIGlzIHNhbWUg YXMgZmVhdHVyZSBhcnJheS4KICAgICAgKiBGb3IgQ0RQLCB1c2VyIG1heSBzZXQgYm90aCBEQVRB IGFuZCBDT0RFIHRvIHNhbWUgdmFsdWUuIEZvciBzdWNoIGNhc2UsCkBAIC0xMTg3LDI4ICsxMjM4 LDc0IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X3NvY2tldF9jcHUodW5zaWduZWQgaW50IHNv Y2tldCkKICAgICByZXR1cm4gbnJfY3B1X2lkczsKIH0KIAorLyoKKyAqIEJlY2F1c2UgbXVsdGlw bGUgZmVhdHVyZXMgbWF5IGNvLWV4aXN0LCB3ZSBuZWVkIGhhbmRsZSBhbGwgZmVhdHVyZXMgdG8g d3JpdGUKKyAqIHZhbHVlcyBvZiB0aGVtIGludG8gYSBDT1MgcmVnaXN0ZXIgd2l0aCBuZXcgQ09T IElELiBFLmc6CisgKiAxLiBMMyBDQVQgYW5kIE1CQSBjby1leGlzdC4KKyAqIDIuIERvbTEgYW5k IERvbTIgc2hhcmUgYSBzYW1lIENPUyBJRCAoMikuIFRoZSBMMyBDQVQgQ0JNIG9mIERvbTEgaXMg MHgxZmYsCisgKiAgICB0aGUgTUJBIFRocnRsZSBvZiBEb20xIGlzIDB4YS4KKyAqIDMuIFVzZXIg d2FudHMgdG8gY2hhbmdlIE1CQSBUaHJ0bCBvZiBEb20xIHRvIGJlIDB4MTQuIEJlY2F1c2UgQ09T IElEIDIgaXMKKyAqICAgIHVzZWQgYnkgRG9tMiB0b28sIHdlIGhhdmUgdG8gcGljayBhIG5ldyBD T1MgSUQgMy4gVGhlIG9yaWdpbmFsIHZhbHVlcyBvZgorICogICAgRG9tMSBvbiBDT1MgSUQgMyBt YXkgYmUgYmVsb3c6CisgKiAgICAgICAgICAgIC0tLS0tLS0tLQorICogICAgICAgICAgICB8IENP UyAzIHwKKyAqICAgICAgICAgICAgLS0tLS0tLS0tCisgKiAgICBMMyBDQVQgIHwgMHg3ZmYgfAor ICogICAgICAgICAgICAtLS0tLS0tLS0KKyAqICAgIE1CQSAgICAgfCAweDAgICB8CisgKiAgICAg ICAgICAgIC0tLS0tLS0tLQorICogNC4gQWZ0ZXIgc2V0dGluZywgdGhlIEwzIENBVCBDQk0gdmFs dWUgb2YgRG9tMSBzaG91bGQgYmUga2VwdCBhbmQgdGhlIG5ldyBNQkEKKyAqICAgIFRocnRsIGlz IHNldC4gU28sIHRoZSB2YWx1ZXMgb24gQ09TIElEIDMgc2hvdWxkIGJlIGJlbG93LgorICogICAg ICAgICAgICAtLS0tLS0tLS0KKyAqICAgICAgICAgICAgfCBDT1MgMyB8CisgKiAgICAgICAgICAg IC0tLS0tLS0tLQorICogICAgTDMgQ0FUICB8IDB4MWZmIHwKKyAqICAgICAgICAgICAgLS0tLS0t LS0tCisgKiAgICBNQkEgICAgIHwgMHgxNCAgfAorICogICAgICAgICAgICAtLS0tLS0tLS0KKyAq CisgKiBTbywgd2Ugc2hvdWxkIHdyaXRlIGFsbCBmZWF0dXJlcyB2YWx1ZXMgaW50byB0aGVpciBN U1JzLiBUaGF0IHJlcXVpcmVzIHRoZQorICogZmVhdHVyZSBhcnJheSwgZmVhdHVyZSBwcm9wZXJ0 aWVzIGFycmF5IGFuZCB2YWx1ZSBhcnJheSBhcmUgaW5wdXQuCisgKi8KIHN0cnVjdCBjb3Nfd3Jp dGVfaW5mbwogewogICAgIHVuc2lnbmVkIGludCBjb3M7Ci0gICAgc3RydWN0IGZlYXRfbm9kZSAq ZmVhdHVyZTsKKyAgICBzdHJ1Y3QgZmVhdF9ub2RlICoqZmVhdHVyZXM7CiAgICAgY29uc3QgdWlu dDMyX3QgKnZhbDsKLSAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHM7CisgICAgdW5z aWduZWQgaW50IGFycmF5X2xlbjsKKyAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqKnByb3Bz OwogfTsKIAogc3RhdGljIHZvaWQgZG9fd3JpdGVfcHNyX21zcnModm9pZCAqZGF0YSkKIHsKICAg ICBjb25zdCBzdHJ1Y3QgY29zX3dyaXRlX2luZm8gKmluZm8gPSBkYXRhOwotICAgIHN0cnVjdCBm ZWF0X25vZGUgKmZlYXQgPSBpbmZvLT5mZWF0dXJlOwotICAgIGNvbnN0IHN0cnVjdCBmZWF0X3By b3BzICpwcm9wcyA9IGluZm8tPnByb3BzOwotICAgIHVuc2lnbmVkIGludCBpLCBjb3MgPSBpbmZv LT5jb3MsIGNvc19udW0gPSBwcm9wcy0+Y29zX251bTsKKyAgICB1bnNpZ25lZCBpbnQgaSwgaiwg aW5kZXggPSAwLCBhcnJheV9sZW4gPSBpbmZvLT5hcnJheV9sZW4sIGNvcyA9IGluZm8tPmNvczsK KyAgICBjb25zdCB1aW50MzJfdCAqdmFsX2FycmF5ID0gaW5mby0+dmFsOwogCi0gICAgZm9yICgg aSA9IDA7IGkgPCBjb3NfbnVtOyBpKysgKQorICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlfU0la RShmZWF0X3Byb3BzKTsgaSsrICkKICAgICB7Ci0gICAgICAgIGlmICggZmVhdC0+Y29zX3JlZ192 YWxbY29zICogY29zX251bSArIGldICE9IGluZm8tPnZhbFtpXSApCisgICAgICAgIHN0cnVjdCBm ZWF0X25vZGUgKmZlYXQgPSBpbmZvLT5mZWF0dXJlc1tpXTsKKyAgICAgICAgY29uc3Qgc3RydWN0 IGZlYXRfcHJvcHMgKnByb3BzID0gaW5mby0+cHJvcHNbaV07CisgICAgICAgIHVuc2lnbmVkIGlu dCBjb3NfbnVtOworCisgICAgICAgIGlmICggIWZlYXQgfHwgIXByb3BzICkKKyAgICAgICAgICAg IGNvbnRpbnVlOworCisgICAgICAgIGNvc19udW0gPSBwcm9wcy0+Y29zX251bTsKKyAgICAgICAg aWYgKCBhcnJheV9sZW4gPCBjb3NfbnVtICkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg ICBmb3IgKCBqID0gMDsgaiA8IGNvc19udW07IGorKyApCiAgICAgICAgIHsKLSAgICAgICAgICAg IGZlYXQtPmNvc19yZWdfdmFsW2NvcyAqIGNvc19udW0gKyBpXSA9IGluZm8tPnZhbFtpXTsKLSAg ICAgICAgICAgIHByb3BzLT53cml0ZV9tc3IoY29zLCBpbmZvLT52YWxbaV0sIHByb3BzLT50eXBl W2ldKTsKKyAgICAgICAgICAgIGlmICggZmVhdC0+Y29zX3JlZ192YWxbY29zICogY29zX251bSAr IGpdICE9IHZhbF9hcnJheVtpbmRleCArIGpdICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg ICAgICBmZWF0LT5jb3NfcmVnX3ZhbFtjb3MgKiBjb3NfbnVtICsgal0gPSB2YWxfYXJyYXlbaW5k ZXggKyBqXTsKKyAgICAgICAgICAgICAgICBwcm9wcy0+d3JpdGVfbXNyKGNvcywgdmFsX2FycmF5 W2luZGV4ICsgal0sIHByb3BzLT50eXBlW2pdKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQor CisgICAgICAgIGFycmF5X2xlbiAtPSBjb3NfbnVtOworICAgICAgICBpbmRleCArPSBjb3NfbnVt OwogICAgIH0KIH0KIApAQCAtMTIxNiwzMCArMTMxMywxOSBAQCBzdGF0aWMgaW50IHdyaXRlX3Bz cl9tc3JzKHVuc2lnbmVkIGludCBzb2NrZXQsIHVuc2lnbmVkIGludCBjb3MsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQzMl90IHZhbFtdLCB1bnNpZ25lZCBpbnQgYXJyYXlf bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgZmVhdF90 eXBlKQogewotICAgIGludCByZXQ7CiAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbyA9 IGdldF9zb2NrZXRfaW5mbyhzb2NrZXQpOwogICAgIHN0cnVjdCBjb3Nfd3JpdGVfaW5mbyBkYXRh ID0KICAgICB7CiAgICAgICAgIC5jb3MgPSBjb3MsCi0gICAgICAgIC5mZWF0dXJlID0gaW5mby0+ ZmVhdHVyZXNbZmVhdF90eXBlXSwKLSAgICAgICAgLnByb3BzID0gZmVhdF9wcm9wc1tmZWF0X3R5 cGVdLAorICAgICAgICAuZmVhdHVyZXMgPSBpbmZvLT5mZWF0dXJlcywKKyAgICAgICAgLnZhbCA9 IHZhbCwKKyAgICAgICAgLmFycmF5X2xlbiA9IGFycmF5X2xlbiwKKyAgICAgICAgLnByb3BzID0g ZmVhdF9wcm9wcywKICAgICB9OwogCiAgICAgaWYgKCBjb3MgPiBpbmZvLT5mZWF0dXJlc1tmZWF0 X3R5cGVdLT5jb3NfbWF4ICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKLSAgICAvKiBTa2lw IHRvIHRoZSBmZWF0dXJlJ3MgdmFsdWUgaGVhZC4gKi8KLSAgICByZXQgPSBza2lwX3ByaW9yX2Zl YXR1cmVzKCZhcnJheV9sZW4sIGZlYXRfdHlwZSk7Ci0gICAgaWYgKCByZXQgPCAwICkKLSAgICAg ICAgcmV0dXJuIHJldDsKLQotICAgIHZhbCArPSByZXQ7Ci0KLSAgICBpZiAoIGFycmF5X2xlbiA8 IGZlYXRfcHJvcHNbZmVhdF90eXBlXS0+Y29zX251bSApCi0gICAgICAgIHJldHVybiAtRU5PU1BD OwotCi0gICAgZGF0YS52YWwgPSB2YWw7Ci0KICAgICBpZiAoIHNvY2tldCA9PSBjcHVfdG9fc29j a2V0KHNtcF9wcm9jZXNzb3JfaWQoKSkgKQogICAgICAgICBkb193cml0ZV9wc3JfbXNycygmZGF0 YSk7CiAgICAgZWxzZQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oIGIv eGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oCmluZGV4IGE1NzdhM2UuLjg4MjZjZmIgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAorKysgYi94ZW4vaW5jbHVkZS9wdWJs aWMvZG9tY3RsLmgKQEAgLTExNDQsNiArMTE0NCw3IEBAIHN0cnVjdCB4ZW5fZG9tY3RsX3Bzcl9h bGxvY19vcCB7CiAjZGVmaW5lIFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDNfREFUQSAgICA1 CiAjZGVmaW5lIFhFTl9ET01DVExfUFNSX0NBVF9PUF9TRVRfTDJfQ0JNICAgICA2CiAjZGVmaW5l IFhFTl9ET01DVExfUFNSX0NBVF9PUF9HRVRfTDJfQ0JNICAgICA3CisjZGVmaW5lIFhFTl9ET01D VExfUFNSX01CQV9PUF9TRVRfVEhSVEwgICAgICA4CiAjZGVmaW5lIFhFTl9ET01DVExfUFNSX01C QV9PUF9HRVRfVEhSVEwgICAgICA5CiAgICAgdWludDMyX3QgY21kOyAgICAgICAvKiBJTjogWEVO X0RPTUNUTF9QU1JfQ0FUX09QXyogKi8KICAgICB1aW50MzJfdCB0YXJnZXQ7ICAgIC8qIElOICov Ci0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6 Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=