From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v2 1/3] x86/vpmu: Add get/put_vpmu() and VPMU_AVAILABLE Date: Fri, 17 Feb 2017 12:40:10 -0500 Message-ID: <1487353212-4395-2-git-send-email-boris.ostrovsky@oracle.com> References: <1487353212-4395-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1487353212-4395-1-git-send-email-boris.ostrovsky@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: Boris Ostrovsky , andrew.cooper3@citrix.com, kevin.tian@intel.com, jun.nakajima@intel.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org dnBtdV9lbmFibGVkKCkgKHVzZWQgYnkgaHZtL3B2X2NwdWlkKCkgdG8gcHJvcGVybHkgcmVwb3J0 IDB4YSBsZWFmCmZvciBJbnRlbCBwcm9jZXNzb3JzKSBpcyBiYXNlZCBvbiB0aGUgdmFsdWUgb2Yg VlBNVV9DT05URVhUX0FMTE9DQVRFRApiaXQuIFRoaXMgaXMgcHJvYmxlbWF0aWM6CiogRm9yIEhW TSBndWVzdHMgVlBNVSBjb250ZXh0IGlzIGFsbG9jYXRlZCBsYXppbHksIGR1cmluZyB0aGUgZmly c3QKICBhY2Nlc3MgdG8gVlBNVSBNU1JzLiBTaW5jZSB0aGUgbGVhZiBpcyB0eXBpY2FsbHkgcXVl cmllZCBiZWZvcmUgZ3Vlc3QKICBhdHRlbXB0cyB0byByZWFkIG9yIHdyaXRlIHRoZSBNU1JzIGl0 IGlzIGxpa2VseSB0aGF0IENQVUlEIHdpbGwgcmVwb3J0CiAgbm8gUE1VIHN1cHBvcnQKKiBGb3Ig UFYgZ3Vlc3RzIHRoZSBjb250ZXh0IGlzIGFsbG9jYXRlZCBlYWdlcmx5IGJ1dCBvbmx5IGluIHJl c3BvbmNlIHRvCiAgZ3Vlc3QncyBYRU5QTVVfaW5pdCBoeXBlcmNhbGwuIFRoZXJlIGlzIGEgY2hh bmNlIHRoYXQgdGhlIGd1ZXN0IHdpbGwKICB0cnkgdG8gcmVhZCBDUFVJRCBiZWZvcmUgbWFraW5n IHRoaXMgaHlwZXJjYWxsLgoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFZQTVVfQVZBSUxBQkxFIGZs YWcgd2hpY2ggaXMgc2V0IChzdWJqZWN0IHRvIHZwbXVfbW9kZQpjb25zdHJhaW50cykgZHVyaW5n IFZDUFUgaW5pdGlhbGl6YXRpb24gZm9yIGJvdGggUFYgYW5kIEhWTSBndWVzdHMuIFNpbmNlCnRo aXMgZmxhZyBpcyBleHBlY3RlZCB0byBiZSBtYW5hZ2VkIHRvZ2V0aGVyIHdpdGggdnBtdV9jb3Vu dCwgZ2V0L3B1dF92cG11KCkKYXJlIGFkZGVkIHRvIHNpbXBsaWZ5IGNvZGUuCgp2cG11X2VuYWJs ZWQoKSAocmVuYW1lZCB0byB2cG11X2F2YWlsYWJsZSgpKSBjYW4gbm93IHVzZSB0aGlzIG5ldyBm bGFnLgoKKEFzIGEgc2lkZSBhZmZlY3QgdGhpcyBwYXRjaCBhbHNvIGZpeGVzIGEgcmFjZSBpbiBw dnBtdV9pbml0KCkgd2hlcmUgd2UKaW5jcmVtZW50IHZjcHVfY291bnQgaW4gdnBtdV9pbml0aWFs aXNlKCkgYWZ0ZXIgY2hlY2tpbmcgdnBtdV9tb2RlKQoKU2lnbmVkLW9mZi1ieTogQm9yaXMgT3N0 cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KLS0tCnYyOgoqIFJlbmFtZSBWUE1V X0VOQUJMRUQgdG8gVlBNVV9BVkFJTEFCTEUgKGFuZCB2cG11X2VuYWJsZWQoKSB0byB2cG11X2F2 YWlsYWJsZSgpCiogQ2hlY2sgVlBNVV9BVkFJTEFCTEUgZmxhZyBpbiBwdXRfdnBtdSgpIHVuZGVy IGxvY2sKCiB4ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyAgICB8IDExMSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9jcHVpZC5jICAgICAg IHwgICA4ICsrLS0KIHhlbi9hcmNoL3g4Ni9kb21haW4uYyAgICAgIHwgICA1ICsrCiB4ZW4vYXJj aC94ODYvaHZtL3N2bS9zdm0uYyB8ICAgNSAtLQogeGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMg fCAgIDUgLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvdnBtdS5oIHwgICA2ICsrLQogNiBmaWxlcyBj aGFuZ2VkLCA4OCBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYyBiL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCmluZGV4IDM1 YTk0MDMuLmIzMDc2OWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCisrKyBi L3hlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jCkBAIC00NTYsMzIgKzQ1NiwyMSBAQCBpbnQgdnBtdV9s b2FkKHN0cnVjdCB2Y3B1ICp2LCBib29sX3QgZnJvbV9ndWVzdCkKICAgICByZXR1cm4gMDsKIH0K IAotdm9pZCB2cG11X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCitzdGF0aWMgaW50IHZwbXVf YXJjaF9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCB2cG11X3N0cnVj dCAqdnBtdSA9IHZjcHVfdnBtdSh2KTsKICAgICB1aW50OF90IHZlbmRvciA9IGN1cnJlbnRfY3B1 X2RhdGEueDg2X3ZlbmRvcjsKICAgICBpbnQgcmV0OwotICAgIGJvb2xfdCBpc19wcml2X3ZwbXUg PSBpc19oYXJkd2FyZV9kb21haW4odi0+ZG9tYWluKTsKIAogICAgIEJVSUxEX0JVR19PTihzaXpl b2Yoc3RydWN0IHhlbl9wbXVfaW50ZWxfY3R4dCkgPiBYRU5QTVVfQ1RYVF9QQURfU1opOwogICAg IEJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IHhlbl9wbXVfYW1kX2N0eHQpID4gWEVOUE1VX0NU WFRfUEFEX1NaKTsKICAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB4ZW5fcG11X3JlZ3Mp ID4gWEVOUE1VX1JFR1NfUEFEX1NaKTsKICAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBj b21wYXRfcG11X3JlZ3MpID4gWEVOUE1VX1JFR1NfUEFEX1NaKTsKIAotICAgIEFTU0VSVCghdnBt dS0+ZmxhZ3MgJiYgIXZwbXUtPmNvbnRleHQpOworICAgIEFTU0VSVCghKHZwbXUtPmZsYWdzICYg flZQTVVfQVZBSUxBQkxFKSAmJiAhdnBtdS0+Y29udGV4dCk7CiAKLSAgICBpZiAoICFpc19wcml2 X3ZwbXUgKQotICAgIHsKLSAgICAgICAgLyoKLSAgICAgICAgICogQ291bnQgYWN0aXZlIFZQTVVz IHNvIHRoYXQgd2Ugd29uJ3QgdHJ5IHRvIGNoYW5nZSB2cG11X21vZGUgd2hpbGUKLSAgICAgICAg ICogdGhleSBhcmUgaW4gdXNlLgotICAgICAgICAgKiB2cG11X21vZGUgY2FuIGJlIHNhZmVseSB1 cGRhdGVkIHdoaWxlIGRvbTAncyBWUE1VcyBhcmUgYWN0aXZlIGFuZAotICAgICAgICAgKiBzbyB3 ZSBkb24ndCBuZWVkIHRvIGluY2x1ZGUgaXQgaW4gdGhlIGNvdW50LgotICAgICAgICAgKi8KLSAg ICAgICAgc3Bpbl9sb2NrKCZ2cG11X2xvY2spOwotICAgICAgICB2cG11X2NvdW50Kys7Ci0gICAg ICAgIHNwaW5fdW5sb2NrKCZ2cG11X2xvY2spOwotICAgIH0KKyAgICBpZiAoICF2cG11X2F2YWls YWJsZSh2KSApCisgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNoICggdmVuZG9yICkKICAg ICB7CkBAIC01MDEsNyArNDkwLDcgQEAgdm9pZCB2cG11X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUg KnYpCiAgICAgICAgICAgICBvcHRfdnBtdV9lbmFibGVkID0gMDsKICAgICAgICAgICAgIHZwbXVf bW9kZSA9IFhFTlBNVV9NT0RFX09GRjsKICAgICAgICAgfQotICAgICAgICByZXR1cm47IC8qIERv bid0IGJvdGhlciByZXN0b3JpbmcgdnBtdV9jb3VudCwgVlBNVSBpcyBvZmYgZm9yZXZlciAqLwor ICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICB9CiAKICAgICB2cG11LT5od19sYXBpY19sdnRw YyA9IFBNVV9BUElDX1ZFQ1RPUiB8IEFQSUNfTFZUX01BU0tFRDsKQEAgLTUwOSwxNSArNDk4LDYz IEBAIHZvaWQgdnBtdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQogICAgIGlmICggcmV0ICkK ICAgICAgICAgcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcgIlZQTVU6IEluaXRpYWxpemF0aW9uIGZh aWxlZCBmb3IgJXB2XG4iLCB2KTsKIAotICAgIC8qIEludGVsIG5lZWRzIHRvIGluaXRpYWxpemUg VlBNVSBvcHMgZXZlbiBpZiBWUE1VIGlzIG5vdCBpbiB1c2UgKi8KLSAgICBpZiAoICFpc19wcml2 X3ZwbXUgJiYKLSAgICAgICAgIChyZXQgfHwgKHZwbXVfbW9kZSA9PSBYRU5QTVVfTU9ERV9PRkYp IHx8Ci0gICAgICAgICAgKHZwbXVfbW9kZSA9PSBYRU5QTVVfTU9ERV9BTEwpKSApCisgICAgcmV0 dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgZ2V0X3ZwbXUoc3RydWN0IHZjcHUgKnYpCit7Cisg ICAgc3Bpbl9sb2NrKCZ2cG11X2xvY2spOworCisgICAgLyoKKyAgICAgKiBDb3VudCBhY3RpdmUg VlBNVXMgc28gdGhhdCB3ZSB3b24ndCB0cnkgdG8gY2hhbmdlIHZwbXVfbW9kZSB3aGlsZQorICAg ICAqIHRoZXkgYXJlIGluIHVzZS4KKyAgICAgKiB2cG11X21vZGUgY2FuIGJlIHNhZmVseSB1cGRh dGVkIHdoaWxlIGRvbTAncyBWUE1VcyBhcmUgYWN0aXZlIGFuZAorICAgICAqIHNvIHdlIGRvbid0 IG5lZWQgdG8gaW5jbHVkZSBpdCBpbiB0aGUgY291bnQuCisgICAgICovCisgICAgaWYgKCAhaXNf aGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbikgJiYKKyAgICAgICAgKHZwbXVfbW9kZSAmIChYRU5Q TVVfTU9ERV9TRUxGIHwgWEVOUE1VX01PREVfSFYpKSApCisgICAgeworICAgICAgICB2cG11X2Nv dW50Kys7CisgICAgICAgIHZwbXVfc2V0KHZjcHVfdnBtdSh2KSwgVlBNVV9BVkFJTEFCTEUpOwor ICAgIH0KKyAgICBlbHNlIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbikgJiYKKyAg ICAgICAgICAgICAgKHZwbXVfbW9kZSAhPSBYRU5QTVVfTU9ERV9PRkYpICkKKyAgICAgICAgdnBt dV9zZXQodmNwdV92cG11KHYpLCBWUE1VX0FWQUlMQUJMRSk7CisKKyAgICBzcGluX3VubG9jaygm dnBtdV9sb2NrKTsKK30KKworc3RhdGljIHZvaWQgcHV0X3ZwbXUoc3RydWN0IHZjcHUgKnYpCit7 CisgICAgc3Bpbl9sb2NrKCZ2cG11X2xvY2spOworCisgICAgaWYgKCAhdnBtdV9pc19zZXQodmNw dV92cG11KHYpLCBWUE1VX0FWQUlMQUJMRSkgKQorICAgICAgICBnb3RvIG91dDsKKworICAgIGlm ICggIWlzX2hhcmR3YXJlX2RvbWFpbih2LT5kb21haW4pICYmCisgICAgICAgICAodnBtdV9tb2Rl ICYgKFhFTlBNVV9NT0RFX1NFTEYgfCBYRU5QTVVfTU9ERV9IVikpICkKICAgICB7Ci0gICAgICAg IHNwaW5fbG9jaygmdnBtdV9sb2NrKTsKICAgICAgICAgdnBtdV9jb3VudC0tOwotICAgICAgICBz cGluX3VubG9jaygmdnBtdV9sb2NrKTsKKyAgICAgICAgdnBtdV9yZXNldCh2Y3B1X3ZwbXUodiks IFZQTVVfQVZBSUxBQkxFKTsKICAgICB9CisgICAgZWxzZSBpZiAoIGlzX2hhcmR3YXJlX2RvbWFp bih2LT5kb21haW4pICYmCisgICAgICAgICAgICAgICh2cG11X21vZGUgIT0gWEVOUE1VX01PREVf T0ZGKSApCisgICAgICAgIHZwbXVfcmVzZXQodmNwdV92cG11KHYpLCBWUE1VX0FWQUlMQUJMRSk7 CisKKyBvdXQ6CisgICAgc3Bpbl91bmxvY2soJnZwbXVfbG9jayk7Cit9CisKK3ZvaWQgdnBtdV9p bml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGdldF92cG11KHYpOworCisgICAgLyoK KyAgICAgKiBHdWVzdHMgd2l0aG91dCBMQVBJQyAoaS5lLiBQVikgY2FsbCB2cG11X2FyY2hfaW5p dGlhbGlzZSgpCisgICAgICogZnJvbSBwdnBtdV9pbml0KCkuCisgICAgICovCisgICAgaWYgKCBo YXNfdmxhcGljKHYtPmRvbWFpbikgJiYgdnBtdV9hcmNoX2luaXRpYWxpc2UodikgKQorICAgICAg ICBwdXRfdnBtdSh2KTsKIH0KIAogc3RhdGljIHZvaWQgdnBtdV9jbGVhcl9sYXN0KHZvaWQgKmFy ZykKQEAgLTUyNiw3ICs1NjMsNyBAQCBzdGF0aWMgdm9pZCB2cG11X2NsZWFyX2xhc3Qodm9pZCAq YXJnKQogICAgICAgICB0aGlzX2NwdShsYXN0X3ZjcHUpID0gTlVMTDsKIH0KIAotdm9pZCB2cG11 X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCitzdGF0aWMgdm9pZCB2cG11X2FyY2hfZGVzdHJveShz dHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgdnBtdV9zdHJ1Y3QgKnZwbXUgPSB2Y3B1X3Zw bXUodik7CiAKQEAgLTU1MSwxMSArNTg4LDEzIEBAIHZvaWQgdnBtdV9kZXN0cm95KHN0cnVjdCB2 Y3B1ICp2KQogICAgICAgICAgICAgICAgICAgICAgICAgIHZwbXVfc2F2ZV9mb3JjZSwgdiwgMSk7 CiAgICAgICAgICB2cG11LT5hcmNoX3ZwbXVfb3BzLT5hcmNoX3ZwbXVfZGVzdHJveSh2KTsKICAg ICB9Cit9CiAKLSAgICBzcGluX2xvY2soJnZwbXVfbG9jayk7Ci0gICAgaWYgKCAhaXNfaGFyZHdh cmVfZG9tYWluKHYtPmRvbWFpbikgKQotICAgICAgICB2cG11X2NvdW50LS07Ci0gICAgc3Bpbl91 bmxvY2soJnZwbXVfbG9jayk7Cit2b2lkIHZwbXVfZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKK3sK KyAgICB2cG11X2FyY2hfZGVzdHJveSh2KTsKKworICAgIHB1dF92cG11KHYpOwogfQogCiBzdGF0 aWMgaW50IHB2cG11X2luaXQoc3RydWN0IGRvbWFpbiAqZCwgeGVuX3BtdV9wYXJhbXNfdCAqcGFy YW1zKQpAQCAtNTY1LDEzICs2MDQsMTUgQEAgc3RhdGljIGludCBwdnBtdV9pbml0KHN0cnVjdCBk b21haW4gKmQsIHhlbl9wbXVfcGFyYW1zX3QgKnBhcmFtcykKICAgICBzdHJ1Y3QgcGFnZV9pbmZv ICpwYWdlOwogICAgIHVpbnQ2NF90IGdmbiA9IHBhcmFtcy0+dmFsOwogCi0gICAgaWYgKCAodnBt dV9tb2RlID09IFhFTlBNVV9NT0RFX09GRikgfHwKLSAgICAgICAgICgodnBtdV9tb2RlICYgWEVO UE1VX01PREVfQUxMKSAmJiAhaXNfaGFyZHdhcmVfZG9tYWluKGQpKSApCi0gICAgICAgIHJldHVy biAtRUlOVkFMOwotCiAgICAgaWYgKCAocGFyYW1zLT52Y3B1ID49IGQtPm1heF92Y3B1cykgfHwg KGQtPnZjcHVbcGFyYW1zLT52Y3B1XSA9PSBOVUxMKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFM OwogCisgICAgdiA9IGQtPnZjcHVbcGFyYW1zLT52Y3B1XTsKKyAgICB2cG11ID0gdmNwdV92cG11 KHYpOworCisgICAgaWYgKCAhdnBtdV9hdmFpbGFibGUodikgKQorICAgICAgICByZXR1cm4gLUVO T0VOVDsKKwogICAgIHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihkLCBnZm4sIE5VTEwsIFAyTV9B TExPQyk7CiAgICAgaWYgKCAhcGFnZSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwpAQCAtNTgy LDkgKzYyMyw2IEBAIHN0YXRpYyBpbnQgcHZwbXVfaW5pdChzdHJ1Y3QgZG9tYWluICpkLCB4ZW5f cG11X3BhcmFtc190ICpwYXJhbXMpCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwogICAgIH0KIAot ICAgIHYgPSBkLT52Y3B1W3BhcmFtcy0+dmNwdV07Ci0gICAgdnBtdSA9IHZjcHVfdnBtdSh2KTsK LQogICAgIHNwaW5fbG9jaygmdnBtdS0+dnBtdV9sb2NrKTsKIAogICAgIGlmICggdi0+YXJjaC52 cG11LnhlbnBtdV9kYXRhICkKQEAgLTYwMiw3ICs2NDAsOCBAQCBzdGF0aWMgaW50IHB2cG11X2lu aXQoc3RydWN0IGRvbWFpbiAqZCwgeGVuX3BtdV9wYXJhbXNfdCAqcGFyYW1zKQogICAgICAgICBy ZXR1cm4gLUVOT01FTTsKICAgICB9CiAKLSAgICB2cG11X2luaXRpYWxpc2Uodik7CisgICAgaWYg KCB2cG11X2FyY2hfaW5pdGlhbGlzZSh2KSApCisgICAgICAgIHB1dF92cG11KHYpOwogCiAgICAg c3Bpbl91bmxvY2soJnZwbXUtPnZwbXVfbG9jayk7CiAKQEAgLTYyNiw3ICs2NjUsNyBAQCBzdGF0 aWMgdm9pZCBwdnBtdV9maW5pc2goc3RydWN0IGRvbWFpbiAqZCwgeGVuX3BtdV9wYXJhbXNfdCAq cGFyYW1zKQogICAgIHZwbXUgPSB2Y3B1X3ZwbXUodik7CiAgICAgc3Bpbl9sb2NrKCZ2cG11LT52 cG11X2xvY2spOwogCi0gICAgdnBtdV9kZXN0cm95KHYpOworICAgIHZwbXVfYXJjaF9kZXN0cm95 KHYpOwogICAgIHhlbnBtdV9kYXRhID0gdnBtdS0+eGVucG11X2RhdGE7CiAgICAgdnBtdS0+eGVu cG11X2RhdGEgPSBOVUxMOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1aWQuYyBiL3hl bi9hcmNoL3g4Ni9jcHVpZC5jCmluZGV4IGUwYTM4N2UuLjZkMTk0NmEgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9jcHVpZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCkBAIC03MTMsNyAr NzEzLDcgQEAgc3RhdGljIHZvaWQgcHZfY3B1aWQodWludDMyX3QgbGVhZiwgdWludDMyX3Qgc3Vi bGVhZiwgc3RydWN0IGNwdWlkX2xlYWYgKnJlcykKICAgICAgICAgICAgIH0KICAgICAgICAgfQog Ci0gICAgICAgIGlmICggdnBtdV9lbmFibGVkKGN1cnIpICYmCisgICAgICAgIGlmICggdnBtdV9h dmFpbGFibGUoY3VycikgJiYKICAgICAgICAgICAgICB2cG11X2lzX3NldCh2Y3B1X3ZwbXUoY3Vy ciksIFZQTVVfQ1BVX0hBU19EUykgKQogICAgICAgICB7CiAgICAgICAgICAgICByZXMtPmQgfD0g Y3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX0RTKTsKQEAgLTcyNiw3ICs3MjYsNyBAQCBzdGF0aWMg dm9pZCBwdl9jcHVpZCh1aW50MzJfdCBsZWFmLCB1aW50MzJfdCBzdWJsZWFmLCBzdHJ1Y3QgY3B1 aWRfbGVhZiAqcmVzKQogCiAgICAgY2FzZSAweDAwMDAwMDBhOiAvKiBBcmNoaXRlY3R1cmFsIFBl cmZvcm1hbmNlIE1vbml0b3IgRmVhdHVyZXMgKEludGVsKSAqLwogICAgICAgICBpZiAoIGJvb3Rf Y3B1X2RhdGEueDg2X3ZlbmRvciAhPSBYODZfVkVORE9SX0lOVEVMIHx8Ci0gICAgICAgICAgICAg IXZwbXVfZW5hYmxlZChjdXJyKSApCisgICAgICAgICAgICAgIXZwbXVfYXZhaWxhYmxlKGN1cnIp ICkKICAgICAgICAgICAgIGdvdG8gdW5zdXBwb3J0ZWQ7CiAKICAgICAgICAgLyogUmVwb3J0IGF0 IG1vc3QgdmVyc2lvbiAzIHNpbmNlIHRoYXQncyBhbGwgd2UgY3VycmVudGx5IGVtdWxhdGUuICov CkBAIC03OTMsNyArNzkzLDcgQEAgc3RhdGljIHZvaWQgaHZtX2NwdWlkKHVpbnQzMl90IGxlYWYs IHVpbnQzMl90IHN1YmxlYWYsIHN0cnVjdCBjcHVpZF9sZWFmICpyZXMpCiAgICAgICAgIGlmICgg IWhhcF9lbmFibGVkKGQpICYmICFodm1fcGFlX2VuYWJsZWQodikgKQogICAgICAgICAgICAgcmVz LT5kICY9IH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfUFNFMzYpOwogCi0gICAgICAgIGlmICgg dnBtdV9lbmFibGVkKHYpICYmCisgICAgICAgIGlmICggdnBtdV9hdmFpbGFibGUodikgJiYKICAg ICAgICAgICAgICB2cG11X2lzX3NldCh2Y3B1X3ZwbXUodiksIFZQTVVfQ1BVX0hBU19EUykgKQog ICAgICAgICB7CiAgICAgICAgICAgICByZXMtPmQgfD0gY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJF X0RTKTsKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdGF0aWMgdm9pZCBodm1fY3B1aWQodWludDMyX3Qg bGVhZiwgdWludDMyX3Qgc3VibGVhZiwgc3RydWN0IGNwdWlkX2xlYWYgKnJlcykKICAgICAgICAg YnJlYWs7CiAKICAgICBjYXNlIDB4MDAwMDAwMGE6IC8qIEFyY2hpdGVjdHVyYWwgUGVyZm9ybWFu Y2UgTW9uaXRvciBGZWF0dXJlcyAoSW50ZWwpICovCi0gICAgICAgIGlmICggYm9vdF9jcHVfZGF0 YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSU5URUwgfHwgIXZwbXVfZW5hYmxlZCh2KSApCisg ICAgICAgIGlmICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSU5URUwg fHwgIXZwbXVfYXZhaWxhYmxlKHYpICkKICAgICAgICAgewogICAgICAgICAgICAgKnJlcyA9IEVN UFRZX0xFQUY7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9k b21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwppbmRleCA3MWMwZTNjLi4yOTI0NDJhIDEw MDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFp bi5jCkBAIC00NTgsNiArNDU4LDggQEAgaW50IHZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAq dikKICAgICAgICAgaWYgKCBpc19wdl9kb21haW4oZCkgKQogICAgICAgICAgICAgeGZyZWUodi0+ YXJjaC5wdl92Y3B1LnRyYXBfY3R4dCk7CiAgICAgfQorICAgIGVsc2UgaWYgKCAhaXNfaWRsZV9k b21haW4odi0+ZG9tYWluKSApCisgICAgICAgIHZwbXVfaW5pdGlhbGlzZSh2KTsKIAogICAgIHJl dHVybiByYzsKIH0KQEAgLTQ3NSw2ICs0NzcsOSBAQCB2b2lkIHZjcHVfZGVzdHJveShzdHJ1Y3Qg dmNwdSAqdikKIAogICAgIHZjcHVfZGVzdHJveV9mcHUodik7CiAKKyAgICBpZiAoICFpc19pZGxl X2RvbWFpbih2LT5kb21haW4pICkKKyAgICAgICAgdnBtdV9kZXN0cm95KHYpOworCiAgICAgaWYg KCBoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpICkKICAgICAgICAgaHZtX3ZjcHVfZGVzdHJveSh2 KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyBiL3hl bi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCmluZGV4IGNhMjc4NWMuLjI3YmZiM2MgMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc3Zt L3N2bS5jCkBAIC0xMTY5LDEwICsxMTY5LDYgQEAgc3RhdGljIGludCBzdm1fdmNwdV9pbml0aWFs aXNlKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCi0gICAgLyog UFZIJ3MgVlBNVSBpcyBpbml0aWFsaXplZCB2aWEgaHlwZXJjYWxsICovCi0gICAgaWYgKCBoYXNf dmxhcGljKHYtPmRvbWFpbikgKQotICAgICAgICB2cG11X2luaXRpYWxpc2Uodik7Ci0KICAgICBz dm1fZ3Vlc3Rfb3N2d19pbml0KHYpOwogCiAgICAgcmV0dXJuIDA7CkBAIC0xMTgwLDcgKzExNzYs NiBAQCBzdGF0aWMgaW50IHN2bV92Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiAKIHN0 YXRpYyB2b2lkIHN2bV92Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAgdnBtdV9k ZXN0cm95KHYpOwogICAgIHN2bV9kZXN0cm95X3ZtY2Iodik7CiAgICAgcGFzc2l2ZV9kb21haW5f ZGVzdHJveSh2KTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIv eGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKaW5kZXggNDJmNGZiZC4uZDQ0NmU5ZSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92 bXgvdm14LmMKQEAgLTMzMCwxMCArMzMwLDYgQEAgc3RhdGljIGludCB2bXhfdmNwdV9pbml0aWFs aXNlKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogUFZIJ3MgVlBN VSBpcyBpbml0aWFsaXplZCB2aWEgaHlwZXJjYWxsICovCi0gICAgaWYgKCBoYXNfdmxhcGljKHYt PmRvbWFpbikgKQotICAgICAgICB2cG11X2luaXRpYWxpc2Uodik7Ci0KICAgICB2bXhfaW5zdGFs bF92bGFwaWNfbWFwcGluZyh2KTsKIAogICAgIC8qICVlYXggPT0gMSBzaWduYWxzIGZ1bGwgcmVh bC1tb2RlIHN1cHBvcnQgdG8gdGhlIGd1ZXN0IGxvYWRlci4gKi8KQEAgLTM1NCw3ICszNTAsNiBA QCBzdGF0aWMgdm9pZCB2bXhfdmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQogICAgICAqLwog ICAgIHZteF92Y3B1X2Rpc2FibGVfcG1sKHYpOwogICAgIHZteF9kZXN0cm95X3ZtY3Modik7Ci0g ICAgdnBtdV9kZXN0cm95KHYpOwogICAgIHBhc3NpdmVfZG9tYWluX2Rlc3Ryb3kodik7CiB9CiAK ZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvdnBtdS5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni92cG11LmgKaW5kZXggZTUwNjE4Zi4uNWU3NzhhYiAxMDA2NDQKLS0tIGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni92cG11LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni92cG11LmgKQEAgLTI1 LDcgKzI1LDcgQEAKIAogI2RlZmluZSB2Y3B1X3ZwbXUodmNwdSkgICAoJih2Y3B1KS0+YXJjaC52 cG11KQogI2RlZmluZSB2cG11X3ZjcHUodnBtdSkgICBjb250YWluZXJfb2YoKHZwbXUpLCBzdHJ1 Y3QgdmNwdSwgYXJjaC52cG11KQotI2RlZmluZSB2cG11X2VuYWJsZWQodmNwdSkgdnBtdV9pc19z ZXQodmNwdV92cG11KHZjcHUpLCBWUE1VX0NPTlRFWFRfQUxMT0NBVEVEKQorI2RlZmluZSB2cG11 X2F2YWlsYWJsZSh2Y3B1KSB2cG11X2lzX3NldCh2Y3B1X3ZwbXUodmNwdSksIFZQTVVfQVZBSUxB QkxFKQogCiAjZGVmaW5lIE1TUl9UWVBFX0NPVU5URVIgICAgICAgICAgICAwCiAjZGVmaW5lIE1T Ul9UWVBFX0NUUkwgICAgICAgICAgICAgICAxCkBAIC03NCw2ICs3NCw3IEBAIHN0cnVjdCB2cG11 X3N0cnVjdCB7CiAjZGVmaW5lIFZQTVVfUEFTU0lWRV9ET01BSU5fQUxMT0NBVEVEICAgICAgIDB4 MjAKIC8qIFBWKEgpIGd1ZXN0czogVlBNVSByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIGJ5IGd1ZXN0 IGZyb20gc2hhcmVkIHBhZ2UgKi8KICNkZWZpbmUgVlBNVV9DQUNIRUQgICAgICAgICAgICAgICAg ICAgICAgICAgMHg0MAorI2RlZmluZSBWUE1VX0FWQUlMQUJMRSAgICAgICAgICAgICAgICAgICAg ICAweDgwCiAKIC8qIEludGVsLXNwZWNpZmljIFZQTVUgZmVhdHVyZXMgKi8KICNkZWZpbmUgVlBN VV9DUFVfSEFTX0RTICAgICAgICAgICAgICAgICAgICAgMHgxMDAgLyogSGFzIERlYnVnIFN0b3Jl ICovCkBAIC04OSw3ICs5MCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2cG11X3Jlc2V0KHN0cnVj dCB2cG11X3N0cnVjdCAqdnBtdSwgY29uc3QgdTMyIG1hc2spCiB9CiBzdGF0aWMgaW5saW5lIHZv aWQgdnBtdV9jbGVhcihzdHJ1Y3QgdnBtdV9zdHJ1Y3QgKnZwbXUpCiB7Ci0gICAgdnBtdS0+Zmxh Z3MgPSAwOworICAgIC8qIFZQTVVfQVZBSUxBQkxFIHNob3VsZCBiZSBhbHRlcmVkIGJ5IGdldC9w dXRfdnBtdSgpLiAqLworICAgIHZwbXUtPmZsYWdzICY9IFZQTVVfQVZBSUxBQkxFOwogfQogc3Rh dGljIGlubGluZSBib29sX3QgdnBtdV9pc19zZXQoY29uc3Qgc3RydWN0IHZwbXVfc3RydWN0ICp2 cG11LCBjb25zdCB1MzIgbWFzaykKIHsKLS0gCjEuOC4zLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK