From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v2 for-4.7] x86/cpuid: Calculate a guests xfeature_mask from its featureset Date: Fri, 3 Jun 2016 15:11:08 +0100 Message-ID: <1464963068-8242-1-git-send-email-andrew.cooper3@citrix.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 Cc: Andrew Cooper , Wei Liu , Jan Beulich , Huaitong Han List-Id: xen-devel@lists.xenproject.org bGlieGMgY3VycmVudCBwZXJmb3JtcyB0aGUgeHN0YXRlIGNhbGN1bGF0aW9uIGZvciBndWVzdHMs IGFuZCBwcm92aWRlcyB0aGUKaW5mb3JtYXRpb24gdG8gWGVuIHRvIGJlIHVzZWQgd2hlbiBzYXRp c2Z5aW5nIENQVUlEIHRyYXBzLiAgKFRoZXJlIGlzIGZ1cnRoZXIKd29yayBwbGFubmVkIHRvIGlt cHJvdmUgdGhpcyBhcnJhbmdlbWVudCwgYnV0IHRoZSB3b3JzdCBhIGJ1Z2d5IHRvb2xzdGFjayBj YW4KZG8gaXMgbWFrZSBqdW5rIGFwcGVhciBpbiB0aGUgY3B1aWQgbGVhdmVzIGZvciB0aGUgZ3Vl c3QuKQoKZG9tMCBob3dldmVyIGhhcyBubyBwb2xpY3kgY29uc3RydWN0ZWQgZm9yIGl0LCBhbmQg Y2VydGFpbiBmaWVsZHMgZmlsdGVyCnN0cmFpZ2h0IHRocm91Z2ggZnJvbSBoYXJkd2FyZS4KCkxp bnV4IHF1ZXJpZXMgQ1BVSUQuN1swXS57RUFYL0VEWH0gYWxvbmUgdG8gY2hvb3NlIGEgc2V0dGlu ZyBmb3IgJXhjcjAsIHdoaWNoCmlzIGEgdmFsaWQgYWN0aW9uIHRvIHRha2UsIGJ1dCBmZWF0dXJl cyBzdWNoIGFzIE1QWCBhbmQgUEtSVSBhcmUgbm90IHN1cHBvcnRlZApmb3IgUFYgZ3Vlc3RzLiAg QXMgYSByZXN1bHQsIExpbnV4LCB1c2luZyBsZWFrZWQgaGFyZHdhcmUgaW5mb3JtYXRpb24sIGZh aWxzCnRvIHNldCAleGNyMCBvbiBuZXdlciBTa3lsYWtlIGhhcmR3YXJlIHdpdGggUEtSVSBzdXBw b3J0LCBhbmQgY3Jhc2hlcy4KCkFzIGFuIGludGVyaW0gc29sdXRpb24sIGR5bmFtaWNhbGx5IGNh bGN1bGF0ZSB0aGUgY29ycmVjdCB4ZmVhdHVyZV9tYXNrIGFuZAp4c3RhdGVfc2l6ZSB0byByZXBv cnQgdG8gdGhlIGd1ZXN0IGZvciBDUFVJRC43WzBdIHF1ZXJpZXMuICBUaGlzIGVuc3VyZXMgdGhh dApkb21haW5zIGRvbid0IHNlZSBsZWFrZWQgaGFyZHdhcmUgdmFsdWVzLCBldmVuIHdoZW4gbm8g Y3B1aWQgcG9saWN5IGlzCnByb3ZpZGVkLgoKU2ltaWxhcmx5LCBDUFVJRC43WzFde0VDWC9FRFh9 IHJlcHJlc2VudHMgdGhlIGFwcGxpY2FibGUgc2V0dGluZ3MgZm9yIE1TUl9YU1MuCkFzIFhlbiBk b2Vzbid0IHlldCBzdXBwb3J0IGFueSBYU1Mgc3RhdGVzIGluIGd1ZXN0cywgdW5jb25kaXRpb25h bGx5IHplcm8KdGhlbS4KClJlcG9ydGVkLWJ5OiBMdXdlaSBLYW5nIDxsdXdlaS5rYW5nQGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4 LmNvbT4KVGVzdGVkLWJ5OiBMdXdlaSBLYW5nIDxsdXdlaS5rYW5nQGludGVsLmNvbT4KLS0tCkND OiBKYW4gQmV1bGljaCA8SkJldWxpY2hAc3VzZS5jb20+CkNDOiBXZWkgTGl1IDx3ZWkubGl1MkBj aXRyaXguY29tPgpDQzogSHVhaXRvbmcgSGFuIDxodWFpdG9uZy5oYW5AaW50ZWwuY29tPgoKdjI6 CiAqIEltcHJvdmVtbnRzIHRvIHRoZSBjb21taXQgbWVzc2FnZQogKiBVc2UgdGhlIHR5cGVzYWZl IG1heCgpIGluIHByZWZlcmVuY2UgdG8gTUFYKCkKICogRG9uJ3Qgb2ZmZXIgTFdQIHRvIFBWIGd1 ZXN0cy4KLS0tCiB4ZW4vYXJjaC94ODYvaHZtL2h2bS5jICAgICAgIHwgNTMgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0KIHhlbi9hcmNoL3g4Ni90cmFwcy5jICAg ICAgICAgfCAzNSArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogeGVuL2FyY2gveDg2L3hz dGF0ZS5jICAgICAgICB8ICAyICstCiB4ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oIHwgMzIg KysrKysrKysrKysrKysrKystLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9u cygrKSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9odm0u YyBiL3hlbi9hcmNoL3g4Ni9odm0vaHZtLmMKaW5kZXggYmI5ODA1MS4uZDIyNGJjNyAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L2h2bS9odm0uYworKysgYi94ZW4vYXJjaC94ODYvaHZtL2h2bS5j CkBAIC0zMzYyLDcgKzMzNjIsNyBAQCB2b2lkIGh2bV9jcHVpZCh1bnNpZ25lZCBpbnQgaW5wdXQs IHVuc2lnbmVkIGludCAqZWF4LCB1bnNpZ25lZCBpbnQgKmVieCwKIAogICAgIHN3aXRjaCAoIGlu cHV0ICkKICAgICB7Ci0gICAgICAgIHVuc2lnbmVkIGludCBfZWN4LCBfZWR4OworICAgICAgICB1 bnNpZ25lZCBpbnQgX2VieCwgX2VjeCwgX2VkeDsKIAogICAgIGNhc2UgMHgxOgogICAgICAgICAv KiBGaXggdXAgVkxBUElDIGRldGFpbHMuICovCkBAIC0zNDQzLDYgKzM0NDMsNTEgQEAgdm9pZCBo dm1fY3B1aWQodW5zaWduZWQgaW50IGlucHV0LCB1bnNpZ25lZCBpbnQgKmVheCwgdW5zaWduZWQg aW50ICplYngsCiAgICAgICAgIHN3aXRjaCAoIGNvdW50ICkKICAgICAgICAgewogICAgICAgICBj YXNlIDA6CisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ2NF90IHhmZWF0dXJlX21hc2sgPSBY U1RBVEVfRlBfU1NFOworICAgICAgICAgICAgdWludDMyX3QgeHN0YXRlX3NpemUgPSBYU1RBVEVf QVJFQV9NSU5fU0laRTsKKworICAgICAgICAgICAgaWYgKCBfZWN4ICYgY3B1ZmVhdF9tYXNrKFg4 Nl9GRUFUVVJFX0FWWCkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHhmZWF0dXJl X21hc2sgfD0gWFNUQVRFX1lNTTsKKyAgICAgICAgICAgICAgICB4c3RhdGVfc2l6ZSA9IG1heCh4 c3RhdGVfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhdGVfb2Zm c2V0c1tfWFNUQVRFX1lNTV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhz dGF0ZV9zaXplc1tfWFNUQVRFX1lNTV0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBf ZWN4ID0gMDsKKyAgICAgICAgICAgIGh2bV9jcHVpZCg3LCBOVUxMLCAmX2VieCwgJl9lY3gsIE5V TEwpOworCisgICAgICAgICAgICBpZiAoIF9lYnggJiBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVf TVBYKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeGZlYXR1cmVfbWFzayB8PSBY U1RBVEVfQk5EUkVHUyB8IFhTVEFURV9CTkRDU1I7CisgICAgICAgICAgICAgICAgeHN0YXRlX3Np emUgPSBtYXgoeHN0YXRlX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg eHN0YXRlX29mZnNldHNbX1hTVEFURV9CTkRDU1JdICsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB4c3RhdGVfc2l6ZXNbX1hTVEFURV9CTkRDU1JdKTsKKyAgICAgICAgICAgIH0K KworICAgICAgICAgICAgaWYgKCBfZWJ4ICYgY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX1BLVSkg KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHhmZWF0dXJlX21hc2sgfD0gWFNUQVRF X1BLUlU7CisgICAgICAgICAgICAgICAgeHN0YXRlX3NpemUgPSBtYXgoeHN0YXRlX3NpemUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX29mZnNldHNbX1hTVEFURV9Q S1JVXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXRlX3NpemVzW19Y U1RBVEVfUEtSVV0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBodm1fY3B1aWQoMHg4 MDAwMDAwMSwgTlVMTCwgTlVMTCwgJl9lY3gsIE5VTEwpOworCisgICAgICAgICAgICBpZiAoIF9l Y3ggJiBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfTFdQKSApCisgICAgICAgICAgICB7CisgICAg ICAgICAgICAgICAgeGZlYXR1cmVfbWFzayB8PSBYU1RBVEVfTFdQOworICAgICAgICAgICAgICAg IHhzdGF0ZV9zaXplID0gbWF4KHhzdGF0ZV9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHhzdGF0ZV9vZmZzZXRzW19YU1RBVEVfTFdQXSArCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeHN0YXRlX3NpemVzW19YU1RBVEVfTFdQXSk7CisgICAgICAgICAg ICB9CisKKyAgICAgICAgICAgICplYXggPSAodWludDMyX3QpeGZlYXR1cmVfbWFzazsKKyAgICAg ICAgICAgICplZHggPSAodWludDMyX3QpKHhmZWF0dXJlX21hc2sgPj4gMzIpOworICAgICAgICAg ICAgKmVjeCA9IHhzdGF0ZV9zaXplOworCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICog QWx3YXlzIHJlYWQgQ1BVSURbMHhELDBdLkVCWCBmcm9tIGhhcmR3YXJlLCByYXRoZXIgdGhhbiBk b21haW4KICAgICAgICAgICAgICAqIHBvbGljeS4gIEl0IHZhcmllcyB3aXRoIGVuYWJsZWQgeHN0 YXRlLCBhbmQgdGhlIGNvcnJlY3QgeGNyMCBpcwpAQCAtMzQ1MCw2ICszNDk1LDggQEAgdm9pZCBo dm1fY3B1aWQodW5zaWduZWQgaW50IGlucHV0LCB1bnNpZ25lZCBpbnQgKmVheCwgdW5zaWduZWQg aW50ICplYngsCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGNwdWlkX2NvdW50KGlucHV0 LCBjb3VudCwgJmR1bW15LCBlYngsICZkdW1teSwgJmR1bW15KTsKICAgICAgICAgICAgIGJyZWFr OworICAgICAgICB9CisKICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgKmVheCAmPSBodm1f ZmVhdHVyZXNldFtGRUFUVVJFU0VUX0RhMV07CiAKQEAgLTM0NjMsNyArMzUxMCw5IEBAIHZvaWQg aHZtX2NwdWlkKHVuc2lnbmVkIGludCBpbnB1dCwgdW5zaWduZWQgaW50ICplYXgsIHVuc2lnbmVk IGludCAqZWJ4LAogICAgICAgICAgICAgICAgIGNwdWlkX2NvdW50KGlucHV0LCBjb3VudCwgJmR1 bW15LCBlYngsICZkdW1teSwgJmR1bW15KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVs c2UKLSAgICAgICAgICAgICAgICAqZWJ4ID0gKmVjeCA9ICplZHggPSAwOworICAgICAgICAgICAg ICAgICplYnggPSAwOworCisgICAgICAgICAgICAqZWN4ID0gKmVkeCA9IDA7CiAgICAgICAgICAg ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni90cmFwcy5jIGIveGVuL2FyY2gveDg2L3RyYXBzLmMKaW5kZXggYzRlMGU2Zi4uMWI0Mjg0 MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3RyYXBzLmMKKysrIGIveGVuL2FyY2gveDg2L3Ry YXBzLmMKQEAgLTkyOCw3ICs5MjgsNyBAQCB2b2lkIHB2X2NwdWlkKHN0cnVjdCBjcHVfdXNlcl9y ZWdzICpyZWdzKQogCiAgICAgc3dpdGNoICggbGVhZiApCiAgICAgewotICAgICAgICB1aW50MzJf dCB0bXA7CisgICAgICAgIHVpbnQzMl90IHRtcCwgX2VjeDsKIAogICAgIGNhc2UgMHgwMDAwMDAw MToKICAgICAgICAgYyAmPSBwdl9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfMWNdOwpAQCAtMTA4Nywx OSArMTA4NywzMyBAQCB2b2lkIHB2X2NwdWlkKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQog ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgWFNUQVRFX0NQVUlEOgotICAgICAgICBpZiAoICEo KCFpc19jb250cm9sX2RvbWFpbihjdXJyZCkgJiYgIWlzX2hhcmR3YXJlX2RvbWFpbihjdXJyZCkK LSAgICAgICAgICAgICAgICA/ICh7Ci0gICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGVjeDsK LQotICAgICAgICAgICAgICAgICAgICBkb21haW5fY3B1aWQoY3VycmQsIDEsIDAsICZ0bXAsICZ0 bXAsICZlY3gsICZ0bXApOwotICAgICAgICAgICAgICAgICAgICBlY3ggJiBwdl9mZWF0dXJlc2V0 W0ZFQVRVUkVTRVRfMWNdOwotICAgICAgICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgICA6 IGNwdWlkX2VjeCgxKSkgJiBjcHVmZWF0X21hc2soWDg2X0ZFQVRVUkVfWFNBVkUpKSB8fAotICAg ICAgICAgICAgIHN1YmxlYWYgPj0gNjMgKQorCisgICAgICAgIGlmICggIWlzX2NvbnRyb2xfZG9t YWluKGN1cnJkKSAmJiAhaXNfaGFyZHdhcmVfZG9tYWluKGN1cnJkKSApCisgICAgICAgICAgICBk b21haW5fY3B1aWQoY3VycmQsIDEsIDAsICZ0bXAsICZ0bXAsICZfZWN4LCAmdG1wKTsKKyAgICAg ICAgZWxzZQorICAgICAgICAgICAgX2VjeCA9IGNwdWlkX2VjeCgxKTsKKyAgICAgICAgX2VjeCAm PSBwdl9mZWF0dXJlc2V0W0ZFQVRVUkVTRVRfMWNdOworCisgICAgICAgIGlmICggIShfZWN4ICYg Y3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX1hTQVZFKSkgfHwgc3VibGVhZiA+PSA2MyApCiAgICAg ICAgICAgICBnb3RvIHVuc3VwcG9ydGVkOwogICAgICAgICBzd2l0Y2ggKCBzdWJsZWFmICkKICAg ICAgICAgewogICAgICAgICBjYXNlIDA6CisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ2NF90 IHhmZWF0dXJlX21hc2sgPSBYU1RBVEVfRlBfU1NFOworICAgICAgICAgICAgdWludDMyX3QgeHN0 YXRlX3NpemUgPSBYU1RBVEVfQVJFQV9NSU5fU0laRTsKKworICAgICAgICAgICAgaWYgKCBfZWN4 ICYgY3B1ZmVhdF9tYXNrKFg4Nl9GRUFUVVJFX0FWWCkgKQorICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgIHhmZWF0dXJlX21hc2sgfD0gWFNUQVRFX1lNTTsKKyAgICAgICAgICAgICAgICB4 c3RhdGVfc2l6ZSA9ICh4c3RhdGVfb2Zmc2V0c1tfWFNUQVRFX1lNTV0gKworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHhzdGF0ZV9zaXplc1tfWFNUQVRFX1lNTV0pOworICAgICAgICAg ICAgfQorCisgICAgICAgICAgICBhID0gKHVpbnQzMl90KXhmZWF0dXJlX21hc2s7CisgICAgICAg ICAgICBkID0gKHVpbnQzMl90KSh4ZmVhdHVyZV9tYXNrID4+IDMyKTsKKyAgICAgICAgICAgIGMg PSB4c3RhdGVfc2l6ZTsKKwogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIEFsd2F5cyBy ZWFkIENQVUlELjB4RFtFQ1g9MF0uRUJYIGZyb20gaGFyZHdhcmUsIHJhdGhlciB0aGFuCiAgICAg ICAgICAgICAgKiBkb21haW4gcG9saWN5LiAgSXQgdmFyaWVzIHdpdGggZW5hYmxlZCB4c3RhdGUs IGFuZCB0aGUgY29ycmVjdApAQCAtMTEwOCw2ICsxMTIyLDcgQEAgdm9pZCBwdl9jcHVpZChzdHJ1 Y3QgY3B1X3VzZXJfcmVncyAqcmVncykKICAgICAgICAgICAgIGlmICggIWlzX2NvbnRyb2xfZG9t YWluKGN1cnJkKSAmJiAhaXNfaGFyZHdhcmVfZG9tYWluKGN1cnJkKSApCiAgICAgICAgICAgICAg ICAgY3B1aWRfY291bnQobGVhZiwgc3VibGVhZiwgJnRtcCwgJmIsICZ0bXAsICZ0bXApOwogICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIDE6CiAgICAgICAgICAg ICBhICY9IHB2X2ZlYXR1cmVzZXRbRkVBVFVSRVNFVF9EYTFdOwpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3hzdGF0ZS5jIGIveGVuL2FyY2gveDg2L3hzdGF0ZS5jCmluZGV4IGEwY2ZjYzIuLjFm ZDFjZTggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94c3RhdGUuYworKysgYi94ZW4vYXJjaC94 ODYveHN0YXRlLmMKQEAgLTI0LDcgKzI0LDcgQEAgc3RhdGljIHUzMiBfX3JlYWRfbW9zdGx5IHhz YXZlX2NudHh0X3NpemU7CiAvKiBBIDY0LWJpdCBiaXRtYXNrIG9mIHRoZSBYU0FWRS9YUlNUT1Ig ZmVhdHVyZXMgc3VwcG9ydGVkIGJ5IHByb2Nlc3Nvci4gKi8KIHU2NCBfX3JlYWRfbW9zdGx5IHhm ZWF0dXJlX21hc2s7CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgKl9fcmVhZF9tb3N0bHkgeHN0YXRl X29mZnNldHM7Cit1bnNpZ25lZCBpbnQgKl9fcmVhZF9tb3N0bHkgeHN0YXRlX29mZnNldHM7CiB1 bnNpZ25lZCBpbnQgKl9fcmVhZF9tb3N0bHkgeHN0YXRlX3NpemVzOwogdTY0IF9fcmVhZF9tb3N0 bHkgeHN0YXRlX2FsaWduOwogc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IHhzdGF0 ZV9mZWF0dXJlczsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRlLmggYi94 ZW4vaW5jbHVkZS9hc20teDg2L3hzdGF0ZS5oCmluZGV4IDQ1MzUzNTQuLjUxYTllZDQgMTAwNjQ0 Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYveHN0YXRlLmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni94c3RhdGUuaApAQCAtMjYsMTYgKzI2LDI3IEBACiAjZGVmaW5lIFhTQVZFX0hEUl9PRkZT RVQgICAgICAgICAgRlhTQVZFX1NJWkUKICNkZWZpbmUgWFNUQVRFX0FSRUFfTUlOX1NJWkUgICAg ICAoRlhTQVZFX1NJWkUgKyBYU0FWRV9IRFJfU0laRSkKIAotI2RlZmluZSBYU1RBVEVfRlAgICAg ICAoMVVMTCA8PCAwKQotI2RlZmluZSBYU1RBVEVfU1NFICAgICAoMVVMTCA8PCAxKQotI2RlZmlu ZSBYU1RBVEVfWU1NICAgICAoMVVMTCA8PCAyKQotI2RlZmluZSBYU1RBVEVfQk5EUkVHUyAoMVVM TCA8PCAzKQotI2RlZmluZSBYU1RBVEVfQk5EQ1NSICAoMVVMTCA8PCA0KQotI2RlZmluZSBYU1RB VEVfT1BNQVNLICAoMVVMTCA8PCA1KQotI2RlZmluZSBYU1RBVEVfWk1NICAgICAoMVVMTCA8PCA2 KQotI2RlZmluZSBYU1RBVEVfSElfWk1NICAoMVVMTCA8PCA3KQotI2RlZmluZSBYU1RBVEVfUEtS VSAgICAoMVVMTCA8PCA5KQotI2RlZmluZSBYU1RBVEVfTFdQICAgICAoMVVMTCA8PCA2MikgLyog QU1EIGxpZ2h0d2VpZ2h0IHByb2ZpbGluZyAqLworI2RlZmluZSBfWFNUQVRFX0ZQICAgICAgICAg ICAgICAgIDAKKyNkZWZpbmUgWFNUQVRFX0ZQICAgICAgICAgICAgICAgICAoMVVMTCA8PCBfWFNU QVRFX0ZQKQorI2RlZmluZSBfWFNUQVRFX1NTRSAgICAgICAgICAgICAgIDEKKyNkZWZpbmUgWFNU QVRFX1NTRSAgICAgICAgICAgICAgICAoMVVMTCA8PCBfWFNUQVRFX1NTRSkKKyNkZWZpbmUgX1hT VEFURV9ZTU0gICAgICAgICAgICAgICAyCisjZGVmaW5lIFhTVEFURV9ZTU0gICAgICAgICAgICAg ICAgKDFVTEwgPDwgX1hTVEFURV9ZTU0pCisjZGVmaW5lIF9YU1RBVEVfQk5EUkVHUyAgICAgICAg ICAgMworI2RlZmluZSBYU1RBVEVfQk5EUkVHUyAgICAgICAgICAgICgxVUxMIDw8IF9YU1RBVEVf Qk5EUkVHUykKKyNkZWZpbmUgX1hTVEFURV9CTkRDU1IgICAgICAgICAgICA0CisjZGVmaW5lIFhT VEFURV9CTkRDU1IgICAgICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9CTkRDU1IpCisjZGVmaW5l IF9YU1RBVEVfT1BNQVNLICAgICAgICAgICAgNQorI2RlZmluZSBYU1RBVEVfT1BNQVNLICAgICAg ICAgICAgICgxVUxMIDw8IF9YU1RBVEVfT1BNQVNLKQorI2RlZmluZSBfWFNUQVRFX1pNTSAgICAg ICAgICAgICAgIDYKKyNkZWZpbmUgWFNUQVRFX1pNTSAgICAgICAgICAgICAgICAoMVVMTCA8PCBf WFNUQVRFX1pNTSkKKyNkZWZpbmUgX1hTVEFURV9ISV9aTU0gICAgICAgICAgICA3CisjZGVmaW5l IFhTVEFURV9ISV9aTU0gICAgICAgICAgICAgKDFVTEwgPDwgX1hTVEFURV9ISV9aTU0pCisjZGVm aW5lIF9YU1RBVEVfUEtSVSAgICAgICAgICAgICAgOQorI2RlZmluZSBYU1RBVEVfUEtSVSAgICAg ICAgICAgICAgICgxVUxMIDw8IF9YU1RBVEVfUEtSVSkKKyNkZWZpbmUgX1hTVEFURV9MV1AgICAg ICAgICAgICAgICA2MgorI2RlZmluZSBYU1RBVEVfTFdQICAgICAgICAgICAgICAgICgxVUxMIDw8 IF9YU1RBVEVfTFdQKQorCiAjZGVmaW5lIFhTVEFURV9GUF9TU0UgIChYU1RBVEVfRlAgfCBYU1RB VEVfU1NFKQogI2RlZmluZSBYQ05UWFRfTUFTSyAgICAoWFNUQVRFX0ZQIHwgWFNUQVRFX1NTRSB8 IFhTVEFURV9ZTU0gfCBYU1RBVEVfT1BNQVNLIHwgXAogICAgICAgICAgICAgICAgICAgICAgICAg WFNUQVRFX1pNTSB8IFhTVEFURV9ISV9aTU0gfCBYU1RBVEVfTk9OTEFaWSkKQEAgLTUxLDYgKzYy LDcgQEAKIAogZXh0ZXJuIHU2NCB4ZmVhdHVyZV9tYXNrOwogZXh0ZXJuIHU2NCB4c3RhdGVfYWxp Z247CitleHRlcm4gdW5zaWduZWQgaW50ICp4c3RhdGVfb2Zmc2V0czsKIGV4dGVybiB1bnNpZ25l ZCBpbnQgKnhzdGF0ZV9zaXplczsKIAogLyogZXh0ZW5kZWQgc3RhdGUgc2F2ZSBhcmVhICovCi0t IAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Clhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==