From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v3 1/2] x86/vpmu: Add get/put_vpmu() and VPMU_AVAILABLE Date: Wed, 22 Feb 2017 13:24:27 -0500 Message-ID: <1487787868-6053-2-git-send-email-boris.ostrovsky@oracle.com> References: <1487787868-6053-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: <1487787868-6053-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 cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KLS0tCkNoYW5nZXMgaW4gdjM6Ciog QWRqdXN0ZWQgY29tbWVudCBhYm91dCB2cG11X2NvdW50IHVzZSBzbyB0aGF0IGl0IGRvZXNuJ3Qg aW1wbHkgdGhhdAogIFZQTVVzIG5lZWQgdG8gYmUgYWN0aXZlIGluIG9yZGVyIHRvIGJlIHJlZi1j b3VudGVkLgoqIFJlcGxhY2VkIG9wZW4tY29kZWQgdGVzdCBmb3IgVlBNVV9BVkFJTEFCTEUgd2l0 aCB2cG11X2F2YWlsYWJsZSgpCgogeGVuL2FyY2gveDg2L2NwdS92cG11LmMgICAgfCAxMTEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYv Y3B1aWQuYyAgICAgICB8ICAgOCArKy0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICB8ICAg NSArKwogeGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgfCAgIDUgLS0KIHhlbi9hcmNoL3g4Ni9o dm0vdm14L3ZteC5jIHwgICA1IC0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L3ZwbXUuaCB8ICAgNiAr Ky0KIDYgZmlsZXMgY2hhbmdlZCwgODggaW5zZXJ0aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS92cG11LmMgYi94ZW4vYXJjaC94ODYvY3B1L3Zw bXUuYwppbmRleCAzNWE5NDAzLi4zZDc3MzdkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1 L3ZwbXUuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYwpAQCAtNDU2LDMyICs0NTYsMjEg QEAgaW50IHZwbXVfbG9hZChzdHJ1Y3QgdmNwdSAqdiwgYm9vbF90IGZyb21fZ3Vlc3QpCiAgICAg cmV0dXJuIDA7CiB9CiAKLXZvaWQgdnBtdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQorc3Rh dGljIGludCB2cG11X2FyY2hfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzdHJ1 Y3QgdnBtdV9zdHJ1Y3QgKnZwbXUgPSB2Y3B1X3ZwbXUodik7CiAgICAgdWludDhfdCB2ZW5kb3Ig PSBjdXJyZW50X2NwdV9kYXRhLng4Nl92ZW5kb3I7CiAgICAgaW50IHJldDsKLSAgICBib29sX3Qg aXNfcHJpdl92cG11ID0gaXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbik7CiAKICAgICBCVUlM RF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB4ZW5fcG11X2ludGVsX2N0eHQpID4gWEVOUE1VX0NUWFRf UEFEX1NaKTsKICAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB4ZW5fcG11X2FtZF9jdHh0 KSA+IFhFTlBNVV9DVFhUX1BBRF9TWik7CiAgICAgQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3Qg eGVuX3BtdV9yZWdzKSA+IFhFTlBNVV9SRUdTX1BBRF9TWik7CiAgICAgQlVJTERfQlVHX09OKHNp emVvZihzdHJ1Y3QgY29tcGF0X3BtdV9yZWdzKSA+IFhFTlBNVV9SRUdTX1BBRF9TWik7CiAKLSAg ICBBU1NFUlQoIXZwbXUtPmZsYWdzICYmICF2cG11LT5jb250ZXh0KTsKKyAgICBBU1NFUlQoISh2 cG11LT5mbGFncyAmIH5WUE1VX0FWQUlMQUJMRSkgJiYgIXZwbXUtPmNvbnRleHQpOwogCi0gICAg aWYgKCAhaXNfcHJpdl92cG11ICkKLSAgICB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIENvdW50 IGFjdGl2ZSBWUE1VcyBzbyB0aGF0IHdlIHdvbid0IHRyeSB0byBjaGFuZ2UgdnBtdV9tb2RlIHdo aWxlCi0gICAgICAgICAqIHRoZXkgYXJlIGluIHVzZS4KLSAgICAgICAgICogdnBtdV9tb2RlIGNh biBiZSBzYWZlbHkgdXBkYXRlZCB3aGlsZSBkb20wJ3MgVlBNVXMgYXJlIGFjdGl2ZSBhbmQKLSAg ICAgICAgICogc28gd2UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIGl0IGluIHRoZSBjb3VudC4KLSAg ICAgICAgICovCi0gICAgICAgIHNwaW5fbG9jaygmdnBtdV9sb2NrKTsKLSAgICAgICAgdnBtdV9j b3VudCsrOwotICAgICAgICBzcGluX3VubG9jaygmdnBtdV9sb2NrKTsKLSAgICB9CisgICAgaWYg KCAhdnBtdV9hdmFpbGFibGUodikgKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIHN3aXRjaCAo IHZlbmRvciApCiAgICAgewpAQCAtNTAxLDcgKzQ5MCw3IEBAIHZvaWQgdnBtdV9pbml0aWFsaXNl KHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICAgICAgb3B0X3ZwbXVfZW5hYmxlZCA9IDA7CiAgICAg ICAgICAgICB2cG11X21vZGUgPSBYRU5QTVVfTU9ERV9PRkY7CiAgICAgICAgIH0KLSAgICAgICAg cmV0dXJuOyAvKiBEb24ndCBib3RoZXIgcmVzdG9yaW5nIHZwbXVfY291bnQsIFZQTVUgaXMgb2Zm IGZvcmV2ZXIgKi8KKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQogCiAgICAgdnBtdS0+ aHdfbGFwaWNfbHZ0cGMgPSBQTVVfQVBJQ19WRUNUT1IgfCBBUElDX0xWVF9NQVNLRUQ7CkBAIC01 MDksMTUgKzQ5OCw2MyBAQCB2b2lkIHZwbXVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKICAg ICBpZiAoIHJldCApCiAgICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HICJWUE1VOiBJbml0 aWFsaXphdGlvbiBmYWlsZWQgZm9yICVwdlxuIiwgdik7CiAKLSAgICAvKiBJbnRlbCBuZWVkcyB0 byBpbml0aWFsaXplIFZQTVUgb3BzIGV2ZW4gaWYgVlBNVSBpcyBub3QgaW4gdXNlICovCi0gICAg aWYgKCAhaXNfcHJpdl92cG11ICYmCi0gICAgICAgICAocmV0IHx8ICh2cG11X21vZGUgPT0gWEVO UE1VX01PREVfT0ZGKSB8fAotICAgICAgICAgICh2cG11X21vZGUgPT0gWEVOUE1VX01PREVfQUxM KSkgKQorICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGdldF92cG11KHN0cnVjdCB2 Y3B1ICp2KQoreworICAgIHNwaW5fbG9jaygmdnBtdV9sb2NrKTsKKworICAgIC8qCisgICAgICog S2VlcCBjb3VudCBvZiBWUE1VcyBpbiB0aGUgc3lzdGVtIHNvIHRoYXQgd2Ugd29uJ3QgdHJ5IHRv IGNoYW5nZQorICAgICAqIHZwbXVfbW9kZSB3aGlsZSBhIGd1ZXN0IG1pZ2h0IGJlIHVzaW5nIG9u ZS4KKyAgICAgKiB2cG11X21vZGUgY2FuIGJlIHNhZmVseSB1cGRhdGVkIHdoaWxlIGRvbTAncyBW UE1VcyBhcmUgYWN0aXZlIGFuZAorICAgICAqIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBp dCBpbiB0aGUgY291bnQuCisgICAgICovCisgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKHYt PmRvbWFpbikgJiYKKyAgICAgICAgKHZwbXVfbW9kZSAmIChYRU5QTVVfTU9ERV9TRUxGIHwgWEVO UE1VX01PREVfSFYpKSApCisgICAgeworICAgICAgICB2cG11X2NvdW50Kys7CisgICAgICAgIHZw bXVfc2V0KHZjcHVfdnBtdSh2KSwgVlBNVV9BVkFJTEFCTEUpOworICAgIH0KKyAgICBlbHNlIGlm ICggaXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbikgJiYKKyAgICAgICAgICAgICAgKHZwbXVf bW9kZSAhPSBYRU5QTVVfTU9ERV9PRkYpICkKKyAgICAgICAgdnBtdV9zZXQodmNwdV92cG11KHYp LCBWUE1VX0FWQUlMQUJMRSk7CisKKyAgICBzcGluX3VubG9jaygmdnBtdV9sb2NrKTsKK30KKwor c3RhdGljIHZvaWQgcHV0X3ZwbXUoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3Bpbl9sb2NrKCZ2 cG11X2xvY2spOworCisgICAgaWYgKCAhdnBtdV9hdmFpbGFibGUodikgKQorICAgICAgICBnb3Rv IG91dDsKKworICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbih2LT5kb21haW4pICYmCisgICAg ICAgICAodnBtdV9tb2RlICYgKFhFTlBNVV9NT0RFX1NFTEYgfCBYRU5QTVVfTU9ERV9IVikpICkK ICAgICB7Ci0gICAgICAgIHNwaW5fbG9jaygmdnBtdV9sb2NrKTsKICAgICAgICAgdnBtdV9jb3Vu dC0tOwotICAgICAgICBzcGluX3VubG9jaygmdnBtdV9sb2NrKTsKKyAgICAgICAgdnBtdV9yZXNl dCh2Y3B1X3ZwbXUodiksIFZQTVVfQVZBSUxBQkxFKTsKICAgICB9CisgICAgZWxzZSBpZiAoIGlz X2hhcmR3YXJlX2RvbWFpbih2LT5kb21haW4pICYmCisgICAgICAgICAgICAgICh2cG11X21vZGUg IT0gWEVOUE1VX01PREVfT0ZGKSApCisgICAgICAgIHZwbXVfcmVzZXQodmNwdV92cG11KHYpLCBW UE1VX0FWQUlMQUJMRSk7CisKKyBvdXQ6CisgICAgc3Bpbl91bmxvY2soJnZwbXVfbG9jayk7Cit9 CisKK3ZvaWQgdnBtdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGdldF92cG11 KHYpOworCisgICAgLyoKKyAgICAgKiBHdWVzdHMgd2l0aG91dCBMQVBJQyAoaS5lLiBQVikgY2Fs bCB2cG11X2FyY2hfaW5pdGlhbGlzZSgpCisgICAgICogZnJvbSBwdnBtdV9pbml0KCkuCisgICAg ICovCisgICAgaWYgKCBoYXNfdmxhcGljKHYtPmRvbWFpbikgJiYgdnBtdV9hcmNoX2luaXRpYWxp c2UodikgKQorICAgICAgICBwdXRfdnBtdSh2KTsKIH0KIAogc3RhdGljIHZvaWQgdnBtdV9jbGVh cl9sYXN0KHZvaWQgKmFyZykKQEAgLTUyNiw3ICs1NjMsNyBAQCBzdGF0aWMgdm9pZCB2cG11X2Ns ZWFyX2xhc3Qodm9pZCAqYXJnKQogICAgICAgICB0aGlzX2NwdShsYXN0X3ZjcHUpID0gTlVMTDsK IH0KIAotdm9pZCB2cG11X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCitzdGF0aWMgdm9pZCB2cG11 X2FyY2hfZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgdnBtdV9zdHJ1Y3Qg KnZwbXUgPSB2Y3B1X3ZwbXUodik7CiAKQEAgLTU1MSwxMSArNTg4LDEzIEBAIHZvaWQgdnBtdV9k ZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICAgICAgICAgICAgICAgICAgIHZwbXVfc2F2 ZV9mb3JjZSwgdiwgMSk7CiAgICAgICAgICB2cG11LT5hcmNoX3ZwbXVfb3BzLT5hcmNoX3ZwbXVf ZGVzdHJveSh2KTsKICAgICB9Cit9CiAKLSAgICBzcGluX2xvY2soJnZwbXVfbG9jayk7Ci0gICAg aWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbikgKQotICAgICAgICB2cG11X2NvdW50 LS07Ci0gICAgc3Bpbl91bmxvY2soJnZwbXVfbG9jayk7Cit2b2lkIHZwbXVfZGVzdHJveShzdHJ1 Y3QgdmNwdSAqdikKK3sKKyAgICB2cG11X2FyY2hfZGVzdHJveSh2KTsKKworICAgIHB1dF92cG11 KHYpOwogfQogCiBzdGF0aWMgaW50IHB2cG11X2luaXQoc3RydWN0IGRvbWFpbiAqZCwgeGVuX3Bt dV9wYXJhbXNfdCAqcGFyYW1zKQpAQCAtNTY1LDEzICs2MDQsMTUgQEAgc3RhdGljIGludCBwdnBt dV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHhlbl9wbXVfcGFyYW1zX3QgKnBhcmFtcykKICAgICBz dHJ1Y3QgcGFnZV9pbmZvICpwYWdlOwogICAgIHVpbnQ2NF90IGdmbiA9IHBhcmFtcy0+dmFsOwog Ci0gICAgaWYgKCAodnBtdV9tb2RlID09IFhFTlBNVV9NT0RFX09GRikgfHwKLSAgICAgICAgICgo dnBtdV9tb2RlICYgWEVOUE1VX01PREVfQUxMKSAmJiAhaXNfaGFyZHdhcmVfZG9tYWluKGQpKSAp Ci0gICAgICAgIHJldHVybiAtRUlOVkFMOwotCiAgICAgaWYgKCAocGFyYW1zLT52Y3B1ID49IGQt Pm1heF92Y3B1cykgfHwgKGQtPnZjcHVbcGFyYW1zLT52Y3B1XSA9PSBOVUxMKSApCiAgICAgICAg IHJldHVybiAtRUlOVkFMOwogCisgICAgdiA9IGQtPnZjcHVbcGFyYW1zLT52Y3B1XTsKKyAgICB2 cG11ID0gdmNwdV92cG11KHYpOworCisgICAgaWYgKCAhdnBtdV9hdmFpbGFibGUodikgKQorICAg ICAgICByZXR1cm4gLUVOT0VOVDsKKwogICAgIHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihkLCBn Zm4sIE5VTEwsIFAyTV9BTExPQyk7CiAgICAgaWYgKCAhcGFnZSApCiAgICAgICAgIHJldHVybiAt RUlOVkFMOwpAQCAtNTgyLDkgKzYyMyw2IEBAIHN0YXRpYyBpbnQgcHZwbXVfaW5pdChzdHJ1Y3Qg ZG9tYWluICpkLCB4ZW5fcG11X3BhcmFtc190ICpwYXJhbXMpCiAgICAgICAgIHJldHVybiAtRUlO VkFMOwogICAgIH0KIAotICAgIHYgPSBkLT52Y3B1W3BhcmFtcy0+dmNwdV07Ci0gICAgdnBtdSA9 IHZjcHVfdnBtdSh2KTsKLQogICAgIHNwaW5fbG9jaygmdnBtdS0+dnBtdV9sb2NrKTsKIAogICAg IGlmICggdi0+YXJjaC52cG11LnhlbnBtdV9kYXRhICkKQEAgLTYwMiw3ICs2NDAsOCBAQCBzdGF0 aWMgaW50IHB2cG11X2luaXQoc3RydWN0IGRvbWFpbiAqZCwgeGVuX3BtdV9wYXJhbXNfdCAqcGFy YW1zKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKICAgICB9CiAKLSAgICB2cG11X2luaXRpYWxp c2Uodik7CisgICAgaWYgKCB2cG11X2FyY2hfaW5pdGlhbGlzZSh2KSApCisgICAgICAgIHB1dF92 cG11KHYpOwogCiAgICAgc3Bpbl91bmxvY2soJnZwbXUtPnZwbXVfbG9jayk7CiAKQEAgLTYyNiw3 ICs2NjUsNyBAQCBzdGF0aWMgdm9pZCBwdnBtdV9maW5pc2goc3RydWN0IGRvbWFpbiAqZCwgeGVu X3BtdV9wYXJhbXNfdCAqcGFyYW1zKQogICAgIHZwbXUgPSB2Y3B1X3ZwbXUodik7CiAgICAgc3Bp bl9sb2NrKCZ2cG11LT52cG11X2xvY2spOwogCi0gICAgdnBtdV9kZXN0cm95KHYpOworICAgIHZw bXVfYXJjaF9kZXN0cm95KHYpOwogICAgIHhlbnBtdV9kYXRhID0gdnBtdS0+eGVucG11X2RhdGE7 CiAgICAgdnBtdS0+eGVucG11X2RhdGEgPSBOVUxMOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvY3B1aWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCmluZGV4IGUwYTM4N2UuLjZkMTk0NmEg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHVp ZC5jCkBAIC03MTMsNyArNzEzLDcgQEAgc3RhdGljIHZvaWQgcHZfY3B1aWQodWludDMyX3QgbGVh ZiwgdWludDMyX3Qgc3VibGVhZiwgc3RydWN0IGNwdWlkX2xlYWYgKnJlcykKICAgICAgICAgICAg IH0KICAgICAgICAgfQogCi0gICAgICAgIGlmICggdnBtdV9lbmFibGVkKGN1cnIpICYmCisgICAg ICAgIGlmICggdnBtdV9hdmFpbGFibGUoY3VycikgJiYKICAgICAgICAgICAgICB2cG11X2lzX3Nl dCh2Y3B1X3ZwbXUoY3VyciksIFZQTVVfQ1BVX0hBU19EUykgKQogICAgICAgICB7CiAgICAgICAg ICAgICByZXMtPmQgfD0gY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX0RTKTsKQEAgLTcyNiw3ICs3 MjYsNyBAQCBzdGF0aWMgdm9pZCBwdl9jcHVpZCh1aW50MzJfdCBsZWFmLCB1aW50MzJfdCBzdWJs ZWFmLCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVzKQogCiAgICAgY2FzZSAweDAwMDAwMDBhOiAvKiBB cmNoaXRlY3R1cmFsIFBlcmZvcm1hbmNlIE1vbml0b3IgRmVhdHVyZXMgKEludGVsKSAqLwogICAg ICAgICBpZiAoIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciAhPSBYODZfVkVORE9SX0lOVEVMIHx8 Ci0gICAgICAgICAgICAgIXZwbXVfZW5hYmxlZChjdXJyKSApCisgICAgICAgICAgICAgIXZwbXVf YXZhaWxhYmxlKGN1cnIpICkKICAgICAgICAgICAgIGdvdG8gdW5zdXBwb3J0ZWQ7CiAKICAgICAg ICAgLyogUmVwb3J0IGF0IG1vc3QgdmVyc2lvbiAzIHNpbmNlIHRoYXQncyBhbGwgd2UgY3VycmVu dGx5IGVtdWxhdGUuICovCkBAIC03OTMsNyArNzkzLDcgQEAgc3RhdGljIHZvaWQgaHZtX2NwdWlk KHVpbnQzMl90IGxlYWYsIHVpbnQzMl90IHN1YmxlYWYsIHN0cnVjdCBjcHVpZF9sZWFmICpyZXMp CiAgICAgICAgIGlmICggIWhhcF9lbmFibGVkKGQpICYmICFodm1fcGFlX2VuYWJsZWQodikgKQog ICAgICAgICAgICAgcmVzLT5kICY9IH5jcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfUFNFMzYpOwog Ci0gICAgICAgIGlmICggdnBtdV9lbmFibGVkKHYpICYmCisgICAgICAgIGlmICggdnBtdV9hdmFp bGFibGUodikgJiYKICAgICAgICAgICAgICB2cG11X2lzX3NldCh2Y3B1X3ZwbXUodiksIFZQTVVf Q1BVX0hBU19EUykgKQogICAgICAgICB7CiAgICAgICAgICAgICByZXMtPmQgfD0gY3B1ZmVhdF9t YXNrKFg4Nl9GRUFUVVJFX0RTKTsKQEAgLTgxMSw3ICs4MTEsNyBAQCBzdGF0aWMgdm9pZCBodm1f Y3B1aWQodWludDMyX3QgbGVhZiwgdWludDMyX3Qgc3VibGVhZiwgc3RydWN0IGNwdWlkX2xlYWYg KnJlcykKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIDB4MDAwMDAwMGE6IC8qIEFyY2hpdGVj dHVyYWwgUGVyZm9ybWFuY2UgTW9uaXRvciBGZWF0dXJlcyAoSW50ZWwpICovCi0gICAgICAgIGlm ICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yICE9IFg4Nl9WRU5ET1JfSU5URUwgfHwgIXZwbXVf ZW5hYmxlZCh2KSApCisgICAgICAgIGlmICggYm9vdF9jcHVfZGF0YS54ODZfdmVuZG9yICE9IFg4 Nl9WRU5ET1JfSU5URUwgfHwgIXZwbXVfYXZhaWxhYmxlKHYpICkKICAgICAgICAgewogICAgICAg ICAgICAgKnJlcyA9IEVNUFRZX0xFQUY7CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9hcmNoL3g4Ni9kb21haW4uYwppbmRleCA3MWMw ZTNjLi4yOTI0NDJhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvZG9tYWluLmMKKysrIGIveGVu L2FyY2gveDg2L2RvbWFpbi5jCkBAIC00NTgsNiArNDU4LDggQEAgaW50IHZjcHVfaW5pdGlhbGlz ZShzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgaWYgKCBpc19wdl9kb21haW4oZCkgKQogICAgICAg ICAgICAgeGZyZWUodi0+YXJjaC5wdl92Y3B1LnRyYXBfY3R4dCk7CiAgICAgfQorICAgIGVsc2Ug aWYgKCAhaXNfaWRsZV9kb21haW4odi0+ZG9tYWluKSApCisgICAgICAgIHZwbXVfaW5pdGlhbGlz ZSh2KTsKIAogICAgIHJldHVybiByYzsKIH0KQEAgLTQ3NSw2ICs0NzcsOSBAQCB2b2lkIHZjcHVf ZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKIAogICAgIHZjcHVfZGVzdHJveV9mcHUodik7CiAKKyAg ICBpZiAoICFpc19pZGxlX2RvbWFpbih2LT5kb21haW4pICkKKyAgICAgICAgdnBtdV9kZXN0cm95 KHYpOworCiAgICAgaWYgKCBoYXNfaHZtX2NvbnRhaW5lcl92Y3B1KHYpICkKICAgICAgICAgaHZt X3ZjcHVfZGVzdHJveSh2KTsKICAgICBlbHNlCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L3N2bS9zdm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCmluZGV4IGNhMjc4NWMuLjI3 YmZiM2MgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCisrKyBiL3hlbi9h cmNoL3g4Ni9odm0vc3ZtL3N2bS5jCkBAIC0xMTY5LDEwICsxMTY5LDYgQEAgc3RhdGljIGludCBz dm1fdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICByZXR1cm4gcmM7CiAg ICAgfQogCi0gICAgLyogUFZIJ3MgVlBNVSBpcyBpbml0aWFsaXplZCB2aWEgaHlwZXJjYWxsICov Ci0gICAgaWYgKCBoYXNfdmxhcGljKHYtPmRvbWFpbikgKQotICAgICAgICB2cG11X2luaXRpYWxp c2Uodik7Ci0KICAgICBzdm1fZ3Vlc3Rfb3N2d19pbml0KHYpOwogCiAgICAgcmV0dXJuIDA7CkBA IC0xMTgwLDcgKzExNzYsNiBAQCBzdGF0aWMgaW50IHN2bV92Y3B1X2luaXRpYWxpc2Uoc3RydWN0 IHZjcHUgKnYpCiAKIHN0YXRpYyB2b2lkIHN2bV92Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYp CiB7Ci0gICAgdnBtdV9kZXN0cm95KHYpOwogICAgIHN2bV9kZXN0cm95X3ZtY2Iodik7CiAgICAg cGFzc2l2ZV9kb21haW5fZGVzdHJveSh2KTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9o dm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKaW5kZXggNDJmNGZiZC4u ZDQ0NmU5ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKKysrIGIveGVu L2FyY2gveDg2L2h2bS92bXgvdm14LmMKQEAgLTMzMCwxMCArMzMwLDYgQEAgc3RhdGljIGludCB2 bXhfdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICB9CiAgICAgfQogCi0g ICAgLyogUFZIJ3MgVlBNVSBpcyBpbml0aWFsaXplZCB2aWEgaHlwZXJjYWxsICovCi0gICAgaWYg KCBoYXNfdmxhcGljKHYtPmRvbWFpbikgKQotICAgICAgICB2cG11X2luaXRpYWxpc2Uodik7Ci0K ICAgICB2bXhfaW5zdGFsbF92bGFwaWNfbWFwcGluZyh2KTsKIAogICAgIC8qICVlYXggPT0gMSBz aWduYWxzIGZ1bGwgcmVhbC1tb2RlIHN1cHBvcnQgdG8gdGhlIGd1ZXN0IGxvYWRlci4gKi8KQEAg LTM1NCw3ICszNTAsNiBAQCBzdGF0aWMgdm9pZCB2bXhfdmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1 ICp2KQogICAgICAqLwogICAgIHZteF92Y3B1X2Rpc2FibGVfcG1sKHYpOwogICAgIHZteF9kZXN0 cm95X3ZtY3Modik7Ci0gICAgdnBtdV9kZXN0cm95KHYpOwogICAgIHBhc3NpdmVfZG9tYWluX2Rl c3Ryb3kodik7CiB9CiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvdnBtdS5oIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni92cG11LmgKaW5kZXggZTUwNjE4Zi4uNWU3NzhhYiAxMDA2NDQK LS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni92cG11LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4 Ni92cG11LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAogI2RlZmluZSB2Y3B1X3ZwbXUodmNwdSkgICAo Jih2Y3B1KS0+YXJjaC52cG11KQogI2RlZmluZSB2cG11X3ZjcHUodnBtdSkgICBjb250YWluZXJf b2YoKHZwbXUpLCBzdHJ1Y3QgdmNwdSwgYXJjaC52cG11KQotI2RlZmluZSB2cG11X2VuYWJsZWQo dmNwdSkgdnBtdV9pc19zZXQodmNwdV92cG11KHZjcHUpLCBWUE1VX0NPTlRFWFRfQUxMT0NBVEVE KQorI2RlZmluZSB2cG11X2F2YWlsYWJsZSh2Y3B1KSB2cG11X2lzX3NldCh2Y3B1X3ZwbXUodmNw dSksIFZQTVVfQVZBSUxBQkxFKQogCiAjZGVmaW5lIE1TUl9UWVBFX0NPVU5URVIgICAgICAgICAg ICAwCiAjZGVmaW5lIE1TUl9UWVBFX0NUUkwgICAgICAgICAgICAgICAxCkBAIC03NCw2ICs3NCw3 IEBAIHN0cnVjdCB2cG11X3N0cnVjdCB7CiAjZGVmaW5lIFZQTVVfUEFTU0lWRV9ET01BSU5fQUxM T0NBVEVEICAgICAgIDB4MjAKIC8qIFBWKEgpIGd1ZXN0czogVlBNVSByZWdpc3RlcnMgYXJlIGFj Y2Vzc2VkIGJ5IGd1ZXN0IGZyb20gc2hhcmVkIHBhZ2UgKi8KICNkZWZpbmUgVlBNVV9DQUNIRUQg ICAgICAgICAgICAgICAgICAgICAgICAgMHg0MAorI2RlZmluZSBWUE1VX0FWQUlMQUJMRSAgICAg ICAgICAgICAgICAgICAgICAweDgwCiAKIC8qIEludGVsLXNwZWNpZmljIFZQTVUgZmVhdHVyZXMg Ki8KICNkZWZpbmUgVlBNVV9DUFVfSEFTX0RTICAgICAgICAgICAgICAgICAgICAgMHgxMDAgLyog SGFzIERlYnVnIFN0b3JlICovCkBAIC04OSw3ICs5MCw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB2 cG11X3Jlc2V0KHN0cnVjdCB2cG11X3N0cnVjdCAqdnBtdSwgY29uc3QgdTMyIG1hc2spCiB9CiBz dGF0aWMgaW5saW5lIHZvaWQgdnBtdV9jbGVhcihzdHJ1Y3QgdnBtdV9zdHJ1Y3QgKnZwbXUpCiB7 Ci0gICAgdnBtdS0+ZmxhZ3MgPSAwOworICAgIC8qIFZQTVVfQVZBSUxBQkxFIHNob3VsZCBiZSBh bHRlcmVkIGJ5IGdldC9wdXRfdnBtdSgpLiAqLworICAgIHZwbXUtPmZsYWdzICY9IFZQTVVfQVZB SUxBQkxFOwogfQogc3RhdGljIGlubGluZSBib29sX3QgdnBtdV9pc19zZXQoY29uc3Qgc3RydWN0 IHZwbXVfc3RydWN0ICp2cG11LCBjb25zdCB1MzIgbWFzaykKIHsKLS0gCjEuOC4zLjEKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK