From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v7 05/16] x86: implement data structure and CPU init flow for MBA Date: Fri, 13 Oct 2017 16:40:57 +0800 Message-ID: <1507884068-18757-6-git-send-email-yi.y.sun@linux.intel.com> References: <1507884068-18757-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 1e2vr5-0001o3-NZ for xen-devel@lists.xenproject.org; Fri, 13 Oct 2017 09:02:07 +0000 In-Reply-To: <1507884068-18757-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+Ci0tLQpDQzogSmFuIEJldWxpY2ggPGpiZXVsaWNoQHN1c2UuY29tPgpDQzogQW5k cmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ0M6IFdlaSBMaXUgPHdlaS5s aXUyQGNpdHJpeC5jb20+CkNDOiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNv bT4KQ0M6IENoYW8gUGVuZyA8Y2hhby5wLnBlbmdAbGludXguaW50ZWwuY29tPgoKdjc6CiAgICAt IG1vZGlmeSBjb21taXQgbWVzc2FnZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gbW92ZSB0aGUgY2hhbmdlcyBhYm91dCBjaGVjayBvZiAnY2F0X2luaXRfZmVhdHVyZScg aW4gJ3Bzcl9jcHVfaW5pdCcKICAgICAgaW50byBwcmV2aW91cyBwYXRjaC4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKdjY6CiAgICAtIHJlc3RvcmUgdHlwZSBvZiAnbWJhX3dyaXRl X21zcicgdG8gJ3ZvaWQnLgp2NToKICAgIC0gbW92ZSBvdXQgc29tZSBDQVQgY29kZXMgb3B0aW1p emF0aW9uIHRvIGEgbmV3IHBhdGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSBtb2RpZnkgY29tbWl0IG1lc3NhZ2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIGNoYW5nZSBwcmludCB0eXBlIG9mICdsaW5lYXInIHRvIGJlICVkLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2UgdHlwZSBvZiAnbWJhX3dyaXRl X21zcicgdG8gdWludDMyX3QuCiAgICAtIG1vdmUgcHJpbnRrIGluICdtYmFfaW5pdF9mZWF0dXJl JyB0byByZWR1Y2Ugb25lIHJldHVybiBwYXRoLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBh dSBNb25uw6kpCiAgICAtIG1vdmUgdGhlIE1CQSBmb3JtYXQgc3RyaW5nIGluIHByaW50ayB0byBh IG5ldyBsaW5lLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCnY0OgogICAg LSBtb2RpZnkgY29tbWl0IG1lc3NhZ2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1v bm7DqSkKICAgIC0gZml4IGEgY29tbWVudC4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUg TW9ubsOpKQogICAgLSBqb2luIHR3byBjaGVja3MgaW4gYSBzaW5nbGUgaWYuCiAgICAgIChzdWdn ZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gcmVtb3ZlIHJlZHVuZGFudCBpbml0aWFs aXphdGlvbiBvZiAnZmVhdC0+Y29zX3JlZ192YWxbMF0nLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJv Z2VyIFBhdSBNb25uw6kpCiAgICAtIGNoYW5nZSAncmVnX2InIHRvICdlYngnLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2UgdHlwZSBvZiAnbWJhX2luaXRfZmVh dHVyZScgZnJvbSAnaW50JyB0byAnYm9vbCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1 IE1vbm7DqSkKICAgIC0gY2hhbmdlIHR5cGUgb2YgJ2NhdF9pbml0X2ZlYXR1cmUnIGZyb20gJ2lu dCcgdG8gJ2Jvb2wnLgp2MzoKICAgIC0gcmVwbGFjZSAncHNyX3ZhbF90eXBlJyB0byAncHNyX3R5 cGUnLiBBbHNvLCBjaGFuZ2UgJ1BTUl9WQUxfVFlQRV9NQkEnIHRvCiAgICAgICdQU1JfVFlQRV9N QkFfVEhSVEwnLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIHJl cGxhY2UgJ01CQV9MSU5FQVInIHRvICdNQkFfTElORUFSX01BU0snIHRvIG1ha2UgdGhlIG5hbWUg bW9yZSBjbGVhci4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSBy ZXBsYXNlICdjYXRfaW5mbycvJ21iYV9pbmZvJyB0byAnY2F0Jy8nbWJhJyB0byBtYWtlIHRoZSBu YW1lcyBzaG9ydGVyLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAt IGNoYW5nZSB0eXBlIG9mICdsaW5lYXInIHRvICdib29sJy4KICAgICAgKHN1Z2dlc3RlZCBieSBS b2dlciBQYXUgTW9ubsOpKQogICAgLSBtYWtlIGZvcm1hdCBzdHJpbmcgb2YgcHJpbnRmIGluIG9u ZSBsaW5lLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCnYyOgogICAgLSBt b2RpZnkgY29tbWl0IG1lc3NhZ2UgdG8gcmVwbGFjZSAnY29zIHJlZ2lzdGVyJyB0byAndGhydGwg cmVnaXN0ZXInIHRvCiAgICAgIG1ha2UgaXQgYWNjdXJhdGUuCiAgICAgIChzdWdnZXN0ZWQgYnkg Q2hhbyBQZW5nKQogICAgLSByZXN0b3JlIHRoZSBwbGFjZSBvZiB0aGUgc2VudGVuY2UgdG8gYXNz aWduIHZhbHVlIHRvICdmZWF0LT5jYm1fbGVuJwogICAgICBiZWNhdXNlIHRoZSBNQkEgaW5pdCBm bG93IGlzIHNwbGl0dGVkIG91dCBhcyBhIHNlcGFyYXRlIGZ1bmN0aW9uIGluIHYxLgogICAgICAo c3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0gYWRkIGNvbW1lbnQgdG8gZXhwbGFpbiB3aGF0 IHRoZSBNQkEgdGhydGwgZGVmYXVsIHZhbHVlICcwJyBzdGFuZHMgZm9yLgogICAgICAoc3VnZ2Vz dGVkIGJ5IENoYW8gUGVuZykKICAgIC0gY2hlY2sgJ3RocnRsX21heCcgdW5kZXIgbGluZWFyIG1v ZGUuIEl0IGNvdWxkIG5vdCBiZSBldXFhbCBvciBsYXJnZXIgdGhhbgogICAgICAxMDAuCiAgICAg IChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQp2MToKICAgIC0gcmViYXNlIGNvZGVzIG9udG8gTDIg Q0FUIHYxNS4KICAgIC0gbW92ZSBjb21tZW50IHRvIGFwcHJvcHJpYXRlIHBsYWNlLgogICAgICAo c3VnZ2VzdGVkIGJ5IENoYW8gUGVuZykKICAgIC0gaW1wbGVtZW50ICdtYmFfaW5pdF9mZWF0dXJl JyBhbmQga2VlcCAnY2F0X2luaXRfZmVhdHVyZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQ ZW5nKQogICAgLSBrZWVwICdyZWdzLmInIGludG8gYSBsb2NhbCB2YXJpYWJsZSB0byBhdm9pZCBy ZWFkaW5nIENQVUlEIGV2ZXJ5IHRpbWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQot LS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyAgICAgICAgICAgICAgfCAxMjkgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXgu aCB8ICAgMSArCiB4ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oICAgICAgIHwgICAyICsKIDMgZmls ZXMgY2hhbmdlZCwgMTE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCA1MGM1YTk4 Li42NGQzMGI5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gv eDg2L3Bzci5jCkBAIC0yNywxMyArMjcsMTYgQEAKICAqIC0gQ01UICAgICAgICAgQ2FjaGUgTW9u aXRvcmluZyBUZWNobm9sb2d5CiAgKiAtIENPUy9DTE9TICAgIENsYXNzIG9mIFNlcnZpY2UuIEFs c28gbWVhbiBDT1MgcmVnaXN0ZXJzLgogICogLSBDT1NfTUFYICAgICBNYXggbnVtYmVyIG9mIENP UyBmb3IgdGhlIGZlYXR1cmUgKG1pbnVzIDEpCisgKiAtIE1CQSAgICAgICAgIE1lbW9yeSBCYW5k d2lkdGggQWxsb2NhdGlvbgogICogLSBNU1JzICAgICAgICBNYWNoaW5lIFNwZWNpZmljIFJlZ2lz dGVycwogICogLSBQU1IgICAgICAgICBJbnRlbCBQbGF0Zm9ybSBTaGFyZWQgUmVzb3VyY2UKKyAq IC0gVEhSVExfTUFYICAgTWF4IHRocm90dGxlIHZhbHVlIChkZWxheSB2YWx1ZSkgb2YgTUJBCiAg Ki8KIAogI2RlZmluZSBQU1JfQ01UICAgICAgICAoMXUgPDwgMCkKICNkZWZpbmUgUFNSX0NBVCAg ICAgICAgKDF1IDw8IDEpCiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxdSA8PCAyKQorI2RlZmlu ZSBQU1JfTUJBICAgICAgICAoMXUgPDwgMykKIAogI2RlZmluZSBDQVRfQ0JNX0xFTl9NQVNLIDB4 MWYKICNkZWZpbmUgQ0FUX0NPU19NQVhfTUFTSyAweGZmZmYKQEAgLTYwLDEwICs2MywxNCBAQAog ICovCiAjZGVmaW5lIE1BWF9DT1NfTlVNIDIKIAorI2RlZmluZSBNQkFfTElORUFSX01BU0sgICAg KDF1IDw8IDIpCisjZGVmaW5lIE1CQV9USFJUTF9NQVhfTUFTSyAweGZmZgorCiBlbnVtIHBzcl9m ZWF0X3R5cGUgewogICAgIEZFQVRfVFlQRV9MM19DQVQsCiAgICAgRkVBVF9UWVBFX0wzX0NEUCwK ICAgICBGRUFUX1RZUEVfTDJfQ0FULAorICAgIEZFQVRfVFlQRV9NQkEsCiAgICAgRkVBVF9UWVBF X05VTSwKICAgICBGRUFUX1RZUEVfVU5LTk9XTiwKIH07CkBAIC03MSw3ICs3OCw2IEBAIGVudW0g cHNyX2ZlYXRfdHlwZSB7CiAvKgogICogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyBvbmUgZmVh dHVyZS4KICAqIGNvc19tYXggICAgIC0gVGhlIG1heCBDT1MgcmVnaXN0ZXJzIG51bWJlciBnb3Qg dGhyb3VnaCBDUFVJRC4KLSAqIGNibV9sZW4gICAgIC0gVGhlIGxlbmd0aCBvZiBDQk0gZ290IHRo cm91Z2ggQ1BVSUQuCiAgKiBjb3NfcmVnX3ZhbCAtIEFycmF5IHRvIHN0b3JlIHRoZSB2YWx1ZXMg b2YgQ09TIHJlZ2lzdGVycy4gT25lIGVudHJ5IHN0b3JlcwogICogICAgICAgICAgICAgICB0aGUg dmFsdWUgb2Ygb25lIENPUyByZWdpc3Rlci4KICAqICAgICAgICAgICAgICAgRm9yIEwzIENBVCBh bmQgTDIgQ0FULCBvbmUgZW50cnkgY29ycmVzcG9uZHMgdG8gb25lIENPU19JRC4KQEAgLTgwLDkg Kzg2LDIzIEBAIGVudW0gcHNyX2ZlYXRfdHlwZSB7CiAgKiAgICAgICAgICAgICAgIGNvc19yZWdf dmFsWzFdIChDb2RlKS4KICAqLwogc3RydWN0IGZlYXRfbm9kZSB7Ci0gICAgLyogY29zX21heCBh bmQgY2JtX2xlbiBhcmUgY29tbW9uIHZhbHVlcyBmb3IgYWxsIGZlYXR1cmVzIHNvIGZhci4gKi8K KyAgICAvKiBjb3NfbWF4IGlzIGNvbW1vbiBhbW9uZyBhbGwgZmVhdHVyZXMgc28gZmFyLiAqLwog ICAgIHVuc2lnbmVkIGludCBjb3NfbWF4OwotICAgIHVuc2lnbmVkIGludCBjYm1fbGVuOworCisg ICAgLyogRmVhdHVyZSBzcGVjaWZpYyBIVyBpbmZvLiAqLworICAgIHVuaW9uIHsKKyAgICAgICAg c3RydWN0IHsKKyAgICAgICAgICAgIC8qIFRoZSBsZW5ndGggb2YgQ0JNIGdvdCB0aHJvdWdoIENQ VUlELiAqLworICAgICAgICAgICAgdW5zaWduZWQgaW50IGNibV9sZW47CisgICAgICAgIH0gY2F0 OworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvKiBUaGUgbWF4IHRocm90dGxpbmcg dmFsdWUgZ290IHRocm91Z2ggQ1BVSUQuICovCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdGhy dGxfbWF4OworICAgICAgICAgICAgYm9vbCBsaW5lYXI7CisgICAgICAgIH0gbWJhOworICAgIH07 CisKICAgICB1aW50MzJfdCBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19DTlRdOwogfTsKIApAQCAt MTYxLDYgKzE4MSw3IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHNyX2Fzc29jLCBw c3JfYXNzb2MpOwogICovCiBzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF9sMzsKIHN0YXRp YyBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0X2wyX2NhdDsKK3N0YXRpYyBzdHJ1Y3QgZmVhdF9ub2Rl ICpmZWF0X21iYTsKIAogLyogQ29tbW9uIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBjYXRfZGVmYXVs dF92YWwobGVuKSAoMHhmZmZmZmZmZiA+PiAoMzIgLSAobGVuKSkpCkBAIC0yNzIsNyArMjkzLDcg QEAgc3RhdGljIGJvb2wgcHNyX2NoZWNrX2NibSh1bnNpZ25lZCBpbnQgY2JtX2xlbiwgdW5zaWdu ZWQgbG9uZyBjYm0pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8qIENBVCBjb21tb24gZnVuY3Rp b25zIGltcGxlbWVudGF0aW9uLiAqLworLyogSW1wbGVtZW50YXRpb24gb2YgYWxsb2NhdGlvbiBm ZWF0dXJlcycgZnVuY3Rpb25zLiAqLwogc3RhdGljIGJvb2wgY2F0X2luaXRfZmVhdHVyZShjb25z dCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKQEAgLTI4OCw4ICszMDksOCBAQCBzdGF0aWMgYm9v bCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgIGlm ICggIXJlZ3MtPmEgfHwgIXJlZ3MtPmQgKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBm ZWF0LT5jYm1fbGVuID0gKHJlZ3MtPmEgJiBDQVRfQ0JNX0xFTl9NQVNLKSArIDE7CiAgICAgZmVh dC0+Y29zX21heCA9IG1pbihvcHRfY29zX21heCwgcmVncy0+ZCAmIENBVF9DT1NfTUFYX01BU0sp OworICAgIGZlYXQtPmNhdC5jYm1fbGVuID0gKHJlZ3MtPmEgJiBDQVRfQ0JNX0xFTl9NQVNLKSAr IDE7CiAKICAgICBzd2l0Y2ggKCB0eXBlICkKICAgICB7CkBAIC0yOTksMTIgKzMyMCwxMiBAQCBz dGF0aWMgYm9vbCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdz LAogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8qIFdlIHJlc2VydmUgY29z PTAgYXMgZGVmYXVsdCBjYm0gKGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8KLSAg ICAgICAgZmVhdC0+Y29zX3JlZ192YWxbMF0gPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xl bik7CisgICAgICAgIGZlYXQtPmNvc19yZWdfdmFsWzBdID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQt PmNhdC5jYm1fbGVuKTsKIAogICAgICAgICB3cm1zcmwoKHR5cGUgPT0gRkVBVF9UWVBFX0wzX0NB VCA/CiAgICAgICAgICAgICAgICAgTVNSX0lBMzJfUFNSX0wzX01BU0soMCkgOgogICAgICAgICAg ICAgICAgIE1TUl9JQTMyX1BTUl9MMl9NQVNLKDApKSwKLSAgICAgICAgICAgICAgIGNhdF9kZWZh dWx0X3ZhbChmZWF0LT5jYm1fbGVuKSk7CisgICAgICAgICAgICAgICBjYXRfZGVmYXVsdF92YWwo ZmVhdC0+Y2F0LmNibV9sZW4pKTsKIAogICAgICAgICBicmVhazsKIApAQCAtMzE5LDExICszNDAs MTMgQEAgc3RhdGljIGJvb2wgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVh ZiAqcmVncywKICAgICAgICAgZmVhdC0+Y29zX21heCA9IChmZWF0LT5jb3NfbWF4IC0gMSkgPj4g MTsKIAogICAgICAgICAvKiBXZSByZXNlcnZlIGNvcz0wIGFzIGRlZmF1bHQgY2JtIChhbGwgYml0 cyB3aXRoaW4gY2JtX2xlbiBhcmUgMSkuICovCi0gICAgICAgIGdldF9jZHBfY29kZShmZWF0LCAw KSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKLSAgICAgICAgZ2V0X2NkcF9kYXRh KGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pOworICAgICAgICBnZXRf Y2RwX2NvZGUoZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0LmNibV9sZW4pOwor ICAgICAgICBnZXRfY2RwX2RhdGEoZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0 LmNibV9sZW4pOwogCi0gICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygwKSwgY2F0 X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pKTsKLSAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BT Ul9MM19NQVNLKDEpLCBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOworICAgICAgICB3 cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0soMCksCisgICAgICAgICAgICAgICBjYXRfZGVmYXVs dF92YWwoZmVhdC0+Y2F0LmNibV9sZW4pKTsKKyAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9M M19NQVNLKDEpLAorICAgICAgICAgICAgICAgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdC5jYm1f bGVuKSk7CiAgICAgICAgIHJkbXNybChNU1JfSUEzMl9QU1JfTDNfUU9TX0NGRywgdmFsKTsKICAg ICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19RT1NfQ0ZHLAogICAgICAgICAgICAgICAgdmFs IHwgKDF1bGwgPDwgUFNSX0wzX1FPU19DRFBfRU5BQkxFX0JJVCkpOwpAQCAtMzQxLDcgKzM2NCw0 NCBAQCBzdGF0aWMgYm9vbCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFm ICpyZWdzLAogICAgIGlmICggb3B0X2NwdV9pbmZvICkKICAgICAgICAgcHJpbnRrKFhFTkxPR19J TkZPICIlczogZW5hYmxlZCBvbiBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXVcbiIs CiAgICAgICAgICAgICAgICBjYXRfZmVhdF9uYW1lW3R5cGVdLCBjcHVfdG9fc29ja2V0KHNtcF9w cm9jZXNzb3JfaWQoKSksCi0gICAgICAgICAgICAgICBmZWF0LT5jb3NfbWF4LCBmZWF0LT5jYm1f bGVuKTsKKyAgICAgICAgICAgICAgIGZlYXQtPmNvc19tYXgsIGZlYXQtPmNhdC5jYm1fbGVuKTsK KworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBtYmFfaW5pdF9mZWF0dXJlKGNv bnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIHBzcl9mZWF0X3R5cGUgdHlwZSkKK3sKKyAgICAvKiBObyB2YWxpZCB2YWx1ZSBzbyBkbyBu b3QgZW5hYmxlIGZlYXR1cmUuICovCisgICAgaWYgKCAhcmVncy0+YSB8fCAhcmVncy0+ZCB8fCB0 eXBlICE9IEZFQVRfVFlQRV9NQkEgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmZWF0 LT5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCByZWdzLT5kICYgQ0FUX0NPU19NQVhfTUFTSyk7 CisgICAgaWYgKCBmZWF0LT5jb3NfbWF4IDwgMSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor ICAgIGZlYXQtPm1iYS50aHJ0bF9tYXggPSAocmVncy0+YSAmIE1CQV9USFJUTF9NQVhfTUFTSykg KyAxOworCisgICAgaWYgKCByZWdzLT5jICYgTUJBX0xJTkVBUl9NQVNLICkKKyAgICB7CisgICAg ICAgIGZlYXQtPm1iYS5saW5lYXIgPSB0cnVlOworCisgICAgICAgIGlmICggZmVhdC0+bWJhLnRo cnRsX21heCA+PSAxMDAgKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAg IHdybXNybChNU1JfSUEzMl9QU1JfTUJBX01BU0soMCksIDApOworCisgICAgLyogQWRkIHRoaXMg ZmVhdHVyZSBpbnRvIGFycmF5LiAqLworICAgIGluZm8tPmZlYXR1cmVzW3R5cGVdID0gZmVhdDsK KworICAgIGlmICggb3B0X2NwdV9pbmZvICkKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZPCisg ICAgICAgICAgICAgICAiTUJBOiBlbmFibGVkIG9uIHNvY2tldCAldSwgY29zX21heDoldSwgdGhy dGxfbWF4OiV1LCBsaW5lYXI6JWRcbiIsCisgICAgICAgICAgICAgICBjcHVfdG9fc29ja2V0KHNt cF9wcm9jZXNzb3JfaWQoKSksCisgICAgICAgICAgICAgICBmZWF0LT5jb3NfbWF4LCBmZWF0LT5t YmEudGhydGxfbWF4LCBmZWF0LT5tYmEubGluZWFyKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpA QCAtMzUzLDcgKzQxMyw3IEBAIHN0YXRpYyBib29sIGNhdF9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0 cnVjdCBmZWF0X25vZGUgKmZlYXQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRhdGFb UFNSX0lORk9fSURYX0NPU19NQVhdID0gZmVhdC0+Y29zX21heDsKLSAgICBkYXRhW1BTUl9JTkZP X0lEWF9DQVRfQ0JNX0xFTl0gPSBmZWF0LT5jYm1fbGVuOworICAgIGRhdGFbUFNSX0lORk9fSURY X0NBVF9DQk1fTEVOXSA9IGZlYXQtPmNhdC5jYm1fbGVuOwogICAgIGRhdGFbUFNSX0lORk9fSURY X0NBVF9GTEFHU10gPSAwOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC00MTksNiArNDc5LDI2IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBsMl9jYXRfcHJvcHMgPSB7CiAgICAgLndy aXRlX21zciA9IGwyX2NhdF93cml0ZV9tc3IsCiB9OwogCisvKiBNQkEgcHJvcHMgKi8KK3N0YXRp YyBib29sIG1iYV9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBkYXRhW10sIHVuc2lnbmVkIGlu dCBhcnJheV9sZW4pCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBtYmFf d3JpdGVfbXNyKHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgZW51bSBwc3JfdHlwZSB0eXBlKQoreworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGZlYXRfcHJvcHMgbWJhX3Byb3BzID0geworICAgIC5jb3NfbnVtID0gMSwKKyAgICAudHlw ZVswXSA9IFBTUl9UWVBFX01CQV9USFJUTCwKKyAgICAuYWx0X3R5cGUgPSBQU1JfVFlQRV9VTktO T1dOLAorICAgIC5nZXRfZmVhdF9pbmZvID0gbWJhX2dldF9mZWF0X2luZm8sCisgICAgLndyaXRl X21zciA9IG1iYV93cml0ZV9tc3IsCit9OworCiBzdGF0aWMgYm9vbCBfX2luaXQgcGFyc2VfcHNy X2Jvb2woY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZGVsaW0sCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3MsIGNvbnN0IGNoYXIgKmZlYXR1cmUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hc2spCkBAIC00 NzcsNyArNTU3LDggQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfcHNyX3BhcmFtKGNvbnN0IGNo YXIgKnMpCiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoICFwYXJzZV9wc3JfYm9vbChzLCB2 YWxfZGVsaW0sIHNzLCAiY210IiwgUFNSX0NNVCkgJiYKICAgICAgICAgICAgICAgICAgICFwYXJz ZV9wc3JfYm9vbChzLCB2YWxfZGVsaW0sIHNzLCAiY2F0IiwgUFNSX0NBVCkgJiYKLSAgICAgICAg ICAgICAgICAgICFwYXJzZV9wc3JfYm9vbChzLCB2YWxfZGVsaW0sIHNzLCAiY2RwIiwgUFNSX0NE UCkgKQorICAgICAgICAgICAgICAgICAgIXBhcnNlX3Bzcl9ib29sKHMsIHZhbF9kZWxpbSwgc3Ms ICJjZHAiLCBQU1JfQ0RQKSAmJgorICAgICAgICAgICAgICAgICAgIXBhcnNlX3Bzcl9ib29sKHMs IHZhbF9kZWxpbSwgc3MsICJtYmEiLCBQU1JfTUJBKSApCiAgICAgICAgICAgICByYyA9IC1FSU5W QUw7CiAKICAgICAgICAgcyA9IHNzICsgMTsKQEAgLTg4MSw3ICs5NjIsNyBAQCBzdGF0aWMgaW50 IGluc2VydF92YWxfaW50b19hcnJheSh1aW50MzJfdCB2YWxbXSwKICAgICBpZiAoIGFycmF5X2xl biA8IHByb3BzLT5jb3NfbnVtICkKICAgICAgICAgcmV0dXJuIC1FTk9TUEM7CiAKLSAgICBpZiAo ICFwc3JfY2hlY2tfY2JtKGZlYXQtPmNibV9sZW4sIG5ld192YWwpICkKKyAgICBpZiAoICFwc3Jf Y2hlY2tfY2JtKGZlYXQtPmNhdC5jYm1fbGVuLCBuZXdfdmFsKSApCiAgICAgICAgIHJldHVybiAt RUlOVkFMOwogCiAgICAgLyoKQEAgLTE0MDIsNiArMTQ4MywxMCBAQCBzdGF0aWMgaW50IHBzcl9j cHVfcHJlcGFyZSh2b2lkKQogICAgICAgICAgKGZlYXRfbDJfY2F0ID0geHphbGxvYyhzdHJ1Y3Qg ZmVhdF9ub2RlKSkgPT0gTlVMTCApCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwogCisgICAgaWYg KCBmZWF0X21iYSA9PSBOVUxMICYmCisgICAgICAgICAoZmVhdF9tYmEgPSB4emFsbG9jKHN0cnVj dCBmZWF0X25vZGUpKSA9PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKICAgICBy ZXR1cm4gMDsKIH0KIApAQCAtMTQ2NCw2ICsxNTQ5LDE4IEBAIHN0YXRpYyB2b2lkIHBzcl9jcHVf aW5pdCh2b2lkKQogICAgICAgICAgICAgZmVhdF9sMl9jYXQgPSBmZWF0OwogICAgIH0KIAorICAg IGlmICggZmVhdF9tYXNrICYgUFNSX1JFU09VUkNFX1RZUEVfTUJBICkKKyAgICB7CisgICAgICAg IGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMywgJnJlZ3MpOworCisgICAg ICAgIGZlYXQgPSBmZWF0X21iYTsKKyAgICAgICAgZmVhdF9tYmEgPSBOVUxMOworICAgICAgICBp ZiAoIG1iYV9pbml0X2ZlYXR1cmUoJnJlZ3MsIGZlYXQsIGluZm8sIEZFQVRfVFlQRV9NQkEpICkK KyAgICAgICAgICAgIGZlYXRfcHJvcHNbRkVBVF9UWVBFX01CQV0gPSAmbWJhX3Byb3BzOworICAg ICAgICBlbHNlCisgICAgICAgICAgICBmZWF0X21iYSA9IGZlYXQ7CisgICAgfQorCiAgICAgaW5m by0+ZmVhdF9pbml0ID0gdHJ1ZTsKIAogIGFzc29jX2luaXQ6CkBAIC0xNTIzLDcgKzE2MjAsNyBA QCBzdGF0aWMgaW50IF9faW5pdCBwc3JfcHJlc21wX2luaXQodm9pZCkKICAgICBpZiAoIChvcHRf cHNyICYgUFNSX0NNVCkgJiYgb3B0X3JtaWRfbWF4ICkKICAgICAgICAgaW5pdF9wc3JfY210KG9w dF9ybWlkX21heCk7CiAKLSAgICBpZiAoIG9wdF9wc3IgJiAoUFNSX0NBVCB8IFBTUl9DRFApICkK KyAgICBpZiAoIG9wdF9wc3IgJiAoUFNSX0NBVCB8IFBTUl9DRFAgfCBQU1JfTUJBKSApCiAgICAg ICAgIGluaXRfcHNyKCk7CiAKICAgICBpZiAoIHBzcl9jcHVfcHJlcGFyZSgpICkKZGlmZiAtLWdp dCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L21zci1pbmRleC5oCmluZGV4IGI5OWM2MjMuLmE4MzRmM2IgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNs dWRlL2FzbS14ODYvbXNyLWluZGV4LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5k ZXguaApAQCAtMzQ4LDYgKzM0OCw3IEBACiAjZGVmaW5lIE1TUl9JQTMyX1BTUl9MM19NQVNLX0NP REUobikJKDB4MDAwMDBjOTAgKyAobikgKiAyICsgMSkKICNkZWZpbmUgTVNSX0lBMzJfUFNSX0wz X01BU0tfREFUQShuKQkoMHgwMDAwMGM5MCArIChuKSAqIDIpCiAjZGVmaW5lIE1TUl9JQTMyX1BT Ul9MMl9NQVNLKG4pCQkoMHgwMDAwMGQxMCArIChuKSkKKyNkZWZpbmUgTVNSX0lBMzJfUFNSX01C QV9NQVNLKG4pCSgweDAwMDAwZDUwICsgKG4pKQogCiAvKiBJbnRlbCBNb2RlbCA2ICovCiAjZGVm aW5lIE1TUl9QNl9QRVJGQ1RSKG4pCQkoMHgwMDAwMDBjMSArIChuKSkKZGlmZiAtLWdpdCBhL3hl bi9pbmNsdWRlL2FzbS14ODYvcHNyLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCmluZGV4 IGYxNTFmYTcuLjNjZjU0NGEgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgK KysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaApAQCAtMjQsNiArMjQsNyBAQAogLyogUmVz b3VyY2UgVHlwZSBFbnVtZXJhdGlvbiAqLwogI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9MMyAg ICAgICAgICAgIDB4MgogI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9MMiAgICAgICAgICAgIDB4 NAorI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9NQkEgICAgICAgICAgIDB4OAogCiAvKiBMMyBN b25pdG9yaW5nIEZlYXR1cmVzICovCiAjZGVmaW5lIFBTUl9DTVRfTDNfT0NDVVBBTkNZICAgICAg ICAgICAgMHgxCkBAIC01OCw2ICs1OSw3IEBAIGVudW0gcHNyX3R5cGUgewogICAgIFBTUl9UWVBF X0wzX0NPREUsCiAgICAgUFNSX1RZUEVfTDNfREFUQSwKICAgICBQU1JfVFlQRV9MMl9DQk0sCisg ICAgUFNSX1RZUEVfTUJBX1RIUlRMLAogICAgIFBTUl9UWVBFX1VOS05PV04sCiB9OwogCi0tIAox LjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0 cy54ZW4ub3JnL3hlbi1kZXZlbAo=