From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v2 04/15] x86: implement data structure and CPU init flow for MBA Date: Thu, 24 Aug 2017 09:14:38 +0800 Message-ID: <1503537289-56036-5-git-send-email-yi.y.sun@linux.intel.com> References: <1503537289-56036-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 1dkh0O-0000jV-Sb for xen-devel@lists.xenproject.org; Thu, 24 Aug 2017 01:32:21 +0000 In-Reply-To: <1503537289-56036-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, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG1haW4gZGF0YSBzdHJ1Y3R1cmVzIG9mIE1CQS4KCkxpa2Ug Q0FUIGZlYXR1cmVzLCBNQkEgSFcgaW5mbyBoYXMgY29zX21heCB3aGljaCBtZWFucyB0aGUgbWF4 IHRocnRsCnJlZ2lzdGVyIG51bWJlciwgYW5kIHRocnRsX21heCB3aGljaCBtZWFucyB0aGUgbWF4 IHRocm90dGxlIHZhbHVlCihkZWxheSB2YWx1ZSkuIEl0IGFsc28gaGFzIGEgZmxhZyB0byByZXBy ZXNlbnQgaWYgdGhlIHRocm90dGxlCnZhbHVlIGlzIGxpbmVhciBvciBub3QuCgpPbmUgdGhydGwg cmVnaXN0ZXIgb2YgTUJBIHN0b3JlcyBhIHRocm90dGxlIHZhbHVlIGZvciBvbmUgb3IgbW9yZQpk b21haW5zLiBUaGUgdGhyb3R0bGUgdmFsdWUgbWVhbnMgdGhlIHRyYW5zYWN0aW9uIHRpbWUgYmV0 d2VlbiBMMgpjYWNoZSBhbmQgbmV4dCBsZXZlbCBtZW1vcnkgdG8gYmUgZGVsYXllZC4KClRoaXMg cGF0Y2ggYWxzbyBpbXBsZW1lbnRzIGluaXQgZmxvdyBmb3IgTUJBIGFuZCByZWdpc3RlciBzdHVi CmNhbGxiYWNrIGZ1bmN0aW9ucy4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGlu dXguaW50ZWwuY29tPgotLS0KdjI6CiAgICAtIG1vZGlmeSBjb21taXQgbWVzc2FnZSB0byByZXBs YWNlICdjb3MgcmVnaXN0ZXInIHRvICd0aHJ0bCByZWdpc3RlcicgdG8KICAgICAgbWFrZSBpdCBh Y2N1cmF0ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIHJlc3RvcmUgdGhl IHBsYWNlIG9mIHRoZSBzZW50ZW5jZSB0byBhc3NpZ24gdmFsdWUgdG8gJ2ZlYXQtPmNibV9sZW4n CiAgICAgIGJlY2F1c2UgdGhlIE1CQSBpbml0IGZsb3cgaXMgc3BsaXR0ZWQgb3V0IGFzIGEgc2Vw YXJhdGUgZnVuY3Rpb24gaW4gdjEuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAg LSBhZGQgY29tbWVudCB0byBleHBsYWluIHdoYXQgdGhlIE1CQSB0aHJ0bCBkZWZhdWwgdmFsdWUg JzAnIHN0YW5kcyBmb3IuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAgLSBjaGVj ayAndGhydGxfbWF4JyB1bmRlciBsaW5lYXIgbW9kZS4gSXQgY291bGQgbm90IGJlIGV1cWFsIG9y IGxhcmdlciB0aGFuCiAgICAgIDEwMC4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCnYx OgogICAgLSByZWJhc2UgY29kZXMgb250byBMMiBDQVQgdjE1LgogICAgLSBtb3ZlIGNvbW1lbnQg dG8gYXBwcm9wcmlhdGUgcGxhY2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hhbyBQZW5nKQogICAg LSBpbXBsZW1lbnQgJ21iYV9pbml0X2ZlYXR1cmUnIGFuZCBrZWVwICdjYXRfaW5pdF9mZWF0dXJl Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGtlZXAgJ3JlZ3MuYicgaW50 byBhIGxvY2FsIHZhcmlhYmxlIHRvIGF2b2lkIHJlYWRpbmcgQ1BVSUQgZXZlcnkgdGltZS4KICAg ICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCi0tLQogeGVuL2FyY2gveDg2L3Bzci5jICAgICAg ICAgICAgICB8IDE0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiB4 ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oIHwgICAxICsKIHhlbi9pbmNsdWRlL2FzbS14 ODYvcHNyLmggICAgICAgfCAgIDIgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMjYgaW5zZXJ0aW9ucygr KSwgMTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Bzci5jIGIveGVu L2FyY2gveDg2L3Bzci5jCmluZGV4IGRhNjJmODEuLmY1ZTk5Y2UgMTAwNjQ0Ci0tLSBhL3hlbi9h cmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTI3LDEzICsyNywxNiBA QAogICogLSBDTVQgICAgICAgICBDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xvZ3kKICAqIC0gQ09T L0NMT1MgICAgQ2xhc3Mgb2YgU2VydmljZS4gQWxzbyBtZWFuIENPUyByZWdpc3RlcnMuCiAgKiAt IENPU19NQVggICAgIE1heCBudW1iZXIgb2YgQ09TIGZvciB0aGUgZmVhdHVyZSAobWludXMgMSkK KyAqIC0gTUJBICAgICAgICAgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9uCiAgKiAtIE1TUnMg ICAgICAgIE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXJzCiAgKiAtIFBTUiAgICAgICAgIEludGVs IFBsYXRmb3JtIFNoYXJlZCBSZXNvdXJjZQorICogLSBUSFJUTF9NQVggICBNYXggdGhyb3R0bGUg dmFsdWUgKGRlbGF5IHZhbHVlKSBvZiBNQkEKICAqLwogCiAjZGVmaW5lIFBTUl9DTVQgICAgICAg ICgxdSA8PCAwKQogI2RlZmluZSBQU1JfQ0FUICAgICAgICAoMXUgPDwgMSkKICNkZWZpbmUgUFNS X0NEUCAgICAgICAgKDF1IDw8IDIpCisjZGVmaW5lIFBTUl9NQkEgICAgICAgICgxdSA8PCAzKQog CiAjZGVmaW5lIENBVF9DQk1fTEVOX01BU0sgMHgxZgogI2RlZmluZSBDQVRfQ09TX01BWF9NQVNL IDB4ZmZmZgpAQCAtNjAsMTAgKzYzLDE0IEBACiAgKi8KICNkZWZpbmUgTUFYX0NPU19OVU0gMgog CisjZGVmaW5lIE1CQV9MSU5FQVIgICAgICAgICAoMXUgPDwgMikKKyNkZWZpbmUgTUJBX1RIUlRM X01BWF9NQVNLIDB4ZmZmCisKIGVudW0gcHNyX2ZlYXRfdHlwZSB7CiAgICAgRkVBVF9UWVBFX0wz X0NBVCwKICAgICBGRUFUX1RZUEVfTDNfQ0RQLAogICAgIEZFQVRfVFlQRV9MMl9DQVQsCisgICAg RkVBVF9UWVBFX01CQSwKICAgICBGRUFUX1RZUEVfTlVNLAogICAgIEZFQVRfVFlQRV9VTktOT1dO LAogfTsKQEAgLTcxLDcgKzc4LDYgQEAgZW51bSBwc3JfZmVhdF90eXBlIHsKIC8qCiAgKiBUaGlz IHN0cnVjdHVyZSByZXByZXNlbnRzIG9uZSBmZWF0dXJlLgogICogY29zX21heCAgICAgLSBUaGUg bWF4IENPUyByZWdpc3RlcnMgbnVtYmVyIGdvdCB0aHJvdWdoIENQVUlELgotICogY2JtX2xlbiAg ICAgLSBUaGUgbGVuZ3RoIG9mIENCTSBnb3QgdGhyb3VnaCBDUFVJRC4KICAqIGNvc19yZWdfdmFs IC0gQXJyYXkgdG8gc3RvcmUgdGhlIHZhbHVlcyBvZiBDT1MgcmVnaXN0ZXJzLiBPbmUgZW50cnkg c3RvcmVzCiAgKiAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBvZiBvbmUgQ09TIHJlZ2lzdGVyLgog ICogICAgICAgICAgICAgICBGb3IgTDMgQ0FUIGFuZCBMMiBDQVQsIG9uZSBlbnRyeSBjb3JyZXNw b25kcyB0byBvbmUgQ09TX0lELgpAQCAtODAsOSArODYsMjMgQEAgZW51bSBwc3JfZmVhdF90eXBl IHsKICAqICAgICAgICAgICAgICAgY29zX3JlZ192YWxbMV0gKENvZGUpLgogICovCiBzdHJ1Y3Qg ZmVhdF9ub2RlIHsKLSAgICAvKiBjb3NfbWF4IGFuZCBjYm1fbGVuIGFyZSBjb21tb24gdmFsdWVz IGZvciBhbGwgZmVhdHVyZXMgc28gZmFyLiAqLworICAgIC8qIGNvc19tYXggaXMgY29tbW9uIHZh bHVlcyBmb3IgYWxsIGZlYXR1cmVzIHNvIGZhci4gKi8KICAgICB1bnNpZ25lZCBpbnQgY29zX21h eDsKLSAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKKworICAgIC8qIEZlYXR1cmUgc3BlY2lmaWMg SFcgaW5mby4gKi8KKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAv KiBUaGUgbGVuZ3RoIG9mIENCTSBnb3QgdGhyb3VnaCBDUFVJRC4gKi8KKyAgICAgICAgICAgIHVu c2lnbmVkIGludCBjYm1fbGVuOworICAgICAgICB9IGNhdF9pbmZvOworCisgICAgICAgIHN0cnVj dCB7CisgICAgICAgICAgICAvKiBUaGUgbWF4IHRocm90dGxpbmcgdmFsdWUgZ290IHRocm91Z2gg Q1BVSUQuICovCisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdGhydGxfbWF4OworICAgICAgICAg ICAgdW5zaWduZWQgaW50IGxpbmVhcjsKKyAgICAgICAgfSBtYmFfaW5mbzsKKyAgICB9OworCiAg ICAgdWludDMyX3QgY29zX3JlZ192YWxbTUFYX0NPU19SRUdfQ05UXTsKIH07CiAKQEAgLTE2MSw2 ICsxODEsNyBAQCBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHBzcl9hc3NvYywgcHNyX2Fz c29jKTsKICAqLwogc3RhdGljIHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDM7CiBzdGF0aWMgc3Ry dWN0IGZlYXRfbm9kZSAqZmVhdF9sMl9jYXQ7CitzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVh dF9tYmE7CiAKIC8qIENvbW1vbiBmdW5jdGlvbnMgKi8KICNkZWZpbmUgY2F0X2RlZmF1bHRfdmFs KGxlbikgKDB4ZmZmZmZmZmYgPj4gKDMyIC0gKGxlbikpKQpAQCAtMjczLDcgKzI5NCw3IEBAIHN0 YXRpYyBib29sIHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50IGNibV9sZW4sIHVuc2lnbmVkIGxv bmcgY2JtKQogICAgIHJldHVybiB0cnVlOwogfQogCi0vKiBDQVQgY29tbW9uIGZ1bmN0aW9ucyBp bXBsZW1lbnRhdGlvbi4gKi8KKy8qIEltcGxlbWVudGF0aW9uIG9mIGFsbG9jYXRpb24gZmVhdHVy ZXMnIGZ1bmN0aW9ucy4gKi8KIHN0YXRpYyBpbnQgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1 Y3QgY3B1aWRfbGVhZiAqcmVncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZmVhdF9ub2RlICpmZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwc3Jf c29ja2V0X2luZm8gKmluZm8sCkBAIC0yODksOCArMzEwLDggQEAgc3RhdGljIGludCBjYXRfaW5p dF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgIGlmICggIXJlZ3Mt PmEgfHwgIXJlZ3MtPmQgKQogICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAotICAgIGZlYXQtPmNi bV9sZW4gPSAocmVncy0+YSAmIENBVF9DQk1fTEVOX01BU0spICsgMTsKICAgICBmZWF0LT5jb3Nf bWF4ID0gbWluKG9wdF9jb3NfbWF4LCByZWdzLT5kICYgQ0FUX0NPU19NQVhfTUFTSyk7CisgICAg ZmVhdC0+Y2F0X2luZm8uY2JtX2xlbiA9IChyZWdzLT5hICYgQ0FUX0NCTV9MRU5fTUFTSykgKyAx OwogCiAgICAgc3dpdGNoICggdHlwZSApCiAgICAgewpAQCAtMzAwLDEyICszMjEsMTIgQEAgc3Rh dGljIGludCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAog ICAgICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAKICAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9 MCBhcyBkZWZhdWx0IGNibSAoYWxsIGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLwotICAg ICAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVu KTsKKyAgICAgICAgZmVhdC0+Y29zX3JlZ192YWxbMF0gPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+ Y2F0X2luZm8uY2JtX2xlbik7CiAKICAgICAgICAgd3Jtc3JsKCh0eXBlID09IEZFQVRfVFlQRV9M M19DQVQgPwogICAgICAgICAgICAgICAgIE1TUl9JQTMyX1BTUl9MM19NQVNLKDApIDoKICAgICAg ICAgICAgICAgICBNU1JfSUEzMl9QU1JfTDJfTUFTSygwKSksCi0gICAgICAgICAgICAgICBjYXRf ZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOworICAgICAgICAgICAgICAgY2F0X2RlZmF1bHRf dmFsKGZlYXQtPmNhdF9pbmZvLmNibV9sZW4pKTsKIAogICAgICAgICBicmVhazsKIApAQCAtMzIw LDExICszNDEsMTMgQEAgc3RhdGljIGludCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBj cHVpZF9sZWFmICpyZWdzLAogICAgICAgICBmZWF0LT5jb3NfbWF4ID0gKGZlYXQtPmNvc19tYXgg LSAxKSA+PiAxOwogCiAgICAgICAgIC8qIFdlIHJlc2VydmUgY29zPTAgYXMgZGVmYXVsdCBjYm0g KGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8KLSAgICAgICAgZ2V0X2NkcF9jb2Rl KGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pOwotICAgICAgICBnZXRf Y2RwX2RhdGEoZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbik7CisgICAg ICAgIGdldF9jZHBfY29kZShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYXRfaW5m by5jYm1fbGVuKTsKKyAgICAgICAgZ2V0X2NkcF9kYXRhKGZlYXQsIDApID0gY2F0X2RlZmF1bHRf dmFsKGZlYXQtPmNhdF9pbmZvLmNibV9sZW4pOwogCi0gICAgICAgIHdybXNybChNU1JfSUEzMl9Q U1JfTDNfTUFTSygwKSwgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9sZW4pKTsKLSAgICAgICAg d3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDEpLCBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2Jt X2xlbikpOworICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0soMCksCisgICAgICAg ICAgICAgICBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0X2luZm8uY2JtX2xlbikpOworICAgICAg ICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0soMSksCisgICAgICAgICAgICAgICBjYXRfZGVm YXVsdF92YWwoZmVhdC0+Y2F0X2luZm8uY2JtX2xlbikpOwogICAgICAgICByZG1zcmwoTVNSX0lB MzJfUFNSX0wzX1FPU19DRkcsIHZhbCk7CiAgICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNf UU9TX0NGRywKICAgICAgICAgICAgICAgIHZhbCB8ICgxdWxsIDw8IFBTUl9MM19RT1NfQ0RQX0VO QUJMRV9CSVQpKTsKQEAgLTM0NCw3ICszNjcsNTEgQEAgc3RhdGljIGludCBjYXRfaW5pdF9mZWF0 dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogCiAgICAgcHJpbnRrKFhFTkxPR19J TkZPICIlczogZW5hYmxlZCBvbiBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXVcbiIs CiAgICAgICAgICAgIGNhdF9mZWF0X25hbWVbdHlwZV0sIGNwdV90b19zb2NrZXQoc21wX3Byb2Nl c3Nvcl9pZCgpKSwKLSAgICAgICAgICAgZmVhdC0+Y29zX21heCwgZmVhdC0+Y2JtX2xlbik7Cisg ICAgICAgICAgIGZlYXQtPmNvc19tYXgsIGZlYXQtPmNhdF9pbmZvLmNibV9sZW4pOworCisgICAg cmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbWJhX2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3Qg Y3B1aWRfbGVhZiAqcmVncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmVh dF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwc3Jfc29j a2V0X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwc3JfZmVh dF90eXBlIHR5cGUpCit7CisgICAgLyogTm8gdmFsaWQgdmFsdWUgc28gZG8gbm90IGVuYWJsZSBm ZWF0dXJlLiAqLworICAgIGlmICggIXJlZ3MtPmEgfHwgIXJlZ3MtPmQgKQorICAgICAgICByZXR1 cm4gLUVOT0VOVDsKKworICAgIGlmICggdHlwZSAhPSBGRUFUX1RZUEVfTUJBICkKKyAgICAgICAg cmV0dXJuIC1FTk9FTlQ7CisKKyAgICBmZWF0LT5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCBy ZWdzLT5kICYgQ0FUX0NPU19NQVhfTUFTSyk7CisgICAgaWYgKCBmZWF0LT5jb3NfbWF4IDwgMSAp CisgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgZmVhdC0+bWJhX2luZm8udGhydGxfbWF4 ID0gKHJlZ3MtPmEgJiBNQkFfVEhSVExfTUFYX01BU0spICsgMTsKKworICAgIGlmICggcmVncy0+ YyAmIE1CQV9MSU5FQVIgKQorICAgIHsKKyAgICAgICAgZmVhdC0+bWJhX2luZm8ubGluZWFyID0g MTsKKworICAgICAgICBpZiAoIGZlYXQtPm1iYV9pbmZvLnRocnRsX21heCA+PSAxMDAgKQorICAg ICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisgICAgfQorCisgICAgLyogV2UgcmVzZXJ2ZSBjb3M9 MCBhcyBkZWZhdWx0IHRocnRsICgwKSB3aGljaCBtZWFucyBubyBkZWxheS4gKi8KKyAgICBmZWF0 LT5jb3NfcmVnX3ZhbFswXSA9IDA7CisgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9NQkFfTUFTSygw KSwgMCk7CisKKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJlIGludG8gYXJyYXkuICovCisgICAgaW5m by0+ZmVhdHVyZXNbdHlwZV0gPSBmZWF0OworCisgICAgaWYgKCAhb3B0X2NwdV9pbmZvICkKKyAg ICAgICAgcmV0dXJuIDA7CisKKyAgICBwcmludGsoWEVOTE9HX0lORk8gIk1CQTogZW5hYmxlZCBv biBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIgorICAgICAgICAgICAidGhydGxfbWF4OiV1LCBsaW5l YXI6JXUuXG4iLAorICAgICAgICAgICBjcHVfdG9fc29ja2V0KHNtcF9wcm9jZXNzb3JfaWQoKSks CisgICAgICAgICAgIGZlYXQtPmNvc19tYXgsIGZlYXQtPm1iYV9pbmZvLnRocnRsX21heCwgZmVh dC0+bWJhX2luZm8ubGluZWFyKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMzU2LDcgKzQyMyw3 IEBAIHN0YXRpYyBib29sIGNhdF9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUg KmZlYXQsCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRhdGFbUFNSX0lORk9fSURYX0NP U19NQVhdID0gZmVhdC0+Y29zX21heDsKLSAgICBkYXRhW1BTUl9JTkZPX0lEWF9DQVRfQ0JNX0xF Tl0gPSBmZWF0LT5jYm1fbGVuOworICAgIGRhdGFbUFNSX0lORk9fSURYX0NBVF9DQk1fTEVOXSA9 IGZlYXQtPmNhdF9pbmZvLmNibV9sZW47CiAgICAgZGF0YVtQU1JfSU5GT19JRFhfQ0FUX0ZMQUdd ID0gMDsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtNDIyLDYgKzQ4OSwyNiBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGZlYXRfcHJvcHMgbDJfY2F0X3Byb3BzID0gewogICAgIC53cml0ZV9tc3IgPSBs Ml9jYXRfd3JpdGVfbXNyLAogfTsKIAorLyogTUJBIHByb3BzICovCitzdGF0aWMgYm9vbCBtYmFf Z2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVu KQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgbWJhX3dyaXRlX21zcih1 bnNpZ25lZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAg IGVudW0gcHNyX3ZhbF90eXBlIHR5cGUpCit7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVh dF9wcm9wcyBtYmFfcHJvcHMgPSB7CisgICAgLmNvc19udW0gPSAxLAorICAgIC50eXBlWzBdID0g UFNSX1ZBTF9UWVBFX01CQSwKKyAgICAuYWx0X3R5cGUgPSBQU1JfVkFMX1RZUEVfVU5LTk9XTiwK KyAgICAuZ2V0X2ZlYXRfaW5mbyA9IG1iYV9nZXRfZmVhdF9pbmZvLAorICAgIC53cml0ZV9tc3Ig PSBtYmFfd3JpdGVfbXNyLAorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29s KGNoYXIgKnMsIGNoYXIgKnZhbHVlLCBjaGFyICpmZWF0dXJlLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBtYXNrKQogewpAQCAtNDU3LDYgKzU0NCw3IEBA IHN0YXRpYyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfcGFyYW0oY2hhciAqcykKICAgICAgICAgcGFy c2VfcHNyX2Jvb2wocywgdmFsX3N0ciwgImNtdCIsIFBTUl9DTVQpOwogICAgICAgICBwYXJzZV9w c3JfYm9vbChzLCB2YWxfc3RyLCAiY2F0IiwgUFNSX0NBVCk7CiAgICAgICAgIHBhcnNlX3Bzcl9i b29sKHMsIHZhbF9zdHIsICJjZHAiLCBQU1JfQ0RQKTsKKyAgICAgICAgcGFyc2VfcHNyX2Jvb2wo cywgdmFsX3N0ciwgIm1iYSIsIFBTUl9NQkEpOwogCiAgICAgICAgIGlmICggdmFsX3N0ciAmJiAh c3RyY21wKHMsICJybWlkX21heCIpICkKICAgICAgICAgICAgIG9wdF9ybWlkX21heCA9IHNpbXBs ZV9zdHJ0b3VsKHZhbF9zdHIsIE5VTEwsIDApOwpAQCAtODYzLDcgKzk1MSw3IEBAIHN0YXRpYyBp bnQgaW5zZXJ0X3ZhbF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGlmICggYXJyYXlf bGVuIDwgcHJvcHMtPmNvc19udW0gKQogICAgICAgICByZXR1cm4gLUVOT1NQQzsKIAotICAgIGlm ICggIXBzcl9jaGVja19jYm0oZmVhdC0+Y2JtX2xlbiwgbmV3X3ZhbCkgKQorICAgIGlmICggIXBz cl9jaGVja19jYm0oZmVhdC0+Y2F0X2luZm8uY2JtX2xlbiwgbmV3X3ZhbCkgKQogICAgICAgICBy ZXR1cm4gLUVJTlZBTDsKIAogICAgIC8qCkBAIC0xMzgxLDYgKzE0NjksMTAgQEAgc3RhdGljIGlu dCBwc3JfY3B1X3ByZXBhcmUodm9pZCkKICAgICAgICAgIChmZWF0X2wyX2NhdCA9IHh6YWxsb2Mo c3RydWN0IGZlYXRfbm9kZSkpID09IE5VTEwgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAor ICAgIGlmICggZmVhdF9tYmEgPT0gTlVMTCAmJgorICAgICAgICAgKGZlYXRfbWJhID0geHphbGxv YyhzdHJ1Y3QgZmVhdF9ub2RlKSkgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOwor CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEzOTAsNiArMTQ4Miw3IEBAIHN0YXRpYyB2b2lkIHBz cl9jcHVfaW5pdCh2b2lkKQogICAgIHVuc2lnbmVkIGludCBzb2NrZXQsIGNwdSA9IHNtcF9wcm9j ZXNzb3JfaWQoKTsKICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0OwogICAgIHN0cnVjdCBjcHVp ZF9sZWFmIHJlZ3M7CisgICAgdWludDMyX3QgcmVnX2I7CiAKICAgICBpZiAoICFwc3JfYWxsb2Nf ZmVhdF9lbmFibGVkKCkgfHwgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9QUUUpICkKICAgICAg ICAgZ290byBhc3NvY19pbml0OwpAQCAtMTQwOCw3ICsxNTAxLDggQEAgc3RhdGljIHZvaWQgcHNy X2NwdV9pbml0KHZvaWQpCiAgICAgc3Bpbl9sb2NrX2luaXQoJmluZm8tPnJlZl9sb2NrKTsKIAog ICAgIGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMCwgJnJlZ3MpOwotICAg IGlmICggcmVncy5iICYgUFNSX1JFU09VUkNFX1RZUEVfTDMgKQorICAgIHJlZ19iID0gcmVncy5i OworICAgIGlmICggcmVnX2IgJiBQU1JfUkVTT1VSQ0VfVFlQRV9MMyApCiAgICAgewogICAgICAg ICBjcHVpZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDEsICZyZWdzKTsKIApAQCAt MTQyOSw4ICsxNTIzLDcgQEAgc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0KHZvaWQpCiAgICAgICAg IH0KICAgICB9CiAKLSAgICBjcHVpZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDAs ICZyZWdzKTsKLSAgICBpZiAoIHJlZ3MuYiAmIFBTUl9SRVNPVVJDRV9UWVBFX0wyICkKKyAgICBp ZiAoIHJlZ19iICYgUFNSX1JFU09VUkNFX1RZUEVfTDIgKQogICAgIHsKICAgICAgICAgY3B1aWRf Y291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAyLCAmcmVncyk7CiAKQEAgLTE0NDIsNiAr MTUzNSwxOCBAQCBzdGF0aWMgdm9pZCBwc3JfY3B1X2luaXQodm9pZCkKICAgICAgICAgICAgIGZl YXRfbDJfY2F0ID0gZmVhdDsKICAgICB9CiAKKyAgICBpZiAoIHJlZ19iICYgUFNSX1JFU09VUkNF X1RZUEVfTUJBICkKKyAgICB7CisgICAgICAgIGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xF VkVMX0NBVCwgMywgJnJlZ3MpOworCisgICAgICAgIGZlYXQgPSBmZWF0X21iYTsKKyAgICAgICAg ZmVhdF9tYmEgPSBOVUxMOworICAgICAgICBpZiAoICFtYmFfaW5pdF9mZWF0dXJlKCZyZWdzLCBm ZWF0LCBpbmZvLCBGRUFUX1RZUEVfTUJBKSApCisgICAgICAgICAgICBmZWF0X3Byb3BzW0ZFQVRf VFlQRV9NQkFdID0gJm1iYV9wcm9wczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmVhdF9t YmEgPSBmZWF0OworICAgIH0KKwogICAgIGluZm8tPmZlYXRfaW5pdCA9IHRydWU7CiAKICBhc3Nv Y19pbml0OgpAQCAtMTUwMSw3ICsxNjA2LDcgQEAgc3RhdGljIGludCBfX2luaXQgcHNyX3ByZXNt cF9pbml0KHZvaWQpCiAgICAgaWYgKCAob3B0X3BzciAmIFBTUl9DTVQpICYmIG9wdF9ybWlkX21h eCApCiAgICAgICAgIGluaXRfcHNyX2NtdChvcHRfcm1pZF9tYXgpOwogCi0gICAgaWYgKCBvcHRf cHNyICYgKFBTUl9DQVQgfCBQU1JfQ0RQKSApCisgICAgaWYgKCBvcHRfcHNyICYgKFBTUl9DQVQg fCBQU1JfQ0RQIHwgUFNSX01CQSkgKQogICAgICAgICBpbml0X3BzcigpOwogCiAgICAgaWYgKCBw c3JfY3B1X3ByZXBhcmUoKSApCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21zci1p bmRleC5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaAppbmRleCA0ZTA4ZGU2Li40 MWYxNjc3IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oCisrKyBi L3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmgKQEAgLTM0OCw2ICszNDgsNyBAQAogI2Rl ZmluZSBNU1JfSUEzMl9QU1JfTDNfTUFTS19DT0RFKG4pCSgweDAwMDAwYzkwICsgKG4pICogMiAr IDEpCiAjZGVmaW5lIE1TUl9JQTMyX1BTUl9MM19NQVNLX0RBVEEobikJKDB4MDAwMDBjOTAgKyAo bikgKiAyKQogI2RlZmluZSBNU1JfSUEzMl9QU1JfTDJfTUFTSyhuKQkJKDB4MDAwMDBkMTAgKyAo bikpCisjZGVmaW5lIE1TUl9JQTMyX1BTUl9NQkFfTUFTSyhuKQkoMHgwMDAwMGQ1MCArIChuKSkK IAogLyogSW50ZWwgTW9kZWwgNiAqLwogI2RlZmluZSBNU1JfUDZfUEVSRkNUUihuKQkJKDB4MDAw MDAwYzEgKyAobikpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oIGIveGVu L2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAppbmRleCBmYjRhMjBhLi4xMDA0M2FjIDEwMDY0NAotLS0g YS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNy LmgKQEAgLTI0LDYgKzI0LDcgQEAKIC8qIFJlc291cmNlIFR5cGUgRW51bWVyYXRpb24gKi8KICNk ZWZpbmUgUFNSX1JFU09VUkNFX1RZUEVfTDMgICAgICAgICAgICAweDIKICNkZWZpbmUgUFNSX1JF U09VUkNFX1RZUEVfTDIgICAgICAgICAgICAweDQKKyNkZWZpbmUgUFNSX1JFU09VUkNFX1RZUEVf TUJBICAgICAgICAgICAweDgKIAogLyogTDMgTW9uaXRvcmluZyBGZWF0dXJlcyAqLwogI2RlZmlu ZSBQU1JfQ01UX0wzX09DQ1VQQU5DWSAgICAgICAgICAgIDB4MQpAQCAtNTgsNiArNTksNyBAQCBl bnVtIHBzcl92YWxfdHlwZSB7CiAgICAgUFNSX1ZBTF9UWVBFX0wzX0NPREUsCiAgICAgUFNSX1ZB TF9UWVBFX0wzX0RBVEEsCiAgICAgUFNSX1ZBTF9UWVBFX0wyX0NCTSwKKyAgICBQU1JfVkFMX1RZ UEVfTUJBLAogICAgIFBTUl9WQUxfVFlQRV9VTktOT1dOLAogfTsKIAotLSAKMS45LjEKCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFp bGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94 ZW4tZGV2ZWwK