From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v4 1/2] x86/vpmu: Add get/put_vpmu() and VPMU_AVAILABLE Date: Wed, 1 Mar 2017 10:06:44 -0500 Message-ID: <1488380805-5421-2-git-send-email-boris.ostrovsky@oracle.com> References: <1488380805-5421-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: <1488380805-5421-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 cm92c2t5IDxib3Jpcy5vc3Ryb3Zza3lAb3JhY2xlLmNvbT4KUmV2aWV3ZWQtYnk6IEtldmluIFRp YW4gPGtldmluLnRpYW5AaW50ZWwuY29tPgpBY2tlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNo QHN1c2UuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9jcHUvdnBtdS5jICAgIHwgMTExICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogeGVuL2FyY2gveDg2L2NwdWlk LmMgICAgICAgfCAgIDYgKy0tCiB4ZW4vYXJjaC94ODYvZG9tYWluLmMgICAgICB8ICAgNSArKwog eGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgfCAgIDUgLS0KIHhlbi9hcmNoL3g4Ni9odm0vdm14 L3ZteC5jIHwgICA1IC0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L3ZwbXUuaCB8ICAgNiArKy0KIDYg ZmlsZXMgY2hhbmdlZCwgODcgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEveGVuL2FyY2gveDg2L2NwdS92cG11LmMgYi94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYwpp bmRleCBjODYxNWU4Li4xOTU3ZGVhIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvY3B1L3ZwbXUu YworKysgYi94ZW4vYXJjaC94ODYvY3B1L3ZwbXUuYwpAQCAtNDU1LDMyICs0NTUsMjEgQEAgaW50 IHZwbXVfbG9hZChzdHJ1Y3QgdmNwdSAqdiwgYm9vbF90IGZyb21fZ3Vlc3QpCiAgICAgcmV0dXJu IDA7CiB9CiAKLXZvaWQgdnBtdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQorc3RhdGljIGlu dCB2cG11X2FyY2hfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgdnBt dV9zdHJ1Y3QgKnZwbXUgPSB2Y3B1X3ZwbXUodik7CiAgICAgdWludDhfdCB2ZW5kb3IgPSBjdXJy ZW50X2NwdV9kYXRhLng4Nl92ZW5kb3I7CiAgICAgaW50IHJldDsKLSAgICBib29sX3QgaXNfcHJp dl92cG11ID0gaXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbik7CiAKICAgICBCVUlMRF9CVUdf T04oc2l6ZW9mKHN0cnVjdCB4ZW5fcG11X2ludGVsX2N0eHQpID4gWEVOUE1VX0NUWFRfUEFEX1Na KTsKICAgICBCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCB4ZW5fcG11X2FtZF9jdHh0KSA+IFhF TlBNVV9DVFhUX1BBRF9TWik7CiAgICAgQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgeGVuX3Bt dV9yZWdzKSA+IFhFTlBNVV9SRUdTX1BBRF9TWik7CiAgICAgQlVJTERfQlVHX09OKHNpemVvZihz dHJ1Y3QgY29tcGF0X3BtdV9yZWdzKSA+IFhFTlBNVV9SRUdTX1BBRF9TWik7CiAKLSAgICBBU1NF UlQoIXZwbXUtPmZsYWdzICYmICF2cG11LT5jb250ZXh0KTsKKyAgICBBU1NFUlQoISh2cG11LT5m bGFncyAmIH5WUE1VX0FWQUlMQUJMRSkgJiYgIXZwbXUtPmNvbnRleHQpOwogCi0gICAgaWYgKCAh aXNfcHJpdl92cG11ICkKLSAgICB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIENvdW50IGFjdGl2 ZSBWUE1VcyBzbyB0aGF0IHdlIHdvbid0IHRyeSB0byBjaGFuZ2UgdnBtdV9tb2RlIHdoaWxlCi0g ICAgICAgICAqIHRoZXkgYXJlIGluIHVzZS4KLSAgICAgICAgICogdnBtdV9tb2RlIGNhbiBiZSBz YWZlbHkgdXBkYXRlZCB3aGlsZSBkb20wJ3MgVlBNVXMgYXJlIGFjdGl2ZSBhbmQKLSAgICAgICAg ICogc28gd2UgZG9uJ3QgbmVlZCB0byBpbmNsdWRlIGl0IGluIHRoZSBjb3VudC4KLSAgICAgICAg ICovCi0gICAgICAgIHNwaW5fbG9jaygmdnBtdV9sb2NrKTsKLSAgICAgICAgdnBtdV9jb3VudCsr OwotICAgICAgICBzcGluX3VubG9jaygmdnBtdV9sb2NrKTsKLSAgICB9CisgICAgaWYgKCAhdnBt dV9hdmFpbGFibGUodikgKQorICAgICAgICByZXR1cm4gMDsKIAogICAgIHN3aXRjaCAoIHZlbmRv ciApCiAgICAgewpAQCAtNTAwLDcgKzQ4OSw3IEBAIHZvaWQgdnBtdV9pbml0aWFsaXNlKHN0cnVj dCB2Y3B1ICp2KQogICAgICAgICAgICAgb3B0X3ZwbXVfZW5hYmxlZCA9IDA7CiAgICAgICAgICAg ICB2cG11X21vZGUgPSBYRU5QTVVfTU9ERV9PRkY7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJu OyAvKiBEb24ndCBib3RoZXIgcmVzdG9yaW5nIHZwbXVfY291bnQsIFZQTVUgaXMgb2ZmIGZvcmV2 ZXIgKi8KKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAgICAgfQogCiAgICAgdnBtdS0+aHdfbGFw aWNfbHZ0cGMgPSBQTVVfQVBJQ19WRUNUT1IgfCBBUElDX0xWVF9NQVNLRUQ7CkBAIC01MDgsMTUg KzQ5Nyw2MyBAQCB2b2lkIHZwbXVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAqdikKICAgICBpZiAo IHJldCApCiAgICAgICAgIHByaW50ayhYRU5MT0dfR19XQVJOSU5HICJWUE1VOiBJbml0aWFsaXph dGlvbiBmYWlsZWQgZm9yICVwdlxuIiwgdik7CiAKLSAgICAvKiBJbnRlbCBuZWVkcyB0byBpbml0 aWFsaXplIFZQTVUgb3BzIGV2ZW4gaWYgVlBNVSBpcyBub3QgaW4gdXNlICovCi0gICAgaWYgKCAh aXNfcHJpdl92cG11ICYmCi0gICAgICAgICAocmV0IHx8ICh2cG11X21vZGUgPT0gWEVOUE1VX01P REVfT0ZGKSB8fAotICAgICAgICAgICh2cG11X21vZGUgPT0gWEVOUE1VX01PREVfQUxMKSkgKQor ICAgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIGdldF92cG11KHN0cnVjdCB2Y3B1ICp2 KQoreworICAgIHNwaW5fbG9jaygmdnBtdV9sb2NrKTsKKworICAgIC8qCisgICAgICogS2VlcCBj b3VudCBvZiBWUE1VcyBpbiB0aGUgc3lzdGVtIHNvIHRoYXQgd2Ugd29uJ3QgdHJ5IHRvIGNoYW5n ZQorICAgICAqIHZwbXVfbW9kZSB3aGlsZSBhIGd1ZXN0IG1pZ2h0IGJlIHVzaW5nIG9uZS4KKyAg ICAgKiB2cG11X21vZGUgY2FuIGJlIHNhZmVseSB1cGRhdGVkIHdoaWxlIGRvbTAncyBWUE1VcyBh cmUgYWN0aXZlIGFuZAorICAgICAqIHNvIHdlIGRvbid0IG5lZWQgdG8gaW5jbHVkZSBpdCBpbiB0 aGUgY291bnQuCisgICAgICovCisgICAgaWYgKCAhaXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFp bikgJiYKKyAgICAgICAgKHZwbXVfbW9kZSAmIChYRU5QTVVfTU9ERV9TRUxGIHwgWEVOUE1VX01P REVfSFYpKSApCisgICAgeworICAgICAgICB2cG11X2NvdW50Kys7CisgICAgICAgIHZwbXVfc2V0 KHZjcHVfdnBtdSh2KSwgVlBNVV9BVkFJTEFCTEUpOworICAgIH0KKyAgICBlbHNlIGlmICggaXNf aGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbikgJiYKKyAgICAgICAgICAgICAgKHZwbXVfbW9kZSAh PSBYRU5QTVVfTU9ERV9PRkYpICkKKyAgICAgICAgdnBtdV9zZXQodmNwdV92cG11KHYpLCBWUE1V X0FWQUlMQUJMRSk7CisKKyAgICBzcGluX3VubG9jaygmdnBtdV9sb2NrKTsKK30KKworc3RhdGlj IHZvaWQgcHV0X3ZwbXUoc3RydWN0IHZjcHUgKnYpCit7CisgICAgc3Bpbl9sb2NrKCZ2cG11X2xv Y2spOworCisgICAgaWYgKCAhdnBtdV9hdmFpbGFibGUodikgKQorICAgICAgICBnb3RvIG91dDsK KworICAgIGlmICggIWlzX2hhcmR3YXJlX2RvbWFpbih2LT5kb21haW4pICYmCisgICAgICAgICAo dnBtdV9tb2RlICYgKFhFTlBNVV9NT0RFX1NFTEYgfCBYRU5QTVVfTU9ERV9IVikpICkKICAgICB7 Ci0gICAgICAgIHNwaW5fbG9jaygmdnBtdV9sb2NrKTsKICAgICAgICAgdnBtdV9jb3VudC0tOwot ICAgICAgICBzcGluX3VubG9jaygmdnBtdV9sb2NrKTsKKyAgICAgICAgdnBtdV9yZXNldCh2Y3B1 X3ZwbXUodiksIFZQTVVfQVZBSUxBQkxFKTsKICAgICB9CisgICAgZWxzZSBpZiAoIGlzX2hhcmR3 YXJlX2RvbWFpbih2LT5kb21haW4pICYmCisgICAgICAgICAgICAgICh2cG11X21vZGUgIT0gWEVO UE1VX01PREVfT0ZGKSApCisgICAgICAgIHZwbXVfcmVzZXQodmNwdV92cG11KHYpLCBWUE1VX0FW QUlMQUJMRSk7CisKKyBvdXQ6CisgICAgc3Bpbl91bmxvY2soJnZwbXVfbG9jayk7Cit9CisKK3Zv aWQgdnBtdV9pbml0aWFsaXNlKHN0cnVjdCB2Y3B1ICp2KQoreworICAgIGdldF92cG11KHYpOwor CisgICAgLyoKKyAgICAgKiBHdWVzdHMgd2l0aG91dCBMQVBJQyAoaS5lLiBQVikgY2FsbCB2cG11 X2FyY2hfaW5pdGlhbGlzZSgpCisgICAgICogZnJvbSBwdnBtdV9pbml0KCkuCisgICAgICovCisg ICAgaWYgKCBoYXNfdmxhcGljKHYtPmRvbWFpbikgJiYgdnBtdV9hcmNoX2luaXRpYWxpc2Uodikg KQorICAgICAgICBwdXRfdnBtdSh2KTsKIH0KIAogc3RhdGljIHZvaWQgdnBtdV9jbGVhcl9sYXN0 KHZvaWQgKmFyZykKQEAgLTUyNSw3ICs1NjIsNyBAQCBzdGF0aWMgdm9pZCB2cG11X2NsZWFyX2xh c3Qodm9pZCAqYXJnKQogICAgICAgICB0aGlzX2NwdShsYXN0X3ZjcHUpID0gTlVMTDsKIH0KIAot dm9pZCB2cG11X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCitzdGF0aWMgdm9pZCB2cG11X2FyY2hf ZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKIHsKICAgICBzdHJ1Y3QgdnBtdV9zdHJ1Y3QgKnZwbXUg PSB2Y3B1X3ZwbXUodik7CiAKQEAgLTU1MCwxMSArNTg3LDEzIEBAIHZvaWQgdnBtdV9kZXN0cm95 KHN0cnVjdCB2Y3B1ICp2KQogICAgICAgICAgICAgICAgICAgICAgICAgIHZwbXVfc2F2ZV9mb3Jj ZSwgdiwgMSk7CiAgICAgICAgICB2cG11LT5hcmNoX3ZwbXVfb3BzLT5hcmNoX3ZwbXVfZGVzdHJv eSh2KTsKICAgICB9Cit9CiAKLSAgICBzcGluX2xvY2soJnZwbXVfbG9jayk7Ci0gICAgaWYgKCAh aXNfaGFyZHdhcmVfZG9tYWluKHYtPmRvbWFpbikgKQotICAgICAgICB2cG11X2NvdW50LS07Ci0g ICAgc3Bpbl91bmxvY2soJnZwbXVfbG9jayk7Cit2b2lkIHZwbXVfZGVzdHJveShzdHJ1Y3QgdmNw dSAqdikKK3sKKyAgICB2cG11X2FyY2hfZGVzdHJveSh2KTsKKworICAgIHB1dF92cG11KHYpOwog fQogCiBzdGF0aWMgaW50IHB2cG11X2luaXQoc3RydWN0IGRvbWFpbiAqZCwgeGVuX3BtdV9wYXJh bXNfdCAqcGFyYW1zKQpAQCAtNTY0LDEzICs2MDMsMTUgQEAgc3RhdGljIGludCBwdnBtdV9pbml0 KHN0cnVjdCBkb21haW4gKmQsIHhlbl9wbXVfcGFyYW1zX3QgKnBhcmFtcykKICAgICBzdHJ1Y3Qg cGFnZV9pbmZvICpwYWdlOwogICAgIHVpbnQ2NF90IGdmbiA9IHBhcmFtcy0+dmFsOwogCi0gICAg aWYgKCAodnBtdV9tb2RlID09IFhFTlBNVV9NT0RFX09GRikgfHwKLSAgICAgICAgICgodnBtdV9t b2RlICYgWEVOUE1VX01PREVfQUxMKSAmJiAhaXNfaGFyZHdhcmVfZG9tYWluKGQpKSApCi0gICAg ICAgIHJldHVybiAtRUlOVkFMOwotCiAgICAgaWYgKCAocGFyYW1zLT52Y3B1ID49IGQtPm1heF92 Y3B1cykgfHwgKGQtPnZjcHVbcGFyYW1zLT52Y3B1XSA9PSBOVUxMKSApCiAgICAgICAgIHJldHVy biAtRUlOVkFMOwogCisgICAgdiA9IGQtPnZjcHVbcGFyYW1zLT52Y3B1XTsKKyAgICB2cG11ID0g dmNwdV92cG11KHYpOworCisgICAgaWYgKCAhdnBtdV9hdmFpbGFibGUodikgKQorICAgICAgICBy ZXR1cm4gLUVOT0VOVDsKKwogICAgIHBhZ2UgPSBnZXRfcGFnZV9mcm9tX2dmbihkLCBnZm4sIE5V TEwsIFAyTV9BTExPQyk7CiAgICAgaWYgKCAhcGFnZSApCiAgICAgICAgIHJldHVybiAtRUlOVkFM OwpAQCAtNTgxLDkgKzYyMiw2IEBAIHN0YXRpYyBpbnQgcHZwbXVfaW5pdChzdHJ1Y3QgZG9tYWlu ICpkLCB4ZW5fcG11X3BhcmFtc190ICpwYXJhbXMpCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwog ICAgIH0KIAotICAgIHYgPSBkLT52Y3B1W3BhcmFtcy0+dmNwdV07Ci0gICAgdnBtdSA9IHZjcHVf dnBtdSh2KTsKLQogICAgIHNwaW5fbG9jaygmdnBtdS0+dnBtdV9sb2NrKTsKIAogICAgIGlmICgg di0+YXJjaC52cG11LnhlbnBtdV9kYXRhICkKQEAgLTYwMSw3ICs2MzksOCBAQCBzdGF0aWMgaW50 IHB2cG11X2luaXQoc3RydWN0IGRvbWFpbiAqZCwgeGVuX3BtdV9wYXJhbXNfdCAqcGFyYW1zKQog ICAgICAgICByZXR1cm4gLUVOT01FTTsKICAgICB9CiAKLSAgICB2cG11X2luaXRpYWxpc2Uodik7 CisgICAgaWYgKCB2cG11X2FyY2hfaW5pdGlhbGlzZSh2KSApCisgICAgICAgIHB1dF92cG11KHYp OwogCiAgICAgc3Bpbl91bmxvY2soJnZwbXUtPnZwbXVfbG9jayk7CiAKQEAgLTYyNSw3ICs2NjQs NyBAQCBzdGF0aWMgdm9pZCBwdnBtdV9maW5pc2goc3RydWN0IGRvbWFpbiAqZCwgeGVuX3BtdV9w YXJhbXNfdCAqcGFyYW1zKQogICAgIHZwbXUgPSB2Y3B1X3ZwbXUodik7CiAgICAgc3Bpbl9sb2Nr KCZ2cG11LT52cG11X2xvY2spOwogCi0gICAgdnBtdV9kZXN0cm95KHYpOworICAgIHZwbXVfYXJj aF9kZXN0cm95KHYpOwogICAgIHhlbnBtdV9kYXRhID0gdnBtdS0+eGVucG11X2RhdGE7CiAgICAg dnBtdS0+eGVucG11X2RhdGEgPSBOVUxMOwogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1 aWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCmluZGV4IDBlMTc2NzAuLjBkZDM1ZGMgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCkBA IC01OTEsNyArNTkxLDcgQEAgc3RhdGljIHZvaWQgcHZfY3B1aWQodWludDMyX3QgbGVhZiwgdWlu dDMyX3Qgc3VibGVhZiwgc3RydWN0IGNwdWlkX2xlYWYgKnJlcykKICAgICB7CiAgICAgY2FzZSAw eDAwMDAwMDBhOiAvKiBBcmNoaXRlY3R1cmFsIFBlcmZvcm1hbmNlIE1vbml0b3IgRmVhdHVyZXMg KEludGVsKSAqLwogICAgICAgICBpZiAoIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciAhPSBYODZf VkVORE9SX0lOVEVMIHx8Ci0gICAgICAgICAgICAgIXZwbXVfZW5hYmxlZChjdXJyKSApCisgICAg ICAgICAgICAgIXZwbXVfYXZhaWxhYmxlKGN1cnIpICkKICAgICAgICAgICAgIGdvdG8gdW5zdXBw b3J0ZWQ7CiAKICAgICAgICAgLyogUmVwb3J0IGF0IG1vc3QgdmVyc2lvbiAzIHNpbmNlIHRoYXQn cyBhbGwgd2UgY3VycmVudGx5IGVtdWxhdGUuICovCkBAIC02MjksNyArNjI5LDcgQEAgc3RhdGlj IHZvaWQgaHZtX2NwdWlkKHVpbnQzMl90IGxlYWYsIHVpbnQzMl90IHN1YmxlYWYsIHN0cnVjdCBj cHVpZF9sZWFmICpyZXMpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAweDAwMDAwMDBhOiAv KiBBcmNoaXRlY3R1cmFsIFBlcmZvcm1hbmNlIE1vbml0b3IgRmVhdHVyZXMgKEludGVsKSAqLwot ICAgICAgICBpZiAoIGJvb3RfY3B1X2RhdGEueDg2X3ZlbmRvciAhPSBYODZfVkVORE9SX0lOVEVM IHx8ICF2cG11X2VuYWJsZWQodikgKQorICAgICAgICBpZiAoIGJvb3RfY3B1X2RhdGEueDg2X3Zl bmRvciAhPSBYODZfVkVORE9SX0lOVEVMIHx8ICF2cG11X2F2YWlsYWJsZSh2KSApCiAgICAgICAg IHsKICAgICAgICAgICAgICpyZXMgPSBFTVBUWV9MRUFGOwogICAgICAgICAgICAgYnJlYWs7CkBA IC03NTIsNyArNzUyLDcgQEAgdm9pZCBndWVzdF9jcHVpZChjb25zdCBzdHJ1Y3QgdmNwdSAqdiwg dWludDMyX3QgbGVhZiwKICAgICAgICAgcmVzLT5iIHw9ICh2LT52Y3B1X2lkICogMikgPDwgMjQ7 CiAKICAgICAgICAgLyogVE9ETzogUmV3b3JrIHZQTVUgY29udHJvbCBpbiB0ZXJtcyBvZiB0b29s c3RhY2sgY2hvaWNlcy4gKi8KLSAgICAgICAgaWYgKCB2cG11X2VuYWJsZWQodikgJiYKKyAgICAg ICAgaWYgKCB2cG11X2F2YWlsYWJsZSh2KSAmJgogICAgICAgICAgICAgIHZwbXVfaXNfc2V0KHZj cHVfdnBtdSh2KSwgVlBNVV9DUFVfSEFTX0RTKSApCiAgICAgICAgIHsKICAgICAgICAgICAgIHJl cy0+ZCB8PSBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfRFMpOwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jCmluZGV4IDEwM2EzZjQuLjQ3 OWFlZTYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9kb21haW4uYworKysgYi94ZW4vYXJjaC94 ODYvZG9tYWluLmMKQEAgLTQ3MSw2ICs0NzEsOCBAQCBpbnQgdmNwdV9pbml0aWFsaXNlKHN0cnVj dCB2Y3B1ICp2KQogICAgICAgICBpZiAoIGlzX3B2X2RvbWFpbihkKSApCiAgICAgICAgICAgICB4 ZnJlZSh2LT5hcmNoLnB2X3ZjcHUudHJhcF9jdHh0KTsKICAgICB9CisgICAgZWxzZSBpZiAoICFp c19pZGxlX2RvbWFpbih2LT5kb21haW4pICkKKyAgICAgICAgdnBtdV9pbml0aWFsaXNlKHYpOwog CiAgICAgcmV0dXJuIHJjOwogfQpAQCAtNDg4LDYgKzQ5MCw5IEBAIHZvaWQgdmNwdV9kZXN0cm95 KHN0cnVjdCB2Y3B1ICp2KQogCiAgICAgdmNwdV9kZXN0cm95X2ZwdSh2KTsKIAorICAgIGlmICgg IWlzX2lkbGVfZG9tYWluKHYtPmRvbWFpbikgKQorICAgICAgICB2cG11X2Rlc3Ryb3kodik7CisK ICAgICBpZiAoIGhhc19odm1fY29udGFpbmVyX3ZjcHUodikgKQogICAgICAgICBodm1fdmNwdV9k ZXN0cm95KHYpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3N2 bS5jIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKaW5kZXggZjRlYTA5ZS4uYjg4ZjkxZCAx MDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKKysrIGIveGVuL2FyY2gveDg2 L2h2bS9zdm0vc3ZtLmMKQEAgLTExNzIsMTAgKzExNzIsNiBAQCBzdGF0aWMgaW50IHN2bV92Y3B1 X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIHJldHVybiByYzsKICAgICB9CiAK LSAgICAvKiBQVkgncyBWUE1VIGlzIGluaXRpYWxpemVkIHZpYSBoeXBlcmNhbGwgKi8KLSAgICBp ZiAoIGhhc192bGFwaWModi0+ZG9tYWluKSApCi0gICAgICAgIHZwbXVfaW5pdGlhbGlzZSh2KTsK LQogICAgIHN2bV9ndWVzdF9vc3Z3X2luaXQodik7CiAKICAgICByZXR1cm4gMDsKQEAgLTExODMs NyArMTE3OSw2IEBAIHN0YXRpYyBpbnQgc3ZtX3ZjcHVfaW5pdGlhbGlzZShzdHJ1Y3QgdmNwdSAq dikKIAogc3RhdGljIHZvaWQgc3ZtX3ZjcHVfZGVzdHJveShzdHJ1Y3QgdmNwdSAqdikKIHsKLSAg ICB2cG11X2Rlc3Ryb3kodik7CiAgICAgc3ZtX2Rlc3Ryb3lfdm1jYih2KTsKICAgICBwYXNzaXZl X2RvbWFpbl9kZXN0cm95KHYpOwogfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bXgv dm14LmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYwppbmRleCA2MGI3YzkyLi41YjE3MTdk IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC92bXguYworKysgYi94ZW4vYXJjaC94 ODYvaHZtL3ZteC92bXguYwpAQCAtMzMyLDEwICszMzIsNiBAQCBzdGF0aWMgaW50IHZteF92Y3B1 X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKiBQ VkgncyBWUE1VIGlzIGluaXRpYWxpemVkIHZpYSBoeXBlcmNhbGwgKi8KLSAgICBpZiAoIGhhc192 bGFwaWModi0+ZG9tYWluKSApCi0gICAgICAgIHZwbXVfaW5pdGlhbGlzZSh2KTsKLQogICAgIHZt eF9pbnN0YWxsX3ZsYXBpY19tYXBwaW5nKHYpOwogCiAgICAgLyogJWVheCA9PSAxIHNpZ25hbHMg ZnVsbCByZWFsLW1vZGUgc3VwcG9ydCB0byB0aGUgZ3Vlc3QgbG9hZGVyLiAqLwpAQCAtMzU2LDcg KzM1Miw2IEBAIHN0YXRpYyB2b2lkIHZteF92Y3B1X2Rlc3Ryb3koc3RydWN0IHZjcHUgKnYpCiAg ICAgICovCiAgICAgdm14X3ZjcHVfZGlzYWJsZV9wbWwodik7CiAgICAgdm14X2Rlc3Ryb3lfdm1j cyh2KTsKLSAgICB2cG11X2Rlc3Ryb3kodik7CiAgICAgcGFzc2l2ZV9kb21haW5fZGVzdHJveSh2 KTsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni92cG11LmggYi94ZW4vaW5j bHVkZS9hc20teDg2L3ZwbXUuaAppbmRleCBlNTA2MThmLi41ZTc3OGFiIDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L3ZwbXUuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3ZwbXUu aApAQCAtMjUsNyArMjUsNyBAQAogCiAjZGVmaW5lIHZjcHVfdnBtdSh2Y3B1KSAgICgmKHZjcHUp LT5hcmNoLnZwbXUpCiAjZGVmaW5lIHZwbXVfdmNwdSh2cG11KSAgIGNvbnRhaW5lcl9vZigodnBt dSksIHN0cnVjdCB2Y3B1LCBhcmNoLnZwbXUpCi0jZGVmaW5lIHZwbXVfZW5hYmxlZCh2Y3B1KSB2 cG11X2lzX3NldCh2Y3B1X3ZwbXUodmNwdSksIFZQTVVfQ09OVEVYVF9BTExPQ0FURUQpCisjZGVm aW5lIHZwbXVfYXZhaWxhYmxlKHZjcHUpIHZwbXVfaXNfc2V0KHZjcHVfdnBtdSh2Y3B1KSwgVlBN VV9BVkFJTEFCTEUpCiAKICNkZWZpbmUgTVNSX1RZUEVfQ09VTlRFUiAgICAgICAgICAgIDAKICNk ZWZpbmUgTVNSX1RZUEVfQ1RSTCAgICAgICAgICAgICAgIDEKQEAgLTc0LDYgKzc0LDcgQEAgc3Ry dWN0IHZwbXVfc3RydWN0IHsKICNkZWZpbmUgVlBNVV9QQVNTSVZFX0RPTUFJTl9BTExPQ0FURUQg ICAgICAgMHgyMAogLyogUFYoSCkgZ3Vlc3RzOiBWUE1VIHJlZ2lzdGVycyBhcmUgYWNjZXNzZWQg YnkgZ3Vlc3QgZnJvbSBzaGFyZWQgcGFnZSAqLwogI2RlZmluZSBWUE1VX0NBQ0hFRCAgICAgICAg ICAgICAgICAgICAgICAgICAweDQwCisjZGVmaW5lIFZQTVVfQVZBSUxBQkxFICAgICAgICAgICAg ICAgICAgICAgIDB4ODAKIAogLyogSW50ZWwtc3BlY2lmaWMgVlBNVSBmZWF0dXJlcyAqLwogI2Rl ZmluZSBWUE1VX0NQVV9IQVNfRFMgICAgICAgICAgICAgICAgICAgICAweDEwMCAvKiBIYXMgRGVi dWcgU3RvcmUgKi8KQEAgLTg5LDcgKzkwLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHZwbXVfcmVz ZXQoc3RydWN0IHZwbXVfc3RydWN0ICp2cG11LCBjb25zdCB1MzIgbWFzaykKIH0KIHN0YXRpYyBp bmxpbmUgdm9pZCB2cG11X2NsZWFyKHN0cnVjdCB2cG11X3N0cnVjdCAqdnBtdSkKIHsKLSAgICB2 cG11LT5mbGFncyA9IDA7CisgICAgLyogVlBNVV9BVkFJTEFCTEUgc2hvdWxkIGJlIGFsdGVyZWQg YnkgZ2V0L3B1dF92cG11KCkuICovCisgICAgdnBtdS0+ZmxhZ3MgJj0gVlBNVV9BVkFJTEFCTEU7 CiB9CiBzdGF0aWMgaW5saW5lIGJvb2xfdCB2cG11X2lzX3NldChjb25zdCBzdHJ1Y3QgdnBtdV9z dHJ1Y3QgKnZwbXUsIGNvbnN0IHUzMiBtYXNrKQogewotLSAKMS44LjMuMQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=