From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v8 04/24] x86: refactor psr: implement CPU init and free flow. Date: Wed, 15 Feb 2017 16:49:19 +0800 Message-ID: <1487148579-7243-5-git-send-email-yi.y.sun@linux.intel.com> References: <1487148579-7243-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 1cdvKj-0007Cp-2K for xen-devel@lists.xenproject.org; Wed, 15 Feb 2017 08:53:05 +0000 In-Reply-To: <1487148579-7243-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+Ci0tLQp2ODoKICAgIC0gcmVt b3ZlIHVudXNlZCBwYXJhbWV0ZXIgb2YgcHNyX2NwdV9wcmVwYXJlLgogICAgLSBhZGQgY29tbWVu dHMgaW4gY3B1X2Zpbmlfd29yay4KICAgIC0gY29kaW5nIHN0eWxlIGZpeC4KLS0tCiB4ZW4vYXJj aC94ODYvY3B1aWQuYyAgICAgICAgICAgIHwgICA2IC0tCiB4ZW4vYXJjaC94ODYvcHNyLmMgICAg ICAgICAgICAgIHwgMTgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K IHhlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmggfCAgIDcgKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTg0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9jcHVpZC5jIGIveGVuL2FyY2gveDg2L2NwdWlkLmMKaW5kZXggZTBhMzg3ZS4uZTNl OTJkZCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2NwdWlkLmMKKysrIGIveGVuL2FyY2gveDg2 L2NwdWlkLmMKQEAgLTM0LDEyICszNCw2IEBAIHN0YXRpYyB2b2lkIGNwdWlkX2xlYWYodWludDMy X3QgbGVhZiwgc3RydWN0IGNwdWlkX2xlYWYgKmRhdGEpCiAgICAgY3B1aWQobGVhZiwgJmRhdGEt PmEsICZkYXRhLT5iLCAmZGF0YS0+YywgJmRhdGEtPmQpOwogfQogCi1zdGF0aWMgdm9pZCBjcHVp ZF9jb3VudF9sZWFmKHVpbnQzMl90IGxlYWYsIHVpbnQzMl90IHN1YmxlYWYsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjcHVpZF9sZWFmICpkYXRhKQotewotICAgIGNwdWlk X2NvdW50KGxlYWYsIHN1YmxlYWYsICZkYXRhLT5hLCAmZGF0YS0+YiwgJmRhdGEtPmMsICZkYXRh LT5kKTsKLX0KLQogc3RhdGljIHZvaWQgc2FuaXRpc2VfZmVhdHVyZXNldCh1aW50MzJfdCAqZnMp CiB7CiAgICAgLyogZm9yX2VhY2hfc2V0X2JpdCgpIHVzZXMgdW5zaWduZWQgbG9uZ3MuICBFeHRl bmQgd2l0aCB6ZXJvZXMuICovCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvcHNyLmMgYi94ZW4v YXJjaC94ODYvcHNyLmMKaW5kZXggNWFjZDljYS4uMTBkMjY4YSAxMDA2NDQKLS0tIGEveGVuL2Fy Y2gveDg2L3Bzci5jCisrKyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwpAQCAtMTksNiArMTksNyBAQAog I2luY2x1ZGUgPHhlbi9saXN0Lmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8 YXNtL3Bzci5oPgorI2luY2x1ZGUgPGFzbS94ODZfZW11bGF0ZS5oPgogCiAvKgogICogVGVybWlu b2xvZ3k6CkBAIC0zNSw2ICszNiw5IEBACiAjZGVmaW5lIFBTUl9DQVQgICAgICAgICgxPDwxKQog I2RlZmluZSBQU1JfQ0RQICAgICAgICAoMTw8MikKIAorI2RlZmluZSBDQVRfQ0JNX0xFTl9NQVNL IDB4MWYKKyNkZWZpbmUgQ0FUX0NPU19NQVhfTUFTSyAweGZmZmYKKwogLyoKICAqIFBlciBTRE0g Y2hhcHRlciAnQ2FjaGUgQWxsb2NhdGlvbiBUZWNobm9sb2d5OiBDYWNoZSBNYXNrIENvbmZpZ3Vy YXRpb24nLAogICogdGhlIE1TUnMgcmFuZ2luZyBmcm9tIDBDOTBIIHRocm91Z2ggMEQwRkggKGlu Y2x1c2l2ZSksIGVuYWJsZXMgc3VwcG9ydCBmb3IKQEAgLTEzNiwxMSArMTQwLDg3IEBAIHN0cnVj dCBwc3JfYXNzb2MgewogCiBzdHJ1Y3QgcHNyX2NtdCAqX19yZWFkX21vc3RseSBwc3JfY210Owog CitzdGF0aWMgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqX19yZWFkX21vc3RseSBzb2NrZXRfaW5m bzsKKwogc3RhdGljIHVuc2lnbmVkIGludCBvcHRfcHNyOwogc3RhdGljIHVuc2lnbmVkIGludCBf X2luaXRkYXRhIG9wdF9ybWlkX21heCA9IDI1NTsKK3N0YXRpYyB1bnNpZ25lZCBpbnQgX19yZWFk X21vc3RseSBvcHRfY29zX21heCA9IE1BWF9DT1NfUkVHX0NOVDsKIHN0YXRpYyB1aW50NjRfdCBy bWlkX21hc2s7CiBzdGF0aWMgREVGSU5FX1BFUl9DUFUoc3RydWN0IHBzcl9hc3NvYywgcHNyX2Fz c29jKTsKIAorLyoKKyAqIERlY2xhcmUgZ2xvYmFsIGZlYXR1cmUgbGlzdCBlbnRyeSBmb3IgZXZl cnkgZmVhdHVyZSB0byBmYWNpbGl0YXRlIHRoZQorICogZmVhdHVyZSBsaXN0IGNyZWF0aW9uLiBJ dCB3aWxsIGJlIGFsbG9jYXRlZCBpbiBwc3JfY3B1X3ByZXBhcmUoKSBhbmQKKyAqIGluc2VydGVk IGludG8gZmVhdHVyZSBsaXN0IGluIGNwdV9pbml0X3dvcmsoKS4gSXQgaXMgcHJvdGVjdGVkIGJ5 CisgKiBjcHVfYWRkX3JlbW92ZV9sb2NrIHNwaW5sb2NrLgorICovCitzdGF0aWMgc3RydWN0IGZl YXRfbm9kZSAqZmVhdF9sM19jYXQ7CisKKy8qIENvbW1vbiBmdW5jdGlvbnMuICovCitzdGF0aWMg dm9pZCBmcmVlX2ZlYXR1cmUoc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbykKK3sKKyAgICBz dHJ1Y3QgZmVhdF9ub2RlICpmZWF0LCAqbmV4dDsKKworICAgIGlmICggIWluZm8gKQorICAgICAg ICByZXR1cm47CisKKyAgICAvKgorICAgICAqIEZyZWUgcmVzb3VyY2VzIG9mIGZlYXR1cmVzLiBC dXQgd2UgZG8gbm90IGZyZWUgZ2xvYmFsIGZlYXR1cmUgbGlzdAorICAgICAqIGVudHJ5LCBsaWtl IGZlYXRfbDNfY2F0LiBBbHRob3VnaCBpdCBtYXkgY2F1c2UgYSBmZXcgbWVtb3J5IGxlYWssCisg ICAgICogaXQgaXMgT0sgc2ltcGxpZnkgdGhpbmdzLgorICAgICAqLworICAgIGxpc3RfZm9yX2Vh Y2hfZW50cnlfc2FmZShmZWF0LCBuZXh0LCAmaW5mby0+ZmVhdF9saXN0LCBsaXN0KQorICAgIHsK KyAgICAgICAgaWYgKCAhZmVhdCApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgX19j bGVhcl9iaXQoZmVhdC0+ZmVhdHVyZSwgJmluZm8tPmZlYXRfbWFzayk7CisgICAgICAgIGxpc3Rf ZGVsKCZmZWF0LT5saXN0KTsKKyAgICAgICAgeGZyZWUoZmVhdCk7CisgICAgfQorfQorCisvKiBM MyBDQVQgZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLiAqLworc3RhdGljIHZvaWQgbDNfY2F0X2lu aXRfZmVhdHVyZShzdHJ1Y3QgY3B1aWRfbGVhZiByZWdzLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvKQoreworICAgIHN0cnVjdCBw c3JfY2F0X2h3X2luZm8gbDNfY2F0ID0geyB9OworICAgIHVuc2lnbmVkIGludCBzb2NrZXQ7CisK KyAgICAvKiBObyB2YWxpZCB2YWx1ZSBzbyBkbyBub3QgZW5hYmxlIGZlYXR1cmUuICovCisgICAg aWYgKCAhcmVncy5hIHx8ICFyZWdzLmQgKQorICAgICAgICByZXR1cm47CisKKyAgICBsM19jYXQu Y2JtX2xlbiA9IChyZWdzLmEgJiBDQVRfQ0JNX0xFTl9NQVNLKSArIDE7CisgICAgbDNfY2F0LmNv c19tYXggPSBtaW4ob3B0X2Nvc19tYXgsIHJlZ3MuZCAmIENBVF9DT1NfTUFYX01BU0spOworCisg ICAgLyogY29zPTAgaXMgcmVzZXJ2ZWQgYXMgZGVmYXVsdCBjYm0oYWxsIGJpdHMgd2l0aGluIGNi bV9sZW4gYXJlIDEpLiAqLworICAgIGZlYXQtPmNvc19yZWdfdmFsWzBdID0gKDF1bGwgPDwgbDNf Y2F0LmNibV9sZW4pIC0gMTsKKworICAgIGZlYXQtPmZlYXR1cmUgPSBQU1JfU09DS0VUX0wzX0NB VDsKKyAgICBBU1NFUlQoIXRlc3RfYml0KFBTUl9TT0NLRVRfTDNfQ0FULCAmaW5mby0+ZmVhdF9t YXNrKSk7CisgICAgX19zZXRfYml0KFBTUl9TT0NLRVRfTDNfQ0FULCAmaW5mby0+ZmVhdF9tYXNr KTsKKworICAgIGZlYXQtPmluZm8ubDNfY2F0X2luZm8gPSBsM19jYXQ7CisKKyAgICBpbmZvLT5u cl9mZWF0Kys7CisKKyAgICAvKiBBZGQgdGhpcyBmZWF0dXJlIGludG8gbGlzdC4gKi8KKyAgICBs aXN0X2FkZF90YWlsKCZmZWF0LT5saXN0LCAmaW5mby0+ZmVhdF9saXN0KTsKKworICAgIHNvY2tl dCA9IGNwdV90b19zb2NrZXQoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKKyAgICBpZiAoICFvcHRfY3B1 X2luZm8gKQorICAgICAgICByZXR1cm47CisKKyAgICBwcmludGsoWEVOTE9HX0lORk8gIkwzIENB VDogZW5hYmxlZCBvbiBzb2NrZXQgJXUsIGNvc19tYXg6JXUsIGNibV9sZW46JXVcbiIsCisgICAg ICAgICAgIHNvY2tldCwgZmVhdC0+aW5mby5sM19jYXRfaW5mby5jb3NfbWF4LAorICAgICAgICAg ICBmZWF0LT5pbmZvLmwzX2NhdF9pbmZvLmNibV9sZW4pOworfQorCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGZlYXRfb3BzIGwzX2NhdF9vcHMgPSB7Cit9OworCiBzdGF0aWMgdm9pZCBfX2luaXQgcGFy c2VfcHNyX2Jvb2woY2hhciAqcywgY2hhciAqdmFsdWUsIGNoYXIgKmZlYXR1cmUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG1hc2spCiB7CkBAIC0xODAs NiArMjYwLDkgQEAgc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9wYXJhbShjaGFyICpzKQog ICAgICAgICBpZiAoIHZhbF9zdHIgJiYgIXN0cmNtcChzLCAicm1pZF9tYXgiKSApCiAgICAgICAg ICAgICBvcHRfcm1pZF9tYXggPSBzaW1wbGVfc3RydG91bCh2YWxfc3RyLCBOVUxMLCAwKTsKIAor ICAgICAgICBpZiAoIHZhbF9zdHIgJiYgIXN0cmNtcChzLCAiY29zX21heCIpICkKKyAgICAgICAg ICAgIG9wdF9jb3NfbWF4ID0gc2ltcGxlX3N0cnRvdWwodmFsX3N0ciwgTlVMTCwgMCk7CisKICAg ICAgICAgcyA9IHNzICsgMTsKICAgICB9IHdoaWxlICggc3MgKTsKIH0KQEAgLTMzNSwxOCArNDE4 LDEwNCBAQCB2b2lkIHBzcl9kb21haW5fZnJlZShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHBzcl9m cmVlX3JtaWQoZCk7CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NwdV9wcmVwYXJlKHVuc2lnbmVkIGlu dCBjcHUpCitzdGF0aWMgdm9pZCBjcHVfaW5pdF93b3JrKHZvaWQpCit7CisgICAgc3RydWN0IHBz cl9zb2NrZXRfaW5mbyAqaW5mbzsKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0OworICAgIHVuc2ln bmVkIGludCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisgICAgc3RydWN0IGZlYXRfbm9kZSAq ZmVhdDsKKyAgICBzdHJ1Y3QgY3B1aWRfbGVhZiByZWdzID0geyAuYSA9IDAsIC5iID0gMCwgLmMg PSAwLCAuZCA9IDAgfTsKKworICAgIGlmICggIWNwdV9oYXMoJmN1cnJlbnRfY3B1X2RhdGEsIFg4 Nl9GRUFUVVJFX1BRRSkgKQorICAgICAgICByZXR1cm47CisgICAgZWxzZSBpZiAoIGN1cnJlbnRf Y3B1X2RhdGEuY3B1aWRfbGV2ZWwgPCBQU1JfQ1BVSURfTEVWRUxfQ0FUICkKKyAgICB7CisgICAg ICAgIF9fY2xlYXJfYml0KFg4Nl9GRUFUVVJFX1BRRSwgY3VycmVudF9jcHVfZGF0YS54ODZfY2Fw YWJpbGl0eSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzb2NrZXQgPSBjcHVfdG9f c29ja2V0KGNwdSk7CisgICAgaW5mbyA9IHNvY2tldF9pbmZvICsgc29ja2V0OworICAgIGlmICgg aW5mby0+ZmVhdF9tYXNrICkKKyAgICAgICAgcmV0dXJuOworCisgICAgSU5JVF9MSVNUX0hFQUQo JmluZm8tPmZlYXRfbGlzdCk7CisgICAgc3Bpbl9sb2NrX2luaXQoJmluZm8tPnJlZl9sb2NrKTsK KworICAgIGNwdWlkX2NvdW50X2xlYWYoUFNSX0NQVUlEX0xFVkVMX0NBVCwgMCwgJnJlZ3MpOwor ICAgIGlmICggcmVncy5iICYgUFNSX1JFU09VUkNFX1RZUEVfTDMgKQorICAgIHsKKyAgICAgICAg Y3B1aWRfY291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAxLCAmcmVncyk7CisKKyAgICAg ICAgZmVhdCA9IGZlYXRfbDNfY2F0OworICAgICAgICAvKiBwc3JfY3B1X3ByZXBhcmUgd2lsbCBh bGxvY2F0ZSBpdCBvbiBzdWJzZXF1ZW50IENQVSBvbmxpbmluZy4gKi8KKyAgICAgICAgZmVhdF9s M19jYXQgPSBOVUxMOworICAgICAgICBmZWF0LT5vcHMgPSBsM19jYXRfb3BzOworCisgICAgICAg IGwzX2NhdF9pbml0X2ZlYXR1cmUocmVncywgZmVhdCwgaW5mbyk7CisgICAgfQorfQorCitzdGF0 aWMgdm9pZCBjcHVfZmluaV93b3JrKHVuc2lnbmVkIGludCBjcHUpCiB7CisgICAgdW5zaWduZWQg aW50IHNvY2tldCA9IGNwdV90b19zb2NrZXQoY3B1KTsKKworICAgIC8qCisgICAgICogV2Ugb25s eSBmcmVlIHdoZW4gd2UgYXJlIHRoZSBsYXN0IENQVSBpbiB0aGUgc29ja2V0LiBUaGUgc29ja2V0 X2NwdW1hc2sKKyAgICAgKiBpcyBjbGVhcmVkIHByaW9yIHRvIHRoaXMgbm90aWZpY2F0aW9uIGNv ZGUgYnkgcmVtb3ZlX3NpYmxpbmdpbmZvKCkuCisgICAgICovCisgICAgaWYgKCBzb2NrZXRfY3B1 bWFza1tzb2NrZXRdICYmIGNwdW1hc2tfZW1wdHkoc29ja2V0X2NwdW1hc2tbc29ja2V0XSkgKQor ICAgICAgICBmcmVlX2ZlYXR1cmUoc29ja2V0X2luZm8gKyBzb2NrZXQpOworfQorCitzdGF0aWMg dm9pZCBfX2luaXQgaW5pdF9wc3Iodm9pZCkKK3sKKyAgICBpZiAoIG9wdF9jb3NfbWF4IDwgMSAp CisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIkNBVDogZGlzYWJsZWQsIGNvc19t YXggaXMgdG9vIHNtYWxsXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNvY2tl dF9pbmZvID0geHphbGxvY19hcnJheShzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvLCBucl9zb2NrZXRz KTsKKworICAgIGlmICggIXNvY2tldF9pbmZvICkKKyAgICB7CisgICAgICAgIHByaW50ayhYRU5M T0dfSU5GTyAiRmFpbGVkIHRvIGFsbG9jIHNvY2tldF9pbmZvIVxuIik7CisgICAgICAgIHJldHVy bjsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBwc3JfZnJlZSh2b2lkKQoreworICAg IHhmcmVlKHNvY2tldF9pbmZvKTsKKyAgICBzb2NrZXRfaW5mbyA9IE5VTEw7Cit9CisKK3N0YXRp YyBpbnQgcHNyX2NwdV9wcmVwYXJlKHZvaWQpCit7CisgICAgaWYgKCAhc29ja2V0X2luZm8gKQor ICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIE1hbGxvYyBtZW1vcnkgZm9yIHRoZSBnbG9iYWwg ZmVhdHVyZSBoZWFkIGhlcmUuICovCisgICAgaWYgKCBmZWF0X2wzX2NhdCA9PSBOVUxMICYmCisg ICAgICAgICAoZmVhdF9sM19jYXQgPSB4emFsbG9jKHN0cnVjdCBmZWF0X25vZGUpKSA9PSBOVUxM ICkKKyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKICAgICByZXR1cm4gMDsKIH0KIAogc3RhdGlj IHZvaWQgcHNyX2NwdV9pbml0KHZvaWQpCiB7CisgICAgaWYgKCBzb2NrZXRfaW5mbyApCisgICAg ICAgIGNwdV9pbml0X3dvcmsoKTsKKwogICAgIHBzcl9hc3NvY19pbml0KCk7CiB9CiAKIHN0YXRp YyB2b2lkIHBzcl9jcHVfZmluaSh1bnNpZ25lZCBpbnQgY3B1KQogeworICAgIGlmICggc29ja2V0 X2luZm8gKQorICAgICAgICBjcHVfZmluaV93b3JrKGNwdSk7CiAgICAgcmV0dXJuOwogfQogCkBA IC0zNTksNyArNTI4LDcgQEAgc3RhdGljIGludCBjcHVfY2FsbGJhY2soCiAgICAgc3dpdGNoICgg YWN0aW9uICkKICAgICB7CiAgICAgY2FzZSBDUFVfVVBfUFJFUEFSRToKLSAgICAgICAgcmMgPSBw c3JfY3B1X3ByZXBhcmUoY3B1KTsKKyAgICAgICAgcmMgPSBwc3JfY3B1X3ByZXBhcmUoKTsKICAg ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDUFVfU1RBUlRJTkc6CiAgICAgICAgIHBzcl9jcHVfaW5p dCgpOwpAQCAtMzg4LDEwICs1NTcsMTQgQEAgc3RhdGljIGludCBfX2luaXQgcHNyX3ByZXNtcF9p bml0KHZvaWQpCiAgICAgaWYgKCAob3B0X3BzciAmIFBTUl9DTVQpICYmIG9wdF9ybWlkX21heCAp CiAgICAgICAgIGluaXRfcHNyX2NtdChvcHRfcm1pZF9tYXgpOwogCi0gICAgcHNyX2NwdV9wcmVw YXJlKDApOworICAgIGlmICggb3B0X3BzciAmIFBTUl9DQVQgKQorICAgICAgICBpbml0X3Bzcigp OworCisgICAgaWYgKCBwc3JfY3B1X3ByZXBhcmUoKSApCisgICAgICAgIHBzcl9mcmVlKCk7CiAK ICAgICBwc3JfY3B1X2luaXQoKTsKLSAgICBpZiAoIHBzcl9jbXRfZW5hYmxlZCgpICkKKyAgICBp ZiAoIHBzcl9jbXRfZW5hYmxlZCgpIHx8IHNvY2tldF9pbmZvICkKICAgICAgICAgcmVnaXN0ZXJf Y3B1X25vdGlmaWVyKCZjcHVfbmZiKTsKIAogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEveGVu L2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vz c29yLmgKaW5kZXggNzczNWJjMi4uZWIwYTFlOSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUvYXNt LXg4Ni9wcm9jZXNzb3IuaAorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nlc3Nvci5oCkBA IC0xNCw2ICsxNCw3IEBACiAjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CiAjaW5jbHVkZSA8YXNtL2Nw dWZlYXR1cmUuaD4KICNpbmNsdWRlIDxhc20vZGVzYy5oPgorI2luY2x1ZGUgPGFzbS94ODZfZW11 bGF0ZS5oPgogI2VuZGlmCiAKICNpbmNsdWRlIDxhc20veDg2LWRlZm5zLmg+CkBAIC0yNTksNiAr MjYwLDEyIEBAIHN0YXRpYyBhbHdheXNfaW5saW5lIHVuc2lnbmVkIGludCBjcHVpZF9jb3VudF9l YngoCiAgICAgcmV0dXJuIGVieDsKIH0KIAorc3RhdGljIGFsd2F5c19pbmxpbmUgdm9pZCBjcHVp ZF9jb3VudF9sZWFmKHVpbnQzMl90IGxlYWYsIHVpbnQzMl90IHN1YmxlYWYsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNwdWlkX2xlYWYgKmRhdGEp Cit7CisgICAgY3B1aWRfY291bnQobGVhZiwgc3VibGVhZiwgJmRhdGEtPmEsICZkYXRhLT5iLCAm ZGF0YS0+YywgJmRhdGEtPmQpOworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgcmVh ZF9jcjAodm9pZCkKIHsKICAgICB1bnNpZ25lZCBsb25nIGNyMDsKLS0gCjEuOS4xCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxp bmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xpc3RzLnhlbi5vcmcveGVu LWRldmVsCg==