From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH 3/6] tools/x86emul: Use struct cpuid_policy in the userspace test harnesses Date: Mon, 5 Nov 2018 11:21:04 +0000 Message-ID: <1541416867-30253-4-git-send-email-andrew.cooper3@citrix.com> References: <1541416867-30253-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: In-Reply-To: <1541416867-30253-1-git-send-email-andrew.cooper3@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Xen-devel Cc: Andrew Cooper , Wei Liu , Jan Beulich List-Id: xen-devel@lists.xenproject.org VGhpcyB3aWxsIHNob3J0bHkgYmUgcmVxdWlyZWQgdG8gcGFzcyBpbnRvIHRoZSBlbXVsYXRvciBp dHNlbGYuCgpTaW1wbGlmeSB0aGUgc2hhcmVkIGNwdV9oYXNfKiBoZWxwZXJzIGJ5IHJlYWRpbmcg dGhlIGNvcnJlY3QgYml0IG91dCBvZiB0aGUKQ1BVSUQgcG9saWN5IGl0c2VsZi4KCk5vIChpbnRl bmRlZCkgY2hhbmdlIGluIGJlaGF2aW91ci4KClNpZ25lZC1vZmYtYnk6IEFuZHJldyBDb29wZXIg PGFuZHJldy5jb29wZXIzQGNpdHJpeC5jb20+Ci0tLQpDQzogSmFuIEJldWxpY2ggPEpCZXVsaWNo QHN1c2UuY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KLS0tCiB0b29scy9m dXp6L3g4Nl9pbnN0cnVjdGlvbl9lbXVsYXRvci9NYWtlZmlsZSB8ICAgOSArLQogdG9vbHMvdGVz dHMveDg2X2VtdWxhdG9yL01ha2VmaWxlICAgICAgICAgICAgfCAgIDcgKy0KIHRvb2xzL3Rlc3Rz L3g4Nl9lbXVsYXRvci94ODYtZW11bGF0ZS5jICAgICAgIHwgIDEyICsrCiB0b29scy90ZXN0cy94 ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuaCAgICAgICB8IDIxNyArKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMTg3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3Rvb2xzL2Z1enoveDg2X2luc3RydWN0aW9uX2VtdWxhdG9yL01h a2VmaWxlIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11bGF0b3IvTWFrZWZpbGUKaW5k ZXggZWI4OGY5NC4uYTU1YmM3OCAxMDA2NDQKLS0tIGEvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rp b25fZW11bGF0b3IvTWFrZWZpbGUKKysrIGIvdG9vbHMvZnV6ei94ODZfaW5zdHJ1Y3Rpb25fZW11 bGF0b3IvTWFrZWZpbGUKQEAgLTgsNiArOCw5IEBAIGVsc2UKIHg4Ni1pbnNuLWZ1enotYWxsOgog ZW5kaWYKIAorIyBBZGQgbGlieDg2IHRvIHRoZSBidWlsZAordnBhdGggJS5jICQoWEVOX1JPT1Qp L3hlbi9saWIveDg2CisKIHg4Nl9lbXVsYXRlOgogCVsgLUwgJEAgXSB8fCBsbiAtc2YgJChYRU5f Uk9PVCkveGVuL2FyY2gveDg2LyRACiAKQEAgLTMxLDEzICszNCwxMyBAQCB4ODYtZW11bGF0ZS5v IHg4Ni1lbXVsYXRlLWNvdi5vOiB4ODZfZW11bGF0ZS94ODZfZW11bGF0ZS5jICQoeDg2X2VtdWxh dGUuaCkKIAogZnV6ei1lbXVsLm8gZnV6ei1lbXVsYXRlLWNvdi5vIHdyYXBwZXJzLm86ICQoeDg2 X2VtdWxhdGUuaCkKIAoteDg2LWluc24tZnV6emVyLmE6IGZ1enotZW11bC5vIHg4Ni1lbXVsYXRl Lm8KK3g4Ni1pbnNuLWZ1enplci5hOiBmdXp6LWVtdWwubyB4ODYtZW11bGF0ZS5vIGNwdWlkLm8K IAkkKEFSKSByYyAkQCAkXgogCi1hZmwtaGFybmVzczogYWZsLWhhcm5lc3MubyBmdXp6LWVtdWwu byB4ODYtZW11bGF0ZS5vIHdyYXBwZXJzLm8KK2FmbC1oYXJuZXNzOiBhZmwtaGFybmVzcy5vIGZ1 enotZW11bC5vIHg4Ni1lbXVsYXRlLm8gY3B1aWQubyB3cmFwcGVycy5vCiAJJChDQykgJChDRkxB R1MpICReIC1vICRACiAKLWFmbC1oYXJuZXNzLWNvdjogYWZsLWhhcm5lc3MtY292Lm8gZnV6ei1l bXVsLWNvdi5vIHg4Ni1lbXVsYXRlLWNvdi5vIHdyYXBwZXJzLm8KK2FmbC1oYXJuZXNzLWNvdjog YWZsLWhhcm5lc3MtY292Lm8gZnV6ei1lbXVsLWNvdi5vIHg4Ni1lbXVsYXRlLWNvdi5vIGNwdWlk Lm8gd3JhcHBlcnMubwogCSQoQ0MpICQoQ0ZMQUdTKSAkKEdDT1ZfRkxBR1MpICReIC1vICRACiAK ICMgQ29tbW9uIHRhcmdldHMKZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9N YWtlZmlsZSBiL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci9NYWtlZmlsZQppbmRleCBhOTdjNDNi Li5iMmY4ZTQ0IDEwMDY0NAotLS0gYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IvTWFrZWZpbGUK KysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL01ha2VmaWxlCkBAIC0xMSw2ICsxMSwxMSBA QCBhbGw6ICQoVEFSR0VUKQogcnVuOiAkKFRBUkdFVCkKIAkuLyQoVEFSR0VUKQogCisjIEFkZCBs aWJ4ODYgdG8gdGhlIGJ1aWxkCit2cGF0aCAlLmMgJChYRU5fUk9PVCkveGVuL2xpYi94ODYKKwor Q0ZMQUdTICs9ICQoQ0ZMQUdTX3hlbmluY2x1ZGUpCisKIFNJTUQgOj0gM2Rub3cgc3NlIHNzZTIg c3NlNCBhdnggYXZ4MiB4b3AKIEZNQSA6PSBmbWE0IGZtYQogU0cgOj0gYXZ4Mi1zZwpAQCAtMTM5 LDcgKzE0NCw3IEBAICQoYWRkc3VmZml4IC5oLCQoU0lNRCkgJChGTUEpICQoU0cpKTogc2ltZC5o CiAKIHhvcC5oOiBzaW1kLWZtYS5jCiAKLSQoVEFSR0VUKTogeDg2LWVtdWxhdGUubyB0ZXN0X3g4 Nl9lbXVsYXRvci5vIHdyYXBwZXJzLm8KKyQoVEFSR0VUKTogeDg2LWVtdWxhdGUubyBjcHVpZC5v IHRlc3RfeDg2X2VtdWxhdG9yLm8gd3JhcHBlcnMubwogCSQoSE9TVENDKSAkKEhPU1RDRkxBR1Mp IC1vICRAICReCiAKIC5QSE9OWTogY2xlYW4KZGlmZiAtLWdpdCBhL3Rvb2xzL3Rlc3RzL3g4Nl9l bXVsYXRvci94ODYtZW11bGF0ZS5jIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4Ni1lbXVs YXRlLmMKaW5kZXggYWJhNTc2OC4uYTEwOWU5MyAxMDA2NDQKLS0tIGEvdG9vbHMvdGVzdHMveDg2 X2VtdWxhdG9yL3g4Ni1lbXVsYXRlLmMKKysrIGIvdG9vbHMvdGVzdHMveDg2X2VtdWxhdG9yL3g4 Ni1lbXVsYXRlLmMKQEAgLTI1LDYgKzI1LDcgQEAKICNkZWZpbmUgcHV0X3N0dWIoc3RiKSAoKHN0 YikuYWRkciA9IDApCiAKIHVpbnQzMl90IG14Y3NyX21hc2sgPSAweDAwMDBmZmJmOworc3RydWN0 IGNwdWlkX3BvbGljeSBjcDsKIAogc3RhdGljIGNoYXIgZnB1X3NhdmVfYXJlYVs0MDk2XSBfX2F0 dHJpYnV0ZV9fKChfX2FsaWduZWRfXygoNjQpKSkpOwogc3RhdGljIGJvb2wgdXNlX3hzYXZlOwpA QCAtNjQsNiArNjUsMTcgQEAgYm9vbCBlbXVsX3Rlc3RfaW5pdCh2b2lkKQogCiAgICAgdW5zaWdu ZWQgbG9uZyBzcDsKIAorICAgIHg4Nl9jcHVpZF9wb2xpY3lfZmlsbF9uYXRpdmUoJmNwKTsKKwor ICAgIC8qCisgICAgICogVGhlIGVtdWxhdG9yIGRvZXNuJ3QgdXNlIHRoZXNlIGluc3RydWN0aW9u cywgc28gY2FuIGFsd2F5cyBlbXVsYXRlCisgICAgICogdGhlbS4KKyAgICAgKi8KKyAgICBjcC5i YXNpYy5tb3ZiZSA9IHRydWU7CisgICAgY3AuZmVhdC5hZHggPSB0cnVlOworICAgIGNwLmZlYXQu cmRwaWQgPSB0cnVlOworICAgIGNwLmV4dGQuY2x6ZXJvID0gdHJ1ZTsKKwogICAgIGlmICggY3B1 X2hhc194c2F2ZSApCiAgICAgewogICAgICAgICB1bnNpZ25lZCBpbnQgdG1wLCBlYng7CmRpZmYg LS1naXQgYS90b29scy90ZXN0cy94ODZfZW11bGF0b3IveDg2LWVtdWxhdGUuaCBiL3Rvb2xzL3Rl c3RzL3g4Nl9lbXVsYXRvci94ODYtZW11bGF0ZS5oCmluZGV4IGVmNTg0NjYuLjhiYjAyZmQgMTAw NjQ0Ci0tLSBhL3Rvb2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODYtZW11bGF0ZS5oCisrKyBiL3Rv b2xzL3Rlc3RzL3g4Nl9lbXVsYXRvci94ODYtZW11bGF0ZS5oCkBAIC02Miw2ICs2Miw3IEBACiAj ZGVmaW5lIGlzX2Nhbm9uaWNhbF9hZGRyZXNzKHgpICgoKGludDY0X3QpKHgpID4+IDQ3KSA9PSAo KGludDY0X3QpKHgpID4+IDYzKSkKIAogZXh0ZXJuIHVpbnQzMl90IG14Y3NyX21hc2s7CitleHRl cm4gc3RydWN0IGNwdWlkX3BvbGljeSBjcDsKIAogI2RlZmluZSBNTUFQX1NaIDE2Mzg0CiBib29s IGVtdWxfdGVzdF9pbml0KHZvaWQpOwpAQCAtMTA0LDE5MSArMTA1LDQxIEBAIHN0YXRpYyBpbmxp bmUgdWludDY0X3QgeGdldGJ2KHVpbnQzMl90IHhjcikKICAgICByZXR1cm4gKCh1aW50NjRfdClo aSA8PCAzMikgfCBsbzsKIH0KIAotI2RlZmluZSBjYWNoZV9saW5lX3NpemUoKSAoewkJICAgICBc Ci0gICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCi0gICAgZW11bF90ZXN0X2NwdWlkKDEsIDAs ICZyZXMsIE5VTEwpOyBcCi0gICAgcmVzLmQgJiAoMVUgPDwgMTkpID8gKHJlcy5iID4+IDUpICYg MHg3ZjggOiAwOyBcCi19KQotCi0jZGVmaW5lIGNwdV9oYXNfbW14ICh7IFwKLSAgICBzdHJ1Y3Qg Y3B1aWRfbGVhZiByZXM7IFwKLSAgICBlbXVsX3Rlc3RfY3B1aWQoMSwgMCwgJnJlcywgTlVMTCk7 IFwKLSAgICAocmVzLmQgJiAoMVUgPDwgMjMpKSAhPSAwOyBcCi19KQotCi0jZGVmaW5lIGNwdV9o YXNfZnhzciAoeyBcCi0gICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCi0gICAgZW11bF90ZXN0 X2NwdWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCi0gICAgKHJlcy5kICYgKDFVIDw8IDI0KSkgIT0g MDsgXAotfSkKLQotI2RlZmluZSBjcHVfaGFzX3NzZSAoeyBcCi0gICAgc3RydWN0IGNwdWlkX2xl YWYgcmVzOyBcCi0gICAgZW11bF90ZXN0X2NwdWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCi0gICAg KHJlcy5kICYgKDFVIDw8IDI1KSkgIT0gMDsgXAotfSkKLQotI2RlZmluZSBjcHVfaGFzX3NzZTIg KHsgXAotICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxfdGVzdF9jcHVpZCgx LCAwLCAmcmVzLCBOVUxMKTsgXAotICAgIChyZXMuZCAmICgxVSA8PCAyNikpICE9IDA7IFwKLX0p Ci0KLSNkZWZpbmUgY3B1X2hhc19zc2UzICh7IFwKLSAgICBzdHJ1Y3QgY3B1aWRfbGVhZiByZXM7 IFwKLSAgICBlbXVsX3Rlc3RfY3B1aWQoMSwgMCwgJnJlcywgTlVMTCk7IFwKLSAgICAocmVzLmMg JiAoMVUgPDwgMCkpICE9IDA7IFwKLX0pCi0KLSNkZWZpbmUgY3B1X2hhc19mbWEgKHsgXAotICAg IHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVz LCBOVUxMKTsgXAotICAgIGlmICggIShyZXMuYyAmICgxVSA8PCAyNykpIHx8ICgoeGdldGJ2KDAp ICYgNikgIT0gNikgKSBcCi0gICAgICAgIHJlcy5jID0gMDsgXAotICAgIChyZXMuYyAmICgxVSA8 PCAxMikpICE9IDA7IFwKLX0pCi0KLSNkZWZpbmUgY3B1X2hhc19zc2U0XzEgKHsgXAotICAgIHN0 cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVzLCBO VUxMKTsgXAotICAgIChyZXMuYyAmICgxVSA8PCAxOSkpICE9IDA7IFwKLX0pCi0KLSNkZWZpbmUg Y3B1X2hhc19zc2U0XzIgKHsgXAotICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVt dWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVzLCBOVUxMKTsgXAotICAgIChyZXMuYyAmICgxVSA8PCAy MCkpICE9IDA7IFwKLX0pCi0KLSNkZWZpbmUgY3B1X2hhc19wb3BjbnQgKHsgXAotICAgIHN0cnVj dCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVzLCBOVUxM KTsgXAotICAgIChyZXMuYyAmICgxVSA8PCAyMykpICE9IDA7IFwKLX0pCi0KLSNkZWZpbmUgY3B1 X2hhc194c2F2ZSAoeyBcCi0gICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCi0gICAgZW11bF90 ZXN0X2NwdWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCi0gICAgLyogSW50ZW50aW9uYWxseSBjaGVj a2luZyBPU1hTQVZFIGhlcmUuICovIFwKLSAgICAocmVzLmMgJiAoMVUgPDwgMjcpKSAhPSAwOyBc Ci19KQotCi0jZGVmaW5lIGNwdV9oYXNfYXZ4ICh7IFwKLSAgICBzdHJ1Y3QgY3B1aWRfbGVhZiBy ZXM7IFwKLSAgICBlbXVsX3Rlc3RfY3B1aWQoMSwgMCwgJnJlcywgTlVMTCk7IFwKLSAgICBpZiAo ICEocmVzLmMgJiAoMVUgPDwgMjcpKSB8fCAoKHhnZXRidigwKSAmIDYpICE9IDYpICkgXAotICAg ICAgICByZXMuYyA9IDA7IFwKLSAgICAocmVzLmMgJiAoMVUgPDwgMjgpKSAhPSAwOyBcCi19KQot Ci0jZGVmaW5lIGNwdV9oYXNfZjE2YyAoeyBcCi0gICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBc Ci0gICAgZW11bF90ZXN0X2NwdWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCi0gICAgaWYgKCAhKHJl cy5jICYgKDFVIDw8IDI3KSkgfHwgKCh4Z2V0YnYoMCkgJiA2KSAhPSA2KSApIFwKLSAgICAgICAg cmVzLmMgPSAwOyBcCi0gICAgKHJlcy5jICYgKDFVIDw8IDI5KSkgIT0gMDsgXAotfSkKKy8qIElu dGVudGlvbmFsbHkgY2hlY2tpbmcgT1NYU0FWRSBoZXJlLiAqLworI2RlZmluZSBjcHVfaGFzX3hz YXZlICAgICAoY3AuYmFzaWMucmF3WzFdLmMgJiAoMXUgPDwgMjcpKQogCi0jZGVmaW5lIGNwdV9o YXNfYXZ4MiAoeyBcCi0gICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCi0gICAgZW11bF90ZXN0 X2NwdWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCi0gICAgaWYgKCAhKHJlcy5jICYgKDFVIDw8IDI3 KSkgfHwgKCh4Z2V0YnYoMCkgJiA2KSAhPSA2KSApIFwKLSAgICAgICAgcmVzLmIgPSAwOyBcCi0g ICAgZWxzZSB7IFwKLSAgICAgICAgZW11bF90ZXN0X2NwdWlkKDcsIDAsICZyZXMsIE5VTEwpOyBc Ci0gICAgfSBcCi0gICAgKHJlcy5iICYgKDFVIDw8IDUpKSAhPSAwOyBcCi19KQotCi0jZGVmaW5l IGNwdV9oYXNfeGdldGJ2MSAoeyBcCi0gICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCi0gICAg ZW11bF90ZXN0X2NwdWlkKDEsIDAsICZyZXMsIE5VTEwpOyBcCi0gICAgaWYgKCAhKHJlcy5jICYg KDFVIDw8IDI3KSkgKSBcCi0gICAgICAgIHJlcy5hID0gMDsgXAotICAgIGVsc2UgXAotICAgICAg ICBlbXVsX3Rlc3RfY3B1aWQoMHhkLCAxLCAmcmVzLCBOVUxMKTsgXAotICAgIChyZXMuYSAmICgx VSA8PCAyKSkgIT0gMDsgXAotfSkKLQotI2RlZmluZSBjcHVfaGFzX2JtaTEgKHsgXAotICAgIHN0 cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxfdGVzdF9jcHVpZCg3LCAwLCAmcmVzLCBO VUxMKTsgXAotICAgIChyZXMuYiAmICgxVSA8PCAzKSkgIT0gMDsgXAotfSkKLQotI2RlZmluZSBj cHVfaGFzX2JtaTIgKHsgXAotICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxf dGVzdF9jcHVpZCg3LCAwLCAmcmVzLCBOVUxMKTsgXAotICAgIChyZXMuYiAmICgxVSA8PCA4KSkg IT0gMDsgXAotfSkKLQotI2RlZmluZSBjcHVfaGFzXzNkbm93X2V4dCAoeyBcCi0gICAgc3RydWN0 IGNwdWlkX2xlYWYgcmVzOyBcCi0gICAgZW11bF90ZXN0X2NwdWlkKDB4ODAwMDAwMDEsIDAsICZy ZXMsIE5VTEwpOyBcCi0gICAgKHJlcy5kICYgKDFVIDw8IDMwKSkgIT0gMDsgXAotfSkKLQotI2Rl ZmluZSBjcHVfaGFzX3NzZTRhICh7IFwKLSAgICBzdHJ1Y3QgY3B1aWRfbGVhZiByZXM7IFwKLSAg ICBlbXVsX3Rlc3RfY3B1aWQoMHg4MDAwMDAwMSwgMCwgJnJlcywgTlVMTCk7IFwKLSAgICAocmVz LmMgJiAoMVUgPDwgNikpICE9IDA7IFwKLX0pCi0KLSNkZWZpbmUgY3B1X2hhc194b3AgKHsgXAot ICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAm cmVzLCBOVUxMKTsgXAotICAgIGlmICggIShyZXMuYyAmICgxVSA8PCAyNykpIHx8ICgoeGdldGJ2 KDApICYgNikgIT0gNikgKSBcCi0gICAgICAgIHJlcy5jID0gMDsgXAotICAgIGVsc2UgXAotICAg ICAgICBlbXVsX3Rlc3RfY3B1aWQoMHg4MDAwMDAwMSwgMCwgJnJlcywgTlVMTCk7IFwKLSAgICAo cmVzLmMgJiAoMVUgPDwgMTEpKSAhPSAwOyBcCi19KQotCi0jZGVmaW5lIGNwdV9oYXNfZm1hNCAo eyBcCi0gICAgc3RydWN0IGNwdWlkX2xlYWYgcmVzOyBcCi0gICAgZW11bF90ZXN0X2NwdWlkKDEs IDAsICZyZXMsIE5VTEwpOyBcCi0gICAgaWYgKCAhKHJlcy5jICYgKDFVIDw8IDI3KSkgfHwgKCh4 Z2V0YnYoMCkgJiA2KSAhPSA2KSApIFwKLSAgICAgICAgcmVzLmMgPSAwOyBcCi0gICAgZWxzZSBc Ci0gICAgICAgIGVtdWxfdGVzdF9jcHVpZCgweDgwMDAwMDAxLCAwLCAmcmVzLCBOVUxMKTsgXAot ICAgIChyZXMuYyAmICgxVSA8PCAxNikpICE9IDA7IFwKLX0pCi0KLSNkZWZpbmUgY3B1X2hhc190 Ym0gKHsgXAotICAgIHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxfdGVzdF9jcHVp ZCgweDgwMDAwMDAxLCAwLCAmcmVzLCBOVUxMKTsgXAotICAgIChyZXMuYyAmICgxVSA8PCAyMSkp ICE9IDA7IFwKLX0pCi0KLSNkZWZpbmUgY3B1X2hhc19hdng1MTJmICh7IFwKLSAgICBzdHJ1Y3Qg Y3B1aWRfbGVhZiByZXM7IFwKLSAgICBlbXVsX3Rlc3RfY3B1aWQoMSwgMCwgJnJlcywgTlVMTCk7 IFwKLSAgICBpZiAoICEocmVzLmMgJiAoMVUgPDwgMjcpKSB8fCAoKHhnZXRidigwKSAmIDB4ZTYp ICE9IDB4ZTYpICkgXAotICAgICAgICByZXMuYiA9IDA7IFwKLSAgICBlbHNlIFwKLSAgICAgICAg ZW11bF90ZXN0X2NwdWlkKDcsIDAsICZyZXMsIE5VTEwpOyBcCi0gICAgKHJlcy5iICYgKDFVIDw8 IDE2KSkgIT0gMDsgXAotfSkKLQotI2RlZmluZSBjcHVfaGFzX2F2eDUxMmRxICh7IFwKLSAgICBz dHJ1Y3QgY3B1aWRfbGVhZiByZXM7IFwKLSAgICBlbXVsX3Rlc3RfY3B1aWQoMSwgMCwgJnJlcywg TlVMTCk7IFwKLSAgICBpZiAoICEocmVzLmMgJiAoMVUgPDwgMjcpKSB8fCAoKHhnZXRidigwKSAm IDB4ZTYpICE9IDB4ZTYpICkgXAotICAgICAgICByZXMuYiA9IDA7IFwKLSAgICBlbHNlIFwKLSAg ICAgICAgZW11bF90ZXN0X2NwdWlkKDcsIDAsICZyZXMsIE5VTEwpOyBcCi0gICAgKHJlcy5iICYg KDFVIDw8IDE3KSkgIT0gMDsgXAotfSkKK3N0YXRpYyBpbmxpbmUgYm9vbCB4Y3IwX21hc2sodWlu dDY0X3QgbWFzaykKK3sKKyAgICByZXR1cm4gY3B1X2hhc194c2F2ZSAmJiAoKHhnZXRidigwKSAm IG1hc2spID09IG1hc2spOworfQogCi0jZGVmaW5lIGNwdV9oYXNfYXZ4NTEyYncgKHsgXAotICAg IHN0cnVjdCBjcHVpZF9sZWFmIHJlczsgXAotICAgIGVtdWxfdGVzdF9jcHVpZCgxLCAwLCAmcmVz LCBOVUxMKTsgXAotICAgIGlmICggIShyZXMuYyAmICgxVSA8PCAyNykpIHx8ICgoeGdldGJ2KDAp ICYgMHhlNikgIT0gMHhlNikgKSBcCi0gICAgICAgIHJlcy5iID0gMDsgXAotICAgIGVsc2UgXAot ICAgICAgICBlbXVsX3Rlc3RfY3B1aWQoNywgMCwgJnJlcywgTlVMTCk7IFwKLSAgICAocmVzLmIg JiAoMVUgPDwgMzApKSAhPSAwOyBcCi19KQorI2RlZmluZSBjYWNoZV9saW5lX3NpemUoKSAoY3Au YmFzaWMuY2xmbHVzaF9zaXplICogOCkKKyNkZWZpbmUgY3B1X2hhc19tbXggICAgICAgKGNwLmJh c2ljLm1teCkKKyNkZWZpbmUgY3B1X2hhc19meHNyICAgICAgKGNwLmJhc2ljLmZ4c3IpCisjZGVm aW5lIGNwdV9oYXNfc3NlICAgICAgIChjcC5iYXNpYy5zc2UpCisjZGVmaW5lIGNwdV9oYXNfc3Nl MiAgICAgIChjcC5iYXNpYy5zc2UyKQorI2RlZmluZSBjcHVfaGFzX3NzZTMgICAgICAoY3AuYmFz aWMuc3NlMykKKyNkZWZpbmUgY3B1X2hhc19mbWEgICAgICAgKHhjcjBfbWFzayg2KSAmJiBjcC5i YXNpYy5mbWEpCisjZGVmaW5lIGNwdV9oYXNfc3NlNF8xICAgIChjcC5iYXNpYy5zc2U0XzEpCisj ZGVmaW5lIGNwdV9oYXNfc3NlNF8yICAgIChjcC5iYXNpYy5zc2U0XzIpCisjZGVmaW5lIGNwdV9o YXNfcG9wY250ICAgIChjcC5iYXNpYy5wb3BjbnQpCisjZGVmaW5lIGNwdV9oYXNfYXZ4ICAgICAg ICh4Y3IwX21hc2soNikgJiYgY3AuYmFzaWMuYXZ4KQorI2RlZmluZSBjcHVfaGFzX2YxNmMgICAg ICAoeGNyMF9tYXNrKDYpICYmIGNwLmJhc2ljLmYxNmMpCisKKyNkZWZpbmUgY3B1X2hhc19hdngy ICAgICAgKHhjcjBfbWFzayg2KSAmJiBjcC5mZWF0LmF2eDIpCisjZGVmaW5lIGNwdV9oYXNfYm1p MSAgICAgIChjcC5mZWF0LmJtaTEpCisjZGVmaW5lIGNwdV9oYXNfYm1pMiAgICAgIChjcC5mZWF0 LmJtaTIpCisjZGVmaW5lIGNwdV9oYXNfYXZ4NTEyZiAgICh4Y3IwX21hc2soMHhlNikgJiYgY3Au ZmVhdC5hdng1MTJmKQorI2RlZmluZSBjcHVfaGFzX2F2eDUxMmRxICAoeGNyMF9tYXNrKDB4ZTYp ICYmIGNwLmZlYXQuYXZ4NTEyZHEpCisjZGVmaW5lIGNwdV9oYXNfYXZ4NTEyYncgICh4Y3IwX21h c2soMHhlNikgJiYgY3AuZmVhdC5hdng1MTJidykKKworI2RlZmluZSBjcHVfaGFzX3hnZXRidjEg ICAoY3B1X2hhc194c2F2ZSAmJiBjcC54c3RhdGUueGdldGJ2MSkKKworI2RlZmluZSBjcHVfaGFz XzNkbm93X2V4dCAoY3AuZXh0ZC5fM2Rub3dleHQpCisjZGVmaW5lIGNwdV9oYXNfc3NlNGEgICAg IChjcC5leHRkLnNzZTRhKQorI2RlZmluZSBjcHVfaGFzX3hvcCAgICAgICAoeGNyMF9tYXNrKDYp ICYmIGNwLmV4dGQueG9wKQorI2RlZmluZSBjcHVfaGFzX2ZtYTQgICAgICAoeGNyMF9tYXNrKDYp ICYmIGNwLmV4dGQuZm1hNCkKKyNkZWZpbmUgY3B1X2hhc190Ym0gICAgICAgKGNwLmV4dGQudGJt KQogCiBpbnQgZW11bF90ZXN0X2NwdWlkKAogICAgIHVpbnQzMl90IGxlYWYsCi0tIAoyLjEuNAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlz dHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=