From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [RFC v2 07/12] x86: implement set value flow for MBA. Date: Thu, 20 Jul 2017 16:49:08 +0800 Message-ID: <1500540553-29199-8-git-send-email-yi.y.sun@linux.intel.com> References: <1500540553-29199-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 1dY7NO-0007RN-M2 for xen-devel@lists.xenproject.org; Thu, 20 Jul 2017 09:04:06 +0000 In-Reply-To: <1500540553-29199-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 CgpTaWduZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCiB4 ZW4vYXJjaC94ODYvZG9tY3RsLmMgICAgICAgfCAgIDYgKysKIHhlbi9hcmNoL3g4Ni9wc3IuYyAg ICAgICAgICB8IDE4NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LQogeGVuL2luY2x1ZGUvcHVibGljL2RvbWN0bC5oIHwgICAxICsKIDMgZmlsZXMgY2hhbmdlZCwg MTQzIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9kb21jdGwuYyBiL3hlbi9hcmNoL3g4Ni9kb21jdGwuYwppbmRleCBmYTVlNmQ0Li4wYWE5 ZjM0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVuL2FyY2gveDg2 L2RvbWN0bC5jCkBAIC0xNDY4LDYgKzE0NjgsMTIgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9WQUxfVFlQRV9MMik7CiAgICAgICAgICAg ICBicmVhazsKIAorICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX01CQV9PUF9TRVRfVEhSVEw6 CisgICAgICAgICAgICByZXQgPSBwc3Jfc2V0X3ZhbChkLCBkb21jdGwtPnUucHNyX2FsbG9jX29w LnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfYWxs b2Nfb3AuZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTUl9WQUxfVFlQRV9N QkEpOworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBYRU5fRE9NQ1RMX1BTUl9D QVRfT1BfR0VUX0wzX0NCTToKICAgICAgICAgICAgIHJldCA9IHBzcl9nZXRfdmFsKGQsIGRvbWN0 bC0+dS5wc3JfYWxsb2Nfb3AudGFyZ2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JnZhbDMyLCBQU1JfVkFMX1RZUEVfTDMpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Bzci5j IGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IGM3NTc1NWIuLmRhZmJiYjAgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTEzNiw2ICsx MzYsMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIHsKIAogICAgIC8qIHdyaXRl X21zciBpcyB1c2VkIHRvIHdyaXRlIG91dCBmZWF0dXJlIE1TUiByZWdpc3Rlci4gKi8KICAgICB2 b2lkICgqd3JpdGVfbXNyKSh1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsIGVudW0gcHNy X3ZhbF90eXBlIHR5cGUpOworCisgICAgLyoKKyAgICAgKiBjaGVja19jaGFuZ2VfdmFsIGlzIHVz ZWQgdG8gY2hlY2sgaWYgaW5wdXQgdmFsIGZ1bGZpbGxzIFNETSByZXF1aXJlbWVudC4KKyAgICAg KiBDaGFuZ2UgaXQgdG8gdmFsaWQgdmFsdWUgaWYgU0RNIGFsbG93cy4KKyAgICAgKi8KKyAgICBi b29sICgqY2hlY2tfY2hhbmdlX3ZhbCkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdW5z aWduZWQgbG9uZyAqdmFsKTsKIH0gKmZlYXRfcHJvcHNbRkVBVF9UWVBFX05VTV07CiAKIC8qCkBA IC0yNzMsMjkgKzI3OSw2IEBAIHN0YXRpYyBlbnVtIHBzcl9mZWF0X3R5cGUgcHNyX3ZhbF90eXBl X3RvX2ZlYXRfdHlwZShlbnVtIHBzcl92YWxfdHlwZSB0eXBlKQogICAgIHJldHVybiBmZWF0X3R5 cGU7CiB9CiAKLXN0YXRpYyBib29sIHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50IGNibV9sZW4s IHVuc2lnbmVkIGxvbmcgY2JtKQotewotICAgIHVuc2lnbmVkIGludCBmaXJzdF9iaXQsIHplcm9f Yml0OwotCi0gICAgLyogU2V0IGJpdHMgc2hvdWxkIG9ubHkgaW4gdGhlIHJhbmdlIG9mIFswLCBj Ym1fbGVuXS4gKi8KLSAgICBpZiAoIGNibSAmICh+MHVsIDw8IGNibV9sZW4pICkKLSAgICAgICAg cmV0dXJuIGZhbHNlOwotCi0gICAgLyogQXQgbGVhc3Qgb25lIGJpdCBuZWVkIHRvIGJlIHNldC4g Ki8KLSAgICBpZiAoIGNibSA9PSAwICkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZmly c3RfYml0ID0gZmluZF9maXJzdF9iaXQoJmNibSwgY2JtX2xlbik7Ci0gICAgemVyb19iaXQgPSBm aW5kX25leHRfemVyb19iaXQoJmNibSwgY2JtX2xlbiwgZmlyc3RfYml0KTsKLQotICAgIC8qIFNl dCBiaXRzIHNob3VsZCBiZSBjb250aWd1b3VzLiAqLwotICAgIGlmICggemVyb19iaXQgPCBjYm1f bGVuICYmCi0gICAgICAgICBmaW5kX25leHRfYml0KCZjYm0sIGNibV9sZW4sIHplcm9fYml0KSA8 IGNibV9sZW4gKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K LQogLyogQ0FUIGNvbW1vbiBmdW5jdGlvbnMgaW1wbGVtZW50YXRpb24uICovCiBzdGF0aWMgaW50 IGluaXRfYWxsb2NfZmVhdHVyZXMoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKQEAgLTQx MCw2ICszOTMsMzEgQEAgc3RhdGljIGJvb2wgY2F0X2dldF9mZWF0X2luZm8oY29uc3Qgc3RydWN0 IGZlYXRfbm9kZSAqZmVhdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgY2F0 X2NoZWNrX2NoYW5nZV92YWwoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgKmNibSkKK3sKKyAgICB1bnNp Z25lZCBpbnQgZmlyc3RfYml0LCB6ZXJvX2JpdDsKKyAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbiA9 IGZlYXQtPmNhdF9pbmZvLmNibV9sZW47CisKKyAgICAvKiBTZXQgYml0cyBzaG91bGQgb25seSBp biB0aGUgcmFuZ2Ugb2YgWzAsIGNibV9sZW5dLiAqLworICAgIGlmICggKmNibSAmICh+MHVsIDw8 IGNibV9sZW4pICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLyogQXQgbGVhc3Qgb25l IGJpdCBuZWVkIHRvIGJlIHNldC4gKi8KKyAgICBpZiAoICpjYm0gPT0gMCApCisgICAgICAgIHJl dHVybiBmYWxzZTsKKworICAgIGZpcnN0X2JpdCA9IGZpbmRfZmlyc3RfYml0KGNibSwgY2JtX2xl bik7CisgICAgemVyb19iaXQgPSBmaW5kX25leHRfemVyb19iaXQoY2JtLCBjYm1fbGVuLCBmaXJz dF9iaXQpOworCisgICAgLyogU2V0IGJpdHMgc2hvdWxkIGJlIGNvbnRpZ3VvdXMuICovCisgICAg aWYgKCB6ZXJvX2JpdCA8IGNibV9sZW4gJiYKKyAgICAgICAgIGZpbmRfbmV4dF9iaXQoY2JtLCBj Ym1fbGVuLCB6ZXJvX2JpdCkgPCBjYm1fbGVuICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg ICAgcmV0dXJuIHRydWU7Cit9CisKIC8qIEwzIENBVCBwcm9wcyAqLwogc3RhdGljIHZvaWQgbDNf Y2F0X3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpCkBAIC00MjMsNiArNDMx LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwzX2NhdF9wcm9wcyA9IHsKICAg ICAuYWx0X3R5cGUgPSBQU1JfVkFMX1RZUEVfVU5LTk9XTiwKICAgICAuZ2V0X2ZlYXRfaW5mbyA9 IGNhdF9nZXRfZmVhdF9pbmZvLAogICAgIC53cml0ZV9tc3IgPSBsM19jYXRfd3JpdGVfbXNyLAor ICAgIC5jaGVja19jaGFuZ2VfdmFsID0gY2F0X2NoZWNrX2NoYW5nZV92YWwsCiB9OwogCiAvKiBM MyBDRFAgcHJvcHMgKi8KQEAgLTQ1Myw2ICs0NjIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZl YXRfcHJvcHMgbDNfY2RwX3Byb3BzID0gewogICAgIC5hbHRfdHlwZSA9IFBTUl9WQUxfVFlQRV9M MywKICAgICAuZ2V0X2ZlYXRfaW5mbyA9IGwzX2NkcF9nZXRfZmVhdF9pbmZvLAogICAgIC53cml0 ZV9tc3IgPSBsM19jZHBfd3JpdGVfbXNyLAorICAgIC5jaGVja19jaGFuZ2VfdmFsID0gY2F0X2No ZWNrX2NoYW5nZV92YWwsCiB9OwogCiAvKiBMMiBDQVQgcHJvcHMgKi8KQEAgLTQ2OCw2ICs0Nzgs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDJfY2F0X3Byb3BzID0gewogICAg IC5hbHRfdHlwZSA9IFBTUl9WQUxfVFlQRV9VTktOT1dOLAogICAgIC5nZXRfZmVhdF9pbmZvID0g Y2F0X2dldF9mZWF0X2luZm8sCiAgICAgLndyaXRlX21zciA9IGwyX2NhdF93cml0ZV9tc3IsCisg ICAgLmNoZWNrX2NoYW5nZV92YWwgPSBjYXRfY2hlY2tfY2hhbmdlX3ZhbCwKIH07CiAKIC8qIE1C QSBwcm9wcyAqLwpAQCAtNDg3LDYgKzQ5OCw0NCBAQCBzdGF0aWMgYm9vbCBtYmFfZ2V0X2ZlYXRf aW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAogc3RhdGljIHZvaWQgbWJhX3dyaXRl X21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpCiB7CisgICAgd3Jtc3JsKE1TUl9JQTMyX1BT Ul9NQkFfTUFTSyhjb3MpLCB2YWwpOworfQorCitzdGF0aWMgYm9vbCBtYmFfY2hlY2tfY2hhbmdl X3ZhbChjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAqdGhydGwpCit7CisgICAgaWYgKCAqdGhydGwgPiBm ZWF0LT5tYmFfaW5mby50aHJ0bF9tYXggKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv KgorICAgICAqIFBlciBTRE0gKGNoYXB0ZXIgIk1lbW9yeSBCYW5kd2lkdGggQWxsb2NhdGlvbiBD b25maWd1cmF0aW9uIik6CisgICAgICogMS4gTGluZWFyIG1vZGU6IEluIHRoZSBsaW5lYXIgbW9k ZSB0aGUgaW5wdXQgcHJlY2lzaW9uIGlzIGRlZmluZWQKKyAgICAgKiAgICBhcyAxMDAtKE1CQV9N QVgpLiBGb3IgaW5zdGFuY2UsIGlmIHRoZSBNQkFfTUFYIHZhbHVlIGlzIDkwLCB0aGUKKyAgICAg KiAgICBpbnB1dCBwcmVjaXNpb24gaXMgMTAlLiBWYWx1ZXMgbm90IGFuIGV2ZW4gbXVsdGlwbGUg b2YgdGhlCisgICAgICogICAgcHJlY2lzaW9uIChlLmcuLCAxMiUpIHdpbGwgYmUgcm91bmRlZCBk b3duIChlLmcuLCB0byAxMCUgZGVsYXkKKyAgICAgKiAgICBhcHBsaWVkKS4KKyAgICAgKiAyLiBO b24tbGluZWFyIG1vZGU6IElucHV0IGRlbGF5IHZhbHVlcyBhcmUgcG93ZXJzLW9mLXR3byBmcm9t IHplcm8KKyAgICAgKiAgICB0byB0aGUgTUJBX01BWCB2YWx1ZSBmcm9tIENQVUlELiBJbiB0aGlz IGNhc2UgYW55IHZhbHVlcyBub3QgYQorICAgICAqICAgIHBvd2VyIG9mIHR3byB3aWxsIGJlIHJv dW5kZWQgZG93biB0aGUgbmV4dCBuZWFyZXN0IHBvd2VyIG9mIHR3by4KKyAgICAgKi8KKyAgICBp ZiAoIGZlYXQtPm1iYV9pbmZvLmxpbmVhciApCisgICAgeworICAgICAgICB1bnNpZ25lZCBpbnQg bW9kOworCisgICAgICAgIGlmICggZmVhdC0+bWJhX2luZm8udGhydGxfbWF4ID49IDEwMCApCisg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgbW9kID0gKnRocnRsICUgKDEwMCAt IGZlYXQtPm1iYV9pbmZvLnRocnRsX21heCk7CisgICAgICAgICp0aHJ0bCAtPSBtb2Q7CisgICAg fQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIC8qIE5vdCBwb3dlciBvZiAyLiAqLworICAgICAg ICBpZiAoICp0aHJ0bCAmICgqdGhydGwgLSAxKSApCisgICAgICAgICAgICAqdGhydGwgPSAqdGhy dGwgJiAoMSA8PCAoZmxzbCgqdGhydGwpIC0gMSkpOworICAgIH0KKworICAgIHJldHVybiB0cnVl OwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbWJhX3Byb3BzID0gewpAQCAt NDk1LDYgKzU0NCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBtYmFfcHJvcHMg PSB7CiAgICAgLmFsdF90eXBlID0gUFNSX1ZBTF9UWVBFX1VOS05PV04sCiAgICAgLmdldF9mZWF0 X2luZm8gPSBtYmFfZ2V0X2ZlYXRfaW5mbywKICAgICAud3JpdGVfbXNyID0gbWJhX3dyaXRlX21z ciwKKyAgICAuY2hlY2tfY2hhbmdlX3ZhbCA9IG1iYV9jaGVja19jaGFuZ2VfdmFsLAogfTsKIAog c3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNoYXIgKnMsIGNoYXIgKnZhbHVlLCBj aGFyICpmZWF0dXJlLApAQCAtOTE1LDYgKzk2NSw3IEBAIHN0YXRpYyBpbnQgaW5zZXJ0X3ZhbF9p bnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZl YXQ7CiAgICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKnByb3BzOwogICAgIHVuc2lnbmVkIGlu dCBpOworICAgIHVuc2lnbmVkIGxvbmcgY2hlY2tfdmFsID0gbmV3X3ZhbDsKICAgICBpbnQgcmV0 OwogCiAgICAgQVNTRVJUKGZlYXRfdHlwZSA8IEZFQVRfVFlQRV9OVU0pOwpAQCAtOTM5LDkgKzk5 MCwxMSBAQCBzdGF0aWMgaW50IGluc2VydF92YWxfaW50b19hcnJheSh1aW50MzJfdCB2YWxbXSwK ICAgICBpZiAoIGFycmF5X2xlbiA8IHByb3BzLT5jb3NfbnVtICkKICAgICAgICAgcmV0dXJuIC1F Tk9TUEM7CiAKLSAgICBpZiAoICFwc3JfY2hlY2tfY2JtKGZlYXQtPmNhdF9pbmZvLmNibV9sZW4s IG5ld192YWwpICkKKyAgICBpZiAoICFwcm9wcy0+Y2hlY2tfY2hhbmdlX3ZhbChmZWF0LCAmY2hl Y2tfdmFsKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCisgICAgbmV3X3ZhbCA9IGNoZWNr X3ZhbDsKKwogICAgIC8qCiAgICAgICogVmFsdWUgc2V0dGluZyBwb3NpdGlvbiBpcyBzYW1lIGFz IGZlYXR1cmUgYXJyYXkuCiAgICAgICogRm9yIENEUCwgdXNlciBtYXkgc2V0IGJvdGggREFUQSBh bmQgQ09ERSB0byBzYW1lIHZhbHVlLiBGb3Igc3VjaCBjYXNlLApAQCAtMTE2NywyOCArMTIyMCw3 NCBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9zb2NrZXRfY3B1KHVuc2lnbmVkIGludCBzb2Nr ZXQpCiAgICAgcmV0dXJuIG5yX2NwdV9pZHM7CiB9CiAKKy8qCisgKiBCZWNhdXNlIG11bHRpcGxl IGZlYXR1cmVzIG1heSBjby1leGlzdCwgd2UgbmVlZCBoYW5kbGUgYWxsIGZlYXR1cmVzIHRvIHdy aXRlCisgKiB2YWx1ZXMgb2YgdGhlbSBpbnRvIGEgQ09TIHJlZ2lzdGVyIHdpdGggbmV3IENPUyBJ RC4gRS5nOgorICogMS4gTDMgQ0FUIGFuZCBNQkEgY28tZXhpc3QuCisgKiAyLiBEb20xIGFuZCBE b20yIHNoYXJlIGEgc2FtZSBDT1MgSUQgKDIpLiBUaGUgTDMgQ0FUIENCTSBvZiBEb20xIGlzIDB4 MWZmLAorICogICAgdGhlIE1CQSBUaHJ0bGUgb2YgRG9tMSBpcyAweGEuCisgKiAzLiBVc2VyIHdh bnRzIHRvIGNoYW5nZSBNQkEgVGhydGwgb2YgRG9tMSB0byBiZSAweDE0LiBCZWNhdXNlIENPUyBJ RCAyIGlzCisgKiAgICB1c2VkIGJ5IERvbTIgdG9vLCB3ZSBoYXZlIHRvIHBpY2sgYSBuZXcgQ09T IElEIDMuIFRoZSBvcmlnaW5hbCB2YWx1ZXMgb2YKKyAqICAgIERvbTEgb24gQ09TIElEIDMgbWF5 IGJlIGJlbG93OgorICogICAgICAgICAgICAtLS0tLS0tLS0KKyAqICAgICAgICAgICAgfCBDT1Mg MyB8CisgKiAgICAgICAgICAgIC0tLS0tLS0tLQorICogICAgTDMgQ0FUICB8IDB4N2ZmIHwKKyAq ICAgICAgICAgICAgLS0tLS0tLS0tCisgKiAgICBNQkEgICAgIHwgMHgwICAgfAorICogICAgICAg ICAgICAtLS0tLS0tLS0KKyAqIDQuIEFmdGVyIHNldHRpbmcsIHRoZSBMMyBDQVQgQ0JNIHZhbHVl IG9mIERvbTEgc2hvdWxkIGJlIGtlcHQgYW5kIHRoZSBuZXcgTUJBCisgKiAgICBUaHJ0bCBpcyBz ZXQuIFNvLCB0aGUgdmFsdWVzIG9uIENPUyBJRCAzIHNob3VsZCBiZSBiZWxvdy4KKyAqICAgICAg ICAgICAgLS0tLS0tLS0tCisgKiAgICAgICAgICAgIHwgQ09TIDMgfAorICogICAgICAgICAgICAt LS0tLS0tLS0KKyAqICAgIEwzIENBVCAgfCAweDFmZiB8CisgKiAgICAgICAgICAgIC0tLS0tLS0t LQorICogICAgTUJBICAgICB8IDB4MTQgIHwKKyAqICAgICAgICAgICAgLS0tLS0tLS0tCisgKgor ICogU28sIHdlIHNob3VsZCB3cml0ZSBhbGwgZmVhdHVyZXMgdmFsdWVzIGludG8gdGhlaXIgTVNS cy4gVGhhdCByZXF1aXJlcyB0aGUKKyAqIGZlYXR1cmUgYXJyYXksIGZlYXR1cmUgcHJvcGVydGll cyBhcnJheSBhbmQgdmFsdWUgYXJyYXkgYXJlIGlucHV0LgorICovCiBzdHJ1Y3QgY29zX3dyaXRl X2luZm8KIHsKICAgICB1bnNpZ25lZCBpbnQgY29zOwotICAgIHN0cnVjdCBmZWF0X25vZGUgKmZl YXR1cmU7CisgICAgc3RydWN0IGZlYXRfbm9kZSAqKmZlYXR1cmVzOwogICAgIGNvbnN0IHVpbnQz Ml90ICp2YWw7Ci0gICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKnByb3BzOworICAgIHVuc2ln bmVkIGludCBhcnJheV9sZW47CisgICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKipwcm9wczsK IH07CiAKIHN0YXRpYyB2b2lkIGRvX3dyaXRlX3Bzcl9tc3JzKHZvaWQgKmRhdGEpCiB7CiAgICAg Y29uc3Qgc3RydWN0IGNvc193cml0ZV9pbmZvICppbmZvID0gZGF0YTsKLSAgICBzdHJ1Y3QgZmVh dF9ub2RlICpmZWF0ID0gaW5mby0+ZmVhdHVyZTsKLSAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9w cyAqcHJvcHMgPSBpbmZvLT5wcm9wczsKLSAgICB1bnNpZ25lZCBpbnQgaSwgY29zID0gaW5mby0+ Y29zLCBjb3NfbnVtID0gcHJvcHMtPmNvc19udW07CisgICAgdW5zaWduZWQgaW50IGksIGosIGlu ZGV4ID0gMCwgYXJyYXlfbGVuID0gaW5mby0+YXJyYXlfbGVuLCBjb3MgPSBpbmZvLT5jb3M7Cisg ICAgY29uc3QgdWludDMyX3QgKnZhbF9hcnJheSA9IGluZm8tPnZhbDsKIAotICAgIGZvciAoIGkg PSAwOyBpIDwgY29zX251bTsgaSsrICkKKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUo ZmVhdF9wcm9wcyk7IGkrKyApCiAgICAgewotICAgICAgICBpZiAoIGZlYXQtPmNvc19yZWdfdmFs W2NvcyAqIGNvc19udW0gKyBpXSAhPSBpbmZvLT52YWxbaV0gKQorICAgICAgICBzdHJ1Y3QgZmVh dF9ub2RlICpmZWF0ID0gaW5mby0+ZmVhdHVyZXNbaV07CisgICAgICAgIGNvbnN0IHN0cnVjdCBm ZWF0X3Byb3BzICpwcm9wcyA9IGluZm8tPnByb3BzW2ldOworICAgICAgICB1bnNpZ25lZCBpbnQg Y29zX251bTsKKworICAgICAgICBpZiAoICFmZWF0IHx8ICFwcm9wcyApCisgICAgICAgICAgICBj b250aW51ZTsKKworICAgICAgICBjb3NfbnVtID0gcHJvcHMtPmNvc19udW07CisgICAgICAgIGlm ICggYXJyYXlfbGVuIDwgY29zX251bSApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg Zm9yICggaiA9IDA7IGogPCBjb3NfbnVtOyBqKysgKQogICAgICAgICB7Ci0gICAgICAgICAgICBm ZWF0LT5jb3NfcmVnX3ZhbFtjb3MgKiBjb3NfbnVtICsgaV0gPSBpbmZvLT52YWxbaV07Ci0gICAg ICAgICAgICBwcm9wcy0+d3JpdGVfbXNyKGNvcywgaW5mby0+dmFsW2ldLCBwcm9wcy0+dHlwZVtp XSk7CisgICAgICAgICAgICBpZiAoIGZlYXQtPmNvc19yZWdfdmFsW2NvcyAqIGNvc19udW0gKyBq XSAhPSB2YWxfYXJyYXlbaW5kZXggKyBqXSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg ICAgZmVhdC0+Y29zX3JlZ192YWxbY29zICogY29zX251bSArIGpdID0gdmFsX2FycmF5W2luZGV4 ICsgal07CisgICAgICAgICAgICAgICAgcHJvcHMtPndyaXRlX21zcihjb3MsIHZhbF9hcnJheVtp bmRleCArIGpdLCBwcm9wcy0+dHlwZVtqXSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKwor ICAgICAgICBhcnJheV9sZW4gLT0gY29zX251bTsKKyAgICAgICAgaW5kZXggKz0gY29zX251bTsK ICAgICB9CiB9CiAKQEAgLTExOTYsMzAgKzEyOTUsMTkgQEAgc3RhdGljIGludCB3cml0ZV9wc3Jf bXNycyh1bnNpZ25lZCBpbnQgc29ja2V0LCB1bnNpZ25lZCBpbnQgY29zLAogICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB2YWxbXSwgdW5zaWduZWQgaW50IGFycmF5X2xl biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlw ZSkKIHsKLSAgICBpbnQgcmV0OwogICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8gPSBn ZXRfc29ja2V0X2luZm8oc29ja2V0KTsKICAgICBzdHJ1Y3QgY29zX3dyaXRlX2luZm8gZGF0YSA9 CiAgICAgewogICAgICAgICAuY29zID0gY29zLAotICAgICAgICAuZmVhdHVyZSA9IGluZm8tPmZl YXR1cmVzW2ZlYXRfdHlwZV0sCi0gICAgICAgIC5wcm9wcyA9IGZlYXRfcHJvcHNbZmVhdF90eXBl XSwKKyAgICAgICAgLmZlYXR1cmVzID0gaW5mby0+ZmVhdHVyZXMsCisgICAgICAgIC52YWwgPSB2 YWwsCisgICAgICAgIC5hcnJheV9sZW4gPSBhcnJheV9sZW4sCisgICAgICAgIC5wcm9wcyA9IGZl YXRfcHJvcHMsCiAgICAgfTsKIAogICAgIGlmICggY29zID4gaW5mby0+ZmVhdHVyZXNbZmVhdF90 eXBlXS0+Y29zX21heCApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCi0gICAgLyogU2tpcCB0 byB0aGUgZmVhdHVyZSdzIHZhbHVlIGhlYWQuICovCi0gICAgcmV0ID0gc2tpcF9wcmlvcl9mZWF0 dXJlcygmYXJyYXlfbGVuLCBmZWF0X3R5cGUpOwotICAgIGlmICggcmV0IDwgMCApCi0gICAgICAg IHJldHVybiByZXQ7Ci0gICAgZWxzZQotICAgICAgICB2YWwgKz0gcmV0OwotCi0gICAgaWYgKCBh cnJheV9sZW4gPCBmZWF0X3Byb3BzW2ZlYXRfdHlwZV0tPmNvc19udW0gKQotICAgICAgICByZXR1 cm4gLUVOT1NQQzsKLQotICAgIGRhdGEudmFsID0gdmFsOwotCiAgICAgaWYgKCBzb2NrZXQgPT0g Y3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpICkKICAgICAgICAgZG9fd3JpdGVfcHNy X21zcnMoJmRhdGEpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9k b21jdGwuaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaAppbmRleCAzMTk2NjZlLi4zM2Rj OTA5IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmgKKysrIGIveGVuL2lu Y2x1ZGUvcHVibGljL2RvbWN0bC5oCkBAIC0xMTQ0LDYgKzExNDQsNyBAQCBzdHJ1Y3QgeGVuX2Rv bWN0bF9wc3JfYWxsb2Nfb3AgewogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wz X0RBVEEgICAgNQogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfU0VUX0wyX0NCTSAgICAg NgogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9DQVRfT1BfR0VUX0wyX0NCTSAgICAgNworI2RlZmlu ZSBYRU5fRE9NQ1RMX1BTUl9NQkFfT1BfU0VUX1RIUlRMICAgICAgOAogI2RlZmluZSBYRU5fRE9N Q1RMX1BTUl9NQkFfT1BfR0VUX1RIUlRMICAgICAgOQogICAgIHVpbnQzMl90IGNtZDsgICAgICAg LyogSU46IFhFTl9ET01DVExfUFNSX0NBVF9PUF8qICovCiAgICAgdWludDMyX3QgdGFyZ2V0OyAg ICAvKiBJTiAqLwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK