From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v6 05/16] x86: implement data structure and CPU init flow for MBA Date: Sun, 8 Oct 2017 15:23:50 +0800 Message-ID: <1507447441-5422-6-git-send-email-yi.y.sun@linux.intel.com> References: <1507447441-5422-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 1e16Gv-0002fr-9w for xen-devel@lists.xenproject.org; Sun, 08 Oct 2017 07:45:13 +0000 In-Reply-To: <1507447441-5422-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+ClJldmll d2VkLWJ5OiBSb2dlciBQYXUgTW9ubsOpIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KLS0tCkNDOiBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNDOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcu Y29vcGVyM0BjaXRyaXguY29tPgpDQzogV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KQ0M6 IFJvZ2VyIFBhdSBNb25uw6kgPHJvZ2VyLnBhdUBjaXRyaXguY29tPgpDQzogQ2hhbyBQZW5nIDxj aGFvLnAucGVuZ0BsaW51eC5pbnRlbC5jb20+Cgp2NjoKICAgIC0gcmVzdG9yZSB0eXBlIG9mICdt YmFfd3JpdGVfbXNyJyB0byAndm9pZCcuCnY1OgogICAgLSBtb3ZlIG91dCBzb21lIENBVCBjb2Rl cyBvcHRpbWl6YXRpb24gdG8gYSBuZXcgcGF0Y2guCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIG1vZGlmeSBjb21taXQgbWVzc2FnZS4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gY2hhbmdlIHByaW50IHR5cGUgb2YgJ2xpbmVhcicgdG8gYmUgJWQu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSB0eXBlIG9mICdt YmFfd3JpdGVfbXNyJyB0byB1aW50MzJfdC4KICAgIC0gbW92ZSBwcmludGsgaW4gJ21iYV9pbml0 X2ZlYXR1cmUnIHRvIHJlZHVjZSBvbmUgcmV0dXJuIHBhdGguCiAgICAgIChzdWdnZXN0ZWQgYnkg Um9nZXIgUGF1IE1vbm7DqSkKICAgIC0gbW92ZSB0aGUgTUJBIGZvcm1hdCBzdHJpbmcgaW4gcHJp bnRrIHRvIGEgbmV3IGxpbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkK djQ6CiAgICAtIG1vZGlmeSBjb21taXQgbWVzc2FnZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dl ciBQYXUgTW9ubsOpKQogICAgLSBmaXggYSBjb21tZW50LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJv Z2VyIFBhdSBNb25uw6kpCiAgICAtIGpvaW4gdHdvIGNoZWNrcyBpbiBhIHNpbmdsZSBpZi4KICAg ICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgTW9ubsOpKQogICAgLSByZW1vdmUgcmVkdW5kYW50 IGluaXRpYWxpemF0aW9uIG9mICdmZWF0LT5jb3NfcmVnX3ZhbFswXScuCiAgICAgIChzdWdnZXN0 ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKICAgIC0gY2hhbmdlICdyZWdfYicgdG8gJ2VieCcuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoYW5nZSB0eXBlIG9mICdtYmFf aW5pdF9mZWF0dXJlJyBmcm9tICdpbnQnIHRvICdib29sJy4KICAgICAgKHN1Z2dlc3RlZCBieSBS b2dlciBQYXUgTW9ubsOpKQogICAgLSBjaGFuZ2UgdHlwZSBvZiAnY2F0X2luaXRfZmVhdHVyZScg ZnJvbSAnaW50JyB0byAnYm9vbCcuCnYzOgogICAgLSByZXBsYWNlICdwc3JfdmFsX3R5cGUnIHRv ICdwc3JfdHlwZScuIEFsc28sIGNoYW5nZSAnUFNSX1ZBTF9UWVBFX01CQScgdG8KICAgICAgJ1BT Ul9UWVBFX01CQV9USFJUTCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkK ICAgIC0gcmVwbGFjZSAnTUJBX0xJTkVBUicgdG8gJ01CQV9MSU5FQVJfTUFTSycgdG8gbWFrZSB0 aGUgbmFtZSBtb3JlIGNsZWFyLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kp CiAgICAtIHJlcGxhc2UgJ2NhdF9pbmZvJy8nbWJhX2luZm8nIHRvICdjYXQnLydtYmEnIHRvIG1h a2UgdGhlIG5hbWVzIHNob3J0ZXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7D qSkKICAgIC0gY2hhbmdlIHR5cGUgb2YgJ2xpbmVhcicgdG8gJ2Jvb2wnLgogICAgICAoc3VnZ2Vz dGVkIGJ5IFJvZ2VyIFBhdSBNb25uw6kpCiAgICAtIG1ha2UgZm9ybWF0IHN0cmluZyBvZiBwcmlu dGYgaW4gb25lIGxpbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgUm9nZXIgUGF1IE1vbm7DqSkKdjI6 CiAgICAtIG1vZGlmeSBjb21taXQgbWVzc2FnZSB0byByZXBsYWNlICdjb3MgcmVnaXN0ZXInIHRv ICd0aHJ0bCByZWdpc3RlcicgdG8KICAgICAgbWFrZSBpdCBhY2N1cmF0ZS4KICAgICAgKHN1Z2dl c3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIHJlc3RvcmUgdGhlIHBsYWNlIG9mIHRoZSBzZW50ZW5j ZSB0byBhc3NpZ24gdmFsdWUgdG8gJ2ZlYXQtPmNibV9sZW4nCiAgICAgIGJlY2F1c2UgdGhlIE1C QSBpbml0IGZsb3cgaXMgc3BsaXR0ZWQgb3V0IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24gaW4gdjEu CiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAgLSBhZGQgY29tbWVudCB0byBleHBs YWluIHdoYXQgdGhlIE1CQSB0aHJ0bCBkZWZhdWwgdmFsdWUgJzAnIHN0YW5kcyBmb3IuCiAgICAg IChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAgLSBjaGVjayAndGhydGxfbWF4JyB1bmRlciBs aW5lYXIgbW9kZS4gSXQgY291bGQgbm90IGJlIGV1cWFsIG9yIGxhcmdlciB0aGFuCiAgICAgIDEw MC4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCnYxOgogICAgLSByZWJhc2UgY29kZXMg b250byBMMiBDQVQgdjE1LgogICAgLSBtb3ZlIGNvbW1lbnQgdG8gYXBwcm9wcmlhdGUgcGxhY2Uu CiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAgLSBpbXBsZW1lbnQgJ21iYV9pbml0 X2ZlYXR1cmUnIGFuZCBrZWVwICdjYXRfaW5pdF9mZWF0dXJlJy4KICAgICAgKHN1Z2dlc3RlZCBi eSBDaGFvIFBlbmcpCiAgICAtIGtlZXAgJ3JlZ3MuYicgaW50byBhIGxvY2FsIHZhcmlhYmxlIHRv IGF2b2lkIHJlYWRpbmcgQ1BVSUQgZXZlcnkgdGltZS4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFv IFBlbmcpCi0tLQogeGVuL2FyY2gveDg2L3Bzci5jICAgICAgICAgICAgICB8IDEzNSArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L21z ci1pbmRleC5oIHwgICAxICsKIHhlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmggICAgICAgfCAgIDIg KwogMyBmaWxlcyBjaGFuZ2VkLCAxMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4 IDU5NDVlZmEuLjE1N2UxMWYgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94 ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTI3LDEzICsyNywxNiBAQAogICogLSBDTVQgICAgICAgICBD YWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kKICAqIC0gQ09TL0NMT1MgICAgQ2xhc3Mgb2YgU2Vy dmljZS4gQWxzbyBtZWFuIENPUyByZWdpc3RlcnMuCiAgKiAtIENPU19NQVggICAgIE1heCBudW1i ZXIgb2YgQ09TIGZvciB0aGUgZmVhdHVyZSAobWludXMgMSkKKyAqIC0gTUJBICAgICAgICAgTWVt b3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uCiAgKiAtIE1TUnMgICAgICAgIE1hY2hpbmUgU3BlY2lm aWMgUmVnaXN0ZXJzCiAgKiAtIFBTUiAgICAgICAgIEludGVsIFBsYXRmb3JtIFNoYXJlZCBSZXNv dXJjZQorICogLSBUSFJUTF9NQVggICBNYXggdGhyb3R0bGUgdmFsdWUgKGRlbGF5IHZhbHVlKSBv ZiBNQkEKICAqLwogCiAjZGVmaW5lIFBTUl9DTVQgICAgICAgICgxdSA8PCAwKQogI2RlZmluZSBQ U1JfQ0FUICAgICAgICAoMXUgPDwgMSkKICNkZWZpbmUgUFNSX0NEUCAgICAgICAgKDF1IDw8IDIp CisjZGVmaW5lIFBTUl9NQkEgICAgICAgICgxdSA8PCAzKQogCiAjZGVmaW5lIENBVF9DQk1fTEVO X01BU0sgMHgxZgogI2RlZmluZSBDQVRfQ09TX01BWF9NQVNLIDB4ZmZmZgpAQCAtNjAsMTAgKzYz LDE0IEBACiAgKi8KICNkZWZpbmUgTUFYX0NPU19OVU0gMgogCisjZGVmaW5lIE1CQV9MSU5FQVJf TUFTSyAgICAoMXUgPDwgMikKKyNkZWZpbmUgTUJBX1RIUlRMX01BWF9NQVNLIDB4ZmZmCisKIGVu dW0gcHNyX2ZlYXRfdHlwZSB7CiAgICAgRkVBVF9UWVBFX0wzX0NBVCwKICAgICBGRUFUX1RZUEVf TDNfQ0RQLAogICAgIEZFQVRfVFlQRV9MMl9DQVQsCisgICAgRkVBVF9UWVBFX01CQSwKICAgICBG RUFUX1RZUEVfTlVNLAogICAgIEZFQVRfVFlQRV9VTktOT1dOLAogfTsKQEAgLTcxLDcgKzc4LDYg QEAgZW51bSBwc3JfZmVhdF90eXBlIHsKIC8qCiAgKiBUaGlzIHN0cnVjdHVyZSByZXByZXNlbnRz IG9uZSBmZWF0dXJlLgogICogY29zX21heCAgICAgLSBUaGUgbWF4IENPUyByZWdpc3RlcnMgbnVt YmVyIGdvdCB0aHJvdWdoIENQVUlELgotICogY2JtX2xlbiAgICAgLSBUaGUgbGVuZ3RoIG9mIENC TSBnb3QgdGhyb3VnaCBDUFVJRC4KICAqIGNvc19yZWdfdmFsIC0gQXJyYXkgdG8gc3RvcmUgdGhl IHZhbHVlcyBvZiBDT1MgcmVnaXN0ZXJzLiBPbmUgZW50cnkgc3RvcmVzCiAgKiAgICAgICAgICAg ICAgIHRoZSB2YWx1ZSBvZiBvbmUgQ09TIHJlZ2lzdGVyLgogICogICAgICAgICAgICAgICBGb3Ig TDMgQ0FUIGFuZCBMMiBDQVQsIG9uZSBlbnRyeSBjb3JyZXNwb25kcyB0byBvbmUgQ09TX0lELgpA QCAtODAsOSArODYsMjMgQEAgZW51bSBwc3JfZmVhdF90eXBlIHsKICAqICAgICAgICAgICAgICAg Y29zX3JlZ192YWxbMV0gKENvZGUpLgogICovCiBzdHJ1Y3QgZmVhdF9ub2RlIHsKLSAgICAvKiBj b3NfbWF4IGFuZCBjYm1fbGVuIGFyZSBjb21tb24gdmFsdWVzIGZvciBhbGwgZmVhdHVyZXMgc28g ZmFyLiAqLworICAgIC8qIGNvc19tYXggaXMgY29tbW9uIGFtb25nIGFsbCBmZWF0dXJlcyBzbyBm YXIuICovCiAgICAgdW5zaWduZWQgaW50IGNvc19tYXg7Ci0gICAgdW5zaWduZWQgaW50IGNibV9s ZW47CisKKyAgICAvKiBGZWF0dXJlIHNwZWNpZmljIEhXIGluZm8uICovCisgICAgdW5pb24gewor ICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgLyogVGhlIGxlbmd0aCBvZiBDQk0gZ290IHRo cm91Z2ggQ1BVSUQuICovCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKKyAgICAg ICAgfSBjYXQ7CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8qIFRoZSBtYXggdGhy b3R0bGluZyB2YWx1ZSBnb3QgdGhyb3VnaCBDUFVJRC4gKi8KKyAgICAgICAgICAgIHVuc2lnbmVk IGludCB0aHJ0bF9tYXg7CisgICAgICAgICAgICBib29sIGxpbmVhcjsKKyAgICAgICAgfSBtYmE7 CisgICAgfTsKKwogICAgIHVpbnQzMl90IGNvc19yZWdfdmFsW01BWF9DT1NfUkVHX0NOVF07CiB9 OwogCkBAIC0xNjEsNiArMTgxLDcgQEAgc3RhdGljIERFRklORV9QRVJfQ1BVKHN0cnVjdCBwc3Jf YXNzb2MsIHBzcl9hc3NvYyk7CiAgKi8KIHN0YXRpYyBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0X2wz Owogc3RhdGljIHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDJfY2F0Oworc3RhdGljIHN0cnVjdCBm ZWF0X25vZGUgKmZlYXRfbWJhOwogCiAvKiBDb21tb24gZnVuY3Rpb25zICovCiAjZGVmaW5lIGNh dF9kZWZhdWx0X3ZhbChsZW4pICgweGZmZmZmZmZmID4+ICgzMiAtIChsZW4pKSkKQEAgLTI3Miw3 ICsyOTMsNyBAQCBzdGF0aWMgYm9vbCBwc3JfY2hlY2tfY2JtKHVuc2lnbmVkIGludCBjYm1fbGVu LCB1bnNpZ25lZCBsb25nIGNibSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotLyogQ0FUIGNvbW1v biBmdW5jdGlvbnMgaW1wbGVtZW50YXRpb24uICovCisvKiBJbXBsZW1lbnRhdGlvbiBvZiBhbGxv Y2F0aW9uIGZlYXR1cmVzJyBmdW5jdGlvbnMuICovCiBzdGF0aWMgYm9vbCBjYXRfaW5pdF9mZWF0 dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLApAQCAtMjg4LDggKzMwOSw4IEBAIHN0 YXRpYyBib29sIGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3Ms CiAgICAgaWYgKCAhcmVncy0+YSB8fCAhcmVncy0+ZCApCiAgICAgICAgIHJldHVybiBmYWxzZTsK IAotICAgIGZlYXQtPmNibV9sZW4gPSAocmVncy0+YSAmIENBVF9DQk1fTEVOX01BU0spICsgMTsK ICAgICBmZWF0LT5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCByZWdzLT5kICYgQ0FUX0NPU19N QVhfTUFTSyk7CisgICAgZmVhdC0+Y2F0LmNibV9sZW4gPSAocmVncy0+YSAmIENBVF9DQk1fTEVO X01BU0spICsgMTsKIAogICAgIHN3aXRjaCAoIHR5cGUgKQogICAgIHsKQEAgLTI5OSwxMiArMzIw LDEyIEBAIHN0YXRpYyBib29sIGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xl YWYgKnJlZ3MsCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgLyogV2UgcmVz ZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAoYWxsIGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEp LiAqLwotICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0 LT5jYm1fbGVuKTsKKyAgICAgICAgZmVhdC0+Y29zX3JlZ192YWxbMF0gPSBjYXRfZGVmYXVsdF92 YWwoZmVhdC0+Y2F0LmNibV9sZW4pOwogCiAgICAgICAgIHdybXNybCgodHlwZSA9PSBGRUFUX1RZ UEVfTDNfQ0FUID8KICAgICAgICAgICAgICAgICBNU1JfSUEzMl9QU1JfTDNfTUFTSygwKSA6CiAg ICAgICAgICAgICAgICAgTVNSX0lBMzJfUFNSX0wyX01BU0soMCkpLAotICAgICAgICAgICAgICAg Y2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pKTsKKyAgICAgICAgICAgICAgIGNhdF9kZWZh dWx0X3ZhbChmZWF0LT5jYXQuY2JtX2xlbikpOwogCiAgICAgICAgIGJyZWFrOwogCkBAIC0zMTks MTEgKzM0MCwxMyBAQCBzdGF0aWMgYm9vbCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBj cHVpZF9sZWFmICpyZWdzLAogICAgICAgICBmZWF0LT5jb3NfbWF4ID0gKGZlYXQtPmNvc19tYXgg LSAxKSA+PiAxOwogCiAgICAgICAgIC8qIFdlIHJlc2VydmUgY29zPTAgYXMgZGVmYXVsdCBjYm0g KGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8KLSAgICAgICAgZ2V0X2NkcF9jb2Rl KGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pOwotICAgICAgICBnZXRf Y2RwX2RhdGEoZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbik7CisgICAg ICAgIGdldF9jZHBfY29kZShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYXQuY2Jt X2xlbik7CisgICAgICAgIGdldF9jZHBfZGF0YShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChm ZWF0LT5jYXQuY2JtX2xlbik7CiAKLSAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNL KDApLCBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOwotICAgICAgICB3cm1zcmwoTVNS X0lBMzJfUFNSX0wzX01BU0soMSksIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKSk7Cisg ICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygwKSwKKyAgICAgICAgICAgICAgIGNh dF9kZWZhdWx0X3ZhbChmZWF0LT5jYXQuY2JtX2xlbikpOworICAgICAgICB3cm1zcmwoTVNSX0lB MzJfUFNSX0wzX01BU0soMSksCisgICAgICAgICAgICAgICBjYXRfZGVmYXVsdF92YWwoZmVhdC0+ Y2F0LmNibV9sZW4pKTsKICAgICAgICAgcmRtc3JsKE1TUl9JQTMyX1BTUl9MM19RT1NfQ0ZHLCB2 YWwpOwogICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX1FPU19DRkcsCiAgICAgICAgICAg ICAgICB2YWwgfCAoMXVsbCA8PCBQU1JfTDNfUU9TX0NEUF9FTkFCTEVfQklUKSk7CkBAIC0zNDEs NyArMzY0LDQ0IEBAIHN0YXRpYyBib29sIGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNw dWlkX2xlYWYgKnJlZ3MsCiAgICAgaWYgKCBvcHRfY3B1X2luZm8gKQogICAgICAgICBwcmludGso WEVOTE9HX0lORk8gIiVzOiBlbmFibGVkIG9uIHNvY2tldCAldSwgY29zX21heDoldSwgY2JtX2xl bjoldVxuIiwKICAgICAgICAgICAgICAgIGNhdF9mZWF0X25hbWVbdHlwZV0sIGNwdV90b19zb2Nr ZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKSwKLSAgICAgICAgICAgICAgIGZlYXQtPmNvc19tYXgsIGZl YXQtPmNibV9sZW4pOworICAgICAgICAgICAgICAgZmVhdC0+Y29zX21heCwgZmVhdC0+Y2F0LmNi bV9sZW4pOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIG1iYV9pbml0X2Zl YXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSB0eXBlKQoreworICAgIC8qIE5vIHZhbGlkIHZhbHVl IHNvIGRvIG5vdCBlbmFibGUgZmVhdHVyZS4gKi8KKyAgICBpZiAoICFyZWdzLT5hIHx8ICFyZWdz LT5kIHx8IHR5cGUgIT0gRkVBVF9UWVBFX01CQSApCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor ICAgIGZlYXQtPmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3MtPmQgJiBDQVRfQ09TX01B WF9NQVNLKTsKKyAgICBpZiAoIGZlYXQtPmNvc19tYXggPCAxICkKKyAgICAgICAgcmV0dXJuIGZh bHNlOworCisgICAgZmVhdC0+bWJhLnRocnRsX21heCA9IChyZWdzLT5hICYgTUJBX1RIUlRMX01B WF9NQVNLKSArIDE7CisKKyAgICBpZiAoIHJlZ3MtPmMgJiBNQkFfTElORUFSX01BU0sgKQorICAg IHsKKyAgICAgICAgZmVhdC0+bWJhLmxpbmVhciA9IHRydWU7CisKKyAgICAgICAgaWYgKCBmZWF0 LT5tYmEudGhydGxfbWF4ID49IDEwMCApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg fQorCisgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9NQkFfTUFTSygwKSwgMCk7CisKKyAgICAvKiBB ZGQgdGhpcyBmZWF0dXJlIGludG8gYXJyYXkuICovCisgICAgaW5mby0+ZmVhdHVyZXNbdHlwZV0g PSBmZWF0OworCisgICAgaWYgKCBvcHRfY3B1X2luZm8gKQorICAgICAgICBwcmludGsoWEVOTE9H X0lORk8KKyAgICAgICAgICAgICAgICJNQkE6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4 OiV1LCB0aHJ0bF9tYXg6JXUsIGxpbmVhcjolZFxuIiwKKyAgICAgICAgICAgICAgIGNwdV90b19z b2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKSwKKyAgICAgICAgICAgICAgIGZlYXQtPmNvc19tYXgs IGZlYXQtPm1iYS50aHJ0bF9tYXgsIGZlYXQtPm1iYS5saW5lYXIpOwogCiAgICAgcmV0dXJuIHRy dWU7CiB9CkBAIC0zNTMsNyArNDEzLDcgQEAgc3RhdGljIGJvb2wgY2F0X2dldF9mZWF0X2luZm8o Y29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg ICAgZGF0YVtQU1JfSU5GT19JRFhfQ09TX01BWF0gPSBmZWF0LT5jb3NfbWF4OwotICAgIGRhdGFb UFNSX0lORk9fSURYX0NBVF9DQk1fTEVOXSA9IGZlYXQtPmNibV9sZW47CisgICAgZGF0YVtQU1Jf SU5GT19JRFhfQ0FUX0NCTV9MRU5dID0gZmVhdC0+Y2F0LmNibV9sZW47CiAgICAgZGF0YVtQU1Jf SU5GT19JRFhfQ0FUX0ZMQUddID0gMDsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtNDE5LDYgKzQ3 OSwyNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDJfY2F0X3Byb3BzID0gewog ICAgIC53cml0ZV9tc3IgPSBsMl9jYXRfd3JpdGVfbXNyLAogfTsKIAorLyogTUJBIHByb3BzICov CitzdGF0aWMgYm9vbCBtYmFfZ2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpm ZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1bnNp Z25lZCBpbnQgYXJyYXlfbGVuKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZv aWQgbWJhX3dyaXRlX21zcih1bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCisgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3R5cGUgdHlwZSkKK3sKK30KKworc3RhdGljIGNv bnN0IHN0cnVjdCBmZWF0X3Byb3BzIG1iYV9wcm9wcyA9IHsKKyAgICAuY29zX251bSA9IDEsCisg ICAgLnR5cGVbMF0gPSBQU1JfVFlQRV9NQkFfVEhSVEwsCisgICAgLmFsdF90eXBlID0gUFNSX1RZ UEVfVU5LTk9XTiwKKyAgICAuZ2V0X2ZlYXRfaW5mbyA9IG1iYV9nZXRfZmVhdF9pbmZvLAorICAg IC53cml0ZV9tc3IgPSBtYmFfd3JpdGVfbXNyLAorfTsKKwogc3RhdGljIGJvb2wgX19pbml0IHBh cnNlX3Bzcl9ib29sKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmRlbGltLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNzLCBjb25zdCBjaGFyICpmZWF0 dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXNr KQpAQCAtNDc3LDcgKzU1Nyw4IEBAIHN0YXRpYyBpbnQgX19pbml0IHBhcnNlX3Bzcl9wYXJhbShj b25zdCBjaGFyICpzKQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKCAhcGFyc2VfcHNyX2Jv b2wocywgdmFsX2RlbGltLCBzcywgImNtdCIsIFBTUl9DTVQpICYmCiAgICAgICAgICAgICAgICAg ICAhcGFyc2VfcHNyX2Jvb2wocywgdmFsX2RlbGltLCBzcywgImNhdCIsIFBTUl9DQVQpICYmCi0g ICAgICAgICAgICAgICAgICAhcGFyc2VfcHNyX2Jvb2wocywgdmFsX2RlbGltLCBzcywgImNkcCIs IFBTUl9DRFApICkKKyAgICAgICAgICAgICAgICAgICFwYXJzZV9wc3JfYm9vbChzLCB2YWxfZGVs aW0sIHNzLCAiY2RwIiwgUFNSX0NEUCkgJiYKKyAgICAgICAgICAgICAgICAgICFwYXJzZV9wc3Jf Ym9vbChzLCB2YWxfZGVsaW0sIHNzLCAibWJhIiwgUFNSX01CQSkgKQogICAgICAgICAgICAgcmMg PSAtRUlOVkFMOwogCiAgICAgICAgIHMgPSBzcyArIDE7CkBAIC04ODEsNyArOTYyLDcgQEAgc3Rh dGljIGludCBpbnNlcnRfdmFsX2ludG9fYXJyYXkodWludDMyX3QgdmFsW10sCiAgICAgaWYgKCBh cnJheV9sZW4gPCBwcm9wcy0+Y29zX251bSApCiAgICAgICAgIHJldHVybiAtRU5PU1BDOwogCi0g ICAgaWYgKCAhcHNyX2NoZWNrX2NibShmZWF0LT5jYm1fbGVuLCBuZXdfdmFsKSApCisgICAgaWYg KCAhcHNyX2NoZWNrX2NibShmZWF0LT5jYXQuY2JtX2xlbiwgbmV3X3ZhbCkgKQogICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKIAogICAgIC8qCkBAIC0xNDA1LDYgKzE0ODYsMTAgQEAgc3RhdGljIGlu dCBwc3JfY3B1X3ByZXBhcmUodm9pZCkKICAgICAgICAgIChmZWF0X2wyX2NhdCA9IHh6YWxsb2Mo c3RydWN0IGZlYXRfbm9kZSkpID09IE5VTEwgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAor ICAgIGlmICggZmVhdF9tYmEgPT0gTlVMTCAmJgorICAgICAgICAgKGZlYXRfbWJhID0geHphbGxv YyhzdHJ1Y3QgZmVhdF9ub2RlKSkgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOwor CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTE0NDIsMTMgKzE1MjcsMTMgQEAgc3RhdGljIHZvaWQg cHNyX2NwdV9pbml0KHZvaWQpCiAgICAgICAgIGZlYXRfbDMgPSBOVUxMOwogCiAgICAgICAgIGlm ICggKHJlZ3MuYyAmIFBTUl9DQVRfQ0RQX0NBUEFCSUxJVFkpICYmIChvcHRfcHNyICYgUFNSX0NE UCkgJiYKLSAgICAgICAgICAgICAhY2F0X2luaXRfZmVhdHVyZSgmcmVncywgZmVhdCwgaW5mbywg RkVBVF9UWVBFX0wzX0NEUCkgKQorICAgICAgICAgICAgIGNhdF9pbml0X2ZlYXR1cmUoJnJlZ3Ms IGZlYXQsIGluZm8sIEZFQVRfVFlQRV9MM19DRFApICkKICAgICAgICAgICAgIGZlYXRfcHJvcHNb RkVBVF9UWVBFX0wzX0NEUF0gPSAmbDNfY2RwX3Byb3BzOwogCiAgICAgICAgIC8qIElmIENEUCBp bml0IGZhaWxzLCB0cnkgdG8gd29yayBhcyBMMyBDQVQuICovCiAgICAgICAgIGlmICggIWZlYXRf cHJvcHNbRkVBVF9UWVBFX0wzX0NEUF0gKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoICFj YXRfaW5pdF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDNfQ0FUKSApCisg ICAgICAgICAgICBpZiAoIGNhdF9pbml0X2ZlYXR1cmUoJnJlZ3MsIGZlYXQsIGluZm8sIEZFQVRf VFlQRV9MM19DQVQpICkKICAgICAgICAgICAgICAgICBmZWF0X3Byb3BzW0ZFQVRfVFlQRV9MM19D QVRdID0gJmwzX2NhdF9wcm9wczsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBm ZWF0X2wzID0gZmVhdDsKQEAgLTE0NjEsMTIgKzE1NDYsMjQgQEAgc3RhdGljIHZvaWQgcHNyX2Nw dV9pbml0KHZvaWQpCiAKICAgICAgICAgZmVhdCA9IGZlYXRfbDJfY2F0OwogICAgICAgICBmZWF0 X2wyX2NhdCA9IE5VTEw7Ci0gICAgICAgIGlmICggIWNhdF9pbml0X2ZlYXR1cmUoJnJlZ3MsIGZl YXQsIGluZm8sIEZFQVRfVFlQRV9MMl9DQVQpICkKKyAgICAgICAgaWYgKCBjYXRfaW5pdF9mZWF0 dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDJfQ0FUKSApCiAgICAgICAgICAgICBm ZWF0X3Byb3BzW0ZFQVRfVFlQRV9MMl9DQVRdID0gJmwyX2NhdF9wcm9wczsKICAgICAgICAgZWxz ZQogICAgICAgICAgICAgZmVhdF9sMl9jYXQgPSBmZWF0OwogICAgIH0KIAorICAgIGlmICggZmVh dF9tYXNrICYgUFNSX1JFU09VUkNFX1RZUEVfTUJBICkKKyAgICB7CisgICAgICAgIGNwdWlkX2Nv dW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMywgJnJlZ3MpOworCisgICAgICAgIGZlYXQg PSBmZWF0X21iYTsKKyAgICAgICAgZmVhdF9tYmEgPSBOVUxMOworICAgICAgICBpZiAoIG1iYV9p bml0X2ZlYXR1cmUoJnJlZ3MsIGZlYXQsIGluZm8sIEZFQVRfVFlQRV9NQkEpICkKKyAgICAgICAg ICAgIGZlYXRfcHJvcHNbRkVBVF9UWVBFX01CQV0gPSAmbWJhX3Byb3BzOworICAgICAgICBlbHNl CisgICAgICAgICAgICBmZWF0X21iYSA9IGZlYXQ7CisgICAgfQorCiAgICAgaW5mby0+ZmVhdF9p bml0ID0gdHJ1ZTsKIAogIGFzc29jX2luaXQ6CkBAIC0xNTI2LDcgKzE2MjMsNyBAQCBzdGF0aWMg aW50IF9faW5pdCBwc3JfcHJlc21wX2luaXQodm9pZCkKICAgICBpZiAoIChvcHRfcHNyICYgUFNS X0NNVCkgJiYgb3B0X3JtaWRfbWF4ICkKICAgICAgICAgaW5pdF9wc3JfY210KG9wdF9ybWlkX21h eCk7CiAKLSAgICBpZiAoIG9wdF9wc3IgJiAoUFNSX0NBVCB8IFBTUl9DRFApICkKKyAgICBpZiAo IG9wdF9wc3IgJiAoUFNSX0NBVCB8IFBTUl9DRFAgfCBQU1JfTUJBKSApCiAgICAgICAgIGluaXRf cHNyKCk7CiAKICAgICBpZiAoIHBzcl9jcHVfcHJlcGFyZSgpICkKZGlmZiAtLWdpdCBhL3hlbi9p bmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmggYi94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRl eC5oCmluZGV4IGI5OWM2MjMuLmE4MzRmM2IgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14 ODYvbXNyLWluZGV4LmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaApAQCAt MzQ4LDYgKzM0OCw3IEBACiAjZGVmaW5lIE1TUl9JQTMyX1BTUl9MM19NQVNLX0NPREUobikJKDB4 MDAwMDBjOTAgKyAobikgKiAyICsgMSkKICNkZWZpbmUgTVNSX0lBMzJfUFNSX0wzX01BU0tfREFU QShuKQkoMHgwMDAwMGM5MCArIChuKSAqIDIpCiAjZGVmaW5lIE1TUl9JQTMyX1BTUl9MMl9NQVNL KG4pCQkoMHgwMDAwMGQxMCArIChuKSkKKyNkZWZpbmUgTVNSX0lBMzJfUFNSX01CQV9NQVNLKG4p CSgweDAwMDAwZDUwICsgKG4pKQogCiAvKiBJbnRlbCBNb2RlbCA2ICovCiAjZGVmaW5lIE1TUl9Q Nl9QRVJGQ1RSKG4pCQkoMHgwMDAwMDBjMSArIChuKSkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRl L2FzbS14ODYvcHNyLmggYi94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCmluZGV4IGNiM2YwNjcu LjlkMTQyNjQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKKysrIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9wc3IuaApAQCAtMjQsNiArMjQsNyBAQAogLyogUmVzb3VyY2UgVHlw ZSBFbnVtZXJhdGlvbiAqLwogI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9MMyAgICAgICAgICAg IDB4MgogI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9MMiAgICAgICAgICAgIDB4NAorI2RlZmlu ZSBQU1JfUkVTT1VSQ0VfVFlQRV9NQkEgICAgICAgICAgIDB4OAogCiAvKiBMMyBNb25pdG9yaW5n IEZlYXR1cmVzICovCiAjZGVmaW5lIFBTUl9DTVRfTDNfT0NDVVBBTkNZICAgICAgICAgICAgMHgx CkBAIC01OCw2ICs1OSw3IEBAIGVudW0gcHNyX3R5cGUgewogICAgIFBTUl9UWVBFX0wzX0NPREUs CiAgICAgUFNSX1RZUEVfTDNfREFUQSwKICAgICBQU1JfVFlQRV9MMl9DQk0sCisgICAgUFNSX1RZ UEVfTUJBX1RIUlRMLAogICAgIFBTUl9UWVBFX1VOS05PV04sCiB9OwogCi0tIAoxLjkuMQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBt YWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3Jn L3hlbi1kZXZlbAo=