From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v12 09/23] x86: refactor psr: L3 CAT: set value: assemble features value array. Date: Wed, 14 Jun 2017 09:12:42 +0800 Message-ID: <1497402776-22348-10-git-send-email-yi.y.sun@linux.intel.com> References: <1497402776-22348-1-git-send-email-yi.y.sun@linux.intel.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 1dKx43-0007Ts-AZ for xen-devel@lists.xenproject.org; Wed, 14 Jun 2017 01:25:43 +0000 In-Reply-To: <1497402776-22348-1-git-send-email-yi.y.sun@linux.intel.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: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org T25seSBjYW4gb25lIENPUyBJRCBiZSB1c2VkIGJ5IG9uZSBkb21haW4gYXQgb25lIHRpbWUuIFRo YXQgbWVhbnMgYWxsIGVuYWJsZWQKZmVhdHVyZXMnIENPUyByZWdpc3RlcnMgYXQgdGhpcyBDT1Mg SUQgYXJlIHZhbGlkIGZvciB0aGlzIGRvbWFpbiBhdCB0aGF0IHRpbWUuCgpXaGVuIHVzZXIgdXBk YXRlcyBhIGZlYXR1cmUncyB2YWx1ZSwgd2UgbmVlZCBtYWtlIHN1cmUgYWxsIG90aGVyIGZlYXR1 cmVzJwp2YWx1ZXMgYXJlIG5vdCBhZmZlY3RlZC4gU28sIHdlIGZpcnN0bHkgbmVlZCBnYXRoZXIg YW4gYXJyYXkgd2hpY2ggY29udGFpbnMKYWxsIGZlYXR1cmVzIGN1cnJlbnQgdmFsdWVzIGFuZCBy ZXBsYWNlIHRoZSBzZXR0aW5nIGZlYXR1cmUncyB2YWx1ZSBpbiBhcnJheQp0byBuZXcgdmFsdWUu CgpUaGVuLCB3ZSBjYW4gdHJ5IHRvIGZpbmQgaWYgdGhlcmUgaXMgYSBDT1MgSUQgb24gd2hpY2gg YWxsIGZlYXR1cmVzJyBDT1MKcmVnaXN0ZXJzIHZhbHVlcyBhcmUgc2FtZSBhcyB0aGUgYXJyYXku IElmIHdlIGNhbiBmaW5kLCB3ZSBqdXN0IHVzZSB0aGlzIENPUwpJRC4gSWYgZmFpbCB0byBmaW5k LCB3ZSBuZWVkIHBpY2sgYSBuZXcgQ09TIElELgoKVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHZhbHVl IGFycmF5IGFzc2VtYmxpbmcgZmxvdy4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5A bGludXguaW50ZWwuY29tPgotLS0KdjEyOgogICAgLSB1c2UgJ0FSUkFZX1NJWkUnIHRvIGNhbGN1 bGF0ZSBhcnJheSBib3VuZGFyeS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gdXNlICdBU1NFUlRfVU5SRUFDSEFCTEUoKScgdG8gcmVjb3JkIGJ1ZyBhbmQgcmV0dXJuIGVy cm9yIGNvZGUgaWYgZmVhdAogICAgICBleGlzdCBidXQgcHJvcHMgZG9lcyBub3QgZXhpc3QuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJldHVybiAwIG9ubHkgd2hlbiB2 YWx1ZSBpcyBzZXQgaW4gJ2luc2VydF92YWxfaW50b19hcnJheScuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCnYxMToKICAgIC0gY2hhbmdlcyBhYm91dCAnZmVhdF9wcm9wcycuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZXMgYWJvdXQgJ2dldF92 YWwnLiBJdCBpcyByZXBsYWNlZCBieSBnZW5lcmljIGNvZGVzLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQp2MTA6CiAgICAtIHJlbW92ZSAnZ2V0X29sZF92YWwnIHRvIGRpcmVjdGx5 IGNhbGwgJ2dldF92YWwnIHRvIGdldCBuZWVkZWQgdmFsLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQogICAgLSBtb3ZlICdwc3JfY2hlY2tfY2JtJyBpbnRvICdpbnNlcnRfdmFsX3Rv X2FycmF5Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIHR5 cGUgb2YgJ2NibScgaW4gJ3Bzcl9jaGVja19jYm0nIHRvICd1bnNpZ25lZCBsb25nJy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICdzZXRfbmV3X3ZhbCcgYXMg aXQgY2FuIGJlIGhhbmRsZWQgaW4gZ2VuZXJpYyBwcm9jZXNzLgogICAgLSBjaGFuZ2VzIHJlbGF0 ZWQgdG8gJ2ZlYXRfcHJvcHMnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSBhZGp1c3QgZmxvdyBpbiAnZ2F0aGVyX3ZhbF9hcnJheScgdG8gYXZvaWQgYXJyYXkgY3Jvc3Mu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkanVzdCBmbG93IGluICdp bnNlcnRfdmFsX3RvX2FycmF5JyB0byBhdm9pZCBhcnJheSBjcm9zcy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKdjk6CiAgICAtIGFkZCBjb21tZW50cyBhYm91dCBib3VuZGFyeSBj aGVja2luZy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSByZW5hbWUgJ2Fzc2Vt YmxlX3ZhbF9hcnJheScgdG8gJ2NvbWJpbmVfdmFsX2FycmF5JyBpbiBwZXJ2aW91cyBwYXRjaC4K ICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSByZW5hbWUgJ2wzX2NhdF9nZXRfY29z X251bScgdG8gJ2NhdF9nZXRfY29zX251bScgdG8gY292ZXIgYWxsIEwzL0wyIENBVAogICAgICBm ZWF0dXJlcy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIHJlbmFtZSAnbDNf Y2F0X2dldF9vbGRfdmFsJyB0byAnY2F0X2dldF9vbGRfdmFsJyB0byBjb3ZlciBhbGwgTDMvTDIg Q0FUCiAgICAgIGZlYXR1cmVzIGFuZCByZXVzZSBjYXRfZ2V0X3ZhbCBpbiBpdC4KICAgICAgKHN1 Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIHJlcGxhY2UgZmVhdHVyZSBsaXN0IGhhbmRsaW5n IHRvIGZlYXR1cmUgYXJyYXkgaGFuZGxpbmcuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1 KQogICAgLSBtb2RpZnkgcGF0Y2ggdGl0bGUgdG8gaW5kaWNhdGUgJ0wzIENBVCcuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlcGxhY2UgJ20nIHRvICduZXdfdmFsJy4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSBjb3MgY2hlY2sgb3V0 c2lkZSBjYWxsYmFjayBmdW5jdGlvbi4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gcmVtb3ZlICdnZXRfY29zX251bScgY2FsbGJhY2sgZnVuY3Rpb24uCiAgICAgIChzdWdn ZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZXMgYWJvdXQgJ3VpbnQ2NF90JyB0byAn dWludDMyX3QnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2NjoKICAgIC0gY2hh bmdlICdhc3NlbWJsZV92YWxfYXJyYXknIHRvICdjb21iaW5lX3ZhbF9hcnJheScuCiAgICAgIChz dWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBjaGVjayByZXR1cm4gdmFs dWUgb2YgJ2dldF9vbGRfdmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVr IFdpbGspCiAgICAtIHJlcGxhY2Ugc29tZSAnRUlOVkFMJyB0byAnRU5PU1BDJy4KICAgICAgKHN1 Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCnY1OgogICAgLSBtb2RpZnkgY29tbWVu dHMgYWNjb3JkaW5nIHRvIGNoYW5nZXMgb2YgY29kZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIGNoYW5nZSAnYm9vbF90JyB0byAnYm9vbCcuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSByZXR1cm4gdmFsdWUgb2YgY2FsbGJhY2sg ZnVuY3Rpb25zIGJlY2F1c2Ugd2UgZG8gbm90IG5lZWQgdGhlbQogICAgICB0byByZXR1cm4gbnVt YmVyIG9mIGVudHJpZXMgdGhlIGZlYXR1cmUgdXNlcy4gSW4gY2FsbGVyLCB3ZSBjYWxsCiAgICAg ICdnZXRfY29zX251bScgdG8gZ2V0IHRoZSBudW1iZXIgb2YgZW50cmllcyB0aGUgZmVhdHVyZSB1 c2VzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgdmFyaWFi bGVzIG5hbWVzIHRvIG1ha2UgdGhlbSBiZXR0ZXIsIGUuZy4gJ2ZlYXRfdG1wJyB0byAnZmVhdCcu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY0OgogICAgLSBjcmVhdGUgdGhpcyBw YXRjaCB0byBtYWtlIGNvZGVzIGVhc2llciB0byB1bmRlcnN0YW5kLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQotLS0KLS0tCiB4ZW4vYXJjaC94ODYvcHNyLmMgfCAxMjggKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIDEgZmlsZSBj aGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94 ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggZmI4NDIyMy4uNzBl N2M0MSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9w c3IuYwpAQCAtMjA0LDYgKzIwNCwyOSBAQCBzdGF0aWMgZW51bSBwc3JfZmVhdF90eXBlIHBzcl9j Ym1fdHlwZV90b19mZWF0X3R5cGUoZW51bSBjYm1fdHlwZSB0eXBlKQogICAgIHJldHVybiBmZWF0 X3R5cGU7CiB9CiAKK3N0YXRpYyBib29sIHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50IGNibV9s ZW4sIHVuc2lnbmVkIGxvbmcgY2JtKQoreworICAgIHVuc2lnbmVkIGludCBmaXJzdF9iaXQsIHpl cm9fYml0OworCisgICAgLyogU2V0IGJpdHMgc2hvdWxkIG9ubHkgaW4gdGhlIHJhbmdlIG9mIFsw LCBjYm1fbGVuXS4gKi8KKyAgICBpZiAoIGNibSAmICh+MHVsIDw8IGNibV9sZW4pICkKKyAgICAg ICAgcmV0dXJuIGZhbHNlOworCisgICAgLyogQXQgbGVhc3Qgb25lIGJpdCBuZWVkIHRvIGJlIHNl dC4gKi8KKyAgICBpZiAoIGNibSA9PSAwICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg Zmlyc3RfYml0ID0gZmluZF9maXJzdF9iaXQoJmNibSwgY2JtX2xlbik7CisgICAgemVyb19iaXQg PSBmaW5kX25leHRfemVyb19iaXQoJmNibSwgY2JtX2xlbiwgZmlyc3RfYml0KTsKKworICAgIC8q IFNldCBiaXRzIHNob3VsZCBiZSBjb250aWd1b3VzLiAqLworICAgIGlmICggemVyb19iaXQgPCBj Ym1fbGVuICYmCisgICAgICAgICBmaW5kX25leHRfYml0KCZjYm0sIGNibV9sZW4sIHplcm9fYml0 KSA8IGNibV9sZW4gKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK K30KKwogLyogQ0FUIGNvbW1vbiBmdW5jdGlvbnMgaW1wbGVtZW50YXRpb24uICovCiBzdGF0aWMg dm9pZCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LApAQCAtNTky LDcgKzYxNSwxNCBAQCBpbnQgcHNyX2dldF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQg aW50IHNvY2tldCwKIC8qIFNldCB2YWx1ZSBmdW5jdGlvbnMgKi8KIHN0YXRpYyB1bnNpZ25lZCBp bnQgZ2V0X2Nvc19udW0oY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbykKIHsKLSAg ICByZXR1cm4gMDsKKyAgICB1bnNpZ25lZCBpbnQgbnVtID0gMCwgaTsKKworICAgIC8qIEdldCBh bGwgZmVhdHVyZXMgdG90YWwgYW1vdW50LiAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlf U0laRShmZWF0X3Byb3BzKTsgaSsrICkKKyAgICAgICAgaWYgKCBmZWF0X3Byb3BzW2ldICkKKyAg ICAgICAgICAgIG51bSArPSBmZWF0X3Byb3BzW2ldLT5jb3NfbnVtOworCisgICAgcmV0dXJuIG51 bTsKIH0KIAogc3RhdGljIGludCBnYXRoZXJfdmFsX2FycmF5KHVpbnQzMl90IHZhbFtdLApAQCAt NjAwLDcgKzYzMCw0NyBAQCBzdGF0aWMgaW50IGdhdGhlcl92YWxfYXJyYXkodWludDMyX3QgdmFs W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRf aW5mbyAqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2xk X2NvcykKIHsKLSAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKworICAg IGlmICggIXZhbCApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgLyogR2V0IGFsbCBm ZWF0dXJlcyBjdXJyZW50IHZhbHVlcyBhY2NvcmRpbmcgdG8gb2xkX2Nvcy4gKi8KKyAgICBmb3Ig KCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5mby0+ZmVhdHVyZXMpOyBpKysgKQorICAgIHsKKyAg ICAgICAgdW5zaWduZWQgaW50IGNvcyA9IG9sZF9jb3MsIGo7CisgICAgICAgIGNvbnN0IHN0cnVj dCBmZWF0X25vZGUgKmZlYXQgPSBpbmZvLT5mZWF0dXJlc1tpXTsKKyAgICAgICAgY29uc3Qgc3Ry dWN0IGZlYXRfcHJvcHMgKnByb3BzID0gZmVhdF9wcm9wc1tpXTsKKworICAgICAgICBpZiAoICFm ZWF0ICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggIXByb3BzICkKKyAg ICAgICAgeworICAgICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBy ZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICggYXJyYXlfbGVuIDwgcHJv cHMtPmNvc19udW0gKQorICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7CisKKyAgICAgICAgLyoK KyAgICAgICAgICogSWYgb2xkX2NvcyBleGNlZWRzIGN1cnJlbnQgZmVhdHVyZSdzIGNvc19tYXgs IHdlIHNob3VsZCBnZXQKKyAgICAgICAgICogZGVmYXVsdCB2YWx1ZS4gU28gYXNzaWduIGNvcyB0 byAwIHdoaWNoIHN0b3JlcyBkZWZhdWx0IHZhbHVlLgorICAgICAgICAgKi8KKyAgICAgICAgaWYg KCBjb3MgPiBmZWF0LT5jb3NfbWF4ICkKKyAgICAgICAgICAgIGNvcyA9IDA7CisKKyAgICAgICAg LyogVmFsdWUgZ2V0dGluZyBvcmRlciBpcyBzYW1lIGFzIGZlYXR1cmUgYXJyYXkuICovCisgICAg ICAgIGZvciAoIGogPSAwOyBqIDwgcHJvcHMtPmNvc19udW07IGorKyApCisgICAgICAgICAgICB2 YWxbal0gPSBmZWF0LT5jb3NfcmVnX3ZhbFtjb3MgKiBwcm9wcy0+Y29zX251bSArIGpdOworCisg ICAgICAgIGFycmF5X2xlbiAtPSBwcm9wcy0+Y29zX251bTsKKworICAgICAgICB2YWwgKz0gcHJv cHMtPmNvc19udW07CisgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaW5z ZXJ0X3ZhbF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLApAQCAtNjEwLDYgKzY4MCw2MCBAQCBz dGF0aWMgaW50IGluc2VydF92YWxfaW50b19hcnJheSh1aW50MzJfdCB2YWxbXSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5ld192YWwpCiB7CisgICAgY29uc3Qgc3Ry dWN0IGZlYXRfbm9kZSAqZmVhdDsKKyAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHM7 CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICBBU1NFUlQoZmVhdF90eXBlIDwgUFNSX1NPQ0tF VF9GRUFUX05VTSk7CisKKyAgICAvKiBJbnNlcnQgbmV3IHZhbHVlIGludG8gYXJyYXkgYWNjb3Jk aW5nIHRvIGZlYXR1cmUncyBwb3NpdGlvbiBpbiBhcnJheS4gKi8KKyAgICBmb3IgKCBpID0gMDsg aSA8IGZlYXRfdHlwZTsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggIWluZm8tPmZlYXR1cmVz W2ldICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHByb3BzID0gZmVhdF9wcm9w c1tpXTsKKyAgICAgICAgaWYgKCAhcHJvcHMgKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NF UlRfVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOworICAgICAgICB9 CisKKyAgICAgICAgaWYgKCBhcnJheV9sZW4gPD0gcHJvcHMtPmNvc19udW0gKQorICAgICAgICAg ICAgcmV0dXJuIC1FTk9TUEM7CisKKyAgICAgICAgYXJyYXlfbGVuIC09IHByb3BzLT5jb3NfbnVt OworCisgICAgICAgIHZhbCArPSBwcm9wcy0+Y29zX251bTsKKyAgICB9CisKKyAgICBmZWF0ID0g aW5mby0+ZmVhdHVyZXNbZmVhdF90eXBlXTsKKyAgICBpZiAoICFmZWF0ICkKKyAgICAgICAgcmV0 dXJuIC1FTk9FTlQ7CisKKyAgICBwcm9wcyA9IGZlYXRfcHJvcHNbZmVhdF90eXBlXTsKKyAgICBp ZiAoICFwcm9wcyApCisgICAgeworICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUoKTsKKyAgICAg ICAgcmV0dXJuIC1FTk9FTlQ7CisgICAgfQorCisgICAgaWYgKCBhcnJheV9sZW4gPCBwcm9wcy0+ Y29zX251bSApCisgICAgICAgIHJldHVybiAtRU5PU1BDOworCisgICAgaWYgKCAhcHNyX2NoZWNr X2NibShmZWF0LT5jYm1fbGVuLCBuZXdfdmFsKSApCisgICAgICAgIHJldHVybiAtRUlOVkFMOwor CisgICAgLyogVmFsdWUgc2V0dGluZyBwb3NpdGlvbiBpcyBzYW1lIGFzIGZlYXR1cmUgYXJyYXku ICovCisgICAgZm9yICggaSA9IDA7IGkgPCBwcm9wcy0+Y29zX251bTsgaSsrICkKKyAgICB7Cisg ICAgICAgIGlmICggdHlwZSA9PSBwcm9wcy0+dHlwZVtpXSApCisgICAgICAgIHsKKyAgICAgICAg ICAgIHZhbFtpXSA9IG5ld192YWw7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQor ICAgIH0KKwogICAgIHJldHVybiAtRUlOVkFMOwogfQogCi0tIAoxLjkuMQoKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZl bAo=