From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v15 09/23] x86: refactor psr: L3 CAT: set value: assemble features value array. Date: Tue, 1 Aug 2017 16:48:40 +0800 Message-ID: <1501577334-7431-10-git-send-email-yi.y.sun@linux.intel.com> References: <1501577334-7431-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 1dcT6S-00056s-AD for xen-devel@lists.xenproject.org; Tue, 01 Aug 2017 09:04:36 +0000 In-Reply-To: <1501577334-7431-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, 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 bGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2Uu Y29tPgotLS0KdjE1OgogICAgLSByZW1vdmUgdW5uZWNlc3NhcnkgJ2Vsc2UnIGluICdpbnNlcnRf dmFsX2ludG9fYXJyYXknLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2MTQ6CiAg ICAtIHJlbW92ZSBwYXJhbWV0ZXIgJyoqdmFsJyBpbiBza2lwX3ByaW9yX2ZlYXR1cmVzIGFuZCBy ZXR1cm4gdGhlIGxlbmd0aCB0bwogICAgICBza2lwIHZhbHVlIGFycmF5IGluIHRoZSBjYWxsZXIu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSBhIHN0cmF5IGJs YW5rLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2MTM6CiAgICAtIHJlbW92ZSBh biB1bm5lY2Vzc2FyeSBibGFuayBsaW5lLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSBhZGQgYSBuZXcgZnVuY3Rpb24gJ3NraXBfcHJpb3JfZmVhdHVyZXMoKScgdG8gc2tp cCB2YWx1ZSBhcnJheSBhY2NvcmRpbmcKICAgICAgdG8gZmVhdHVyZSB0eXBlLiBUaGlzIGZ1bmN0 aW9uIHdpbGwgYmUgdXNlZCBpbiBsYXRlciBwYXRjaGVzIHRvby4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKdjEyOgogICAgLSB1c2UgJ0FSUkFZX1NJWkUnIHRvIGNhbGN1bGF0ZSBh cnJheSBib3VuZGFyeS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gdXNl ICdBU1NFUlRfVU5SRUFDSEFCTEUoKScgdG8gcmVjb3JkIGJ1ZyBhbmQgcmV0dXJuIGVycm9yIGNv ZGUgaWYgZmVhdAogICAgICBleGlzdCBidXQgcHJvcHMgZG9lcyBub3QgZXhpc3QuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJldHVybiAwIG9ubHkgd2hlbiB2YWx1ZSBp cyBzZXQgaW4gJ2luc2VydF92YWxfaW50b19hcnJheScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCnYxMToKICAgIC0gY2hhbmdlcyBhYm91dCAnZmVhdF9wcm9wcycuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZXMgYWJvdXQgJ2dldF92YWwnLiBJ dCBpcyByZXBsYWNlZCBieSBnZW5lcmljIGNvZGVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQp2MTA6CiAgICAtIHJlbW92ZSAnZ2V0X29sZF92YWwnIHRvIGRpcmVjdGx5IGNhbGwg J2dldF92YWwnIHRvIGdldCBuZWVkZWQgdmFsLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSBtb3ZlICdwc3JfY2hlY2tfY2JtJyBpbnRvICdpbnNlcnRfdmFsX3RvX2FycmF5 Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIHR5cGUgb2Yg J2NibScgaW4gJ3Bzcl9jaGVja19jYm0nIHRvICd1bnNpZ25lZCBsb25nJy4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICdzZXRfbmV3X3ZhbCcgYXMgaXQgY2Fu IGJlIGhhbmRsZWQgaW4gZ2VuZXJpYyBwcm9jZXNzLgogICAgLSBjaGFuZ2VzIHJlbGF0ZWQgdG8g J2ZlYXRfcHJvcHMnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBhZGp1 c3QgZmxvdyBpbiAnZ2F0aGVyX3ZhbF9hcnJheScgdG8gYXZvaWQgYXJyYXkgY3Jvc3MuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkanVzdCBmbG93IGluICdpbnNlcnRf dmFsX3RvX2FycmF5JyB0byBhdm9pZCBhcnJheSBjcm9zcy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKdjk6CiAgICAtIGFkZCBjb21tZW50cyBhYm91dCBib3VuZGFyeSBjaGVja2lu Zy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSByZW5hbWUgJ2Fzc2VtYmxlX3Zh bF9hcnJheScgdG8gJ2NvbWJpbmVfdmFsX2FycmF5JyBpbiBwZXJ2aW91cyBwYXRjaC4KICAgICAg KHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSByZW5hbWUgJ2wzX2NhdF9nZXRfY29zX251bScg dG8gJ2NhdF9nZXRfY29zX251bScgdG8gY292ZXIgYWxsIEwzL0wyIENBVAogICAgICBmZWF0dXJl cy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIHJlbmFtZSAnbDNfY2F0X2dl dF9vbGRfdmFsJyB0byAnY2F0X2dldF9vbGRfdmFsJyB0byBjb3ZlciBhbGwgTDMvTDIgQ0FUCiAg ICAgIGZlYXR1cmVzIGFuZCByZXVzZSBjYXRfZ2V0X3ZhbCBpbiBpdC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBSb2dlciBQYXUpCiAgICAtIHJlcGxhY2UgZmVhdHVyZSBsaXN0IGhhbmRsaW5nIHRvIGZl YXR1cmUgYXJyYXkgaGFuZGxpbmcuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAg LSBtb2RpZnkgcGF0Y2ggdGl0bGUgdG8gaW5kaWNhdGUgJ0wzIENBVCcuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlcGxhY2UgJ20nIHRvICduZXdfdmFsJy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSBjb3MgY2hlY2sgb3V0c2lkZSBj YWxsYmFjayBmdW5jdGlvbi4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0g cmVtb3ZlICdnZXRfY29zX251bScgY2FsbGJhY2sgZnVuY3Rpb24uCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZXMgYWJvdXQgJ3VpbnQ2NF90JyB0byAndWludDMy X3QnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQp2NjoKICAgIC0gY2hhbmdlICdh c3NlbWJsZV92YWxfYXJyYXknIHRvICdjb21iaW5lX3ZhbF9hcnJheScuCiAgICAgIChzdWdnZXN0 ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBjaGVjayByZXR1cm4gdmFsdWUgb2Yg J2dldF9vbGRfdmFsJy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGsp CiAgICAtIHJlcGxhY2Ugc29tZSAnRUlOVkFMJyB0byAnRU5PU1BDJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCnY1OgogICAgLSBtb2RpZnkgY29tbWVudHMgYWNj b3JkaW5nIHRvIGNoYW5nZXMgb2YgY29kZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIGNoYW5nZSAnYm9vbF90JyB0byAnYm9vbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIG1vZGlmeSByZXR1cm4gdmFsdWUgb2YgY2FsbGJhY2sgZnVuY3Rp b25zIGJlY2F1c2Ugd2UgZG8gbm90IG5lZWQgdGhlbQogICAgICB0byByZXR1cm4gbnVtYmVyIG9m IGVudHJpZXMgdGhlIGZlYXR1cmUgdXNlcy4gSW4gY2FsbGVyLCB3ZSBjYWxsCiAgICAgICdnZXRf Y29zX251bScgdG8gZ2V0IHRoZSBudW1iZXIgb2YgZW50cmllcyB0aGUgZmVhdHVyZSB1c2VzLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgdmFyaWFibGVzIG5h bWVzIHRvIG1ha2UgdGhlbSBiZXR0ZXIsIGUuZy4gJ2ZlYXRfdG1wJyB0byAnZmVhdCcuCiAgICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY0OgogICAgLSBjcmVhdGUgdGhpcyBwYXRjaCB0 byBtYWtlIGNvZGVzIGVhc2llciB0byB1bmRlcnN0YW5kLgogICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKQotLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyB8IDEzNSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogMSBmaWxlIGNoYW5nZWQsIDEz MyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4 Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCBmMWI1ODM3Li5mN2JhODkyIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0y MTAsNiArMjEwLDI5IEBAIHN0YXRpYyBlbnVtIHBzcl9mZWF0X3R5cGUgcHNyX2NibV90eXBlX3Rv X2ZlYXRfdHlwZShlbnVtIGNibV90eXBlIHR5cGUpCiAgICAgcmV0dXJuIGZlYXRfdHlwZTsKIH0K IAorc3RhdGljIGJvb2wgcHNyX2NoZWNrX2NibSh1bnNpZ25lZCBpbnQgY2JtX2xlbiwgdW5zaWdu ZWQgbG9uZyBjYm0pCit7CisgICAgdW5zaWduZWQgaW50IGZpcnN0X2JpdCwgemVyb19iaXQ7CisK KyAgICAvKiBTZXQgYml0cyBzaG91bGQgb25seSBpbiB0aGUgcmFuZ2Ugb2YgWzAsIGNibV9sZW5d LiAqLworICAgIGlmICggY2JtICYgKH4wdWwgPDwgY2JtX2xlbikgKQorICAgICAgICByZXR1cm4g ZmFsc2U7CisKKyAgICAvKiBBdCBsZWFzdCBvbmUgYml0IG5lZWQgdG8gYmUgc2V0LiAqLworICAg IGlmICggY2JtID09IDAgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmaXJzdF9iaXQg PSBmaW5kX2ZpcnN0X2JpdCgmY2JtLCBjYm1fbGVuKTsKKyAgICB6ZXJvX2JpdCA9IGZpbmRfbmV4 dF96ZXJvX2JpdCgmY2JtLCBjYm1fbGVuLCBmaXJzdF9iaXQpOworCisgICAgLyogU2V0IGJpdHMg c2hvdWxkIGJlIGNvbnRpZ3VvdXMuICovCisgICAgaWYgKCB6ZXJvX2JpdCA8IGNibV9sZW4gJiYK KyAgICAgICAgIGZpbmRfbmV4dF9iaXQoJmNibSwgY2JtX2xlbiwgemVyb19iaXQpIDwgY2JtX2xl biApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiAvKiBD QVQgY29tbW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KIHN0YXRpYyBpbnQgY2F0X2lu aXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LApAQCAtNjAxLDcgKzYyNCwxNCBA QCBpbnQgcHNyX2dldF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwK IC8qIFNldCB2YWx1ZSBmdW5jdGlvbnMgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgZ2V0X2Nvc19u dW0odm9pZCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICB1bnNpZ25lZCBpbnQgbnVtID0gMCwgaTsK KworICAgIC8qIEdldCBhbGwgZmVhdHVyZXMgdG90YWwgYW1vdW50LiAqLworICAgIGZvciAoIGkg PSAwOyBpIDwgQVJSQVlfU0laRShmZWF0X3Byb3BzKTsgaSsrICkKKyAgICAgICAgaWYgKCBmZWF0 X3Byb3BzW2ldICkKKyAgICAgICAgICAgIG51bSArPSBmZWF0X3Byb3BzW2ldLT5jb3NfbnVtOwor CisgICAgcmV0dXJuIG51bTsKIH0KIAogc3RhdGljIGludCBnYXRoZXJfdmFsX2FycmF5KHVpbnQz Ml90IHZhbFtdLApAQCAtNjA5LDcgKzYzOSw2OCBAQCBzdGF0aWMgaW50IGdhdGhlcl92YWxfYXJy YXkodWludDMyX3QgdmFsW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBpbnQgb2xkX2NvcykKIHsKLSAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB1bnNpZ25l ZCBpbnQgaTsKKworICAgIGlmICggIXZhbCApCisgICAgICAgIHJldHVybiAtRUlOVkFMOworCisg ICAgLyogR2V0IGFsbCBmZWF0dXJlcyBjdXJyZW50IHZhbHVlcyBhY2NvcmRpbmcgdG8gb2xkX2Nv cy4gKi8KKyAgICBmb3IgKCBpID0gMDsgaSA8IEFSUkFZX1NJWkUoaW5mby0+ZmVhdHVyZXMpOyBp KysgKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGNvcyA9IG9sZF9jb3MsIGo7CisgICAg ICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQgPSBpbmZvLT5mZWF0dXJlc1tpXTsKKyAg ICAgICAgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgKnByb3BzID0gZmVhdF9wcm9wc1tpXTsKKwor ICAgICAgICBpZiAoICFmZWF0ICkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlm ICggIXByb3BzICkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUX1VOUkVBQ0hBQkxFKCk7 CisgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgg YXJyYXlfbGVuIDwgcHJvcHMtPmNvc19udW0gKQorICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7 CisKKyAgICAgICAgLyoKKyAgICAgICAgICogSWYgb2xkX2NvcyBleGNlZWRzIGN1cnJlbnQgZmVh dHVyZSdzIGNvc19tYXgsIHdlIHNob3VsZCBnZXQKKyAgICAgICAgICogZGVmYXVsdCB2YWx1ZS4g U28gYXNzaWduIGNvcyB0byAwIHdoaWNoIHN0b3JlcyBkZWZhdWx0IHZhbHVlLgorICAgICAgICAg Ki8KKyAgICAgICAgaWYgKCBjb3MgPiBmZWF0LT5jb3NfbWF4ICkKKyAgICAgICAgICAgIGNvcyA9 IDA7CisKKyAgICAgICAgLyogVmFsdWUgZ2V0dGluZyBvcmRlciBpcyBzYW1lIGFzIGZlYXR1cmUg YXJyYXkuICovCisgICAgICAgIGZvciAoIGogPSAwOyBqIDwgcHJvcHMtPmNvc19udW07IGorKyAp CisgICAgICAgICAgICB2YWxbal0gPSBmZWF0LT5jb3NfcmVnX3ZhbFtjb3MgKiBwcm9wcy0+Y29z X251bSArIGpdOworCisgICAgICAgIGFycmF5X2xlbiAtPSBwcm9wcy0+Y29zX251bTsKKyAgICAg ICAgdmFsICs9IHByb3BzLT5jb3NfbnVtOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitz dGF0aWMgaW50IHNraXBfcHJpb3JfZmVhdHVyZXModW5zaWduZWQgaW50ICphcnJheV9sZW4sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIGZlYXRfdHlw ZSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaSwgc2tpcF9sZW4gPSAwOworCisgICAgZm9yICggaSA9 IDA7IGkgPCBmZWF0X3R5cGU7IGkrKyApCisgICAgeworICAgICAgICBjb25zdCBzdHJ1Y3QgZmVh dF9wcm9wcyAqcHJvcHMgPSBmZWF0X3Byb3BzW2ldOworCisgICAgICAgIGlmICggIXByb3BzICkK KyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggKmFycmF5X2xlbiA8PSBwcm9w cy0+Y29zX251bSApCisgICAgICAgICAgICByZXR1cm4gLUVOT1NQQzsKKworICAgICAgICAqYXJy YXlfbGVuIC09IHByb3BzLT5jb3NfbnVtOworICAgICAgICBza2lwX2xlbiArPSBwcm9wcy0+Y29z X251bTsKKyAgICB9CisKKyAgICByZXR1cm4gc2tpcF9sZW47CiB9CiAKIHN0YXRpYyBpbnQgaW5z ZXJ0X3ZhbF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLApAQCAtNjE5LDYgKzcxMCw0NiBAQCBz dGF0aWMgaW50IGluc2VydF92YWxfaW50b19hcnJheSh1aW50MzJfdCB2YWxbXSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG5ld192YWwpCiB7CisgICAgY29uc3Qgc3Ry dWN0IGZlYXRfbm9kZSAqZmVhdDsKKyAgICBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyAqcHJvcHM7 CisgICAgdW5zaWduZWQgaW50IGk7CisgICAgaW50IHJldDsKKworICAgIEFTU0VSVChmZWF0X3R5 cGUgPCBGRUFUX1RZUEVfTlVNKTsKKworICAgIHJldCA9IHNraXBfcHJpb3JfZmVhdHVyZXMoJmFy cmF5X2xlbiwgZmVhdF90eXBlKTsKKyAgICBpZiAoIHJldCA8IDAgKQorICAgICAgICByZXR1cm4g cmV0OworCisgICAgdmFsICs9IHJldDsKKworICAgIGZlYXQgPSBpbmZvLT5mZWF0dXJlc1tmZWF0 X3R5cGVdOworICAgIGlmICggIWZlYXQgKQorICAgICAgICByZXR1cm4gLUVOT0VOVDsKKworICAg IHByb3BzID0gZmVhdF9wcm9wc1tmZWF0X3R5cGVdOworICAgIGlmICggIXByb3BzICkKKyAgICB7 CisgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm4gLUVOT0VOVDsK KyAgICB9CisKKyAgICBpZiAoIGFycmF5X2xlbiA8IHByb3BzLT5jb3NfbnVtICkKKyAgICAgICAg cmV0dXJuIC1FTk9TUEM7CisKKyAgICBpZiAoICFwc3JfY2hlY2tfY2JtKGZlYXQtPmNibV9sZW4s IG5ld192YWwpICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAvKiBWYWx1ZSBzZXR0 aW5nIHBvc2l0aW9uIGlzIHNhbWUgYXMgZmVhdHVyZSBhcnJheS4gKi8KKyAgICBmb3IgKCBpID0g MDsgaSA8IHByb3BzLT5jb3NfbnVtOyBpKysgKQorICAgIHsKKyAgICAgICAgaWYgKCB0eXBlID09 IHByb3BzLT50eXBlW2ldICkKKyAgICAgICAgeworICAgICAgICAgICAgdmFsW2ldID0gbmV3X3Zh bDsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCiAgICAgcmV0dXJu IC1FSU5WQUw7CiB9CiAKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMu eGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==