From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v3 07/15] x86: implement set value flow for MBA Date: Tue, 5 Sep 2017 17:32:29 +0800 Message-ID: <1504603957-5389-8-git-send-email-yi.y.sun@linux.intel.com> References: <1504603957-5389-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 1dpAW1-000791-FF for xen-devel@lists.xenproject.org; Tue, 05 Sep 2017 09:51:29 +0000 In-Reply-To: <1504603957-5389-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, dgdegra@tycho.nsa.gov, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHNldCB2YWx1ZSBmbG93IGZvciBNQkEgaW5jbHVkaW5nIGl0 cyBjYWxsYmFjawpmdW5jdGlvbiBhbmQgZG9tY3RsIGludGVyZmFjZS4KCkl0IGFsc28gY2hhbmdl cyB0aGUgbWVtZWJlcnMgaW4gJ2Nvc193cml0ZV9pbmZvJyB0byB0cmFuc2ZlciB0aGUKZmVhdHVy ZSBhcnJheSwgZmVhdHVyZSBwcm9wZXJ0aWVzIGFycmF5IGFuZCB2YWx1ZSBhcnJheS4gVGhlbiwg d2UKY2FuIHdyaXRlIGFsbCBmZWF0dXJlcyB2YWx1ZXMgb24gdGhlIGNvcyBpZCBpbnRvIE1TUnMu CgpCZWNhdXNlIG11bHRpcGxlIGZlYXR1cmVzIG1heSBjby1leGlzdCwgd2UgbmVlZCBoYW5kbGUg YWxsIGZlYXR1cmVzIHRvIHdyaXRlCnZhbHVlcyBvZiB0aGVtIGludG8gYSBDT1MgcmVnaXN0ZXIg d2l0aCBuZXcgQ09TIElELiBFLmc6CjEuIEwzIENBVCBhbmQgTUJBIGNvLWV4aXN0LgoyLiBEb20x IGFuZCBEb20yIHNoYXJlIGEgc2FtZSBDT1MgSUQgKDIpLiBUaGUgTDMgQ0FUIENCTSBvZiBEb20x IGlzIDB4MWZmLAogICB0aGUgTUJBIFRocnRsZSBvZiBEb20xIGlzIDB4YS4KMy4gVXNlciB3YW50 cyB0byBjaGFuZ2UgTUJBIFRocnRsIG9mIERvbTEgdG8gYmUgMHgxNC4gQmVjYXVzZSBDT1MgSUQg MiBpcwogICB1c2VkIGJ5IERvbTIgdG9vLCB3ZSBoYXZlIHRvIHBpY2sgYSBuZXcgQ09TIElEIDMu IFRoZSB2YWx1ZXMgb2YgRG9tMSBvbgogICBDT1MgSUQgMyBhcmUgYWxsIGRlZmF1bHQgdmFsdWVz IGFzIGJlbG93OgogICAgICAgICAgIC0tLS0tLS0tLQogICAgICAgICAgIHwgQ09TIDMgfAogICAg ICAgICAgIC0tLS0tLS0tLQogICBMMyBDQVQgIHwgMHg3ZmYgfAogICAgICAgICAgIC0tLS0tLS0t LQogICBNQkEgICAgIHwgMHgwICAgfAogICAgICAgICAgIC0tLS0tLS0tLQo0LiBBZnRlciBzZXR0 aW5nLCB0aGUgTDMgQ0FUIENCTSB2YWx1ZSBvZiBEb20xIHNob3VsZCBiZSBrZXB0IGFuZCB0aGUg bmV3IE1CQQogICBUaHJ0bCBpcyBzZXQuIFNvLCB0aGUgdmFsdWVzIG9uIENPUyBJRCAzIHNob3Vs ZCBiZSBiZWxvdy4KICAgICAgICAgICAtLS0tLS0tLS0KICAgICAgICAgICB8IENPUyAzIHwKICAg ICAgICAgICAtLS0tLS0tLS0KICAgTDMgQ0FUICB8IDB4MWZmIHwKICAgICAgICAgICAtLS0tLS0t LS0KICAgTUJBICAgICB8IDB4MTQgIHwKICAgICAgICAgICAtLS0tLS0tLS0KClNvLCB3ZSBzaG91 bGQgd3JpdGUgYWxsIGZlYXR1cmVzIHZhbHVlcyBpbnRvIHRoZWlyIE1TUnMuIFRoYXQgcmVxdWly ZXMgdGhlCmZlYXR1cmUgYXJyYXksIGZlYXR1cmUgcHJvcGVydGllcyBhcnJheSBhbmQgdmFsdWUg YXJyYXkgYXJlIGlucHV0LgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5p bnRlbC5jb20+Ci0tLQp2MzoKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlIHRvIG1ha2UgaXQg Y2xlYXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gbW9kaWZ5 IGZ1bmN0aW9uYWxpdHkgb2YgJ2NoZWNrX3ZhbCcgdG8gbWFrZSBpdCBzaW1wbGUgdG8gb25seSBj aGVjayB2YWx1ZS4KICAgICAgQ2hhbmdlIHRoZSBsYXN0IHBhcmFtZXRlciB0eXBlIGZyb20gJ3Vu c2lnbmVkIGxvbmcgKicgdG8gJ3Vuc2lnbmVkIGxvbmcnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJv Z2VyIFBhdSBNb25uw6kpCiAgICAtIGNhbGwgcmRtc3JsIHRvIGdldCB2YWx1ZSBqdXN0IHdyaXR0 ZW4gaW50byBNU1IgZm9yIE1CQS4gQmVjYXVzZSBIVyBjYW4KICAgICAgYXV0b21hdGljYWxseSBj aGFuZ2UgaW5wdXQgdmFsdWUgdG8gd2hhdCBpdCB3YW50cy4KICAgICAgKHN1Z2dlc3RlZCBieSBS b2dlciBQYXUgTW9ubsOpKQogICAgLSBjaGFuZ2UgdHlwZSBvZiAnd3JpdGVfbXNyJyB0byAndWlu dDMyX3QnIHRvIHJldHVybiB0aGUgdmFsdWUgYWN0dWFsbHkKICAgICAgd3JpdHRlbiBpbnRvIE1T Ui4gVGhlbiwgY2hhbmdlICdkb193cml0ZV9wc3JfbXNycycgdG8gc2V0IHRoZSByZXR1cm5lZAog ICAgICB2YWx1ZSBpbnRvICdjb3NfcmVnX3ZhbFtdJwogICAgLSBtb3ZlIHRoZSBkZWNsYXJhdGlv biBvZiAnaicgaW50byBsb29wIGluICdkb193cml0ZV9wc3JfbXNycycuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gY2hhbmdlICdtYmFfaW5mbycgdG8gJ21iYScu CiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gY2hhbmdlICdjYXRf aW5mbycgdG8gJ2NhdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAg IC0gcmVuYW1lICdwc3JfY2F0L1BTUl9DQVQnIHRvICdwc3JfYWxsb2MvUFNSX0FMTE9DJyBhbmQg cmVtb3ZlICdvcC9PUCcKICAgICAgZnJvbSBuYW1lLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2Vy IFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSAnUFNSX1ZBTF9UWVBFX01CQScgdG8gJ1BTUl9UWVBF X01CQV9USFJUTCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjI6CiAg ICAtIHJlbW92ZSBsaW5lYXIgbW9kZSAndGhydGxfbWF4JyBjaGVjayBpbiAnbWJhX2NoZWNrX3Ro cnRsJyBiZWNhdXNlIGl0IGhhcwogICAgICBiZWVuIGNoZWNrZWQgaW4gJ21iYV9pbml0X2ZlYXR1 cmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0gZm9yIG5vbi1saW5lYXIg bW9kZSwgY2hlY2sgaWYgJyp0aHJ0bCcgaXMgbm90IDAgaW4gJ21iYV9jaGVja190aHJ0bCcuIElm CiAgICAgIGl0IGlzIDAsIHdlIGRvIG5vdCBuZWVkIHRvIGNoYW5nZSBpdC4KICAgICAgKHN1Z2dl c3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIG1vdmUgY29tbWVudHMgdG8gZXhwbGFpbiBjaGFuZ2Vz IG9mICdjb3Nfd3JpdGVfaW5mbycgZnJvbSBwc3IuYyB0byBjb21taXQKICAgICAgbWVzc2FnZS4K ICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCi0tLQogeGVuL2FyY2gveDg2L2RvbWN0bC5j ICAgICAgIHwgICA2ICsrCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAgICAgICAgfCAxNDYgKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9pbmNsdWRlL3B1Ymxp Yy9kb21jdGwuaCB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyksIDU3 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21jdGwuYyBiL3hlbi9h cmNoL3g4Ni9kb21jdGwuYwppbmRleCA3OTAyYWY3Li44NTUwZDA2IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvZG9tY3RsLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWN0bC5jCkBAIC0xNDY4LDYg KzE0NjgsMTIgQEAgbG9uZyBhcmNoX2RvX2RvbWN0bCgKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBTUl9UWVBFX0wyX0NCTSk7CiAgICAgICAgICAgICBicmVhazsKIAorICAgICAgICBj YXNlIFhFTl9ET01DVExfUFNSX0FMTE9DX1NFVF9NQkFfVEhSVEw6CisgICAgICAgICAgICByZXQg PSBwc3Jfc2V0X3ZhbChkLCBkb21jdGwtPnUucHNyX2FsbG9jLnRhcmdldCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRvbWN0bC0+dS5wc3JfYWxsb2MuZGF0YSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFBTUl9UWVBFX01CQV9USFJUTCk7CisgICAgICAgICAgICBicmVh azsKKwogICAgICAgICBjYXNlIFhFTl9ET01DVExfUFNSX0FMTE9DX0dFVF9MM19DQk06CiAgICAg ICAgICAgICByZXQgPSBwc3JfZ2V0X3ZhbChkLCBkb21jdGwtPnUucHNyX2FsbG9jLnRhcmdldCwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YWwzMiwgUFNSX1RZUEVfTDNfQ0JNKTsK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRl eCAwNDg2ZDJkLi5kNjMzMTk0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIv eGVuL2FyY2gveDg2L3Bzci5jCkBAIC0xMzcsNyArMTM3LDEwIEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZmVhdF9wcm9wcyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFb XSwgdW5zaWduZWQgaW50IGFycmF5X2xlbik7CiAKICAgICAvKiB3cml0ZV9tc3IgaXMgdXNlZCB0 byB3cml0ZSBvdXQgZmVhdHVyZSBNU1IgcmVnaXN0ZXIuICovCi0gICAgdm9pZCAoKndyaXRlX21z cikodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLCBlbnVtIHBzcl90eXBlIHR5cGUpOwor ICAgIHVpbnQzMl90ICgqd3JpdGVfbXNyKSh1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWws IGVudW0gcHNyX3R5cGUgdHlwZSk7CisKKyAgICAvKiBjaGVja192YWwgaXMgdXNlZCB0byBjaGVj ayBpZiBpbnB1dCB2YWwgZnVsZmlsbHMgU0RNIHJlcXVpcmVtZW50LiAqLworICAgIGJvb2wgKCpj aGVja192YWwpKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsIHVuc2lnbmVkIGxvbmcgdmFs KTsKIH0gKmZlYXRfcHJvcHNbRkVBVF9UWVBFX05VTV07CiAKIC8qCkBAIC0yNzQsMjkgKzI3Nyw2 IEBAIHN0YXRpYyBlbnVtIHBzcl9mZWF0X3R5cGUgcHNyX3R5cGVfdG9fZmVhdF90eXBlKGVudW0g cHNyX3R5cGUgdHlwZSkKICAgICByZXR1cm4gZmVhdF90eXBlOwogfQogCi1zdGF0aWMgYm9vbCBw c3JfY2hlY2tfY2JtKHVuc2lnbmVkIGludCBjYm1fbGVuLCB1bnNpZ25lZCBsb25nIGNibSkKLXsK LSAgICB1bnNpZ25lZCBpbnQgZmlyc3RfYml0LCB6ZXJvX2JpdDsKLQotICAgIC8qIFNldCBiaXRz IHNob3VsZCBvbmx5IGluIHRoZSByYW5nZSBvZiBbMCwgY2JtX2xlbl0uICovCi0gICAgaWYgKCBj Ym0gJiAofjB1bCA8PCBjYm1fbGVuKSApCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8q IEF0IGxlYXN0IG9uZSBiaXQgbmVlZCB0byBiZSBzZXQuICovCi0gICAgaWYgKCBjYm0gPT0gMCAp Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZpcnN0X2JpdCA9IGZpbmRfZmlyc3RfYml0 KCZjYm0sIGNibV9sZW4pOwotICAgIHplcm9fYml0ID0gZmluZF9uZXh0X3plcm9fYml0KCZjYm0s IGNibV9sZW4sIGZpcnN0X2JpdCk7Ci0KLSAgICAvKiBTZXQgYml0cyBzaG91bGQgYmUgY29udGln dW91cy4gKi8KLSAgICBpZiAoIHplcm9fYml0IDwgY2JtX2xlbiAmJgotICAgICAgICAgZmluZF9u ZXh0X2JpdCgmY2JtLCBjYm1fbGVuLCB6ZXJvX2JpdCkgPCBjYm1fbGVuICkKLSAgICAgICAgcmV0 dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8qIEltcGxlbWVudGF0aW9uIG9m IGFsbG9jYXRpb24gZmVhdHVyZXMnIGZ1bmN0aW9ucy4gKi8KIHN0YXRpYyBpbnQgY2F0X2luaXRf ZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LApAQCAtNDMxLDExICs0MTEsMzcgQEAg c3RhdGljIGJvb2wgY2F0X2dldF9mZWF0X2luZm8oY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVh dCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIGJvb2wgY2F0X2NoZWNrX2NibShjb25z dCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCB1bnNpZ25lZCBsb25nIGNibSkKK3sKKyAgICB1bnNp Z25lZCBpbnQgZmlyc3RfYml0LCB6ZXJvX2JpdDsKKyAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbiA9 IGZlYXQtPmNhdC5jYm1fbGVuOworCisgICAgLyogU2V0IGJpdHMgc2hvdWxkIG9ubHkgaW4gdGhl IHJhbmdlIG9mIFswLCBjYm1fbGVuXS4gKi8KKyAgICBpZiAoIGNibSAmICh+MHVsIDw8IGNibV9s ZW4pICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLyogQXQgbGVhc3Qgb25lIGJpdCBu ZWVkIHRvIGJlIHNldC4gKi8KKyAgICBpZiAoIGNibSA9PSAwICkKKyAgICAgICAgcmV0dXJuIGZh bHNlOworCisgICAgZmlyc3RfYml0ID0gZmluZF9maXJzdF9iaXQoJmNibSwgY2JtX2xlbik7Cisg ICAgemVyb19iaXQgPSBmaW5kX25leHRfemVyb19iaXQoJmNibSwgY2JtX2xlbiwgZmlyc3RfYml0 KTsKKworICAgIC8qIFNldCBiaXRzIHNob3VsZCBiZSBjb250aWd1b3VzLiAqLworICAgIGlmICgg emVyb19iaXQgPCBjYm1fbGVuICYmCisgICAgICAgICBmaW5kX25leHRfYml0KCZjYm0sIGNibV9s ZW4sIHplcm9fYml0KSA8IGNibV9sZW4gKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBy ZXR1cm4gdHJ1ZTsKK30KKwogLyogTDMgQ0FUIHByb3BzICovCi1zdGF0aWMgdm9pZCBsM19jYXRf d3JpdGVfbXNyKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW51bSBwc3JfdHlwZSB0eXBlKQorc3RhdGljIHVpbnQzMl90IGwzX2Nh dF93cml0ZV9tc3IodW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfdHlwZSB0eXBlKQogewogICAgIHdybXNybChN U1JfSUEzMl9QU1JfTDNfTUFTSyhjb3MpLCB2YWwpOworCisgICAgcmV0dXJuIHZhbDsKIH0KIAog c3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwzX2NhdF9wcm9wcyA9IHsKQEAgLTQ0NCw2 ICs0NTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDNfY2F0X3Byb3BzID0g ewogICAgIC5hbHRfdHlwZSA9IFBTUl9UWVBFX1VOS05PV04sCiAgICAgLmdldF9mZWF0X2luZm8g PSBjYXRfZ2V0X2ZlYXRfaW5mbywKICAgICAud3JpdGVfbXNyID0gbDNfY2F0X3dyaXRlX21zciwK KyAgICAuY2hlY2tfdmFsID0gY2F0X2NoZWNrX2NibSwKIH07CiAKIC8qIEwzIENEUCBwcm9wcyAq LwpAQCAtNDU4LDEzICs0NjUsMTUgQEAgc3RhdGljIGJvb2wgbDNfY2RwX2dldF9mZWF0X2luZm8o Y29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3Rh dGljIHZvaWQgbDNfY2RwX3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWws Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkKK3N0YXRp YyB1aW50MzJfdCBsM19jZHBfd3JpdGVfbXNyKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZh bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkK IHsKICAgICB3cm1zcmwoKCh0eXBlID09IFBTUl9UWVBFX0wzX0RBVEEpID8KICAgICAgICAgICAg IE1TUl9JQTMyX1BTUl9MM19NQVNLX0RBVEEoY29zKSA6CiAgICAgICAgICAgICBNU1JfSUEzMl9Q U1JfTDNfTUFTS19DT0RFKGNvcykpLAogICAgICAgICAgICB2YWwpOworCisgICAgcmV0dXJuIHZh bDsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwzX2NkcF9wcm9wcyA9IHsK QEAgLTQ3NCwxMyArNDgzLDE2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBsM19j ZHBfcHJvcHMgPSB7CiAgICAgLmFsdF90eXBlID0gUFNSX1RZUEVfTDNfQ0JNLAogICAgIC5nZXRf ZmVhdF9pbmZvID0gbDNfY2RwX2dldF9mZWF0X2luZm8sCiAgICAgLndyaXRlX21zciA9IGwzX2Nk cF93cml0ZV9tc3IsCisgICAgLmNoZWNrX3ZhbCA9IGNhdF9jaGVja19jYm0sCiB9OwogCiAvKiBM MiBDQVQgcHJvcHMgKi8KLXN0YXRpYyB2b2lkIGwyX2NhdF93cml0ZV9tc3IodW5zaWduZWQgaW50 IGNvcywgdWludDMyX3QgdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBz cl90eXBlIHR5cGUpCitzdGF0aWMgdWludDMyX3QgbDJfY2F0X3dyaXRlX21zcih1bnNpZ25lZCBp bnQgY29zLCB1aW50MzJfdCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIHBzcl90eXBlIHR5cGUpCiB7CiAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MMl9NQVNLKGNv cyksIHZhbCk7CisKKyAgICByZXR1cm4gdmFsOwogfQogCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZl YXRfcHJvcHMgbDJfY2F0X3Byb3BzID0gewpAQCAtNDg5LDYgKzUwMSw3IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZmVhdF9wcm9wcyBsMl9jYXRfcHJvcHMgPSB7CiAgICAgLmFsdF90eXBlID0gUFNS X1RZUEVfVU5LTk9XTiwKICAgICAuZ2V0X2ZlYXRfaW5mbyA9IGNhdF9nZXRfZmVhdF9pbmZvLAog ICAgIC53cml0ZV9tc3IgPSBsMl9jYXRfd3JpdGVfbXNyLAorICAgIC5jaGVja192YWwgPSBjYXRf Y2hlY2tfY2JtLAogfTsKIAogLyogTUJBIHByb3BzICovCkBAIC01MDksOSArNTIyLDIzIEBAIHN0 YXRpYyBib29sIG1iYV9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQs CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyB2b2lkIG1iYV93cml0ZV9tc3IodW5zaWdu ZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IHBzcl90eXBlIHR5cGUpCitzdGF0aWMgdWludDMyX3QgbWJhX3dyaXRlX21zcih1bnNpZ25lZCBp bnQgY29zLCB1aW50MzJfdCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IHBzcl90eXBlIHR5cGUpCiB7CisgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9NQkFfTUFTSyhjb3Mp LCB2YWwpOworCisgICAgLyogUmVhZCBhY3R1YWwgdmFsdWUgc2V0IGJ5IGhhcmR3YXJlLiAqLwor ICAgIHJkbXNybChNU1JfSUEzMl9QU1JfTUJBX01BU0soY29zKSwgdmFsKTsKKworICAgIHJldHVy biB2YWw7Cit9CisKK3N0YXRpYyBib29sIG1iYV9jaGVja190aHJ0bChjb25zdCBzdHJ1Y3QgZmVh dF9ub2RlICpmZWF0LCB1bnNpZ25lZCBsb25nIHRocnRsKQoreworICAgIGlmICggdGhydGwgPiBm ZWF0LT5tYmEudGhydGxfbWF4ICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJu IHRydWU7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBtYmFfcHJvcHMgPSB7 CkBAIC01MjAsNiArNTQ3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIG1iYV9w cm9wcyA9IHsKICAgICAuYWx0X3R5cGUgPSBQU1JfVFlQRV9VTktOT1dOLAogICAgIC5nZXRfZmVh dF9pbmZvID0gbWJhX2dldF9mZWF0X2luZm8sCiAgICAgLndyaXRlX21zciA9IG1iYV93cml0ZV9t c3IsCisgICAgLmNoZWNrX3ZhbCA9IG1iYV9jaGVja190aHJ0bCwKIH07CiAKIHN0YXRpYyB2b2lk IF9faW5pdCBwYXJzZV9wc3JfYm9vbChjaGFyICpzLCBjaGFyICp2YWx1ZSwgY2hhciAqZmVhdHVy ZSwKQEAgLTk2NCw3ICs5OTIsNyBAQCBzdGF0aWMgaW50IGluc2VydF92YWxfaW50b19hcnJheSh1 aW50MzJfdCB2YWxbXSwKICAgICBpZiAoIGFycmF5X2xlbiA8IHByb3BzLT5jb3NfbnVtICkKICAg ICAgICAgcmV0dXJuIC1FTk9TUEM7CiAKLSAgICBpZiAoICFwc3JfY2hlY2tfY2JtKGZlYXQtPmNh dC5jYm1fbGVuLCBuZXdfdmFsKSApCisgICAgaWYgKCAhcHJvcHMtPmNoZWNrX3ZhbChmZWF0LCBu ZXdfdmFsKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogCiAgICAgLyoKQEAgLTExOTYsMjUg KzEyMjQsNDAgQEAgc3RhdGljIHVuc2lnbmVkIGludCBnZXRfc29ja2V0X2NwdSh1bnNpZ25lZCBp bnQgc29ja2V0KQogc3RydWN0IGNvc193cml0ZV9pbmZvCiB7CiAgICAgdW5zaWduZWQgaW50IGNv czsKLSAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0dXJlOworICAgIHN0cnVjdCBmZWF0X25vZGUg KipmZWF0dXJlczsKICAgICBjb25zdCB1aW50MzJfdCAqdmFsOwotICAgIGNvbnN0IHN0cnVjdCBm ZWF0X3Byb3BzICpwcm9wczsKKyAgICB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuOworICAgIGNvbnN0 IHN0cnVjdCBmZWF0X3Byb3BzICoqcHJvcHM7CiB9OwogCiBzdGF0aWMgdm9pZCBkb193cml0ZV9w c3JfbXNycyh2b2lkICpkYXRhKQogewogICAgIGNvbnN0IHN0cnVjdCBjb3Nfd3JpdGVfaW5mbyAq aW5mbyA9IGRhdGE7Ci0gICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCA9IGluZm8tPmZlYXR1cmU7 Ci0gICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKnByb3BzID0gaW5mby0+cHJvcHM7Ci0gICAg dW5zaWduZWQgaW50IGksIGNvcyA9IGluZm8tPmNvcywgY29zX251bSA9IHByb3BzLT5jb3NfbnVt OworICAgIHVuc2lnbmVkIGludCBpLCBpbmRleCA9IDAsIGFycmF5X2xlbiA9IGluZm8tPmFycmF5 X2xlbiwgY29zID0gaW5mby0+Y29zOworICAgIGNvbnN0IHVpbnQzMl90ICp2YWxfYXJyYXkgPSBp bmZvLT52YWw7CiAKLSAgICBmb3IgKCBpID0gMDsgaSA8IGNvc19udW07IGkrKyApCisgICAgZm9y ICggaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZlYXRfcHJvcHMpOyBpKysgKQogICAgIHsKLSAgICAg ICAgaWYgKCBmZWF0LT5jb3NfcmVnX3ZhbFtjb3MgKiBjb3NfbnVtICsgaV0gIT0gaW5mby0+dmFs W2ldICkKKyAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCA9IGluZm8tPmZlYXR1cmVzW2ld OworICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHMgPSBpbmZvLT5wcm9wc1tp XTsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvc19udW0sIGo7CisKKyAgICAgICAgaWYgKCAhZmVh dCB8fCAhcHJvcHMgKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY29zX251bSA9 IHByb3BzLT5jb3NfbnVtOworICAgICAgICBpZiAoIGFycmF5X2xlbiA8IGNvc19udW0gKQorICAg ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgY29zX251bTsgaisr ICkKICAgICAgICAgewotICAgICAgICAgICAgZmVhdC0+Y29zX3JlZ192YWxbY29zICogY29zX251 bSArIGldID0gaW5mby0+dmFsW2ldOwotICAgICAgICAgICAgcHJvcHMtPndyaXRlX21zcihjb3Ms IGluZm8tPnZhbFtpXSwgcHJvcHMtPnR5cGVbaV0pOworICAgICAgICAgICAgaWYgKCBmZWF0LT5j b3NfcmVnX3ZhbFtjb3MgKiBjb3NfbnVtICsgal0gIT0gdmFsX2FycmF5W2luZGV4ICsgal0gKQor ICAgICAgICAgICAgICAgIGZlYXQtPmNvc19yZWdfdmFsW2NvcyAqIGNvc19udW0gKyBqXSA9Cisg ICAgICAgICAgICAgICAgICAgIHByb3BzLT53cml0ZV9tc3IoY29zLCB2YWxfYXJyYXlbaW5kZXgg KyBqXSwgcHJvcHMtPnR5cGVbal0pOwogICAgICAgICB9CisKKyAgICAgICAgYXJyYXlfbGVuIC09 IGNvc19udW07CisgICAgICAgIGluZGV4ICs9IGNvc19udW07CiAgICAgfQogfQogCkBAIC0xMjIy LDMwICsxMjY1LDE5IEBAIHN0YXRpYyBpbnQgd3JpdGVfcHNyX21zcnModW5zaWduZWQgaW50IHNv Y2tldCwgdW5zaWduZWQgaW50IGNvcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg dWludDMyX3QgdmFsW10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSBmZWF0X3R5cGUpCiB7Ci0gICAgaW50IHJldDsK ICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvID0gZ2V0X3NvY2tldF9pbmZvKHNvY2tl dCk7CiAgICAgc3RydWN0IGNvc193cml0ZV9pbmZvIGRhdGEgPQogICAgIHsKICAgICAgICAgLmNv cyA9IGNvcywKLSAgICAgICAgLmZlYXR1cmUgPSBpbmZvLT5mZWF0dXJlc1tmZWF0X3R5cGVdLAot ICAgICAgICAucHJvcHMgPSBmZWF0X3Byb3BzW2ZlYXRfdHlwZV0sCisgICAgICAgIC5mZWF0dXJl cyA9IGluZm8tPmZlYXR1cmVzLAorICAgICAgICAudmFsID0gdmFsLAorICAgICAgICAuYXJyYXlf bGVuID0gYXJyYXlfbGVuLAorICAgICAgICAucHJvcHMgPSBmZWF0X3Byb3BzLAogICAgIH07CiAK ICAgICBpZiAoIGNvcyA+IGluZm8tPmZlYXR1cmVzW2ZlYXRfdHlwZV0tPmNvc19tYXggKQogICAg ICAgICByZXR1cm4gLUVJTlZBTDsKIAotICAgIC8qIFNraXAgdG8gdGhlIGZlYXR1cmUncyB2YWx1 ZSBoZWFkLiAqLwotICAgIHJldCA9IHNraXBfcHJpb3JfZmVhdHVyZXMoJmFycmF5X2xlbiwgZmVh dF90eXBlKTsKLSAgICBpZiAoIHJldCA8IDAgKQotICAgICAgICByZXR1cm4gcmV0OwotCi0gICAg dmFsICs9IHJldDsKLQotICAgIGlmICggYXJyYXlfbGVuIDwgZmVhdF9wcm9wc1tmZWF0X3R5cGVd LT5jb3NfbnVtICkKLSAgICAgICAgcmV0dXJuIC1FTk9TUEM7Ci0KLSAgICBkYXRhLnZhbCA9IHZh bDsKLQogICAgIGlmICggc29ja2V0ID09IGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgp KSApCiAgICAgICAgIGRvX3dyaXRlX3Bzcl9tc3JzKCZkYXRhKTsKICAgICBlbHNlCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvZG9tY3RsLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvZG9t Y3RsLmgKaW5kZXggOGJlMzhjYy4uMjcxMGNkYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVi bGljL2RvbWN0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9kb21jdGwuaApAQCAtMTE0NCw2 ICsxMTQ0LDcgQEAgc3RydWN0IHhlbl9kb21jdGxfcHNyX2FsbG9jIHsKICNkZWZpbmUgWEVOX0RP TUNUTF9QU1JfQUxMT0NfR0VUX0wzX0RBVEEgICAgNQogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9B TExPQ19TRVRfTDJfQ0JNICAgICA2CiAjZGVmaW5lIFhFTl9ET01DVExfUFNSX0FMTE9DX0dFVF9M Ml9DQk0gICAgIDcKKyNkZWZpbmUgWEVOX0RPTUNUTF9QU1JfQUxMT0NfU0VUX01CQV9USFJUTCAg OAogI2RlZmluZSBYRU5fRE9NQ1RMX1BTUl9BTExPQ19HRVRfTUJBX1RIUlRMICA5CiAgICAgdWlu dDMyX3QgY21kOyAgICAgICAvKiBJTjogWEVOX0RPTUNUTF9QU1JfQ0FUX09QXyogKi8KICAgICB1 aW50MzJfdCB0YXJnZXQ7ICAgIC8qIElOICovCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVu LWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=