From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v4 2/2] x86/hvm/viridian: Enable APIC assist enlightenment Date: Thu, 17 Mar 2016 08:37:33 +0000 Message-ID: <1458203853-4441-3-git-send-email-paul.durrant@citrix.com> References: <1458203853-4441-1-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1agTbZ-0001EK-L7 for xen-devel@lists.xenproject.org; Thu, 17 Mar 2016 08:48:29 +0000 In-Reply-To: <1458203853-4441-1-git-send-email-paul.durrant@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: Wei Liu , Stefano Stabellini , Andrew Cooper , Ian Jackson , Paul Durrant , Jan Beulich , Keir Fraser List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBhZGRzIGNvZGUgdG8gZW5hYmxlIHRoZSBBUElDIGFzc2lzdCBlbmxpZ2h0ZW5t ZW50IHdoaWNoLAp1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIG1lYW5zIHRoYXQgdGhlIGd1ZXN0 IGNhbiBhdm9pZCBhbiBFT0kgb2YKdGhlIGxvY2FsIEFQSUMgYW5kIHRoZXJlYnkgYXZvaWQgYSBW TUVYSVQuCgpVc2Ugb2YgdGhlIGVubGlnaHRlbm1lbnQgYnkgdGhlIGh5cGVydmlzb3IgaXMgdW5k ZXIgY29udHJvbCBvZiB0aGUKdG9vbHN0YWNrLCBhbmQgaXMgYWRkZWQgdG8gdGhlIGRlZmF1bHQg c2V0LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNv bT4KQ2M6IElhbiBKYWNrc29uIDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogU3RlZmFu byBTdGFiZWxsaW5pIDxzdGVmYW5vLnN0YWJlbGxpbmlAZXUuY2l0cml4LmNvbT4KQ2M6IFdlaSBM aXUgPHdlaS5saXUyQGNpdHJpeC5jb20+CkNjOiBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgpD YzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5k cmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KLS0tCgp2NDoKIC0gUmUtd29yZGVkIHhsLmNmZyB0ZXh0 IGFuZCBhZGRlZCBtaXNzaW5nIExJQlhMX0hBVkVfIGRlZmluaXRpb24KCnYzOgogLSBSZS1pbnN0 YXRlZCByZWFkLW1vZGlmeS13cml0ZSBmb3IgZm9yd2FyZHMgY29tcGF0aWJpbGl0eQogLSBGaXgg YSBjb2Rpbmcgc3R5bGUgaXNzdWUKCnYyOgogLSBSZW1vdmVkIHNvbWUgY29kZSBkdXBsaWNhdGlv biBhbmQgdW5uZWNlc3NhcnkgcmVhZC1tb2RpZnktd3JpdGUKICAgb3BlcmF0aW9ucyBvbiB0aGUg QVBJQyBhc3Npc3Qgd29yZC4KIC0gU3RhdGVkIGluIHRoZSB4bC5jZmcgdGV4dCB0aGF0IHRoZSBl bmxpZ2h0ZW5tZW50IGhhcyBubyBlZmZlY3QgaWYKICAgcG9zdGVkIGludGVycnVwdHMgYXJlIGlu IHVzZS4KIC0gQWRkZWQgdGhlIGVubGlnaHRlbm1lbnQgdG8gdGhlIGRlZmF1bHQgc2V0LgotLS0K IGRvY3MvbWFuL3hsLmNmZy5wb2QuNSAgICAgICAgICAgICAgfCAxMiArKysrKysrLQogdG9vbHMv bGlieGwvbGlieGwuaCAgICAgICAgICAgICAgICB8ICA2ICsrKysKIHRvb2xzL2xpYnhsL2xpYnhs X2RvbS5jICAgICAgICAgICAgfCAgNCArKysKIHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAg ICAgICAgfCAgMSArCiB4ZW4vYXJjaC94ODYvaHZtL3ZpcmlkaWFuLmMgICAgICAgIHwgNTkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0KIHhlbi9hcmNoL3g4Ni9odm0vdmxh cGljLmMgICAgICAgICAgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0t CiB4ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oIHwgIDUgKysrKwogeGVuL2luY2x1 ZGUvcHVibGljL2h2bS9wYXJhbXMuaCAgICB8ICA3ICsrKystCiA4IGZpbGVzIGNoYW5nZWQsIDEz OSBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2NzL21hbi94 bC5jZmcucG9kLjUgYi9kb2NzL21hbi94bC5jZmcucG9kLjUKaW5kZXggNTZiMTExNy4uYWJmNjM4 YyAxMDA2NDQKLS0tIGEvZG9jcy9tYW4veGwuY2ZnLnBvZC41CisrKyBiL2RvY3MvbWFuL3hsLmNm Zy5wb2QuNQpAQCAtMTQ4NCwxMCArMTQ4NCwyMCBAQCBUaGlzIHNldCBpbmNvcnBvcmF0ZXMgdXNl IG9mIGh5cGVyY2FsbHMgZm9yIHJlbW90ZSBUTEIgZmx1c2hpbmcuCiBUaGlzIGVubGlnaHRlbm1l bnQgbWF5IGltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgV2luZG93cyBndWVzdHMgcnVubmluZwogb24g aG9zdHMgd2l0aCBoaWdoZXIgbGV2ZWxzIG9mIChwaHlzaWNhbCkgQ1BVIGNvbnRlbnRpb24uCiAK Kz1pdGVtIEI8YXBpY19hc3Npc3Q+CisKK1RoaXMgc2V0IGluY29ycG9yYXRlcyB1c2Ugb2YgdGhl IEFQSUMgYXNzaXN0IHBhZ2UgdG8gYXZvaWQgRU9JIG9mCit0aGUgbG9jYWwgQVBJQy4KK1RoaXMg ZW5saWdodGVubWVudCBtYXkgaW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBndWVzdHMgdGhhdCBtYWtl IHVzZSBvZgorcGVyLXZjcHUgZXZlbnQgY2hhbm5lbCB1cGNhbGwgdmVjdG9ycy4KK05vdGUgdGhh dCB0aGlzIGVubGlnaHRlbm1lbnQgd2lsbCBoYXZlIG5vIGVmZmVjdCBpZiB0aGUgZ3Vlc3QgaXMK K3VzaW5nIEFQSUN2IHBvc3RlZCBpbnRlcnJ1cHRzLgorCiA9aXRlbSBCPGRlZmF1bHRzPgogCiBU aGlzIGlzIGEgc3BlY2lhbCB2YWx1ZSB0aGF0IGVuYWJsZXMgdGhlIGRlZmF1bHQgc2V0IG9mIGdy b3Vwcywgd2hpY2gKLWlzIGN1cnJlbnRseSB0aGUgQjxiYXNlPiwgQjxmcmVxPiBhbmQgQjx0aW1l X3JlZl9jb3VudD4gZ3JvdXBzLgoraXMgY3VycmVudGx5IHRoZSBCPGJhc2U+LCBCPGZyZXE+LCBC PHRpbWVfcmVmX2NvdW50PiBhbmQgQjxhcGljX2Fzc2lzdD4KK2dyb3Vwcy4KIAogPWl0ZW0gQjxh bGw+CiAKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsLmggYi90b29scy9saWJ4bC9saWJ4 bC5oCmluZGV4IGY5ZTNlZjUuLjA1NWE3YjQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhs LmgKKysrIGIvdG9vbHMvbGlieGwvbGlieGwuaApAQCAtMjE4LDYgKzIxOCwxMiBAQAogI2RlZmlu ZSBMSUJYTF9IQVZFX1NPRlRfUkVTRVQgMQogCiAvKgorICogTElCWExfSEFWRV9BUElDX0FTU0lT VCBpbmRpY2F0ZXMgdGhhdCB0aGUgJ2FwaWNfYXNzaXN0JyB2YWx1ZQorICogaXMgcHJlc2VudCBp biB0aGUgdmlyaWRpYW4gZW5saWdodGVubWVudCBlbnVtZXJhdGlvbi4KKyAqLworI2RlZmluZSBM SUJYTF9IQVZFX0FQSUNfQVNTSVNUIDEKKworLyoKICAqIGxpYnhsIEFCSSBjb21wYXRpYmlsaXR5 CiAgKgogICogVGhlIG9ubHkgZ3VhcmFudGVlIHdoaWNoIGxpYnhsIG1ha2VzIHJlZ2FyZGluZyBB QkkgY29tcGF0aWJpbGl0eQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfZG9tLmMgYi90 b29scy9saWJ4bC9saWJ4bF9kb20uYwppbmRleCBiODI1Yjk4Li4wOWQzYmNhIDEwMDY0NAotLS0g YS90b29scy9saWJ4bC9saWJ4bF9kb20uYworKysgYi90b29scy9saWJ4bC9saWJ4bF9kb20uYwpA QCAtMjExLDYgKzIxMSw3IEBAIHN0YXRpYyBpbnQgaHZtX3NldF92aXJpZGlhbl9mZWF0dXJlcyhs aWJ4bF9fZ2MgKmdjLCB1aW50MzJfdCBkb21pZCwKICAgICAgICAgbGlieGxfYml0bWFwX3NldCgm ZW5saWdodGVubWVudHMsIExJQlhMX1ZJUklESUFOX0VOTElHSFRFTk1FTlRfQkFTRSk7CiAgICAg ICAgIGxpYnhsX2JpdG1hcF9zZXQoJmVubGlnaHRlbm1lbnRzLCBMSUJYTF9WSVJJRElBTl9FTkxJ R0hURU5NRU5UX0ZSRVEpOwogICAgICAgICBsaWJ4bF9iaXRtYXBfc2V0KCZlbmxpZ2h0ZW5tZW50 cywgTElCWExfVklSSURJQU5fRU5MSUdIVEVOTUVOVF9USU1FX1JFRl9DT1VOVCk7CisgICAgICAg IGxpYnhsX2JpdG1hcF9zZXQoJmVubGlnaHRlbm1lbnRzLCBMSUJYTF9WSVJJRElBTl9FTkxJR0hU RU5NRU5UX0FQSUNfQVNTSVNUKTsKICAgICB9CiAKICAgICBsaWJ4bF9mb3JfZWFjaF9zZXRfYml0 KHYsIGluZm8tPnUuaHZtLnZpcmlkaWFuX2VuYWJsZSkgewpAQCAtMjUzLDYgKzI1NCw5IEBAIHN0 YXRpYyBpbnQgaHZtX3NldF92aXJpZGlhbl9mZWF0dXJlcyhsaWJ4bF9fZ2MgKmdjLCB1aW50MzJf dCBkb21pZCwKICAgICBpZiAobGlieGxfYml0bWFwX3Rlc3QoJmVubGlnaHRlbm1lbnRzLCBMSUJY TF9WSVJJRElBTl9FTkxJR0hURU5NRU5UX0hDQUxMX1JFTU9URV9UTEJfRkxVU0gpKQogICAgICAg ICBtYXNrIHw9IEhWTVBWX2hjYWxsX3JlbW90ZV90bGJfZmx1c2g7CiAKKyAgICBpZiAobGlieGxf Yml0bWFwX3Rlc3QoJmVubGlnaHRlbm1lbnRzLCBMSUJYTF9WSVJJRElBTl9FTkxJR0hURU5NRU5U X0FQSUNfQVNTSVNUKSkKKyAgICAgICAgbWFzayB8PSBIVk1QVl9hcGljX2Fzc2lzdDsKKwogICAg IGlmIChtYXNrICE9IDAgJiYKICAgICAgICAgeGNfaHZtX3BhcmFtX3NldChDVFgtPnhjaCwKICAg ICAgICAgICAgICAgICAgICAgICAgICBkb21pZCwKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xp YnhsX3R5cGVzLmlkbCBiL3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbAppbmRleCA2MzJjMDA5 Li5lM2JlOTU3IDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKKysrIGIv dG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCkBAIC0yMjEsNiArMjIxLDcgQEAgbGlieGxfdmly aWRpYW5fZW5saWdodGVubWVudCA9IEVudW1lcmF0aW9uKCJ2aXJpZGlhbl9lbmxpZ2h0ZW5tZW50 IiwgWwogICAgICgyLCAidGltZV9yZWZfY291bnQiKSwKICAgICAoMywgInJlZmVyZW5jZV90c2Mi KSwKICAgICAoNCwgImhjYWxsX3JlbW90ZV90bGJfZmx1c2giKSwKKyAgICAoNSwgImFwaWNfYXNz aXN0IiksCiAgICAgXSkKIAogbGlieGxfaGR0eXBlID0gRW51bWVyYXRpb24oImhkdHlwZSIsIFsK ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmlyaWRpYW4uYyBiL3hlbi9hcmNoL3g4Ni9o dm0vdmlyaWRpYW4uYwppbmRleCBiODA5MTE4Li5lNDVkY2I3IDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvaHZtL3ZpcmlkaWFuLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCkBA IC0yMjcsMTEgKzIyNyw2IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfYXBpY19hc3Npc3Qoc3Ry dWN0IHZjcHUgKnYpCiAgICAgdm9pZCAqdmE7CiAKICAgICAvKgotICAgICAqIFdlIGRvbid0IHll dCBtYWtlIHVzZSBvZiB0aGUgQVBJQyBhc3Npc3QgcGFnZSBidXQgYnkgc2V0dGluZwotICAgICAq IHRoZSBDUFVJRDNBX01TUl9BUElDX0FDQ0VTUyBiaXQgaW4gQ1BVSUQgbGVhZiA0MDAwMDAwMyB3 ZSBhcmUgZHV0eQotICAgICAqIGJvdW5kIHRvIHN1cHBvcnQgdGhlIE1TUi4gV2UgdGhlcmVmb3Jl IGRvIGp1c3QgZW5vdWdoIHRvIGtlZXAgd2luZG93cwotICAgICAqIGhhcHB5LgotICAgICAqCiAg ICAgICogU2VlIHNlY3Rpb24gMTMuMy40LjEgb2YgdGhlIHNwZWNpZmljYXRpb24gZm9yIGRldGFp bHMgb2YgdGhpcwogICAgICAqIGVubGlnaHRlbm1lbnQuCiAgICAgICovCkBAIC0yNTYsNiArMjUx LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikK IAogICAgIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBpY19hc3Npc3QucGFnZSA9IHBhZ2U7 CiAgICAgdi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC52YSA9IHZhOworICAg IHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBpY19hc3Npc3QudmVjdG9yID0gLTE7CiAgICAg cmV0dXJuOwogCiAgZmFpbDoKQEAgLTI2Myw2ICsyNTksNTkgQEAgc3RhdGljIHZvaWQgaW5pdGlh bGl6ZV9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikKICAgICAgICAgICAgICBwYWdlID8gcGFn ZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01GTik7CiB9CiAKK3N0YXRpYyB1aW50MzJfdCAqZ2V0 X2FwaWNfYXNzaXN0X3dvcmQoc3RydWN0IHZjcHUgKnYpCit7CisgICAgaWYgKCAhKHZpcmlkaWFu X2ZlYXR1cmVfbWFzayh2LT5kb21haW4pICYgSFZNUFZfYXBpY19hc3Npc3QpICkKKyAgICAgICAg cmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gdi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGlj X2Fzc2lzdC52YTsKK30KKwordm9pZCB2aXJpZGlhbl9zdGFydF9hcGljX2Fzc2lzdChzdHJ1Y3Qg dmNwdSAqdiwgaW50IHZlY3RvcikKK3sKKyAgICB1aW50MzJfdCAqdmEgPSBnZXRfYXBpY19hc3Np c3Rfd29yZCh2KTsKKworICAgIGlmICggIXZhICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoK KyAgICAgKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFuIGFzc2lzdCBwZW5kaW5nIHRoZW4gc29tZXRo aW5nIGhhcyBnb25lCisgICAgICogd3JvbmcgYW5kIHRoZSBWTSB3aWxsIG1vc3QgbGlrZWx5IGhh bmcgc28gZm9yY2UgYSBjcmFzaCBub3cKKyAgICAgKiB0byBtYWtlIHRoZSBwcm9ibGVtIGNsZWFy LgorICAgICAqLworICAgIGlmICggdi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lz dC52ZWN0b3IgPj0gMCApCisgICAgICAgIGRvbWFpbl9jcmFzaCh2LT5kb21haW4pOworCisgICAg di0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC52ZWN0b3IgPSB2ZWN0b3I7Cisg ICAgKnZhIHw9IDF1OworfQorCitib29sX3QgdmlyaWRpYW5fY29tcGxldGVfYXBpY19hc3Npc3Qo c3RydWN0IHZjcHUgKnYsIGludCAqdmVjdG9yKQoreworICAgIHVpbnQzMl90ICp2YSA9IGdldF9h cGljX2Fzc2lzdF93b3JkKHYpOworCisgICAgaWYgKCAhdmEgKQorICAgICAgICByZXR1cm4gMDsK KworICAgIGlmICggKnZhICYgMXUgKQorICAgICAgICByZXR1cm4gMDsgLyogSW50ZXJydXB0IG5v dCB5ZXQgcHJvY2Vzc2VkIGJ5IHRoZSBndWVzdCAqLworCisgICAgKnZlY3RvciA9IHYtPmFyY2gu aHZtX3ZjcHUudmlyaWRpYW4uYXBpY19hc3Npc3QudmVjdG9yOworICAgIHYtPmFyY2guaHZtX3Zj cHUudmlyaWRpYW4uYXBpY19hc3Npc3QudmVjdG9yID0gLTE7CisgICAgcmV0dXJuIDE7Cit9CisK K3ZvaWQgdmlyaWRpYW5fYWJvcnRfYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCit7CisgICAg dWludDMyX3QgKnZhID0gZ2V0X2FwaWNfYXNzaXN0X3dvcmQodik7CisKKyAgICBpZiAoICF2YSAp CisgICAgICAgIHJldHVybjsKKworICAgICp2YSAmPSB+MXU7CisgICAgdi0+YXJjaC5odm1fdmNw dS52aXJpZGlhbi5hcGljX2Fzc2lzdC52ZWN0b3IgPSAtMTsKK30KKwogc3RhdGljIHZvaWQgdGVh cmRvd25fYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgc3RydWN0IHBhZ2VfaW5m byAqcGFnZSA9IHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBpY19hc3Npc3QucGFnZTsKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9odm0vdmxhcGljLmMgYi94ZW4vYXJjaC94ODYvaHZtL3Zs YXBpYy5jCmluZGV4IDAxYTg0MzAuLmFhYzQyNjMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9o dm0vdmxhcGljLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYwpAQCAtMzgsNiArMzgs NyBAQAogI2luY2x1ZGUgPGFzbS9odm0vc3VwcG9ydC5oPgogI2luY2x1ZGUgPGFzbS9odm0vdm14 L3ZteC5oPgogI2luY2x1ZGUgPGFzbS9odm0vbmVzdGVkaHZtLmg+CisjaW5jbHVkZSA8YXNtL2h2 bS92aXJpZGlhbi5oPgogI2luY2x1ZGUgPHB1YmxpYy9odm0vaW9yZXEuaD4KICNpbmNsdWRlIDxw dWJsaWMvaHZtL3BhcmFtcy5oPgogCkBAIC05NSw2ICs5NiwxOCBAQCBzdGF0aWMgaW50IHZsYXBp Y19maW5kX2hpZ2hlc3RfdmVjdG9yKGNvbnN0IHZvaWQgKmJpdG1hcCkKICAgICByZXR1cm4gKGZs cyh3b3JkW3dvcmRfb2Zmc2V0KjRdKSAtIDEpICsgKHdvcmRfb2Zmc2V0ICogMzIpOwogfQogCitz dGF0aWMgaW50IHZsYXBpY19maW5kX2xvd2VzdF92ZWN0b3IoY29uc3Qgdm9pZCAqYml0bWFwKQor eworICAgIGNvbnN0IHVpbnQzMl90ICp3b3JkID0gYml0bWFwOworICAgIHVuc2lnbmVkIGludCB3 b3JkX29mZnNldDsKKworICAgIC8qIFdvcmsgZm9yd2FyZHMgdGhyb3VnaCB0aGUgYml0bWFwIChm aXJzdCAzMi1iaXQgd29yZCBpbiBldmVyeSBmb3VyKS4gKi8KKyAgICBmb3IgKCB3b3JkX29mZnNl dCA9IDA7IHdvcmRfb2Zmc2V0IDwgTlJfVkVDVE9SUyAvIDMyOyB3b3JkX29mZnNldCsrKQorICAg ICAgICBpZiAoIHdvcmRbd29yZF9vZmZzZXQgKiA0XSApCisgICAgICAgICAgICByZXR1cm4gKGZm cyh3b3JkW3dvcmRfb2Zmc2V0ICogNF0pIC0gMSkgKyAod29yZF9vZmZzZXQgKiAzMik7CisKKyAg ICByZXR1cm4gLTE7Cit9CiAKIC8qCiAgKiBJUlItc3BlY2lmaWMgYml0bWFwIHVwZGF0ZSAmIHNl YXJjaCByb3V0aW5lcy4KQEAgLTExNTcsNyArMTE3MCw3IEBAIGludCB2bGFwaWNfdmlydHVhbF9p bnRyX2RlbGl2ZXJ5X2VuYWJsZWQodm9pZCkKIGludCB2bGFwaWNfaGFzX3BlbmRpbmdfaXJxKHN0 cnVjdCB2Y3B1ICp2KQogewogICAgIHN0cnVjdCB2bGFwaWMgKnZsYXBpYyA9IHZjcHVfdmxhcGlj KHYpOwotICAgIGludCBpcnIsIGlzcjsKKyAgICBpbnQgaXJyLCB2ZWN0b3IsIGlzcjsKIAogICAg IGlmICggIXZsYXBpY19lbmFibGVkKHZsYXBpYykgKQogICAgICAgICByZXR1cm4gLTE7CkBAIC0x MTcwLDEwICsxMTgzLDI3IEBAIGludCB2bGFwaWNfaGFzX3BlbmRpbmdfaXJxKHN0cnVjdCB2Y3B1 ICp2KQogICAgICAgICAgIW5lc3RlZGh2bV92Y3B1X2luX2d1ZXN0bW9kZSh2KSApCiAgICAgICAg IHJldHVybiBpcnI7CiAKKyAgICAvKgorICAgICAqIElmIEFQSUMgYXNzaXN0IHdhcyB1c2VkIHRo ZW4gdGhlcmUgbWF5IGhhdmUgYmVlbiBubyBFT0kgc28KKyAgICAgKiB3ZSBuZWVkIHRvIGNsZWFy IHRoZSByZXF1aXNpdGUgYml0IGZyb20gdGhlIElTUiBoZXJlLCBiZWZvcmUKKyAgICAgKiBjb21w YXJpbmcgd2l0aCB0aGUgSVJSLgorICAgICAqLworICAgIGlmICggdmlyaWRpYW5fY29tcGxldGVf YXBpY19hc3Npc3QodiwgJnZlY3RvcikgJiYKKyAgICAgICAgIHZlY3RvciAhPSAtMSApCisgICAg ICAgIHZsYXBpY19jbGVhcl92ZWN0b3IodmVjdG9yLCAmdmxhcGljLT5yZWdzLT5kYXRhW0FQSUNf SVNSXSk7CisKICAgICBpc3IgPSB2bGFwaWNfZmluZF9oaWdoZXN0X2lzcih2bGFwaWMpOwogICAg IGlzciA9IChpc3IgIT0gLTEpID8gaXNyIDogMDsKICAgICBpZiAoIChpc3IgJiAweGYwKSA+PSAo aXJyICYgMHhmMCkgKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhlcmUncyBhbHJl YWR5IGEgaGlnaGVyIHByaW9yaXR5IHZlY3RvciBwZW5kaW5nIHNvCisgICAgICAgICAqIHdlIG5l ZWQgdG8gYWJvcnQgYW55IHByZXZpb3VzIEFQSUMgYXNzaXN0IHRvIGVuc3VyZSB0aGVyZQorICAg ICAgICAgKiBpcyBhbiBFT0kuCisgICAgICAgICAqLworICAgICAgICB2aXJpZGlhbl9hYm9ydF9h cGljX2Fzc2lzdCh2KTsKICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgIHJldHVybiBp cnI7CiB9CkBAIC0xMTgxLDEzICsxMjExLDI5IEBAIGludCB2bGFwaWNfaGFzX3BlbmRpbmdfaXJx KHN0cnVjdCB2Y3B1ICp2KQogaW50IHZsYXBpY19hY2tfcGVuZGluZ19pcnEoc3RydWN0IHZjcHUg KnYsIGludCB2ZWN0b3IsIGJvb2xfdCBmb3JjZV9hY2spCiB7CiAgICAgc3RydWN0IHZsYXBpYyAq dmxhcGljID0gdmNwdV92bGFwaWModik7CisgICAgaW50IGlzcjsKIAotICAgIGlmICggZm9yY2Vf YWNrIHx8ICF2bGFwaWNfdmlydHVhbF9pbnRyX2RlbGl2ZXJ5X2VuYWJsZWQoKSApCi0gICAgewot ICAgICAgICB2bGFwaWNfc2V0X3ZlY3Rvcih2ZWN0b3IsICZ2bGFwaWMtPnJlZ3MtPmRhdGFbQVBJ Q19JU1JdKTsKLSAgICAgICAgdmxhcGljX2NsZWFyX2lycih2ZWN0b3IsIHZsYXBpYyk7Ci0gICAg fQorICAgIGlmICggIWZvcmNlX2FjayAmJgorICAgICAgICAgdmxhcGljX3ZpcnR1YWxfaW50cl9k ZWxpdmVyeV9lbmFibGVkKCkgKQorICAgICAgICByZXR1cm4gMTsKKworICAgIGlmICggdmxhcGlj X3Rlc3RfdmVjdG9yKHZlY3RvciwgJnZsYXBpYy0+cmVncy0+ZGF0YVtBUElDX1RNUl0pICkKKyAg ICAgICAgZ290byBkb25lOworCisgICAgaXNyID0gdmxhcGljX2ZpbmRfbG93ZXN0X3ZlY3Rvcigm dmxhcGljLT5yZWdzLT5kYXRhW0FQSUNfSVNSXSk7CisgICAgaWYgKCBpc3IgPj0gMCAmJiBpc3Ig PCB2ZWN0b3IgKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICAvKgorICAgICAqIFRoaXMgdmVj dG9yIGlzIGVkZ2UgdHJpZ2dlcmVkIGFuZCB0aGVyZSBhcmUgbm8gbG93ZXIgcHJpb3JpdHkKKyAg ICAgKiB2ZWN0b3JzIHBlbmRpbmcsIHNvIHdlIGNhbiB1c2UgQVBJQyBhc3Npc3QgdG8gYXZvaWQg ZXhpdGluZworICAgICAqIGZvciBFT0kuCisgICAgICovCisgICAgdmlyaWRpYW5fc3RhcnRfYXBp Y19hc3Npc3QodiwgdmVjdG9yKTsKIAorZG9uZToKKyAgICB2bGFwaWNfc2V0X3ZlY3Rvcih2ZWN0 b3IsICZ2bGFwaWMtPnJlZ3MtPmRhdGFbQVBJQ19JU1JdKTsKKyAgICB2bGFwaWNfY2xlYXJfaXJy KHZlY3RvciwgdmxhcGljKTsKICAgICByZXR1cm4gMTsKIH0KIApkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9odm0vdmlyaWRpYW4uaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3Zp cmlkaWFuLmgKaW5kZXggZWUzYTEyMC4uZTBhNTIzZSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9odm0vdmlyaWRpYW4uaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJp ZGlhbi5oCkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCB2aXJpZGlhbl92Y3B1CiAgICAgICAgIHVu aW9uIHZpcmlkaWFuX2FwaWNfYXNzaXN0IG1zcjsKICAgICAgICAgc3RydWN0IHBhZ2VfaW5mbyAq cGFnZTsKICAgICAgICAgdm9pZCAqdmE7CisgICAgICAgIGludCB2ZWN0b3I7CiAgICAgfSBhcGlj X2Fzc2lzdDsKIH07CiAKQEAgLTEyMyw2ICsxMjQsMTAgQEAgdm9pZCB2aXJpZGlhbl90aW1lX3Jl Zl9jb3VudF90aGF3KHN0cnVjdCBkb21haW4gKmQpOwogCiB2b2lkIHZpcmlkaWFuX3ZjcHVfZGVp bml0KHN0cnVjdCB2Y3B1ICp2KTsKIAordm9pZCB2aXJpZGlhbl9zdGFydF9hcGljX2Fzc2lzdChz dHJ1Y3QgdmNwdSAqdiwgaW50IHZlY3Rvcik7Citib29sX3QgdmlyaWRpYW5fY29tcGxldGVfYXBp Y19hc3Npc3Qoc3RydWN0IHZjcHUgKnYsIGludCAqdmVjdG9yKTsKK3ZvaWQgdmlyaWRpYW5fYWJv cnRfYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYpOworCiAjZW5kaWYgLyogX19BU01fWDg2X0hW TV9WSVJJRElBTl9IX18gKi8KIAogLyoKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3B1YmxpYy9o dm0vcGFyYW1zLmggYi94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oCmluZGV4IDczZDQ3 MTguLmU2OWM3MmMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3B1YmxpYy9odm0vcGFyYW1zLmgK KysrIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaApAQCAtMTE1LDEyICsxMTUsMTcg QEAKICNkZWZpbmUgX0hWTVBWX2hjYWxsX3JlbW90ZV90bGJfZmx1c2ggNAogI2RlZmluZSBIVk1Q Vl9oY2FsbF9yZW1vdGVfdGxiX2ZsdXNoICgxIDw8IF9IVk1QVl9oY2FsbF9yZW1vdGVfdGxiX2Zs dXNoKQogCisvKiBVc2UgQVBJQyBhc3Npc3QgKi8KKyNkZWZpbmUgX0hWTVBWX2FwaWNfYXNzaXN0 IDUKKyNkZWZpbmUgSFZNUFZfYXBpY19hc3Npc3QgKDEgPDwgX0hWTVBWX2FwaWNfYXNzaXN0KQor CiAjZGVmaW5lIEhWTVBWX2ZlYXR1cmVfbWFzayBcCiAgICAgICAgIChIVk1QVl9iYXNlX2ZyZXEg fCBcCiAgICAgICAgICBIVk1QVl9ub19mcmVxIHwgXAogICAgICAgICAgSFZNUFZfdGltZV9yZWZf Y291bnQgfCBcCiAgICAgICAgICBIVk1QVl9yZWZlcmVuY2VfdHNjIHwgXAotICAgICAgICAgSFZN UFZfaGNhbGxfcmVtb3RlX3RsYl9mbHVzaCkKKyAgICAgICAgIEhWTVBWX2hjYWxsX3JlbW90ZV90 bGJfZmx1c2ggfCBcCisgICAgICAgICBIVk1QVl9hcGljX2Fzc2lzdCkKIAogI2VuZGlmCiAKLS0g CjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK