From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kai Huang Subject: [PATCH 03/15] xen: x86: add early stage SGX feature detection Date: Sun, 9 Jul 2017 20:09:04 +1200 Message-ID: References: <4b8baf9779038897e6ba2ed4ac0a3e9663db2756.1499586046.git.kai.huang@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <4b8baf9779038897e6ba2ed4ac0a3e9663db2756.1499586046.git.kai.huang@linux.intel.com> In-Reply-To: References: 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: andrew.cooper3@citrix.com, kevin.tian@intel.com, jbeulich@suse.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGVhcmx5IHN0YWdlIFNHWCBmZWF0dXJlIGRldGVjdGlvbiB2aWEgU0dY IENQVUlEIDB4MTIuIEZ1bmN0aW9uCmRldGVjdF9zZ3ggaXMgYWRkZWQgdG8gZGV0ZWN0IFNHWCBp bmZvIG9uIGVhY2ggQ1BVIChjYWxsZWQgZnJvbSB2bXhfY3B1X3VwKS4KU0RNIHNheXMgU0dYIGlu Zm8gcmV0dXJuZWQgYnkgQ1BVSUQgaXMgcGVyLXRocmVhZCwgYW5kIHdlIGNhbm5vdCBhc3N1bWUg YWxsCnRocmVhZHMgd2lsbCByZXR1cm4gdGhlIHNhbWUgU0dYIGluZm8sIHNvIHdlIGhhdmUgdG8g ZGV0ZWN0IFNHWCBmb3IgZWFjaCBDUFUuCkZvciBzaW1wbGljaXR5LCBjdXJyZW50bHkgU0dYIGlz IG9ubHkgc3VwcG9ydGVkIHdoZW4gYWxsIENQVXMgcmVwb3J0cyB0aGUgc2FtZQpTR1ggaW5mby4K ClNETSBhbHNvIHNheXMgaXQncyBwb3NzaWJsZSB0byBoYXZlIG11bHRpcGxlIEVQQyBzZWN0aW9u cyBidXQgdGhpcyBpcyBvbmx5IGZvcgptdWx0aXBsZS1zb2NrZXQgc2VydmVyLCB3aGljaCB3ZSBk b24ndCBzdXBwb3J0IG5vdyAodGhlcmUgYXJlIG90aGVyIHRoaW5ncwpuZWVkIHRvIGJlIGRvbmUs IGV4LCBOVU1BIEVQQywgc2NoZWR1bGluZywgZXRjLCBhcyB3ZWxsKSwgc28gY3VycmVudGx5IG9u bHkKb25lIEVQQyBpcyBzdXBwb3J0ZWQuCgpEZWRpY2F0ZWQgZmlsZXMgc2d4LmMgYW5kIHNneC5o IGFyZSBhZGRlZCAodW5kZXIgdm14IGRpcmVjdG9yeSBhcyBTR1ggaXMgSW50ZWwKc3BlY2lmaWMp IGZvciBidWxrIG9mIGFib3ZlIFNHWCBkZXRlY3Rpb24gY29kZSBkZXRlY3Rpb24gY29kZSwgYW5k IGZvciBmdXJ0aGVyClNHWCBjb2RlIGFzIHdlbGwuCgpTaWduZWQtb2ZmLWJ5OiBLYWkgSHVhbmcg PGthaS5odWFuZ0BsaW51eC5pbnRlbC5jb20+Ci0tLQogeGVuL2FyY2gveDg2L2h2bS92bXgvTWFr ZWZpbGUgICAgIHwgICAxICsKIHhlbi9hcmNoL3g4Ni9odm0vdm14L3NneC5jICAgICAgICB8IDIw OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2h2 bS92bXgvdm1jcy5jICAgICAgIHwgICA0ICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvY3B1ZmVhdHVy ZS5oICB8ICAgMSArCiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92bXgvc2d4LmggfCAgNDUgKysr KysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDI1OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAx MDA2NDQgeGVuL2FyY2gveDg2L2h2bS92bXgvc2d4LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4v aW5jbHVkZS9hc20teDg2L2h2bS92bXgvc2d4LmgKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv aHZtL3ZteC9NYWtlZmlsZSBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L01ha2VmaWxlCmluZGV4IDA0 YTI5Y2U1OWQuLmY2YmNmMGQxNDMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L01h a2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L01ha2VmaWxlCkBAIC00LDMgKzQsNCBA QCBvYmoteSArPSByZWFsbW9kZS5vCiBvYmoteSArPSB2bWNzLm8KIG9iai15ICs9IHZteC5vCiBv YmoteSArPSB2dm14Lm8KK29iai15ICs9IHNneC5vCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYv aHZtL3ZteC9zZ3guYyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3NneC5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjZiNDE0NjkzNzEKLS0tIC9kZXYvbnVsbAorKysgYi94 ZW4vYXJjaC94ODYvaHZtL3ZteC9zZ3guYwpAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIEludGVs IFNvZnR3YXJlIEd1YXJkIEV4dGVuc2lvbnMgc3VwcG9ydAorICoKKyAqIEF1dGhvcjogS2FpIEh1 YW5nIDxrYWkuaHVhbmdAbGludXguaW50ZWwuY29tPgorICovCisKKyNpbmNsdWRlIDxhc20vY3B1 ZmVhdHVyZS5oPgorI2luY2x1ZGUgPGFzbS9tc3ItaW5kZXguaD4KKyNpbmNsdWRlIDxhc20vbXNy Lmg+CisjaW5jbHVkZSA8YXNtL2h2bS92bXgvc2d4Lmg+CisjaW5jbHVkZSA8YXNtL2h2bS92bXgv dm1jcy5oPgorCitzdGF0aWMgc3RydWN0IHNneF9jcHVpbmZvIF9fcmVhZF9tb3N0bHkgc2d4X2Nw dWRhdGFbTlJfQ1BVU107CitzdGF0aWMgc3RydWN0IHNneF9jcHVpbmZvIF9fcmVhZF9tb3N0bHkg Ym9vdF9zZ3hfY3B1ZGF0YTsKKworc3RhdGljIGJvb2xfdCBzZ3hfZW5hYmxlZF9pbl9iaW9zKHZv aWQpCit7CisgICAgdWludDY0X3QgdmFsLCBzZ3hfZW5hYmxlZCA9IElBMzJfRkVBVFVSRV9DT05U Uk9MX1NHWF9FTkFCTEUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQTMyX0ZF QVRVUkVfQ09OVFJPTF9MT0NLOworCisgICAgcmRtc3JsKE1TUl9JQTMyX0ZFQVRVUkVfQ09OVFJP TCwgdmFsKTsKKworICAgIHJldHVybiAodmFsICYgc2d4X2VuYWJsZWQpID09IHNneF9lbmFibGVk OworfQorCitzdGF0aWMgdm9pZCBfX2RldGVjdF9zZ3goaW50IGNwdSkKK3sKKyAgICBzdHJ1Y3Qg c2d4X2NwdWluZm8gKnNneGluZm8gPSAmc2d4X2NwdWRhdGFbY3B1XTsKKyAgICB1MzIgZWF4LCBl YngsIGVjeCwgZWR4OworCisgICAgbWVtc2V0KHNneGluZm8sIDAsIHNpemVvZigqc2d4aW5mbykp OworCisgICAgLyoKKyAgICAgKiBJbiByZWFsaXR5IGlmIFNHWCBpcyBub3QgZW5hYmxlZCBpbiBC SU9TLCBTR1ggQ1BVSUQgc2hvdWxkIHJlcG9ydAorICAgICAqIGludmFsaWQgU0dYIGluZm8sIGJ1 dCB3ZSBkbyB0aGUgY2hlY2sgYW55d2F5IHRvIG1ha2Ugc3VyZS4KKyAgICAgKi8KKyAgICBpZiAo ICFzZ3hfZW5hYmxlZF9pbl9iaW9zKCkgKQorICAgIHsKKyAgICAgICAgcHJpbnRrKCJDUFUlZDog U0dYIGRpc2FibGVkIGluIEJJT1MuXG4iLCBjcHUpOworICAgICAgICBnb3RvIG5vdF9zdXBwb3J0 ZWQ7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBDUFVJRC4weDEyLjB4MDoKKyAgICAgKgorICAg ICAqICBFQVggWzBdOiAgICB3aGV0aGVyIFNHWDEgaXMgc3VwcG9ydGVkLgorICAgICAqICAgICAg WzFdOiAgICB3aGV0aGVyIFNHWDIgaXMgc3VwcG9ydGVkLgorICAgICAqICBFQlggWzMxOjBdOiBt aXNjc2VsZWN0CisgICAgICogIEVDWCBbMzE6MF06IHJlc2VydmVkCisgICAgICogIEVEWCBbNzow XTogIE1heEVuY2xhdmVTaXplX05vdDY0CisgICAgICogICAgICBbMTU6OF06IE1heEVuY2xhdmVT aXplXzY0CisgICAgICovCisgICAgY3B1aWRfY291bnQoU0dYX0NQVUlELCAweDAsICZlYXgsICZl YngsICZlY3gsICZlZHgpOworICAgIHNneGluZm8tPmNhcCA9IGVheCAmIChTR1hfQ0FQX1NHWDEg fCBTR1hfQ0FQX1NHWDIpOworICAgIHNneGluZm8tPm1pc2NzZWxlY3QgPSBlYng7CisgICAgc2d4 aW5mby0+bWF4X2VuY2xhdmVfc2l6ZTMyID0gZWR4ICYgMHhmZjsKKyAgICBzZ3hpbmZvLT5tYXhf ZW5jbGF2ZV9zaXplNjQgPSAoZWR4ICYgMHhmZjAwKSA+PiA4OworCisgICAgaWYgKCAhKGVheCAm IFNHWF9DQVBfU0dYMSkgKQorICAgIHsKKyAgICAgICAgLyogV2UgbWF5IHJlYWNoIGhlcmUgaWYg QklPUyBkb2Vzbid0IGVuYWJsZSBTR1ggKi8KKyAgICAgICAgcHJpbnRrKCJDUFUlZDogQ1BVSUQu MHgxMi4weDAgcmVwb3J0cyBub3QgU0dYIHN1cHBvcnQuXG4iLCBjcHUpOworICAgICAgICBnb3Rv IG5vdF9zdXBwb3J0ZWQ7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBDUFVJRC4weDEyLjB4MToK KyAgICAgKgorICAgICAqICBFQVggWzMxOjBdOiBiaXRtYXNrIG9mIDEtc2V0dGluZyBvZiBTRUNT LkFUVFJJQlVURVNbMzE6MF0KKyAgICAgKiAgRUJYIFszMTowXTogYml0bWFzayBvZiAxLXNldHRp bmcgb2YgU0VDUy5BVFRSSUJVVEVTWzYzOjMyXQorICAgICAqICBFQ1ggWzMxOjBdOiBiaXRtYXNr IG9mIDEtc2V0dGluZyBvZiBTRUNTLkFUVFJJQlVURVNbOTU6NjRdCisgICAgICogIEVEWCBbMzE6 MF06IGJpdG1hc2sgb2YgMS1zZXR0aW5nIG9mIFNFQ1MuQVRUUklCVVRFU1sxMjc6OTZdCisgICAg ICovCisgICAgY3B1aWRfY291bnQoU0dYX0NQVUlELCAweDEsICZlYXgsICZlYngsICZlY3gsICZl ZHgpOworICAgIHNneGluZm8tPnNlY3NfYXR0cl9iaXRtYXNrWzBdID0gZWF4OworICAgIHNneGlu Zm8tPnNlY3NfYXR0cl9iaXRtYXNrWzFdID0gZWJ4OworICAgIHNneGluZm8tPnNlY3NfYXR0cl9i aXRtYXNrWzJdID0gZWN4OworICAgIHNneGluZm8tPnNlY3NfYXR0cl9iaXRtYXNrWzNdID0gZWR4 OworCisgICAgLyoKKyAgICAgKiBDUFVJRC4weDEyLjB4MjoKKyAgICAgKgorICAgICAqICBFQVgg WzM6MF06ICAgICAgMDAwMDogdGhpcyBzdWItbGVhZiBpcyBpbnZhbGlkCisgICAgICogICAgICAg ICAgICAgICAgICAwMDAxOiB0aGlzIHN1Yi1sZWFmIGVudW1lcmF0ZXMgRVBDIHJlc291cmNlCisg ICAgICogICAgICBbMTE6NF06ICAgICByZXNlcnZlZAorICAgICAqICAgICAgWzMxOjEyXTogICAg Yml0cyAzMToxMiBvZiBwaHlzaWNhbCBhZGRyZXNzIG9mIEVQQyBiYXNlICh3aGVuCisgICAgICog ICAgICAgICAgICAgICAgICBFQVhbMzowXSBpcyAwMDAxLCB3aGljaCBhcHBsaWVzIHRvIGZvbGxv d2luZykKKyAgICAgKiAgRUJYIFsxOTowXTogICAgIGJpdHMgNTE6MzIgb2YgcGh5c2ljYWwgYWRk cmVzcyBvZiBFUEMgYmFzZQorICAgICAqICAgICAgWzMxOjIwXTogICAgcmVzZXJ2ZWQKKyAgICAg KiAgRUNYIFszOjBdOiAgICAgIDAwMDA6IEVEWDpFQ1ggYXJlIDAKKyAgICAgKiAgICAgICAgICAg ICAgICAgIDAwMDE6IHRoaXMgaXMgRVBDIHNlY3Rpb24uCisgICAgICogICAgICBbMTE6NF06ICAg ICByZXNlcnZlZAorICAgICAqICAgICAgWzMxOjEyXTogICAgYml0cyAzMToxMiBvZiBFUEMgc2l6 ZQorICAgICAqICBFRFggWzE5OjBdOiAgICAgYml0cyA1MTozMiBvZiBFUEMgc2l6ZQorICAgICAq ICAgICAgWzMxOjIwXTogICAgcmVzZXJ2ZWQKKyAgICAgKgorICAgICAqICBUT0RPOiBTbyBmYXIg YXNzdW1lIHRoZXJlJ3Mgb25seSBvbmUgRVBDIHJlc291cmNlLgorICAgICAqLworICAgIGNwdWlk X2NvdW50KFNHWF9DUFVJRCwgMHgyLCAmZWF4LCAmZWJ4LCAmZWN4LCAmZWR4KTsKKyAgICBpZiAo ICEoZWF4ICYgMHgxKSB8fCAhKGVjeCAmIDB4MSkgKQorICAgIHsKKyAgICAgICAgLyogV2UgbWF5 IHJlYWNoIGhlcmUgaWYgQklPUyBkb2Vzbid0IGVuYWJsZSBTR1ggKi8KKyAgICAgICAgcHJpbnRr KCJDUFUlZDogQ1BVSUQuMHgxMi4weDIgcmVwb3J0cyBpbnZhbGlkIEVQQyByZXNvdXJjZS5cbiIs IGNwdSk7CisgICAgICAgIGdvdG8gbm90X3N1cHBvcnRlZDsKKyAgICB9CisgICAgc2d4aW5mby0+ ZXBjX2Jhc2UgPSAoKCh1NjQpKGVieCAmIDB4ZmZmZmYpKSA8PCAzMikgfCAoZWF4ICYgMHhmZmZm ZjAwMCk7CisgICAgc2d4aW5mby0+ZXBjX3NpemUgPSAoKCh1NjQpKGVkeCAmIDB4ZmZmZmYpKSA8 PCAzMikgfCAoZWN4ICYgMHhmZmZmZjAwMCk7CisKKyAgICByZXR1cm47CisKK25vdF9zdXBwb3J0 ZWQ6CisgICAgbWVtc2V0KHNneGluZm8sIDAsIHNpemVvZigqc2d4aW5mbykpOworfQorCit2b2lk IGRldGVjdF9zZ3goaW50IGNwdSkKK3sKKyAgICAvKiBDYWxsZXIgKHZteF9jcHVfdXApIGhhcyBj aGVja2VkIGNwdV9oYXNfdm14X2VuY2xzICovCisgICAgaWYgKCAhY3B1X2hhc19zZ3ggfHwgYm9v dF9jcHVfZGF0YS5jcHVpZF9sZXZlbCA8IFNHWF9DUFVJRCApCisgICAgeworICAgICAgICBzZXR1 cF9jbGVhcl9jcHVfY2FwKFg4Nl9GRUFUVVJFX1NHWCk7CisgICAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgICBfX2RldGVjdF9zZ3goY3B1KTsKK30KKworc3RhdGljIHZvaWQgX19pbml0IGRpc2Fi bGVfc2d4KHZvaWQpCit7CisgICAgbWVtc2V0KCZib290X3NneF9jcHVkYXRhLCAwLCBzaXplb2Yg KHN0cnVjdCBzZ3hfY3B1aW5mbykpOworICAgIC8qCisgICAgICogWDg2X0ZFQVRVUkVfU0dYIGlz IGNsZWFyZWQgaW4gYm9vdF9jcHVfZGF0YSBzbyB0aGF0IGNwdV9oYXNfc2d4CisgICAgICogY2Fu IGJlIHVzZWQgYW55d2hlcmUgdG8gY2hlY2sgd2hldGhlciBTR1ggaXMgc3VwcG9ydGVkIGJ5IFhl bi4KKyAgICAgKgorICAgICAqIEZJWE1FOiBhbHNvIGFkanVzdCBib290X2NwdV9kYXRhLmNwdWlk X2xldmVsID8KKyAgICAgKi8KKyAgICBzZXR1cF9jbGVhcl9jcHVfY2FwKFg4Nl9GRUFUVVJFX1NH WCk7Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBwcmludF9zZ3hfY3B1aW5mbyhzdHJ1Y3Qgc2d4 X2NwdWluZm8gKnNneGluZm8pCit7CisgICAgcHJpbnRrKCJTR1g6IFxuIgorICAgICAgICAgICAi XHRDQVA6ICVzLCVzXG4iCisgICAgICAgICAgICJcdEVQQzogWzB4JSJQUkl4NjQiLCAweCUiUFJJ eDY0IilcbiIsCisgICAgICAgICAgIGJvb3Rfc2d4X2NwdWRhdGEuY2FwICYgU0dYX0NBUF9TR1gx ID8gIlNHWDEiIDogIiIsCisgICAgICAgICAgIGJvb3Rfc2d4X2NwdWRhdGEuY2FwICYgU0dYX0NB UF9TR1gyID8gIlNHWDIiIDogIiIsCisgICAgICAgICAgIGJvb3Rfc2d4X2NwdWRhdGEuZXBjX2Jh c2UsCisgICAgICAgICAgIGJvb3Rfc2d4X2NwdWRhdGEuZXBjX2Jhc2UgKyBib290X3NneF9jcHVk YXRhLmVwY19zaXplKTsKK30KKworLyoKKyAqIENoZWNrIFNHWCBDUFVJRCBpbmZvIGFsbCBmb3Ig YWxsIENQVXMsIGFuZCBvbmx5IHN1cHBvcnQgU0dYIHdoZW4gYWxsIENQVXMKKyAqIHJlcG9ydCB0 aGUgc2FtZSBTR1ggaW5mby4gU0RNICgzNy43LjIgSW50ZWwgU0dYIFJlc291cmNlIEVudW1lcmF0 aW9uIExlYXZlcykKKyAqIHNheXMgInNvZnR3YXJlIHNob3VsZCBub3QgYXNzdW1lIHRoYXQgaWYg SW50ZWwgU0dYIGluc3RydWN0aW9ucyBhcmUKKyAqIHN1cHBvcnRlZCBvbiBvbmUgaGFyZHdhcmUg dGhyZWFkLCB0aGV5IGFyZSBhbHNvIHN1cHBvcnRlZCBlbHNld2hlcmUuIi4KKyAqIEZvciBzaW1w bGljaXR5LCB3ZSBvbmx5IHN1cHBvcnQgU0dYIHdoZW4gYWxsIENQVXMgcmVwb3J0cyBjb25zaXN0 ZW50IFNHWAorICogaW5mby4KKyAqCisgKiBib290X3NneF9jcHVkYXRhIGlzIHNldCB0byBzdG9y ZSB0aGUgKmNvbW1vbiogU0dYIENQVUlEIGluZm8uCisgKi8KK3N0YXRpYyBib29sX3QgX19pbml0 IGNoZWNrX3NneF9jb25zaXN0ZW5jeSh2b2lkKQoreworICAgIGludCBpOworCisgICAgZm9yX2Vh Y2hfb25saW5lX2NwdSAoIGkgKQorICAgIHsKKyAgICAgICAgc3RydWN0IHNneF9jcHVpbmZvICpz ID0gJnNneF9jcHVkYXRhW2ldOworCisgICAgICAgIGlmICggbWVtY21wKCZib290X3NneF9jcHVk YXRhLCBzLCBzaXplb2YgKCpzKSkgKQorICAgICAgICB7CisgICAgICAgICAgICBwcmludGsoIlNH WCBpbmNvbnNpc3RlbmN5IGJldHdlZW4gQ1BVIDAgYW5kIENQVSAlZC4gIgorICAgICAgICAgICAg ICAgICAgICAiRGlzYWJsZSBTR1guXG4iLCBpKTsKKyAgICAgICAgICAgIG1lbXNldCgmYm9vdF9z Z3hfY3B1ZGF0YSwgMCwgIHNpemVvZiAoKnMpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW50IF9f aW5pdCBzZ3hfaW5pdCh2b2lkKQoreworICAgIC8qIEFzc3VtZSBDUFUgMCBpcyBhbHdheXMgb25s aW5lICovCisgICAgYm9vdF9zZ3hfY3B1ZGF0YSA9IHNneF9jcHVkYXRhWzBdOworCisgICAgaWYg KCAhKGJvb3Rfc2d4X2NwdWRhdGEuY2FwICYgU0dYX0NBUF9TR1gxKSApCisgICAgICAgIGdvdG8g bm90X3N1cHBvcnRlZDsKKworICAgIGlmICggIWNoZWNrX3NneF9jb25zaXN0ZW5jeSgpICkKKyAg ICAgICAgZ290byBub3Rfc3VwcG9ydGVkOworCisgICAgcHJpbnRfc2d4X2NwdWluZm8oJmJvb3Rf c2d4X2NwdWRhdGEpOworCisgICAgcmV0dXJuIDA7Citub3Rfc3VwcG9ydGVkOgorICAgIGRpc2Fi bGVfc2d4KCk7CisgICAgcmV0dXJuIC1FSU5WQUw7Cit9CitfX2luaXRjYWxsKHNneF9pbml0KTsK KworLyoKKyAqIExvY2FsIHZhcmlhYmxlczoKKyAqIG1vZGU6IEMKKyAqIGMtZmlsZS1zdHlsZTog IkJTRCIKKyAqIGMtYmFzaWMtb2Zmc2V0OiA0CisgKiB0YWItd2lkdGg6IDQKKyAqIGluZGVudC10 YWJzLW1vZGU6IG5pbAorICogRW5kOgorICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZt L3ZteC92bWNzLmMgYi94ZW4vYXJjaC94ODYvaHZtL3ZteC92bWNzLmMKaW5kZXggYWU3ZTZmOTMy MS4uNTE4MTMzYmJmZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2h2bS92bXgvdm1jcy5jCisr KyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZtY3MuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1 ZGUgPGFzbS9zaGFkb3cuaD4KICNpbmNsdWRlIDxhc20vdGJvb3QuaD4KICNpbmNsdWRlIDxhc20v YXBpYy5oPgorI2luY2x1ZGUgPGFzbS9odm0vdm14L3NneC5oPgogCiBzdGF0aWMgYm9vbF90IF9f cmVhZF9tb3N0bHkgb3B0X3ZwaWRfZW5hYmxlZCA9IDE7CiBib29sZWFuX3BhcmFtKCJ2cGlkIiwg b3B0X3ZwaWRfZW5hYmxlZCk7CkBAIC02OTYsNiArNjk3LDkgQEAgaW50IHZteF9jcHVfdXAodm9p ZCkKIAogICAgIHZteF9waV9wZXJfY3B1X2luaXQoY3B1KTsKIAorICAgIGlmICggY3B1X2hhc192 bXhfZW5jbHMgKQorICAgICAgICBkZXRlY3Rfc2d4KGNwdSk7CisKICAgICByZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9jcHVmZWF0dXJlLmggYi94ZW4vaW5j bHVkZS9hc20teDg2L2NwdWZlYXR1cmUuaAppbmRleCA4NGNjNTFkMmJkLi45NzkzZjhjMWM1IDEw MDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2NwdWZlYXR1cmUuaAorKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L2NwdWZlYXR1cmUuaApAQCAtODUsNiArODUsNyBAQAogCiAvKiBDUFVJRCBs ZXZlbCAweDAwMDAwMDA3OjAuZWJ4ICovCiAjZGVmaW5lIGNwdV9oYXNfZnNnc2Jhc2UgICAgICAg IGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9GU0dTQkFTRSkKKyNkZWZpbmUgY3B1X2hhc19zZ3gg ICAgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1NHWCkKICNkZWZpbmUgY3B1X2hh c19ibWkxICAgICAgICAgICAgYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0JNSTEpCiAjZGVmaW5l IGNwdV9oYXNfaGxlICAgICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9ITEUpCiAj ZGVmaW5lIGNwdV9oYXNfYXZ4MiAgICAgICAgICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9B VlgyKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdm14L3NneC5oIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9odm0vdm14L3NneC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLjU0MTRkODIzN2UKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vaW5jbHVkZS9h c20teDg2L2h2bS92bXgvc2d4LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIEludGVsIFNvZnR3 YXJlIEd1YXJkIEV4dGVuc2lvbnMgc3VwcG9ydAorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNiwg SW50ZWwgQ29ycG9yYXRpb24uCisgKgorICogQXV0aG9yOiBLYWkgSHVhbmcgPGthaS5odWFuZ0Bs aW51eC5pbnRlbC5jb20+CisgKi8KKyNpZm5kZWYgX19BU01fWDg2X0hWTV9WTVhfU0dYX0hfXwor I2RlZmluZSBfX0FTTV9YODZfSFZNX1ZNWF9TR1hfSF9fCisKKyNpbmNsdWRlIDx4ZW4vY29uZmln Lmg+CisjaW5jbHVkZSA8eGVuL3R5cGVzLmg+CisjaW5jbHVkZSA8eGVuL2luaXQuaD4KKyNpbmNs dWRlIDxhc20vcHJvY2Vzc29yLmg+CisKKyNkZWZpbmUgU0dYX0NQVUlEIDB4MTIKKworLyoKKyAq IFNHWCBpbmZvIHJlcG9ydGVkIGJ5IFNHWCBDUFVJRC4KKyAqCisgKiBUT0RPOgorICoKKyAqIFNE TSAoMzcuNy4yIEludGVsIFNHWCBSZXNvdXJjZSBFbnVtZXJhdGlvbiBMZWF2ZXMpIGFjdHVhbGx5 IHNheXMgaXQncworICogcG9zc2libGUgdGhlcmUgYXJlIG11bHRpcGxlIEVQQyByZXNvdXJjZXMg b24gdGhlIG1hY2hpbmUgKENQVUlELjB4MTIsCisgKiBFQ1ggc3RhcnRpbmcgd2l0aCAweDIgZW51 bWVyYXRlcyBhdmFpbGFibGUgRVBDIHJlc291cmNlcyB1bnRpbCBpbnZhbGlkCisgKiBFUEMgcmVz b3VyY2UgaXMgcmV0dXJuZWQpLiBCdXQgdGhpcyBpcyBvbmx5IGZvciBtdWx0aXBsZSBzb2NrZXQg c2VydmVyLAorICogd2hpY2ggd2UgY3VycmVudCBkb24ndCBzdXBwb3J0IG5vdyAodGhlcmUgYXJl IGFkZGl0aW9uYWwgdGhpbmdzIG5lZWQgdG8KKyAqIGJlIGRvbmUgYXMgd2VsbCkuIFNvIGZhciBm b3Igc2ltcGxpY2l0eSB3ZSBhc3N1bWUgdGhlcmUgaXMgb25seSBvbmUgRVBDLgorICovCitzdHJ1 Y3Qgc2d4X2NwdWluZm8geworI2RlZmluZSBTR1hfQ0FQX1NHWDEgICAgKDFVTCA8PCAwKQorI2Rl ZmluZSBTR1hfQ0FQX1NHWDIgICAgKDFVTCA8PCAxKQorICAgIHVpbnQzMl90IGNhcDsKKyAgICB1 aW50MzJfdCBtaXNjc2VsZWN0OworICAgIHVpbnQ4X3QgbWF4X2VuY2xhdmVfc2l6ZTY0OworICAg IHVpbnQ4X3QgbWF4X2VuY2xhdmVfc2l6ZTMyOworICAgIHVpbnQzMl90IHNlY3NfYXR0cl9iaXRt YXNrWzRdOworICAgIHVpbnQ2NF90IGVwY19iYXNlOworICAgIHVpbnQ2NF90IGVwY19zaXplOwor fTsKKworLyogRGV0ZWN0IFNHWCBpbmZvIGZvciBwYXJ0aWN1bGFyIENQVSB2aWEgU0dYIENQVUlE ICovCit2b2lkIGRldGVjdF9zZ3goaW50IGNwdSk7CisKKyNlbmRpZiAgLyogX19BU01fWDg2X0hW TV9WTVhfU0dYX0hfXyAqLwotLSAKMi4xMS4wCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==