From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v15 13/23] x86: refactor psr: CDP: implement CPU init flow. Date: Tue, 1 Aug 2017 16:48:44 +0800 Message-ID: <1501577334-7431-14-git-send-email-yi.y.sun@linux.intel.com> References: <1501577334-7431-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 1dcT6b-0005GR-Kg for xen-devel@lists.xenproject.org; Tue, 01 Aug 2017 09:04:45 +0000 In-Reply-To: <1501577334-7431-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 , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBDUFUgaW5pdCBmbG93IGZvciBDRFAuIFRoZSBmbG93 IGlzIGFsbW9zdApzYW1lIGFzIEwzIENBVC4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWkueS5z dW5AbGludXguaW50ZWwuY29tPgotLS0KdjE1OgogICAgLSByZWZpbmUgcHJvY2VzcyBpbiAncHNy X2NwdV9pbml0JyB0byByZW1vdmUgdGhlICdnb3RvJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKdjE0OgogICAgLSByZW1vdmUgdGhlICdOb3RlcycgaW4gY29tbWl0IG1lc3NhZ2Ug YmVjYXVzZSBhIHN0dWIgZnVuY3Rpb24gaXMKICAgICAgaW1wbGVtZW50ZWQgdG8gYXZvaWQgcG90 ZW50aWFsIGlzc3VlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1v dmUgJ2ZlYXRfbDNfY2RwJyBiZWNhdXNlIGl0IGNhbiBiZSByZXBsYWNlZCBieSAnZmVhdF9sMycu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGltcGxlbWVudCBzdHViIGNh bGxiYWNrIGZ1bmN0aW9ucyBmb3IgQ0RQIHRvIGF2b2lkIHN5c3RlbSBjcmFzaCBpZgogICAgICBu b3QgZnVsbCBDRFAgcGF0Y2hlcyBhcHBsaWVkLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSBkaXJlY3RseSBhc3NpZ24gY29ycmVjdCB2YWx1ZSB0byAnYWx0X3R5cGUnIG9m IENEUC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gZ290byBMMyBDQVQg aW5pdCBwcm9jZXNzIGlmIENEUCBpbml0IGZhaWxzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQp2MTM6CiAgICAtIGFkZCBjb21taXQgbWVzc2FnZS4KICAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCkKICAgIC0gZml4IGNvbW1lbnQgaXNzdWUuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIHNldCBDRFAgZGVmYXVsdCB2YWx1ZSBiZWZvcmUgZW5hYmxp bmcgaXQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1bm5l Y2Vzc2FyeSBjaGVjay4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gc2V0 ICdhbHRfdHlwZScgZm9yIENEUC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gY2hlY2sgJ2Nvc19tYXgnIGFuZCBzdWJzdHJhY3QgMSBiZWZvcmUgcmlnaHQgc2hpZnQgaXQg dG8gZ2V0IGNvcnJlY3QKICAgICAgdmFsdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCnYxMjoKICAgIC0gbW92ZSAndHlwZVtdJyBhc3NpZ25tZW50IGludG8gbDNfY2RwX3Byb3Bz IGRlY2xhcmF0aW9uIHRvIG1ha2UgaXQgYmUKICAgICAgJ2NvbnN0Jy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlICJMMiBDQVQiIGluZGljYXRpb24gaW4gcHJp bnRrLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBmaXggY29kaW5nIHN0 eWxlIGlzc3VlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2Ug J3ZhbCcgdHlwZSB0byB1aW50NjRfdC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gdXNlIDF1bGwuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJl c3RvcmUgbWFzaygwKSBNU1IgdG8gZGVmYXVsdCB2YWx1ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKdjExOgogICAgLSBjaGFuZ2VzIGFib3V0ICdmZWF0X3Byb3BzJy4KICAgICAg KHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVtb3ZlIE1TUiByZXN0b3JlIGFjdGlv biB3aGljaCBpcyB1bm5lY2Vzc2FyeS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkK ICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdlLgp2MTA6CiAgICAtIGZpeCBjb21tZW50LgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSB1c2Ugc3dpdGggaW4gJ2NhdF9pbml0 X2ZlYXR1cmUnIHRvIGhhbmRsZSBkaWZmZXJlbnQgZmVhdHVyZSB0eXBlcy4KICAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gY2hhbmdlcyBhYm91dCAncHJvcHMnLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZXN0b3JlIE1TUnMgdG8gZGVmYXVsdCB2 YWx1ZSB3aGVuIGNwdSBvbmxpbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIHJlbW92ZSBmZWF0X21hc2suCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY5 OgogICAgLSBtb2RpZnkgY29tbWl0IG1lc3NhZ2UgdG8gZGVzY3JpYmUgZmxvdyBjbGVhcmVyLgog ICAgLSBoYW5kbGUgY3B1IG9mZmxpbmUgYW5kIG9ubGluZSBhZ2FpbiBjYXNlIHRvIHJlYWQgTVNS cyByZWdpc3RlcnMgdmFsdWVzCiAgICAgIGJhY2sgYW5kIHNhdmUgdGhlbSBpbnRvIGNvcyBhcnJh eSB0byBtYWtlIHVzZXIgY2FuIGdldCByZWFsIGRhdGEuCiAgICAtIG1vZGlmeSBlcnJvciBoYW5k bGluZyBwcm9jZXNzIGluICdwc3JfY3B1X3ByZXBhcmUnIHRvIHJlZHVjZSByZWR1bmRhbnQKICAg ICAgY29kZXMuCiAgICAtIG1vZGlmeSAnZ2V0X2NkcF9kYXRhJyBhbmQgJ2dldF9jZHBfY29kZScg dG8gbWFrZSB0aGVtIHN0YW5kYXJkLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSBhbmQg SmFuIEJldWxpY2gpCiAgICAtIGVuY2Fwc3VsYXRlIENEUCBvcGVyYXRpb25zIGludG8gJ2NhdF9p bml0X2ZlYXR1cmUnIHRvIHJlZHVjZSByZWR1bmRhbnQKICAgICAgY29kZXMuCiAgICAgIChzdWdn ZXN0ZWQgYnkgUm9nZXIgUGF1KQogICAgLSByZXVzZSAnY2F0X2dldF9jb3NfbWF4JyBmb3IgQ0RQ LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gaGFuZGxlICdQU1JfQ0RQJyBp biBwc3JfcHJlc21wX2luaXQgdG8gbWFrZSBpbml0IHdvcmsgY2FuIGJlIGRvbmUgd2hlbgogICAg ICB0aGVyZSBpcyBvbmx5ICdwc3I9Y2RwJyBpbiBjbWRsaW5lLgogICAgLSByZW1vdmUgdW5uZWNl c3NhcnkgY29tbWVudC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92 ZSBDRFAgcmVsYXRlZCBjb2RlcyBpbiAnY3B1X2luaXRfd29yaycgaW50byAncHNyX2NwdV9pbml0 Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkIGNvZGVzIHRvIGhh bmRsZSBDRFAncyAnY29zX251bScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIGZpeCBjb2Rpbmcgc3R5bGUgaXNzdWUuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIGRvIG5vdCBmcmVlIHJlc291cmNlcyB3aGVuIGFsbG9jYXRpb24gZmFpbHMgaW4g J3Bzcl9jcHVfcHJlcGFyZScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IGNoYW5nZXMgYWJvdXQgJ3VpbnQ2NF90JyB0byAndWludDMyX3QnLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQp2NzoKICAgIC0gaW5pdGlhbGl6ZSAnbDNfY2RwJy4KICAgICAgKHN1 Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCnY2OgogICAgLSB1c2UgJ2NwdWlkX2xl YWYnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsayBhbmQgSmFuIEJl dWxpY2gpCnY1OgogICAgLSByZW1vdmUgY29kZXMgdG8gZnJlZSAnZmVhdF9sM19jZHAnIGluICdm cmVlX2ZlYXR1cmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBlbmNh cHN1bGF0ZSBjcHVpZCByZWdpc3RlcnMgaW50byAnc3RydWN0IGNwdWlkX2xlYWZfcmVncycuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHByaW50IHNvY2tldCBpbmZvIHdo ZW4gJ29wdF9jcHVfaW5mbycgaXMgdHJ1ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gcmVuYW1lICdsM19jZHBfZ2V0X21heF9jb3NfbWF4JyB0byAnbDNfY2RwX2dldF9j b3NfbWF4Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdk YXRbXScgdG8gJ2RhdGFbXScuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IG1vdmUgJ2NwdV9wcmVwYXJlX3dvcmsnIGNvbnRlbnRzIGludG8gJ3Bzcl9jcHVfcHJlcGFyZScu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY0OgogICAgLSBjcmVhdGUgdGhpcyBw YXRjaCB0byBtYWtlIGNvZGVzIGVhc2llciB0byB1bmRlcnN0YW5kLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQotLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyB8IDg5ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMSBmaWxlIGNoYW5n ZWQsIDgzIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IDZlYTJlNGUuLjA4M2UyNTMg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNyLmMK QEAgLTYyLDYgKzYyLDcgQEAKIAogZW51bSBwc3JfZmVhdF90eXBlIHsKICAgICBGRUFUX1RZUEVf TDNfQ0FULAorICAgIEZFQVRfVFlQRV9MM19DRFAsCiAgICAgRkVBVF9UWVBFX05VTSwKICAgICBG RUFUX1RZUEVfVU5LTk9XTiwKIH07CkBAIC0xNjMsNiArMTY0LDIyIEBAIHN0YXRpYyBzdHJ1Y3Qg ZmVhdF9ub2RlICpmZWF0X2wzOwogI2RlZmluZSBjYXRfZGVmYXVsdF92YWwobGVuKSAoMHhmZmZm ZmZmZiA+PiAoMzIgLSAobGVuKSkpCiAKIC8qCisgKiBnZXRfY2RwX2RhdGEgLSBnZXQgREFUQSBD T1MgcmVnaXN0ZXIgdmFsdWUgZnJvbSBpbnB1dCBDT1MgSUQuCisgKiBAZmVhdDogICAgICAgIHRo ZSBmZWF0dXJlIG5vZGUuCisgKiBAY29zOiAgICAgICAgIHRoZSBDT1MgSUQuCisgKi8KKyNkZWZp bmUgZ2V0X2NkcF9kYXRhKGZlYXQsIGNvcykgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICgo ZmVhdCktPmNvc19yZWdfdmFsWyhjb3MpICogMl0pCisKKy8qCisgKiBnZXRfY2RwX2NvZGUgLSBn ZXQgQ09ERSBDT1MgcmVnaXN0ZXIgdmFsdWUgZnJvbSBpbnB1dCBDT1MgSUQuCisgKiBAZmVhdDog ICAgICAgIHRoZSBmZWF0dXJlIG5vZGUuCisgKiBAY29zOiAgICAgICAgIHRoZSBDT1MgSUQuCisg Ki8KKyNkZWZpbmUgZ2V0X2NkcF9jb2RlKGZlYXQsIGNvcykgICAgICAgICAgICAgIFwKKyAgICAg ICAgICAgICgoZmVhdCktPmNvc19yZWdfdmFsWyhjb3MpICogMiArIDFdKQorCisvKgogICogVXNl IHRoaXMgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYW55IGFsbG9jYXRpb24gZmVhdHVyZSBoYXMgYmVl biBlbmFibGVkCiAgKiBpbiBjbWRsaW5lLgogICovCkBAIC0yNjIsNiArMjc5LDI5IEBAIHN0YXRp YyBpbnQgY2F0X2luaXRfZmVhdHVyZShjb25zdCBzdHJ1Y3QgY3B1aWRfbGVhZiAqcmVncywKIAog ICAgICAgICBicmVhazsKIAorICAgIGNhc2UgRkVBVF9UWVBFX0wzX0NEUDoKKyAgICB7CisgICAg ICAgIHVpbnQ2NF90IHZhbDsKKworICAgICAgICBpZiAoIGZlYXQtPmNvc19tYXggPCAzICkKKyAg ICAgICAgICAgIHJldHVybiAtRU5PRU5UOworCisgICAgICAgIC8qIEN1dCBoYWxmIG9mIGNvc19t YXggd2hlbiBDRFAgaXMgZW5hYmxlZC4gKi8KKyAgICAgICAgZmVhdC0+Y29zX21heCA9IChmZWF0 LT5jb3NfbWF4IC0gMSkgPj4gMTsKKworICAgICAgICAvKiBXZSByZXNlcnZlIGNvcz0wIGFzIGRl ZmF1bHQgY2JtIChhbGwgYml0cyB3aXRoaW4gY2JtX2xlbiBhcmUgMSkuICovCisgICAgICAgIGdl dF9jZHBfY29kZShmZWF0LCAwKSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsKKyAg ICAgICAgZ2V0X2NkcF9kYXRhKGZlYXQsIDApID0gY2F0X2RlZmF1bHRfdmFsKGZlYXQtPmNibV9s ZW4pOworCisgICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygwKSwgY2F0X2RlZmF1 bHRfdmFsKGZlYXQtPmNibV9sZW4pKTsKKyAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19N QVNLKDEpLCBjYXRfZGVmYXVsdF92YWwoZmVhdC0+Y2JtX2xlbikpOworICAgICAgICByZG1zcmwo TVNSX0lBMzJfUFNSX0wzX1FPU19DRkcsIHZhbCk7CisgICAgICAgIHdybXNybChNU1JfSUEzMl9Q U1JfTDNfUU9TX0NGRywKKyAgICAgICAgICAgICAgIHZhbCB8ICgxdWxsIDw8IFBTUl9MM19RT1Nf Q0RQX0VOQUJMRV9CSVQpKTsKKworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBkZWZhdWx0 OgogICAgICAgICByZXR1cm4gLUVOT0VOVDsKICAgICB9CkBAIC0yNzIsNyArMzEyLDggQEAgc3Rh dGljIGludCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAog ICAgIGlmICggIW9wdF9jcHVfaW5mbyApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcHJpbnRr KFhFTkxPR19JTkZPICJDQVQ6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1LCBjYm1f bGVuOiV1XG4iLAorICAgIHByaW50ayhYRU5MT0dfSU5GTyAiJXM6IGVuYWJsZWQgb24gc29ja2V0 ICV1LCBjb3NfbWF4OiV1LCBjYm1fbGVuOiV1XG4iLAorICAgICAgICAgICAoKHR5cGUgPT0gRkVB VF9UWVBFX0wzX0NEUCkgPyAiTDMgQ0RQIiA6ICJMMyBDQVQiKSwKICAgICAgICAgICAgY3B1X3Rv X3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpLCBmZWF0LT5jb3NfbWF4LCBmZWF0LT5jYm1fbGVu KTsKIAogICAgIHJldHVybiAwOwpAQCAtMzA1LDYgKzM0NiwyNiBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IGZlYXRfcHJvcHMgbDNfY2F0X3Byb3BzID0gewogICAgIC53cml0ZV9tc3IgPSBsM19jYXRf d3JpdGVfbXNyLAogfTsKIAorLyogTDMgQ0RQIHByb3BzICovCitzdGF0aWMgYm9vbCBsM19jZHBf Z2V0X2ZlYXRfaW5mbyhjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZGF0YVtdLCB1aW50MzJfdCBhcnJheV9sZW4p Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBsM19jZHBfd3JpdGVfbXNy KHVuc2lnbmVkIGludCBjb3MsIHVpbnQzMl90IHZhbCwgZW51bSBjYm1fdHlwZSB0eXBlKQorewor fQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgbDNfY2RwX3Byb3BzID0geworICAg IC5jb3NfbnVtID0gMiwKKyAgICAudHlwZVswXSA9IFBTUl9DQk1fVFlQRV9MM19EQVRBLAorICAg IC50eXBlWzFdID0gUFNSX0NCTV9UWVBFX0wzX0NPREUsCisgICAgLmFsdF90eXBlID0gUFNSX0NC TV9UWVBFX0wzLAorICAgIC5nZXRfZmVhdF9pbmZvID0gbDNfY2RwX2dldF9mZWF0X2luZm8sCisg ICAgLndyaXRlX21zciA9IGwzX2NkcF93cml0ZV9tc3IsCit9OworCiBzdGF0aWMgdm9pZCBfX2lu aXQgcGFyc2VfcHNyX2Jvb2woY2hhciAqcywgY2hhciAqdmFsdWUsIGNoYXIgKmZlYXR1cmUsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hc2spCiB7CkBA IC0xMjc4LDE1ICsxMzM5LDMxIEBAIHN0YXRpYyB2b2lkIHBzcl9jcHVfaW5pdCh2b2lkKQogICAg IGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMCwgJnJlZ3MpOwogICAgIGlm ICggcmVncy5iICYgUFNSX1JFU09VUkNFX1RZUEVfTDMgKQogICAgIHsKKyAgICAgICAgYm9vbCBk b19sM19jYXRfaW5pdCA9IHRydWU7CisKICAgICAgICAgY3B1aWRfY291bnRfbGVhZihQU1JfQ1BV SURfTEVWRUxfQ0FULCAxLCAmcmVncyk7CiAKICAgICAgICAgZmVhdCA9IGZlYXRfbDM7CiAgICAg ICAgIGZlYXRfbDMgPSBOVUxMOwogCi0gICAgICAgIGlmICggIWNhdF9pbml0X2ZlYXR1cmUoJnJl Z3MsIGZlYXQsIGluZm8sIEZFQVRfVFlQRV9MM19DQVQpICkKLSAgICAgICAgICAgIGZlYXRfcHJv cHNbRkVBVF9UWVBFX0wzX0NBVF0gPSAmbDNfY2F0X3Byb3BzOwotICAgICAgICBlbHNlCi0gICAg ICAgICAgICBmZWF0X2wzID0gZmVhdDsKKyAgICAgICAgaWYgKCAocmVncy5jICYgUFNSX0NBVF9D RFBfQ0FQQUJJTElUWSkgJiYgKG9wdF9wc3IgJiBQU1JfQ0RQKSApCisgICAgICAgIHsKKyAgICAg ICAgICAgIC8qIElmIENEUCBpbml0IGZhaWxzLCB0cnkgdG8gd29yayBhcyBMMyBDQVQuICovCisg ICAgICAgICAgICBpZiAoICFjYXRfaW5pdF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFU X1RZUEVfTDNfQ0RQKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZmVhdF9wcm9w c1tGRUFUX1RZUEVfTDNfQ0RQXSA9ICZsM19jZHBfcHJvcHM7CisgICAgICAgICAgICAgICAgLyog Q0RQIGluaXQgc3VjY2VlZHMsIG5vIG5lZWQgdG8gZG8gTDMgQ0FUIGluaXQuICovCisgICAgICAg ICAgICAgICAgZG9fbDNfY2F0X2luaXQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg fQorCisgICAgICAgIGlmICggZG9fbDNfY2F0X2luaXQgKQorICAgICAgICB7CisgICAgICAgICAg ICBpZiAoICFjYXRfaW5pdF9mZWF0dXJlKCZyZWdzLCBmZWF0LCBpbmZvLCBGRUFUX1RZUEVfTDNf Q0FUKSApCisgICAgICAgICAgICAgICAgZmVhdF9wcm9wc1tGRUFUX1RZUEVfTDNfQ0FUXSA9ICZs M19jYXRfcHJvcHM7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmVhdF9sMyA9 IGZlYXQ7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpbmZvLT5mZWF0X2luaXQgPSB0cnVlOwpA QCAtMTM0OCw3ICsxNDI1LDcgQEAgc3RhdGljIGludCBfX2luaXQgcHNyX3ByZXNtcF9pbml0KHZv aWQpCiAgICAgaWYgKCAob3B0X3BzciAmIFBTUl9DTVQpICYmIG9wdF9ybWlkX21heCApCiAgICAg ICAgIGluaXRfcHNyX2NtdChvcHRfcm1pZF9tYXgpOwogCi0gICAgaWYgKCBvcHRfcHNyICYgUFNS X0NBVCApCisgICAgaWYgKCBvcHRfcHNyICYgKFBTUl9DQVQgfCBQU1JfQ0RQKSApCiAgICAgICAg IGluaXRfcHNyKCk7CiAKICAgICBpZiAoIHBzcl9jcHVfcHJlcGFyZSgpICkKLS0gCjEuOS4xCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVs IG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5v cmcveGVuLWRldmVsCg==