From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v4 04/15] x86: implement data structure and CPU init flow for MBA Date: Sat, 23 Sep 2017 17:48:13 +0800 Message-ID: <1506160104-5890-5-git-send-email-yi.y.sun@linux.intel.com> References: <1506160104-5890-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.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dvhME-0004Zo-8Z for xen-devel@lists.xenproject.org; Sat, 23 Sep 2017 10:08:22 +0000 In-Reply-To: <1506160104-5890-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: Wei Liu , Yi Sun , Andrew Cooper , Jan Beulich , Chao Peng , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1haW4gZGF0YSBzdHJ1Y3R1cmVzIG9mIE1CQS4KCkxpa2Ug Q0FUIGZlYXR1cmVzLCBNQkEgSFcgaW5mbyBoYXMgY29zX21heCB3aGljaCBtZWFucyB0aGUgbWF4 IHRocnRsCnJlZ2lzdGVyIG51bWJlciwgYW5kIHRocnRsX21heCB3aGljaCBtZWFucyB0aGUgbWF4 IHRocm90dGxlIHZhbHVlCihkZWxheSB2YWx1ZSkuIEl0IGFsc28gaGFzIGEgZmxhZyB0byByZXBy ZXNlbnQgaWYgdGhlIHRocm90dGxlCnZhbHVlIGlzIGxpbmVhciBvciBub3QuCgpPbmUgdGhydGwg cmVnaXN0ZXIgb2YgTUJBIHN0b3JlcyBhIHRocm90dGxlIHZhbHVlIGZvciBvbmUgb3IgbW9yZQpk b21haW5zLiBUaGUgdGhyb3R0bGUgdmFsdWUgbWVhbnMgdGhlIGRlbGF5IGJldHdlZW4gTDIgY2Fj aGUgYW5kIG5leHQKY2FjaGUgbGV2ZWwuCgpUaGlzIHBhdGNoIGFsc28gaW1wbGVtZW50cyBpbml0 IGZsb3cgZm9yIE1CQSBhbmQgcmVnaXN0ZXIgc3R1YgpjYWxsYmFjayBmdW5jdGlvbnMuCgpTaWdu ZWQtb2ZmLWJ5OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCkNDOiBKYW4g QmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNDOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v cGVyM0BjaXRyaXguY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6IFJv Z2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpDQzogQ2hhbyBQZW5nIDxjaGFv LnAucGVuZ0BsaW51eC5pbnRlbC5jb20+Cgp2NDoKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdl LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGZpeCBhIGNvbW1l bnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gam9pbiB0d28g Y2hlY2tzIGluIGEgc2luZ2xlIGlmLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25u w6kpCiAgICAtIHJlbW92ZSByZWR1bmRhbnQgaW5pdGlhbGl6YXRpb24gb2YgJ2ZlYXQtPmNvc19y ZWdfdmFsWzBdJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBj aGFuZ2UgJ3JlZ19iJyB0byAnZWJ4Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gY2hhbmdlIHR5cGUgb2YgJ21iYV9pbml0X2ZlYXR1cmUnIGZyb20gJ2ludCcgdG8gJ2Jv b2wnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSB0 eXBlIG9mICdjYXRfaW5pdF9mZWF0dXJlJyBmcm9tICdpbnQnIHRvICdib29sJy4KdjM6CiAgICAt IHJlcGxhY2UgJ3Bzcl92YWxfdHlwZScgdG8gJ3Bzcl90eXBlJy4gQWxzbywgY2hhbmdlICdQU1Jf VkFMX1RZUEVfTUJBJyB0bwogICAgICAnUFNSX1RZUEVfTUJBX1RIUlRMJy4KICAgICAgKHN1Z2dl c3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSByZXBsYWNlICdNQkFfTElORUFSJyB0byAn TUJBX0xJTkVBUl9NQVNLJyB0byBtYWtlIHRoZSBuYW1lIG1vcmUgY2xlYXIuCiAgICAgIChzdWdn ZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gcmVwbGFzZSAnY2F0X2luZm8nLydtYmFf aW5mbycgdG8gJ2NhdCcvJ21iYScgdG8gbWFrZSB0aGUgbmFtZXMgc2hvcnRlci4KICAgICAgKHN1 Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBjaGFuZ2UgdHlwZSBvZiAnbGluZWFy JyB0byAnYm9vbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0g bWFrZSBmb3JtYXQgc3RyaW5nIG9mIHByaW50ZiBpbiBvbmUgbGluZS4KICAgICAgKHN1Z2dlc3Rl ZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2MjoKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlIHRv IHJlcGxhY2UgJ2NvcyByZWdpc3RlcicgdG8gJ3RocnRsIHJlZ2lzdGVyJyB0bwogICAgICBtYWtl IGl0IGFjY3VyYXRlLgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0gcmVzdG9y ZSB0aGUgcGxhY2Ugb2YgdGhlIHNlbnRlbmNlIHRvIGFzc2lnbiB2YWx1ZSB0byAnZmVhdC0+Y2Jt X2xlbicKICAgICAgYmVjYXVzZSB0aGUgTUJBIGluaXQgZmxvdyBpcyBzcGxpdHRlZCBvdXQgYXMg YSBzZXBhcmF0ZSBmdW5jdGlvbiBpbiB2MS4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcp CiAgICAtIGFkZCBjb21tZW50IHRvIGV4cGxhaW4gd2hhdCB0aGUgTUJBIHRocnRsIGRlZmF1bCB2 YWx1ZSAnMCcgc3RhbmRzIGZvci4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAt IGNoZWNrICd0aHJ0bF9tYXgnIHVuZGVyIGxpbmVhciBtb2RlLiBJdCBjb3VsZCBub3QgYmUgZXVx YWwgb3IgbGFyZ2VyIHRoYW4KICAgICAgMTAwLgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVu ZykKdjE6CiAgICAtIHJlYmFzZSBjb2RlcyBvbnRvIEwyIENBVCB2MTUuCiAgICAtIG1vdmUgY29t bWVudCB0byBhcHByb3ByaWF0ZSBwbGFjZS4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcp CiAgICAtIGltcGxlbWVudCAnbWJhX2luaXRfZmVhdHVyZScgYW5kIGtlZXAgJ2NhdF9pbml0X2Zl YXR1cmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0ga2VlcCAncmVncy5i JyBpbnRvIGEgbG9jYWwgdmFyaWFibGUgdG8gYXZvaWQgcmVhZGluZyBDUFVJRCBldmVyeSB0aW1l LgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKLS0tCiB4ZW4vYXJjaC94ODYvcHNyLmMg ICAgICAgICAgICAgIHwgMTU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmggfCAgIDEgKwogeGVuL2luY2x1ZGUv YXNtLXg4Ni9wc3IuaCAgICAgICB8ICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRp b25zKCspLCAyOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMg Yi94ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggYWE1YTYwZi4uZTJmOGZkMCAxMDA2NDQKLS0tIGEv eGVuL2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtMjcsMTMgKzI3 LDE2IEBACiAgKiAtIENNVCAgICAgICAgIENhY2hlIE1vbml0b3JpbmcgVGVjaG5vbG9neQogICog LSBDT1MvQ0xPUyAgICBDbGFzcyBvZiBTZXJ2aWNlLiBBbHNvIG1lYW4gQ09TIHJlZ2lzdGVycy4K ICAqIC0gQ09TX01BWCAgICAgTWF4IG51bWJlciBvZiBDT1MgZm9yIHRoZSBmZWF0dXJlIChtaW51 cyAxKQorICogLSBNQkEgICAgICAgICBNZW1vcnkgQmFuZHdpZHRoIEFsbG9jYXRpb24KICAqIC0g TVNScyAgICAgICAgTWFjaGluZSBTcGVjaWZpYyBSZWdpc3RlcnMKICAqIC0gUFNSICAgICAgICAg SW50ZWwgUGxhdGZvcm0gU2hhcmVkIFJlc291cmNlCisgKiAtIFRIUlRMX01BWCAgIE1heCB0aHJv dHRsZSB2YWx1ZSAoZGVsYXkgdmFsdWUpIG9mIE1CQQogICovCiAKICNkZWZpbmUgUFNSX0NNVCAg ICAgICAgKDF1IDw8IDApCiAjZGVmaW5lIFBTUl9DQVQgICAgICAgICgxdSA8PCAxKQogI2RlZmlu ZSBQU1JfQ0RQICAgICAgICAoMXUgPDwgMikKKyNkZWZpbmUgUFNSX01CQSAgICAgICAgKDF1IDw8 IDMpCiAKICNkZWZpbmUgQ0FUX0NCTV9MRU5fTUFTSyAweDFmCiAjZGVmaW5lIENBVF9DT1NfTUFY X01BU0sgMHhmZmZmCkBAIC02MCwxMCArNjMsMTQgQEAKICAqLwogI2RlZmluZSBNQVhfQ09TX05V TSAyCiAKKyNkZWZpbmUgTUJBX0xJTkVBUl9NQVNLICAgICgxdSA8PCAyKQorI2RlZmluZSBNQkFf VEhSVExfTUFYX01BU0sgMHhmZmYKKwogZW51bSBwc3JfZmVhdF90eXBlIHsKICAgICBGRUFUX1RZ UEVfTDNfQ0FULAogICAgIEZFQVRfVFlQRV9MM19DRFAsCiAgICAgRkVBVF9UWVBFX0wyX0NBVCwK KyAgICBGRUFUX1RZUEVfTUJBLAogICAgIEZFQVRfVFlQRV9OVU0sCiAgICAgRkVBVF9UWVBFX1VO S05PV04sCiB9OwpAQCAtNzEsNyArNzgsNiBAQCBlbnVtIHBzcl9mZWF0X3R5cGUgewogLyoKICAq IFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgb25lIGZlYXR1cmUuCiAgKiBjb3NfbWF4ICAgICAt IFRoZSBtYXggQ09TIHJlZ2lzdGVycyBudW1iZXIgZ290IHRocm91Z2ggQ1BVSUQuCi0gKiBjYm1f bGVuICAgICAtIFRoZSBsZW5ndGggb2YgQ0JNIGdvdCB0aHJvdWdoIENQVUlELgogICogY29zX3Jl Z192YWwgLSBBcnJheSB0byBzdG9yZSB0aGUgdmFsdWVzIG9mIENPUyByZWdpc3RlcnMuIE9uZSBl bnRyeSBzdG9yZXMKICAqICAgICAgICAgICAgICAgdGhlIHZhbHVlIG9mIG9uZSBDT1MgcmVnaXN0 ZXIuCiAgKiAgICAgICAgICAgICAgIEZvciBMMyBDQVQgYW5kIEwyIENBVCwgb25lIGVudHJ5IGNv cnJlc3BvbmRzIHRvIG9uZSBDT1NfSUQuCkBAIC04MCw5ICs4NiwyMyBAQCBlbnVtIHBzcl9mZWF0 X3R5cGUgewogICogICAgICAgICAgICAgICBjb3NfcmVnX3ZhbFsxXSAoQ29kZSkuCiAgKi8KIHN0 cnVjdCBmZWF0X25vZGUgewotICAgIC8qIGNvc19tYXggYW5kIGNibV9sZW4gYXJlIGNvbW1vbiB2 YWx1ZXMgZm9yIGFsbCBmZWF0dXJlcyBzbyBmYXIuICovCisgICAgLyogY29zX21heCBpcyBjb21t b24gYW1vbmcgYWxsIGZlYXR1cmVzIHNvIGZhci4gKi8KICAgICB1bnNpZ25lZCBpbnQgY29zX21h eDsKLSAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKKworICAgIC8qIEZlYXR1cmUgc3BlY2lmaWMg SFcgaW5mby4gKi8KKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAv KiBUaGUgbGVuZ3RoIG9mIENCTSBnb3QgdGhyb3VnaCBDUFVJRC4gKi8KKyAgICAgICAgICAgIHVu c2lnbmVkIGludCBjYm1fbGVuOworICAgICAgICB9IGNhdDsKKworICAgICAgICBzdHJ1Y3Qgewor ICAgICAgICAgICAgLyogVGhlIG1heCB0aHJvdHRsaW5nIHZhbHVlIGdvdCB0aHJvdWdoIENQVUlE LiAqLworICAgICAgICAgICAgdW5zaWduZWQgaW50IHRocnRsX21heDsKKyAgICAgICAgICAgIGJv b2wgbGluZWFyOworICAgICAgICB9IG1iYTsKKyAgICB9OworCiAgICAgdWludDMyX3QgY29zX3Jl Z192YWxbTUFYX0NPU19SRUdfQ05UXTsKIH07CiAKQEAgLTE2MSw2ICsxODEsNyBAQCBzdGF0aWMg REVGSU5FX1BFUl9DUFUoc3RydWN0IHBzcl9hc3NvYywgcHNyX2Fzc29jKTsKICAqLwogc3RhdGlj IHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDM7CiBzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVh dF9sMl9jYXQ7CitzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF9tYmE7CiAKIC8qIENvbW1v biBmdW5jdGlvbnMgKi8KICNkZWZpbmUgY2F0X2RlZmF1bHRfdmFsKGxlbikgKDB4ZmZmZmZmZmYg Pj4gKDMyIC0gKGxlbikpKQpAQCAtMjcyLDggKzI5Myw4IEBAIHN0YXRpYyBib29sIHBzcl9jaGVj a19jYm0odW5zaWduZWQgaW50IGNibV9sZW4sIHVuc2lnbmVkIGxvbmcgY2JtKQogICAgIHJldHVy biB0cnVlOwogfQogCi0vKiBDQVQgY29tbW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8K LXN0YXRpYyBpbnQgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVn cywKKy8qIEltcGxlbWVudGF0aW9uIG9mIGFsbG9jYXRpb24gZmVhdHVyZXMnIGZ1bmN0aW9ucy4g Ki8KK3N0YXRpYyBib29sIGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYg KnJlZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVh dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICpp bmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSB0eXBl KQpAQCAtMjg2LDI1ICszMDcsMjUgQEAgc3RhdGljIGludCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0 IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogCiAgICAgLyogTm8gdmFsaWQgdmFsdWUgc28gZG8g bm90IGVuYWJsZSBmZWF0dXJlLiAqLwogICAgIGlmICggIXJlZ3MtPmEgfHwgIXJlZ3MtPmQgKQot ICAgICAgICByZXR1cm4gLUVOT0VOVDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZmVh dC0+Y2JtX2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFTSykgKyAxOwogICAgIGZlYXQt PmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3MtPmQgJiBDQVRfQ09TX01BWF9NQVNLKTsK KyAgICBmZWF0LT5jYXQuY2JtX2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFTSykgKyAx OwogCiAgICAgc3dpdGNoICggdHlwZSApCiAgICAgewogICAgIGNhc2UgRkVBVF9UWVBFX0wzX0NB VDoKICAgICBjYXNlIEZFQVRfVFlQRV9MMl9DQVQ6CiAgICAgICAgIGlmICggZmVhdC0+Y29zX21h eCA8IDEgKQotICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CiAKICAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAoYWxs IGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLwotICAgICAgICBmZWF0LT5jb3NfcmVnX3Zh bFswXSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKyAgICAgICAgZmVhdC0+Y29z X3JlZ192YWxbMF0gPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0LmNibV9sZW4pOwogCiAgICAg ICAgIHdybXNybCgodHlwZSA9PSBGRUFUX1RZUEVfTDNfQ0FUID8KICAgICAgICAgICAgICAgICBN U1JfSUEzMl9QU1JfTDNfTUFTSygwKSA6CiAgICAgICAgICAgICAgICAgTVNSX0lBMzJfUFNSX0wy X01BU0soMCkpLAotICAgICAgICAgICAgICAgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4p KTsKKyAgICAgICAgICAgICAgIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYXQuY2JtX2xlbikpOwog CiAgICAgICAgIGJyZWFrOwogCkBAIC0zMTMsMTcgKzMzNCwxOSBAQCBzdGF0aWMgaW50IGNhdF9p bml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgICAgIHVpbnQ2 NF90IHZhbDsKIAogICAgICAgICBpZiAoIGZlYXQtPmNvc19tYXggPCAzICkKLSAgICAgICAgICAg IHJldHVybiAtRU5PRU5UOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8q IEN1dCBoYWxmIG9mIGNvc19tYXggd2hlbiBDRFAgaXMgZW5hYmxlZC4gKi8KICAgICAgICAgZmVh dC0+Y29zX21heCA9IChmZWF0LT5jb3NfbWF4IC0gMSkgPj4gMTsKIAogICAgICAgICAvKiBXZSBy ZXNlcnZlIGNvcz0wIGFzIGRlZmF1bHQgY2JtIChhbGwgYml0cyB3aXRoaW4gY2JtX2xlbiBhcmUg MSkuICovCi0gICAgICAgIGdldF9jZHBfY29kZShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChm ZWF0LT5jYm1fbGVuKTsKLSAgICAgICAgZ2V0X2NkcF9kYXRhKGZlYXQsIDApID0gY2F0X2RlZmF1 bHRfdmFsKGZlYXQtPmNibV9sZW4pOworICAgICAgICBnZXRfY2RwX2NvZGUoZmVhdCwgMCkgPSBj YXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0LmNibV9sZW4pOworICAgICAgICBnZXRfY2RwX2RhdGEo ZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0LmNibV9sZW4pOwogCi0gICAgICAg IHdybXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygwKSwgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNi bV9sZW4pKTsKLSAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDEpLCBjYXRfZGVm YXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOworICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wz X01BU0soMCksCisgICAgICAgICAgICAgICBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0LmNibV9s ZW4pKTsKKyAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDEpLAorICAgICAgICAg ICAgICAgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdC5jYm1fbGVuKSk7CiAgICAgICAgIHJkbXNy bChNU1JfSUEzMl9QU1JfTDNfUU9TX0NGRywgdmFsKTsKICAgICAgICAgd3Jtc3JsKE1TUl9JQTMy X1BTUl9MM19RT1NfQ0ZHLAogICAgICAgICAgICAgICAgdmFsIHwgKDF1bGwgPDwgUFNSX0wzX1FP U19DRFBfRU5BQkxFX0JJVCkpOwpAQCAtMzMyLDIwICszNTUsNTggQEAgc3RhdGljIGludCBjYXRf aW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgIH0KIAogICAg IGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAtRU5PRU5UOworICAgICAgICByZXR1cm4gZmFsc2U7 CiAgICAgfQogCiAgICAgLyogQWRkIHRoaXMgZmVhdHVyZSBpbnRvIGFycmF5LiAqLwogICAgIGlu Zm8tPmZlYXR1cmVzW3R5cGVdID0gZmVhdDsKIAogICAgIGlmICggIW9wdF9jcHVfaW5mbyApCi0g ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHByaW50ayhYRU5M T0dfSU5GTyAiJXM6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1LCBjYm1fbGVuOiV1 XG4iLAogICAgICAgICAgICBjYXRfZmVhdF9uYW1lW3R5cGVdLCBjcHVfdG9fc29ja2V0KHNtcF9w cm9jZXNzb3JfaWQoKSksCi0gICAgICAgICAgIGZlYXQtPmNvc19tYXgsIGZlYXQtPmNibV9sZW4p OworICAgICAgICAgICBmZWF0LT5jb3NfbWF4LCBmZWF0LT5jYXQuY2JtX2xlbik7CiAKLSAgICBy ZXR1cm4gMDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgbWJhX2luaXRfZmVh dHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW51bSBwc3JfZmVhdF90eXBlIHR5cGUpCit7CisgICAgLyogTm8gdmFsaWQgdmFsdWUg c28gZG8gbm90IGVuYWJsZSBmZWF0dXJlLiAqLworICAgIGlmICggIXJlZ3MtPmEgfHwgIXJlZ3Mt PmQgfHwgdHlwZSAhPSBGRUFUX1RZUEVfTUJBICkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg ICAgZmVhdC0+Y29zX21heCA9IG1pbihvcHRfY29zX21heCwgcmVncy0+ZCAmIENBVF9DT1NfTUFY X01BU0spOworICAgIGlmICggZmVhdC0+Y29zX21heCA8IDEgKQorICAgICAgICByZXR1cm4gZmFs c2U7CisKKyAgICBmZWF0LT5tYmEudGhydGxfbWF4ID0gKHJlZ3MtPmEgJiBNQkFfVEhSVExfTUFY X01BU0spICsgMTsKKworICAgIGlmICggcmVncy0+YyAmIE1CQV9MSU5FQVJfTUFTSyApCisgICAg eworICAgICAgICBmZWF0LT5tYmEubGluZWFyID0gdHJ1ZTsKKworICAgICAgICBpZiAoIGZlYXQt Pm1iYS50aHJ0bF9tYXggPj0gMTAwICkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9 CisKKyAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX01CQV9NQVNLKDApLCAwKTsKKworICAgIC8qIEFk ZCB0aGlzIGZlYXR1cmUgaW50byBhcnJheS4gKi8KKyAgICBpbmZvLT5mZWF0dXJlc1t0eXBlXSA9 IGZlYXQ7CisKKyAgICBpZiAoICFvcHRfY3B1X2luZm8gKQorICAgICAgICByZXR1cm4gdHJ1ZTsK KworICAgIHByaW50ayhYRU5MT0dfSU5GTyAiTUJBOiBlbmFibGVkIG9uIHNvY2tldCAldSwgY29z X21heDoldSwgdGhydGxfbWF4OiV1LCBsaW5lYXI6JXUuXG4iLAorICAgICAgICAgICBjcHVfdG9f c29ja2V0KHNtcF9wcm9jZXNzb3JfaWQoKSksCisgICAgICAgICAgIGZlYXQtPmNvc19tYXgsIGZl YXQtPm1iYS50aHJ0bF9tYXgsIGZlYXQtPm1iYS5saW5lYXIpOworCisgICAgcmV0dXJuIHRydWU7 CiB9CiAKIHN0YXRpYyBib29sIGNhdF9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25v ZGUgKmZlYXQsCkBAIC0zNTUsNyArNDE2LDcgQEAgc3RhdGljIGJvb2wgY2F0X2dldF9mZWF0X2lu Zm8oY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwog CiAgICAgZGF0YVtQU1JfSU5GT19JRFhfQ09TX01BWF0gPSBmZWF0LT5jb3NfbWF4OwotICAgIGRh dGFbUFNSX0lORk9fSURYX0NBVF9DQk1fTEVOXSA9IGZlYXQtPmNibV9sZW47CisgICAgZGF0YVtQ U1JfSU5GT19JRFhfQ0FUX0NCTV9MRU5dID0gZmVhdC0+Y2F0LmNibV9sZW47CiAgICAgZGF0YVtQ U1JfSU5GT19JRFhfQ0FUX0ZMQUddID0gMDsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtNDIxLDYg KzQ4MiwyNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDJfY2F0X3Byb3BzID0g ewogICAgIC53cml0ZV9tc3IgPSBsMl9jYXRfd3JpdGVfbXNyLAogfTsKIAorLyogTUJBIHByb3Bz ICovCitzdGF0aWMgYm9vbCBtYmFfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2Rl ICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1 bnNpZ25lZCBpbnQgYXJyYXlfbGVuKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGlj IHZvaWQgbWJhX3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkKK3sKK30KKworc3RhdGlj IGNvbnN0IHN0cnVjdCBmZWF0X3Byb3BzIG1iYV9wcm9wcyA9IHsKKyAgICAuY29zX251bSA9IDEs CisgICAgLnR5cGVbMF0gPSBQU1JfVFlQRV9NQkFfVEhSVEwsCisgICAgLmFsdF90eXBlID0gUFNS X1RZUEVfVU5LTk9XTiwKKyAgICAuZ2V0X2ZlYXRfaW5mbyA9IG1iYV9nZXRfZmVhdF9pbmZvLAor ICAgIC53cml0ZV9tc3IgPSBtYmFfd3JpdGVfbXNyLAorfTsKKwogc3RhdGljIGJvb2wgX19pbml0 IHBhcnNlX3Bzcl9ib29sKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmRlbGltLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNzLCBjb25zdCBjaGFyICpm ZWF0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBt YXNrKQpAQCAtNDc5LDcgKzU2MCw4IEBAIHN0YXRpYyBpbnQgX19pbml0IHBhcnNlX3Bzcl9wYXJh bShjb25zdCBjaGFyICpzKQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCAhcGFyc2VfcHNy X2Jvb2wocywgdmFsX2RlbGltLCBzcywgImNtdCIsIFBTUl9DTVQpICYmCiAgICAgICAgICAgICAg ICAgICAhcGFyc2VfcHNyX2Jvb2wocywgdmFsX2RlbGltLCBzcywgImNhdCIsIFBTUl9DQVQpICYm Ci0gICAgICAgICAgICAgICAgICAhcGFyc2VfcHNyX2Jvb2wocywgdmFsX2RlbGltLCBzcywgImNk cCIsIFBTUl9DRFApICkKKyAgICAgICAgICAgICAgICAgICFwYXJzZV9wc3JfYm9vbChzLCB2YWxf ZGVsaW0sIHNzLCAiY2RwIiwgUFNSX0NEUCkgJiYKKyAgICAgICAgICAgICAgICAgICFwYXJzZV9w c3JfYm9vbChzLCB2YWxfZGVsaW0sIHNzLCAibWJhIiwgUFNSX01CQSkgKQogICAgICAgICAgICAg cmMgPSAtRUlOVkFMOwogCiAgICAgICAgIHMgPSBzcyArIDE7CkBAIC04ODMsNyArOTY1LDcgQEAg c3RhdGljIGludCBpbnNlcnRfdmFsX2ludG9fYXJyYXkodWludDMyX3QgdmFsW10sCiAgICAgaWYg KCBhcnJheV9sZW4gPCBwcm9wcy0+Y29zX251bSApCiAgICAgICAgIHJldHVybiAtRU5PU1BDOwog Ci0gICAgaWYgKCAhcHNyX2NoZWNrX2NibShmZWF0LT5jYm1fbGVuLCBuZXdfdmFsKSApCisgICAg aWYgKCAhcHNyX2NoZWNrX2NibShmZWF0LT5jYXQuY2JtX2xlbiwgbmV3X3ZhbCkgKQogICAgICAg ICByZXR1cm4gLUVJTlZBTDsKIAogICAgIC8qCkBAIC0xNDAxLDYgKzE0ODMsMTAgQEAgc3RhdGlj IGludCBwc3JfY3B1X3ByZXBhcmUodm9pZCkKICAgICAgICAgIChmZWF0X2wyX2NhdCA9IHh6YWxs b2Moc3RydWN0IGZlYXRfbm9kZSkpID09IE5VTEwgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsK IAorICAgIGlmICggZmVhdF9tYmEgPT0gTlVMTCAmJgorICAgICAgICAgKGZlYXRfbWJhID0geHph bGxvYyhzdHJ1Y3QgZmVhdF9ub2RlKSkgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVN OworCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE0MTAsNiArMTQ5Niw3IEBAIHN0YXRpYyB2b2lk IHBzcl9jcHVfaW5pdCh2b2lkKQogICAgIHVuc2lnbmVkIGludCBzb2NrZXQsIGNwdSA9IHNtcF9w cm9jZXNzb3JfaWQoKTsKICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0OwogICAgIHN0cnVjdCBj cHVpZF9sZWFmIHJlZ3M7CisgICAgdWludDMyX3QgZWJ4OwogCiAgICAgaWYgKCAhcHNyX2FsbG9j X2ZlYXRfZW5hYmxlZCgpIHx8ICFib290X2NwdV9oYXMoWDg2X0ZFQVRVUkVfUFFFKSApCiAgICAg ICAgIGdvdG8gYXNzb2NfaW5pdDsKQEAgLTE0MjgsNyArMTUxNSw4IEBAIHN0YXRpYyB2b2lkIHBz cl9jcHVfaW5pdCh2b2lkKQogICAgIHNwaW5fbG9ja19pbml0KCZpbmZvLT5yZWZfbG9jayk7CiAK ICAgICBjcHVpZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDAsICZyZWdzKTsKLSAg ICBpZiAoIHJlZ3MuYiAmIFBTUl9SRVNPVVJDRV9UWVBFX0wzICkKKyAgICBlYnggPSByZWdzLmI7 CisgICAgaWYgKCBlYnggJiBQU1JfUkVTT1VSQ0VfVFlQRV9MMyApCiAgICAgewogICAgICAgICBj cHVpZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDEsICZyZWdzKTsKIApAQCAtMTQz NiwzMiArMTUyNCw0MyBAQCBzdGF0aWMgdm9pZCBwc3JfY3B1X2luaXQodm9pZCkKICAgICAgICAg ZmVhdF9sMyA9IE5VTEw7CiAKICAgICAgICAgaWYgKCAocmVncy5jICYgUFNSX0NBVF9DRFBfQ0FQ QUJJTElUWSkgJiYgKG9wdF9wc3IgJiBQU1JfQ0RQKSAmJgotICAgICAgICAgICAgICFjYXRfaW5p dF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDNfQ0RQKSApCisgICAgICAg ICAgICAgY2F0X2luaXRfZmVhdHVyZSgmcmVncywgZmVhdCwgaW5mbywgRkVBVF9UWVBFX0wzX0NE UCkgKQogICAgICAgICAgICAgZmVhdF9wcm9wc1tGRUFUX1RZUEVfTDNfQ0RQXSA9ICZsM19jZHBf cHJvcHM7CiAKICAgICAgICAgLyogSWYgQ0RQIGluaXQgZmFpbHMsIHRyeSB0byB3b3JrIGFzIEwz IENBVC4gKi8KICAgICAgICAgaWYgKCAhZmVhdF9wcm9wc1tGRUFUX1RZUEVfTDNfQ0RQXSApCiAg ICAgICAgIHsKLSAgICAgICAgICAgIGlmICggIWNhdF9pbml0X2ZlYXR1cmUoJnJlZ3MsIGZlYXQs IGluZm8sIEZFQVRfVFlQRV9MM19DQVQpICkKKyAgICAgICAgICAgIGlmICggY2F0X2luaXRfZmVh dHVyZSgmcmVncywgZmVhdCwgaW5mbywgRkVBVF9UWVBFX0wzX0NBVCkgKQogICAgICAgICAgICAg ICAgIGZlYXRfcHJvcHNbRkVBVF9UWVBFX0wzX0NBVF0gPSAmbDNfY2F0X3Byb3BzOwogICAgICAg ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGZlYXRfbDMgPSBmZWF0OwogICAgICAgICB9CiAg ICAgfQogCi0gICAgY3B1aWRfY291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAwLCAmcmVn cyk7Ci0gICAgaWYgKCByZWdzLmIgJiBQU1JfUkVTT1VSQ0VfVFlQRV9MMiApCisgICAgaWYgKCBl YnggJiBQU1JfUkVTT1VSQ0VfVFlQRV9MMiApCiAgICAgewogICAgICAgICBjcHVpZF9jb3VudF9s ZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDIsICZyZWdzKTsKIAogICAgICAgICBmZWF0ID0gZmVh dF9sMl9jYXQ7CiAgICAgICAgIGZlYXRfbDJfY2F0ID0gTlVMTDsKLSAgICAgICAgaWYgKCAhY2F0 X2luaXRfZmVhdHVyZSgmcmVncywgZmVhdCwgaW5mbywgRkVBVF9UWVBFX0wyX0NBVCkgKQorICAg ICAgICBpZiAoIGNhdF9pbml0X2ZlYXR1cmUoJnJlZ3MsIGZlYXQsIGluZm8sIEZFQVRfVFlQRV9M Ml9DQVQpICkKICAgICAgICAgICAgIGZlYXRfcHJvcHNbRkVBVF9UWVBFX0wyX0NBVF0gPSAmbDJf Y2F0X3Byb3BzOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBmZWF0X2wyX2NhdCA9IGZlYXQ7 CiAgICAgfQogCisgICAgaWYgKCBlYnggJiBQU1JfUkVTT1VSQ0VfVFlQRV9NQkEgKQorICAgIHsK KyAgICAgICAgY3B1aWRfY291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAzLCAmcmVncyk7 CisKKyAgICAgICAgZmVhdCA9IGZlYXRfbWJhOworICAgICAgICBmZWF0X21iYSA9IE5VTEw7Cisg ICAgICAgIGlmICggbWJhX2luaXRfZmVhdHVyZSgmcmVncywgZmVhdCwgaW5mbywgRkVBVF9UWVBF X01CQSkgKQorICAgICAgICAgICAgZmVhdF9wcm9wc1tGRUFUX1RZUEVfTUJBXSA9ICZtYmFfcHJv cHM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZlYXRfbWJhID0gZmVhdDsKKyAgICB9CisK ICAgICBpbmZvLT5mZWF0X2luaXQgPSB0cnVlOwogCiAgYXNzb2NfaW5pdDoKQEAgLTE1MjEsNyAr MTYyMCw3IEBAIHN0YXRpYyBpbnQgX19pbml0IHBzcl9wcmVzbXBfaW5pdCh2b2lkKQogICAgIGlm ICggKG9wdF9wc3IgJiBQU1JfQ01UKSAmJiBvcHRfcm1pZF9tYXggKQogICAgICAgICBpbml0X3Bz cl9jbXQob3B0X3JtaWRfbWF4KTsKIAotICAgIGlmICggb3B0X3BzciAmIChQU1JfQ0FUIHwgUFNS X0NEUCkgKQorICAgIGlmICggb3B0X3BzciAmIChQU1JfQ0FUIHwgUFNSX0NEUCB8IFBTUl9NQkEp ICkKICAgICAgICAgaW5pdF9wc3IoKTsKIAogICAgIGlmICggcHNyX2NwdV9wcmVwYXJlKCkgKQpk aWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaCBiL3hlbi9pbmNsdWRl L2FzbS14ODYvbXNyLWluZGV4LmgKaW5kZXggNGUwOGRlNi4uNDFmMTY3NyAxMDA2NDQKLS0tIGEv eGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2 L21zci1pbmRleC5oCkBAIC0zNDgsNiArMzQ4LDcgQEAKICNkZWZpbmUgTVNSX0lBMzJfUFNSX0wz X01BU0tfQ09ERShuKQkoMHgwMDAwMGM5MCArIChuKSAqIDIgKyAxKQogI2RlZmluZSBNU1JfSUEz Ml9QU1JfTDNfTUFTS19EQVRBKG4pCSgweDAwMDAwYzkwICsgKG4pICogMikKICNkZWZpbmUgTVNS X0lBMzJfUFNSX0wyX01BU0sobikJCSgweDAwMDAwZDEwICsgKG4pKQorI2RlZmluZSBNU1JfSUEz Ml9QU1JfTUJBX01BU0sobikJKDB4MDAwMDBkNTAgKyAobikpCiAKIC8qIEludGVsIE1vZGVsIDYg Ki8KICNkZWZpbmUgTVNSX1A2X1BFUkZDVFIobikJCSgweDAwMDAwMGMxICsgKG4pKQpkaWZmIC0t Z2l0IGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNy LmgKaW5kZXggY2IzZjA2Ny4uOWQxNDI2NCAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wc3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCkBAIC0yNCw2ICsyNCw3IEBA CiAvKiBSZXNvdXJjZSBUeXBlIEVudW1lcmF0aW9uICovCiAjZGVmaW5lIFBTUl9SRVNPVVJDRV9U WVBFX0wzICAgICAgICAgICAgMHgyCiAjZGVmaW5lIFBTUl9SRVNPVVJDRV9UWVBFX0wyICAgICAg ICAgICAgMHg0CisjZGVmaW5lIFBTUl9SRVNPVVJDRV9UWVBFX01CQSAgICAgICAgICAgMHg4CiAK IC8qIEwzIE1vbml0b3JpbmcgRmVhdHVyZXMgKi8KICNkZWZpbmUgUFNSX0NNVF9MM19PQ0NVUEFO Q1kgICAgICAgICAgICAweDEKQEAgLTU4LDYgKzU5LDcgQEAgZW51bSBwc3JfdHlwZSB7CiAgICAg UFNSX1RZUEVfTDNfQ09ERSwKICAgICBQU1JfVFlQRV9MM19EQVRBLAogICAgIFBTUl9UWVBFX0wy X0NCTSwKKyAgICBQU1JfVFlQRV9NQkFfVEhSVEwsCiAgICAgUFNSX1RZUEVfVU5LTk9XTiwKIH07 CiAKLS0gCjEuOS4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==