From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v8 05/16] x86: implement data structure and CPU init flow for MBA Date: Mon, 16 Oct 2017 11:04:10 +0800 Message-ID: <1508123061-6600-6-git-send-email-yi.y.sun@linux.intel.com> References: <1508123061-6600-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 1e3w20-0002Qb-GA for xen-devel@lists.xenproject.org; Mon, 16 Oct 2017 03:25:32 +0000 In-Reply-To: <1508123061-6600-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 IG1vcmUKZG9tYWlucy4gVGhlIHRocm90dGxlIHZhbHVlIG1lYW5zIHRoZSBkZWxheSBhcHBsaWVk IHRvIHRyYWZmaWMgYmV0d2VlbgpMMiBjYWNoZSBhbmQgbmV4dCBjYWNoZSBsZXZlbC4KClRoaXMg cGF0Y2ggYWxzbyBpbXBsZW1lbnRzIGluaXQgZmxvdyBmb3IgTUJBIGFuZCByZWdpc3RlciBzdHVi CmNhbGxiYWNrIGZ1bmN0aW9ucy4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGlu dXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogUm9nZXIgUGF1IE1vbm7DqSA8cm9nZXIucGF1QGNp dHJpeC5jb20+ClJldmlld2VkLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0t LQpDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5kcmV3IENvb3BlciA8 YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5saXUyQGNpdHJpeC5j b20+CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQ0M6IENoYW8g UGVuZyA8Y2hhby5wLnBlbmdAbGludXguaW50ZWwuY29tPgoKdjg6CiAgICAtIHJlbW92ZSB1bm5l Y2Vzc2FyeSBsaW5lIHNwbGl0LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAg LSB1c2UgTUFTS19FWFRSKCkuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY3Ogog ICAgLSBtb2RpZnkgY29tbWl0IG1lc3NhZ2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIG1vdmUgdGhlIGNoYW5nZXMgYWJvdXQgY2hlY2sgb2YgJ2NhdF9pbml0X2ZlYXR1 cmUnIGluICdwc3JfY3B1X2luaXQnCiAgICAgIGludG8gcHJldmlvdXMgcGF0Y2guCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY2OgogICAgLSByZXN0b3JlIHR5cGUgb2YgJ21iYV93 cml0ZV9tc3InIHRvICd2b2lkJy4KdjU6CiAgICAtIG1vdmUgb3V0IHNvbWUgQ0FUIGNvZGVzIG9w dGltaXphdGlvbiB0byBhIG5ldyBwYXRjaC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSBjaGFuZ2UgcHJpbnQgdHlwZSBvZiAnbGluZWFyJyB0byBiZSAlZC4KICAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIHR5cGUgb2YgJ21iYV93 cml0ZV9tc3InIHRvIHVpbnQzMl90LgogICAgLSBtb3ZlIHByaW50ayBpbiAnbWJhX2luaXRfZmVh dHVyZScgdG8gcmVkdWNlIG9uZSByZXR1cm4gcGF0aC4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dl ciBQYXUgTW9ubsOpKQogICAgLSBtb3ZlIHRoZSBNQkEgZm9ybWF0IHN0cmluZyBpbiBwcmludGsg dG8gYSBuZXcgbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2NDoK ICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBh dSBNb25uw6kpCiAgICAtIGZpeCBhIGNvbW1lbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIg UGF1IE1vbm7DqSkKICAgIC0gam9pbiB0d28gY2hlY2tzIGluIGEgc2luZ2xlIGlmLgogICAgICAo c3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJlbW92ZSByZWR1bmRhbnQgaW5p dGlhbGl6YXRpb24gb2YgJ2ZlYXQtPmNvc19yZWdfdmFsWzBdJy4KICAgICAgKHN1Z2dlc3RlZCBi eSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBjaGFuZ2UgJ3JlZ19iJyB0byAnZWJ4Jy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIHR5cGUgb2YgJ21iYV9pbml0 X2ZlYXR1cmUnIGZyb20gJ2ludCcgdG8gJ2Jvb2wnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2Vy IFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSB0eXBlIG9mICdjYXRfaW5pdF9mZWF0dXJlJyBmcm9t ICdpbnQnIHRvICdib29sJy4KdjM6CiAgICAtIHJlcGxhY2UgJ3Bzcl92YWxfdHlwZScgdG8gJ3Bz cl90eXBlJy4gQWxzbywgY2hhbmdlICdQU1JfVkFMX1RZUEVfTUJBJyB0bwogICAgICAnUFNSX1RZ UEVfTUJBX1RIUlRMJy4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAg LSByZXBsYWNlICdNQkFfTElORUFSJyB0byAnTUJBX0xJTkVBUl9NQVNLJyB0byBtYWtlIHRoZSBu YW1lIG1vcmUgY2xlYXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAg IC0gcmVwbGFzZSAnY2F0X2luZm8nLydtYmFfaW5mbycgdG8gJ2NhdCcvJ21iYScgdG8gbWFrZSB0 aGUgbmFtZXMgc2hvcnRlci4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQog ICAgLSBjaGFuZ2UgdHlwZSBvZiAnbGluZWFyJyB0byAnYm9vbCcuCiAgICAgIChzdWdnZXN0ZWQg YnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gbWFrZSBmb3JtYXQgc3RyaW5nIG9mIHByaW50ZiBp biBvbmUgbGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQp2MjoKICAg IC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlIHRvIHJlcGxhY2UgJ2NvcyByZWdpc3RlcicgdG8gJ3Ro cnRsIHJlZ2lzdGVyJyB0bwogICAgICBtYWtlIGl0IGFjY3VyYXRlLgogICAgICAoc3VnZ2VzdGVk IGJ5IENoYW8gUGVuZykKICAgIC0gcmVzdG9yZSB0aGUgcGxhY2Ugb2YgdGhlIHNlbnRlbmNlIHRv IGFzc2lnbiB2YWx1ZSB0byAnZmVhdC0+Y2JtX2xlbicKICAgICAgYmVjYXVzZSB0aGUgTUJBIGlu aXQgZmxvdyBpcyBzcGxpdHRlZCBvdXQgYXMgYSBzZXBhcmF0ZSBmdW5jdGlvbiBpbiB2MS4KICAg ICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGFkZCBjb21tZW50IHRvIGV4cGxhaW4g d2hhdCB0aGUgTUJBIHRocnRsIGRlZmF1bCB2YWx1ZSAnMCcgc3RhbmRzIGZvci4KICAgICAgKHN1 Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGNoZWNrICd0aHJ0bF9tYXgnIHVuZGVyIGxpbmVh ciBtb2RlLiBJdCBjb3VsZCBub3QgYmUgZXVxYWwgb3IgbGFyZ2VyIHRoYW4KICAgICAgMTAwLgog ICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKdjE6CiAgICAtIHJlYmFzZSBjb2RlcyBvbnRv IEwyIENBVCB2MTUuCiAgICAtIG1vdmUgY29tbWVudCB0byBhcHByb3ByaWF0ZSBwbGFjZS4KICAg ICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGltcGxlbWVudCAnbWJhX2luaXRfZmVh dHVyZScgYW5kIGtlZXAgJ2NhdF9pbml0X2ZlYXR1cmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IENo YW8gUGVuZykKICAgIC0ga2VlcCAncmVncy5iJyBpbnRvIGEgbG9jYWwgdmFyaWFibGUgdG8gYXZv aWQgcmVhZGluZyBDUFVJRCBldmVyeSB0aW1lLgogICAgICAoc3VnZ2VzdGVkIGJ5IENoYW8gUGVu ZykKLS0tCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAgICAgICAgICAgIHwgMTI3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWlu ZGV4LmggfCAgIDEgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCAgICAgICB8ICAgMiArCiAz IGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggNTBj NWE5OC4uMzIwNzk4OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9h cmNoL3g4Ni9wc3IuYwpAQCAtMjcsMTMgKzI3LDE2IEBACiAgKiAtIENNVCAgICAgICAgIENhY2hl IE1vbml0b3JpbmcgVGVjaG5vbG9neQogICogLSBDT1MvQ0xPUyAgICBDbGFzcyBvZiBTZXJ2aWNl LiBBbHNvIG1lYW4gQ09TIHJlZ2lzdGVycy4KICAqIC0gQ09TX01BWCAgICAgTWF4IG51bWJlciBv ZiBDT1MgZm9yIHRoZSBmZWF0dXJlIChtaW51cyAxKQorICogLSBNQkEgICAgICAgICBNZW1vcnkg QmFuZHdpZHRoIEFsbG9jYXRpb24KICAqIC0gTVNScyAgICAgICAgTWFjaGluZSBTcGVjaWZpYyBS ZWdpc3RlcnMKICAqIC0gUFNSICAgICAgICAgSW50ZWwgUGxhdGZvcm0gU2hhcmVkIFJlc291cmNl CisgKiAtIFRIUlRMX01BWCAgIE1heCB0aHJvdHRsZSB2YWx1ZSAoZGVsYXkgdmFsdWUpIG9mIE1C QQogICovCiAKICNkZWZpbmUgUFNSX0NNVCAgICAgICAgKDF1IDw8IDApCiAjZGVmaW5lIFBTUl9D QVQgICAgICAgICgxdSA8PCAxKQogI2RlZmluZSBQU1JfQ0RQICAgICAgICAoMXUgPDwgMikKKyNk ZWZpbmUgUFNSX01CQSAgICAgICAgKDF1IDw8IDMpCiAKICNkZWZpbmUgQ0FUX0NCTV9MRU5fTUFT SyAweDFmCiAjZGVmaW5lIENBVF9DT1NfTUFYX01BU0sgMHhmZmZmCkBAIC02MCwxMCArNjMsMTQg QEAKICAqLwogI2RlZmluZSBNQVhfQ09TX05VTSAyCiAKKyNkZWZpbmUgTUJBX0xJTkVBUl9NQVNL ICAgICgxdSA8PCAyKQorI2RlZmluZSBNQkFfVEhSVExfTUFYX01BU0sgMHhmZmYKKwogZW51bSBw c3JfZmVhdF90eXBlIHsKICAgICBGRUFUX1RZUEVfTDNfQ0FULAogICAgIEZFQVRfVFlQRV9MM19D RFAsCiAgICAgRkVBVF9UWVBFX0wyX0NBVCwKKyAgICBGRUFUX1RZUEVfTUJBLAogICAgIEZFQVRf VFlQRV9OVU0sCiAgICAgRkVBVF9UWVBFX1VOS05PV04sCiB9OwpAQCAtNzEsNyArNzgsNiBAQCBl bnVtIHBzcl9mZWF0X3R5cGUgewogLyoKICAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgb25l IGZlYXR1cmUuCiAgKiBjb3NfbWF4ICAgICAtIFRoZSBtYXggQ09TIHJlZ2lzdGVycyBudW1iZXIg Z290IHRocm91Z2ggQ1BVSUQuCi0gKiBjYm1fbGVuICAgICAtIFRoZSBsZW5ndGggb2YgQ0JNIGdv dCB0aHJvdWdoIENQVUlELgogICogY29zX3JlZ192YWwgLSBBcnJheSB0byBzdG9yZSB0aGUgdmFs dWVzIG9mIENPUyByZWdpc3RlcnMuIE9uZSBlbnRyeSBzdG9yZXMKICAqICAgICAgICAgICAgICAg dGhlIHZhbHVlIG9mIG9uZSBDT1MgcmVnaXN0ZXIuCiAgKiAgICAgICAgICAgICAgIEZvciBMMyBD QVQgYW5kIEwyIENBVCwgb25lIGVudHJ5IGNvcnJlc3BvbmRzIHRvIG9uZSBDT1NfSUQuCkBAIC04 MCw5ICs4NiwyMyBAQCBlbnVtIHBzcl9mZWF0X3R5cGUgewogICogICAgICAgICAgICAgICBjb3Nf cmVnX3ZhbFsxXSAoQ29kZSkuCiAgKi8KIHN0cnVjdCBmZWF0X25vZGUgewotICAgIC8qIGNvc19t YXggYW5kIGNibV9sZW4gYXJlIGNvbW1vbiB2YWx1ZXMgZm9yIGFsbCBmZWF0dXJlcyBzbyBmYXIu ICovCisgICAgLyogY29zX21heCBpcyBjb21tb24gYW1vbmcgYWxsIGZlYXR1cmVzIHNvIGZhci4g Ki8KICAgICB1bnNpZ25lZCBpbnQgY29zX21heDsKLSAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsK KworICAgIC8qIEZlYXR1cmUgc3BlY2lmaWMgSFcgaW5mby4gKi8KKyAgICB1bmlvbiB7CisgICAg ICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvKiBUaGUgbGVuZ3RoIG9mIENCTSBnb3QgdGhyb3Vn aCBDUFVJRC4gKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGludCBjYm1fbGVuOworICAgICAgICB9 IGNhdDsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgLyogVGhlIG1heCB0aHJvdHRs aW5nIHZhbHVlIGdvdCB0aHJvdWdoIENQVUlELiAqLworICAgICAgICAgICAgdW5zaWduZWQgaW50 IHRocnRsX21heDsKKyAgICAgICAgICAgIGJvb2wgbGluZWFyOworICAgICAgICB9IG1iYTsKKyAg ICB9OworCiAgICAgdWludDMyX3QgY29zX3JlZ192YWxbTUFYX0NPU19SRUdfQ05UXTsKIH07CiAK QEAgLTE2MSw2ICsxODEsNyBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHBzcl9hc3Nv YywgcHNyX2Fzc29jKTsKICAqLwogc3RhdGljIHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDM7CiBz dGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF9sMl9jYXQ7CitzdGF0aWMgc3RydWN0IGZlYXRf bm9kZSAqZmVhdF9tYmE7CiAKIC8qIENvbW1vbiBmdW5jdGlvbnMgKi8KICNkZWZpbmUgY2F0X2Rl ZmF1bHRfdmFsKGxlbikgKDB4ZmZmZmZmZmYgPj4gKDMyIC0gKGxlbikpKQpAQCAtMjcyLDcgKzI5 Myw3IEBAIHN0YXRpYyBib29sIHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50IGNibV9sZW4sIHVu c2lnbmVkIGxvbmcgY2JtKQogICAgIHJldHVybiB0cnVlOwogfQogCi0vKiBDQVQgY29tbW9uIGZ1 bmN0aW9ucyBpbXBsZW1lbnRhdGlvbi4gKi8KKy8qIEltcGxlbWVudGF0aW9uIG9mIGFsbG9jYXRp b24gZmVhdHVyZXMnIGZ1bmN0aW9ucy4gKi8KIHN0YXRpYyBib29sIGNhdF9pbml0X2ZlYXR1cmUo Y29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8sCkBAIC0yODgsOCArMzA5LDggQEAgc3RhdGlj IGJvb2wgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKICAg ICBpZiAoICFyZWdzLT5hIHx8ICFyZWdzLT5kICkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g ICAgZmVhdC0+Y2JtX2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFTSykgKyAxOwogICAg IGZlYXQtPmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3MtPmQgJiBDQVRfQ09TX01BWF9N QVNLKTsKKyAgICBmZWF0LT5jYXQuY2JtX2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFT SykgKyAxOwogCiAgICAgc3dpdGNoICggdHlwZSApCiAgICAgewpAQCAtMjk5LDEyICszMjAsMTIg QEAgc3RhdGljIGJvb2wgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAq cmVncywKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICAvKiBXZSByZXNlcnZl IGNvcz0wIGFzIGRlZmF1bHQgY2JtIChhbGwgYml0cyB3aXRoaW4gY2JtX2xlbiBhcmUgMSkuICov Ci0gICAgICAgIGZlYXQtPmNvc19yZWdfdmFsWzBdID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNi bV9sZW4pOworICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IGNhdF9kZWZhdWx0X3ZhbChm ZWF0LT5jYXQuY2JtX2xlbik7CiAKICAgICAgICAgd3Jtc3JsKCh0eXBlID09IEZFQVRfVFlQRV9M M19DQVQgPwogICAgICAgICAgICAgICAgIE1TUl9JQTMyX1BTUl9MM19NQVNLKDApIDoKICAgICAg ICAgICAgICAgICBNU1JfSUEzMl9QU1JfTDJfTUFTSygwKSksCi0gICAgICAgICAgICAgICBjYXRf ZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOworICAgICAgICAgICAgICAgY2F0X2RlZmF1bHRf dmFsKGZlYXQtPmNhdC5jYm1fbGVuKSk7CiAKICAgICAgICAgYnJlYWs7CiAKQEAgLTMxOSwxMSAr MzQwLDExIEBAIHN0YXRpYyBib29sIGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlk X2xlYWYgKnJlZ3MsCiAgICAgICAgIGZlYXQtPmNvc19tYXggPSAoZmVhdC0+Y29zX21heCAtIDEp ID4+IDE7CiAKICAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAoYWxs IGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLwotICAgICAgICBnZXRfY2RwX2NvZGUoZmVh dCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbik7Ci0gICAgICAgIGdldF9jZHBf ZGF0YShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKyAgICAgICAg Z2V0X2NkcF9jb2RlKGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdC5jYm1fbGVu KTsKKyAgICAgICAgZ2V0X2NkcF9kYXRhKGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQt PmNhdC5jYm1fbGVuKTsKIAotICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0soMCks IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKSk7Ci0gICAgICAgIHdybXNybChNU1JfSUEz Ml9QU1JfTDNfTUFTSygxKSwgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pKTsKKyAgICAg ICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDApLCBjYXRfZGVmYXVsdF92YWwoZmVhdC0+ Y2F0LmNibV9sZW4pKTsKKyAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDEpLCBj YXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0LmNibV9sZW4pKTsKICAgICAgICAgcmRtc3JsKE1TUl9J QTMyX1BTUl9MM19RT1NfQ0ZHLCB2YWwpOwogICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wz X1FPU19DRkcsCiAgICAgICAgICAgICAgICB2YWwgfCAoMXVsbCA8PCBQU1JfTDNfUU9TX0NEUF9F TkFCTEVfQklUKSk7CkBAIC0zNDEsNyArMzYyLDQ0IEBAIHN0YXRpYyBib29sIGNhdF9pbml0X2Zl YXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgaWYgKCBvcHRfY3B1X2lu Zm8gKQogICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIiVzOiBlbmFibGVkIG9uIHNvY2tldCAl dSwgY29zX21heDoldSwgY2JtX2xlbjoldVxuIiwKICAgICAgICAgICAgICAgIGNhdF9mZWF0X25h bWVbdHlwZV0sIGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKSwKLSAgICAgICAgICAg ICAgIGZlYXQtPmNvc19tYXgsIGZlYXQtPmNibV9sZW4pOworICAgICAgICAgICAgICAgZmVhdC0+ Y29zX21heCwgZmVhdC0+Y2F0LmNibV9sZW4pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0 YXRpYyBib29sIG1iYV9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3Ms CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSB0eXBlKQorewor ICAgIC8qIE5vIHZhbGlkIHZhbHVlIHNvIGRvIG5vdCBlbmFibGUgZmVhdHVyZS4gKi8KKyAgICBp ZiAoICFyZWdzLT5hIHx8ICFyZWdzLT5kIHx8IHR5cGUgIT0gRkVBVF9UWVBFX01CQSApCisgICAg ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZlYXQtPmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgs IE1BU0tfRVhUUihyZWdzLT5kLCBDQVRfQ09TX01BWF9NQVNLKSk7CisgICAgaWYgKCBmZWF0LT5j b3NfbWF4IDwgMSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZlYXQtPm1iYS50aHJ0 bF9tYXggPSBNQVNLX0VYVFIocmVncy0+YSwgTUJBX1RIUlRMX01BWF9NQVNLKSArIDE7CisKKyAg ICBpZiAoIHJlZ3MtPmMgJiBNQkFfTElORUFSX01BU0sgKQorICAgIHsKKyAgICAgICAgZmVhdC0+ bWJhLmxpbmVhciA9IHRydWU7CisKKyAgICAgICAgaWYgKCBmZWF0LT5tYmEudGhydGxfbWF4ID49 IDEwMCApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgd3Jtc3JsKE1T Ul9JQTMyX1BTUl9NQkFfTUFTSygwKSwgMCk7CisKKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJlIGlu dG8gYXJyYXkuICovCisgICAgaW5mby0+ZmVhdHVyZXNbdHlwZV0gPSBmZWF0OworCisgICAgaWYg KCBvcHRfY3B1X2luZm8gKQorICAgICAgICBwcmludGsoWEVOTE9HX0lORk8KKyAgICAgICAgICAg ICAgICJNQkE6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1LCB0aHJ0bF9tYXg6JXUs IGxpbmVhcjolZFxuIiwKKyAgICAgICAgICAgICAgIGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nv cl9pZCgpKSwKKyAgICAgICAgICAgICAgIGZlYXQtPmNvc19tYXgsIGZlYXQtPm1iYS50aHJ0bF9t YXgsIGZlYXQtPm1iYS5saW5lYXIpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0zNTMsNyAr NDExLDcgQEAgc3RhdGljIGJvb2wgY2F0X2dldF9mZWF0X2luZm8oY29uc3Qgc3RydWN0IGZlYXRf bm9kZSAqZmVhdCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgZGF0YVtQU1JfSU5GT19J RFhfQ09TX01BWF0gPSBmZWF0LT5jb3NfbWF4OwotICAgIGRhdGFbUFNSX0lORk9fSURYX0NBVF9D Qk1fTEVOXSA9IGZlYXQtPmNibV9sZW47CisgICAgZGF0YVtQU1JfSU5GT19JRFhfQ0FUX0NCTV9M RU5dID0gZmVhdC0+Y2F0LmNibV9sZW47CiAgICAgZGF0YVtQU1JfSU5GT19JRFhfQ0FUX0ZMQUdT XSA9IDA7CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQxOSw2ICs0NzcsMjYgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBmZWF0X3Byb3BzIGwyX2NhdF9wcm9wcyA9IHsKICAgICAud3JpdGVfbXNyID0g bDJfY2F0X3dyaXRlX21zciwKIH07CiAKKy8qIE1CQSBwcm9wcyAqLworc3RhdGljIGJvb2wgbWJh X2dldF9mZWF0X2luZm8oY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQgaW50IGFycmF5X2xl bikKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIG1iYV93cml0ZV9tc3Io dW5zaWduZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAg ICBlbnVtIHBzcl90eXBlIHR5cGUpCit7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9w cm9wcyBtYmFfcHJvcHMgPSB7CisgICAgLmNvc19udW0gPSAxLAorICAgIC50eXBlWzBdID0gUFNS X1RZUEVfTUJBX1RIUlRMLAorICAgIC5hbHRfdHlwZSA9IFBTUl9UWVBFX1VOS05PV04sCisgICAg LmdldF9mZWF0X2luZm8gPSBtYmFfZ2V0X2ZlYXRfaW5mbywKKyAgICAud3JpdGVfbXNyID0gbWJh X3dyaXRlX21zciwKK307CisKIHN0YXRpYyBib29sIF9faW5pdCBwYXJzZV9wc3JfYm9vbChjb25z dCBjaGFyICpzLCBjb25zdCBjaGFyICpkZWxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpzcywgY29uc3QgY2hhciAqZmVhdHVyZSwKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFzaykKQEAgLTQ3Nyw3ICs1NTUs OCBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9wc3JfcGFyYW0oY29uc3QgY2hhciAqcykKICAg ICAgICAgfQogICAgICAgICBlbHNlIGlmICggIXBhcnNlX3Bzcl9ib29sKHMsIHZhbF9kZWxpbSwg c3MsICJjbXQiLCBQU1JfQ01UKSAmJgogICAgICAgICAgICAgICAgICAgIXBhcnNlX3Bzcl9ib29s KHMsIHZhbF9kZWxpbSwgc3MsICJjYXQiLCBQU1JfQ0FUKSAmJgotICAgICAgICAgICAgICAgICAg IXBhcnNlX3Bzcl9ib29sKHMsIHZhbF9kZWxpbSwgc3MsICJjZHAiLCBQU1JfQ0RQKSApCisgICAg ICAgICAgICAgICAgICAhcGFyc2VfcHNyX2Jvb2wocywgdmFsX2RlbGltLCBzcywgImNkcCIsIFBT Ul9DRFApICYmCisgICAgICAgICAgICAgICAgICAhcGFyc2VfcHNyX2Jvb2wocywgdmFsX2RlbGlt LCBzcywgIm1iYSIsIFBTUl9NQkEpICkKICAgICAgICAgICAgIHJjID0gLUVJTlZBTDsKIAogICAg ICAgICBzID0gc3MgKyAxOwpAQCAtODgxLDcgKzk2MCw3IEBAIHN0YXRpYyBpbnQgaW5zZXJ0X3Zh bF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGlmICggYXJyYXlfbGVuIDwgcHJvcHMt PmNvc19udW0gKQogICAgICAgICByZXR1cm4gLUVOT1NQQzsKIAotICAgIGlmICggIXBzcl9jaGVj a19jYm0oZmVhdC0+Y2JtX2xlbiwgbmV3X3ZhbCkgKQorICAgIGlmICggIXBzcl9jaGVja19jYm0o ZmVhdC0+Y2F0LmNibV9sZW4sIG5ld192YWwpICkKICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CiAK ICAgICAvKgpAQCAtMTQwMiw2ICsxNDgxLDEwIEBAIHN0YXRpYyBpbnQgcHNyX2NwdV9wcmVwYXJl KHZvaWQpCiAgICAgICAgICAoZmVhdF9sMl9jYXQgPSB4emFsbG9jKHN0cnVjdCBmZWF0X25vZGUp KSA9PSBOVUxMICkKICAgICAgICAgcmV0dXJuIC1FTk9NRU07CiAKKyAgICBpZiAoIGZlYXRfbWJh ID09IE5VTEwgJiYKKyAgICAgICAgIChmZWF0X21iYSA9IHh6YWxsb2Moc3RydWN0IGZlYXRfbm9k ZSkpID09IE5VTEwgKQorICAgICAgICByZXR1cm4gLUVOT01FTTsKKwogICAgIHJldHVybiAwOwog fQogCkBAIC0xNDY0LDYgKzE1NDcsMTggQEAgc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0KHZvaWQp CiAgICAgICAgICAgICBmZWF0X2wyX2NhdCA9IGZlYXQ7CiAgICAgfQogCisgICAgaWYgKCBmZWF0 X21hc2sgJiBQU1JfUkVTT1VSQ0VfVFlQRV9NQkEgKQorICAgIHsKKyAgICAgICAgY3B1aWRfY291 bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAzLCAmcmVncyk7CisKKyAgICAgICAgZmVhdCA9 IGZlYXRfbWJhOworICAgICAgICBmZWF0X21iYSA9IE5VTEw7CisgICAgICAgIGlmICggbWJhX2lu aXRfZmVhdHVyZSgmcmVncywgZmVhdCwgaW5mbywgRkVBVF9UWVBFX01CQSkgKQorICAgICAgICAg ICAgZmVhdF9wcm9wc1tGRUFUX1RZUEVfTUJBXSA9ICZtYmFfcHJvcHM7CisgICAgICAgIGVsc2UK KyAgICAgICAgICAgIGZlYXRfbWJhID0gZmVhdDsKKyAgICB9CisKICAgICBpbmZvLT5mZWF0X2lu aXQgPSB0cnVlOwogCiAgYXNzb2NfaW5pdDoKQEAgLTE1MjMsNyArMTYxOCw3IEBAIHN0YXRpYyBp bnQgX19pbml0IHBzcl9wcmVzbXBfaW5pdCh2b2lkKQogICAgIGlmICggKG9wdF9wc3IgJiBQU1Jf Q01UKSAmJiBvcHRfcm1pZF9tYXggKQogICAgICAgICBpbml0X3Bzcl9jbXQob3B0X3JtaWRfbWF4 KTsKIAotICAgIGlmICggb3B0X3BzciAmIChQU1JfQ0FUIHwgUFNSX0NEUCkgKQorICAgIGlmICgg b3B0X3BzciAmIChQU1JfQ0FUIHwgUFNSX0NEUCB8IFBTUl9NQkEpICkKICAgICAgICAgaW5pdF9w c3IoKTsKIAogICAgIGlmICggcHNyX2NwdV9wcmVwYXJlKCkgKQpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4 LmgKaW5kZXggYjk5YzYyMy4uYTgzNGYzYiAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9tc3ItaW5kZXguaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oCkBAIC0z NDgsNiArMzQ4LDcgQEAKICNkZWZpbmUgTVNSX0lBMzJfUFNSX0wzX01BU0tfQ09ERShuKQkoMHgw MDAwMGM5MCArIChuKSAqIDIgKyAxKQogI2RlZmluZSBNU1JfSUEzMl9QU1JfTDNfTUFTS19EQVRB KG4pCSgweDAwMDAwYzkwICsgKG4pICogMikKICNkZWZpbmUgTVNSX0lBMzJfUFNSX0wyX01BU0so bikJCSgweDAwMDAwZDEwICsgKG4pKQorI2RlZmluZSBNU1JfSUEzMl9QU1JfTUJBX01BU0sobikJ KDB4MDAwMDBkNTAgKyAobikpCiAKIC8qIEludGVsIE1vZGVsIDYgKi8KICNkZWZpbmUgTVNSX1A2 X1BFUkZDVFIobikJCSgweDAwMDAwMGMxICsgKG4pKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUv YXNtLXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKaW5kZXggZjE1MWZhNy4u M2NmNTQ0YSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAorKysgYi94ZW4v aW5jbHVkZS9hc20teDg2L3Bzci5oCkBAIC0yNCw2ICsyNCw3IEBACiAvKiBSZXNvdXJjZSBUeXBl IEVudW1lcmF0aW9uICovCiAjZGVmaW5lIFBTUl9SRVNPVVJDRV9UWVBFX0wzICAgICAgICAgICAg MHgyCiAjZGVmaW5lIFBTUl9SRVNPVVJDRV9UWVBFX0wyICAgICAgICAgICAgMHg0CisjZGVmaW5l IFBTUl9SRVNPVVJDRV9UWVBFX01CQSAgICAgICAgICAgMHg4CiAKIC8qIEwzIE1vbml0b3Jpbmcg RmVhdHVyZXMgKi8KICNkZWZpbmUgUFNSX0NNVF9MM19PQ0NVUEFOQ1kgICAgICAgICAgICAweDEK QEAgLTU4LDYgKzU5LDcgQEAgZW51bSBwc3JfdHlwZSB7CiAgICAgUFNSX1RZUEVfTDNfQ09ERSwK ICAgICBQU1JfVFlQRV9MM19EQVRBLAogICAgIFBTUl9UWVBFX0wyX0NCTSwKKyAgICBQU1JfVFlQ RV9NQkFfVEhSVEwsCiAgICAgUFNSX1RZUEVfVU5LTk9XTiwKIH07CiAKLS0gCjEuOS4xCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1h aWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcv eGVuLWRldmVsCg==