From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v7 04/24] x86: refactor psr: implement CPU init and free flow. Date: Mon, 13 Feb 2017 14:32:16 +0800 Message-ID: <1486967556-3702-5-git-send-email-yi.y.sun@linux.intel.com> References: <1486967556-3702-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 1cdAEs-0005zW-2E for xen-devel@lists.xenproject.org; Mon, 13 Feb 2017 06:35:54 +0000 In-Reply-To: <1486967556-3702-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 List-Id: xen-devel@lists.xenproject.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBDUFUgaW5pdCBhbmQgZnJlZSBmbG93IGluY2x1ZGlu ZyBMMyBDQVQKaW5pdGlhbGl6YXRpb24gYW5kIGZlYXR1cmUgbGlzdCBmcmVlLgoKU2lnbmVkLW9m Zi1ieTogWWkgU3VuIDx5aS55LnN1bkBsaW51eC5pbnRlbC5jb20+Ci0tLQp2NzoKICAgIC0gaW5p dGlhbGl6ZSAnbDNfY2F0Jy4KICAgIC0gZml4IHR5cG8uCiAgICAtIGNvcnJlY3QgY3JpdGVyaWEg dG8gY2FsbCAnZnJlZV9mZWF0dXJlJyBpbiBjcHVfZmluaV93b3JrLiBPbmx5IHdoZW4KICAgICAg Q1BVX1NUQVJUSU5HIGhhcyBiZWVuIGRvbmUgYW5kIGFsbCBDUFVzIGFyZSBvZmZsaW5lLCAnZnJl ZV9mZWF0dXJlJwogICAgICBjYW4gYmUgY2FsbGVkLgogICAgLSByZW1vdmUgJ2ZyZWVfZmVhdHVy ZSBpbiAncHNyX2ZyZWUnIGJlY2F1c2UgJ3Bzcl9mcmVlJyBzaG91bGQgb25seSBmcmVlCiAgICAg IHJlc291cmNlcyBhbGxvY2F0ZWQgaW4gJ3Bzcl9jcHVfcHJlcGFyZScuIEJ1dCByZXNvdXJjZXMg YWxsb2NhdGVkIGluCiAgICAgICdwc3JfY3B1X3ByZXBhcmUnIHdpbGwgbm90IGJlIGZyZWVkIHRv IHNpbXBsaWZ5IHRoaW5ncy4KLS0tCiB4ZW4vYXJjaC94ODYvY3B1aWQuYyAgICAgICAgICAgIHwg ICA2IC0tCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAgICAgICAgICAgIHwgMTcwICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHhlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vz c29yLmggfCAgIDcgKysKIDMgZmlsZXMgY2hhbmdlZCwgMTc1IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2NwdWlkLmMgYi94ZW4vYXJjaC94 ODYvY3B1aWQuYwppbmRleCBlMGEzODdlLi5lM2U5MmRkIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvY3B1aWQuYworKysgYi94ZW4vYXJjaC94ODYvY3B1aWQuYwpAQCAtMzQsMTIgKzM0LDYgQEAg c3RhdGljIHZvaWQgY3B1aWRfbGVhZih1aW50MzJfdCBsZWFmLCBzdHJ1Y3QgY3B1aWRfbGVhZiAq ZGF0YSkKICAgICBjcHVpZChsZWFmLCAmZGF0YS0+YSwgJmRhdGEtPmIsICZkYXRhLT5jLCAmZGF0 YS0+ZCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNwdWlkX2NvdW50X2xlYWYodWludDMyX3QgbGVhZiwg dWludDMyX3Qgc3VibGVhZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNw dWlkX2xlYWYgKmRhdGEpCi17Ci0gICAgY3B1aWRfY291bnQobGVhZiwgc3VibGVhZiwgJmRhdGEt PmEsICZkYXRhLT5iLCAmZGF0YS0+YywgJmRhdGEtPmQpOwotfQotCiBzdGF0aWMgdm9pZCBzYW5p dGlzZV9mZWF0dXJlc2V0KHVpbnQzMl90ICpmcykKIHsKICAgICAvKiBmb3JfZWFjaF9zZXRfYml0 KCkgdXNlcyB1bnNpZ25lZCBsb25ncy4gIEV4dGVuZCB3aXRoIHplcm9lcy4gKi8KZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCA1YWNkOWNh Li45YTJiNzE3IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gv eDg2L3Bzci5jCkBAIC0xOSw2ICsxOSw3IEBACiAjaW5jbHVkZSA8eGVuL2xpc3QuaD4KICNpbmNs dWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDxhc20vcHNyLmg+CisjaW5jbHVkZSA8YXNtL3g4 Nl9lbXVsYXRlLmg+CiAKIC8qCiAgKiBUZXJtaW5vbG9neToKQEAgLTM1LDYgKzM2LDkgQEAKICNk ZWZpbmUgUFNSX0NBVCAgICAgICAgKDE8PDEpCiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxPDwy KQogCisjZGVmaW5lIENBVF9DQk1fTEVOX01BU0sgMHgxZgorI2RlZmluZSBDQVRfQ09TX01BWF9N QVNLIDB4ZmZmZgorCiAvKgogICogUGVyIFNETSBjaGFwdGVyICdDYWNoZSBBbGxvY2F0aW9uIFRl Y2hub2xvZ3k6IENhY2hlIE1hc2sgQ29uZmlndXJhdGlvbicsCiAgKiB0aGUgTVNScyByYW5naW5n IGZyb20gMEM5MEggdGhyb3VnaCAwRDBGSCAoaW5jbHVzaXZlKSwgZW5hYmxlcyBzdXBwb3J0IGZv cgpAQCAtMTM2LDExICsxNDAsODQgQEAgc3RydWN0IHBzcl9hc3NvYyB7CiAKIHN0cnVjdCBwc3Jf Y210ICpfX3JlYWRfbW9zdGx5IHBzcl9jbXQ7CiAKK3N0YXRpYyBzdHJ1Y3QgcHNyX3NvY2tldF9p bmZvICpfX3JlYWRfbW9zdGx5IHNvY2tldF9pbmZvOworCiBzdGF0aWMgdW5zaWduZWQgaW50IG9w dF9wc3I7CiBzdGF0aWMgdW5zaWduZWQgaW50IF9faW5pdGRhdGEgb3B0X3JtaWRfbWF4ID0gMjU1 Oworc3RhdGljIHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG9wdF9jb3NfbWF4ID0gTUFYX0NP U19SRUdfQ05UOwogc3RhdGljIHVpbnQ2NF90IHJtaWRfbWFzazsKIHN0YXRpYyBERUZJTkVfUEVS X0NQVShzdHJ1Y3QgcHNyX2Fzc29jLCBwc3JfYXNzb2MpOwogCisvKgorICogRGVjbGFyZSBnbG9i YWwgZmVhdHVyZSBsaXN0IGVudHJ5IGZvciBldmVyeSBmZWF0dXJlIHRvIGZhY2lsaXRhdGUgdGhl CisgKiBmZWF0dXJlIGxpc3QgY3JlYXRpb24uIEl0IHdpbGwgYmUgYWxsb2NhdGVkIGluIHBzcl9j cHVfcHJlcGFyZSgpIGFuZAorICogaW5zZXJ0ZWQgaW50byBmZWF0dXJlIGxpc3QgaW4gY3B1X2lu aXRfd29yaygpLiBJdCBpcyBwcm90ZWN0ZWQgYnkKKyAqIGNwdV9hZGRfcmVtb3ZlX2xvY2sgc3Bp bmxvY2suCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0X2wzX2NhdDsKKworLyog Q29tbW9uIGZ1bmN0aW9ucy4gKi8KK3N0YXRpYyB2b2lkIGZyZWVfZmVhdHVyZShzdHJ1Y3QgcHNy X3NvY2tldF9pbmZvICppbmZvKQoreworICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsICpuZXh0 OworCisgICAgaWYgKCAhaW5mbyApCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICog RnJlZSByZXNvdXJjZXMgb2YgZmVhdHVyZXMuIEJ1dCB3ZSBkbyBub3QgZnJlZSBnbG9iYWwgZmVh dHVyZSBsaXN0CisgICAgICogZW50cnksIGxpa2UgZmVhdF9sM19jYXQuIEFsdGhvdWdoIGl0IG1h eSBjYXVzZSBhIGZldyBtZW1vcnkgbGVhaywKKyAgICAgKiBpdCBpcyBPSyBzaW1wbGlmeSB0aGlu Z3MuCisgICAgICovCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGZlYXQsIG5leHQsICZp bmZvLT5mZWF0X2xpc3QsIGxpc3QpCisgICAgeworICAgICAgICBfX2NsZWFyX2JpdChmZWF0LT5m ZWF0dXJlLCAmaW5mby0+ZmVhdF9tYXNrKTsKKyAgICAgICAgbGlzdF9kZWwoJmZlYXQtPmxpc3Qp OworICAgICAgICB4ZnJlZShmZWF0KTsKKyAgICB9Cit9CisKKy8qIEwzIENBVCBmdW5jdGlvbnMg aW1wbGVtZW50YXRpb24uICovCitzdGF0aWMgdm9pZCBsM19jYXRfaW5pdF9mZWF0dXJlKHN0cnVj dCBjcHVpZF9sZWFmIHJlZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCit7CisgICAgc3RydWN0IHBzcl9jYXRfaHdfaW5mbyBs M19jYXQgPSB7IH07CisgICAgdW5zaWduZWQgaW50IHNvY2tldDsKKworICAgIC8qIE5vIHZhbGlk IHZhbHVlIHNvIGRvIG5vdCBlbmFibGUgZmVhdHVyZS4gKi8KKyAgICBpZiAoICFyZWdzLmEgfHwg IXJlZ3MuZCApCisgICAgICAgIHJldHVybjsKKworICAgIGwzX2NhdC5jYm1fbGVuID0gKHJlZ3Mu YSAmIENBVF9DQk1fTEVOX01BU0spICsgMTsKKyAgICBsM19jYXQuY29zX21heCA9IG1pbihvcHRf Y29zX21heCwgcmVncy5kICYgQ0FUX0NPU19NQVhfTUFTSyk7CisKKyAgICAvKiBjb3M9MCBpcyBy ZXNlcnZlZCBhcyBkZWZhdWx0IGNibShhbGwgYml0cyB3aXRoaW4gY2JtX2xlbiBhcmUgMSkuICov CisgICAgZmVhdC0+Y29zX3JlZ192YWxbMF0gPSAoMXVsbCA8PCBsM19jYXQuY2JtX2xlbikgLSAx OworCisgICAgZmVhdC0+ZmVhdHVyZSA9IFBTUl9TT0NLRVRfTDNfQ0FUOworICAgIEFTU0VSVCgh dGVzdF9iaXQoUFNSX1NPQ0tFVF9MM19DQVQsICZpbmZvLT5mZWF0X21hc2spKTsKKyAgICBfX3Nl dF9iaXQoUFNSX1NPQ0tFVF9MM19DQVQsICZpbmZvLT5mZWF0X21hc2spOworCisgICAgZmVhdC0+ aW5mby5sM19jYXRfaW5mbyA9IGwzX2NhdDsKKworICAgIGluZm8tPm5yX2ZlYXQrKzsKKworICAg IC8qIEFkZCB0aGlzIGZlYXR1cmUgaW50byBsaXN0LiAqLworICAgIGxpc3RfYWRkX3RhaWwoJmZl YXQtPmxpc3QsICZpbmZvLT5mZWF0X2xpc3QpOworCisgICAgc29ja2V0ID0gY3B1X3RvX3NvY2tl dChzbXBfcHJvY2Vzc29yX2lkKCkpOworICAgIGlmICggIW9wdF9jcHVfaW5mbyApCisgICAgICAg IHJldHVybjsKKworICAgIHByaW50ayhYRU5MT0dfSU5GTyAiTDMgQ0FUOiBlbmFibGVkIG9uIHNv Y2tldCAldSwgY29zX21heDoldSwgY2JtX2xlbjoldVxuIiwKKyAgICAgICAgICAgc29ja2V0LCBm ZWF0LT5pbmZvLmwzX2NhdF9pbmZvLmNvc19tYXgsCisgICAgICAgICAgIGZlYXQtPmluZm8ubDNf Y2F0X2luZm8uY2JtX2xlbik7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9vcHMgbDNf Y2F0X29wcyA9IHsKK307CisKIHN0YXRpYyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfYm9vbChjaGFy ICpzLCBjaGFyICp2YWx1ZSwgY2hhciAqZmVhdHVyZSwKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFzaykKIHsKQEAgLTE4MCw2ICsyNTcsOSBAQCBzdGF0 aWMgdm9pZCBfX2luaXQgcGFyc2VfcHNyX3BhcmFtKGNoYXIgKnMpCiAgICAgICAgIGlmICggdmFs X3N0ciAmJiAhc3RyY21wKHMsICJybWlkX21heCIpICkKICAgICAgICAgICAgIG9wdF9ybWlkX21h eCA9IHNpbXBsZV9zdHJ0b3VsKHZhbF9zdHIsIE5VTEwsIDApOwogCisgICAgICAgIGlmICggdmFs X3N0ciAmJiAhc3RyY21wKHMsICJjb3NfbWF4IikgKQorICAgICAgICAgICAgb3B0X2Nvc19tYXgg PSBzaW1wbGVfc3RydG91bCh2YWxfc3RyLCBOVUxMLCAwKTsKKwogICAgICAgICBzID0gc3MgKyAx OwogICAgIH0gd2hpbGUgKCBzcyApOwogfQpAQCAtMzM1LDE4ICs0MTUsMTAwIEBAIHZvaWQgcHNy X2RvbWFpbl9mcmVlKHN0cnVjdCBkb21haW4gKmQpCiAgICAgcHNyX2ZyZWVfcm1pZChkKTsKIH0K IAorc3RhdGljIHZvaWQgY3B1X2luaXRfd29yayh2b2lkKQoreworICAgIHN0cnVjdCBwc3Jfc29j a2V0X2luZm8gKmluZm87CisgICAgdW5zaWduZWQgaW50IHNvY2tldDsKKyAgICB1bnNpZ25lZCBp bnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7 CisgICAgc3RydWN0IGNwdWlkX2xlYWYgcmVncyA9IHsuYSA9IDAsIC5iID0gMCwgLmMgPSAwLCAu ZCA9IDB9OworCisgICAgaWYgKCAhY3B1X2hhcygmY3VycmVudF9jcHVfZGF0YSwgWDg2X0ZFQVRV UkVfUFFFKSApCisgICAgICAgIHJldHVybjsKKyAgICBlbHNlIGlmICggY3VycmVudF9jcHVfZGF0 YS5jcHVpZF9sZXZlbCA8IFBTUl9DUFVJRF9MRVZFTF9DQVQgKQorICAgIHsKKyAgICAgICAgX19j bGVhcl9iaXQoWDg2X0ZFQVRVUkVfUFFFLCBjdXJyZW50X2NwdV9kYXRhLng4Nl9jYXBhYmlsaXR5 KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvY2tldCA9IGNwdV90b19zb2NrZXQo Y3B1KTsKKyAgICBpbmZvID0gc29ja2V0X2luZm8gKyBzb2NrZXQ7CisgICAgaWYgKCBpbmZvLT5m ZWF0X21hc2sgKQorICAgICAgICByZXR1cm47CisKKyAgICBJTklUX0xJU1RfSEVBRCgmaW5mby0+ ZmVhdF9saXN0KTsKKyAgICBzcGluX2xvY2tfaW5pdCgmaW5mby0+cmVmX2xvY2spOworCisgICAg Y3B1aWRfY291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAwLCAmcmVncyk7CisgICAgaWYg KCByZWdzLmIgJiBQU1JfUkVTT1VSQ0VfVFlQRV9MMyApCisgICAgeworICAgICAgICBjcHVpZF9j b3VudF9sZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDEsICZyZWdzKTsKKworICAgICAgICBmZWF0 ID0gZmVhdF9sM19jYXQ7CisgICAgICAgIC8qIHBzcl9jcHVfcHJlcGFyZSB3aWxsIGFsbG9jYXRl IGl0IG9uIHN1YnNlcXVlbnQgQ1BVIG9ubGluaW5nLiAqLworICAgICAgICBmZWF0X2wzX2NhdCA9 IE5VTEw7CisgICAgICAgIGZlYXQtPm9wcyA9IGwzX2NhdF9vcHM7CisKKyAgICAgICAgbDNfY2F0 X2luaXRfZmVhdHVyZShyZWdzLCBmZWF0LCBpbmZvKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk IGNwdV9maW5pX3dvcmsodW5zaWduZWQgaW50IGNwdSkKK3sKKyAgICB1bnNpZ25lZCBpbnQgc29j a2V0ID0gY3B1X3RvX3NvY2tldChjcHUpOworCisgICAgaWYgKCBzb2NrZXRfY3B1bWFza1tzb2Nr ZXRdICYmIGNwdW1hc2tfZW1wdHkoc29ja2V0X2NwdW1hc2tbc29ja2V0XSkgKQorICAgICAgICBm cmVlX2ZlYXR1cmUoc29ja2V0X2luZm8gKyBzb2NrZXQpOworfQorCitzdGF0aWMgdm9pZCBfX2lu aXQgaW5pdF9wc3Iodm9pZCkKK3sKKyAgICBpZiAoIG9wdF9jb3NfbWF4IDwgMSApCisgICAgewor ICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIkNBVDogZGlzYWJsZWQsIGNvc19tYXggaXMgdG9v IHNtYWxsXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvY2tldF9pbmZvID0g eHphbGxvY19hcnJheShzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvLCBucl9zb2NrZXRzKTsKKworICAg IGlmICggIXNvY2tldF9pbmZvICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAi RmFpbGVkIHRvIGFsbG9jIHNvY2tldF9pbmZvIVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9 Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBwc3JfZnJlZSh2b2lkKQoreworICAgIHhmcmVlKHNv Y2tldF9pbmZvKTsKKyAgICBzb2NrZXRfaW5mbyA9IE5VTEw7Cit9CisKIHN0YXRpYyBpbnQgcHNy X2NwdV9wcmVwYXJlKHVuc2lnbmVkIGludCBjcHUpCiB7CisgICAgaWYgKCAhc29ja2V0X2luZm8g KQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIE1hbGxvYyBtZW1vcnkgZm9yIHRoZSBnbG9i YWwgZmVhdHVyZSBoZWFkIGhlcmUuICovCisgICAgaWYgKCBmZWF0X2wzX2NhdCA9PSBOVUxMICYm CisgICAgICAgICAoZmVhdF9sM19jYXQgPSB4emFsbG9jKHN0cnVjdCBmZWF0X25vZGUpKSA9PSBO VUxMICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKICAgICByZXR1cm4gMDsKIH0KIAogc3Rh dGljIHZvaWQgcHNyX2NwdV9pbml0KHZvaWQpCiB7CisgICAgaWYgKCBzb2NrZXRfaW5mbyApCisg ICAgICAgIGNwdV9pbml0X3dvcmsoKTsKKwogICAgIHBzcl9hc3NvY19pbml0KCk7CiB9CiAKIHN0 YXRpYyB2b2lkIHBzcl9jcHVfZmluaSh1bnNpZ25lZCBpbnQgY3B1KQogeworICAgIGlmICggc29j a2V0X2luZm8gKQorICAgICAgICBjcHVfZmluaV93b3JrKGNwdSk7CiAgICAgcmV0dXJuOwogfQog CkBAIC0zODgsMTAgKzU1MCwxNCBAQCBzdGF0aWMgaW50IF9faW5pdCBwc3JfcHJlc21wX2luaXQo dm9pZCkKICAgICBpZiAoIChvcHRfcHNyICYgUFNSX0NNVCkgJiYgb3B0X3JtaWRfbWF4ICkKICAg ICAgICAgaW5pdF9wc3JfY210KG9wdF9ybWlkX21heCk7CiAKLSAgICBwc3JfY3B1X3ByZXBhcmUo MCk7CisgICAgaWYgKCBvcHRfcHNyICYgUFNSX0NBVCApCisgICAgICAgIGluaXRfcHNyKCk7CisK KyAgICBpZiAoIHBzcl9jcHVfcHJlcGFyZSgwKSApCisgICAgICAgIHBzcl9mcmVlKCk7CiAKICAg ICBwc3JfY3B1X2luaXQoKTsKLSAgICBpZiAoIHBzcl9jbXRfZW5hYmxlZCgpICkKKyAgICBpZiAo IHBzcl9jbXRfZW5hYmxlZCgpIHx8IHNvY2tldF9pbmZvICkKICAgICAgICAgcmVnaXN0ZXJfY3B1 X25vdGlmaWVyKCZjcHVfbmZiKTsKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29y LmgKaW5kZXggNzczNWJjMi4uZWIwYTFlOSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4 Ni9wcm9jZXNzb3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCkBAIC0x NCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL2NwdWZl YXR1cmUuaD4KICNpbmNsdWRlIDxhc20vZGVzYy5oPgorI2luY2x1ZGUgPGFzbS94ODZfZW11bGF0 ZS5oPgogI2VuZGlmCiAKICNpbmNsdWRlIDxhc20veDg2LWRlZm5zLmg+CkBAIC0yNTksNiArMjYw LDEyIEBAIHN0YXRpYyBhbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9jb3VudF9lYngo CiAgICAgcmV0dXJuIGVieDsKIH0KIAorc3RhdGljIGFsd2F5c19pbmxpbmUgdm9pZCBjcHVpZF9j b3VudF9sZWFmKHVpbnQzMl90IGxlYWYsIHVpbnQzMl90IHN1YmxlYWYsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNwdWlkX2xlYWYgKmRhdGEpCit7 CisgICAgY3B1aWRfY291bnQobGVhZiwgc3VibGVhZiwgJmRhdGEtPmEsICZkYXRhLT5iLCAmZGF0 YS0+YywgJmRhdGEtPmQpOworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmVhZF9j cjAodm9pZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGNyMDsKLS0gCjEuOS4xCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcg bGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVuLWRl dmVsCg==