From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrew Cooper Subject: [PATCH v8 12/17] x86/entry: Organise the use of MSR_SPEC_CTRL at each entry/exit point Date: Fri, 12 Jan 2018 18:01:02 +0000 Message-ID: <1515780067-31735-13-git-send-email-andrew.cooper3@citrix.com> References: <1515780067-31735-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: <1515780067-31735-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 List-Id: xen-devel@lists.xenproject.org V2UgbmVlZCB0byBiZSBhYmxlIHRvIGVpdGhlciBzZXQgb3IgY2xlYXIgSUJSUyBpbiBYZW4gY29u dGV4dCwgYXMgd2VsbCBhcwpyZXN0b3JlIGFwcHJvcHJpYXRlIGd1ZXN0IHZhbHVlcyBpbiBndWVz dCBjb250ZXh0LiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGluCmFzbS14ODYvc3BlY19jdHJsX2Fz bS5oIGZvciBkZXRhaWxzLgoKVGhlcmUgaXMgYSBzZW1pLXVucmVsYXRlZCBidWdmaXgsIHdoZXJl IHZhcmlvdXMgYXNtX2RlZm4uaCBtYWNyb3MgaGF2ZSBhCmhpZGRlbiBkZXBlbmRlbmN5IG9uIFBB R0VfU0laRSwgd2hpY2ggcmVzdWx0cyBpbiBhbiBhc3NlbWJsZXIgZXJyb3IgaWYgdXNlZCBpbgph IC5tYWNybyBkZWZpbml0aW9uLgoKU2lnbmVkLW9mZi1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3 LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCnY3OgogKiBTcGVsbGluZyBmaXhlcwogKiBSZXBvc2l0 aW9uIHRoZSBzZW1pY29sb24gZml4LgotLS0KIHhlbi9hcmNoL3g4Ni9odm0vc3ZtL2VudHJ5LlMg ICAgICAgIHwgICA4ICstCiB4ZW4vYXJjaC94ODYvaHZtL3ZteC9lbnRyeS5TICAgICAgICB8ICAx MSArKwogeGVuL2FyY2gveDg2L3NldHVwLmMgICAgICAgICAgICAgICAgfCAgIDEgKwogeGVuL2Fy Y2gveDg2L3NtcGJvb3QuYyAgICAgICAgICAgICAgfCAgIDIgKwogeGVuL2FyY2gveDg2L3g4Nl82 NC9hc20tb2Zmc2V0cy5jICAgfCAgIDYgKwogeGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvZW50 cnkuUyAgfCAgMTIgKysKIHhlbi9hcmNoL3g4Ni94ODZfNjQvZW50cnkuUyAgICAgICAgIHwgIDMz ICsrKysrKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVmbnMuaCAgICAgfCAgIDMgKwogeGVu L2luY2x1ZGUvYXNtLXg4Ni9jdXJyZW50LmggICAgICAgfCAgIDYgKwogeGVuL2luY2x1ZGUvYXNt LXg4Ni9ub3BzLmggICAgICAgICAgfCAgIDYgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9zcGVjX2N0 cmwuaCAgICAgfCAgIDkgKysKIHhlbi9pbmNsdWRlL2FzbS14ODYvc3BlY19jdHJsX2FzbS5oIHwg MjMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMTIgZmlsZXMgY2hhbmdl ZCwgMzI2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4 ZW4vaW5jbHVkZS9hc20teDg2L3NwZWNfY3RybF9hc20uaAoKZGlmZiAtLWdpdCBhL3hlbi9hcmNo L3g4Ni9odm0vc3ZtL2VudHJ5LlMgYi94ZW4vYXJjaC94ODYvaHZtL3N2bS9lbnRyeS5TCmluZGV4 IGRmODZkYTAuLmZiMTA0OGIgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vc3ZtL2VudHJ5 LlMKKysrIGIveGVuL2FyY2gveDg2L2h2bS9zdm0vZW50cnkuUwpAQCAtNzksNiArNzksOSBAQCBV TkxJS0VMWV9FTkQoc3ZtX3RyYWNlKQogICAgICAgICBvciAgICRYODZfRUZMQUdTX01CUywlcmF4 CiAgICAgICAgIG1vdiAgJXJheCxWTUNCX3JmbGFncyglcmN4KQogCisgICAgICAgIC8qIFdBUk5J TkchIGByZXRgLCBgY2FsbCAqYCwgYGptcCAqYCBub3Qgc2FmZSBiZXlvbmQgdGhpcyBwb2ludC4g Ki8KKyAgICAgICAgU1BFQ19DVFJMX0VYSVRfVE9fR1VFU1QgLyogUmVxOiBiPWN1cnIgJXJzcD1y ZWdzL2NwdWluZm8sIENsb2I6IGFjZCAqLworCiAgICAgICAgIHBvcCAgJXIxNQogICAgICAgICBw b3AgICVyMTQKICAgICAgICAgcG9wICAlcjEzCkBAIC0xMDEsOCArMTA0LDExIEBAIFVOTElLRUxZ X0VORChzdm1fdHJhY2UpCiAgICAgICAgIFNBVkVfQUxMCiAKICAgICAgICAgR0VUX0NVUlJFTlQo YngpCi0gICAgICAgIG1vdiAgVkNQVV9zdm1fdm1jYiglcmJ4KSwlcmN4CiAKKyAgICAgICAgU1BF Q19DVFJMX0VOVFJZX0ZST01fVk1FWElUIC8qIFJlcTogYj1jdXJyICVyc3A9cmVncy9jcHVpbmZv LCBDbG9iOiBhY2QgKi8KKyAgICAgICAgLyogV0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBgam1w ICpgIG5vdCBzYWZlIGJlZm9yZSB0aGlzIHBvaW50LiAqLworCisgICAgICAgIG1vdiAgVkNQVV9z dm1fdm1jYiglcmJ4KSwlcmN4CiAgICAgICAgIG1vdmIgJDAsVkNQVV9zdm1fdm1jYl9pbl9zeW5j KCVyYngpCiAgICAgICAgIG1vdiAgVk1DQl9yYXgoJXJjeCksJXJheAogICAgICAgICBtb3YgICVy YXgsVVJFR1NfcmF4KCVyc3ApCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvaHZtL3ZteC9lbnRy eS5TIGIveGVuL2FyY2gveDg2L2h2bS92bXgvZW50cnkuUwppbmRleCBiMmY5OGJlLi4yMWU5NTlm IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL3ZteC9lbnRyeS5TCisrKyBiL3hlbi9hcmNo L3g4Ni9odm0vdm14L2VudHJ5LlMKQEAgLTM4LDYgKzM4LDkgQEAgRU5UUlkodm14X2FzbV92bWV4 aXRfaGFuZGxlcikKICAgICAgICAgbW92YiAkMSxWQ1BVX3ZteF9sYXVuY2hlZCglcmJ4KQogICAg ICAgICBtb3YgICVyYXgsVkNQVV9odm1fZ3Vlc3RfY3IyKCVyYngpCiAKKyAgICAgICAgU1BFQ19D VFJMX0VOVFJZX0ZST01fVk1FWElUIC8qIFJlcTogYj1jdXJyICVyc3A9cmVncy9jcHVpbmZvLCBD bG9iOiBhY2QgKi8KKyAgICAgICAgLyogV0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBgam1wICpg IG5vdCBzYWZlIGJlZm9yZSB0aGlzIHBvaW50LiAqLworCiAgICAgICAgIG1vdiAgJXJzcCwlcmRp CiAgICAgICAgIGNhbGwgdm14X3ZtZXhpdF9oYW5kbGVyCiAKQEAgLTY4LDYgKzcxLDEwIEBAIFVO TElLRUxZX0VORChyZWFsbW9kZSkKICAgICAgICAgY2FsbCB2bXhfdm1lbnRlcl9oZWxwZXIKICAg ICAgICAgdGVzdCAlYWwsICVhbAogICAgICAgICBqeiAuTHZteF92bWVudHJ5X3Jlc3RhcnQKKwor ICAgICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmV5 b25kIHRoaXMgcG9pbnQuICovCisgICAgICAgIFNQRUNfQ1RSTF9FWElUX1RPX0dVRVNUIC8qIFJl cTogYj1jdXJyICVyc3A9cmVncy9jcHVpbmZvLCBDbG9iOiBhY2QgKi8KKwogICAgICAgICBtb3Yg IFZDUFVfaHZtX2d1ZXN0X2NyMiglcmJ4KSwlcmF4CiAKICAgICAgICAgcG9wICAlcjE1CkBAIC05 OSw2ICsxMDYsMTAgQEAgVU5MSUtFTFlfRU5EKHJlYWxtb2RlKQogLkx2bXhfdm1lbnRyeV9mYWls OgogICAgICAgICBzdGkKICAgICAgICAgU0FWRV9BTEwKKworICAgICAgICBTUEVDX0NUUkxfRU5U UllfRlJPTV9QViAvKiBSZXE6ICVyc3A9cmVncy9jcHVpbmZvIENsb2I6IGFjZCAqLworICAgICAg ICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmVmb3JlIHRo aXMgcG9pbnQuICovCisKICAgICAgICAgY2FsbCB2bXhfdm1lbnRyeV9mYWlsdXJlCiAgICAgICAg IEJVRyAgLyogdm14X3ZtZW50cnlfZmFpbHVyZSgpIHNob3VsZG4ndCByZXR1cm4uICovCiAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9zZXR1cC5jIGIveGVuL2FyY2gveDg2L3NldHVwLmMKaW5k ZXggOTQyNjc2MC4uZDMxZjc3MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3NldHVwLmMKKysr IGIveGVuL2FyY2gveDg2L3NldHVwLmMKQEAgLTY2OCw2ICs2NjgsNyBAQCB2b2lkIF9faW5pdCBu b3JldHVybiBfX3N0YXJ0X3hlbih1bnNpZ25lZCBsb25nIG1iaV9wKQogICAgIHNldF9wcm9jZXNz b3JfaWQoMCk7CiAgICAgc2V0X2N1cnJlbnQoSU5WQUxJRF9WQ1BVKTsgLyogZGVidWcgc2FuaXR5 LiAqLwogICAgIGlkbGVfdmNwdVswXSA9IGN1cnJlbnQ7CisgICAgaW5pdF9zaGFkb3dfc3BlY19j dHJsX3N0YXRlKCk7CiAKICAgICBwZXJjcHVfaW5pdF9hcmVhcygpOwogCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvc21wYm9vdC5jIGIveGVuL2FyY2gveDg2L3NtcGJvb3QuYwppbmRleCA3Yjk3 ZmY4Li5hNjk1ZDEyIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvc21wYm9vdC5jCisrKyBiL3hl bi9hcmNoL3g4Ni9zbXBib290LmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlIDxhc20vZmx1 c2h0bGIuaD4KICNpbmNsdWRlIDxhc20vbXNyLmg+CiAjaW5jbHVkZSA8YXNtL210cnIuaD4KKyNp bmNsdWRlIDxhc20vc3BlY19jdHJsLmg+CiAjaW5jbHVkZSA8YXNtL3RpbWUuaD4KICNpbmNsdWRl IDxhc20vdGJvb3QuaD4KICNpbmNsdWRlIDxtYWNoX2FwaWMuaD4KQEAgLTMwOCw2ICszMDksNyBA QCB2b2lkIHN0YXJ0X3NlY29uZGFyeSh2b2lkICp1bnVzZWQpCiAgICAgc2V0X2N1cnJlbnQoaWRs ZV92Y3B1W2NwdV0pOwogICAgIHRoaXNfY3B1KGN1cnJfdmNwdSkgPSBpZGxlX3ZjcHVbY3B1XTsK ICAgICByZG1zcmwoTVNSX0VGRVIsIHRoaXNfY3B1KGVmZXIpKTsKKyAgICBpbml0X3NoYWRvd19z cGVjX2N0cmxfc3RhdGUoKTsKIAogICAgIC8qCiAgICAgICogSnVzdCBhcyBkdXJpbmcgZWFybHkg Ym9vdHN0cmFwLCBpdCBpcyBjb252ZW5pZW50IGhlcmUgdG8gZGlzYWJsZQpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jIGIveGVuL2FyY2gveDg2L3g4Nl82NC9h c20tb2Zmc2V0cy5jCmluZGV4IGUxMzZhZjYuLjdkMzYxODUgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNo L3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYworKysgYi94ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1v ZmZzZXRzLmMKQEAgLTg4LDYgKzg4LDcgQEAgdm9pZCBfX2R1bW15X18odm9pZCkKICAgICBPRkZT RVQoVkNQVV9rZXJuZWxfc3MsIHN0cnVjdCB2Y3B1LCBhcmNoLnB2X3ZjcHUua2VybmVsX3NzKTsK ICAgICBPRkZTRVQoVkNQVV9pb3BsLCBzdHJ1Y3QgdmNwdSwgYXJjaC5wdl92Y3B1LmlvcGwpOwog ICAgIE9GRlNFVChWQ1BVX2d1ZXN0X2NvbnRleHRfZmxhZ3MsIHN0cnVjdCB2Y3B1LCBhcmNoLnZn Y19mbGFncyk7CisgICAgT0ZGU0VUKFZDUFVfYXJjaF9tc3IsIHN0cnVjdCB2Y3B1LCBhcmNoLm1z cik7CiAgICAgT0ZGU0VUKFZDUFVfbm1pX3BlbmRpbmcsIHN0cnVjdCB2Y3B1LCBubWlfcGVuZGlu Zyk7CiAgICAgT0ZGU0VUKFZDUFVfbWNlX3BlbmRpbmcsIHN0cnVjdCB2Y3B1LCBtY2VfcGVuZGlu Zyk7CiAgICAgT0ZGU0VUKFZDUFVfbm1pX29sZF9tYXNrLCBzdHJ1Y3QgdmNwdSwgbm1pX3N0YXRl Lm9sZF9tYXNrKTsKQEAgLTEzNyw2ICsxMzgsOCBAQCB2b2lkIF9fZHVtbXlfXyh2b2lkKQogICAg IE9GRlNFVChDUFVJTkZPX3Byb2Nlc3Nvcl9pZCwgc3RydWN0IGNwdV9pbmZvLCBwcm9jZXNzb3Jf aWQpOwogICAgIE9GRlNFVChDUFVJTkZPX2N1cnJlbnRfdmNwdSwgc3RydWN0IGNwdV9pbmZvLCBj dXJyZW50X3ZjcHUpOwogICAgIE9GRlNFVChDUFVJTkZPX2NyNCwgc3RydWN0IGNwdV9pbmZvLCBj cjQpOworICAgIE9GRlNFVChDUFVJTkZPX3NoYWRvd19zcGVjX2N0cmwsIHN0cnVjdCBjcHVfaW5m bywgc2hhZG93X3NwZWNfY3RybCk7CisgICAgT0ZGU0VUKENQVUlORk9fdXNlX3NoYWRvd19zcGVj X2N0cmwsIHN0cnVjdCBjcHVfaW5mbywgdXNlX3NoYWRvd19zcGVjX2N0cmwpOwogICAgIERFRklO RShDUFVJTkZPX3NpemVvZiwgc2l6ZW9mKHN0cnVjdCBjcHVfaW5mbykpOwogICAgIEJMQU5LKCk7 CiAKQEAgLTE1Miw2ICsxNTUsOSBAQCB2b2lkIF9fZHVtbXlfXyh2b2lkKQogICAgIE9GRlNFVChU UkFQQk9VTkNFX2VpcCwgc3RydWN0IHRyYXBfYm91bmNlLCBlaXApOwogICAgIEJMQU5LKCk7CiAK KyAgICBPRkZTRVQoVkNQVU1TUl9zcGVjX2N0cmxfaG9zdCwgc3RydWN0IG1zcl92Y3B1X3BvbGlj eSwgc3BlY19jdHJsLmhvc3QpOworICAgIEJMQU5LKCk7CisKICNpZmRlZiBDT05GSUdfUEVSRl9D T1VOVEVSUwogICAgIERFRklORShBU01fUEVSRkNfZXhjZXB0aW9ucywgUEVSRkNfZXhjZXB0aW9u cyk7CiAgICAgQkxBTksoKTsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0 L2VudHJ5LlMgYi94ZW4vYXJjaC94ODYveDg2XzY0L2NvbXBhdC9lbnRyeS5TCmluZGV4IDNmZWE1 NGUuLjQyMmMyNWQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQvY29tcGF0L2VudHJ5 LlMKKysrIGIveGVuL2FyY2gveDg2L3g4Nl82NC9jb21wYXQvZW50cnkuUwpAQCAtMTgsNiArMTgs MTAgQEAgRU5UUlkoZW50cnlfaW50ODIpCiAgICAgICAgIHB1c2hxICQwCiAgICAgICAgIG1vdmwg ICRIWVBFUkNBTExfVkVDVE9SLCA0KCVyc3ApCiAgICAgICAgIFNBVkVfQUxMIGNvbXBhdD0xIC8q IERQTDEgZ2F0ZSwgcmVzdHJpY3RlZCB0byAzMmJpdCBQViBndWVzdHMgb25seS4gKi8KKworICAg ICAgICBTUEVDX0NUUkxfRU5UUllfRlJPTV9QViAvKiBSZXE6ICVyc3A9cmVncy9jcHVpbmZvIENs b2I6IGFjZCAqLworICAgICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAg bm90IHNhZmUgYmVmb3JlIHRoaXMgcG9pbnQuICovCisKICAgICAgICAgQ1I0X1BWMzJfUkVTVE9S RQogCiAgICAgICAgIEdFVF9DVVJSRU5UKGJ4KQpAQCAtMTQyLDYgKzE0NiwxMCBAQCBFTlRSWShj b21wYXRfcmVzdG9yZV9hbGxfZ3Vlc3QpCiAgICAgICAgIC5wb3BzZWN0aW9uCiAgICAgICAgIG9y ICAgICRYODZfRUZMQUdTX0lGLCVyMTEKICAgICAgICAgbW92ICAgJXIxMWQsVVJFR1NfZWZsYWdz KCVyc3ApCisKKyAgICAgICAgLyogV0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBgam1wICpgIG5v dCBzYWZlIGJleW9uZCB0aGlzIHBvaW50LiAqLworICAgICAgICBTUEVDX0NUUkxfRVhJVF9UT19H VUVTVCAvKiBSZXE6IGI9Y3VyciAlcnNwPXJlZ3MvY3B1aW5mbywgQ2xvYjogYWNkICovCisKICAg ICAgICAgUkVTVE9SRV9BTEwgYWRqPTggY29tcGF0PTEKIC5MZnQwOiAgaXJldHEKICAgICAgICAg X0FTTV9QUkVfRVhUQUJMRSguTGZ0MCwgaGFuZGxlX2V4Y2VwdGlvbikKQEAgLTE5OSw2ICsyMDcs MTAgQEAgRU5UUlkoY3N0YXJfZW50ZXIpCiAgICAgICAgIHB1c2hxICQwCiAgICAgICAgIG1vdmwg ICRUUkFQX3N5c2NhbGwsIDQoJXJzcCkKICAgICAgICAgU0FWRV9BTEwKKworICAgICAgICBTUEVD X0NUUkxfRU5UUllfRlJPTV9QViAvKiBSZXE6ICVyc3A9cmVncy9jcHVpbmZvIENsb2I6IGFjZCAq LworICAgICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUg YmVmb3JlIHRoaXMgcG9pbnQuICovCisKICAgICAgICAgR0VUX0NVUlJFTlQoYngpCiAgICAgICAg IG1vdnEgIFZDUFVfZG9tYWluKCVyYngpLCVyY3gKICAgICAgICAgY21wYiAgJDAsRE9NQUlOX2lz XzMyYml0X3B2KCVyY3gpCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMg Yi94ZW4vYXJjaC94ODYveDg2XzY0L2VudHJ5LlMKaW5kZXggY2JkNzNmNi4uZTRlMjE5MyAxMDA2 NDQKLS0tIGEveGVuL2FyY2gveDg2L3g4Nl82NC9lbnRyeS5TCisrKyBiL3hlbi9hcmNoL3g4Ni94 ODZfNjQvZW50cnkuUwpAQCAtMzcsNiArMzcsMTAgQEAgRU5UUlkoc3dpdGNoX3RvX2tlcm5lbCkK IC8qICVyYng6IHN0cnVjdCB2Y3B1LCBpbnRlcnJ1cHRzIGRpc2FibGVkICovCiByZXN0b3JlX2Fs bF9ndWVzdDoKICAgICAgICAgQVNTRVJUX0lOVEVSUlVQVFNfRElTQUJMRUQKKworICAgICAgICAv KiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmV5b25kIHRoaXMg cG9pbnQuICovCisgICAgICAgIFNQRUNfQ1RSTF9FWElUX1RPX0dVRVNUIC8qIFJlcTogYj1jdXJy ICVyc3A9cmVncy9jcHVpbmZvLCBDbG9iOiBhY2QgKi8KKwogICAgICAgICBSRVNUT1JFX0FMTAog ICAgICAgICB0ZXN0dyAkVFJBUF9zeXNjYWxsLDQoJXJzcCkKICAgICAgICAganogICAgaXJldF9l eGl0X3RvX2d1ZXN0CkBAIC03MSw2ICs3NSw4IEBAIGlyZXRfZXhpdF90b19ndWVzdDoKICAgICAg ICAgQUxJR04KIC8qIE5vIHNwZWNpYWwgcmVnaXN0ZXIgYXNzdW1wdGlvbnMuICovCiByZXN0b3Jl X2FsbF94ZW46CisgICAgICAgIC8qIFdBUk5JTkchIGByZXRgLCBgY2FsbCAqYCwgYGptcCAqYCBu b3Qgc2FmZSBiZXlvbmQgdGhpcyBwb2ludC4gKi8KKyAgICAgICAgU1BFQ19DVFJMX0VYSVRfVE9f WEVOIC8qIFJlcTogbm90aGluZyAgICAgICAgICAgQ2xvYjogYWNkICovCiAgICAgICAgIFJFU1RP UkVfQUxMIGFkaj04CiAgICAgICAgIGlyZXRxCiAKQEAgLTEwMCw2ICsxMDYsMTAgQEAgRU5UUlko bHN0YXJfZW50ZXIpCiAgICAgICAgIHB1c2hxICQwCiAgICAgICAgIG1vdmwgICRUUkFQX3N5c2Nh bGwsIDQoJXJzcCkKICAgICAgICAgU0FWRV9BTEwKKworICAgICAgICBTUEVDX0NUUkxfRU5UUllf RlJPTV9QViAvKiBSZXE6ICVyc3A9cmVncy9jcHVpbmZvIENsb2I6IGFjZCAqLworICAgICAgICAv KiBXQVJOSU5HISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmVmb3JlIHRoaXMg cG9pbnQuICovCisKICAgICAgICAgR0VUX0NVUlJFTlQoYngpCiAgICAgICAgIHRlc3RiICRURl9r ZXJuZWxfbW9kZSxWQ1BVX3RocmVhZF9mbGFncyglcmJ4KQogICAgICAgICBqeiAgICBzd2l0Y2hf dG9fa2VybmVsCkBAIC0xOTIsNiArMjAyLDEwIEBAIEdMT0JBTChzeXNlbnRlcl9lZmxhZ3Nfc2F2 ZWQpCiAgICAgICAgIHB1c2hxICQwCiAgICAgICAgIG1vdmwgICRUUkFQX3N5c2NhbGwsIDQoJXJz cCkKICAgICAgICAgU0FWRV9BTEwKKworICAgICAgICBTUEVDX0NUUkxfRU5UUllfRlJPTV9QViAv KiBSZXE6ICVyc3A9cmVncy9jcHVpbmZvIENsb2I6IGFjZCAqLworICAgICAgICAvKiBXQVJOSU5H ISBgcmV0YCwgYGNhbGwgKmAsIGBqbXAgKmAgbm90IHNhZmUgYmVmb3JlIHRoaXMgcG9pbnQuICov CisKICAgICAgICAgR0VUX0NVUlJFTlQoYngpCiAgICAgICAgIGNtcGIgICQwLFZDUFVfc3lzZW50 ZXJfZGlzYWJsZXNfZXZlbnRzKCVyYngpCiAgICAgICAgIG1vdnEgIFZDUFVfc3lzZW50ZXJfYWRk ciglcmJ4KSwlcmF4CkBAIC0yMjgsNiArMjQyLDkgQEAgRU5UUlkoaW50ODBfZGlyZWN0X3RyYXAp CiAgICAgICAgIG1vdmwgICQweDgwLCA0KCVyc3ApCiAgICAgICAgIFNBVkVfQUxMCiAKKyAgICAg ICAgU1BFQ19DVFJMX0VOVFJZX0ZST01fUFYgLyogUmVxOiAlcnNwPXJlZ3MvY3B1aW5mbyBDbG9i OiBhY2QgKi8KKyAgICAgICAgLyogV0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBgam1wICpgIG5v dCBzYWZlIGJlZm9yZSB0aGlzIHBvaW50LiAqLworCiAgICAgICAgIGNtcGIgICQwLHVudHJ1c3Rl ZF9tc2koJXJpcCkKIFVOTElLRUxZX1NUQVJUKG5lLCBtc2lfY2hlY2spCiAgICAgICAgIG1vdmwg ICQweDgwLCVlZGkKQEAgLTM5MSw2ICs0MDgsMTAgQEAgRU5UUlkoZG9tX2NyYXNoX3N5bmNfZXh0 YWJsZSkKIAogRU5UUlkoY29tbW9uX2ludGVycnVwdCkKICAgICAgICAgU0FWRV9BTEwgQ0xBQwor CisgICAgICAgIFNQRUNfQ1RSTF9FTlRSWV9GUk9NX0lOVFIgLyogUmVxOiAlcnNwPXJlZ3MgICAg ICAgICBDbG9iOiBhY2QgKi8KKyAgICAgICAgLyogV0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBg am1wICpgIG5vdCBzYWZlIGJlZm9yZSB0aGlzIHBvaW50LiAqLworCiAgICAgICAgIENSNF9QVjMy X1JFU1RPUkUKICAgICAgICAgbW92cSAlcnNwLCVyZGkKICAgICAgICAgY2FsbHEgZG9fSVJRCkBA IC00MTEsNiArNDMyLDEwIEBAIEVOVFJZKHBhZ2VfZmF1bHQpCiAvKiBObyBzcGVjaWFsIHJlZ2lz dGVyIGFzc3VtcHRpb25zLiAqLwogR0xPQkFMKGhhbmRsZV9leGNlcHRpb24pCiAgICAgICAgIFNB VkVfQUxMIENMQUMKKworICAgICAgICBTUEVDX0NUUkxfRU5UUllfRlJPTV9JTlRSIC8qIFJlcTog JXJzcD1yZWdzICAgICAgICAgQ2xvYjogYWNkICovCisgICAgICAgIC8qIFdBUk5JTkchIGByZXRg LCBgY2FsbCAqYCwgYGptcCAqYCBub3Qgc2FmZSBiZWZvcmUgdGhpcyBwb2ludC4gKi8KKwogaGFu ZGxlX2V4Y2VwdGlvbl9zYXZlZDoKICAgICAgICAgR0VUX0NVUlJFTlQoYngpCiAgICAgICAgIHRl c3RiICRYODZfRUZMQUdTX0lGPj44LFVSRUdTX2VmbGFncysxKCVyc3ApCkBAIC01ODYsNiArNjEx LDEwIEBAIEVOVFJZKGRvdWJsZV9mYXVsdCkKICAgICAgICAgbW92bCAgJFRSQVBfZG91YmxlX2Zh dWx0LDQoJXJzcCkKICAgICAgICAgLyogU2V0IEFDIHRvIHJlZHVjZSBjaGFuY2Ugb2YgZnVydGhl ciBTTUFQIGZhdWx0cyAqLwogICAgICAgICBTQVZFX0FMTCBTVEFDCisKKyAgICAgICAgU1BFQ19D VFJMX0VOVFJZX0ZST01fSU5UUiAvKiBSZXE6ICVyc3A9cmVncyBDbG9iOiBhY2QgKi8KKyAgICAg ICAgLyogV0FSTklORyEgYHJldGAsIGBjYWxsICpgLCBgam1wICpgIG5vdCBzYWZlIGJlZm9yZSB0 aGlzIHBvaW50LiAqLworCiAgICAgICAgIG1vdnEgICVyc3AsJXJkaQogICAgICAgICBjYWxsICBk b19kb3VibGVfZmF1bHQKICAgICAgICAgQlVHICAgLyogZG9fZG91YmxlX2ZhdWx0KCkgc2hvdWxk bid0IHJldHVybi4gKi8KQEAgLTYwNCw2ICs2MzMsMTAgQEAgRU5UUlkobm1pKQogICAgICAgICBt b3ZsICAkVFJBUF9ubWksNCglcnNwKQogaGFuZGxlX2lzdF9leGNlcHRpb246CiAgICAgICAgIFNB VkVfQUxMIENMQUMKKworICAgICAgICBTUEVDX0NUUkxfRU5UUllfRlJPTV9JTlRSIC8qIFJlcTog JXJzcD1yZWdzIENsb2I6IGFjZCAqLworICAgICAgICAvKiBXQVJOSU5HISBgcmV0YCwgYGNhbGwg KmAsIGBqbXAgKmAgbm90IHNhZmUgYmVmb3JlIHRoaXMgcG9pbnQuICovCisKICAgICAgICAgQ1I0 X1BWMzJfUkVTVE9SRQogICAgICAgICB0ZXN0YiAkMyxVUkVHU19jcyglcnNwKQogICAgICAgICBq eiAgICAxZgpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVmbnMuaCBiL3hl bi9pbmNsdWRlL2FzbS14ODYvYXNtX2RlZm5zLmgKaW5kZXggNDBiMDI1MC4uYmMxMDE2NyAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9hc21fZGVmbnMuaAorKysgYi94ZW4vaW5jbHVk ZS9hc20teDg2L2FzbV9kZWZucy5oCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgPGFzbS9hc20t b2Zmc2V0cy5oPgogI2VuZGlmCiAjaW5jbHVkZSA8YXNtL2J1Zy5oPgorI2luY2x1ZGUgPGFzbS9w YWdlLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgogI2luY2x1ZGUgPGFzbS9wZXJjcHUu aD4KICNpbmNsdWRlIDx4ZW4vc3RyaW5naWZ5Lmg+CkBAIC0zNDQsNCArMzQ1LDYgQEAgc3RhdGlj IGFsd2F5c19pbmxpbmUgdm9pZCBzdGFjKHZvaWQpCiAjZGVmaW5lIFJFWDY0X1BSRUZJWCAicmV4 NjQvIgogI2VuZGlmCiAKKyNpbmNsdWRlIDxhc20vc3BlY19jdHJsX2FzbS5oPgorCiAjZW5kaWYg LyogX19YODZfQVNNX0RFRk5TX0hfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9jdXJyZW50LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaAppbmRleCA4OTg0OTky Li43NDlkN2FhIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaAorKysg Yi94ZW4vaW5jbHVkZS9hc20teDg2L2N1cnJlbnQuaApAQCAtNDEsNiArNDEsMTIgQEAgc3RydWN0 IGNwdV9pbmZvIHsKICAgICBzdHJ1Y3QgdmNwdSAqY3VycmVudF92Y3B1OwogICAgIHVuc2lnbmVk IGxvbmcgcGVyX2NwdV9vZmZzZXQ7CiAgICAgdW5zaWduZWQgbG9uZyBjcjQ7CisKKyAgICAvKiBT ZWUgYXNtLXg4Ni9zcGVjX2N0cmxfYXNtLmggZm9yIHVzYWdlLiAqLworICAgIHVuc2lnbmVkIGlu dCBzaGFkb3dfc3BlY19jdHJsOworICAgIGJvb2wgICAgICAgICB1c2Vfc2hhZG93X3NwZWNfY3Ry bDsKKworICAgIHVuc2lnbmVkIGxvbmcgX19wYWQ7CiAgICAgLyogZ2V0X3N0YWNrX2JvdHRvbSgp IG11c3QgYmUgMTYtYnl0ZSBhbGlnbmVkICovCiB9OwogCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9hc20teDg2L25vcHMuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbm9wcy5oCmluZGV4IDFhNDZi OTcuLjE3MzhiYTYgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbm9wcy5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvbm9wcy5oCkBAIC02NSw2ICs2NSwxMiBAQAogI2RlZmluZSBB U01fTk9QOCBfQVNNX01LX05PUChQNl9OT1A4KQogI2RlZmluZSBBU01fTk9QOSBfQVNNX01LX05P UChQNl9OT1A5KQogCisjZGVmaW5lIEFTTV9OT1AyMiBBU01fTk9QODsgQVNNX05PUDg7IEFTTV9O T1A2CisjZGVmaW5lIEFTTV9OT1AyNiBBU01fTk9QODsgQVNNX05PUDg7IEFTTV9OT1A4OyBBU01f Tk9QMgorI2RlZmluZSBBU01fTk9QMzIgQVNNX05PUDg7IEFTTV9OT1A4OyBBU01fTk9QODsgQVNN X05PUDgKKyNkZWZpbmUgQVNNX05PUDMzIEFTTV9OT1A4OyBBU01fTk9QODsgQVNNX05PUDg7IEFT TV9OT1A3OyBBU01fTk9QMgorI2RlZmluZSBBU01fTk9QMzggQVNNX05PUDg7IEFTTV9OT1A4OyBB U01fTk9QODsgQVNNX05PUDg7IEFTTV9OT1A2CisKICNkZWZpbmUgQVNNX05PUF9NQVggOQogCiAj ZW5kaWYgLyogX19YODZfQVNNX05PUFNfSF9fICovCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20teDg2L3NwZWNfY3RybC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9zcGVjX2N0cmwuaAppbmRl eCA3N2Y3YzYwLi40NTgxNGQwIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3NwZWNf Y3RybC5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvc3BlY19jdHJsLmgKQEAgLTIyLDYgKzIy LDggQEAKIAogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogCisjaW5jbHVkZSA8YXNtL2N1cnJlbnQu aD4KKwogdm9pZCBpbml0X3NwZWN1bGF0aW9uX21pdGlnYXRpb25zKHZvaWQpOwogCiAvKgpAQCAt NDMsNiArNDUsMTMgQEAgc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgc3BlY19jdHJsX2hvc3Rf dmFsKGNvbnN0IHN0cnVjdCBkb21haW4gKmQsCiAgICAgICAgIHJldHVybiBndWVzdF92YWw7CiB9 CiAKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbml0X3NoYWRvd19zcGVjX2N0cmxfc3RhdGUodm9pZCkK K3sKKyAgICBzdHJ1Y3QgY3B1X2luZm8gKmluZm8gPSBnZXRfY3B1X2luZm8oKTsKKworICAgIGlu Zm8tPnNoYWRvd19zcGVjX2N0cmwgPSBpbmZvLT51c2Vfc2hhZG93X3NwZWNfY3RybCA9IDA7Cit9 CisKICNlbmRpZiAvKiAhX19YODZfU1BFQ19DVFJMX0hfXyAqLwogCiAvKgpkaWZmIC0tZ2l0IGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9zcGVjX2N0cmxfYXNtLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L3NwZWNfY3RybF9hc20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzgw YTNkCi0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9zcGVjX2N0cmxfYXNt LmgKQEAgLTAsMCArMSwyMzAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGluY2x1ZGUv YXNtLXg4Ni9zcGVjX2N0cmwuaAorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAq CisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAxOCBDaXRyaXggU3lzdGVtcyBMdGQuCisgKi8KKwor I2lmbmRlZiBfX1g4Nl9TUEVDX0NUUkxfQVNNX0hfXworI2RlZmluZSBfX1g4Nl9TUEVDX0NUUkxf QVNNX0hfXworCisjaWZkZWYgX19BU1NFTUJMWV9fCisjaW5jbHVkZSA8YXNtL21zci5oPgorCisv KgorICogU2F2aW5nIGFuZCByZXN0b3JpbmcgTVNSX1NQRUNfQ1RSTCBzdGF0ZSBpcyBhIGxpdHRs ZSB0cmlja3kuCisgKgorICogV2Ugd2FudCB0aGUgZ3Vlc3RzIGNob2ljZSBvZiBTUEVDX0NUUkwg d2hpbGUgaW4gZ3Vlc3QgY29udGV4dCwgYW5kIElCUlMKKyAqIChzZXQgb3IgY2xlYXIsIGRlcGVu ZGluZyBvbiB0aGUgaGFyZHdhcmUpIHdoaWxlIHJ1bm5pbmcgaW4gWGVuIGNvbnRleHQuCisgKiBU aGVyZWZvcmUsIGEgc2ltcGxpc3RpYyBhbGdvcml0aG0gaXM6CisgKgorICogIC0gU2V0L2NsZWFy IElCUlMgb24gZW50cnkgdG8gWGVuCisgKiAgLSBTZXQgdGhlIGd1ZXN0cycgY2hvaWNlIG9uIGV4 aXQgdG8gZ3Vlc3QKKyAqICAtIExlYXZlIFNQRUNfQ1RSTCB1bmNoYW5nZWQgb24gZXhpdCB0byB4 ZW4KKyAqCisgKiBUaGVyZSBhcmUgdHdvIGNvbXBsaWNhdGluZyBmYWN0b3JzOgorICogIDEpIEhW TSBndWVzdHMgY2FuIGhhdmUgZGlyZWN0IGFjY2VzcyB0byB0aGUgTVNSLCBzbyBpdCBjYW4gY2hh bmdlCisgKiAgICAgYmVoaW5kIFhlbidzIGJhY2suCisgKiAgMikgQW4gTk1JIG9yIE1DRSBjYW4g aW50ZXJydXB0IGF0IGFueSBwb2ludCwgaW5jbHVkaW5nIGVhcmx5IGluIHRoZSBlbnRyeQorICog ICAgIHBhdGgsIG9yIGxhdGUgaW4gdGhlIGV4aXQgcGF0aCBhZnRlciByZXN0b3JpbmcgdGhlIGd1 ZXN0IHZhbHVlLiAgVGhpcworICogICAgIHdpbGwgY29ycnVwdCB0aGUgZ3Vlc3QgdmFsdWUuCisg KgorICogRmFjdG9yIDEgaXMgZGVhbHQgd2l0aCBieSByZWx5aW5nIG9uIE5NSXMvTUNFcyBiZWlu ZyBibG9ja2VkIGltbWVkaWF0ZWx5CisgKiBhZnRlciBWTUVYSVQuICBUaGUgVk1FWElULXNwZWNp ZmljIGNvZGUgcmVhZHMgTVNSX1NQRUNfQ1RSTCBhbmQgdXBkYXRlcworICogY3VycmVudCBiZWZv cmUgbG9hZGluZyBYZW4ncyBNU1JfU1BFQ19DVFJMIHNldHRpbmcuCisgKgorICogRmFjdG9yIDIg aXMgaGFyZGVyLiAgV2UgbWFpbnRhaW4gYSBzaGFkb3dfc3BlY19jdHJsIHZhbHVlLCBhbmQKKyAq IHVzZV9zaGFkb3dfc3BlY19jdHJsIGJvb2xlYW4gcGVyIGNwdS4gIFRoZSBzeW5jaHJvbm91cyB1 c2UgaXM6CisgKgorICogIDEpIFN0b3JlIGd1ZXN0IHZhbHVlIGluIHNoYWRvd19zcGVjX2N0cmwK KyAqICAyKSBTZXQgdXNlX3NoYWRvd19zcGVjX2N0cmwgYm9vbGVhbgorICogIDMpIExvYWQgZ3Vl c3QgdmFsdWUgaW50byBNU1JfU1BFQ19DVFJMCisgKiAgNCkgRXhpdCB0byBndWVzdAorICogIDUp IEVudHJ5IGZyb20gZ3Vlc3QKKyAqICA2KSBDbGVhciB1c2Vfc2hhZG93X3NwZWNfY3RybCBib29s ZWFuCisgKgorICogVGhlIGFzeW5jaHJvbm91cyB1c2UgZm9yIGludGVycnVwdHMvZXhjZXB0aW9u cyBpczoKKyAqICAtICBTZXQvY2xlYXIgSUJSUyBvbiBlbnRyeSB0byBYZW4KKyAqICAtICBPbiBl eGl0IHRvIFhlbiwgY2hlY2sgdXNlX3NoYWRvd19zcGVjX2N0cmwKKyAqICAtICBJZiBzZXQsIGxv YWQgc2hhZG93X3NwZWNfY3RybAorICoKKyAqIFRoZXJlZm9yZSwgYW4gaW50ZXJydXB0L2V4Y2Vw dGlvbiB3aGljaCBoaXRzIHRoZSBzeW5jaHJvbm91cyBwYXRoIGJldHdlZW4KKyAqIHN0ZXBzIDIg YW5kIDYgd2lsbCByZXN0b3JlIHRoZSBzaGFkb3cgdmFsdWUgcmF0aGVyIHRoYW4gbGVhdmluZyBY ZW4ncyB2YWx1ZQorICogbG9hZGVkIGFuZCBjb3JydXB0aW5nIHRoZSB2YWx1ZSB1c2VkIGluIGd1 ZXN0IGNvbnRleHQuCisgKgorICogVGhlIGZvbGxvd2luZyBBU00gZnJhZ21lbnRzIGltcGxlbWVu dCB0aGlzIGFsZ29yaXRobS4gIFNlZSB0aGVpciBsb2NhbAorICogY29tbWVudHMgZm9yIGZ1cnRo ZXIgZGV0YWlscy4KKyAqICAtIFNQRUNfQ1RSTF9FTlRSWV9GUk9NX1ZNRVhJVAorICogIC0gU1BF Q19DVFJMX0VOVFJZX0ZST01fUFYKKyAqICAtIFNQRUNfQ1RSTF9FTlRSWV9GUk9NX0lOVFIKKyAq ICAtIFNQRUNfQ1RSTF9FWElUX1RPX1hFTgorICogIC0gU1BFQ19DVFJMX0VYSVRfVE9fR1VFU1QK KyAqLworCisubWFjcm8gRE9fU1BFQ19DVFJMX0VOVFJZX0ZST01fVk1FWElUIGlicnNfdmFsOnJl cQorLyoKKyAqIFJlcXVpcmVzICVyYng9Y3VycmVudCwgJXJzcD1yZWdzL2NwdWluZm8KKyAqIENs b2JiZXJzICVyYXgsICVyY3gsICVyZHgKKyAqCisgKiBUaGUgY29tbW9uIGNhc2UgaXMgdGhhdCBh IGd1ZXN0IGhhcyBkaXJlY3QgYWNjZXNzIHRvIE1TUl9TUEVDX0NUUkwsIGF0CisgKiB3aGljaCBw b2ludCB3ZSBuZWVkIHRvIHNhdmUgdGhlIGd1ZXN0IHZhbHVlIGJlZm9yZSBzZXR0aW5nIElCUlMg Zm9yIFhlbi4KKyAqIFVuaWxhdGVyYWxseSBzYXZpbmcgdGhlIGd1ZXN0IHZhbHVlIGlzIHNob3J0 ZXIgYW5kIGZhc3RlciB0aGFuIGNoZWNraW5nLgorICovCisgICAgbW92ICRNU1JfU1BFQ19DVFJM LCAlZWN4CisgICAgcmRtc3IKKworICAgIC8qIFN0YXNoIHRoZSB2YWx1ZSBmcm9tIGhhcmR3YXJl LiAqLworICAgIG1vdiBWQ1BVX2FyY2hfbXNyKCVyYngpLCAlcmR4CisgICAgbW92ICVhbCwgVkNQ VU1TUl9zcGVjX2N0cmxfaG9zdCglcmR4KQorICAgIHhvciAlZWR4LCAlZWR4CisKKyAgICAvKiBD bGVhciBTUEVDX0NUUkwgc2hhZG93aW5nICpiZWZvcmUqIGxvYWRpbmcgWGVuJ3MgdmFsdWUuICov CisgICAgbW92YiAlZGwsIENQVUlORk9fdXNlX3NoYWRvd19zcGVjX2N0cmwoJXJzcCkKKworICAg IC8qIExvYWQgWGVuJ3MgaW50ZW5kZWQgdmFsdWUuICovCisgICAgbW92ICRcaWJyc192YWwsICVl YXgKKyAgICB3cm1zcgorLmVuZG0KKworLm1hY3JvIERPX1NQRUNfQ1RSTF9FTlRSWSBtYXliZXhl bjpyZXEgaWJyc192YWw6cmVxCisvKgorICogUmVxdWlyZXMgJXJzcD1yZWdzIChhbHNvIGNwdWlu Zm8gaWYgIW1heWJleGVuKQorICogQ2xvYmJlcnMgJXJheCwgJXJjeCwgJXJkeAorICoKKyAqIFBW IGd1ZXN0cyBjYW4ndCB1cGRhdGUgTVNSX1NQRUNfQ1RSTCBiZWhpbmQgWGVuJ3MgYmFjaywgc28g bm8gbmVlZCB0byByZWFkCisgKiBpdCBiYWNrLiAgRW50cmllcyBmcm9tIGd1ZXN0IGNvbnRleHQg bmVlZCB0byBjbGVhciBTUEVDX0NUUkwgc2hhZG93aW5nLAorICogd2hpbGUgZW50cmllcyBmcm9t IFhlbiBtdXN0IGxlYXZlIHNoYWRvd2luZyBpbiBpdHMgY3VycmVudCBzdGF0ZS4KKyAqLworICAg IG1vdiAkTVNSX1NQRUNfQ1RSTCwgJWVjeAorCisgICAgLmlmIFxtYXliZXhlbgorICAgICAgICBj bXB3ICRfX0hZUEVSVklTT1JfQ1MsIFVSRUdTX2NzKCVyc3ApCisgICAgICAgIGplIC5MZW50cnlf ZnJvbV94ZW5cQAorICAgIC5lbmRpZgorCisgICAgLyoKKyAgICAgKiBDbGVhciBTUEVDX0NUUkwg c2hhZG93aW5nICpiZWZvcmUqIGxvYWRpbmcgWGVuJ3MgdmFsdWUuICBJZiBlbnRlcmluZworICAg ICAqIGZyb20gYSBwb3NzaWJseS14ZW4gY29udGV4dCwgJXJzcCBkb2Vzbid0IG5lY2Vzc2FyaWx5 IGFsaWFzIHRoZSBjcHVpbmZvCisgICAgICogYmxvY2sgc28gY2FsY3VsYXRlIHRoZSBwb3NpdGlv biBkaXJlY3RseS4KKyAgICAgKi8KKyAgICAuaWYgXG1heWJleGVuCisgICAgICAgIEdFVF9TVEFD S19FTkQoZHgpCisgICAgICAgIG1vdmIgJDAsIFNUQUNLX0NQVUlORk9fRklFTEQodXNlX3NoYWRv d19zcGVjX2N0cmwpKCVyZHgpCisgICAgLmVsc2UKKyAgICAgICAgbW92YiAkMCwgQ1BVSU5GT191 c2Vfc2hhZG93X3NwZWNfY3RybCglcnNwKQorICAgIC5lbmRpZgorCisuTGVudHJ5X2Zyb21feGVu XEA6CisgICAgLyogTG9hZCBYZW4ncyBpbnRlbmRlZCB2YWx1ZS4gKi8KKyAgICBtb3YgJFxpYnJz X3ZhbCwgJWVheAorICAgIHhvciAlZWR4LCAlZWR4CisgICAgd3Jtc3IKKy5lbmRtCisKKy5tYWNy byBET19TUEVDX0NUUkxfRVhJVF9UT19YRU4KKy8qCisgKiBSZXF1aXJlcyBub3RoaW5nCisgKiBD bG9iYmVycyAlcmF4LCAlcmN4LCAlcmR4CisgKgorICogV2hlbiByZXR1cm5pbmcgdG8gWGVuIGNv bnRleHQsIGxvb2sgdG8gc2VlIHdoZXRoZXIgU1BFQ19DVFJMIHNoYWRvd2luZyBpcworICogaW4g ZWZmZWN0LCBhbmQgcmVsb2FkIHRoZSBzaGFkb3cgdmFsdWUuICBUaGlzIGNvdmVycyByYWNlIGNv bmRpdGlvbnMgd2hpY2gKKyAqIGV4aXN0IHdpdGggYW4gTk1JL01DRS9ldGMgaGl0dGluZyBsYXRl IGluIHRoZSByZXR1cm4tdG8tZ3Vlc3QgcGF0aC4KKyAqLworICAgIEdFVF9TVEFDS19FTkQoZHgp CisgICAgY21wYiAkMCwgU1RBQ0tfQ1BVSU5GT19GSUVMRCh1c2Vfc2hhZG93X3NwZWNfY3RybCko JXJkeCkKKyAgICBqZSAuTGVuZF9cQAorCisgICAgbW92IFNUQUNLX0NQVUlORk9fRklFTEQoc2hh ZG93X3NwZWNfY3RybCkoJXJkeCksICVlYXgKKyAgICBtb3YgJE1TUl9TUEVDX0NUUkwsICVlY3gK KyAgICB4b3IgJWVkeCwgJWVkeAorICAgIHdybXNyCisKKy5MZW5kX1xAOgorLmVuZG0KKworLm1h Y3JvIERPX1NQRUNfQ1RSTF9FWElUX1RPX0dVRVNUCisvKgorICogUmVxdWlyZXMgJXJieD1jdXJy ZW50LCAlcnNwPXJlZ3MvY3B1aW5mbworICogQ2xvYmJlcnMgJXJheCwgJXJjeCwgJXJkeAorICoK KyAqIFdoZW4gcmV0dXJuaW5nIHRvIGd1ZXN0IGNvbnRleHQsIHNldCB1cCBTUEVDX0NUUkwgc2hh ZG93aW5nIGFuZCBsb2FkIHRoZQorICogZ3Vlc3QgdmFsdWUuCisgKi8KKyAgICBtb3YgVkNQVV9h cmNoX21zciglcmJ4KSwgJXJkeAorICAgIG1vdiBWQ1BVTVNSX3NwZWNfY3RybF9ob3N0KCVyZHgp LCAlZWF4CisKKyAgICAvKiBTZXQgdXAgc2hhZG93IHZhbHVlICpiZWZvcmUqIGVuYWJsaW5nIHNo YWRvd2luZy4gKi8KKyAgICBtb3YgJWVheCwgQ1BVSU5GT19zaGFkb3dfc3BlY19jdHJsKCVyc3Ap CisKKyAgICAvKiBTZXQgU1BFQ19DVFJMIHNoYWRvd2luZyAqYmVmb3JlKiBsb2FkaW5nIHRoZSBn dWVzdCB2YWx1ZS4gKi8KKyAgICBtb3ZiICQxLCBDUFVJTkZPX3VzZV9zaGFkb3dfc3BlY19jdHJs KCVyc3ApCisKKyAgICBtb3YgJE1TUl9TUEVDX0NUUkwsICVlY3gKKyAgICB4b3IgJWVkeCwgJWVk eAorICAgIHdybXNyCisuZW5kbQorCisvKiBVc2UgYWZ0ZXIgYSBWTUVYSVQgZnJvbSBhbiBIVk0g Z3Vlc3QuICovCisjZGVmaW5lIFNQRUNfQ1RSTF9FTlRSWV9GUk9NX1ZNRVhJVCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQUxURVJOQVRJVkVfMiBfX3N0cmluZ2lm eShBU01fTk9QMzIpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9f c3RyaW5naWZ5KERPX1NQRUNfQ1RSTF9FTlRSWV9GUk9NX1ZNRVhJVCAgICAgICAgICAgICAgICAg ICAgICBcCisgICAgICAgICAgICAgICAgICAgIGlicnNfdmFsPVNQRUNfQ1RSTF9JQlJTKSwgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFg4Nl9GRUFUVVJFX1hFTl9JQlJTX1NF VCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fc3Ry aW5naWZ5KERPX1NQRUNfQ1RSTF9FTlRSWV9GUk9NX1ZNRVhJVCAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgICAgICAgICAgICAgICAgIGlicnNfdmFsPTApLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFg4Nl9GRUFUVVJFX1hFTl9JQlJTX0NMRUFS CisKKy8qIFVzZSBhZnRlciBhbiBlbnRyeSBmcm9tIFBWIGNvbnRleHQgKHN5c2NhbGwvc3lzZW50 ZXIvaW50ODAvaW50ODIvZXRjKS4gKi8KKyNkZWZpbmUgU1BFQ19DVFJMX0VOVFJZX0ZST01fUFYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBBTFRFUk5BVElW RV8yIF9fc3RyaW5naWZ5KEFTTV9OT1AyMiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgX19zdHJpbmdpZnkoRE9fU1BFQ19DVFJMX0VOVFJZIG1heWJleGVuPTAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgaWJyc192YWw9U1BFQ19D VFJMX0lCUlMpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgWDg2X0ZFQVRV UkVfWEVOX0lCUlNfU0VULCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KyAgICAgICAgX19zdHJpbmdpZnkoRE9fU1BFQ19DVFJMX0VOVFJZIG1heWJleGVuPTAgaWJyc192 YWw9MCksICAgICAgICAgIFwKKyAgICAgICAgWDg2X0ZFQVRVUkVfWEVOX0lCUlNfQ0xFQVIKKwor LyogVXNlIGluIGludGVycnVwdC9leGNlcHRpb24gY29udGV4dC4gIE1heSBpbnRlcnJ1cHQgWGVu IG9yIFBWIGNvbnRleHQuICovCisjZGVmaW5lIFNQRUNfQ1RSTF9FTlRSWV9GUk9NX0lOVFIgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQUxURVJOQVRJVkVfMiBf X3N0cmluZ2lmeShBU01fTk9QMzgpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg ICAgICAgIF9fc3RyaW5naWZ5KERPX1NQRUNfQ1RSTF9FTlRSWSBtYXliZXhlbj0xICAgICAgICAg ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgIGlicnNfdmFsPVNQRUNfQ1RSTF9J QlJTKSwgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFg4Nl9GRUFUVVJFX1hF Tl9JQlJTX1NFVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg ICAgIF9fc3RyaW5naWZ5KERPX1NQRUNfQ1RSTF9FTlRSWSBtYXliZXhlbj0xIGlicnNfdmFsPTAp LCAgICAgICAgICBcCisgICAgICAgIFg4Nl9GRUFUVVJFX1hFTl9JQlJTX0NMRUFSCisKKy8qIFVz ZSB3aGVuIGV4aXRpbmcgdG8gWGVuIGNvbnRleHQuICovCisjZGVmaW5lIFNQRUNfQ1RSTF9FWElU X1RPX1hFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg QUxURVJOQVRJVkVfMiBfX3N0cmluZ2lmeShBU01fTk9QMjYpLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgIERPX1NQRUNfQ1RSTF9FWElUX1RPX1hFTiwgWDg2X0ZFQVRV UkVfWEVOX0lCUlNfU0VULCAgICAgICAgICAgICBcCisgICAgICAgIERPX1NQRUNfQ1RSTF9FWElU X1RPX1hFTiwgWDg2X0ZFQVRVUkVfWEVOX0lCUlNfQ0xFQVIKKworLyogVXNlIHdoZW4gZXhpdGlu ZyB0byBndWVzdCBjb250ZXh0LiAqLworI2RlZmluZSBTUEVDX0NUUkxfRVhJVF9UT19HVUVTVCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEFMVEVSTkFUSVZF XzIgX19zdHJpbmdpZnkoQVNNX05PUDMzKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorICAgICAgICBET19TUEVDX0NUUkxfRVhJVF9UT19HVUVTVCwgWDg2X0ZFQVRVUkVfWEVOX0lC UlNfU0VULCAgICAgICAgICAgXAorICAgICAgICBET19TUEVDX0NUUkxfRVhJVF9UT19HVUVTVCwg WDg2X0ZFQVRVUkVfWEVOX0lCUlNfQ0xFQVIKKworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLwor I2VuZGlmIC8qICFfX1g4Nl9TUEVDX0NUUkxfQVNNX0hfXyAqLworCisvKgorICogTG9jYWwgdmFy aWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1v ZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBF bmQ6CisgKi8KLS0gCjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJv amVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hl bi1kZXZlbA==