From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [RFC v2 04/12] x86: implement data structure and CPU init flow for MBA. Date: Thu, 20 Jul 2017 16:49:05 +0800 Message-ID: <1500540553-29199-5-git-send-email-yi.y.sun@linux.intel.com> References: <1500540553-29199-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 1dY7NF-0007Lj-2H for xen-devel@lists.xenproject.org; Thu, 20 Jul 2017 09:03:57 +0000 In-Reply-To: <1500540553-29199-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 aW50ZWwuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyAgICAgICAgICAgICAgfCAxMzAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogeGVuL2luY2x1ZGUvYXNtLXg4 Ni9tc3ItaW5kZXguaCB8ICAgMSArCiB4ZW4vaW5jbHVkZS9hc20teDg2L3Bzci5oICAgICAgIHwg ICAyICsKIDMgZmlsZXMgY2hhbmdlZCwgMTA5IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpp bmRleCBkMWQ4NTRmLi5kMWVhNWE0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysr IGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0yNywxMyArMjcsMTYgQEAKICAqIC0gQ01UICAgICAg ICAgQ2FjaGUgTW9uaXRvcmluZyBUZWNobm9sb2d5CiAgKiAtIENPUy9DTE9TICAgIENsYXNzIG9m IFNlcnZpY2UuIEFsc28gbWVhbiBDT1MgcmVnaXN0ZXJzLgogICogLSBDT1NfTUFYICAgICBNYXgg bnVtYmVyIG9mIENPUyBmb3IgdGhlIGZlYXR1cmUgKG1pbnVzIDEpCisgKiAtIE1CQSAgICAgICAg IE1lbW9yeSBCYW5kd2lkdGggQWxsb2NhdGlvbgogICogLSBNU1JzICAgICAgICBNYWNoaW5lIFNw ZWNpZmljIFJlZ2lzdGVycwogICogLSBQU1IgICAgICAgICBJbnRlbCBQbGF0Zm9ybSBTaGFyZWQg UmVzb3VyY2UKKyAqIC0gVEhSVExfTUFYICAgTWF4IHRocm90dGxlIHZhbHVlIChkZWxheSB2YWx1 ZSkgb2YgTUJBCiAgKi8KIAogI2RlZmluZSBQU1JfQ01UICAgICAgICAoMTw8MCkKICNkZWZpbmUg UFNSX0NBVCAgICAgICAgKDE8PDEpCiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxPDwyKQorI2Rl ZmluZSBQU1JfTUJBICAgICAgICAoMTw8MykKIAogI2RlZmluZSBDQVRfQ0JNX0xFTl9NQVNLIDB4 MWYKICNkZWZpbmUgQ0FUX0NPU19NQVhfTUFTSyAweGZmZmYKQEAgLTYwLDEwICs2MywxNCBAQAog ICovCiAjZGVmaW5lIE1BWF9DT1NfTlVNIDIKIAorI2RlZmluZSBNQkFfTElORUFSICAgICAgICAg KDE8PDIpCisjZGVmaW5lIE1CQV9USFJUTF9NQVhfTUFTSyAweGZmZgorCiBlbnVtIHBzcl9mZWF0 X3R5cGUgewogICAgIEZFQVRfVFlQRV9MM19DQVQsCiAgICAgRkVBVF9UWVBFX0wzX0NEUCwKICAg ICBGRUFUX1RZUEVfTDJfQ0FULAorICAgIEZFQVRfVFlQRV9NQkEsCiAgICAgRkVBVF9UWVBFX05V TSwKICAgICBGRUFUX1RZUEVfVU5LTk9XTiwKIH07CkBAIC03MSw3ICs3OCw2IEBAIGVudW0gcHNy X2ZlYXRfdHlwZSB7CiAvKgogICogVGhpcyBzdHJ1Y3R1cmUgcmVwcmVzZW50cyBvbmUgZmVhdHVy ZS4KICAqIGNvc19tYXggICAgIC0gVGhlIG1heCBDT1MgcmVnaXN0ZXJzIG51bWJlciBnb3QgdGhy b3VnaCBDUFVJRC4KLSAqIGNibV9sZW4gICAgIC0gVGhlIGxlbmd0aCBvZiBDQk0gZ290IHRocm91 Z2ggQ1BVSUQuCiAgKiBjb3NfcmVnX3ZhbCAtIEFycmF5IHRvIHN0b3JlIHRoZSB2YWx1ZXMgb2Yg Q09TIHJlZ2lzdGVycy4gT25lIGVudHJ5IHN0b3JlcwogICogICAgICAgICAgICAgICB0aGUgdmFs dWUgb2Ygb25lIENPUyByZWdpc3Rlci4KICAqICAgICAgICAgICAgICAgRm9yIEwzIENBVCBhbmQg TDIgQ0FULCBvbmUgZW50cnkgY29ycmVzcG9uZHMgdG8gb25lIENPU19JRC4KQEAgLTgwLDkgKzg2 LDIxIEBAIGVudW0gcHNyX2ZlYXRfdHlwZSB7CiAgKiAgICAgICAgICAgICAgIGNvc19yZWdfdmFs WzFdIChDb2RlKS4KICAqLwogc3RydWN0IGZlYXRfbm9kZSB7Ci0gICAgLyogY29zX21heCBhbmQg Y2JtX2xlbiBhcmUgY29tbW9uIHZhbHVlcyBmb3IgYWxsIGZlYXR1cmVzIHNvIGZhci4gKi8KKyAg ICAvKiBjb3NfbWF4IGlzIGNvbW1vbiB2YWx1ZXMgZm9yIGFsbCBmZWF0dXJlcyBzbyBmYXIuICov CiAgICAgdW5zaWduZWQgaW50IGNvc19tYXg7Ci0gICAgdW5zaWduZWQgaW50IGNibV9sZW47CisK KyAgICAvKiBGZWF0dXJlIHNwZWNpZmljIEhXIGluZm8uICovCisgICAgdW5pb24geworICAgICAg ICBzdHJ1Y3QgeworICAgICAgICAgICAgdW5zaWduZWQgaW50IGNibV9sZW47CisgICAgICAgIH0g Y2F0X2luZm87CisKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVuc2lnbmVkIGludCB0 aHJ0bF9tYXg7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbGluZWFyOworICAgICAgICB9IG1i YV9pbmZvOworICAgIH07CisKICAgICB1aW50MzJfdCBjb3NfcmVnX3ZhbFtNQVhfQ09TX1JFR19D TlRdOwogfTsKIApAQCAtMTYxLDYgKzE3OSw3IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1 Y3QgcHNyX2Fzc29jLCBwc3JfYXNzb2MpOwogICovCiBzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAq ZmVhdF9sMzsKIHN0YXRpYyBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0X2wyX2NhdDsKK3N0YXRpYyBz dHJ1Y3QgZmVhdF9ub2RlICpmZWF0X21iYTsKIAogLyogQ29tbW9uIGZ1bmN0aW9ucyAqLwogI2Rl ZmluZSBjYXRfZGVmYXVsdF92YWwobGVuKSAoMHhmZmZmZmZmZiA+PiAoMzIgLSAobGVuKSkpCkBA IC0yNzQsMjIgKzI5MywyMiBAQCBzdGF0aWMgYm9vbCBwc3JfY2hlY2tfY2JtKHVuc2lnbmVkIGlu dCBjYm1fbGVuLCB1bnNpZ25lZCBsb25nIGNibSkKIH0KIAogLyogQ0FUIGNvbW1vbiBmdW5jdGlv bnMgaW1wbGVtZW50YXRpb24uICovCi1zdGF0aWMgaW50IGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qg c3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry dWN0IGZlYXRfbm9kZSAqZmVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg cHNyX3NvY2tldF9pbmZvICppbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g cHNyX2ZlYXRfdHlwZSB0eXBlKQorc3RhdGljIGludCBpbml0X2FsbG9jX2ZlYXR1cmVzKGNvbnN0 IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBlbnVtIHBzcl9mZWF0X3R5cGUgdHlwZSkKIHsKLSAgICBjb25zdCBjaGFyICogY29uc3Qg Y2F0X2ZlYXRfbmFtZVtGRUFUX1RZUEVfTlVNXSA9IHsKKyAgICBjb25zdCBjaGFyICogY29uc3Qg ZmVhdF9uYW1lW0ZFQVRfVFlQRV9OVU1dID0gewogICAgICAgICAiTDMgQ0FUIiwKICAgICAgICAg IkNEUCIsCiAgICAgICAgICJMMiBDQVQiLAorICAgICAgICAiTUJBIiwKICAgICB9OwogCiAgICAg LyogTm8gdmFsaWQgdmFsdWUgc28gZG8gbm90IGVuYWJsZSBmZWF0dXJlLiAqLwogICAgIGlmICgg IXJlZ3MtPmEgfHwgIXJlZ3MtPmQgKQogICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAotICAgIGZl YXQtPmNibV9sZW4gPSAocmVncy0+YSAmIENBVF9DQk1fTEVOX01BU0spICsgMTsKICAgICBmZWF0 LT5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCByZWdzLT5kICYgQ0FUX0NPU19NQVhfTUFTSyk7 CiAKICAgICBzd2l0Y2ggKCB0eXBlICkKQEAgLTI5OSwxMyArMzE4LDE1IEBAIHN0YXRpYyBpbnQg Y2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKICAgICAgICAg aWYgKCBmZWF0LT5jb3NfbWF4IDwgMSApCiAgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKIAor ICAgICAgICBmZWF0LT5jYXRfaW5mby5jYm1fbGVuID0gKHJlZ3MtPmEgJiBDQVRfQ0JNX0xFTl9N QVNLKSArIDE7CisKICAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNibSAo YWxsIGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLwotICAgICAgICBmZWF0LT5jb3NfcmVn X3ZhbFswXSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKyAgICAgICAgZmVhdC0+ Y29zX3JlZ192YWxbMF0gPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2F0X2luZm8uY2JtX2xlbik7 CiAKICAgICAgICAgd3Jtc3JsKCh0eXBlID09IEZFQVRfVFlQRV9MM19DQVQgPwogICAgICAgICAg ICAgICAgIE1TUl9JQTMyX1BTUl9MM19NQVNLKDApIDoKICAgICAgICAgICAgICAgICBNU1JfSUEz Ml9QU1JfTDJfTUFTSygwKSksCi0gICAgICAgICAgICAgICBjYXRfZGVmYXVsdF92YWwoZmVhdC0+ Y2JtX2xlbikpOworICAgICAgICAgICAgICAgY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdF9pbmZv LmNibV9sZW4pKTsKIAogICAgICAgICBicmVhazsKIApAQCAtMzE2LDE1ICszMzcsMTkgQEAgc3Rh dGljIGludCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAog ICAgICAgICBpZiAoIGZlYXQtPmNvc19tYXggPCAzICkKICAgICAgICAgICAgIHJldHVybiAtRU5P RU5UOwogCisgICAgICAgIGZlYXQtPmNhdF9pbmZvLmNibV9sZW4gPSAocmVncy0+YSAmIENBVF9D Qk1fTEVOX01BU0spICsgMTsKKwogICAgICAgICAvKiBDdXQgaGFsZiBvZiBjb3NfbWF4IHdoZW4g Q0RQIGlzIGVuYWJsZWQuICovCiAgICAgICAgIGZlYXQtPmNvc19tYXggPSAoZmVhdC0+Y29zX21h eCAtIDEpID4+IDE7CiAKICAgICAgICAgLyogV2UgcmVzZXJ2ZSBjb3M9MCBhcyBkZWZhdWx0IGNi bSAoYWxsIGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLwotICAgICAgICBnZXRfY2RwX2Nv ZGUoZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbik7Ci0gICAgICAgIGdl dF9jZHBfZGF0YShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKyAg ICAgICAgZ2V0X2NkcF9jb2RlKGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNhdF9p bmZvLmNibV9sZW4pOworICAgICAgICBnZXRfY2RwX2RhdGEoZmVhdCwgMCkgPSBjYXRfZGVmYXVs dF92YWwoZmVhdC0+Y2F0X2luZm8uY2JtX2xlbik7CiAKLSAgICAgICAgd3Jtc3JsKE1TUl9JQTMy X1BTUl9MM19NQVNLKDApLCBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOwotICAgICAg ICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0soMSksIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5j Ym1fbGVuKSk7CisgICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygwKSwKKyAgICAg ICAgICAgICAgIGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYXRfaW5mby5jYm1fbGVuKSk7CisgICAg ICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygxKSwKKyAgICAgICAgICAgICAgIGNhdF9k ZWZhdWx0X3ZhbChmZWF0LT5jYXRfaW5mby5jYm1fbGVuKSk7CiAgICAgICAgIHJkbXNybChNU1Jf SUEzMl9QU1JfTDNfUU9TX0NGRywgdmFsKTsKICAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9M M19RT1NfQ0ZHLAogICAgICAgICAgICAgICAgdmFsIHwgKDF1bGwgPDwgUFNSX0wzX1FPU19DRFBf RU5BQkxFX0JJVCkpOwpAQCAtMzMyLDYgKzM1NywyMCBAQCBzdGF0aWMgaW50IGNhdF9pbml0X2Zl YXR1cmUoY29uc3Qgc3RydWN0IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgICAgIGJyZWFrOwogICAg IH0KIAorICAgIGNhc2UgRkVBVF9UWVBFX01CQToKKyAgICAgICAgaWYgKCBmZWF0LT5jb3NfbWF4 IDwgMSApCisgICAgICAgICAgICByZXR1cm4gLUVOT0VOVDsKKworICAgICAgICBmZWF0LT5tYmFf aW5mby50aHJ0bF9tYXggPSAocmVncy0+YSAmIE1CQV9USFJUTF9NQVhfTUFTSykgKyAxOworCisg ICAgICAgIGlmICggcmVncy0+YyAmIE1CQV9MSU5FQVIgKQorICAgICAgICAgICAgZmVhdC0+bWJh X2luZm8ubGluZWFyID0gMTsKKworICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IDA7Cisg ICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTUJBX01BU0soMCksIDApOworCisgICAgICAgIGJy ZWFrOworCiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CiAgICAgfQpAQCAt MzQyLDkgKzM4MSwxNCBAQCBzdGF0aWMgaW50IGNhdF9pbml0X2ZlYXR1cmUoY29uc3Qgc3RydWN0 IGNwdWlkX2xlYWYgKnJlZ3MsCiAgICAgaWYgKCAhb3B0X2NwdV9pbmZvICkKICAgICAgICAgcmV0 dXJuIDA7CiAKLSAgICBwcmludGsoWEVOTE9HX0lORk8gIiVzOiBlbmFibGVkIG9uIHNvY2tldCAl dSwgY29zX21heDoldSwgY2JtX2xlbjoldVxuIiwKLSAgICAgICAgICAgY2F0X2ZlYXRfbmFtZVt0 eXBlXSwgY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpLAotICAgICAgICAgICBmZWF0 LT5jb3NfbWF4LCBmZWF0LT5jYm1fbGVuKTsKKyAgICBpZiAoIHR5cGUgPT0gRkVBVF9UWVBFX01C QSApCisgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiJXM6IGVuYWJsZWQgb24gc29ja2V0ICV1 LCBjb3NfbWF4OiV1LCB0aHJ0bF9tYXg6JXUsIGxpbmVhcjoldS5cbiIsCisgICAgICAgICAgICAg ICBmZWF0X25hbWVbdHlwZV0sIGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKSwKKyAg ICAgICAgICAgICAgIGZlYXQtPmNvc19tYXgsIGZlYXQtPm1iYV9pbmZvLnRocnRsX21heCwgZmVh dC0+bWJhX2luZm8ubGluZWFyKTsKKyAgICBlbHNlCisgICAgICAgIHByaW50ayhYRU5MT0dfSU5G TyAiJXM6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1LCBjYm1fbGVuOiV1XG4iLAor ICAgICAgICAgICAgICAgZmVhdF9uYW1lW3R5cGVdLCBjcHVfdG9fc29ja2V0KHNtcF9wcm9jZXNz b3JfaWQoKSksCisgICAgICAgICAgICAgICBmZWF0LT5jb3NfbWF4LCBmZWF0LT5jYXRfaW5mby5j Ym1fbGVuKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAtMzU2LDcgKzQwMCw3IEBAIHN0YXRpYyBi b29sIGNhdF9nZXRfZmVhdF9pbmZvKGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCiAgICAg ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGRhdGFbUFNSX0lORk9fSURYX0NPU19NQVhdID0gZmVh dC0+Y29zX21heDsKLSAgICBkYXRhW1BTUl9JTkZPX0lEWF9DQVRfQ0JNX0xFTl0gPSBmZWF0LT5j Ym1fbGVuOworICAgIGRhdGFbUFNSX0lORk9fSURYX0NBVF9DQk1fTEVOXSA9IGZlYXQtPmNhdF9p bmZvLmNibV9sZW47CiAgICAgZGF0YVtQU1JfSU5GT19JRFhfQ0FUX0ZMQUddID0gMDsKIAogICAg IHJldHVybiB0cnVlOwpAQCAtNDIyLDYgKzQ2NiwyNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZl YXRfcHJvcHMgbDJfY2F0X3Byb3BzID0gewogICAgIC53cml0ZV9tc3IgPSBsMl9jYXRfd3JpdGVf bXNyLAogfTsKIAorLyogTUJBIHByb3BzICovCitzdGF0aWMgYm9vbCBtYmFfZ2V0X2ZlYXRfaW5m byhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludDMyX3QgZGF0YVtdLCB1bnNpZ25lZCBpbnQgYXJyYXlfbGVuKQoreworICAgIHJl dHVybiBmYWxzZTsKK30KKworc3RhdGljIHZvaWQgbWJhX3dyaXRlX21zcih1bnNpZ25lZCBpbnQg Y29zLCB1aW50MzJfdCB2YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcHNyX3Zh bF90eXBlIHR5cGUpCit7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9wcm9wcyBtYmFf cHJvcHMgPSB7CisgICAgLmNvc19udW0gPSAxLAorICAgIC50eXBlWzBdID0gUFNSX1ZBTF9UWVBF X01CQSwKKyAgICAuYWx0X3R5cGUgPSBQU1JfVkFMX1RZUEVfVU5LTk9XTiwKKyAgICAuZ2V0X2Zl YXRfaW5mbyA9IG1iYV9nZXRfZmVhdF9pbmZvLAorICAgIC53cml0ZV9tc3IgPSBtYmFfd3JpdGVf bXNyLAorfTsKKwogc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNoYXIgKnMsIGNo YXIgKnZhbHVlLCBjaGFyICpmZWF0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBtYXNrKQogewpAQCAtNDU3LDYgKzUyMSw3IEBAIHN0YXRpYyB2b2lk IF9faW5pdCBwYXJzZV9wc3JfcGFyYW0oY2hhciAqcykKICAgICAgICAgcGFyc2VfcHNyX2Jvb2wo cywgdmFsX3N0ciwgImNtdCIsIFBTUl9DTVQpOwogICAgICAgICBwYXJzZV9wc3JfYm9vbChzLCB2 YWxfc3RyLCAiY2F0IiwgUFNSX0NBVCk7CiAgICAgICAgIHBhcnNlX3Bzcl9ib29sKHMsIHZhbF9z dHIsICJjZHAiLCBQU1JfQ0RQKTsKKyAgICAgICAgcGFyc2VfcHNyX2Jvb2wocywgdmFsX3N0ciwg Im1iYSIsIFBTUl9NQkEpOwogCiAgICAgICAgIGlmICggdmFsX3N0ciAmJiAhc3RyY21wKHMsICJy bWlkX21heCIpICkKICAgICAgICAgICAgIG9wdF9ybWlkX21heCA9IHNpbXBsZV9zdHJ0b3VsKHZh bF9zdHIsIE5VTEwsIDApOwpAQCAtODYzLDcgKzkyOCw3IEBAIHN0YXRpYyBpbnQgaW5zZXJ0X3Zh bF9pbnRvX2FycmF5KHVpbnQzMl90IHZhbFtdLAogICAgIGlmICggYXJyYXlfbGVuIDwgcHJvcHMt PmNvc19udW0gKQogICAgICAgICByZXR1cm4gLUVOT1NQQzsKIAotICAgIGlmICggIXBzcl9jaGVj a19jYm0oZmVhdC0+Y2JtX2xlbiwgbmV3X3ZhbCkgKQorICAgIGlmICggIXBzcl9jaGVja19jYm0o ZmVhdC0+Y2F0X2luZm8uY2JtX2xlbiwgbmV3X3ZhbCkgKQogICAgICAgICByZXR1cm4gLUVJTlZB TDsKIAogICAgIC8qCkBAIC0xMzgwLDYgKzE0NDUsMTAgQEAgc3RhdGljIGludCBwc3JfY3B1X3By ZXBhcmUodm9pZCkKICAgICAgICAgIChmZWF0X2wyX2NhdCA9IHh6YWxsb2Moc3RydWN0IGZlYXRf bm9kZSkpID09IE5VTEwgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAorICAgIGlmICggZmVh dF9tYmEgPT0gTlVMTCAmJgorICAgICAgICAgKGZlYXRfbWJhID0geHphbGxvYyhzdHJ1Y3QgZmVh dF9ub2RlKSkgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCiAgICAgcmV0dXJu IDA7CiB9CiAKQEAgLTE0MTYsNyArMTQ4NSw3IEBAIHN0YXRpYyB2b2lkIHBzcl9jcHVfaW5pdCh2 b2lkKQogCiAgICAgICAgIGlmICggKHJlZ3MuYyAmIFBTUl9DQVRfQ0RQX0NBUEFCSUxJVFkpICYm IChvcHRfcHNyICYgUFNSX0NEUCkgKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoICFjYXRf aW5pdF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDNfQ0RQKSApCisgICAg ICAgICAgICBpZiAoICFpbml0X2FsbG9jX2ZlYXR1cmVzKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFU X1RZUEVfTDNfQ0RQKSApCiAgICAgICAgICAgICAgICAgZmVhdF9wcm9wc1tGRUFUX1RZUEVfTDNf Q0RQXSA9ICZsM19jZHBfcHJvcHM7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg LyogSWYgQ0RQIGluaXQgZmFpbHMsIHRyeSB0byB3b3JrIGFzIEwzIENBVC4gKi8KQEAgLTE0MjUs NyArMTQ5NCw3IEBAIHN0YXRpYyB2b2lkIHBzcl9jcHVfaW5pdCh2b2lkKQogICAgICAgICBlbHNl CiAgICAgICAgIHsKICBsM19jYXRfaW5pdDoKLSAgICAgICAgICAgIGlmICggIWNhdF9pbml0X2Zl YXR1cmUoJnJlZ3MsIGZlYXQsIGluZm8sIEZFQVRfVFlQRV9MM19DQVQpICkKKyAgICAgICAgICAg IGlmICggIWluaXRfYWxsb2NfZmVhdHVyZXMoJnJlZ3MsIGZlYXQsIGluZm8sIEZFQVRfVFlQRV9M M19DQVQpICkKICAgICAgICAgICAgICAgICBmZWF0X3Byb3BzW0ZFQVRfVFlQRV9MM19DQVRdID0g JmwzX2NhdF9wcm9wczsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBmZWF0X2wz ID0gZmVhdDsKQEAgLTE0MzksMTIgKzE1MDgsMjUgQEAgc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0 KHZvaWQpCiAKICAgICAgICAgZmVhdCA9IGZlYXRfbDJfY2F0OwogICAgICAgICBmZWF0X2wyX2Nh dCA9IE5VTEw7Ci0gICAgICAgIGlmICggIWNhdF9pbml0X2ZlYXR1cmUoJnJlZ3MsIGZlYXQsIGlu Zm8sIEZFQVRfVFlQRV9MMl9DQVQpICkKKyAgICAgICAgaWYgKCAhaW5pdF9hbGxvY19mZWF0dXJl cygmcmVncywgZmVhdCwgaW5mbywgRkVBVF9UWVBFX0wyX0NBVCkgKQogICAgICAgICAgICAgZmVh dF9wcm9wc1tGRUFUX1RZUEVfTDJfQ0FUXSA9ICZsMl9jYXRfcHJvcHM7CiAgICAgICAgIGVsc2UK ICAgICAgICAgICAgIGZlYXRfbDJfY2F0ID0gZmVhdDsKICAgICB9CiAKKyAgICBjcHVpZF9jb3Vu dF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDAsICZyZWdzKTsKKyAgICBpZiAoIHJlZ3MuYiAm IFBTUl9SRVNPVVJDRV9UWVBFX01CQSApCisgICAgeworICAgICAgICBjcHVpZF9jb3VudF9sZWFm KFBTUl9DUFVJRF9MRVZFTF9DQVQsIDMsICZyZWdzKTsKKworICAgICAgICBmZWF0ID0gZmVhdF9t YmE7CisgICAgICAgIGZlYXRfbWJhID0gTlVMTDsKKyAgICAgICAgaWYgKCAhaW5pdF9hbGxvY19m ZWF0dXJlcygmcmVncywgZmVhdCwgaW5mbywgRkVBVF9UWVBFX01CQSkgKQorICAgICAgICAgICAg ZmVhdF9wcm9wc1tGRUFUX1RZUEVfTUJBXSA9ICZtYmFfcHJvcHM7CisgICAgICAgIGVsc2UKKyAg ICAgICAgICAgIGZlYXRfbWJhID0gZmVhdDsKKyAgICB9CisKICAgICBpbmZvLT5mZWF0X2luaXQg PSB0cnVlOwogCiAgYXNzb2NfaW5pdDoKQEAgLTE1MDQsNyArMTU4Niw3IEBAIHN0YXRpYyBpbnQg X19pbml0IHBzcl9wcmVzbXBfaW5pdCh2b2lkKQogICAgIGlmICggKG9wdF9wc3IgJiBQU1JfQ01U KSAmJiBvcHRfcm1pZF9tYXggKQogICAgICAgICBpbml0X3Bzcl9jbXQob3B0X3JtaWRfbWF4KTsK IAotICAgIGlmICggb3B0X3BzciAmIChQU1JfQ0FUIHwgUFNSX0NEUCkgKQorICAgIGlmICggb3B0 X3BzciAmIChQU1JfQ0FUIHwgUFNSX0NEUCB8IFBTUl9NQkEpICkKICAgICAgICAgaW5pdF9wc3Io KTsKIAogICAgIGlmICggcHNyX2NwdV9wcmVwYXJlKCkgKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1 ZGUvYXNtLXg4Ni9tc3ItaW5kZXguaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvbXNyLWluZGV4LmgK aW5kZXggNGUwOGRlNi4uNDFmMTY3NyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9t c3ItaW5kZXguaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L21zci1pbmRleC5oCkBAIC0zNDgs NiArMzQ4LDcgQEAKICNkZWZpbmUgTVNSX0lBMzJfUFNSX0wzX01BU0tfQ09ERShuKQkoMHgwMDAw MGM5MCArIChuKSAqIDIgKyAxKQogI2RlZmluZSBNU1JfSUEzMl9QU1JfTDNfTUFTS19EQVRBKG4p CSgweDAwMDAwYzkwICsgKG4pICogMikKICNkZWZpbmUgTVNSX0lBMzJfUFNSX0wyX01BU0sobikJ CSgweDAwMDAwZDEwICsgKG4pKQorI2RlZmluZSBNU1JfSUEzMl9QU1JfTUJBX01BU0sobikJKDB4 MDAwMDBkNTAgKyAobikpCiAKIC8qIEludGVsIE1vZGVsIDYgKi8KICNkZWZpbmUgTVNSX1A2X1BF UkZDVFIobikJCSgweDAwMDAwMGMxICsgKG4pKQpkaWZmIC0tZ2l0IGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9wc3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHNyLmgKaW5kZXggMWI2ZjIyZi4uNTUx Y2NmMyAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9wc3IuaAorKysgYi94ZW4vaW5j bHVkZS9hc20teDg2L3Bzci5oCkBAIC0yNCw2ICsyNCw3IEBACiAvKiBSZXNvdXJjZSBUeXBlIEVu dW1lcmF0aW9uICovCiAjZGVmaW5lIFBTUl9SRVNPVVJDRV9UWVBFX0wzICAgICAgICAgICAgMHgy CiAjZGVmaW5lIFBTUl9SRVNPVVJDRV9UWVBFX0wyICAgICAgICAgICAgMHg0CisjZGVmaW5lIFBT Ul9SRVNPVVJDRV9UWVBFX01CQSAgICAgICAgICAgMHg4CiAKIC8qIEwzIE1vbml0b3JpbmcgRmVh dHVyZXMgKi8KICNkZWZpbmUgUFNSX0NNVF9MM19PQ0NVUEFOQ1kgICAgICAgICAgICAweDEKQEAg LTU4LDYgKzU5LDcgQEAgZW51bSBwc3JfdmFsX3R5cGUgewogICAgIFBTUl9WQUxfVFlQRV9MM19D T0RFLAogICAgIFBTUl9WQUxfVFlQRV9MM19EQVRBLAogICAgIFBTUl9WQUxfVFlQRV9MMiwKKyAg ICBQU1JfVkFMX1RZUEVfTUJBLAogICAgIFBTUl9WQUxfVFlQRV9VTktOT1dOLAogfTsKIAotLSAK MS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlz dHMueGVuLm9yZy94ZW4tZGV2ZWwK