From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v3 04/15] x86: implement data structure and CPU init flow for MBA Date: Tue, 5 Sep 2017 17:32:26 +0800 Message-ID: <1504603957-5389-5-git-send-email-yi.y.sun@linux.intel.com> References: <1504603957-5389-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 1dpAVp-000718-Kh for xen-devel@lists.xenproject.org; Tue, 05 Sep 2017 09:51:17 +0000 In-Reply-To: <1504603957-5389-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: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, Yi Sun , julien.grall@arm.com, mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, dgdegra@tycho.nsa.gov, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1haW4gZGF0YSBzdHJ1Y3R1cmVzIG9mIE1CQS4KCkxpa2Ug Q0FUIGZlYXR1cmVzLCBNQkEgSFcgaW5mbyBoYXMgY29zX21heCB3aGljaCBtZWFucyB0aGUgbWF4 IHRocnRsCnJlZ2lzdGVyIG51bWJlciwgYW5kIHRocnRsX21heCB3aGljaCBtZWFucyB0aGUgbWF4 IHRocm90dGxlIHZhbHVlCihkZWxheSB2YWx1ZSkuIEl0IGFsc28gaGFzIGEgZmxhZyB0byByZXBy ZXNlbnQgaWYgdGhlIHRocm90dGxlCnZhbHVlIGlzIGxpbmVhciBvciBub3QuCgpPbmUgdGhydGwg cmVnaXN0ZXIgb2YgTUJBIHN0b3JlcyBhIHRocm90dGxlIHZhbHVlIGZvciBvbmUgb3IgbW9yZQpk b21haW5zLiBUaGUgdGhyb3R0bGUgdmFsdWUgbWVhbnMgdGhlIHRyYW5zYWN0aW9uIHRpbWUgYmV0 d2VlbiBMMgpjYWNoZSBhbmQgbmV4dCBsZXZlbCBtZW1vcnkgdG8gYmUgZGVsYXllZC4KClRoaXMg cGF0Y2ggYWxzbyBpbXBsZW1lbnRzIGluaXQgZmxvdyBmb3IgTUJBIGFuZCByZWdpc3RlciBzdHVi CmNhbGxiYWNrIGZ1bmN0aW9ucy4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGlu dXguaW50ZWwuY29tPgotLS0KdjM6CiAgICAtIHJlcGxhY2UgJ3Bzcl92YWxfdHlwZScgdG8gJ3Bz 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 ZykKLS0tCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAgICAgICAgICAgIHwgMTQwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KIHhlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWlu ZGV4LmggfCAgIDEgKwogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaCAgICAgICB8ICAgMiArCiAz IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYvcHNyLmMKaW5kZXggNDE2 NmExYy4uMTA3NzZkMiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bzci5jCisrKyBiL3hlbi9h 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 ICovCisgICAgLyogY29zX21heCBpcyBjb21tb24gdmFsdWVzIGZvciBhbGwgZmVhdHVyZXMgc28g ZmFyLiAqLwogICAgIHVuc2lnbmVkIGludCBjb3NfbWF4OwotICAgIHVuc2lnbmVkIGludCBjYm1f bGVuOworCisgICAgLyogRmVhdHVyZSBzcGVjaWZpYyBIVyBpbmZvLiAqLworICAgIHVuaW9uIHsK KyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIC8qIFRoZSBsZW5ndGggb2YgQ0JNIGdvdCB0 aHJvdWdoIENQVUlELiAqLworICAgICAgICAgICAgdW5zaWduZWQgaW50IGNibV9sZW47CisgICAg ICAgIH0gY2F0OworCisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvKiBUaGUgbWF4IHRo cm90dGxpbmcgdmFsdWUgZ290IHRocm91Z2ggQ1BVSUQuICovCisgICAgICAgICAgICB1bnNpZ25l ZCBpbnQgdGhydGxfbWF4OworICAgICAgICAgICAgYm9vbCBsaW5lYXI7CisgICAgICAgIH0gbWJh OworICAgIH07CisKICAgICB1aW50MzJfdCBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19DTlRdOwog fTsKIApAQCAtMTYxLDYgKzE4MSw3IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHNy X2Fzc29jLCBwc3JfYXNzb2MpOwogICovCiBzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF9s MzsKIHN0YXRpYyBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0X2wyX2NhdDsKK3N0YXRpYyBzdHJ1Y3Qg ZmVhdF9ub2RlICpmZWF0X21iYTsKIAogLyogQ29tbW9uIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBj YXRfZGVmYXVsdF92YWwobGVuKSAoMHhmZmZmZmZmZiA+PiAoMzIgLSAobGVuKSkpCkBAIC0yNzIs NyArMjkzLDcgQEAgc3RhdGljIGJvb2wgcHNyX2NoZWNrX2NibSh1bnNpZ25lZCBpbnQgY2JtX2xl biwgdW5zaWduZWQgbG9uZyBjYm0pCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8qIENBVCBjb21t b24gZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLiAqLworLyogSW1wbGVtZW50YXRpb24gb2YgYWxs b2NhdGlvbiBmZWF0dXJlcycgZnVuY3Rpb25zLiAqLwogc3RhdGljIGludCBjYXRfaW5pdF9mZWF0 dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKQEAgLTI4OCw4ICszMDksOCBAQCBzdGF0 aWMgaW50IGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAg ICAgaWYgKCAhcmVncy0+YSB8fCAhcmVncy0+ZCApCiAgICAgICAgIHJldHVybiAtRU5PRU5UOwog Ci0gICAgZmVhdC0+Y2JtX2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFTSykgKyAxOwog ICAgIGZlYXQtPmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3MtPmQgJiBDQVRfQ09TX01B WF9NQVNLKTsKKyAgICBmZWF0LT5jYXQuY2JtX2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5f TUFTSykgKyAxOwogCiAgICAgc3dpdGNoICggdHlwZSApCiAgICAgewpAQCAtMjk5LDEyICszMjAs MTIgQEAgc3RhdGljIGludCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFm ICpyZWdzLAogICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAKICAgICAgICAgLyogV2UgcmVz ZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAoYWxsIGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEp LiAqLwotICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0 LT5jYm1fbGVuKTsKKyAgICAgICAgZmVhdC0+Y29zX3JlZ192YWxbMF0gPSBjYXRfZGVmYXVsdF92 YWwoZmVhdC0+Y2F0LmNibV9sZW4pOwogCiAgICAgICAgIHdybXNybCgodHlwZSA9PSBGRUFUX1RZ UEVfTDNfQ0FUID8KICAgICAgICAgICAgICAgICBNU1JfSUEzMl9QU1JfTDNfTUFTSygwKSA6CiAg ICAgICAgICAgICAgICAgTVNSX0lBMzJfUFNSX0wyX01BU0soMCkpLAotICAgICAgICAgICAgICAg Y2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pKTsKKyAgICAgICAgICAgICAgIGNhdF9kZWZh dWx0X3ZhbChmZWF0LT5jYXQuY2JtX2xlbikpOwogCiAgICAgICAgIGJyZWFrOwogCkBAIC0zMTks MTEgKzM0MCwxMyBAQCBzdGF0aWMgaW50IGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNw dWlkX2xlYWYgKnJlZ3MsCiAgICAgICAgIGZlYXQtPmNvc19tYXggPSAoZmVhdC0+Y29zX21heCAt IDEpID4+IDE7CiAKICAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAo YWxsIGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLwotICAgICAgICBnZXRfY2RwX2NvZGUo ZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbik7Ci0gICAgICAgIGdldF9j ZHBfZGF0YShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKyAgICAg ICAgZ2V0X2NkcF9jb2RlKGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdC5jYm1f bGVuKTsKKyAgICAgICAgZ2V0X2NkcF9kYXRhKGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZl YXQtPmNhdC5jYm1fbGVuKTsKIAotICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0so MCksIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKSk7Ci0gICAgICAgIHdybXNybChNU1Jf SUEzMl9QU1JfTDNfTUFTSygxKSwgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pKTsKKyAg ICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDApLAorICAgICAgICAgICAgICAgY2F0 X2RlZmF1bHRfdmFsKGZlYXQtPmNhdC5jYm1fbGVuKSk7CisgICAgICAgIHdybXNybChNU1JfSUEz Ml9QU1JfTDNfTUFTSygxKSwKKyAgICAgICAgICAgICAgIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5j YXQuY2JtX2xlbikpOwogICAgICAgICByZG1zcmwoTVNSX0lBMzJfUFNSX0wzX1FPU19DRkcsIHZh bCk7CiAgICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfUU9TX0NGRywKICAgICAgICAgICAg ICAgIHZhbCB8ICgxdWxsIDw8IFBTUl9MM19RT1NfQ0RQX0VOQUJMRV9CSVQpKTsKQEAgLTM0Myw3 ICszNjYsNTAgQEAgc3RhdGljIGludCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVp ZF9sZWFmICpyZWdzLAogCiAgICAgcHJpbnRrKFhFTkxPR19JTkZPICIlczogZW5hYmxlZCBvbiBz b2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXVcbiIsCiAgICAgICAgICAgIGNhdF9mZWF0 X25hbWVbdHlwZV0sIGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKSwKLSAgICAgICAg ICAgZmVhdC0+Y29zX21heCwgZmVhdC0+Y2JtX2xlbik7CisgICAgICAgICAgIGZlYXQtPmNvc19t YXgsIGZlYXQtPmNhdC5jYm1fbGVuKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50 IG1iYV9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX2ZlYXRfdHlwZSB0eXBlKQoreworICAgIC8qIE5v IHZhbGlkIHZhbHVlIHNvIGRvIG5vdCBlbmFibGUgZmVhdHVyZS4gKi8KKyAgICBpZiAoICFyZWdz LT5hIHx8ICFyZWdzLT5kICkKKyAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisKKyAgICBpZiAoIHR5 cGUgIT0gRkVBVF9UWVBFX01CQSApCisgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgZmVh dC0+Y29zX21heCA9IG1pbihvcHRfY29zX21heCwgcmVncy0+ZCAmIENBVF9DT1NfTUFYX01BU0sp OworICAgIGlmICggZmVhdC0+Y29zX21heCA8IDEgKQorICAgICAgICByZXR1cm4gLUVOT0VOVDsK KworICAgIGZlYXQtPm1iYS50aHJ0bF9tYXggPSAocmVncy0+YSAmIE1CQV9USFJUTF9NQVhfTUFT SykgKyAxOworCisgICAgaWYgKCByZWdzLT5jICYgTUJBX0xJTkVBUl9NQVNLICkKKyAgICB7Cisg ICAgICAgIGZlYXQtPm1iYS5saW5lYXIgPSB0cnVlOworCisgICAgICAgIGlmICggZmVhdC0+bWJh LnRocnRsX21heCA+PSAxMDAgKQorICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisgICAgfQor CisgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IHRocnRsICgwKSB3aGljaCBtZWFu cyBubyBkZWxheS4gKi8KKyAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IDA7CisgICAgd3Jtc3Js KE1TUl9JQTMyX1BTUl9NQkFfTUFTSygwKSwgMCk7CisKKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJl IGludG8gYXJyYXkuICovCisgICAgaW5mby0+ZmVhdHVyZXNbdHlwZV0gPSBmZWF0OworCisgICAg aWYgKCAhb3B0X2NwdV9pbmZvICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBwcmludGsoWEVO TE9HX0lORk8gIk1CQTogZW5hYmxlZCBvbiBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIHRocnRsX21h eDoldSwgbGluZWFyOiV1LlxuIiwKKyAgICAgICAgICAgY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vz c29yX2lkKCkpLAorICAgICAgICAgICBmZWF0LT5jb3NfbWF4LCBmZWF0LT5tYmEudGhydGxfbWF4 LCBmZWF0LT5tYmEubGluZWFyKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMzU1LDcgKzQyMSw3 IEBAIHN0YXRpYyBib29sIGNhdF9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUg KmZlYXQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRhdGFbUFNSX0lORk9fSURYX0NP U19NQVhdID0gZmVhdC0+Y29zX21heDsKLSAgICBkYXRhW1BTUl9JTkZPX0lEWF9DQVRfQ0JNX0xF Tl0gPSBmZWF0LT5jYm1fbGVuOworICAgIGRhdGFbUFNSX0lORk9fSURYX0NBVF9DQk1fTEVOXSA9 IGZlYXQtPmNhdC5jYm1fbGVuOwogICAgIGRhdGFbUFNSX0lORk9fSURYX0NBVF9GTEFHXSA9IDA7 CiAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyMSw2ICs0ODcsMjYgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBmZWF0X3Byb3BzIGwyX2NhdF9wcm9wcyA9IHsKICAgICAud3JpdGVfbXNyID0gbDJfY2F0 X3dyaXRlX21zciwKIH07CiAKKy8qIE1CQSBwcm9wcyAqLworc3RhdGljIGJvb2wgbWJhX2dldF9m ZWF0X2luZm8oY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IGRhdGFbXSwgdW5zaWduZWQgaW50IGFycmF5X2xlbikKK3sK KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyB2b2lkIG1iYV93cml0ZV9tc3IodW5zaWdu ZWQgaW50IGNvcywgdWludDMyX3QgdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IHBzcl90eXBlIHR5cGUpCit7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBt YmFfcHJvcHMgPSB7CisgICAgLmNvc19udW0gPSAxLAorICAgIC50eXBlWzBdID0gUFNSX1RZUEVf TUJBX1RIUlRMLAorICAgIC5hbHRfdHlwZSA9IFBTUl9UWVBFX1VOS05PV04sCisgICAgLmdldF9m ZWF0X2luZm8gPSBtYmFfZ2V0X2ZlYXRfaW5mbywKKyAgICAud3JpdGVfbXNyID0gbWJhX3dyaXRl X21zciwKK307CisKIHN0YXRpYyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfYm9vbChjaGFyICpzLCBj aGFyICp2YWx1ZSwgY2hhciAqZmVhdHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBpbnQgbWFzaykKIHsKQEAgLTQ1Niw2ICs1NDIsNyBAQCBzdGF0aWMgdm9p ZCBfX2luaXQgcGFyc2VfcHNyX3BhcmFtKGNoYXIgKnMpCiAgICAgICAgIHBhcnNlX3Bzcl9ib29s KHMsIHZhbF9zdHIsICJjbXQiLCBQU1JfQ01UKTsKICAgICAgICAgcGFyc2VfcHNyX2Jvb2wocywg dmFsX3N0ciwgImNhdCIsIFBTUl9DQVQpOwogICAgICAgICBwYXJzZV9wc3JfYm9vbChzLCB2YWxf c3RyLCAiY2RwIiwgUFNSX0NEUCk7CisgICAgICAgIHBhcnNlX3Bzcl9ib29sKHMsIHZhbF9zdHIs ICJtYmEiLCBQU1JfTUJBKTsKIAogICAgICAgICBpZiAoIHZhbF9zdHIgJiYgIXN0cmNtcChzLCAi cm1pZF9tYXgiKSApCiAgICAgICAgICAgICBvcHRfcm1pZF9tYXggPSBzaW1wbGVfc3RydG91bCh2 YWxfc3RyLCBOVUxMLCAwKTsKQEAgLTg2Miw3ICs5NDksNyBAQCBzdGF0aWMgaW50IGluc2VydF92 YWxfaW50b19hcnJheSh1aW50MzJfdCB2YWxbXSwKICAgICBpZiAoIGFycmF5X2xlbiA8IHByb3Bz LT5jb3NfbnVtICkKICAgICAgICAgcmV0dXJuIC1FTk9TUEM7CiAKLSAgICBpZiAoICFwc3JfY2hl Y2tfY2JtKGZlYXQtPmNibV9sZW4sIG5ld192YWwpICkKKyAgICBpZiAoICFwc3JfY2hlY2tfY2Jt KGZlYXQtPmNhdC5jYm1fbGVuLCBuZXdfdmFsKSApCiAgICAgICAgIHJldHVybiAtRUlOVkFMOwog CiAgICAgLyoKQEAgLTEzODAsNiArMTQ2NywxMCBAQCBzdGF0aWMgaW50IHBzcl9jcHVfcHJlcGFy ZSh2b2lkKQogICAgICAgICAgKGZlYXRfbDJfY2F0ID0geHphbGxvYyhzdHJ1Y3QgZmVhdF9ub2Rl KSkgPT0gTlVMTCApCiAgICAgICAgIHJldHVybiAtRU5PTUVNOwogCisgICAgaWYgKCBmZWF0X21i YSA9PSBOVUxMICYmCisgICAgICAgICAoZmVhdF9tYmEgPSB4emFsbG9jKHN0cnVjdCBmZWF0X25v ZGUpKSA9PSBOVUxMICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKICAgICByZXR1cm4gMDsK IH0KIApAQCAtMTM4OSw2ICsxNDgwLDcgQEAgc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0KHZvaWQp CiAgICAgdW5zaWduZWQgaW50IHNvY2tldCwgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogICAg IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7CiAgICAgc3RydWN0IGNwdWlkX2xlYWYgcmVnczsKKyAg ICB1aW50MzJfdCByZWdfYjsKIAogICAgIGlmICggIXBzcl9hbGxvY19mZWF0X2VuYWJsZWQoKSB8 fCAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BRRSkgKQogICAgICAgICBnb3RvIGFzc29jX2lu aXQ7CkBAIC0xNDA3LDcgKzE0OTksOCBAQCBzdGF0aWMgdm9pZCBwc3JfY3B1X2luaXQodm9pZCkK ICAgICBzcGluX2xvY2tfaW5pdCgmaW5mby0+cmVmX2xvY2spOwogCiAgICAgY3B1aWRfY291bnRf bGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAwLCAmcmVncyk7Ci0gICAgaWYgKCByZWdzLmIgJiBQ U1JfUkVTT1VSQ0VfVFlQRV9MMyApCisgICAgcmVnX2IgPSByZWdzLmI7CisgICAgaWYgKCByZWdf YiAmIFBTUl9SRVNPVVJDRV9UWVBFX0wzICkKICAgICB7CiAgICAgICAgIGNwdWlkX2NvdW50X2xl YWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMSwgJnJlZ3MpOwogCkBAIC0xNDI4LDggKzE1MjEsNyBA QCBzdGF0aWMgdm9pZCBwc3JfY3B1X2luaXQodm9pZCkKICAgICAgICAgfQogICAgIH0KIAotICAg IGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMCwgJnJlZ3MpOwotICAgIGlm ICggcmVncy5iICYgUFNSX1JFU09VUkNFX1RZUEVfTDIgKQorICAgIGlmICggcmVnX2IgJiBQU1Jf UkVTT1VSQ0VfVFlQRV9MMiApCiAgICAgewogICAgICAgICBjcHVpZF9jb3VudF9sZWFmKFBTUl9D UFVJRF9MRVZFTF9DQVQsIDIsICZyZWdzKTsKIApAQCAtMTQ0MSw2ICsxNTMzLDE4IEBAIHN0YXRp YyB2b2lkIHBzcl9jcHVfaW5pdCh2b2lkKQogICAgICAgICAgICAgZmVhdF9sMl9jYXQgPSBmZWF0 OwogICAgIH0KIAorICAgIGlmICggcmVnX2IgJiBQU1JfUkVTT1VSQ0VfVFlQRV9NQkEgKQorICAg IHsKKyAgICAgICAgY3B1aWRfY291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAzLCAmcmVn cyk7CisKKyAgICAgICAgZmVhdCA9IGZlYXRfbWJhOworICAgICAgICBmZWF0X21iYSA9IE5VTEw7 CisgICAgICAgIGlmICggIW1iYV9pbml0X2ZlYXR1cmUoJnJlZ3MsIGZlYXQsIGluZm8sIEZFQVRf VFlQRV9NQkEpICkKKyAgICAgICAgICAgIGZlYXRfcHJvcHNbRkVBVF9UWVBFX01CQV0gPSAmbWJh X3Byb3BzOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmZWF0X21iYSA9IGZlYXQ7CisgICAg fQorCiAgICAgaW5mby0+ZmVhdF9pbml0ID0gdHJ1ZTsKIAogIGFzc29jX2luaXQ6CkBAIC0xNTAw LDcgKzE2MDQsNyBAQCBzdGF0aWMgaW50IF9faW5pdCBwc3JfcHJlc21wX2luaXQodm9pZCkKICAg ICBpZiAoIChvcHRfcHNyICYgUFNSX0NNVCkgJiYgb3B0X3JtaWRfbWF4ICkKICAgICAgICAgaW5p dF9wc3JfY210KG9wdF9ybWlkX21heCk7CiAKLSAgICBpZiAoIG9wdF9wc3IgJiAoUFNSX0NBVCB8 IFBTUl9DRFApICkKKyAgICBpZiAoIG9wdF9wc3IgJiAoUFNSX0NBVCB8IFBTUl9DRFAgfCBQU1Jf TUJBKSApCiAgICAgICAgIGluaXRfcHNyKCk7CiAKICAgICBpZiAoIHBzcl9jcHVfcHJlcGFyZSgp ICkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmggYi94ZW4vaW5j bHVkZS9hc20teDg2L21zci1pbmRleC5oCmluZGV4IDRlMDhkZTYuLjQxZjE2NzcgMTAwNjQ0Ci0t LSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LXg4Ni9tc3ItaW5kZXguaApAQCAtMzQ4LDYgKzM0OCw3IEBACiAjZGVmaW5lIE1TUl9JQTMyX1BT Ul9MM19NQVNLX0NPREUobikJKDB4MDAwMDBjOTAgKyAobikgKiAyICsgMSkKICNkZWZpbmUgTVNS X0lBMzJfUFNSX0wzX01BU0tfREFUQShuKQkoMHgwMDAwMGM5MCArIChuKSAqIDIpCiAjZGVmaW5l IE1TUl9JQTMyX1BTUl9MMl9NQVNLKG4pCQkoMHgwMDAwMGQxMCArIChuKSkKKyNkZWZpbmUgTVNS X0lBMzJfUFNSX01CQV9NQVNLKG4pCSgweDAwMDAwZDUwICsgKG4pKQogCiAvKiBJbnRlbCBNb2Rl bCA2ICovCiAjZGVmaW5lIE1TUl9QNl9QRVJGQ1RSKG4pCQkoMHgwMDAwMDBjMSArIChuKSkKZGlm ZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmggYi94ZW4vaW5jbHVkZS9hc20teDg2 L3Bzci5oCmluZGV4IGNiM2YwNjcuLjlkMTQyNjQgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL2Fz bS14ODYvcHNyLmgKKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaApAQCAtMjQsNiArMjQs NyBAQAogLyogUmVzb3VyY2UgVHlwZSBFbnVtZXJhdGlvbiAqLwogI2RlZmluZSBQU1JfUkVTT1VS Q0VfVFlQRV9MMyAgICAgICAgICAgIDB4MgogI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9MMiAg ICAgICAgICAgIDB4NAorI2RlZmluZSBQU1JfUkVTT1VSQ0VfVFlQRV9NQkEgICAgICAgICAgIDB4 OAogCiAvKiBMMyBNb25pdG9yaW5nIEZlYXR1cmVzICovCiAjZGVmaW5lIFBTUl9DTVRfTDNfT0ND VVBBTkNZICAgICAgICAgICAgMHgxCkBAIC01OCw2ICs1OSw3IEBAIGVudW0gcHNyX3R5cGUgewog ICAgIFBTUl9UWVBFX0wzX0NPREUsCiAgICAgUFNSX1RZUEVfTDNfREFUQSwKICAgICBQU1JfVFlQ RV9MMl9DQk0sCisgICAgUFNSX1RZUEVfTUJBX1RIUlRMLAogICAgIFBTUl9UWVBFX1VOS05PV04s CiB9OwogCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=