From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v9 14/25] x86: refactor psr: CDP: implement CPU init and free flow. Date: Thu, 16 Mar 2017 19:08:04 +0800 Message-ID: <1489662495-5375-15-git-send-email-yi.y.sun@linux.intel.com> References: <1489662495-5375-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 1coTMH-0004aT-Bk for xen-devel@lists.xenproject.org; Thu, 16 Mar 2017 11:14:17 +0000 In-Reply-To: <1489662495-5375-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, he.chen@linux.intel.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 VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBDUFUgaW5pdCBhbmQgZnJlZSBmbG93IGZvciBDRFAg aW5jbHVkaW5nIEwzIENEUAppbml0aWFsaXphdGlvbiBjYWxsYmFjayBmdW5jdGlvbi4gVGhlIGZs b3cgaXMgYWxtb3N0IHNhbWUgYXMgTDMgQ0FULgoKU2lnbmVkLW9mZi1ieTogWWkgU3VuIDx5aS55 LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQp2OToKICAgIC0gbW9kaWZ5IGNvbW1pdCBtZXNzYWdl IHRvIGRlc2NyaWJlIGZsb3cgY2xlYXJlci4KICAgIC0gaGFuZGxlIGNwdSBvZmZsaW5lIGFuZCBv bmxpbmUgYWdhaW4gY2FzZSB0byByZWFkIE1TUnMgcmVnaXN0ZXJzIHZhbHVlcwogICAgICBiYWNr IGFuZCBzYXZlIHRoZW0gaW50byBjb3MgYXJyYXkgdG8gbWFrZSB1c2VyIGNhbiBnZXQgcmVhbCBk YXRhLgogICAgLSBtb2RpZnkgZXJyb3IgaGFuZGxpbmcgcHJvY2VzcyBpbiAncHNyX2NwdV9wcmVw YXJlJyB0byByZWR1Y2UgcmVkdW5kYW50CiAgICAgIGNvZGVzLgogICAgLSBtb2RpZnkgJ2dldF9j ZHBfZGF0YScgYW5kICdnZXRfY2RwX2NvZGUnIHRvIG1ha2UgdGhlbSBzdGFuZGFyZC4KICAgICAg KHN1Z2dlc3RlZCBieSBSb2dlciBQYXUgYW5kIEphbiBCZXVsaWNoKQogICAgLSBlbmNhcHN1bGF0 ZSBDRFAgb3BlcmF0aW9ucyBpbnRvICdjYXRfaW5pdF9mZWF0dXJlJyB0byByZWR1Y2UgcmVkdW5k YW50CiAgICAgIGNvZGVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gcmV1 c2UgJ2NhdF9nZXRfY29zX21heCcgZm9yIENEUC4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQ YXUpCiAgICAtIGhhbmRsZSAnUFNSX0NEUCcgaW4gcHNyX3ByZXNtcF9pbml0IHRvIG1ha2UgaW5p dCB3b3JrIGNhbiBiZSBkb25lIHdoZW4KICAgICAgdGhlcmUgaXMgb25seSAncHNyPWNkcCcgaW4g Y21kbGluZS4KICAgIC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbW1lbnQuCiAgICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUgQ0RQIHJlbGF0ZWQgY29kZXMgaW4gJ2NwdV9p bml0X3dvcmsnIGludG8gJ3Bzcl9jcHVfaW5pdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIGFkZCBjb2RlcyB0byBoYW5kbGUgQ0RQJ3MgJ2Nvc19udW0nLgogICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBmaXggY29kaW5nIHN0eWxlIGlzc3VlLgog ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBkbyBub3QgZnJlZSByZXNvdXJj ZXMgd2hlbiBhbGxvY2F0aW9uIGZhaWxzIGluICdwc3JfY3B1X3ByZXBhcmUnLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2VzIGFib3V0ICd1aW50NjRfdCcgdG8g J3VpbnQzMl90Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjc6CiAgICAtIGlu aXRpYWxpemUgJ2wzX2NkcCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBX aWxrKQp2NjoKICAgIC0gdXNlICdjcHVpZF9sZWFmJy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25y YWQgUnplc3p1dGVrIFdpbGsgYW5kIEphbiBCZXVsaWNoKQp2NToKICAgIC0gcmVtb3ZlIGNvZGVz IHRvIGZyZWUgJ2ZlYXRfbDNfY2RwJyBpbiAnZnJlZV9mZWF0dXJlJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gZW5jYXBzdWxhdGUgY3B1aWQgcmVnaXN0ZXJzIGludG8g J3N0cnVjdCBjcHVpZF9sZWFmX3JlZ3MnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KQogICAgLSBwcmludCBzb2NrZXQgaW5mbyB3aGVuICdvcHRfY3B1X2luZm8nIGlzIHRydWUuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbmFtZSAnbDNfY2RwX2dldF9t YXhfY29zX21heCcgdG8gJ2wzX2NkcF9nZXRfY29zX21heCcuCiAgICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpCiAgICAtIHJlbmFtZSAnZGF0W10nIHRvICdkYXRhW10nLgogICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3ZlICdjcHVfcHJlcGFyZV93b3JrJyBjb250 ZW50cyBpbnRvICdwc3JfY3B1X3ByZXBhcmUnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQp2NDoKICAgIC0gY3JlYXRlIHRoaXMgcGF0Y2ggdG8gbWFrZSBjb2RlcyBlYXNpZXIgdG8g dW5kZXJzdGFuZC4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKLS0tCiB4ZW4vYXJj aC94ODYvcHNyLmMgfCAxMTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCAxOCBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4vYXJjaC94ODYv cHNyLmMKaW5kZXggMmJjN2YzYy4uZTJhMjY0MyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L3Bz ci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtNTUsNiArNTUsOSBAQAogLyogQ0FUIGZl YXR1cmVzIHVzZSAxIENPUyByZWdpc3RlciBpbiBvbmUgYWNjZXNzLiAqLwogI2RlZmluZSBDQVRf Q09TX05VTSAgICAgIDEKIAorLyogQ0RQIHVzZXMgMiBDT1MgcmVnaXN0ZXJzIGluIG9uZSBhY2Nl c3MuICovCisjZGVmaW5lIENEUF9DT1NfTlVNICAgICAgMgorCiBlbnVtIHBzcl9mZWF0X3R5cGUg ewogICAgIFBTUl9TT0NLRVRfTDNfQ0FUID0gMCwKICAgICBQU1JfU09DS0VUX0wzX0NEUCwKQEAg LTIwOSwxMiArMjEyLDI5IEBAIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgcHNyX2Fzc29j LCBwc3JfYXNzb2MpOwogICogYXJyYXkgY3JlYXRpb24uIEl0IGlzIHVzZWQgdG8gdHJhbnNpZW50 bHkgc3RvcmUgYSBzcGFyZSBub2RlLgogICovCiBzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVh dF9sM19jYXQ7CitzdGF0aWMgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF9sM19jZHA7CiAKIC8qIENv bW1vbiBmdW5jdGlvbnMgKi8KICNkZWZpbmUgY2F0X2RlZmF1bHRfdmFsKGxlbikgICAgICAgICAg ICAgICAgIFwKICAgICAgICAgICAgICggKHVpbnQzMl90KSgoMXVsIDw8IGxlbikgLSAxKSApCiAK IC8qCisgKiBnZXRfZGF0YSAtIGdldCBEQVRBIENPUyByZWdpc3RlciB2YWx1ZSBmcm9tIGlucHV0 IENPUyBJRC4KKyAqIEBmZWF0OiAgICAgICAgdGhlIGZlYXR1cmUgbm9kZS4KKyAqIEBjb3M6ICAg ICAgICAgdGhlIENPUyBJRC4KKyAqLworI2RlZmluZSBnZXRfY2RwX2RhdGEoZmVhdCwgY29zKSAg ICAgICAgICAgICAgXAorICAgICAgICAgICAgKCAoZmVhdCktPmNvc19yZWdfdmFsWyhjb3MpICog Ml0gKQorCisvKgorICogZ2V0X2NkcF9jb2RlIC0gZ2V0IENPREUgQ09TIHJlZ2lzdGVyIHZhbHVl IGZyb20gaW5wdXQgQ09TIElELgorICogQGZlYXQ6ICAgICAgICB0aGUgZmVhdHVyZSBub2RlLgor ICogQGNvczogICAgICAgICB0aGUgQ09TIElELgorICovCisjZGVmaW5lIGdldF9jZHBfY29kZShm ZWF0LCBjb3MpICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoIChmZWF0KS0+Y29zX3JlZ192 YWxbKGNvcykgKiAyICsgMV0gKQorCisvKgogICogVXNlIHRoaXMgZnVuY3Rpb24gdG8gY2hlY2sg aWYgYW55IGFsbG9jYXRpb24gZmVhdHVyZSBoYXMgYmVlbiBlbmFibGVkCiAgKiBpbiBjbWRsaW5l LgogICovCkBAIC0zMDMsMjAgKzMyMyw1NiBAQCBzdGF0aWMgdm9pZCBjYXRfaW5pdF9mZWF0dXJl KHN0cnVjdCBjcHVpZF9sZWFmIHJlZ3MsCiAgICAgY2F0LmNibV9sZW4gPSAocmVncy5hICYgQ0FU X0NCTV9MRU5fTUFTSykgKyAxOwogICAgIGNhdC5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCBy ZWdzLmQgJiBDQVRfQ09TX01BWF9NQVNLKTsKIAotICAgIC8qIGNvcz0wIGlzIHJlc2VydmVkIGFz IGRlZmF1bHQgY2JtKGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8KLSAgICBmZWF0 LT5jb3NfcmVnX3ZhbFswXSA9IGNhdF9kZWZhdWx0X3ZhbChjYXQuY2JtX2xlbik7Ci0gICAgLyoK LSAgICAgKiBUbyBoYW5kbGUgY3B1IG9mZmxpbmUgYW5kIHRoZW4gb25saW5lIGNhc2UsIHdlIG5l ZWQgcmVhZCBNU1JzIGJhY2sgdG8KLSAgICAgKiBzYXZlIHZhbHVlcyBpbnRvIGNvc19yZWdfdmFs IGFycmF5LgotICAgICAqLwotICAgIGZvciAoIGkgPSAxOyBpIDw9IGNhdC5jb3NfbWF4OyBpKysg KQorICAgIGlmICggdHlwZSA9PSBQU1JfU09DS0VUX0wzX0NEUCApCisgICAgeworICAgICAgICB1 aW50NjRfdCB2YWxfY29kZTsKKworICAgICAgICAvKiBDdXQgaGFsZiBvZiBjb3NfbWF4IHdoZW4g Q0RQIGlzIGVuYWJsZWQuICovCisgICAgICAgIGNhdC5jb3NfbWF4ID4+PSAxOworCisgICAgICAg IC8qIFdlIG9ubHkgd3JpdGUgbWFzazEgc2luY2UgbWFzazAgaXMgYWx3YXlzIGFsbCBvbmVzIGJ5 IGRlZmF1bHQuICovCisgICAgICAgIHdybXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSygxKSwgY2F0 X2RlZmF1bHRfdmFsKGNhdC5jYm1fbGVuKSk7CisgICAgICAgIHJkbXNybChNU1JfSUEzMl9QU1Jf TDNfUU9TX0NGRywgdmFsKTsKKyAgICAgICAgd3Jtc3JsKE1TUl9JQTMyX1BTUl9MM19RT1NfQ0ZH LCB2YWwgfCAoMSA8PCBQU1JfTDNfUU9TX0NEUF9FTkFCTEVfQklUKSk7CisKKyAgICAgICAgLyog Y29zPTAgaXMgcmVzZXJ2ZWQgYXMgZGVmYXVsdCBjYm0oYWxsIGJpdHMgd2l0aGluIGNibV9sZW4g YXJlIDEpLiAqLworICAgICAgICBnZXRfY2RwX2NvZGUoZmVhdCwgMCkgPSBjYXRfZGVmYXVsdF92 YWwoY2F0LmNibV9sZW4pOworICAgICAgICBnZXRfY2RwX2RhdGEoZmVhdCwgMCkgPSBjYXRfZGVm YXVsdF92YWwoY2F0LmNibV9sZW4pOworCisgICAgICAgIGZlYXQtPmNvc19udW0gPSBDRFBfQ09T X05VTTsKKworICAgICAgICAvKgorICAgICAgICAgKiBUbyBoYW5kbGUgY3B1IG9mZmxpbmUgYW5k IHRoZW4gb25saW5lIGNhc2UsIHdlIG5lZWQgcmVhZCBNU1JzIGJhY2sgdG8KKyAgICAgICAgICog c2F2ZSB2YWx1ZXMgaW50byBjb3NfcmVnX3ZhbCBhcnJheS4gQWxsIGNwdXMgTVNScyB2YWx1ZXMg b24gc2FtZSBzb2NrZXQKKyAgICAgICAgICogYXJlIHNhbWUuCisgICAgICAgICAqLworICAgICAg ICBmb3IgKCBpID0gMTsgaSA8PSBjYXQuY29zX21heDsgaSsrICkKKyAgICAgICAgeworICAgICAg ICAgICAgcmRtc3JsKE1TUl9JQTMyX1BTUl9MM19NQVNLX0RBVEEoaSksIHZhbCk7CisgICAgICAg ICAgICByZG1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0tfQ09ERShpKSwgdmFsX2NvZGUpOworICAg ICAgICAgICAgZ2V0X2NkcF9jb2RlKGZlYXQsIGkpID0gKHVpbnQzMl90KXZhbF9jb2RlOworICAg ICAgICAgICAgZ2V0X2NkcF9kYXRhKGZlYXQsIGkpID0gKHVpbnQzMl90KXZhbDsKKyAgICAgICAg fQorICAgIH0KKyAgICBlbHNlCiAgICAgewotICAgICAgICByZG1zcmwoTVNSX0lBMzJfUFNSX0wz X01BU0soaSksIHZhbCk7Ci0gICAgICAgIGZlYXQtPmNvc19yZWdfdmFsW2ldID0gKHVpbnQzMl90 KXZhbDsKKyAgICAgICAgLyogY29zPTAgaXMgcmVzZXJ2ZWQgYXMgZGVmYXVsdCBjYm0oYWxsIGJp dHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLworICAgICAgICBmZWF0LT5jb3NfcmVnX3ZhbFsw XSA9IGNhdF9kZWZhdWx0X3ZhbChjYXQuY2JtX2xlbik7CisKKyAgICAgICAgZmVhdC0+Y29zX251 bSA9IENBVF9DT1NfTlVNOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRvIGhhbmRsZSBjcHUg b2ZmbGluZSBhbmQgdGhlbiBvbmxpbmUgY2FzZSwgd2UgbmVlZCByZWFkIE1TUnMgYmFjayB0bwor ICAgICAgICAgKiBzYXZlIHZhbHVlcyBpbnRvIGNvc19yZWdfdmFsIGFycmF5LgorICAgICAgICAg Ki8KKyAgICAgICAgZm9yICggaSA9IDE7IGkgPD0gY2F0LmNvc19tYXg7IGkrKyApCisgICAgICAg IHsKKyAgICAgICAgICAgIHJkbXNybChNU1JfSUEzMl9QU1JfTDNfTUFTSyhpKSwgdmFsKTsKKyAg ICAgICAgICAgIGZlYXQtPmNvc19yZWdfdmFsW2ldID0gKHVpbnQzMl90KXZhbDsKKyAgICAgICAg fQogICAgIH0KIAogICAgIGZlYXQtPmluZm8uY2F0X2luZm8gPSBjYXQ7Ci0gICAgZmVhdC0+Y29z X251bSA9IENBVF9DT1NfTlVNOwogCiAgICAgLyogQWRkIHRoaXMgZmVhdHVyZSBpbnRvIGFycmF5 LiAqLwogICAgIGluZm8tPmZlYXR1cmVzW3R5cGVdID0gZmVhdDsKQEAgLTMyOCw4ICszODQsOSBA QCBzdGF0aWMgdm9pZCBjYXRfaW5pdF9mZWF0dXJlKHN0cnVjdCBjcHVpZF9sZWFmIHJlZ3MsCiAg ICAgaWYgKCAhb3B0X2NwdV9pbmZvICkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcHJpbnRrKFhF TkxPR19JTkZPICIlcyBDQVQ6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3NfbWF4OiV1LCBjYm1f bGVuOiV1XG4iLAotICAgICAgICAgICAoKHR5cGUgPT0gUFNSX1NPQ0tFVF9MM19DQVQpID8gIkwz IiA6ICJMMiIpLAorICAgIHByaW50ayhYRU5MT0dfSU5GTyAiJXM6IGVuYWJsZWQgb24gc29ja2V0 ICV1LCBjb3NfbWF4OiV1LCBjYm1fbGVuOiV1XG4iLAorICAgICAgICAgICAoKHR5cGUgPT0gUFNS X1NPQ0tFVF9MM19DRFApID8gIkNEUCIgOgorICAgICAgICAgICAgKCh0eXBlID09IFBTUl9TT0NL RVRfTDNfQ0FUKSA/ICJMMyBDQVQiOiAiTDIgQ0FUIikpLAogICAgICAgICAgICBzb2NrZXQsIGZl YXQtPmluZm8uY2F0X2luZm8uY29zX21heCwKICAgICAgICAgICAgZmVhdC0+aW5mby5jYXRfaW5m by5jYm1fbGVuKTsKIApAQCAtNDQ4LDYgKzUwNSwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZl YXRfb3BzIGwzX2NhdF9vcHMgPSB7CiAgICAgLndyaXRlX21zciA9IGwzX2NhdF93cml0ZV9tc3Is CiB9OwogCisvKiBMMyBDRFAgb3BzICovCitzdHJ1Y3QgZmVhdF9vcHMgbDNfY2RwX29wcyA9IHsK KyAgICAuZ2V0X2Nvc19tYXggPSBjYXRfZ2V0X2Nvc19tYXgsCit9OworCiBzdGF0aWMgdm9pZCBf X2luaXQgcGFyc2VfcHNyX2Jvb2woY2hhciAqcywgY2hhciAqdmFsdWUsIGNoYXIgKmZlYXR1cmUs CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hc2spCiB7 CkBAIC0xMjQ0LDYgKzEzMDYsMTAgQEAgc3RhdGljIGludCBwc3JfY3B1X3ByZXBhcmUodm9pZCkK ICAgICAgICAgIChmZWF0X2wzX2NhdCA9IHh6YWxsb2Moc3RydWN0IGZlYXRfbm9kZSkpID09IE5V TEwgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAorICAgIGlmICggZmVhdF9sM19jZHAgPT0g TlVMTCAmJgorICAgICAgICAgKGZlYXRfbDNfY2RwID0geHphbGxvYyhzdHJ1Y3QgZmVhdF9ub2Rl KSkgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOworCiAgICAgcmV0dXJuIDA7CiB9 CiAKQEAgLTEyNzksMTEgKzEzNDUsMjEgQEAgc3RhdGljIHZvaWQgcHNyX2NwdV9pbml0KHZvaWQp CiAgICAgewogICAgICAgICBjcHVpZF9jb3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDEs ICZyZWdzKTsKIAotICAgICAgICBmZWF0ID0gZmVhdF9sM19jYXQ7Ci0gICAgICAgIGZlYXRfbDNf Y2F0ID0gTlVMTDsKLSAgICAgICAgZmVhdC0+b3BzID0gbDNfY2F0X29wczsKLQotICAgICAgICBj YXRfaW5pdF9mZWF0dXJlKHJlZ3MsIGZlYXQsIGluZm8sIFBTUl9TT0NLRVRfTDNfQ0FUKTsKKyAg ICAgICAgaWYgKCAocmVncy5jICYgUFNSX0NBVF9DRFBfQ0FQQUJJTElUWSkgJiYgKG9wdF9wc3Ig JiBQU1JfQ0RQKSAmJgorICAgICAgICAgICAgICF0ZXN0X2JpdChQU1JfU09DS0VUX0wzX0NEUCwg JmluZm8tPmZlYXRfbWFzaykgKQorICAgICAgICB7CisgICAgICAgICAgICBmZWF0ID0gZmVhdF9s M19jZHA7CisgICAgICAgICAgICBmZWF0X2wzX2NkcCA9IE5VTEw7CisgICAgICAgICAgICBmZWF0 LT5vcHMgPSBsM19jZHBfb3BzOworICAgICAgICAgICAgY2F0X2luaXRfZmVhdHVyZShyZWdzLCBm ZWF0LCBpbmZvLCBQU1JfU09DS0VUX0wzX0NEUCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQor ICAgICAgICB7CisgICAgICAgICAgICBmZWF0ID0gZmVhdF9sM19jYXQ7CisgICAgICAgICAgICBm ZWF0X2wzX2NhdCA9IE5VTEw7CisgICAgICAgICAgICBmZWF0LT5vcHMgPSBsM19jYXRfb3BzOwor ICAgICAgICAgICAgY2F0X2luaXRfZmVhdHVyZShyZWdzLCBmZWF0LCBpbmZvLCBQU1JfU09DS0VU X0wzX0NBVCk7CisgICAgICAgIH0KICAgICB9CiAKIGFzc29jX2luaXQ6CkBAIC0xMzQzLDcgKzE0 MTksNyBAQCBzdGF0aWMgaW50IF9faW5pdCBwc3JfcHJlc21wX2luaXQodm9pZCkKICAgICBpZiAo IChvcHRfcHNyICYgUFNSX0NNVCkgJiYgb3B0X3JtaWRfbWF4ICkKICAgICAgICAgaW5pdF9wc3Jf Y210KG9wdF9ybWlkX21heCk7CiAKLSAgICBpZiAoIG9wdF9wc3IgJiBQU1JfQ0FUICkKKyAgICBp ZiAoIG9wdF9wc3IgJiAoUFNSX0NBVCB8IFBTUl9DRFApICkKICAgICAgICAgaW5pdF9wc3IoKTsK IAogICAgIGlmICggcHNyX2NwdV9wcmVwYXJlKCkgKQotLSAKMS45LjEKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK