From mboxrd@z Thu Jan 1 00:00:00 1970 From: Suravee Suthikulpanit Subject: [PATCH v2 05/10] x86/HVM/SVM: Add AVIC initialization code Date: Fri, 30 Dec 2016 23:45:56 -0600 Message-ID: <1483163161-2402-6-git-send-email-suravee.suthikulpanit@amd.com> References: <1483163161-2402-1-git-send-email-suravee.suthikulpanit@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1483163161-2402-1-git-send-email-suravee.suthikulpanit@amd.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: Jan Beulich , andrew.cooper3@citrix.com, Suravee Suthikulpanit , sherry.hurwitz@amd.com, boris.ostrovsky@oracle.com List-Id: xen-devel@lists.xenproject.org SW50cm9kdWNlIEFWSUMgYmFzZSBpbml0aWFsaXphdGlvbiBjb2RlLiBUaGlzIGluY2x1ZGVzOgog ICAgKiBTZXR0aW5nIHVwIHBlci1WTSBkYXRhIHN0cnVjdHVyZXMuCiAgICAqIFNldHRpbmcgdXAg cGVyLXZDUFUgZGF0YSBzdHJ1Y3R1cmUuCiAgICAqIEluaXRpYWxpemluZyBBVklDLXJlbGF0ZWQg Vk1DQiBiaXQgZmllbGRzLgoKVGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZXMgYSBuZXcgWGVuIHBh cmFtZXRlciAoc3ZtLWF2aWMpLAp3aGljaCBjYW4gYmUgdXNlZCB0byBlbmFibGUvZGlzYWJsZSBB VklDIHN1cHBvcnQuCkN1cnJlbnRseSwgdGhpcyBzdm0tYXZpYyBpcyBkaXNhYmxlZCBieSBkZWZh dWx0IHNpbmNlCml0IGRvZXMgbm90IHN1cHBvcnRlZCBuZXN0ZWQgdmlydHVhbGl6YXRpb24geWV0 LgoKU2lnbmVkLW9mZi1ieTogU3VyYXZlZSBTdXRoaWt1bHBhbml0IDxzdXJhdmVlLnN1dGhpa3Vs cGFuaXRAYW1kLmNvbT4KQ2M6IEphbiBCZXVsaWNoIDxKQmV1bGljaEBzdXNlLmNvbT4KQ2M6IEtv bnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6IEJvcmlzIE9z dHJvdnNreSA8Ym9yaXMub3N0cm92c2t5QG9yYWNsZS5jb20+Ci0tLQogZG9jcy9taXNjL3hlbi1j b21tYW5kLWxpbmUubWFya2Rvd24gfCAgIDkgKysKIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL01ha2Vm aWxlICAgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL2F2aWMuYyAgICAgICAgIHwg MjMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2 bS9zdm0vc3ZtLmMgICAgICAgICAgfCAgIDkgKy0KIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL3ZtY2Iu YyAgICAgICAgIHwgICAzICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9hdmljLmggIHwg IDQwICsrKysrKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9zdm0uaCAgIHwgICAyICsK IHhlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS92bWNiLmggIHwgIDIxICsrKysKIDggZmlsZXMg Y2hhbmdlZCwgMzE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCB4ZW4vYXJjaC94ODYvaHZtL3N2bS9hdmljLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4v aW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYXZpYy5oCgpkaWZmIC0tZ2l0IGEvZG9jcy9taXNjL3hl bi1jb21tYW5kLWxpbmUubWFya2Rvd24gYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJr ZG93bgppbmRleCAwMTM4OTc4Li4xMTM5MDk5IDEwMDY0NAotLS0gYS9kb2NzL21pc2MveGVuLWNv bW1hbmQtbGluZS5tYXJrZG93bgorKysgYi9kb2NzL21pc2MveGVuLWNvbW1hbmQtbGluZS5tYXJr ZG93bgpAQCAtMTQ1Nyw2ICsxNDU3LDE1IEBAIGVuZm9yY2VzIHRoZSBtYXhpbXVtIHRoZW9yZXRp Y2FsbHkgbmVjZXNzYXJ5IHRpbWVvdXQgb2YgNjcwbXMuIEFueSBudW1iZXIKIGlzIGJlaW5nIGlu dGVycHJldGVkIGFzIGEgY3VzdG9tIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiBaZXJvIG9yIGJv b2xlYW4KIGZhbHNlIGRpc2FibGUgdGhlIHF1aXJrIHdvcmthcm91bmQsIHdoaWNoIGlzIGFsc28g dGhlIGRlZmF1bHQuCiAKKyMjIyBzdm1cX2F2aWMKKz4gYD0gPGJvb2xlYW4+YAorCis+IERlZmF1 bHQ6IGBmYWxzZWAKKworVGhpcyBvcHRpb24gZW5hYmxlcyBBZHZhbmNlIFZpcnR1YWwgSW50ZXJy dXB0IENvbnRyb2xsZXIgKEFWSUMpLAord2hpY2ggaXMgYW4gZXh0ZW5zaW9uIG9mIEFNRCBTZWN1 cmUgVmlydHVhbCBNYWNoaW5lIChTVk0pIHRvIHZpdHVhbGl6ZQorbG9jYWwgQVBJQyBmb3IgZ3Vl c3QgVk0uCisKICMjIyBzeW5jXF9jb25zb2xlCiA+IGA9IDxib29sZWFuPmAKIApkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vTWFrZWZpbGUgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9N YWtlZmlsZQppbmRleCA3NjBkMjk1Li5lMGU0YTU5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv aHZtL3N2bS9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9NYWtlZmlsZQpAQCAt MSw0ICsxLDUgQEAKIG9iai15ICs9IGFzaWQubworb2JqLXkgKz0gYXZpYy5vCiBvYmoteSArPSBl bXVsYXRlLm8KIG9iai1iaW4teSArPSBlbnRyeS5vCiBvYmoteSArPSBpbnRyLm8KZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2F2aWMuYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2F2 aWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjJmOTgyCi0tLSAvZGV2 L251bGwKKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vYXZpYy5jCkBAIC0wLDAgKzEsMjMyIEBA CisvKgorICogYXZpYy5jOiBpbXBsZW1lbnRzIEFNRCBBZHZhbmNlIFZpcnR1YWwgSW50ZXJydXB0 IENvbnRyb2xsZXIgKEFWSUMpIHN1cHBvcnQKKyAqIENvcHlyaWdodCAoYykgMjAxNiwgQWR2YW5j ZWQgTWljcm8gRGV2aWNlcywgSW5jLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl LAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoCisg KiB0aGlzIHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KKyAqLworCisjaW5jbHVkZSA8eGVuL2RvbWFpbl9wYWdlLmg+CisjaW5jbHVkZSA8eGVuL3Nj aGVkLmg+CisjaW5jbHVkZSA8eGVuL3N0ZGJvb2wuaD4KKyNpbmNsdWRlIDxhc20vYWNwaS5oPgor I2luY2x1ZGUgPGFzbS9hcGljZGVmLmg+CisjaW5jbHVkZSA8YXNtL2V2ZW50Lmg+CisjaW5jbHVk ZSA8YXNtL2h2bS9lbXVsYXRlLmg+CisjaW5jbHVkZSA8YXNtL2h2bS9uZXN0ZWRodm0uaD4KKyNp bmNsdWRlIDxhc20vaHZtL3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxhc20vaHZtL3N2bS9hdmljLmg+ CisjaW5jbHVkZSA8YXNtL2h2bS92bGFwaWMuaD4KKyNpbmNsdWRlIDxhc20vcDJtLmg+CisjaW5j bHVkZSA8YXNtL3BhZ2UuaD4KKworLyoKKyAqIE5vdGU6IEN1cnJlbnQgbWF4IGluZGV4IGFsbG93 ZWQgZm9yIHBoeXNpY2FsIEFQSUMgSUQgdGFibGUgaXMgMjU1LgorICovCisjZGVmaW5lIEFWSUNf UEhZX0FQSUNfSURfTUFYICAgIDB4RkYKKworI2RlZmluZSBBVklDX0RPT1JCRUxMICAgICAgICAg ICAweGMwMDEwMTFiCisKKyNkZWZpbmUgQVZJQ19IUEFfU0hJRlQgIDEyCisjZGVmaW5lIEFWSUNf SFBBX01BU0sgICAgICAgICAgICgoKDFVTEwgPDwgNDApIC0gMSkgPDwgQVZJQ19IUEFfU0hJRlQp CisjZGVmaW5lIEFWSUNfVkFQSUNfQkFSX01BU0sgICAgIEFWSUNfSFBBX01BU0sKKworLyoKKyAq IE5vdGU6CisgKiBDdXJyZW50bHksIHN2bS1hdmljIG1vZGUgaXMgbm90IHN1cHBvcnRlZCB3aXRo IG5lc3RlZCB2aXJ0dWFsaXphdGlvbi4KKyAqIFRoZXJlZm9yZSwgaXQgaXMgbm90IHlldCBjdXJy ZW50bHkgZW5hYmxlZCBieSBkZWZhdWx0LiBPbmNlIHRoZSBzdXBwb3J0CisgKiBpcyBpbi1wbGFj ZSwgdGhpcyBzaG91bGQgYmUgZW5hYmxlZCBieSBkZWZhdWx0LgorICovCitib29sIHN2bV9hdmlj ID0gMDsKK2Jvb2xlYW5fcGFyYW0oInN2bS1hdmljIiwgc3ZtX2F2aWMpOworCitzdGF0aWMgc3Ry dWN0IGF2aWNfcGh5X2FwaWNfaWRfZW50ICoKK2F2aWNfZ2V0X3BoeV9hcGljX2lkX2VudChjb25z dCBzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGluZGV4KQoreworICAgIHN0cnVjdCBhdmlj X3BoeV9hcGljX2lkX2VudCAqYXZpY19waHlfYXBpY19pZF90YWJsZTsKKyAgICBzdHJ1Y3Qgc3Zt X2RvbWFpbiAqZCA9ICZ2LT5kb21haW4tPmFyY2guaHZtX2RvbWFpbi5zdm07CisKKyAgICBpZiAo ICFkLT5hdmljX3BoeV9hcGljX2lkX3RhYmxlX21mbiApCisgICAgICAgIHJldHVybiBOVUxMOwor CisgICAgLyoKKyAgICAqIE5vdGU6IEFQSUMgSUQgPSAweGZmIGlzIHVzZWQgZm9yIGJyb2FkY2Fz dC4KKyAgICAqICAgICAgIEFQSUMgSUQgPiAweGZmIGlzIHJlc2VydmVkLgorICAgICovCisgICAg aWYgKCBpbmRleCA+PSAweGZmICkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBhdmljX3Bo eV9hcGljX2lkX3RhYmxlID0gbWZuX3RvX3ZpcnQoZC0+YXZpY19waHlfYXBpY19pZF90YWJsZV9t Zm4pOworCisgICAgcmV0dXJuICZhdmljX3BoeV9hcGljX2lkX3RhYmxlW2luZGV4XTsKK30KKwor aW50IHN2bV9hdmljX2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgaW50IHJldCA9 IDA7CisgICAgc3RydWN0IHBhZ2VfaW5mbyAqcGc7CisgICAgdW5zaWduZWQgbG9uZyBtZm47CisK KyAgICBpZiAoICFzdm1fYXZpYyApCisgICAgICAgIHJldHVybiAwOworCisgICAgLyoKKyAgICAg KiBOb3RlOgorICAgICAqIEFWSUMgaGFyZHdhcmUgd2Fsa3MgdGhlIG5lc3RlZCBwYWdlIHRhYmxl IHRvIGNoZWNrIHBlcm1pc3Npb25zLAorICAgICAqIGJ1dCBkb2VzIG5vdCB1c2UgdGhlIFNQQSBh ZGRyZXNzIHNwZWNpZmllZCBpbiB0aGUgbGVhZiBwYWdlCisgICAgICogdGFibGUgZW50cnkgc2lu Y2UgaXQgdXNlcyAgYWRkcmVzcyBpbiB0aGUgQVZJQ19CQUNLSU5HX1BBR0UgcG9pbnRlcgorICAg ICAqIGZpZWxkIG9mIHRoZSBWTUNCLiBUaGVyZWZvcmUsIHdlIHNldCB1cCBhIGR1bW15IHBhZ2Ug Zm9yIEFQSUMgX21mbigwKS4KKyAgICAgKi8KKyAgICBpZiAoICFkLT5hcmNoLmh2bV9kb21haW4u c3ZtLmF2aWNfYWNjZXNzX3BhZ2VfZG9uZSApCisgICAgeworICAgICAgICBzZXRfbW1pb19wMm1f ZW50cnkoZCwgcGFkZHJfdG9fcGZuKEFQSUNfREVGQVVMVF9QSFlTX0JBU0UpLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgX21mbigwKSwgUEFHRV9PUkRFUl80SywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIHAybV9nZXRfaG9zdHAybShkKS0+ZGVmYXVsdF9hY2Nlc3MpOworICAgICAg ICBkLT5hcmNoLmh2bV9kb21haW4uc3ZtLmF2aWNfYWNjZXNzX3BhZ2VfZG9uZSA9IHRydWU7Cisg ICAgfQorCisgICAgLyogSW5pdCBBVklDIGxvZ2ljYWwgQVBJQyBJRCB0YWJsZSAqLworICAgIHBn ID0gYWxsb2NfZG9taGVhcF9wYWdlKGQsIE1FTUZfbm9fb3duZXIpOworICAgIGlmICggIXBnICkK KyAgICB7CisgICAgICAgIGdkcHJpbnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAgICAgIiVk OiBBVklDIGxvZ2ljYWwgQVBJQyBJRCB0YWJsZSBjb3VsZCBub3QgYmUgYWxsb2NhdGVkLlxuIiwK KyAgICAgICAgICAgICAgICBkLT5kb21haW5faWQpOworICAgICAgICByZXQgPSAtRU5PTUVNOwor ICAgICAgICBnb3RvIGVycl9vdXQ7CisgICAgfQorICAgIG1mbiA9IHBhZ2VfdG9fbWZuKHBnKTsK KyAgICBjbGVhcl9kb21haW5fcGFnZShfbWZuKG1mbikpOworICAgIGQtPmFyY2guaHZtX2RvbWFp bi5zdm0uYXZpY19sb2dfYXBpY19pZF90YWJsZV9tZm4gPSBtZm47CisKKyAgICAvKiBJbml0IEFW SUMgcGh5c2ljYWwgQVBJQyBJRCB0YWJsZSAqLworICAgIHBnID0gYWxsb2NfZG9taGVhcF9wYWdl KGQsIE1FTUZfbm9fb3duZXIpOworICAgIGlmICggIXBnICkKKyAgICB7CisgICAgICAgIGdkcHJp bnRrKFhFTkxPR19FUlIsCisgICAgICAgICAgICAgICAgIiVkOiBBVklDIHBoeXNpY2FsIEFQSUMg SUQgdGFibGUgY291bGQgbm90IGJlIGFsbG9jYXRlZC5cbiIsCisgICAgICAgICAgICAgICAgZC0+ ZG9tYWluX2lkKTsKKyAgICAgICAgcmV0ID0gLUVOT01FTTsKKyAgICAgICAgZ290byBlcnJfb3V0 OworICAgIH0KKyAgICBtZm4gPSBwYWdlX3RvX21mbihwZyk7CisgICAgY2xlYXJfZG9tYWluX3Bh Z2UoX21mbihtZm4pKTsKKyAgICBkLT5hcmNoLmh2bV9kb21haW4uc3ZtLmF2aWNfcGh5X2FwaWNf aWRfdGFibGVfbWZuID0gbWZuOworCisgICAgcmV0dXJuIHJldDsKKyBlcnJfb3V0OgorICAgIHN2 bV9hdmljX2RvbV9kZXN0cm95KGQpOworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgc3ZtX2F2 aWNfZG9tX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCkKK3sKKyAgICBpZiAoICFzdm1fYXZpYyAp CisgICAgICAgIHJldHVybjsKKworICAgIGlmICggZC0+YXJjaC5odm1fZG9tYWluLnN2bS5hdmlj X3BoeV9hcGljX2lkX3RhYmxlX21mbiApCisgICAgeworICAgICAgICBmcmVlX2RvbWhlYXBfcGFn ZShtZm5fdG9fcGFnZShkLT5hcmNoLmh2bV9kb21haW4uc3ZtLmF2aWNfcGh5X2FwaWNfaWRfdGFi bGVfbWZuKSk7CisgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5zdm0uYXZpY19waHlfYXBpY19p ZF90YWJsZV9tZm4gPSAwOworICAgIH0KKworICAgIGlmICggZC0+YXJjaC5odm1fZG9tYWluLnN2 bS5hdmljX2xvZ19hcGljX2lkX3RhYmxlX21mbiApCisgICAgeworICAgICAgICBmcmVlX2RvbWhl YXBfcGFnZShtZm5fdG9fcGFnZShkLT5hcmNoLmh2bV9kb21haW4uc3ZtLmF2aWNfbG9nX2FwaWNf aWRfdGFibGVfbWZuKSk7CisgICAgICAgIGQtPmFyY2guaHZtX2RvbWFpbi5zdm0uYXZpY19sb2df YXBpY19pZF90YWJsZV9tZm4gPSAwOworICAgIH0KK30KKworYm9vbCBzdm1fYXZpY192Y3B1X2Vu YWJsZWQoY29uc3Qgc3RydWN0IHZjcHUgKnYpCit7CisgICAgY29uc3Qgc3RydWN0IGFyY2hfc3Zt X3N0cnVjdCAqcyA9ICZ2LT5hcmNoLmh2bV9zdm07CisgICAgY29uc3Qgc3RydWN0IHZtY2Jfc3Ry dWN0ICp2bWNiID0gcy0+dm1jYjsKKworICAgIHJldHVybiBzdm1fYXZpYyAmJiB2bWNiLT5fdmlu dHIuZmllbGRzLmF2aWNfZW5hYmxlOworfQorCitzdGF0aWMgaW5saW5lIHUzMiAqCithdmljX2dl dF9ia19wYWdlX2VudHJ5KGNvbnN0IHN0cnVjdCB2Y3B1ICp2LCB1MzIgb2Zmc2V0KQoreworICAg IGNvbnN0IHN0cnVjdCB2bGFwaWMgKnZsYXBpYyA9IHZjcHVfdmxhcGljKHYpOworICAgIGNoYXIg KnRtcDsKKworICAgIGlmICggIXZsYXBpYyB8fCAhdmxhcGljLT5yZWdzX3BhZ2UgKQorICAgICAg ICByZXR1cm4gTlVMTDsKKworICAgIHRtcCA9IChjaGFyICopcGFnZV90b192aXJ0KHZsYXBpYy0+ cmVnc19wYWdlKTsKKyAgICByZXR1cm4gKHUzMiAqKSh0bXAgKyBvZmZzZXQpOworfQorCit2b2lk IHN2bV9hdmljX3VwZGF0ZV92YXBpY19iYXIoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHVpbnQ2NF90 IGRhdGEpCit7CisgICAgY29uc3Qgc3RydWN0IGFyY2hfc3ZtX3N0cnVjdCAqcyA9ICZ2LT5hcmNo Lmh2bV9zdm07CisKKyAgICBzLT52bWNiLT5hdmljX3ZhcGljX2JhciA9IGRhdGEgJiBBVklDX1ZB UElDX0JBUl9NQVNLOworICAgIHMtPnZtY2ItPmNsZWFuYml0cy5maWVsZHMuYXZpYyA9IDA7Cit9 CisKK2ludCBzdm1fYXZpY19pbml0X3ZtY2Ioc3RydWN0IHZjcHUgKnYpCit7CisgICAgcGFkZHJf dCBtYTsKKyAgICB1MzIgKmFwaWNfaWRfcmVnOworICAgIHN0cnVjdCBhcmNoX3N2bV9zdHJ1Y3Qg KnMgPSAmdi0+YXJjaC5odm1fc3ZtOworICAgIHN0cnVjdCB2bWNiX3N0cnVjdCAqdm1jYiA9IHMt PnZtY2I7CisgICAgc3RydWN0IHN2bV9kb21haW4gKmQgPSAmdi0+ZG9tYWluLT5hcmNoLmh2bV9k b21haW4uc3ZtOworICAgIGNvbnN0IHN0cnVjdCB2bGFwaWMgKnZsYXBpYyA9IHZjcHVfdmxhcGlj KHYpOworICAgIHN0cnVjdCBhdmljX3BoeV9hcGljX2lkX2VudCBlbnRyeTsKKworICAgIGlmICgg IXN2bV9hdmljICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoICF2bGFwaWMgfHwgIXZs YXBpYy0+cmVnc19wYWdlICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICBhcGljX2lk X3JlZyA9IGF2aWNfZ2V0X2JrX3BhZ2VfZW50cnkodiwgQVBJQ19JRCk7CisgICAgaWYgKCAhYXBp Y19pZF9yZWcgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgIHMtPmF2aWNfbGFzdF9w aHlfaWQgPSBhdmljX2dldF9waHlfYXBpY19pZF9lbnQodiwgKmFwaWNfaWRfcmVnID4+IDI0KTsK KyAgICBpZiAoICFzLT5hdmljX2xhc3RfcGh5X2lkICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7 CisKKyAgICB2bWNiLT5hdmljX2JrX3BnX3BhID0gcGFnZV90b19tYWRkcih2bGFwaWMtPnJlZ3Nf cGFnZSkgJiBBVklDX0hQQV9NQVNLOworICAgIG1hID0gZC0+YXZpY19sb2dfYXBpY19pZF90YWJs ZV9tZm47CisgICAgdm1jYi0+YXZpY19sb2dfYXBpY19pZCA9IChtYSA8PCBQQUdFX1NISUZUKSAm IEFWSUNfSFBBX01BU0s7CisgICAgbWEgPSBkLT5hdmljX3BoeV9hcGljX2lkX3RhYmxlX21mbjsK KyAgICB2bWNiLT5hdmljX3BoeV9hcGljX2lkID0gKG1hIDw8IFBBR0VfU0hJRlQpICYgQVZJQ19I UEFfTUFTSzsKKyAgICB2bWNiLT5hdmljX3BoeV9hcGljX2lkIHw9IEFWSUNfUEhZX0FQSUNfSURf TUFYOworCisgICAgZW50cnkgPSAqKHMtPmF2aWNfbGFzdF9waHlfaWQpOworICAgIHNtcF9ybWIo KTsKKyAgICBlbnRyeS5ia19wZ19wdHIgPSAodm1jYi0+YXZpY19ia19wZ19wYSAmIEFWSUNfSFBB X01BU0spID4+IEFWSUNfSFBBX1NISUZUOworICAgIGVudHJ5LmlzX3J1bm5pbmcgPSAwOworICAg IGVudHJ5LnZhbGlkID0gMTsKKyAgICAqKHMtPmF2aWNfbGFzdF9waHlfaWQpID0gZW50cnk7Cisg ICAgc21wX3dtYigpOworCisgICAgc3ZtX2F2aWNfdXBkYXRlX3ZhcGljX2Jhcih2LCBBUElDX0RF RkFVTFRfUEhZU19CQVNFKTsKKworICAgIHZtY2ItPl92aW50ci5maWVsZHMuYXZpY19lbmFibGUg PSAxOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBt b2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICog dGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMgYi94ZW4vYXJjaC94ODYvaHZtL3N2 bS9zdm0uYwppbmRleCAzN2JkNmM0Li5jZWYyOWIyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYv aHZtL3N2bS9zdm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9zdm0uYwpAQCAtNDgsNiAr NDgsNyBAQAogI2luY2x1ZGUgPGFzbS9odm0vc3ZtL2FzaWQuaD4KICNpbmNsdWRlIDxhc20vaHZt L3N2bS9zdm0uaD4KICNpbmNsdWRlIDxhc20vaHZtL3N2bS92bWNiLmg+CisjaW5jbHVkZSA8YXNt L2h2bS9zdm0vYXZpYy5oPgogI2luY2x1ZGUgPGFzbS9odm0vc3ZtL2VtdWxhdGUuaD4KICNpbmNs dWRlIDxhc20vaHZtL3N2bS9pbnRyLmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9zdm0vc3ZtZGVidWcu aD4KQEAgLTExNjIsMTEgKzExNjMsMTIgQEAgdm9pZCBzdm1faG9zdF9vc3Z3X2luaXQoKQogCiBz dGF0aWMgaW50IHN2bV9kb21haW5faW5pdGlhbGlzZShzdHJ1Y3QgZG9tYWluICpkKQogewotICAg IHJldHVybiAwOworICAgIHJldHVybiBzdm1fYXZpY19kb21faW5pdChkKTsKIH0KIAogc3RhdGlj IHZvaWQgc3ZtX2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCiB7CisgICAgc3ZtX2F2 aWNfZG9tX2Rlc3Ryb3koZCk7CiB9CiAKIHN0YXRpYyBpbnQgc3ZtX3ZjcHVfaW5pdGlhbGlzZShz dHJ1Y3QgdmNwdSAqdikKQEAgLTE0NTksNiArMTQ2MSw3IEBAIGNvbnN0IHN0cnVjdCBodm1fZnVu Y3Rpb25fdGFibGUgKiBfX2luaXQgc3RhcnRfc3ZtKHZvaWQpCiAgICAgUChjcHVfaGFzX3N2bV9k ZWNvZGUsICJEZWNvZGVBc3Npc3RzIik7CiAgICAgUChjcHVfaGFzX3BhdXNlX2ZpbHRlciwgIlBh dXNlLUludGVyY2VwdCBGaWx0ZXIiKTsKICAgICBQKGNwdV9oYXNfdHNjX3JhdGlvLCAiVFNDIFJh dGUgTVNSIik7CisgICAgUChjcHVfaGFzX3N2bV9hdmljLCAiQVZJQyIpOwogI3VuZGVmIFAKIAog ICAgIGlmICggIXByaW50ZWQgKQpAQCAtMTc5OSw2ICsxODAyLDEwIEBAIHN0YXRpYyBpbnQgc3Zt X21zcl93cml0ZV9pbnRlcmNlcHQodW5zaWduZWQgaW50IG1zciwgdWludDY0X3QgbXNyX2NvbnRl bnQpCiAKICAgICBzd2l0Y2ggKCBtc3IgKQogICAgIHsKKyAgICBjYXNlIE1TUl9JQTMyX0FQSUNC QVNFOgorICAgICAgICBpZiAoIHN2bV9hdmljX3ZjcHVfZW5hYmxlZCh2KSApCisgICAgICAgICAg ICBzdm1fYXZpY191cGRhdGVfdmFwaWNfYmFyKHYsIG1zcl9jb250ZW50KTsKKyAgICAgICAgYnJl YWs7CiAgICAgY2FzZSBNU1JfSUEzMl9TWVNFTlRFUl9DUzoKICAgICBjYXNlIE1TUl9JQTMyX1NZ U0VOVEVSX0VTUDoKICAgICBjYXNlIE1TUl9JQTMyX1NZU0VOVEVSX0VJUDoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3ZtY2IuYyBiL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL3ZtY2Iu YwppbmRleCA5ZWEwMTRmLi45ZWU3ZmM3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3N2 bS92bWNiLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vdm1jYi5jCkBAIC0yOCw2ICsyOCw3 IEBACiAjaW5jbHVkZSA8YXNtL21zci1pbmRleC5oPgogI2luY2x1ZGUgPGFzbS9wMm0uaD4KICNp bmNsdWRlIDxhc20vaHZtL3N1cHBvcnQuaD4KKyNpbmNsdWRlIDxhc20vaHZtL3N2bS9hdmljLmg+ CiAjaW5jbHVkZSA8YXNtL2h2bS9zdm0vc3ZtLmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9zdm0vc3Zt ZGVidWcuaD4KIApAQCAtMjI1LDYgKzIyNiw4IEBAIHN0YXRpYyBpbnQgY29uc3RydWN0X3ZtY2Io c3RydWN0IHZjcHUgKnYpCiAgICAgICAgIHZtY2ItPl9nZW5lcmFsMV9pbnRlcmNlcHRzIHw9IEdF TkVSQUwxX0lOVEVSQ0VQVF9QQVVTRTsKICAgICB9CiAKKyAgICBzdm1fYXZpY19pbml0X3ZtY2Io dik7CisKICAgICB2bWNiLT5jbGVhbmJpdHMuYnl0ZXMgPSAwOwogCiAgICAgcmV0dXJuIDA7CmRp ZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vYXZpYy5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9odm0vc3ZtL2F2aWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4xNmI0MzNjCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0v c3ZtL2F2aWMuaApAQCAtMCwwICsxLDQwIEBACisjaWZuZGVmIF9TVk1fQVZJQ19IXworI2RlZmlu ZSBfU1ZNX0FWSUNfSF8KKworZW51bSBhdmljX2luY21wX2lwaV9lcnJfY29kZSB7CisgICAgQVZJ Q19JTkNNUF9JUElfRVJSX0lOVkFMSURfSU5UX1RZUEUsCisgICAgQVZJQ19JTkNNUF9JUElfRVJS X1RBUkdFVF9OT1RfUlVOLAorICAgIEFWSUNfSU5DTVBfSVBJX0VSUl9JTlZfVEFSR0VULAorICAg IEFWSUNfSU5DTVBfSVBJX0VSUl9JTlZfQktfUEFHRSwKK307CisKK3N0cnVjdCBfX2F0dHJpYnV0 ZV9fICgoX19wYWNrZWRfXykpCithdmljX2xvZ19hcGljX2lkX2VudCB7CisgICAgdTMyIGd1ZXN0 X3BoeV9hcGljX2lkIDogODsKKyAgICB1MzIgcmVzICAgICAgICAgICAgICAgOiAyMzsKKyAgICB1 MzIgdmFsaWQgICAgICAgICAgICAgOiAxOworfTsKKworc3RydWN0IF9fYXR0cmlidXRlX18gKChf X3BhY2tlZF9fKSkKK2F2aWNfcGh5X2FwaWNfaWRfZW50IHsKKyAgICB1NjQgaG9zdF9waHlfYXBp Y19pZCAgOiA4OworICAgIHU2NCByZXMxICAgICAgICAgICAgICA6IDQ7CisgICAgdTY0IGJrX3Bn X3B0ciAgICAgICAgIDogNDA7CisgICAgdTY0IHJlczIgICAgICAgICAgICAgIDogMTA7CisgICAg dTY0IGlzX3J1bm5pbmcgICAgICAgIDogMTsKKyAgICB1NjQgdmFsaWQgICAgICAgICAgICAgOiAx OworfTsKKworZXh0ZXJuIGJvb2xfdCBzdm1fYXZpYzsKKworaW50IHN2bV9hdmljX2RvbV9pbml0 KHN0cnVjdCBkb21haW4gKmQpOwordm9pZCBzdm1fYXZpY19kb21fZGVzdHJveShzdHJ1Y3QgZG9t YWluICpkKTsKKworaW50IHN2bV9hdmljX2luaXRfdmNwdShzdHJ1Y3QgdmNwdSAqdik7Cit2b2lk IHN2bV9hdmljX2Rlc3Ryb3lfdmNwdShzdHJ1Y3QgdmNwdSAqdik7Citib29sX3Qgc3ZtX2F2aWNf dmNwdV9lbmFibGVkKGNvbnN0IHN0cnVjdCB2Y3B1ICp2KTsKKwordm9pZCBzdm1fYXZpY191cGRh dGVfdmFwaWNfYmFyKGNvbnN0IHN0cnVjdCB2Y3B1ICp2LHVpbnQ2NF90IGRhdGEpOworaW50IHN2 bV9hdmljX2luaXRfdm1jYihzdHJ1Y3QgdmNwdSAqdik7CisKKyNlbmRpZiAvKiBfU1ZNX0FWSUNf SF8gKi8KZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9zdm0uaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS9zdm0uaAppbmRleCBjOTU0YjdlLi5mZWE2MWJiIDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vc3ZtLmgKKysrIGIveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL3N2bS5oCkBAIC04MSw2ICs4MSw3IEBAIGV4dGVybiB1MzIg c3ZtX2ZlYXR1cmVfZmxhZ3M7CiAjZGVmaW5lIFNWTV9GRUFUVVJFX0ZMVVNIQllBU0lEICAgIDYg LyogVExCIGZsdXNoIGJ5IEFTSUQgc3VwcG9ydCAqLwogI2RlZmluZSBTVk1fRkVBVFVSRV9ERUNP REVBU1NJU1RTICA3IC8qIERlY29kZSBhc3Npc3RzIHN1cHBvcnQgKi8KICNkZWZpbmUgU1ZNX0ZF QVRVUkVfUEFVU0VGSUxURVIgICAxMCAvKiBQYXVzZSBpbnRlcmNlcHQgZmlsdGVyIHN1cHBvcnQg Ki8KKyNkZWZpbmUgU1ZNX0ZFQVRVUkVfQVZJQyAgICAgICAgICAxMyAvKiBBVklDIHN1cHBvcnQg Ki8KIAogI2RlZmluZSBjcHVfaGFzX3N2bV9mZWF0dXJlKGYpIHRlc3RfYml0KGYsICZzdm1fZmVh dHVyZV9mbGFncykKICNkZWZpbmUgY3B1X2hhc19zdm1fbnB0ICAgICAgIGNwdV9oYXNfc3ZtX2Zl YXR1cmUoU1ZNX0ZFQVRVUkVfTlBUKQpAQCAtOTEsNiArOTIsNyBAQCBleHRlcm4gdTMyIHN2bV9m ZWF0dXJlX2ZsYWdzOwogI2RlZmluZSBjcHVfaGFzX3N2bV9kZWNvZGUgICAgY3B1X2hhc19zdm1f ZmVhdHVyZShTVk1fRkVBVFVSRV9ERUNPREVBU1NJU1RTKQogI2RlZmluZSBjcHVfaGFzX3BhdXNl X2ZpbHRlciAgY3B1X2hhc19zdm1fZmVhdHVyZShTVk1fRkVBVFVSRV9QQVVTRUZJTFRFUikKICNk ZWZpbmUgY3B1X2hhc190c2NfcmF0aW8gICAgIGNwdV9oYXNfc3ZtX2ZlYXR1cmUoU1ZNX0ZFQVRV UkVfVFNDUkFURU1TUikKKyNkZWZpbmUgY3B1X2hhc19zdm1fYXZpYyAgICAgIGNwdV9oYXNfc3Zt X2ZlYXR1cmUoU1ZNX0ZFQVRVUkVfQVZJQykKIAogI2RlZmluZSBTVk1fUEFVU0VGSUxURVJfSU5J VCAgICAzMDAwCiAKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS92bWNi LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9zdm0vdm1jYi5oCmluZGV4IDQzY2I5OGUuLmQz ZDA0NWYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3N2bS92bWNiLmgKKysr IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vc3ZtL3ZtY2IuaApAQCAtNDk2LDYgKzQ5NiwyNCBA QCBzdHJ1Y3QgX19wYWNrZWQgdm1jYl9zdHJ1Y3QgewogfTsKIAogc3RydWN0IHN2bV9kb21haW4g eworICAgIC8qCisgICAgICogVGhpcyBwZXItZG9tYWluIHRhYmxlIGlzIHVzZWQgYnkgdGhlIGhh cmR3YXJlIHRvIGxvY2F0ZQorICAgICAqIHRoZSB2QVBJQyBiYWNraW5nIHBhZ2UgdG8gYmUgdXNl ZCB0byBkZWxpdmVyIGludGVycnVwdHMKKyAgICAgKiBiYXNlZCBvbiB0aGUgZ3Vlc3QgcGh5c2lj YWwgQVBJQyBJRC4KKyAgICAgKi8KKyAgICBwYWRkcl90IGF2aWNfcGh5X2FwaWNfaWRfdGFibGVf bWZuOworCisgICAgLyoKKyAgICAgKiBUaGlzIHBlci1kb21haW4gdGFibGUgaXMgdXNlZCBieSB0 aGUgaGFyZHdhcmUgdG8gbWFwCisgICAgICogbG9naWNhbGx5IGFkZHJlc3NlZCBpbnRlcnJ1cHQg cmVxdWVzdHMgKHcvIGd1ZXN0IGxvZ2ljYWwgQVBJQyBpZCkKKyAgICAgKiB0byB0aGUgZ3Vlc3Qg cGh5c2ljYWwgQVBJQyBJRC4KKyAgICAgKi8KKyAgICBwYWRkcl90IGF2aWNfbG9nX2FwaWNfaWRf dGFibGVfbWZuOworCisgICAgdTMyIGF2aWNfbWF4X3ZjcHVfaWQ7CisgICAgYm9vbCBhdmljX2Fj Y2Vzc19wYWdlX2RvbmU7CisgICAgc3BpbmxvY2tfdCBhdmljX2xkcl9tb2RlX2xvY2s7CisgICAg dTMyIGF2aWNfbGRyX21vZGU7CiB9OwogCiBzdHJ1Y3QgYXJjaF9zdm1fc3RydWN0IHsKQEAgLTUy OSw2ICs1NDcsOSBAQCBzdHJ1Y3QgYXJjaF9zdm1fc3RydWN0IHsKICAgICAgICAgdTY0IGxlbmd0 aDsKICAgICAgICAgdTY0IHN0YXR1czsKICAgICB9IG9zdnc7CisKKyAgICBzdHJ1Y3QgYXZpY19w aHlfYXBpY19pZF9lbnQgKmF2aWNfbGFzdF9waHlfaWQ7CisgICAgdTMyIGF2aWNfbGFzdF9sZHI7 CiB9OwogCiBzdHJ1Y3Qgdm1jYl9zdHJ1Y3QgKmFsbG9jX3ZtY2Iodm9pZCk7Ci0tIAoxLjkuMQoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=