From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: [PATCH v5 2/2] x86/hvm/viridian: Enable APIC assist enlightenment Date: Thu, 17 Mar 2016 12:13:52 +0000 Message-ID: <1458216832-18378-3-git-send-email-paul.durrant@citrix.com> References: <1458216832-18378-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1agWyV-0003dS-OE for xen-devel@lists.xenproject.org; Thu, 17 Mar 2016 12:24:23 +0000 In-Reply-To: <1458216832-18378-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 dm0vdmlyaWRpYW4uYwppbmRleCBhYmJjYTNjLi4wZjU0OGNlIDEwMDY0NAotLS0gYS94ZW4vYXJj aC94ODYvaHZtL3ZpcmlkaWFuLmMKKysrIGIveGVuL2FyY2gveDg2L2h2bS92aXJpZGlhbi5jCkBA IC0yMjcsMTEgKzIyNyw2IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfYXBpY19hc3Npc3Qoc3Ry dWN0IHZjcHUgKnYpCiAgICAgdm9pZCAqdmE7CiAKICAgICAvKgotICAgICAqIFdlIGRvbid0IHll dCBtYWtlIHVzZSBvZiB0aGUgQVBJQyBhc3Npc3QgcGFnZSBidXQgYnkgc2V0dGluZwotICAgICAq IHRoZSBDUFVJRDNBX01TUl9BUElDX0FDQ0VTUyBiaXQgaW4gQ1BVSUQgbGVhZiA0MDAwMDAwMyB3 ZSBhcmUgZHV0eQotICAgICAqIGJvdW5kIHRvIHN1cHBvcnQgdGhlIE1TUi4gV2UgdGhlcmVmb3Jl IGRvIGp1c3QgZW5vdWdoIHRvIGtlZXAgd2luZG93cwotICAgICAqIGhhcHB5LgotICAgICAqCiAg ICAgICogU2VlIHNlY3Rpb24gMTMuMy40LjEgb2YgdGhlIHNwZWNpZmljYXRpb24gZm9yIGRldGFp bHMgb2YgdGhpcwogICAgICAqIGVubGlnaHRlbm1lbnQuCiAgICAgICovCkBAIC0yNTUsNiArMjUw LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdikK ICAgICAqKHVpbnQzMl90ICopdmEgPSAwOwogCiAgICAgdi0+YXJjaC5odm1fdmNwdS52aXJpZGlh bi5hcGljX2Fzc2lzdC52YSA9IHZhOworICAgIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBp Y19hc3Npc3QudmVjdG9yID0gLTE7CiAgICAgcmV0dXJuOwogCiAgZmFpbDoKQEAgLTI2Miw2ICsy NTgsNTkgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAq dikKICAgICAgICAgICAgICBwYWdlID8gcGFnZV90b19tZm4ocGFnZSkgOiBJTlZBTElEX01GTik7 CiB9CiAKK3N0YXRpYyB1aW50MzJfdCAqZ2V0X2FwaWNfYXNzaXN0X3dvcmQoc3RydWN0IHZjcHUg KnYpCit7CisgICAgaWYgKCAhKHZpcmlkaWFuX2ZlYXR1cmVfbWFzayh2LT5kb21haW4pICYgSFZN UFZfYXBpY19hc3Npc3QpICkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gdi0+ YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC52YTsKK30KKwordm9pZCB2aXJpZGlh bl9zdGFydF9hcGljX2Fzc2lzdChzdHJ1Y3QgdmNwdSAqdiwgaW50IHZlY3RvcikKK3sKKyAgICB1 aW50MzJfdCAqdmEgPSBnZXRfYXBpY19hc3Npc3Rfd29yZCh2KTsKKworICAgIGlmICggIXZhICkK KyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGFu IGFzc2lzdCBwZW5kaW5nIHRoZW4gc29tZXRoaW5nIGhhcyBnb25lCisgICAgICogd3JvbmcgYW5k IHRoZSBWTSB3aWxsIG1vc3QgbGlrZWx5IGhhbmcgc28gZm9yY2UgYSBjcmFzaCBub3cKKyAgICAg KiB0byBtYWtlIHRoZSBwcm9ibGVtIGNsZWFyLgorICAgICAqLworICAgIGlmICggdi0+YXJjaC5o dm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC52ZWN0b3IgPj0gMCApCisgICAgICAgIGRvbWFp bl9jcmFzaCh2LT5kb21haW4pOworCisgICAgdi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGlj X2Fzc2lzdC52ZWN0b3IgPSB2ZWN0b3I7CisgICAgKnZhIHw9IDF1OworfQorCitib29sX3Qgdmly aWRpYW5fY29tcGxldGVfYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUgKnYsIGludCAqdmVjdG9yKQor eworICAgIHVpbnQzMl90ICp2YSA9IGdldF9hcGljX2Fzc2lzdF93b3JkKHYpOworCisgICAgaWYg KCAhdmEgKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGlmICggKnZhICYgMXUgKQorICAgICAg ICByZXR1cm4gMDsgLyogSW50ZXJydXB0IG5vdCB5ZXQgcHJvY2Vzc2VkIGJ5IHRoZSBndWVzdCAq LworCisgICAgKnZlY3RvciA9IHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBpY19hc3Npc3Qu dmVjdG9yOworICAgIHYtPmFyY2guaHZtX3ZjcHUudmlyaWRpYW4uYXBpY19hc3Npc3QudmVjdG9y ID0gLTE7CisgICAgcmV0dXJuIDE7Cit9CisKK3ZvaWQgdmlyaWRpYW5fYWJvcnRfYXBpY19hc3Np c3Qoc3RydWN0IHZjcHUgKnYpCit7CisgICAgdWludDMyX3QgKnZhID0gZ2V0X2FwaWNfYXNzaXN0 X3dvcmQodik7CisKKyAgICBpZiAoICF2YSApCisgICAgICAgIHJldHVybjsKKworICAgICp2YSAm PSB+MXU7CisgICAgdi0+YXJjaC5odm1fdmNwdS52aXJpZGlhbi5hcGljX2Fzc2lzdC52ZWN0b3Ig PSAtMTsKK30KKwogc3RhdGljIHZvaWQgdGVhcmRvd25fYXBpY19hc3Npc3Qoc3RydWN0IHZjcHUg KnYpCiB7CiAgICAgdm9pZCAqdmEgPSB2LT5hcmNoLmh2bV92Y3B1LnZpcmlkaWFuLmFwaWNfYXNz aXN0LnZhOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS92bGFwaWMuYyBiL3hlbi9hcmNo L3g4Ni9odm0vdmxhcGljLmMKaW5kZXggMDFhODQzMC4uYWFjNDI2MyAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2h2bS92bGFwaWMuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL3ZsYXBpYy5jCkBA IC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSA8YXNtL2h2bS9zdXBwb3J0Lmg+CiAjaW5jbHVkZSA8 YXNtL2h2bS92bXgvdm14Lmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9uZXN0ZWRodm0uaD4KKyNpbmNs dWRlIDxhc20vaHZtL3ZpcmlkaWFuLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPgog I2luY2x1ZGUgPHB1YmxpYy9odm0vcGFyYW1zLmg+CiAKQEAgLTk1LDYgKzk2LDE4IEBAIHN0YXRp YyBpbnQgdmxhcGljX2ZpbmRfaGlnaGVzdF92ZWN0b3IoY29uc3Qgdm9pZCAqYml0bWFwKQogICAg IHJldHVybiAoZmxzKHdvcmRbd29yZF9vZmZzZXQqNF0pIC0gMSkgKyAod29yZF9vZmZzZXQgKiAz Mik7CiB9CiAKK3N0YXRpYyBpbnQgdmxhcGljX2ZpbmRfbG93ZXN0X3ZlY3Rvcihjb25zdCB2b2lk ICpiaXRtYXApCit7CisgICAgY29uc3QgdWludDMyX3QgKndvcmQgPSBiaXRtYXA7CisgICAgdW5z aWduZWQgaW50IHdvcmRfb2Zmc2V0OworCisgICAgLyogV29yayBmb3J3YXJkcyB0aHJvdWdoIHRo ZSBiaXRtYXAgKGZpcnN0IDMyLWJpdCB3b3JkIGluIGV2ZXJ5IGZvdXIpLiAqLworICAgIGZvciAo IHdvcmRfb2Zmc2V0ID0gMDsgd29yZF9vZmZzZXQgPCBOUl9WRUNUT1JTIC8gMzI7IHdvcmRfb2Zm c2V0KyspCisgICAgICAgIGlmICggd29yZFt3b3JkX29mZnNldCAqIDRdICkKKyAgICAgICAgICAg IHJldHVybiAoZmZzKHdvcmRbd29yZF9vZmZzZXQgKiA0XSkgLSAxKSArICh3b3JkX29mZnNldCAq IDMyKTsKKworICAgIHJldHVybiAtMTsKK30KIAogLyoKICAqIElSUi1zcGVjaWZpYyBiaXRtYXAg dXBkYXRlICYgc2VhcmNoIHJvdXRpbmVzLgpAQCAtMTE1Nyw3ICsxMTcwLDcgQEAgaW50IHZsYXBp Y192aXJ0dWFsX2ludHJfZGVsaXZlcnlfZW5hYmxlZCh2b2lkKQogaW50IHZsYXBpY19oYXNfcGVu ZGluZ19pcnEoc3RydWN0IHZjcHUgKnYpCiB7CiAgICAgc3RydWN0IHZsYXBpYyAqdmxhcGljID0g dmNwdV92bGFwaWModik7Ci0gICAgaW50IGlyciwgaXNyOworICAgIGludCBpcnIsIHZlY3Rvciwg aXNyOwogCiAgICAgaWYgKCAhdmxhcGljX2VuYWJsZWQodmxhcGljKSApCiAgICAgICAgIHJldHVy biAtMTsKQEAgLTExNzAsMTAgKzExODMsMjcgQEAgaW50IHZsYXBpY19oYXNfcGVuZGluZ19pcnEo c3RydWN0IHZjcHUgKnYpCiAgICAgICAgICAhbmVzdGVkaHZtX3ZjcHVfaW5fZ3Vlc3Rtb2RlKHYp ICkKICAgICAgICAgcmV0dXJuIGlycjsKIAorICAgIC8qCisgICAgICogSWYgQVBJQyBhc3Npc3Qg d2FzIHVzZWQgdGhlbiB0aGVyZSBtYXkgaGF2ZSBiZWVuIG5vIEVPSSBzbworICAgICAqIHdlIG5l ZWQgdG8gY2xlYXIgdGhlIHJlcXVpc2l0ZSBiaXQgZnJvbSB0aGUgSVNSIGhlcmUsIGJlZm9yZQor ICAgICAqIGNvbXBhcmluZyB3aXRoIHRoZSBJUlIuCisgICAgICovCisgICAgaWYgKCB2aXJpZGlh bl9jb21wbGV0ZV9hcGljX2Fzc2lzdCh2LCAmdmVjdG9yKSAmJgorICAgICAgICAgdmVjdG9yICE9 IC0xICkKKyAgICAgICAgdmxhcGljX2NsZWFyX3ZlY3Rvcih2ZWN0b3IsICZ2bGFwaWMtPnJlZ3Mt PmRhdGFbQVBJQ19JU1JdKTsKKwogICAgIGlzciA9IHZsYXBpY19maW5kX2hpZ2hlc3RfaXNyKHZs YXBpYyk7CiAgICAgaXNyID0gKGlzciAhPSAtMSkgPyBpc3IgOiAwOwogICAgIGlmICggKGlzciAm IDB4ZjApID49IChpcnIgJiAweGYwKSApCisgICAgeworICAgICAgICAvKgorICAgICAgICAgKiBU aGVyZSdzIGFscmVhZHkgYSBoaWdoZXIgcHJpb3JpdHkgdmVjdG9yIHBlbmRpbmcgc28KKyAgICAg ICAgICogd2UgbmVlZCB0byBhYm9ydCBhbnkgcHJldmlvdXMgQVBJQyBhc3Npc3QgdG8gZW5zdXJl IHRoZXJlCisgICAgICAgICAqIGlzIGFuIEVPSS4KKyAgICAgICAgICovCisgICAgICAgIHZpcmlk aWFuX2Fib3J0X2FwaWNfYXNzaXN0KHYpOwogICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAg ICAgcmV0dXJuIGlycjsKIH0KQEAgLTExODEsMTMgKzEyMTEsMjkgQEAgaW50IHZsYXBpY19oYXNf cGVuZGluZ19pcnEoc3RydWN0IHZjcHUgKnYpCiBpbnQgdmxhcGljX2Fja19wZW5kaW5nX2lycShz dHJ1Y3QgdmNwdSAqdiwgaW50IHZlY3RvciwgYm9vbF90IGZvcmNlX2FjaykKIHsKICAgICBzdHJ1 Y3QgdmxhcGljICp2bGFwaWMgPSB2Y3B1X3ZsYXBpYyh2KTsKKyAgICBpbnQgaXNyOwogCi0gICAg aWYgKCBmb3JjZV9hY2sgfHwgIXZsYXBpY192aXJ0dWFsX2ludHJfZGVsaXZlcnlfZW5hYmxlZCgp ICkKLSAgICB7Ci0gICAgICAgIHZsYXBpY19zZXRfdmVjdG9yKHZlY3RvciwgJnZsYXBpYy0+cmVn cy0+ZGF0YVtBUElDX0lTUl0pOwotICAgICAgICB2bGFwaWNfY2xlYXJfaXJyKHZlY3Rvciwgdmxh cGljKTsKLSAgICB9CisgICAgaWYgKCAhZm9yY2VfYWNrICYmCisgICAgICAgICB2bGFwaWNfdmly dHVhbF9pbnRyX2RlbGl2ZXJ5X2VuYWJsZWQoKSApCisgICAgICAgIHJldHVybiAxOworCisgICAg aWYgKCB2bGFwaWNfdGVzdF92ZWN0b3IodmVjdG9yLCAmdmxhcGljLT5yZWdzLT5kYXRhW0FQSUNf VE1SXSkgKQorICAgICAgICBnb3RvIGRvbmU7CisKKyAgICBpc3IgPSB2bGFwaWNfZmluZF9sb3dl c3RfdmVjdG9yKCZ2bGFwaWMtPnJlZ3MtPmRhdGFbQVBJQ19JU1JdKTsKKyAgICBpZiAoIGlzciA+ PSAwICYmIGlzciA8IHZlY3RvciApCisgICAgICAgIGdvdG8gZG9uZTsKKworICAgIC8qCisgICAg ICogVGhpcyB2ZWN0b3IgaXMgZWRnZSB0cmlnZ2VyZWQgYW5kIHRoZXJlIGFyZSBubyBsb3dlciBw cmlvcml0eQorICAgICAqIHZlY3RvcnMgcGVuZGluZywgc28gd2UgY2FuIHVzZSBBUElDIGFzc2lz dCB0byBhdm9pZCBleGl0aW5nCisgICAgICogZm9yIEVPSS4KKyAgICAgKi8KKyAgICB2aXJpZGlh bl9zdGFydF9hcGljX2Fzc2lzdCh2LCB2ZWN0b3IpOwogCitkb25lOgorICAgIHZsYXBpY19zZXRf dmVjdG9yKHZlY3RvciwgJnZsYXBpYy0+cmVncy0+ZGF0YVtBUElDX0lTUl0pOworICAgIHZsYXBp Y19jbGVhcl9pcnIodmVjdG9yLCB2bGFwaWMpOwogICAgIHJldHVybiAxOwogfQogCmRpZmYgLS1n aXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9odm0vdmlyaWRpYW4uaAppbmRleCAxOWVjYzA2Li4zMzZlNTQ3IDEwMDY0NAotLS0gYS94 ZW4vaW5jbHVkZS9hc20teDg2L2h2bS92aXJpZGlhbi5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14 ODYvaHZtL3ZpcmlkaWFuLmgKQEAgLTI0LDYgKzI0LDcgQEAgc3RydWN0IHZpcmlkaWFuX3ZjcHUK ICAgICBzdHJ1Y3QgewogICAgICAgICB1bmlvbiB2aXJpZGlhbl9hcGljX2Fzc2lzdCBtc3I7CiAg ICAgICAgIHZvaWQgKnZhOworICAgICAgICBpbnQgdmVjdG9yOwogICAgIH0gYXBpY19hc3Npc3Q7 CiB9OwogCkBAIC0xMjIsNiArMTIzLDEwIEBAIHZvaWQgdmlyaWRpYW5fdGltZV9yZWZfY291bnRf dGhhdyhzdHJ1Y3QgZG9tYWluICpkKTsKIAogdm9pZCB2aXJpZGlhbl92Y3B1X2RlaW5pdChzdHJ1 Y3QgdmNwdSAqdik7CiAKK3ZvaWQgdmlyaWRpYW5fc3RhcnRfYXBpY19hc3Npc3Qoc3RydWN0IHZj cHUgKnYsIGludCB2ZWN0b3IpOworYm9vbF90IHZpcmlkaWFuX2NvbXBsZXRlX2FwaWNfYXNzaXN0 KHN0cnVjdCB2Y3B1ICp2LCBpbnQgKnZlY3Rvcik7Cit2b2lkIHZpcmlkaWFuX2Fib3J0X2FwaWNf YXNzaXN0KHN0cnVjdCB2Y3B1ICp2KTsKKwogI2VuZGlmIC8qIF9fQVNNX1g4Nl9IVk1fVklSSURJ QU5fSF9fICovCiAKIC8qCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFt cy5oIGIveGVuL2luY2x1ZGUvcHVibGljL2h2bS9wYXJhbXMuaAppbmRleCA3M2Q0NzE4Li5lNjlj NzJjIDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9wdWJsaWMvaHZtL3BhcmFtcy5oCisrKyBiL3hl bi9pbmNsdWRlL3B1YmxpYy9odm0vcGFyYW1zLmgKQEAgLTExNSwxMiArMTE1LDE3IEBACiAjZGVm aW5lIF9IVk1QVl9oY2FsbF9yZW1vdGVfdGxiX2ZsdXNoIDQKICNkZWZpbmUgSFZNUFZfaGNhbGxf cmVtb3RlX3RsYl9mbHVzaCAoMSA8PCBfSFZNUFZfaGNhbGxfcmVtb3RlX3RsYl9mbHVzaCkKIAor LyogVXNlIEFQSUMgYXNzaXN0ICovCisjZGVmaW5lIF9IVk1QVl9hcGljX2Fzc2lzdCA1CisjZGVm aW5lIEhWTVBWX2FwaWNfYXNzaXN0ICgxIDw8IF9IVk1QVl9hcGljX2Fzc2lzdCkKKwogI2RlZmlu ZSBIVk1QVl9mZWF0dXJlX21hc2sgXAogICAgICAgICAoSFZNUFZfYmFzZV9mcmVxIHwgXAogICAg ICAgICAgSFZNUFZfbm9fZnJlcSB8IFwKICAgICAgICAgIEhWTVBWX3RpbWVfcmVmX2NvdW50IHwg XAogICAgICAgICAgSFZNUFZfcmVmZXJlbmNlX3RzYyB8IFwKLSAgICAgICAgIEhWTVBWX2hjYWxs X3JlbW90ZV90bGJfZmx1c2gpCisgICAgICAgICBIVk1QVl9oY2FsbF9yZW1vdGVfdGxiX2ZsdXNo IHwgXAorICAgICAgICAgSFZNUFZfYXBpY19hc3Npc3QpCiAKICNlbmRpZgogCi0tIAoyLjEuNAoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cDovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==