From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v5 05/16] x86: implement data structure and CPU init flow for MBA Date: Sat, 30 Sep 2017 09:39:15 +0800 Message-ID: <1506735566-5706-6-git-send-email-yi.y.sun@linux.intel.com> References: <1506735566-5706-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.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dy73o-0004Pu-BS for xen-devel@lists.xenproject.org; Sat, 30 Sep 2017 01:59:20 +0000 In-Reply-To: <1506735566-5706-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 ZXNlbnQgaWYgdGhlIHRocm90dGxlCnZhbHVlIGlzIGxpbmVhciBvciBub24tbGluZWFyLgoKT25l IHRocnRsIHJlZ2lzdGVyIG9mIE1CQSBzdG9yZXMgYSB0aHJvdHRsZSB2YWx1ZSBmb3Igb25lIG9y IG1vcmUKZG9tYWlucy4gVGhlIHRocm90dGxlIHZhbHVlIG1lYW5zIHRoZSBkZWxheSBiZXR3ZWVu IEwyIGNhY2hlIGFuZCBuZXh0CmNhY2hlIGxldmVsLgoKVGhpcyBwYXRjaCBhbHNvIGltcGxlbWVu dHMgaW5pdCBmbG93IGZvciBNQkEgYW5kIHJlZ2lzdGVyIHN0dWIKY2FsbGJhY2sgZnVuY3Rpb25z LgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQpD QzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5kcmV3IENvb3BlciA8YW5k cmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5jb20+ CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQ0M6IENoYW8gUGVu ZyA8Y2hhby5wLnBlbmdAbGludXguaW50ZWwuY29tPgoKdjU6CiAgICAtIG1vdmUgb3V0IHNvbWUg Q0FUIGNvZGVzIG9wdGltaXphdGlvbiB0byBhIG5ldyBwYXRjaC4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2UgcHJpbnQgdHlwZSBvZiAnbGluZWFyJyB0 byBiZSAlZC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIHR5 cGUgb2YgJ21iYV93cml0ZV9tc3InIHRvIHVpbnQzMl90LgogICAgLSBtb3ZlIHByaW50ayBpbiAn bWJhX2luaXRfZmVhdHVyZScgdG8gcmVkdWNlIG9uZSByZXR1cm4gcGF0aC4KICAgICAgKHN1Z2dl c3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBtb3ZlIHRoZSBNQkEgZm9ybWF0IHN0cmlu ZyBpbiBwcmludGsgdG8gYSBuZXcgbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUg TW9ubsOpKQp2NDoKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgogICAgICAoc3VnZ2VzdGVk IGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGZpeCBhIGNvbW1lbnQuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gam9pbiB0d28gY2hlY2tzIGluIGEgc2luZ2xl IGlmLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJlbW92ZSBy ZWR1bmRhbnQgaW5pdGlhbGl6YXRpb24gb2YgJ2ZlYXQtPmNvc19yZWdfdmFsWzBdJy4KICAgICAg KHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBjaGFuZ2UgJ3JlZ19iJyB0byAn ZWJ4Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIHR5cGUg b2YgJ21iYV9pbml0X2ZlYXR1cmUnIGZyb20gJ2ludCcgdG8gJ2Jvb2wnLgogICAgICAoc3VnZ2Vz dGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSB0eXBlIG9mICdjYXRfaW5pdF9m ZWF0dXJlJyBmcm9tICdpbnQnIHRvICdib29sJy4KdjM6CiAgICAtIHJlcGxhY2UgJ3Bzcl92YWxf dHlwZScgdG8gJ3Bzcl90eXBlJy4gQWxzbywgY2hhbmdlICdQU1JfVkFMX1RZUEVfTUJBJyB0bwog ICAgICAnUFNSX1RZUEVfTUJBX1RIUlRMJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUg TW9ubsOpKQogICAgLSByZXBsYWNlICdNQkFfTElORUFSJyB0byAnTUJBX0xJTkVBUl9NQVNLJyB0 byBtYWtlIHRoZSBuYW1lIG1vcmUgY2xlYXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1 IE1vbm7DqSkKICAgIC0gcmVwbGFzZSAnY2F0X2luZm8nLydtYmFfaW5mbycgdG8gJ2NhdCcvJ21i YScgdG8gbWFrZSB0aGUgbmFtZXMgc2hvcnRlci4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQ YXUgTW9ubsOpKQogICAgLSBjaGFuZ2UgdHlwZSBvZiAnbGluZWFyJyB0byAnYm9vbCcuCiAgICAg IChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gbWFrZSBmb3JtYXQgc3RyaW5n IG9mIHByaW50ZiBpbiBvbmUgbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9u bsOpKQp2MjoKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlIHRvIHJlcGxhY2UgJ2NvcyByZWdp c3RlcicgdG8gJ3RocnRsIHJlZ2lzdGVyJyB0bwogICAgICBtYWtlIGl0IGFjY3VyYXRlLgogICAg ICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0gcmVzdG9yZSB0aGUgcGxhY2Ugb2YgdGhl IHNlbnRlbmNlIHRvIGFzc2lnbiB2YWx1ZSB0byAnZmVhdC0+Y2JtX2xlbicKICAgICAgYmVjYXVz ZSB0aGUgTUJBIGluaXQgZmxvdyBpcyBzcGxpdHRlZCBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlv biBpbiB2MS4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGFkZCBjb21tZW50 IHRvIGV4cGxhaW4gd2hhdCB0aGUgTUJBIHRocnRsIGRlZmF1bCB2YWx1ZSAnMCcgc3RhbmRzIGZv ci4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGNoZWNrICd0aHJ0bF9tYXgn IHVuZGVyIGxpbmVhciBtb2RlLiBJdCBjb3VsZCBub3QgYmUgZXVxYWwgb3IgbGFyZ2VyIHRoYW4K ICAgICAgMTAwLgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKdjE6CiAgICAtIHJlYmFz ZSBjb2RlcyBvbnRvIEwyIENBVCB2MTUuCiAgICAtIG1vdmUgY29tbWVudCB0byBhcHByb3ByaWF0 ZSBwbGFjZS4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGltcGxlbWVudCAn bWJhX2luaXRfZmVhdHVyZScgYW5kIGtlZXAgJ2NhdF9pbml0X2ZlYXR1cmUnLgogICAgICAoc3Vn Z2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0ga2VlcCAncmVncy5iJyBpbnRvIGEgbG9jYWwgdmFy aWFibGUgdG8gYXZvaWQgcmVhZGluZyBDUFVJRCBldmVyeSB0aW1lLgogICAgICAoc3VnZ2VzdGVk IGJ5IENoYW8gUGVuZykKLS0tCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAgICAgICAgICAgIHwgMTM2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIHhlbi9pbmNsdWRlL2Fz bS14ODYvbXNyLWluZGV4LmggfCAgIDEgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCAgICAg ICB8ICAgMiArCiAzIGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNy LmMKaW5kZXggYzhkYjBjMS4uODUyMDcwOSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5j CisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtMjcsMTMgKzI3LDE2IEBACiAgKiAtIENNVCAg ICAgICAgIENhY2hlIE1vbml0b3JpbmcgVGVjaG5vbG9neQogICogLSBDT1MvQ0xPUyAgICBDbGFz cyBvZiBTZXJ2aWNlLiBBbHNvIG1lYW4gQ09TIHJlZ2lzdGVycy4KICAqIC0gQ09TX01BWCAgICAg TWF4IG51bWJlciBvZiBDT1MgZm9yIHRoZSBmZWF0dXJlIChtaW51cyAxKQorICogLSBNQkEgICAg ICAgICBNZW1vcnkgQmFuZHdpZHRoIEFsbG9jYXRpb24KICAqIC0gTVNScyAgICAgICAgTWFjaGlu ZSBTcGVjaWZpYyBSZWdpc3RlcnMKICAqIC0gUFNSICAgICAgICAgSW50ZWwgUGxhdGZvcm0gU2hh cmVkIFJlc291cmNlCisgKiAtIFRIUlRMX01BWCAgIE1heCB0aHJvdHRsZSB2YWx1ZSAoZGVsYXkg dmFsdWUpIG9mIE1CQQogICovCiAKICNkZWZpbmUgUFNSX0NNVCAgICAgICAgKDF1IDw8IDApCiAj ZGVmaW5lIFBTUl9DQVQgICAgICAgICgxdSA8PCAxKQogI2RlZmluZSBQU1JfQ0RQICAgICAgICAo MXUgPDwgMikKKyNkZWZpbmUgUFNSX01CQSAgICAgICAgKDF1IDw8IDMpCiAKICNkZWZpbmUgQ0FU X0NCTV9MRU5fTUFTSyAweDFmCiAjZGVmaW5lIENBVF9DT1NfTUFYX01BU0sgMHhmZmZmCkBAIC02 MCwxMCArNjMsMTQgQEAKICAqLwogI2RlZmluZSBNQVhfQ09TX05VTSAyCiAKKyNkZWZpbmUgTUJB X0xJTkVBUl9NQVNLICAgICgxdSA8PCAyKQorI2RlZmluZSBNQkFfVEhSVExfTUFYX01BU0sgMHhm ZmYKKwogZW51bSBwc3JfZmVhdF90eXBlIHsKICAgICBGRUFUX1RZUEVfTDNfQ0FULAogICAgIEZF QVRfVFlQRV9MM19DRFAsCiAgICAgRkVBVF9UWVBFX0wyX0NBVCwKKyAgICBGRUFUX1RZUEVfTUJB LAogICAgIEZFQVRfVFlQRV9OVU0sCiAgICAgRkVBVF9UWVBFX1VOS05PV04sCiB9OwpAQCAtNzEs NyArNzgsNiBAQCBlbnVtIHBzcl9mZWF0X3R5cGUgewogLyoKICAqIFRoaXMgc3RydWN0dXJlIHJl cHJlc2VudHMgb25lIGZlYXR1cmUuCiAgKiBjb3NfbWF4ICAgICAtIFRoZSBtYXggQ09TIHJlZ2lz dGVycyBudW1iZXIgZ290IHRocm91Z2ggQ1BVSUQuCi0gKiBjYm1fbGVuICAgICAtIFRoZSBsZW5n dGggb2YgQ0JNIGdvdCB0aHJvdWdoIENQVUlELgogICogY29zX3JlZ192YWwgLSBBcnJheSB0byBz dG9yZSB0aGUgdmFsdWVzIG9mIENPUyByZWdpc3RlcnMuIE9uZSBlbnRyeSBzdG9yZXMKICAqICAg ICAgICAgICAgICAgdGhlIHZhbHVlIG9mIG9uZSBDT1MgcmVnaXN0ZXIuCiAgKiAgICAgICAgICAg ICAgIEZvciBMMyBDQVQgYW5kIEwyIENBVCwgb25lIGVudHJ5IGNvcnJlc3BvbmRzIHRvIG9uZSBD T1NfSUQuCkBAIC04MCw5ICs4NiwyMyBAQCBlbnVtIHBzcl9mZWF0X3R5cGUgewogICogICAgICAg ICAgICAgICBjb3NfcmVnX3ZhbFsxXSAoQ29kZSkuCiAgKi8KIHN0cnVjdCBmZWF0X25vZGUgewot ICAgIC8qIGNvc19tYXggYW5kIGNibV9sZW4gYXJlIGNvbW1vbiB2YWx1ZXMgZm9yIGFsbCBmZWF0 dXJlcyBzbyBmYXIuICovCisgICAgLyogY29zX21heCBpcyBjb21tb24gYW1vbmcgYWxsIGZlYXR1 cmVzIHNvIGZhci4gKi8KICAgICB1bnNpZ25lZCBpbnQgY29zX21heDsKLSAgICB1bnNpZ25lZCBp bnQgY2JtX2xlbjsKKworICAgIC8qIEZlYXR1cmUgc3BlY2lmaWMgSFcgaW5mby4gKi8KKyAgICB1 bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvKiBUaGUgbGVuZ3RoIG9mIENC TSBnb3QgdGhyb3VnaCBDUFVJRC4gKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBjYm1fbGVu OworICAgICAgICB9IGNhdDsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgLyogVGhl IG1heCB0aHJvdHRsaW5nIHZhbHVlIGdvdCB0aHJvdWdoIENQVUlELiAqLworICAgICAgICAgICAg dW5zaWduZWQgaW50IHRocnRsX21heDsKKyAgICAgICAgICAgIGJvb2wgbGluZWFyOworICAgICAg ICB9IG1iYTsKKyAgICB9OworCiAgICAgdWludDMyX3QgY29zX3JlZ192YWxbTUFYX0NPU19SRUdf Q05UXTsKIH07CiAKQEAgLTE2MSw2ICsxODEsNyBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3Ry dWN0IHBzcl9hc3NvYywgcHNyX2Fzc29jKTsKICAqLwogc3RhdGljIHN0cnVjdCBmZWF0X25vZGUg KmZlYXRfbDM7CiBzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF9sMl9jYXQ7CitzdGF0aWMg c3RydWN0IGZlYXRfbm9kZSAqZmVhdF9tYmE7CiAKIC8qIENvbW1vbiBmdW5jdGlvbnMgKi8KICNk ZWZpbmUgY2F0X2RlZmF1bHRfdmFsKGxlbikgKDB4ZmZmZmZmZmYgPj4gKDMyIC0gKGxlbikpKQpA QCAtMjcyLDcgKzI5Myw3IEBAIHN0YXRpYyBib29sIHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50 IGNibV9sZW4sIHVuc2lnbmVkIGxvbmcgY2JtKQogICAgIHJldHVybiB0cnVlOwogfQogCi0vKiBD QVQgY29tbW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KKy8qIEltcGxlbWVudGF0aW9u IG9mIGFsbG9jYXRpb24gZmVhdHVyZXMnIGZ1bmN0aW9ucy4gKi8KIHN0YXRpYyBib29sIGNhdF9p bml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCkBAIC0yODgsOCArMzA5 LDggQEAgc3RhdGljIGJvb2wgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVh ZiAqcmVncywKICAgICBpZiAoICFyZWdzLT5hIHx8ICFyZWdzLT5kICkKICAgICAgICAgcmV0dXJu IGZhbHNlOwogCi0gICAgZmVhdC0+Y2JtX2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFT SykgKyAxOwogICAgIGZlYXQtPmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3MtPmQgJiBD QVRfQ09TX01BWF9NQVNLKTsKKyAgICBmZWF0LT5jYXQuY2JtX2xlbiA9IChyZWdzLT5hICYgQ0FU X0NCTV9MRU5fTUFTSykgKyAxOwogCiAgICAgc3dpdGNoICggdHlwZSApCiAgICAgewpAQCAtMjk5 LDEyICszMjAsMTIgQEAgc3RhdGljIGJvb2wgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3Qg Y3B1aWRfbGVhZiAqcmVncywKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAv KiBXZSByZXNlcnZlIGNvcz0wIGFzIGRlZmF1bHQgY2JtIChhbGwgYml0cyB3aXRoaW4gY2JtX2xl biBhcmUgMSkuICovCi0gICAgICAgIGZlYXQtPmNvc19yZWdfdmFsWzBdID0gY2F0X2RlZmF1bHRf dmFsKGZlYXQtPmNibV9sZW4pOworICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IGNhdF9k ZWZhdWx0X3ZhbChmZWF0LT5jYXQuY2JtX2xlbik7CiAKICAgICAgICAgd3Jtc3JsKCh0eXBlID09 IEZFQVRfVFlQRV9MM19DQVQgPwogICAgICAgICAgICAgICAgIE1TUl9JQTMyX1BTUl9MM19NQVNL KDApIDoKICAgICAgICAgICAgICAgICBNU1JfSUEzMl9QU1JfTDJfTUFTSygwKSksCi0gICAgICAg ICAgICAgICBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOworICAgICAgICAgICAgICAg Y2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdC5jYm1fbGVuKSk7CiAKICAgICAgICAgYnJlYWs7CiAK QEAgLTMxOSwxMSArMzQwLDEzIEBAIHN0YXRpYyBib29sIGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qg c3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgICAgIGZlYXQtPmNvc19tYXggPSAoZmVhdC0+ Y29zX21heCAtIDEpID4+IDE7CiAKICAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZh dWx0IGNibSAoYWxsIGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLwotICAgICAgICBnZXRf Y2RwX2NvZGUoZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbik7Ci0gICAg ICAgIGdldF9jZHBfZGF0YShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVu KTsKKyAgICAgICAgZ2V0X2NkcF9jb2RlKGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQt PmNhdC5jYm1fbGVuKTsKKyAgICAgICAgZ2V0X2NkcF9kYXRhKGZlYXQsIDApID0gY2F0X2RlZmF1 bHRfdmFsKGZlYXQtPmNhdC5jYm1fbGVuKTsKIAotICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNS X0wzX01BU0soMCksIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKSk7Ci0gICAgICAgIHdy bXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygxKSwgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9s ZW4pKTsKKyAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDApLAorICAgICAgICAg ICAgICAgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdC5jYm1fbGVuKSk7CisgICAgICAgIHdybXNy bChNU1JfSUEzMl9QU1JfTDNfTUFTSygxKSwKKyAgICAgICAgICAgICAgIGNhdF9kZWZhdWx0X3Zh bChmZWF0LT5jYXQuY2JtX2xlbikpOwogICAgICAgICByZG1zcmwoTVNSX0lBMzJfUFNSX0wzX1FP U19DRkcsIHZhbCk7CiAgICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfUU9TX0NGRywKICAg ICAgICAgICAgICAgIHZhbCB8ICgxdWxsIDw8IFBTUl9MM19RT1NfQ0RQX0VOQUJMRV9CSVQpKTsK QEAgLTM0MSw3ICszNjQsNDQgQEAgc3RhdGljIGJvb2wgY2F0X2luaXRfZmVhdHVyZShjb25zdCBz dHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKICAgICBpZiAoIG9wdF9jcHVfaW5mbyApCiAgICAgICAg IHByaW50ayhYRU5MT0dfSU5GTyAiJXM6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1 LCBjYm1fbGVuOiV1XG4iLAogICAgICAgICAgICAgICAgY2F0X2ZlYXRfbmFtZVt0eXBlXSwgY3B1 X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpLAotICAgICAgICAgICAgICAgZmVhdC0+Y29z X21heCwgZmVhdC0+Y2JtX2xlbik7CisgICAgICAgICAgICAgICBmZWF0LT5jb3NfbWF4LCBmZWF0 LT5jYXQuY2JtX2xlbik7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgbWJh X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW51bSBwc3JfZmVhdF90eXBlIHR5cGUpCit7CisgICAgLyogTm8gdmFs aWQgdmFsdWUgc28gZG8gbm90IGVuYWJsZSBmZWF0dXJlLiAqLworICAgIGlmICggIXJlZ3MtPmEg fHwgIXJlZ3MtPmQgfHwgdHlwZSAhPSBGRUFUX1RZUEVfTUJBICkKKyAgICAgICAgcmV0dXJuIGZh bHNlOworCisgICAgZmVhdC0+Y29zX21heCA9IG1pbihvcHRfY29zX21heCwgcmVncy0+ZCAmIENB VF9DT1NfTUFYX01BU0spOworICAgIGlmICggZmVhdC0+Y29zX21heCA8IDEgKQorICAgICAgICBy ZXR1cm4gZmFsc2U7CisKKyAgICBmZWF0LT5tYmEudGhydGxfbWF4ID0gKHJlZ3MtPmEgJiBNQkFf VEhSVExfTUFYX01BU0spICsgMTsKKworICAgIGlmICggcmVncy0+YyAmIE1CQV9MSU5FQVJfTUFT SyApCisgICAgeworICAgICAgICBmZWF0LT5tYmEubGluZWFyID0gdHJ1ZTsKKworICAgICAgICBp ZiAoIGZlYXQtPm1iYS50aHJ0bF9tYXggPj0gMTAwICkKKyAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKKyAgICB9CisKKyAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX01CQV9NQVNLKDApLCAwKTsKKwor ICAgIC8qIEFkZCB0aGlzIGZlYXR1cmUgaW50byBhcnJheS4gKi8KKyAgICBpbmZvLT5mZWF0dXJl c1t0eXBlXSA9IGZlYXQ7CisKKyAgICBpZiAoIG9wdF9jcHVfaW5mbyApCisgICAgICAgIHByaW50 ayhYRU5MT0dfSU5GTworICAgICAgICAgICAgICAgIk1CQTogZW5hYmxlZCBvbiBzb2NrZXQgJXUs IGNvc19tYXg6JXUsIHRocnRsX21heDoldSwgbGluZWFyOiVkXG4iLAorICAgICAgICAgICAgICAg Y3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpLAorICAgICAgICAgICAgICAgZmVhdC0+ Y29zX21heCwgZmVhdC0+bWJhLnRocnRsX21heCwgZmVhdC0+bWJhLmxpbmVhcik7CiAKICAgICBy ZXR1cm4gdHJ1ZTsKIH0KQEAgLTM1Myw3ICs0MTMsNyBAQCBzdGF0aWMgYm9vbCBjYXRfZ2V0X2Zl YXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAogICAgICAgICByZXR1cm4gZmFs c2U7CiAKICAgICBkYXRhW1BTUl9JTkZPX0lEWF9DT1NfTUFYXSA9IGZlYXQtPmNvc19tYXg7Ci0g ICAgZGF0YVtQU1JfSU5GT19JRFhfQ0FUX0NCTV9MRU5dID0gZmVhdC0+Y2JtX2xlbjsKKyAgICBk YXRhW1BTUl9JTkZPX0lEWF9DQVRfQ0JNX0xFTl0gPSBmZWF0LT5jYXQuY2JtX2xlbjsKICAgICBk YXRhW1BTUl9JTkZPX0lEWF9DQVRfRkxBR10gPSAwOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC00 MjUsNiArNDg1LDI3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBsMl9jYXRfcHJv cHMgPSB7CiAgICAgLndyaXRlX21zciA9IGwyX2NhdF93cml0ZV9tc3IsCiB9OwogCisvKiBNQkEg cHJvcHMgKi8KK3N0YXRpYyBib29sIG1iYV9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0 X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRh W10sIHVuc2lnbmVkIGludCBhcnJheV9sZW4pCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgdWludDMyX3QgbWJhX3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2 YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl90eXBlIHR5cGUpCit7 CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBtYmFf cHJvcHMgPSB7CisgICAgLmNvc19udW0gPSAxLAorICAgIC50eXBlWzBdID0gUFNSX1RZUEVfTUJB X1RIUlRMLAorICAgIC5hbHRfdHlwZSA9IFBTUl9UWVBFX1VOS05PV04sCisgICAgLmdldF9mZWF0 X2luZm8gPSBtYmFfZ2V0X2ZlYXRfaW5mbywKKyAgICAud3JpdGVfbXNyID0gbWJhX3dyaXRlX21z ciwKK307CisKIHN0YXRpYyBib29sIF9faW5pdCBwYXJzZV9wc3JfYm9vbChjb25zdCBjaGFyICpz LCBjb25zdCBjaGFyICpkZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpzcywgY29uc3QgY2hhciAqZmVhdHVyZSwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFzaykKQEAgLTQ4Myw3ICs1NjQsOCBAQCBzdGF0 aWMgaW50IF9faW5pdCBwYXJzZV9wc3JfcGFyYW0oY29uc3QgY2hhciAqcykKICAgICAgICAgfQog ICAgICAgICBlbHNlIGlmICggIXBhcnNlX3Bzcl9ib29sKHMsIHZhbF9kZWxpbSwgc3MsICJjbXQi LCBQU1JfQ01UKSAmJgogICAgICAgICAgICAgICAgICAgIXBhcnNlX3Bzcl9ib29sKHMsIHZhbF9k ZWxpbSwgc3MsICJjYXQiLCBQU1JfQ0FUKSAmJgotICAgICAgICAgICAgICAgICAgIXBhcnNlX3Bz cl9ib29sKHMsIHZhbF9kZWxpbSwgc3MsICJjZHAiLCBQU1JfQ0RQKSApCisgICAgICAgICAgICAg ICAgICAhcGFyc2VfcHNyX2Jvb2wocywgdmFsX2RlbGltLCBzcywgImNkcCIsIFBTUl9DRFApICYm CisgICAgICAgICAgICAgICAgICAhcGFyc2VfcHNyX2Jvb2wocywgdmFsX2RlbGltLCBzcywgIm1i YSIsIFBTUl9NQkEpICkKICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKIAogICAgICAgICBzID0g c3MgKyAxOwpAQCAtODg3LDcgKzk2OSw3IEBAIHN0YXRpYyBpbnQgaW5zZXJ0X3ZhbF9pbnRvX2Fy cmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGlmICggYXJyYXlfbGVuIDwgcHJvcHMtPmNvc19udW0g KQogICAgICAgICByZXR1cm4gLUVOT1NQQzsKIAotICAgIGlmICggIXBzcl9jaGVja19jYm0oZmVh dC0+Y2JtX2xlbiwgbmV3X3ZhbCkgKQorICAgIGlmICggIXBzcl9jaGVja19jYm0oZmVhdC0+Y2F0 LmNibV9sZW4sIG5ld192YWwpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAKICAgICAvKgpA QCAtMTQwNSw2ICsxNDg3LDEwIEBAIHN0YXRpYyBpbnQgcHNyX2NwdV9wcmVwYXJlKHZvaWQpCiAg ICAgICAgICAoZmVhdF9sMl9jYXQgPSB4emFsbG9jKHN0cnVjdCBmZWF0X25vZGUpKSA9PSBOVUxM ICkKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAKKyAgICBpZiAoIGZlYXRfbWJhID09IE5VTEwg JiYKKyAgICAgICAgIChmZWF0X21iYSA9IHh6YWxsb2Moc3RydWN0IGZlYXRfbm9kZSkpID09IE5V TEwgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0x NDQyLDEzICsxNTI4LDEzIEBAIHN0YXRpYyB2b2lkIHBzcl9jcHVfaW5pdCh2b2lkKQogICAgICAg ICBmZWF0X2wzID0gTlVMTDsKIAogICAgICAgICBpZiAoIChyZWdzLmMgJiBQU1JfQ0FUX0NEUF9D QVBBQklMSVRZKSAmJiAob3B0X3BzciAmIFBTUl9DRFApICYmCi0gICAgICAgICAgICAgIWNhdF9p bml0X2ZlYXR1cmUoJnJlZ3MsIGZlYXQsIGluZm8sIEZFQVRfVFlQRV9MM19DRFApICkKKyAgICAg ICAgICAgICBjYXRfaW5pdF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDNf Q0RQKSApCiAgICAgICAgICAgICBmZWF0X3Byb3BzW0ZFQVRfVFlQRV9MM19DRFBdID0gJmwzX2Nk cF9wcm9wczsKIAogICAgICAgICAvKiBJZiBDRFAgaW5pdCBmYWlscywgdHJ5IHRvIHdvcmsgYXMg TDMgQ0FULiAqLwogICAgICAgICBpZiAoICFmZWF0X3Byb3BzW0ZFQVRfVFlQRV9MM19DRFBdICkK ICAgICAgICAgewotICAgICAgICAgICAgaWYgKCAhY2F0X2luaXRfZmVhdHVyZSgmcmVncywgZmVh dCwgaW5mbywgRkVBVF9UWVBFX0wzX0NBVCkgKQorICAgICAgICAgICAgaWYgKCBjYXRfaW5pdF9m ZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDNfQ0FUKSApCiAgICAgICAgICAg ICAgICAgZmVhdF9wcm9wc1tGRUFUX1RZUEVfTDNfQ0FUXSA9ICZsM19jYXRfcHJvcHM7CiAgICAg ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZmVhdF9sMyA9IGZlYXQ7CkBAIC0xNDYxLDEy ICsxNTQ3LDI0IEBAIHN0YXRpYyB2b2lkIHBzcl9jcHVfaW5pdCh2b2lkKQogCiAgICAgICAgIGZl YXQgPSBmZWF0X2wyX2NhdDsKICAgICAgICAgZmVhdF9sMl9jYXQgPSBOVUxMOwotICAgICAgICBp ZiAoICFjYXRfaW5pdF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDJfQ0FU KSApCisgICAgICAgIGlmICggY2F0X2luaXRfZmVhdHVyZSgmcmVncywgZmVhdCwgaW5mbywgRkVB VF9UWVBFX0wyX0NBVCkgKQogICAgICAgICAgICAgZmVhdF9wcm9wc1tGRUFUX1RZUEVfTDJfQ0FU XSA9ICZsMl9jYXRfcHJvcHM7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGZlYXRfbDJfY2F0 ID0gZmVhdDsKICAgICB9CiAKKyAgICBpZiAoIGVieCAmIFBTUl9SRVNPVVJDRV9UWVBFX01CQSAp CisgICAgeworICAgICAgICBjcHVpZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDMs ICZyZWdzKTsKKworICAgICAgICBmZWF0ID0gZmVhdF9tYmE7CisgICAgICAgIGZlYXRfbWJhID0g TlVMTDsKKyAgICAgICAgaWYgKCBtYmFfaW5pdF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBG RUFUX1RZUEVfTUJBKSApCisgICAgICAgICAgICBmZWF0X3Byb3BzW0ZFQVRfVFlQRV9NQkFdID0g Jm1iYV9wcm9wczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmVhdF9tYmEgPSBmZWF0Owor ICAgIH0KKwogICAgIGluZm8tPmZlYXRfaW5pdCA9IHRydWU7CiAKICBhc3NvY19pbml0OgpAQCAt MTUyNiw3ICsxNjI0LDcgQEAgc3RhdGljIGludCBfX2luaXQgcHNyX3ByZXNtcF9pbml0KHZvaWQp CiAgICAgaWYgKCAob3B0X3BzciAmIFBTUl9DTVQpICYmIG9wdF9ybWlkX21heCApCiAgICAgICAg IGluaXRfcHNyX2NtdChvcHRfcm1pZF9tYXgpOwogCi0gICAgaWYgKCBvcHRfcHNyICYgKFBTUl9D QVQgfCBQU1JfQ0RQKSApCisgICAgaWYgKCBvcHRfcHNyICYgKFBTUl9DQVQgfCBQU1JfQ0RQIHwg UFNSX01CQSkgKQogICAgICAgICBpbml0X3BzcigpOwogCiAgICAgaWYgKCBwc3JfY3B1X3ByZXBh cmUoKSApCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaAppbmRleCA0ZTA4ZGU2Li40MWYxNjc3IDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oCisrKyBiL3hlbi9pbmNsdWRl L2FzbS14ODYvbXNyLWluZGV4LmgKQEAgLTM0OCw2ICszNDgsNyBAQAogI2RlZmluZSBNU1JfSUEz Ml9QU1JfTDNfTUFTS19DT0RFKG4pCSgweDAwMDAwYzkwICsgKG4pICogMiArIDEpCiAjZGVmaW5l IE1TUl9JQTMyX1BTUl9MM19NQVNLX0RBVEEobikJKDB4MDAwMDBjOTAgKyAobikgKiAyKQogI2Rl ZmluZSBNU1JfSUEzMl9QU1JfTDJfTUFTSyhuKQkJKDB4MDAwMDBkMTAgKyAobikpCisjZGVmaW5l IE1TUl9JQTMyX1BTUl9NQkFfTUFTSyhuKQkoMHgwMDAwMGQ1MCArIChuKSkKIAogLyogSW50ZWwg TW9kZWwgNiAqLwogI2RlZmluZSBNU1JfUDZfUEVSRkNUUihuKQkJKDB4MDAwMDAwYzEgKyAobikp CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9wc3IuaAppbmRleCBjYjNmMDY3Li45ZDE0MjY0IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVk ZS9hc20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKQEAgLTI0LDYg KzI0LDcgQEAKIC8qIFJlc291cmNlIFR5cGUgRW51bWVyYXRpb24gKi8KICNkZWZpbmUgUFNSX1JF U09VUkNFX1RZUEVfTDMgICAgICAgICAgICAweDIKICNkZWZpbmUgUFNSX1JFU09VUkNFX1RZUEVf TDIgICAgICAgICAgICAweDQKKyNkZWZpbmUgUFNSX1JFU09VUkNFX1RZUEVfTUJBICAgICAgICAg ICAweDgKIAogLyogTDMgTW9uaXRvcmluZyBGZWF0dXJlcyAqLwogI2RlZmluZSBQU1JfQ01UX0wz X09DQ1VQQU5DWSAgICAgICAgICAgIDB4MQpAQCAtNTgsNiArNTksNyBAQCBlbnVtIHBzcl90eXBl IHsKICAgICBQU1JfVFlQRV9MM19DT0RFLAogICAgIFBTUl9UWVBFX0wzX0RBVEEsCiAgICAgUFNS X1RZUEVfTDJfQ0JNLAorICAgIFBTUl9UWVBFX01CQV9USFJUTCwKICAgICBQU1JfVFlQRV9VTktO T1dOLAogfTsKIAotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4u b3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK