From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v1 04/13] x86: implement data structure and CPU init flow for MBA Date: Wed, 9 Aug 2017 15:41:43 +0800 Message-ID: <1502264512-4648-5-git-send-email-yi.y.sun@linux.intel.com> References: <1502264512-4648-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 1dfLsU-0001fP-6X for xen-devel@lists.xenproject.org; Wed, 09 Aug 2017 07:58:06 +0000 In-Reply-To: <1502264512-4648-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 IGNvcwpyZWdpc3RlcnMgbnVtYmVyLCBhbmQgdGhydGxfbWF4IHdoaWNoIG1lYW5zIHRoZSBtYXgg dGhyb3R0bGUgdmFsdWUKKGRlbGF5IHZhbHVlKS4gSXQgYWxzbyBoYXMgYSBmbGFnIHRvIHJlcHJl c2VudCBpZiB0aGUgdGhyb3R0bGUKdmFsdWUgaXMgbGluZWFyIG9yIG5vdC4KCk9uZSBDT1MgcmVn aXN0ZXIgb2YgTUJBIHN0b3JlcyBhIHRocm90dGxlIHZhbHVlIGZvciBvbmUgb3IgbW9yZQpkb21h aW5zLiBUaGUgdGhyb3R0bGUgdmFsdWUgbWVhbnMgdGhlIHRyYW5zYWN0aW9uIHRpbWUgYmV0d2Vl biBMMgpjYWNoZSBhbmQgbmV4dCBsZXZlbCBtZW1vcnkgdG8gYmUgZGVsYXllZC4KClRoaXMgcGF0 Y2ggYWxzbyBpbXBsZW1lbnRzIGluaXQgZmxvdyBmb3IgTUJBIGFuZCByZWdpc3RlciBzdHViCmNh bGxiYWNrIGZ1bmN0aW9ucy4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5zdW5AbGludXgu aW50ZWwuY29tPgotLS0KdjE6CiAgICAtIHJlYmFzZSBjb2RlcyBvbnRvIEwyIENBVCB2MTUuCiAg ICAtIHVzZSAnKDF1IDw8IFgpJy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAgLSBt b3ZlIGNvbW1lbnQgdG8gYXBwcm9wcmlhdGUgcGxhY2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgQ2hh byBQZW5nKQogICAgLSBpbXBsZW1lbnQgJ21iYV9pbml0X2ZlYXR1cmUnIGFuZCBrZWVwICdjYXRf aW5pdF9mZWF0dXJlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCiAgICAtIGtlZXAg J3JlZ3MuYicgaW50byBhIGxvY2FsIHZhcmlhYmxlIHRvIGF2b2lkIHJlYWRpbmcgQ1BVSUQgZXZl cnkgdGltZS4KICAgICAgKHN1Z2dlc3RlZCBieSBDaGFvIFBlbmcpCi0tLQogeGVuL2FyY2gveDg2 L3Bzci5jICAgICAgICAgICAgICB8IDE0NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tCiB4ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oIHwgICAxICsKIHhlbi9p bmNsdWRlL2FzbS14ODYvcHNyLmggICAgICAgfCAgIDIgKwogMyBmaWxlcyBjaGFuZ2VkLCAxMjYg aW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IDVlYzAwYTkuLmQ5NGE1YjEgMTAwNjQ0 Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTI3 LDEzICsyNywxNiBAQAogICogLSBDTVQgICAgICAgICBDYWNoZSBNb25pdG9yaW5nIFRlY2hub2xv Z3kKICAqIC0gQ09TL0NMT1MgICAgQ2xhc3Mgb2YgU2VydmljZS4gQWxzbyBtZWFuIENPUyByZWdp c3RlcnMuCiAgKiAtIENPU19NQVggICAgIE1heCBudW1iZXIgb2YgQ09TIGZvciB0aGUgZmVhdHVy ZSAobWludXMgMSkKKyAqIC0gTUJBICAgICAgICAgTWVtb3J5IEJhbmR3aWR0aCBBbGxvY2F0aW9u CiAgKiAtIE1TUnMgICAgICAgIE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXJzCiAgKiAtIFBTUiAg ICAgICAgIEludGVsIFBsYXRmb3JtIFNoYXJlZCBSZXNvdXJjZQorICogLSBUSFJUTF9NQVggICBN YXggdGhyb3R0bGUgdmFsdWUgKGRlbGF5IHZhbHVlKSBvZiBNQkEKICAqLwogCi0jZGVmaW5lIFBT Ul9DTVQgICAgICAgICgxPDwwKQotI2RlZmluZSBQU1JfQ0FUICAgICAgICAoMTw8MSkKLSNkZWZp bmUgUFNSX0NEUCAgICAgICAgKDE8PDIpCisjZGVmaW5lIFBTUl9DTVQgICAgICAgICgxdSA8PCAw KQorI2RlZmluZSBQU1JfQ0FUICAgICAgICAoMXUgPDwgMSkKKyNkZWZpbmUgUFNSX0NEUCAgICAg ICAgKDF1IDw8IDIpCisjZGVmaW5lIFBTUl9NQkEgICAgICAgICgxdSA8PCAzKQogCiAjZGVmaW5l IENBVF9DQk1fTEVOX01BU0sgMHgxZgogI2RlZmluZSBDQVRfQ09TX01BWF9NQVNLIDB4ZmZmZgpA QCAtNjAsMTAgKzYzLDE0IEBACiAgKi8KICNkZWZpbmUgTUFYX0NPU19OVU0gMgogCisjZGVmaW5l IE1CQV9MSU5FQVIgICAgICAgICAoMXUgPDwgMikKKyNkZWZpbmUgTUJBX1RIUlRMX01BWF9NQVNL IDB4ZmZmCisKIGVudW0gcHNyX2ZlYXRfdHlwZSB7CiAgICAgRkVBVF9UWVBFX0wzX0NBVCwKICAg ICBGRUFUX1RZUEVfTDNfQ0RQLAogICAgIEZFQVRfVFlQRV9MMl9DQVQsCisgICAgRkVBVF9UWVBF X01CQSwKICAgICBGRUFUX1RZUEVfTlVNLAogICAgIEZFQVRfVFlQRV9VTktOT1dOLAogfTsKQEAg LTcxLDcgKzc4LDYgQEAgZW51bSBwc3JfZmVhdF90eXBlIHsKIC8qCiAgKiBUaGlzIHN0cnVjdHVy ZSByZXByZXNlbnRzIG9uZSBmZWF0dXJlLgogICogY29zX21heCAgICAgLSBUaGUgbWF4IENPUyBy ZWdpc3RlcnMgbnVtYmVyIGdvdCB0aHJvdWdoIENQVUlELgotICogY2JtX2xlbiAgICAgLSBUaGUg bGVuZ3RoIG9mIENCTSBnb3QgdGhyb3VnaCBDUFVJRC4KICAqIGNvc19yZWdfdmFsIC0gQXJyYXkg dG8gc3RvcmUgdGhlIHZhbHVlcyBvZiBDT1MgcmVnaXN0ZXJzLiBPbmUgZW50cnkgc3RvcmVzCiAg KiAgICAgICAgICAgICAgIHRoZSB2YWx1ZSBvZiBvbmUgQ09TIHJlZ2lzdGVyLgogICogICAgICAg ICAgICAgICBGb3IgTDMgQ0FUIGFuZCBMMiBDQVQsIG9uZSBlbnRyeSBjb3JyZXNwb25kcyB0byBv bmUgQ09TX0lELgpAQCAtODAsOSArODYsMjMgQEAgZW51bSBwc3JfZmVhdF90eXBlIHsKICAqICAg ICAgICAgICAgICAgY29zX3JlZ192YWxbMV0gKENvZGUpLgogICovCiBzdHJ1Y3QgZmVhdF9ub2Rl IHsKLSAgICAvKiBjb3NfbWF4IGFuZCBjYm1fbGVuIGFyZSBjb21tb24gdmFsdWVzIGZvciBhbGwg ZmVhdHVyZXMgc28gZmFyLiAqLworICAgIC8qIGNvc19tYXggaXMgY29tbW9uIHZhbHVlcyBmb3Ig YWxsIGZlYXR1cmVzIHNvIGZhci4gKi8KICAgICB1bnNpZ25lZCBpbnQgY29zX21heDsKLSAgICB1 bnNpZ25lZCBpbnQgY2JtX2xlbjsKKworICAgIC8qIEZlYXR1cmUgc3BlY2lmaWMgSFcgaW5mby4g Ki8KKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAvKiBUaGUgbGVu Z3RoIG9mIENCTSBnb3QgdGhyb3VnaCBDUFVJRC4gKi8KKyAgICAgICAgICAgIHVuc2lnbmVkIGlu dCBjYm1fbGVuOworICAgICAgICB9IGNhdF9pbmZvOworCisgICAgICAgIHN0cnVjdCB7CisgICAg ICAgICAgICAvKiBUaGUgbWF4IHRocm90dGxpbmcgdmFsdWUgZ290IHRocm91Z2ggQ1BVSUQuICov CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgdGhydGxfbWF4OworICAgICAgICAgICAgdW5zaWdu ZWQgaW50IGxpbmVhcjsKKyAgICAgICAgfSBtYmFfaW5mbzsKKyAgICB9OworCiAgICAgdWludDMy X3QgY29zX3JlZ192YWxbTUFYX0NPU19SRUdfQ05UXTsKIH07CiAKQEAgLTE2MSw2ICsxODEsNyBA QCBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHBzcl9hc3NvYywgcHNyX2Fzc29jKTsKICAq Lwogc3RhdGljIHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDM7CiBzdGF0aWMgc3RydWN0IGZlYXRf bm9kZSAqZmVhdF9sMl9jYXQ7CitzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF9tYmE7CiAK IC8qIENvbW1vbiBmdW5jdGlvbnMgKi8KICNkZWZpbmUgY2F0X2RlZmF1bHRfdmFsKGxlbikgKDB4 ZmZmZmZmZmYgPj4gKDMyIC0gKGxlbikpKQpAQCAtMjczLDcgKzI5NCw3IEBAIHN0YXRpYyBib29s IHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50IGNibV9sZW4sIHVuc2lnbmVkIGxvbmcgY2JtKQog ICAgIHJldHVybiB0cnVlOwogfQogCi0vKiBDQVQgY29tbW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRh dGlvbi4gKi8KKy8qIEltcGxlbWVudGF0aW9uIG9mIGFsbG9jYXRpb24gZmVhdHVyZXMnIGZ1bmN0 aW9ucy4gKi8KIHN0YXRpYyBpbnQgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRf bGVhZiAqcmVncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2Rl ICpmZWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwc3Jfc29ja2V0X2lu Zm8gKmluZm8sCkBAIC0yODksNyArMzEwLDYgQEAgc3RhdGljIGludCBjYXRfaW5pdF9mZWF0dXJl KGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgIGlmICggIXJlZ3MtPmEgfHwgIXJl Z3MtPmQgKQogICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAotICAgIGZlYXQtPmNibV9sZW4gPSAo cmVncy0+YSAmIENBVF9DQk1fTEVOX01BU0spICsgMTsKICAgICBmZWF0LT5jb3NfbWF4ID0gbWlu KG9wdF9jb3NfbWF4LCByZWdzLT5kICYgQ0FUX0NPU19NQVhfTUFTSyk7CiAKICAgICBzd2l0Y2gg KCB0eXBlICkKQEAgLTI5OSwxMyArMzE5LDE1IEBAIHN0YXRpYyBpbnQgY2F0X2luaXRfZmVhdHVy ZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKICAgICAgICAgaWYgKCBmZWF0LT5jb3Nf bWF4IDwgMSApCiAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAorICAgICAgICBmZWF0LT5j YXRfaW5mby5jYm1fbGVuID0gKHJlZ3MtPmEgJiBDQVRfQ0JNX0xFTl9NQVNLKSArIDE7CisKICAg ICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAoYWxsIGJpdHMgd2l0aGlu IGNibV9sZW4gYXJlIDEpLiAqLwotICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IGNhdF9k ZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKyAgICAgICAgZmVhdC0+Y29zX3JlZ192YWxbMF0g PSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0X2luZm8uY2JtX2xlbik7CiAKICAgICAgICAgd3Jt c3JsKCh0eXBlID09IEZFQVRfVFlQRV9MM19DQVQgPwogICAgICAgICAgICAgICAgIE1TUl9JQTMy X1BTUl9MM19NQVNLKDApIDoKICAgICAgICAgICAgICAgICBNU1JfSUEzMl9QU1JfTDJfTUFTSygw KSksCi0gICAgICAgICAgICAgICBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOworICAg ICAgICAgICAgICAgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdF9pbmZvLmNibV9sZW4pKTsKIAog ICAgICAgICBicmVhazsKIApAQCAtMzE2LDE1ICszMzgsMTkgQEAgc3RhdGljIGludCBjYXRfaW5p dF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAogICAgICAgICBpZiAoIGZl YXQtPmNvc19tYXggPCAzICkKICAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwogCisgICAgICAg IGZlYXQtPmNhdF9pbmZvLmNibV9sZW4gPSAocmVncy0+YSAmIENBVF9DQk1fTEVOX01BU0spICsg MTsKKwogICAgICAgICAvKiBDdXQgaGFsZiBvZiBjb3NfbWF4IHdoZW4gQ0RQIGlzIGVuYWJsZWQu ICovCiAgICAgICAgIGZlYXQtPmNvc19tYXggPSAoZmVhdC0+Y29zX21heCAtIDEpID4+IDE7CiAK ICAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAoYWxsIGJpdHMgd2l0 aGluIGNibV9sZW4gYXJlIDEpLiAqLwotICAgICAgICBnZXRfY2RwX2NvZGUoZmVhdCwgMCkgPSBj YXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbik7Ci0gICAgICAgIGdldF9jZHBfZGF0YShmZWF0 LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKyAgICAgICAgZ2V0X2NkcF9j b2RlKGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdF9pbmZvLmNibV9sZW4pOwor ICAgICAgICBnZXRfY2RwX2RhdGEoZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0 X2luZm8uY2JtX2xlbik7CiAKLSAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLKDAp LCBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOwotICAgICAgICB3cm1zcmwoTVNSX0lB MzJfUFNSX0wzX01BU0soMSksIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKSk7CisgICAg ICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygwKSwKKyAgICAgICAgICAgICAgIGNhdF9k ZWZhdWx0X3ZhbChmZWF0LT5jYXRfaW5mby5jYm1fbGVuKSk7CisgICAgICAgIHdybXNybChNU1Jf SUEzMl9QU1JfTDNfTUFTSygxKSwKKyAgICAgICAgICAgICAgIGNhdF9kZWZhdWx0X3ZhbChmZWF0 LT5jYXRfaW5mby5jYm1fbGVuKSk7CiAgICAgICAgIHJkbXNybChNU1JfSUEzMl9QU1JfTDNfUU9T X0NGRywgdmFsKTsKICAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19RT1NfQ0ZHLAogICAg ICAgICAgICAgICAgdmFsIHwgKDF1bGwgPDwgUFNSX0wzX1FPU19DRFBfRU5BQkxFX0JJVCkpOwpA QCAtMzQ0LDcgKzM3MCw0NSBAQCBzdGF0aWMgaW50IGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3Ry dWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAKICAgICBwcmludGsoWEVOTE9HX0lORk8gIiVzOiBlbmFi bGVkIG9uIHNvY2tldCAldSwgY29zX21heDoldSwgY2JtX2xlbjoldVxuIiwKICAgICAgICAgICAg Y2F0X2ZlYXRfbmFtZVt0eXBlXSwgY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpLAot ICAgICAgICAgICBmZWF0LT5jb3NfbWF4LCBmZWF0LT5jYm1fbGVuKTsKKyAgICAgICAgICAgZmVh dC0+Y29zX21heCwgZmVhdC0+Y2F0X2luZm8uY2JtX2xlbik7CisKKyAgICByZXR1cm4gMDsKK30K Kworc3RhdGljIGludCBtYmFfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpy ZWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5m bywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgdHlwZSkK K3sKKyAgICAvKiBObyB2YWxpZCB2YWx1ZSBzbyBkbyBub3QgZW5hYmxlIGZlYXR1cmUuICovCisg ICAgaWYgKCAhcmVncy0+YSB8fCAhcmVncy0+ZCApCisgICAgICAgIHJldHVybiAtRU5PRU5UOwor CisgICAgaWYgKCB0eXBlICE9IEZFQVRfVFlQRV9NQkEgKQorICAgICAgICByZXR1cm4gLUVOT0VO VDsKKworICAgIGZlYXQtPmNvc19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3MtPmQgJiBDQVRf Q09TX01BWF9NQVNLKTsKKyAgICBpZiAoIGZlYXQtPmNvc19tYXggPCAxICkKKyAgICAgICAgcmV0 dXJuIC1FTk9FTlQ7CisKKyAgICBmZWF0LT5tYmFfaW5mby50aHJ0bF9tYXggPSAocmVncy0+YSAm IE1CQV9USFJUTF9NQVhfTUFTSykgKyAxOworCisgICAgaWYgKCByZWdzLT5jICYgTUJBX0xJTkVB UiApCisgICAgICAgIGZlYXQtPm1iYV9pbmZvLmxpbmVhciA9IDE7CisKKyAgICBmZWF0LT5jb3Nf cmVnX3ZhbFswXSA9IDA7CisgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9NQkFfTUFTSygwKSwgMCk7 CisKKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJlIGludG8gYXJyYXkuICovCisgICAgaW5mby0+ZmVh dHVyZXNbdHlwZV0gPSBmZWF0OworCisgICAgaWYgKCAhb3B0X2NwdV9pbmZvICkKKyAgICAgICAg cmV0dXJuIDA7CisKKyAgICBwcmludGsoWEVOTE9HX0lORk8gIk1CQTogZW5hYmxlZCBvbiBzb2Nr ZXQgJXUsIGNvc19tYXg6JXUsIgorICAgICAgICAgICAidGhydGxfbWF4OiV1LCBsaW5lYXI6JXUu XG4iLAorICAgICAgICAgICBjcHVfdG9fc29ja2V0KHNtcF9wcm9jZXNzb3JfaWQoKSksCisgICAg ICAgICAgIGZlYXQtPmNvc19tYXgsIGZlYXQtPm1iYV9pbmZvLnRocnRsX21heCwgZmVhdC0+bWJh X2luZm8ubGluZWFyKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMzU2LDcgKzQyMCw3IEBAIHN0 YXRpYyBib29sIGNhdF9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQs CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRhdGFbUFNSX0lORk9fSURYX0NPU19NQVhd ID0gZmVhdC0+Y29zX21heDsKLSAgICBkYXRhW1BTUl9JTkZPX0lEWF9DQVRfQ0JNX0xFTl0gPSBm ZWF0LT5jYm1fbGVuOworICAgIGRhdGFbUFNSX0lORk9fSURYX0NBVF9DQk1fTEVOXSA9IGZlYXQt PmNhdF9pbmZvLmNibV9sZW47CiAgICAgZGF0YVtQU1JfSU5GT19JRFhfQ0FUX0ZMQUddID0gMDsK IAogICAgIHJldHVybiB0cnVlOwpAQCAtNDIyLDYgKzQ4NiwyNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGZlYXRfcHJvcHMgbDJfY2F0X3Byb3BzID0gewogICAgIC53cml0ZV9tc3IgPSBsMl9jYXRf d3JpdGVfbXNyLAogfTsKIAorLyogTUJBIHByb3BzICovCitzdGF0aWMgYm9vbCBtYmFfZ2V0X2Zl YXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuKQorewor ICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgbWJhX3dyaXRlX21zcih1bnNpZ25l ZCBpbnQgY29zLCB1aW50MzJfdCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g cHNyX3ZhbF90eXBlIHR5cGUpCit7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9w cyBtYmFfcHJvcHMgPSB7CisgICAgLmNvc19udW0gPSAxLAorICAgIC50eXBlWzBdID0gUFNSX1ZB TF9UWVBFX01CQSwKKyAgICAuYWx0X3R5cGUgPSBQU1JfVkFMX1RZUEVfVU5LTk9XTiwKKyAgICAu Z2V0X2ZlYXRfaW5mbyA9IG1iYV9nZXRfZmVhdF9pbmZvLAorICAgIC53cml0ZV9tc3IgPSBtYmFf d3JpdGVfbXNyLAorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNoYXIg KnMsIGNoYXIgKnZhbHVlLCBjaGFyICpmZWF0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBtYXNrKQogewpAQCAtNDU3LDYgKzU0MSw3IEBAIHN0YXRp YyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfcGFyYW0oY2hhciAqcykKICAgICAgICAgcGFyc2VfcHNy X2Jvb2wocywgdmFsX3N0ciwgImNtdCIsIFBTUl9DTVQpOwogICAgICAgICBwYXJzZV9wc3JfYm9v bChzLCB2YWxfc3RyLCAiY2F0IiwgUFNSX0NBVCk7CiAgICAgICAgIHBhcnNlX3Bzcl9ib29sKHMs IHZhbF9zdHIsICJjZHAiLCBQU1JfQ0RQKTsKKyAgICAgICAgcGFyc2VfcHNyX2Jvb2wocywgdmFs X3N0ciwgIm1iYSIsIFBTUl9NQkEpOwogCiAgICAgICAgIGlmICggdmFsX3N0ciAmJiAhc3RyY21w KHMsICJybWlkX21heCIpICkKICAgICAgICAgICAgIG9wdF9ybWlkX21heCA9IHNpbXBsZV9zdHJ0 b3VsKHZhbF9zdHIsIE5VTEwsIDApOwpAQCAtODYzLDcgKzk0OCw3IEBAIHN0YXRpYyBpbnQgaW5z ZXJ0X3ZhbF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGlmICggYXJyYXlfbGVuIDwg cHJvcHMtPmNvc19udW0gKQogICAgICAgICByZXR1cm4gLUVOT1NQQzsKIAotICAgIGlmICggIXBz cl9jaGVja19jYm0oZmVhdC0+Y2JtX2xlbiwgbmV3X3ZhbCkgKQorICAgIGlmICggIXBzcl9jaGVj a19jYm0oZmVhdC0+Y2F0X2luZm8uY2JtX2xlbiwgbmV3X3ZhbCkgKQogICAgICAgICByZXR1cm4g LUVJTlZBTDsKIAogICAgIC8qCkBAIC0xMzgwLDYgKzE0NjUsMTAgQEAgc3RhdGljIGludCBwc3Jf Y3B1X3ByZXBhcmUodm9pZCkKICAgICAgICAgIChmZWF0X2wyX2NhdCA9IHh6YWxsb2Moc3RydWN0 IGZlYXRfbm9kZSkpID09IE5VTEwgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAorICAgIGlm ICggZmVhdF9tYmEgPT0gTlVMTCAmJgorICAgICAgICAgKGZlYXRfbWJhID0geHphbGxvYyhzdHJ1 Y3QgZmVhdF9ub2RlKSkgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCiAgICAg cmV0dXJuIDA7CiB9CiAKQEAgLTEzODksNiArMTQ3OCw3IEBAIHN0YXRpYyB2b2lkIHBzcl9jcHVf aW5pdCh2b2lkKQogICAgIHVuc2lnbmVkIGludCBzb2NrZXQsIGNwdSA9IHNtcF9wcm9jZXNzb3Jf aWQoKTsKICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0OwogICAgIHN0cnVjdCBjcHVpZF9sZWFm IHJlZ3M7CisgICAgdWludDMyX3QgcmVnX2I7CiAKICAgICBpZiAoICFwc3JfYWxsb2NfZmVhdF9l bmFibGVkKCkgfHwgIWJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9QUUUpICkKICAgICAgICAgZ290 byBhc3NvY19pbml0OwpAQCAtMTQwNyw3ICsxNDk3LDggQEAgc3RhdGljIHZvaWQgcHNyX2NwdV9p bml0KHZvaWQpCiAgICAgc3Bpbl9sb2NrX2luaXQoJmluZm8tPnJlZl9sb2NrKTsKIAogICAgIGNw dWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMCwgJnJlZ3MpOwotICAgIGlmICgg cmVncy5iICYgUFNSX1JFU09VUkNFX1RZUEVfTDMgKQorICAgIHJlZ19iID0gcmVncy5iOworICAg IGlmICggcmVnX2IgJiBQU1JfUkVTT1VSQ0VfVFlQRV9MMyApCiAgICAgewogICAgICAgICBjcHVp ZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDEsICZyZWdzKTsKIApAQCAtMTQzMCw4 ICsxNTIxLDcgQEAgc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0KHZvaWQpCiAgICAgICAgIH0KICAg ICB9CiAKLSAgICBjcHVpZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDAsICZyZWdz KTsKLSAgICBpZiAoIHJlZ3MuYiAmIFBTUl9SRVNPVVJDRV9UWVBFX0wyICkKKyAgICBpZiAoIHJl Z19iICYgUFNSX1JFU09VUkNFX1RZUEVfTDIgKQogICAgIHsKICAgICAgICAgY3B1aWRfY291bnRf bGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAyLCAmcmVncyk7CiAKQEAgLTE0NDMsNiArMTUzMywx OCBAQCBzdGF0aWMgdm9pZCBwc3JfY3B1X2luaXQodm9pZCkKICAgICAgICAgICAgIGZlYXRfbDJf Y2F0ID0gZmVhdDsKICAgICB9CiAKKyAgICBpZiAoIHJlZ19iICYgUFNSX1JFU09VUkNFX1RZUEVf TUJBICkKKyAgICB7CisgICAgICAgIGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NB VCwgMywgJnJlZ3MpOworCisgICAgICAgIGZlYXQgPSBmZWF0X21iYTsKKyAgICAgICAgZmVhdF9t YmEgPSBOVUxMOworICAgICAgICBpZiAoICFtYmFfaW5pdF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBp bmZvLCBGRUFUX1RZUEVfTUJBKSApCisgICAgICAgICAgICBmZWF0X3Byb3BzW0ZFQVRfVFlQRV9N QkFdID0gJm1iYV9wcm9wczsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmVhdF9tYmEgPSBm ZWF0OworICAgIH0KKwogICAgIGluZm8tPmZlYXRfaW5pdCA9IHRydWU7CiAKICBhc3NvY19pbml0 OgpAQCAtMTUwMiw3ICsxNjA0LDcgQEAgc3RhdGljIGludCBfX2luaXQgcHNyX3ByZXNtcF9pbml0 KHZvaWQpCiAgICAgaWYgKCAob3B0X3BzciAmIFBTUl9DTVQpICYmIG9wdF9ybWlkX21heCApCiAg ICAgICAgIGluaXRfcHNyX2NtdChvcHRfcm1pZF9tYXgpOwogCi0gICAgaWYgKCBvcHRfcHNyICYg KFBTUl9DQVQgfCBQU1JfQ0RQKSApCisgICAgaWYgKCBvcHRfcHNyICYgKFBTUl9DQVQgfCBQU1Jf Q0RQIHwgUFNSX01CQSkgKQogICAgICAgICBpbml0X3BzcigpOwogCiAgICAgaWYgKCBwc3JfY3B1 X3ByZXBhcmUoKSApCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5o IGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaAppbmRleCA0ZTA4ZGU2Li40MWYxNjc3 IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oCisrKyBiL3hlbi9p bmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmgKQEAgLTM0OCw2ICszNDgsNyBAQAogI2RlZmluZSBN U1JfSUEzMl9QU1JfTDNfTUFTS19DT0RFKG4pCSgweDAwMDAwYzkwICsgKG4pICogMiArIDEpCiAj ZGVmaW5lIE1TUl9JQTMyX1BTUl9MM19NQVNLX0RBVEEobikJKDB4MDAwMDBjOTAgKyAobikgKiAy KQogI2RlZmluZSBNU1JfSUEzMl9QU1JfTDJfTUFTSyhuKQkJKDB4MDAwMDBkMTAgKyAobikpCisj ZGVmaW5lIE1TUl9JQTMyX1BTUl9NQkFfTUFTSyhuKQkoMHgwMDAwMGQ1MCArIChuKSkKIAogLyog SW50ZWwgTW9kZWwgNiAqLwogI2RlZmluZSBNU1JfUDZfUEVSRkNUUihuKQkJKDB4MDAwMDAwYzEg KyAobikpCmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oIGIveGVuL2luY2x1 ZGUvYXNtLXg4Ni9wc3IuaAppbmRleCAxYjZmMjJmLi41NTFjY2YzIDEwMDY0NAotLS0gYS94ZW4v aW5jbHVkZS9hc20teDg2L3Bzci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKQEAg LTI0LDYgKzI0LDcgQEAKIC8qIFJlc291cmNlIFR5cGUgRW51bWVyYXRpb24gKi8KICNkZWZpbmUg UFNSX1JFU09VUkNFX1RZUEVfTDMgICAgICAgICAgICAweDIKICNkZWZpbmUgUFNSX1JFU09VUkNF X1RZUEVfTDIgICAgICAgICAgICAweDQKKyNkZWZpbmUgUFNSX1JFU09VUkNFX1RZUEVfTUJBICAg ICAgICAgICAweDgKIAogLyogTDMgTW9uaXRvcmluZyBGZWF0dXJlcyAqLwogI2RlZmluZSBQU1Jf Q01UX0wzX09DQ1VQQU5DWSAgICAgICAgICAgIDB4MQpAQCAtNTgsNiArNTksNyBAQCBlbnVtIHBz cl92YWxfdHlwZSB7CiAgICAgUFNSX1ZBTF9UWVBFX0wzX0NPREUsCiAgICAgUFNSX1ZBTF9UWVBF X0wzX0RBVEEsCiAgICAgUFNSX1ZBTF9UWVBFX0wyLAorICAgIFBTUl9WQUxfVFlQRV9NQkEsCiAg ICAgUFNSX1ZBTF9UWVBFX1VOS05PV04sCiB9OwogCi0tIAoxLjkuMQoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QK WGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=