From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 7/6] x86/msr: Introduce msr_{set, clear}_bits() helpers Date: Tue, 26 Jun 2018 19:22:44 +0100 Message-ID: <1530037364-24758-1-git-send-email-andrew.cooper3@citrix.com> References: <1530019098-7058-1-git-send-email-andrew.cooper3@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1530019098-7058-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org T25lIHJlb2NjdXJpbmcgY29kZSBwYXR0ZXJuIGlzIHRvIHJlYWQgYW4gTVNSLCBtb2RpZnkgb25l IG9yIG1vcmUgYml0cywKYW5kIHdyaXRlIHRoZSByZXN1bHQgYmFjay4gIEludHJvZHVjZSBoZWxw ZXJzIGZvciB0aGlzIHB1cnBvc2UuCgpGaXJzdCwgaW50cm9kdWNlIHJkbXNyX3NwbGl0KCkgYW5k IHdybXNyX3NwbGl0KCkgd2hpY2ggYXJlIHRpbnkgc3RhdGljIGlubGluZQp3cmFwcGVycyB3aGlj aCBkZWFsIHdpdGggdGhlIE1TUiB2YWx1ZSBpbiB0d28gMzJiaXQgaGFsdmVzLgoKTmV4dCwgY29u c3RydWN0IG1zcl97c2V0LGNsZWFyfV9iaXRzKCkgaW4gdGVybXMgb2YgdGhlIHtyZG1zcix3cm1z cn1fc3BsaXQoKS4KVGhlIG1hc2sgb3BlcmF0aW9ucyBhcmUgZGVsaWJlcmF0ZWx5IHBlcmZvcm1l ZCBhcyAzMmJpdCBvcGVyYXRpb25zLCBiZWNhdXNlCmFsbCBjYWxsZXJzIHBhc3MgaW4gYSBjb25z dGFudCB0byB0aGUgbWFzayBwYXJhbWV0ZXIsIGFuZCBpbiBhbGwgY3VycmVudApjYXNlcywgb25l IG9mIHRoZSB0d28gb3BlcmF0aW9ucyBjYW4gYmUgZWxpZGVkLgoKRm9yIE1TUl9JQTMyX1BTUl9M M19RT1NfQ0ZHLCBzd2l0Y2ggUFNSX0wzX1FPU19DRFBfRU5BQkxFIGZyb20gYmVpbmcgYSBiaXQK cG9zaXRpb24gdmFyaWFibGUgdG8gYmVpbmcgYSBwbGFpbiBudW1iZXIuCgpUaGUgcmVzdWx0aW5n IEMgaXMgc2hvcnRlciwgYW5kIGRvZXNuJ3QgcmVxdWlyZSBhIHRlbXBvcmFyeSB2YXJpYWJsZS4g IFRoZQpnZW5lcmF0ZWQgQVNNIGlzIGFsc28gbW9yZSBlZmZpY2llbnQsIGJlY2F1c2Ugb2YgYXZv aWRpbmcgdGhlCnBhY2tpbmcvdW5wYWNraW5nIG9wZXJhdGlvbnMuICBlLmcuIHRoZSBkZWx0YSBp biB0aGUgZmlyc3QgaHVuayBpcyBmcm9tOgoKICBiOSAxYiAwMCAwMCAwMCAgICAgICAgICBtb3Yg ICAgJDB4MWIsJWVjeAogIDBmIDMyICAgICAgICAgICAgICAgICAgIHJkbXNyCiAgNDggYzEgZTIg MjAgICAgICAgICAgICAgc2hsICAgICQweDIwLCVyZHgKICA0OCAwOSBkMCAgICAgICAgICAgICAg ICBvciAgICAgJXJkeCwlcmF4CiAgODAgZTQgZjMgICAgICAgICAgICAgICAgYW5kICAgICQweGYz LCVhaAogIDQ4IDg5IGMyICAgICAgICAgICAgICAgIG1vdiAgICAlcmF4LCVyZHgKICA0OCBjMSBl YSAyMCAgICAgICAgICAgICBzaHIgICAgJDB4MjAsJXJkeAogIDBmIDMwICAgICAgICAgICAgICAg ICAgIHdybXNyCgp0bzoKCiAgYjkgMWIgMDAgMDAgMDAgICAgICAgICAgbW92ICAgICQweDFiLCVl Y3gKICAwZiAzMiAgICAgICAgICAgICAgICAgICByZG1zcgogIDgwIGU0IGYzICAgICAgICAgICAg ICAgIGFuZCAgICAkMHhmMywlYWgKICAwZiAzMCAgICAgICAgICAgICAgICAgICB3cm1zcgoKU2ln bmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0t CkNDOiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+CkNDOiBXZWkgTGl1IDx3ZWkubGl1 MkBjaXRyaXguY29tPgpDQzogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNpdHJpeC5jb20+ Ci0tLQogeGVuL2FyY2gveDg2L2FwaWMuYyAgICAgICAgICAgICAgICAgfCAgOCArKy0tLS0tLQog eGVuL2FyY2gveDg2L2NwdS9hbWQuYyAgICAgICAgICAgICAgfCAxOSArKysrKystLS0tLS0tLS0t LS0tCiB4ZW4vYXJjaC94ODYvY3B1L2NlbnRhdXIuYyAgICAgICAgICB8ICA4ICsrLS0tLS0tCiB4 ZW4vYXJjaC94ODYvY3B1L21jaGVjay9tY2VfaW50ZWwuYyB8ICA3ICsrLS0tLS0KIHhlbi9hcmNo L3g4Ni9lZmkvZWZpLWJvb3QuaCAgICAgICAgIHwgMTEgKysrKy0tLS0tLS0KIHhlbi9hcmNoL3g4 Ni9odm0vc3ZtL3N2bS5jICAgICAgICAgIHwgIDMgKy0tCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAg ICAgICAgICAgICAgICB8ICA5ICstLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3IuaCAg ICAgICAgICAgfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vaW5j bHVkZS9hc20teDg2L3Bzci5oICAgICAgICAgICB8ICAyICstCiA5IGZpbGVzIGNoYW5nZWQsIDUz IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9hcGljLmMgYi94ZW4vYXJjaC94ODYvYXBpYy5jCmluZGV4IGFhNjc3ZTAuLmFjZDhhOGEgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9hcGljLmMKKysrIGIveGVuL2FyY2gveDg2L2FwaWMuYwpA QCAtMzAwLDEyICszMDAsOCBAQCB2b2lkIGRpc2FibGVfbG9jYWxfQVBJQyh2b2lkKQogICAgICAq LwogICAgIGFwaWNfd3JpdGUoQVBJQ19TUElWLCBhcGljX3JlYWQoQVBJQ19TUElWKSAmIH5BUElD X1NQSVZfQVBJQ19FTkFCTEVEKTsKIAotICAgIGlmIChlbmFibGVkX3ZpYV9hcGljYmFzZSkgewot ICAgICAgICB1aW50NjRfdCBtc3JfY29udGVudDsKLSAgICAgICAgcmRtc3JsKE1TUl9BUElDX0JB U0UsIG1zcl9jb250ZW50KTsKLSAgICAgICAgd3Jtc3JsKE1TUl9BUElDX0JBU0UsIG1zcl9jb250 ZW50ICYKLSAgICAgICAgICAgICAgIH4oQVBJQ19CQVNFX0VOQUJMRSB8IEFQSUNfQkFTRV9FWFRE KSk7Ci0gICAgfQorICAgIGlmICggZW5hYmxlZF92aWFfYXBpY2Jhc2UgKQorICAgICAgICBtc3Jf Y2xlYXJfYml0cyhNU1JfQVBJQ19CQVNFLCBBUElDX0JBU0VfRU5BQkxFIHwgQVBJQ19CQVNFX0VY VEQpOwogCiAgICAgaWYgKCBrZXhlY2luZyAmJiAoY3VycmVudF9sb2NhbF9hcGljX21vZGUoKSAh PSBhcGljX2Jvb3RfbW9kZSkgKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUv YW1kLmMgYi94ZW4vYXJjaC94ODYvY3B1L2FtZC5jCmluZGV4IDQ1OGEzZmUuLmU2OTcwYWQgMTAw NjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvYW1kLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9h bWQuYwpAQCAtNTM4LDExICs1MzgsOCBAQCBzdGF0aWMgdm9pZCBpbml0X2FtZChzdHJ1Y3QgY3B1 aW5mb194ODYgKmMpCiAJICogRXJyYXRhIDYzIGZvciBTSC1CMyBzdGVwcGluZ3MKIAkgKiBFcnJh dGEgMTIyIGZvciBhbGwgc3RlcHBpbmdzIChGKyBoYXZlIGl0IGRpc2FibGVkIGJ5IGRlZmF1bHQp CiAJICovCi0JaWYgKGMtPng4NiA9PSAxNSkgewotCQlyZG1zcmwoTVNSX0s3X0hXQ1IsIHZhbHVl KTsKLQkJdmFsdWUgfD0gMSA8PCA2OwotCQl3cm1zcmwoTVNSX0s3X0hXQ1IsIHZhbHVlKTsKLQl9 CisJaWYgKGMtPng4NiA9PSAxNSkKKwkJbXNyX3NldF9iaXRzKE1TUl9LN19IV0NSLCAxIDw8IDYp OwogCiAJLyoKIAkgKiBTb21lIEFNRCBDUFVzIGR1cGxpY2F0ZSB0aGUgM0ROb3cgYml0IGluIGJh c2UgYW5kIGV4dGVuZGVkIENQVUlECkBAIC03NDgsOSArNzQ1LDcgQEAgc3RhdGljIHZvaWQgaW5p dF9hbWQoc3RydWN0IGNwdWluZm9feDg2ICpjKQogCQkgKiBndWVzdHMuIFByZXZlbnQgdGhpcyBj b252ZXJzaW9uIGJ5IGNsZWFyaW5nIGJpdCAyNCBpbgogCQkgKiBNU1JfRjEwX0JVX0NGRzIuCiAJ CSAqLwotCQlyZG1zcmwoTVNSX0YxMF9CVV9DRkcyLCB2YWx1ZSk7Ci0JCXZhbHVlICY9IH4oMVVM TCA8PCAyNCk7Ci0JCXdybXNybChNU1JfRjEwX0JVX0NGRzIsIHZhbHVlKTsKKwkJbXNyX2NsZWFy X2JpdHMoTVNSX0YxMF9CVV9DRkcyLCAxIDw8IDI0KTsKIAl9CiAKIAkvKgpAQCAtNzcxLDExICs3 NjYsOSBAQCBzdGF0aWMgdm9pZCBpbml0X2FtZChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiAJCXdy bXNybChNU1JfSzdfUEVSRkNUUjMsIDApOwogCX0KIAotCWlmIChjcHVfaGFzKGMsIFg4Nl9GRUFU VVJFX0VGUk8pKSB7Ci0JCXJkbXNyKE1TUl9LN19IV0NSLCBsLCBoKTsKLQkJbCB8PSAoMSA8PCAy Nyk7IC8qIEVuYWJsZSByZWFkLW9ubHkgQVBFUkYvTVBFUkYgYml0ICovCi0JCXdybXNyKE1TUl9L N19IV0NSLCBsLCBoKTsKLQl9CisJaWYgKGNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfRUZSTykpCisJ CS8qIEVuYWJsZSByZWFkLW9ubHkgQVBFUkYvTVBFUkYgYml0ICovCisJCW1zcl9zZXRfYml0cyhN U1JfSzdfSFdDUiwgMSA8PCAyNyk7CiAKIAkvKiBQcmV2ZW50IFRTQyBkcmlmdCBpbiBub24gc2lu Z2xlLXByb2Nlc3Nvciwgc2luZ2xlLWNvcmUgcGxhdGZvcm1zLiAqLwogCWlmICgoc21wX3Byb2Nl c3Nvcl9pZCgpID09IDEpICYmICFjcHVfaGFzKGMsIFg4Nl9GRUFUVVJFX0lUU0MpKQpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2NwdS9jZW50YXVyLmMgYi94ZW4vYXJjaC94ODYvY3B1L2NlbnRh dXIuYwppbmRleCAxYzc2MGJlLi5kZmRiNWY0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1 L2NlbnRhdXIuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L2NlbnRhdXIuYwpAQCAtMTYsMjUgKzE2 LDIxIEBACiAKIHN0YXRpYyB2b2lkIGluaXRfYzMoc3RydWN0IGNwdWluZm9feDg2ICpjKQogewot CXVpbnQ2NF90IG1zcl9jb250ZW50OwotCiAJLyogVGVzdCBmb3IgQ2VudGF1ciBFeHRlbmRlZCBG ZWF0dXJlIEZsYWdzIHByZXNlbmNlICovCiAJaWYgKGNwdWlkX2VheCgweEMwMDAwMDAwKSA+PSAw eEMwMDAwMDAxKSB7CiAJCXUzMiB0bXAgPSBjcHVpZF9lZHgoMHhDMDAwMDAwMSk7CiAKIAkJLyog ZW5hYmxlIEFDRSB1bml0LCBpZiBwcmVzZW50IGFuZCBkaXNhYmxlZCAqLwogCQlpZiAoKHRtcCAm IChBQ0VfUFJFU0VOVCB8IEFDRV9FTkFCTEVEKSkgPT0gQUNFX1BSRVNFTlQpIHsKLQkJCXJkbXNy bChNU1JfVklBX0ZDUiwgbXNyX2NvbnRlbnQpOwogCQkJLyogZW5hYmxlIEFDRSB1bml0ICovCi0J CQl3cm1zcmwoTVNSX1ZJQV9GQ1IsIG1zcl9jb250ZW50IHwgQUNFX0ZDUik7CisJCQltc3Jfc2V0 X2JpdHMoTVNSX1ZJQV9GQ1IsIEFDRV9GQ1IpOwogCQkJcHJpbnRrKEtFUk5fSU5GTyAiQ1BVOiBF bmFibGVkIEFDRSBoL3cgY3J5cHRvXG4iKTsKIAkJfQogCiAJCS8qIGVuYWJsZSBSTkcgdW5pdCwg aWYgcHJlc2VudCBhbmQgZGlzYWJsZWQgKi8KIAkJaWYgKCh0bXAgJiAoUk5HX1BSRVNFTlQgfCBS TkdfRU5BQkxFRCkpID09IFJOR19QUkVTRU5UKSB7Ci0JCQlyZG1zcmwoTVNSX1ZJQV9STkcsIG1z cl9jb250ZW50KTsKIAkJCS8qIGVuYWJsZSBSTkcgdW5pdCAqLwotCQkJd3Jtc3JsKE1TUl9WSUFf Uk5HLCBtc3JfY29udGVudCB8IFJOR19FTkFCTEUpOworCQkJbXNyX3NldF9iaXRzKE1TUl9WSUFf Uk5HLCBSTkdfRU5BQkxFKTsKIAkJCXByaW50ayhLRVJOX0lORk8gIkNQVTogRW5hYmxlZCBoL3cg Uk5HXG4iKTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9jcHUvbWNoZWNrL21j ZV9pbnRlbC5jIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlX2ludGVsLmMKaW5kZXggMmQy ODVkMC4uYzVmMTcxZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlX2lu dGVsLmMKKysrIGIveGVuL2FyY2gveDg2L2NwdS9tY2hlY2svbWNlX2ludGVsLmMKQEAgLTE2NCwx MSArMTY0LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF90aGVybWFsKHN0cnVjdCBjcHVpbmZv X3g4NiAqYykKICAgICB2YWwgfD0gKEFQSUNfRE1fRklYRUQgfCBBUElDX0xWVF9NQVNLRUQpOyAg Lyogd2UnbGwgbWFzayB0aWxsIHdlJ3JlIHJlYWR5ICovCiAgICAgYXBpY193cml0ZShBUElDX0xW VFRITVIsIHZhbCk7CiAKLSAgICByZG1zcmwoTVNSX0lBMzJfVEhFUk1fSU5URVJSVVBULCBtc3Jf Y29udGVudCk7Ci0gICAgd3Jtc3JsKE1TUl9JQTMyX1RIRVJNX0lOVEVSUlVQVCwgbXNyX2NvbnRl bnQgfCAweDAzKTsKLQotICAgIHJkbXNybChNU1JfSUEzMl9NSVNDX0VOQUJMRSwgbXNyX2NvbnRl bnQpOwotICAgIHdybXNybChNU1JfSUEzMl9NSVNDX0VOQUJMRSwgbXNyX2NvbnRlbnQgfCAoMVVM TDw8MykpOworICAgIG1zcl9zZXRfYml0cyhNU1JfSUEzMl9USEVSTV9JTlRFUlJVUFQsIDB4Myk7 CisgICAgbXNyX3NldF9iaXRzKE1TUl9JQTMyX01JU0NfRU5BQkxFLCAxIDw8IDMpOwogCiAgICAg YXBpY193cml0ZShBUElDX0xWVFRITVIsIHZhbCAmIH5BUElDX0xWVF9NQVNLRUQpOwogICAgIGlm ICggb3B0X2NwdV9pbmZvICkKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3Qu aCBiL3hlbi9hcmNoL3g4Ni9lZmkvZWZpLWJvb3QuaAppbmRleCAwOWJiM2Y0Li42NjE5YWY5IDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZWZpL2VmaS1ib290LmgKKysrIGIveGVuL2FyY2gveDg2 L2VmaS9lZmktYm9vdC5oCkBAIC0yMjksMTggKzIyOSwxNSBAQCBzdGF0aWMgdm9pZCBfX2luaXQg ZWZpX2FyY2hfcHJlX2V4aXRfYm9vdCh2b2lkKQogCiBzdGF0aWMgdm9pZCBfX2luaXQgbm9yZXR1 cm4gZWZpX2FyY2hfcG9zdF9leGl0X2Jvb3Qodm9pZCkKIHsKLSAgICB1NjQgY3I0ID0gWEVOX01J TklNQUxfQ1I0ICYgflg4Nl9DUjRfUEdFLCBlZmVyOworICAgIGJvb2wgbnggPSBjcHVpZF9leHRf ZmVhdHVyZXMgJiBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfTlgpOworICAgIHVpbnQ2NF90IGNy NCA9IFhFTl9NSU5JTUFMX0NSNCAmIH5YODZfQ1I0X1BHRSwgdG1wOwogCiAgICAgZWZpX2FyY2hf cmVsb2NhdGVfaW1hZ2UoX19YRU5fVklSVF9TVEFSVCAtIHhlbl9waHlzX3N0YXJ0KTsKICAgICBt ZW1jcHkoKHZvaWQgKil0cmFtcG9saW5lX3BoeXMsIHRyYW1wb2xpbmVfc3RhcnQsIGNmZy5zaXpl KTsKIAogICAgIC8qIFNldCBzeXN0ZW0gcmVnaXN0ZXJzIGFuZCB0cmFuc2ZlciBjb250cm9sLiAq LwogICAgIGFzbSB2b2xhdGlsZSgicHVzaHEgJDBcblx0cG9wZnEiKTsKLSAgICByZG1zcmwoTVNS X0VGRVIsIGVmZXIpOwotICAgIGVmZXIgfD0gRUZFUl9TQ0U7Ci0gICAgaWYgKCBjcHVpZF9leHRf ZmVhdHVyZXMgJiBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfTlgpICkKLSAgICAgICAgZWZlciB8 PSBFRkVSX05YRTsKLSAgICB3cm1zcmwoTVNSX0VGRVIsIGVmZXIpOworICAgIG1zcl9zZXRfYml0 cyhNU1JfRUZFUiwgRUZFUl9TQ0UgfCAobnggPyBFRkVSX05YRSA6IDApKTsKICAgICB3cml0ZV9j cjAoWDg2X0NSMF9QRSB8IFg4Nl9DUjBfTVAgfCBYODZfQ1IwX0VUIHwgWDg2X0NSMF9ORSB8IFg4 Nl9DUjBfV1AgfAogICAgICAgICAgICAgICBYODZfQ1IwX0FNIHwgWDg2X0NSMF9QRyk7CiAgICAg YXNtIHZvbGF0aWxlICggIm1vdiAgICAlW2NyNF0sICUlY3I0XG5cdCIKQEAgLTI2MCw3ICsyNTcs NyBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbm9yZXR1cm4gZWZpX2FyY2hfcG9zdF9leGl0X2Jvb3Qo dm9pZCkKICAgICAgICAgICAgICAgICAgICAibW92bCAgICVbY3NdLCA4KCUlcnNwKVxuXHQiCiAg ICAgICAgICAgICAgICAgICAgIm1vdiAgICAlW3JpcF0sICglJXJzcClcblx0IgogICAgICAgICAg ICAgICAgICAgICJscmV0cSAgJVtzdGtvZmZdLTE2IgotICAgICAgICAgICAgICAgICAgIDogW3Jp cF0gIj0mciIgKGVmZXIvKiBhbnkgZGVhZCA2NC1iaXQgdmFyaWFibGUgKi8pLAorICAgICAgICAg ICAgICAgICAgIDogW3JpcF0gIj0mciIgKHRtcCksCiAgICAgICAgICAgICAgICAgICAgICBbY3I0 XSAiKyZyIiAoY3I0KQogICAgICAgICAgICAgICAgICAgIDogW2NyM10gInIiIChpZGxlX3BnX3Rh YmxlKSwKICAgICAgICAgICAgICAgICAgICAgIFtjc10gImlyIiAoX19IWVBFUlZJU09SX0NTKSwK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jIGIveGVuL2FyY2gveDg2L2h2 bS9zdm0vc3ZtLmMKaW5kZXggNjczYTM4Yy4uMDBlM2E5NyAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2h2bS9zdm0vc3ZtLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKQEAgLTI0 ODQsOCArMjQ4NCw3IEBAIHN0YXRpYyBpbnQgc3ZtX2lzX2VycmF0dW1fMzgzKHN0cnVjdCBjcHVf dXNlcl9yZWdzICpyZWdzKQogICAgIGZvciAoaSA9IDA7IGkgPCBucl9tY2VfYmFua3M7IGkrKykK ICAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX01DeF9TVEFUVVMoaSksIDBVTEwpOwogICAgIAotICAg IHJkbXNybChNU1JfSUEzMl9NQ0dfU1RBVFVTLCBtc3JfY29udGVudCk7Ci0gICAgd3Jtc3JsKE1T Ul9JQTMyX01DR19TVEFUVVMsIG1zcl9jb250ZW50ICYgfigxVUxMIDw8IDIpKTsKKyAgICBtc3Jf Y2xlYXJfYml0cyhNU1JfSUEzMl9NQ0dfU1RBVFVTLCAxIDw8IDIpOwogCiAgICAgLyogZmx1c2gg VExCICovCiAgICAgZmx1c2hfdGxiX21hc2sodi0+ZG9tYWluLT5kaXJ0eV9jcHVtYXNrKTsKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCAw YmE4ZWY4Li5jNGZhYTNkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVu L2FyY2gveDg2L3Bzci5jCkBAIC0zNDIsOSArMzQyLDYgQEAgc3RhdGljIGJvb2wgY2F0X2luaXRf ZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKICAgICAgICAgYnJlYWs7CiAK ICAgICBjYXNlIEZFQVRfVFlQRV9MM19DRFA6Ci0gICAgewotICAgICAgICB1aW50NjRfdCB2YWw7 Ci0KICAgICAgICAgaWYgKCBmZWF0LT5jb3NfbWF4IDwgMyApCiAgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CiAKQEAgLTM1NywxMiArMzU0LDggQEAgc3RhdGljIGJvb2wgY2F0X2luaXRfZmVhdHVy ZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKIAogICAgICAgICB3cm1zcmwoTVNSX0lB MzJfUFNSX0wzX01BU0soMCksIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYXQuY2JtX2xlbikpOwog ICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0soMSksIGNhdF9kZWZhdWx0X3ZhbChm ZWF0LT5jYXQuY2JtX2xlbikpOwotICAgICAgICByZG1zcmwoTVNSX0lBMzJfUFNSX0wzX1FPU19D RkcsIHZhbCk7Ci0gICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfUU9TX0NGRywKLSAgICAg ICAgICAgICAgIHZhbCB8ICgxdWxsIDw8IFBTUl9MM19RT1NfQ0RQX0VOQUJMRV9CSVQpKTsKLQor ICAgICAgICBtc3Jfc2V0X2JpdHMoTVNSX0lBMzJfUFNSX0wzX1FPU19DRkcsIFBTUl9MM19RT1Nf Q0RQX0VOQUJMRSk7CiAgICAgICAgIGJyZWFrOwotICAgIH0KIAogICAgIGRlZmF1bHQ6CiAgICAg ICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLmgg Yi94ZW4vaW5jbHVkZS9hc20teDg2L21zci5oCmluZGV4IDhmOWY5NjQuLmNiZjkyZjUgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni9tc3IuaApAQCAtMTEsNiArMTEsMTEgQEAKICNpbmNsdWRlIDxhc20vYXNtX2RlZm5zLmg+CiAj aW5jbHVkZSA8YXNtL2NwdWZlYXR1cmUuaD4KIAorc3RhdGljIGlubGluZSB2b2lkIHJkbXNyX3Nw bGl0KHVuc2lnbmVkIGludCBtc3IsIHVpbnQzMl90ICpsbywgdWludDMyX3QgKmhpKQoreworICAg IGFzbSB2b2xhdGlsZSAoICJyZG1zciIgOiAiPWEiICgqbG8pLCAiPWQiICgqaGkpIDogImMiICht c3IpICk7Cit9CisKICNkZWZpbmUgcmRtc3IobXNyLHZhbDEsdmFsMikgXAogICAgICBfX2FzbV9f IF9fdm9sYXRpbGVfXygicmRtc3IiIFwKIAkJCSAgOiAiPWEiICh2YWwxKSwgIj1kIiAodmFsMikg XApAQCAtMjMsNiArMjgsMTEgQEAKICAgICAgICB2YWwgPSBhX18gfCAoKHU2NCliX188PDMyKTsg XAogfSB3aGlsZSgwKQogCitzdGF0aWMgaW5saW5lIHZvaWQgd3Jtc3Jfc3BsaXQodW5zaWduZWQg aW50IG1zciwgdWludDMyX3QgbG8sIHVpbnQzMl90IGhpKQoreworICAgIGFzbSB2b2xhdGlsZSAo ICJ3cm1zciIgOjogImEiIChsbyksICJkIiAoaGkpLCAiYyIgKG1zcikgKTsKK30KKwogI2RlZmlu ZSB3cm1zcihtc3IsdmFsMSx2YWwyKSBcCiAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJ3cm1z ciIgXAogCQkJICA6IC8qIG5vIG91dHB1dHMgKi8gXApAQCAtODIsNiArOTIsMzAgQEAgc3RhdGlj IGlubGluZSB2b2lkIG1zcl9zcGxpdChzdHJ1Y3QgY3B1X3VzZXJfcmVncyAqcmVncywgdWludDY0 X3QgdmFsKQogICAgIHJlZ3MtPnJheCA9ICh1aW50MzJfdCl2YWw7CiB9CiAKK3N0YXRpYyBpbmxp bmUgdm9pZCBtc3Jfc2V0X2JpdHModW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbWFzaykKK3sK KyAgICB1aW50MzJfdCBsbywgaGk7CisKKyAgICByZG1zcl9zcGxpdChtc3IsICZsbywgJmhpKTsK KworICAgIGxvIHw9IG1hc2s7CisgICAgaGkgfD0gKG1hc2sgPj4gMzIpOworCisgICAgd3Jtc3Jf c3BsaXQobXNyLCBsbywgaGkpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgbXNyX2NsZWFyX2Jp dHModW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbWFzaykKK3sKKyAgICB1aW50MzJfdCBsbywg aGk7CisKKyAgICByZG1zcl9zcGxpdChtc3IsICZsbywgJmhpKTsKKworICAgIGxvICY9IH5tYXNr OworICAgIGhpICY9IH4obWFzayA+PiAzMik7CisKKyAgICB3cm1zcl9zcGxpdChtc3IsIGxvLCBo aSk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgcmR0c2Modm9pZCkKIHsKICAgICB1aW50 MzJfdCBsb3csIGhpZ2g7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAppbmRleCBjMjI1N2RhLi42Y2FhYzY3IDEwMDY0NAot LS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYv cHNyLmgKQEAgLTMzLDcgKzMzLDcgQEAKICNkZWZpbmUgUFNSX0NBVF9DRFBfQ0FQQUJJTElUWSAg ICAgICAgICAoMXUgPDwgMikKIAogLyogTDMgQ0RQIEVuYWJsZSBiaXQqLwotI2RlZmluZSBQU1Jf TDNfUU9TX0NEUF9FTkFCTEVfQklUICAgICAgIDB4MAorI2RlZmluZSBQU1JfTDNfUU9TX0NEUF9F TkFCTEUgICAgICAgICAgIChfQUMoMSwgVUxMKSA8PCAgMCkKIAogLyogVXNlZCBieSBwc3JfZ2V0 X2luZm8oKSAqLwogI2RlZmluZSBQU1JfSU5GT19JRFhfQ09TX01BWCAgICAgICAgICAgIDAKLS0g CjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5vcmcKaHR0 cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZlbA==