From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH] x86/vpmu: Add get/put_vpmu() and VPMU_ENABLED Date: Thu, 16 Feb 2017 09:59:11 -0500 Message-ID: <1487257151-3648-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: 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: kevin.tian@intel.com, suravee.suthikulpanit@amd.com, andrew.cooper3@citrix.com, jbeulich@suse.com, jun.nakajima@intel.com, Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org dnBtdV9lbmFibGVkKCkgKHVzZWQgYnkgaHZtL3B2X2NwdWlkKCkgdG8gcHJvcGVybHkgcmVwb3J0 IDB4YSBsZWFmCmZvciBJbnRlbCBwcm9jZXNzb3JzKSBpcyBiYXNlZCBvbiB0aGUgdmFsdWUgb2Yg VlBNVV9DT05URVhUX0FMTE9DQVRFRApiaXQuIFRoaXMgaXMgcHJvYmxlbWF0aWM6CiogRm9yIEhW TSBndWVzdHMgVlBNVSBjb250ZXh0IGlzIGFsbG9jYXRlZCBsYXppbHksIGR1cmluZyB0aGUgZmly c3QKICBhY2Nlc3MgdG8gVlBNVSBNU1JzLiBTaW5jZSB0aGUgbGVhZiBpcyB0eXBpY2FsbHkgcXVl cmllZCBiZWZvcmUgZ3Vlc3QKICBhdHRlbXB0cyB0byByZWFkIG9yIHdyaXRlIHRoZSBNU1JzIGl0 IGlzIGxpa2VseSB0aGF0IENQVUlEIHdpbGwgcmVwb3J0CiAgbm8gUE1VIHN1cHBvcnQKKiBGb3Ig UFYgZ3Vlc3RzIHRoZSBjb250ZXh0IGlzIGFsbG9jYXRlZCBlYWdlcmx5IGJ1dCBvbmx5IGluIHJl c3BvbmNlIHRvCiAgZ3Vlc3QncyBYRU5QTVVfaW5pdCBoeXBlcmNhbGwuIFRoZXJlIGlzIGEgY2hh bmNlIHRoYXQgdGhlIGd1ZXN0IHdpbGwKICB0cnkgdG8gcmVhZCBDUFVJRCBiZWZvcmUgbWFraW5n IHRoaXMgaHlwZXJjYWxsLgoKVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIFZQTVVfRU5BQkxFRCBmbGFn IHdoaWNoIGlzIHNldCAoc3ViamVjdCB0byB2cG11X21vZGUKY29uc3RyYWludHMpIGR1cmluZyBW Q1BVIGluaXRpYWxpemF0aW9uIGZvciBib3RoIFBWIGFuZCBIVk0gZ3Vlc3RzLiBTaW5jZQp0aGlz IGZsYWcgaXMgZXhwZWN0ZWQgdG8gYmUgbWFuYWdlZCB0b2dldGhlciB3aXRoIHZwbXVfY291bnQs IGdldC9wdXRfdnBtdSgpCmFyZSBhZGRlZCB0byBzaW1wbGlmeSBjb2RlLgoKdnBtdV9lbmFibGVk KCkgY2FuIG5vdyB1c2UgdGhpcyBuZXcgZmxhZy4KCihBcyBhIHNpZGUgYWZmZWN0IHRoaXMgcGF0 Y2ggYWxzbyBmaXhlcyBhIHJhY2UgaW4gcHZwbXVfaW5pdCgpIHdoZXJlIHdlCmluY3JlbWVudCB2 Y3B1X2NvdW50IGluIHZwbXVfaW5pdGlhbGlzZSgpIGFmdGVyIGNoZWNraW5nIHZwbXVfbW9kZSkK ClNpZ25lZC1vZmYtYnk6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5j b20+Ci0tLQogeGVuL2FyY2gveDg2L2NwdS92cG11LmMgICAgfCAxMTEgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAg ICB8ICAgNSArKwogeGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgfCAgIDUgLS0KIHhlbi9hcmNo L3g4Ni9odm0vdm14L3ZteC5jIHwgICA1IC0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L3ZwbXUuaCB8 ICAgNiArKy0KIDUgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgNDggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdS92cG11LmMgYi94ZW4vYXJjaC94ODYv Y3B1L3ZwbXUuYwppbmRleCAzNWE5NDAzLi4yODNhZjgwIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvY3B1L3ZwbXUuYworKysgYi94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYwpAQCAtNDU2LDMyICs0 NTYsMjEgQEAgaW50IHZwbXVfbG9hZChzdHJ1Y3QgdmNwdSAqdiwgYm9vbF90IGZyb21fZ3Vlc3Qp CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgdnBtdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2 KQorc3RhdGljIGludCB2cG11X2FyY2hfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKIHsKICAg ICBzdHJ1Y3QgdnBtdV9zdHJ1Y3QgKnZwbXUgPSB2Y3B1X3ZwbXUodik7CiAgICAgdWludDhfdCB2 ZW5kb3IgPSBjdXJyZW50X2NwdV9kYXRhLng4Nl92ZW5kb3I7CiAgICAgaW50IHJldDsKLSAgICBi b29sX3QgaXNfcHJpdl92cG11ID0gaXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbik7CiAKICAg ICBCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB4ZW5fcG11X2ludGVsX2N0eHQpID4gWEVOUE1V X0NUWFRfUEFEX1NaKTsKICAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB4ZW5fcG11X2Ft ZF9jdHh0KSA+IFhFTlBNVV9DVFhUX1BBRF9TWik7CiAgICAgQlVJTERfQlVHX09OKHNpemVvZihz dHJ1Y3QgeGVuX3BtdV9yZWdzKSA+IFhFTlBNVV9SRUdTX1BBRF9TWik7CiAgICAgQlVJTERfQlVH X09OKHNpemVvZihzdHJ1Y3QgY29tcGF0X3BtdV9yZWdzKSA+IFhFTlBNVV9SRUdTX1BBRF9TWik7 CiAKLSAgICBBU1NFUlQoIXZwbXUtPmZsYWdzICYmICF2cG11LT5jb250ZXh0KTsKKyAgICBBU1NF UlQoISh2cG11LT5mbGFncyAmIH5WUE1VX0VOQUJMRUQpICYmICF2cG11LT5jb250ZXh0KTsKIAot ICAgIGlmICggIWlzX3ByaXZfdnBtdSApCi0gICAgewotICAgICAgICAvKgotICAgICAgICAgKiBD b3VudCBhY3RpdmUgVlBNVXMgc28gdGhhdCB3ZSB3b24ndCB0cnkgdG8gY2hhbmdlIHZwbXVfbW9k ZSB3aGlsZQotICAgICAgICAgKiB0aGV5IGFyZSBpbiB1c2UuCi0gICAgICAgICAqIHZwbXVfbW9k ZSBjYW4gYmUgc2FmZWx5IHVwZGF0ZWQgd2hpbGUgZG9tMCdzIFZQTVVzIGFyZSBhY3RpdmUgYW5k Ci0gICAgICAgICAqIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBpdCBpbiB0aGUgY291bnQu Ci0gICAgICAgICAqLwotICAgICAgICBzcGluX2xvY2soJnZwbXVfbG9jayk7Ci0gICAgICAgIHZw bXVfY291bnQrKzsKLSAgICAgICAgc3Bpbl91bmxvY2soJnZwbXVfbG9jayk7Ci0gICAgfQorICAg IGlmICggIXZwbXVfZW5hYmxlZCh2KSApCisgICAgICAgIHJldHVybiAwOwogCiAgICAgc3dpdGNo ICggdmVuZG9yICkKICAgICB7CkBAIC01MDEsNyArNDkwLDcgQEAgdm9pZCB2cG11X2luaXRpYWxp c2Uoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgICAgICBvcHRfdnBtdV9lbmFibGVkID0gMDsKICAg ICAgICAgICAgIHZwbXVfbW9kZSA9IFhFTlBNVV9NT0RFX09GRjsKICAgICAgICAgfQotICAgICAg ICByZXR1cm47IC8qIERvbid0IGJvdGhlciByZXN0b3JpbmcgdnBtdV9jb3VudCwgVlBNVSBpcyBv ZmYgZm9yZXZlciAqLworICAgICAgICByZXR1cm4gLUVJTlZBTDsKICAgICB9CiAKICAgICB2cG11 LT5od19sYXBpY19sdnRwYyA9IFBNVV9BUElDX1ZFQ1RPUiB8IEFQSUNfTFZUX01BU0tFRDsKQEAg LTUwOSwxNSArNDk4LDYzIEBAIHZvaWQgdnBtdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQog ICAgIGlmICggcmV0ICkKICAgICAgICAgcHJpbnRrKFhFTkxPR19HX1dBUk5JTkcgIlZQTVU6IElu aXRpYWxpemF0aW9uIGZhaWxlZCBmb3IgJXB2XG4iLCB2KTsKIAotICAgIC8qIEludGVsIG5lZWRz IHRvIGluaXRpYWxpemUgVlBNVSBvcHMgZXZlbiBpZiBWUE1VIGlzIG5vdCBpbiB1c2UgKi8KLSAg ICBpZiAoICFpc19wcml2X3ZwbXUgJiYKLSAgICAgICAgIChyZXQgfHwgKHZwbXVfbW9kZSA9PSBY RU5QTVVfTU9ERV9PRkYpIHx8Ci0gICAgICAgICAgKHZwbXVfbW9kZSA9PSBYRU5QTVVfTU9ERV9B TEwpKSApCisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgZ2V0X3ZwbXUoc3RydWN0 IHZjcHUgKnYpCit7CisgICAgc3Bpbl9sb2NrKCZ2cG11X2xvY2spOworCisgICAgLyoKKyAgICAg KiBDb3VudCBhY3RpdmUgVlBNVXMgc28gdGhhdCB3ZSB3b24ndCB0cnkgdG8gY2hhbmdlIHZwbXVf bW9kZSB3aGlsZQorICAgICAqIHRoZXkgYXJlIGluIHVzZS4KKyAgICAgKiB2cG11X21vZGUgY2Fu IGJlIHNhZmVseSB1cGRhdGVkIHdoaWxlIGRvbTAncyBWUE1VcyBhcmUgYWN0aXZlIGFuZAorICAg ICAqIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBpdCBpbiB0aGUgY291bnQuCisgICAgICov CisgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbikgJiYKKyAgICAgICAgKHZw bXVfbW9kZSAmIChYRU5QTVVfTU9ERV9TRUxGIHwgWEVOUE1VX01PREVfSFYpKSApCisgICAgewor ICAgICAgICB2cG11X2NvdW50Kys7CisgICAgICAgIHZwbXVfc2V0KHZjcHVfdnBtdSh2KSwgVlBN VV9FTkFCTEVEKTsKKyAgICB9CisgICAgZWxzZSBpZiAoIGlzX2hhcmR3YXJlX2RvbWFpbih2LT5k b21haW4pICYmCisgICAgICAgICAgICAgICh2cG11X21vZGUgIT0gWEVOUE1VX01PREVfT0ZGKSAp CisgICAgICAgIHZwbXVfc2V0KHZjcHVfdnBtdSh2KSwgVlBNVV9FTkFCTEVEKTsKKworICAgIHNw aW5fdW5sb2NrKCZ2cG11X2xvY2spOworfQorCitzdGF0aWMgdm9pZCBwdXRfdnBtdShzdHJ1Y3Qg dmNwdSAqdikKK3sKKyAgICBpZiAoICF2cG11X2lzX3NldCh2Y3B1X3ZwbXUodiksIFZQTVVfRU5B QkxFRCkgKQorICAgICAgICByZXR1cm47CisKKyAgICBzcGluX2xvY2soJnZwbXVfbG9jayk7CisK KyAgICBpZiAoICFpc19oYXJkd2FyZV9kb21haW4odi0+ZG9tYWluKSAmJgorICAgICAgICAgKHZw bXVfbW9kZSAmIChYRU5QTVVfTU9ERV9TRUxGIHwgWEVOUE1VX01PREVfSFYpKSApCiAgICAgewot ICAgICAgICBzcGluX2xvY2soJnZwbXVfbG9jayk7CiAgICAgICAgIHZwbXVfY291bnQtLTsKLSAg ICAgICAgc3Bpbl91bmxvY2soJnZwbXVfbG9jayk7CisgICAgICAgIHZwbXVfcmVzZXQodmNwdV92 cG11KHYpLCBWUE1VX0VOQUJMRUQpOwogICAgIH0KKyAgICBlbHNlIGlmICggaXNfaGFyZHdhcmVf ZG9tYWluKHYtPmRvbWFpbikgJiYKKyAgICAgICAgICAgICAgKHZwbXVfbW9kZSAhPSBYRU5QTVVf TU9ERV9PRkYpICkKKyAgICAgICAgdnBtdV9yZXNldCh2Y3B1X3ZwbXUodiksIFZQTVVfRU5BQkxF RCk7CisKKyAgICBzcGluX3VubG9jaygmdnBtdV9sb2NrKTsKK30KKworCit2b2lkIHZwbXVfaW5p dGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICBnZXRfdnBtdSh2KTsKKworICAgIC8qCisg ICAgICogR3Vlc3RzIHdpdGhvdXQgTEFQSUMgKGkuZS4gUFYpIGNhbGwgdnBtdV9hcmNoX2luaXRp YWxpc2UoKQorICAgICAqIGZyb20gcHZwbXVfaW5pdCgpLgorICAgICAqLworICAgIGlmICggaGFz X3ZsYXBpYyh2LT5kb21haW4pICYmIHZwbXVfYXJjaF9pbml0aWFsaXNlKHYpICkKKyAgICAgICAg cHV0X3ZwbXUodik7CiB9CiAKIHN0YXRpYyB2b2lkIHZwbXVfY2xlYXJfbGFzdCh2b2lkICphcmcp CkBAIC01MjYsNyArNTYzLDcgQEAgc3RhdGljIHZvaWQgdnBtdV9jbGVhcl9sYXN0KHZvaWQgKmFy ZykKICAgICAgICAgdGhpc19jcHUobGFzdF92Y3B1KSA9IE5VTEw7CiB9CiAKLXZvaWQgdnBtdV9k ZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQorc3RhdGljIHZvaWQgdnBtdV9hcmNoX2Rlc3Ryb3koc3Ry dWN0IHZjcHUgKnYpCiB7CiAgICAgc3RydWN0IHZwbXVfc3RydWN0ICp2cG11ID0gdmNwdV92cG11 KHYpOwogCkBAIC01NTEsMTEgKzU4OCwxMyBAQCB2b2lkIHZwbXVfZGVzdHJveShzdHJ1Y3QgdmNw dSAqdikKICAgICAgICAgICAgICAgICAgICAgICAgICB2cG11X3NhdmVfZm9yY2UsIHYsIDEpOwog ICAgICAgICAgdnBtdS0+YXJjaF92cG11X29wcy0+YXJjaF92cG11X2Rlc3Ryb3kodik7CiAgICAg fQorfQogCi0gICAgc3Bpbl9sb2NrKCZ2cG11X2xvY2spOwotICAgIGlmICggIWlzX2hhcmR3YXJl X2RvbWFpbih2LT5kb21haW4pICkKLSAgICAgICAgdnBtdV9jb3VudC0tOwotICAgIHNwaW5fdW5s b2NrKCZ2cG11X2xvY2spOwordm9pZCB2cG11X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCit7Cisg ICAgdnBtdV9hcmNoX2Rlc3Ryb3kodik7CisKKyAgICBwdXRfdnBtdSh2KTsKIH0KIAogc3RhdGlj IGludCBwdnBtdV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHhlbl9wbXVfcGFyYW1zX3QgKnBhcmFt cykKQEAgLTU2NSwxMyArNjA0LDE1IEBAIHN0YXRpYyBpbnQgcHZwbXVfaW5pdChzdHJ1Y3QgZG9t YWluICpkLCB4ZW5fcG11X3BhcmFtc190ICpwYXJhbXMpCiAgICAgc3RydWN0IHBhZ2VfaW5mbyAq cGFnZTsKICAgICB1aW50NjRfdCBnZm4gPSBwYXJhbXMtPnZhbDsKIAotICAgIGlmICggKHZwbXVf bW9kZSA9PSBYRU5QTVVfTU9ERV9PRkYpIHx8Ci0gICAgICAgICAoKHZwbXVfbW9kZSAmIFhFTlBN VV9NT0RFX0FMTCkgJiYgIWlzX2hhcmR3YXJlX2RvbWFpbihkKSkgKQotICAgICAgICByZXR1cm4g LUVJTlZBTDsKLQogICAgIGlmICggKHBhcmFtcy0+dmNwdSA+PSBkLT5tYXhfdmNwdXMpIHx8IChk LT52Y3B1W3BhcmFtcy0+dmNwdV0gPT0gTlVMTCkgKQogICAgICAgICByZXR1cm4gLUVJTlZBTDsK IAorICAgIHYgPSBkLT52Y3B1W3BhcmFtcy0+dmNwdV07CisgICAgdnBtdSA9IHZjcHVfdnBtdSh2 KTsKKworICAgIGlmICggIXZwbXVfZW5hYmxlZCh2KSApCisgICAgICAgIHJldHVybiAtRU5PRU5U OworCiAgICAgcGFnZSA9IGdldF9wYWdlX2Zyb21fZ2ZuKGQsIGdmbiwgTlVMTCwgUDJNX0FMTE9D KTsKICAgICBpZiAoICFwYWdlICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CkBAIC01ODIsOSAr NjIzLDYgQEAgc3RhdGljIGludCBwdnBtdV9pbml0KHN0cnVjdCBkb21haW4gKmQsIHhlbl9wbXVf cGFyYW1zX3QgKnBhcmFtcykKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQogCi0gICAg diA9IGQtPnZjcHVbcGFyYW1zLT52Y3B1XTsKLSAgICB2cG11ID0gdmNwdV92cG11KHYpOwotCiAg ICAgc3Bpbl9sb2NrKCZ2cG11LT52cG11X2xvY2spOwogCiAgICAgaWYgKCB2LT5hcmNoLnZwbXUu eGVucG11X2RhdGEgKQpAQCAtNjAyLDcgKzY0MCw4IEBAIHN0YXRpYyBpbnQgcHZwbXVfaW5pdChz dHJ1Y3QgZG9tYWluICpkLCB4ZW5fcG11X3BhcmFtc190ICpwYXJhbXMpCiAgICAgICAgIHJldHVy biAtRU5PTUVNOwogICAgIH0KIAotICAgIHZwbXVfaW5pdGlhbGlzZSh2KTsKKyAgICBpZiAoIHZw bXVfYXJjaF9pbml0aWFsaXNlKHYpICkKKyAgICAgICAgcHV0X3ZwbXUodik7CiAKICAgICBzcGlu X3VubG9jaygmdnBtdS0+dnBtdV9sb2NrKTsKIApAQCAtNjI2LDcgKzY2NSw3IEBAIHN0YXRpYyB2 b2lkIHB2cG11X2ZpbmlzaChzdHJ1Y3QgZG9tYWluICpkLCB4ZW5fcG11X3BhcmFtc190ICpwYXJh bXMpCiAgICAgdnBtdSA9IHZjcHVfdnBtdSh2KTsKICAgICBzcGluX2xvY2soJnZwbXUtPnZwbXVf bG9jayk7CiAKLSAgICB2cG11X2Rlc3Ryb3kodik7CisgICAgdnBtdV9hcmNoX2Rlc3Ryb3kodik7 CiAgICAgeGVucG11X2RhdGEgPSB2cG11LT54ZW5wbXVfZGF0YTsKICAgICB2cG11LT54ZW5wbXVf ZGF0YSA9IE5VTEw7CiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYyBiL3hlbi9h cmNoL3g4Ni9kb21haW4uYwppbmRleCA3MWMwZTNjLi4yOTI0NDJhIDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvZG9tYWluLmMKKysrIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCkBAIC00NTgsNiAr NDU4LDggQEAgaW50IHZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgaWYg KCBpc19wdl9kb21haW4oZCkgKQogICAgICAgICAgICAgeGZyZWUodi0+YXJjaC5wdl92Y3B1LnRy YXBfY3R4dCk7CiAgICAgfQorICAgIGVsc2UgaWYgKCAhaXNfaWRsZV9kb21haW4odi0+ZG9tYWlu KSApCisgICAgICAgIHZwbXVfaW5pdGlhbGlzZSh2KTsKIAogICAgIHJldHVybiByYzsKIH0KQEAg LTQ3NSw2ICs0NzcsOSBAQCB2b2lkIHZjcHVfZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKIAogICAg IHZjcHVfZGVzdHJveV9mcHUodik7CiAKKyAgICBpZiAoICFpc19pZGxlX2RvbWFpbih2LT5kb21h aW4pICkKKyAgICAgICAgdnBtdV9kZXN0cm95KHYpOworCiAgICAgaWYgKCBoYXNfaHZtX2NvbnRh aW5lcl92Y3B1KHYpICkKICAgICAgICAgaHZtX3ZjcHVfZGVzdHJveSh2KTsKICAgICBlbHNlCmRp ZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYyBiL3hlbi9hcmNoL3g4Ni9odm0v c3ZtL3N2bS5jCmluZGV4IGNhMjc4NWMuLjI3YmZiM2MgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4 Ni9odm0vc3ZtL3N2bS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2bS5jCkBAIC0xMTY5 LDEwICsxMTY5LDYgQEAgc3RhdGljIGludCBzdm1fdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1 ICp2KQogICAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCi0gICAgLyogUFZIJ3MgVlBNVSBpcyBp bml0aWFsaXplZCB2aWEgaHlwZXJjYWxsICovCi0gICAgaWYgKCBoYXNfdmxhcGljKHYtPmRvbWFp bikgKQotICAgICAgICB2cG11X2luaXRpYWxpc2Uodik7Ci0KICAgICBzdm1fZ3Vlc3Rfb3N2d19p bml0KHYpOwogCiAgICAgcmV0dXJuIDA7CkBAIC0xMTgwLDcgKzExNzYsNiBAQCBzdGF0aWMgaW50 IHN2bV92Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiAKIHN0YXRpYyB2b2lkIHN2bV92 Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCiB7Ci0gICAgdnBtdV9kZXN0cm95KHYpOwogICAg IHN2bV9kZXN0cm95X3ZtY2Iodik7CiAgICAgcGFzc2l2ZV9kb21haW5fZGVzdHJveSh2KTsKIH0K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jIGIveGVuL2FyY2gveDg2L2h2 bS92bXgvdm14LmMKaW5kZXggNDJmNGZiZC4uZDQ0NmU5ZSAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2h2bS92bXgvdm14LmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bXgvdm14LmMKQEAgLTMz MCwxMCArMzMwLDYgQEAgc3RhdGljIGludCB2bXhfdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1 ICp2KQogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogUFZIJ3MgVlBNVSBpcyBpbml0aWFsaXpl ZCB2aWEgaHlwZXJjYWxsICovCi0gICAgaWYgKCBoYXNfdmxhcGljKHYtPmRvbWFpbikgKQotICAg ICAgICB2cG11X2luaXRpYWxpc2Uodik7Ci0KICAgICB2bXhfaW5zdGFsbF92bGFwaWNfbWFwcGlu Zyh2KTsKIAogICAgIC8qICVlYXggPT0gMSBzaWduYWxzIGZ1bGwgcmVhbC1tb2RlIHN1cHBvcnQg dG8gdGhlIGd1ZXN0IGxvYWRlci4gKi8KQEAgLTM1NCw3ICszNTAsNiBAQCBzdGF0aWMgdm9pZCB2 bXhfdmNwdV9kZXN0cm95KHN0cnVjdCB2Y3B1ICp2KQogICAgICAqLwogICAgIHZteF92Y3B1X2Rp c2FibGVfcG1sKHYpOwogICAgIHZteF9kZXN0cm95X3ZtY3Modik7Ci0gICAgdnBtdV9kZXN0cm95 KHYpOwogICAgIHBhc3NpdmVfZG9tYWluX2Rlc3Ryb3kodik7CiB9CiAKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvdnBtdS5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni92cG11LmgKaW5k ZXggZTUwNjE4Zi4uNGU3NDRkYyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni92cG11 LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni92cG11LmgKQEAgLTI1LDcgKzI1LDcgQEAKIAog I2RlZmluZSB2Y3B1X3ZwbXUodmNwdSkgICAoJih2Y3B1KS0+YXJjaC52cG11KQogI2RlZmluZSB2 cG11X3ZjcHUodnBtdSkgICBjb250YWluZXJfb2YoKHZwbXUpLCBzdHJ1Y3QgdmNwdSwgYXJjaC52 cG11KQotI2RlZmluZSB2cG11X2VuYWJsZWQodmNwdSkgdnBtdV9pc19zZXQodmNwdV92cG11KHZj cHUpLCBWUE1VX0NPTlRFWFRfQUxMT0NBVEVEKQorI2RlZmluZSB2cG11X2VuYWJsZWQodmNwdSkg dnBtdV9pc19zZXQodmNwdV92cG11KHZjcHUpLCBWUE1VX0VOQUJMRUQpCiAKICNkZWZpbmUgTVNS X1RZUEVfQ09VTlRFUiAgICAgICAgICAgIDAKICNkZWZpbmUgTVNSX1RZUEVfQ1RSTCAgICAgICAg ICAgICAgIDEKQEAgLTc0LDYgKzc0LDcgQEAgc3RydWN0IHZwbXVfc3RydWN0IHsKICNkZWZpbmUg VlBNVV9QQVNTSVZFX0RPTUFJTl9BTExPQ0FURUQgICAgICAgMHgyMAogLyogUFYoSCkgZ3Vlc3Rz OiBWUE1VIHJlZ2lzdGVycyBhcmUgYWNjZXNzZWQgYnkgZ3Vlc3QgZnJvbSBzaGFyZWQgcGFnZSAq LwogI2RlZmluZSBWUE1VX0NBQ0hFRCAgICAgICAgICAgICAgICAgICAgICAgICAweDQwCisjZGVm aW5lIFZQTVVfRU5BQkxFRCAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAKIAogLyogSW50ZWwt c3BlY2lmaWMgVlBNVSBmZWF0dXJlcyAqLwogI2RlZmluZSBWUE1VX0NQVV9IQVNfRFMgICAgICAg ICAgICAgICAgICAgICAweDEwMCAvKiBIYXMgRGVidWcgU3RvcmUgKi8KQEAgLTg5LDcgKzkwLDgg QEAgc3RhdGljIGlubGluZSB2b2lkIHZwbXVfcmVzZXQoc3RydWN0IHZwbXVfc3RydWN0ICp2cG11 LCBjb25zdCB1MzIgbWFzaykKIH0KIHN0YXRpYyBpbmxpbmUgdm9pZCB2cG11X2NsZWFyKHN0cnVj dCB2cG11X3N0cnVjdCAqdnBtdSkKIHsKLSAgICB2cG11LT5mbGFncyA9IDA7CisgICAgLyogVlBN VV9FTkFCTEVEIHNob3VsZCBiZSBhbHRlcmVkIGJ5IGdldC9wdXRfdnBtdSgpLiAqLworICAgIHZw bXUtPmZsYWdzICY9IFZQTVVfRU5BQkxFRDsKIH0KIHN0YXRpYyBpbmxpbmUgYm9vbF90IHZwbXVf aXNfc2V0KGNvbnN0IHN0cnVjdCB2cG11X3N0cnVjdCAqdnBtdSwgY29uc3QgdTMyIG1hc2spCiB7 Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==