From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v6 04/24] x86: refactor psr: implement CPU init and free flow. Date: Wed, 8 Feb 2017 16:15:56 +0800 Message-ID: <1486541776-8406-5-git-send-email-yi.y.sun@linux.intel.com> References: <1486541776-8406-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 1cbNTC-0005lA-5X for xen-devel@lists.xenproject.org; Wed, 08 Feb 2017 08:19:18 +0000 In-Reply-To: <1486541776-8406-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+Ci0tLQp2NjoKICAgIC0gdXNl ICdzdHJ1Y3QgY3B1aWRfbGVhZicgaW4geDg2X2VtdWxhdGUuaC4KICAgIC0gbW92ZSBjcHVpZF97 LGNvdW50fV9sZWFmKCkgaGVscGVycyBmcm9tIGNwdWlkLmMgdG8gcHJvY2Vzc29yLmggZm9yCiAg ICAgIGV4dGVybmFsIHVzZXIgYW5kIHBhc3MgdGhlIGNvbXBpbGF0aW9uLgogICAgLSBmaXggY29t bWVudHMgdG8gbWFrZSB0aGVtIGNsZWFyZXIuCiAgICAtIHVzZSBfX2NsZWFyX2JpdCgpLgogICAg LSBjYWxsIEFTU0VSVCgpIGJlZm9yZSBfX3NldF9iaXQoKS4KICAgIC0gYWRqdXN0IHByaW50aygp IHBvc2l0aW9uLgotLS0KIHhlbi9hcmNoL3g4Ni9jcHVpZC5jICAgICAgICAgICAgfCAgIDYgLS0K IHhlbi9hcmNoL3g4Ni9wc3IuYyAgICAgICAgICAgICAgfCAxNzcgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLQogeGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaCB8 ICAgNyArKwogMyBmaWxlcyBjaGFuZ2VkLCAxODIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvY3B1aWQuYyBiL3hlbi9hcmNoL3g4Ni9jcHVp ZC5jCmluZGV4IGUwYTM4N2UuLmUzZTkyZGQgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9jcHVp ZC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9jcHVpZC5jCkBAIC0zNCwxMiArMzQsNiBAQCBzdGF0aWMg dm9pZCBjcHVpZF9sZWFmKHVpbnQzMl90IGxlYWYsIHN0cnVjdCBjcHVpZF9sZWFmICpkYXRhKQog ICAgIGNwdWlkKGxlYWYsICZkYXRhLT5hLCAmZGF0YS0+YiwgJmRhdGEtPmMsICZkYXRhLT5kKTsK IH0KIAotc3RhdGljIHZvaWQgY3B1aWRfY291bnRfbGVhZih1aW50MzJfdCBsZWFmLCB1aW50MzJf dCBzdWJsZWFmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3B1aWRfbGVh ZiAqZGF0YSkKLXsKLSAgICBjcHVpZF9jb3VudChsZWFmLCBzdWJsZWFmLCAmZGF0YS0+YSwgJmRh dGEtPmIsICZkYXRhLT5jLCAmZGF0YS0+ZCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHNhbml0aXNlX2Zl YXR1cmVzZXQodWludDMyX3QgKmZzKQogewogICAgIC8qIGZvcl9lYWNoX3NldF9iaXQoKSB1c2Vz IHVuc2lnbmVkIGxvbmdzLiAgRXh0ZW5kIHdpdGggemVyb2VzLiAqLwpkaWZmIC0tZ2l0IGEveGVu L2FyY2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmluZGV4IDQ2NTY5MzYuLjk0OTZj OTcgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysgYi94ZW4vYXJjaC94ODYvcHNy LmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDx4 ZW4vbGlzdC5oPgogI2luY2x1ZGUgPGFzbS9wc3IuaD4KKyNpbmNsdWRlIDxhc20veDg2X2VtdWxh dGUuaD4KIAogLyoKICAqIFRlcm1pbm9sb2d5OgpAQCAtMzUsNiArMzYsOSBAQAogI2RlZmluZSBQ U1JfQ0FUICAgICAgICAoMTw8MSkKICNkZWZpbmUgUFNSX0NEUCAgICAgICAgKDE8PDIpCiAKKyNk ZWZpbmUgQ0FUX0NCTV9MRU5fTUFTSyAweDFmCisjZGVmaW5lIENBVF9DT1NfTUFYX01BU0sgMHhm ZmZmCisKIC8qCiAgKiBQZXIgU0RNIGNoYXB0ZXIgJ0NhY2hlIEFsbG9jYXRpb24gVGVjaG5vbG9n eTogQ2FjaGUgTWFzayBDb25maWd1cmF0aW9uJywKICAqIHRoZSBNU1JzIHJhbmdpbmcgZnJvbSAw QzkwSCB0aHJvdWdoIDBEMEZIIChpbmNsdXNpdmUpLCBlbmFibGVzIHN1cHBvcnQgZm9yCkBAIC0x MzYsMTEgKzE0MCw4NCBAQCBzdHJ1Y3QgcHNyX2Fzc29jIHsKIAogc3RydWN0IHBzcl9jbXQgKl9f cmVhZF9tb3N0bHkgcHNyX2NtdDsKIAorc3RhdGljIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKl9f cmVhZF9tb3N0bHkgc29ja2V0X2luZm87CisKIHN0YXRpYyB1bnNpZ25lZCBpbnQgb3B0X3BzcjsK IHN0YXRpYyB1bnNpZ25lZCBpbnQgX19pbml0ZGF0YSBvcHRfcm1pZF9tYXggPSAyNTU7CitzdGF0 aWMgdW5zaWduZWQgaW50IF9fcmVhZF9tb3N0bHkgb3B0X2Nvc19tYXggPSBNQVhfQ09TX1JFR19D TlQ7CiBzdGF0aWMgdWludDY0X3Qgcm1pZF9tYXNrOwogc3RhdGljIERFRklORV9QRVJfQ1BVKHN0 cnVjdCBwc3JfYXNzb2MsIHBzcl9hc3NvYyk7CiAKKy8qCisgKiBEZWNsYXJlIGdsb2JhbCBmZWF0 dXJlIGxpc3QgZW50cnkgZm9yIGV2ZXJ5IGZlYXR1cmUgdG8gZmFjaWxpdGF0ZSB0aGUKKyAqIGZl YXR1cmUgbGlzdCBjcmVhdGlvbi4gSXQgd2lsbCBiZSBhbGxvY2F0ZWQgaW4gcHNyX2NwdV9wcmVw YXJlKCkgYW5kCisgKiBpbnNlcnRlZCBpbnRvIGZlYXR1cmUgbGlzdCBpbiBjcHVfaW5pdF93b3Jr KCkuIEl0IGlzIHByb3RlY3RlZCBieQorICogY3B1X2FkZF9yZW1vdmVfbG9jayBzcGlubG9jay4K KyAqLworc3RhdGljIHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDNfY2F0OworCisvKiBDb21tb24g ZnVuY3Rpb25zLiAqLworc3RhdGljIHZvaWQgZnJlZV9mZWF0dXJlKHN0cnVjdCBwc3Jfc29ja2V0 X2luZm8gKmluZm8pCit7CisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgKm5leHQ7CisKKyAg ICBpZiAoICFpbmZvICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBGcmVlIHJl c291cmNlcyBvZiBmZWF0dXJlcy4gQnV0IHdlIGRvIG5vdCBmcmVlIGdsb2JhbCBmZWF0dXJlIGxp c3QKKyAgICAgKiBlbnRyeSwgbGlrZSBmZWF0X2wzX2NhdC4gQWx0aG91Z2ggaXQgbWF5IGNhdXNl IGEgZmV3IG1lbW9yeSBsZWFrLAorICAgICAqIGl0IGlzIE9LIHNpbXBsaWZ5IHRoaW5ncy4KKyAg ICAgKi8KKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZmVhdCwgbmV4dCwgJmluZm8tPmZl YXRfbGlzdCwgbGlzdCkKKyAgICB7CisgICAgICAgIF9fY2xlYXJfYml0KGZlYXQtPmZlYXR1cmUs ICZpbmZvLT5mZWF0X21hc2spOworICAgICAgICBsaXN0X2RlbCgmZmVhdC0+bGlzdCk7CisgICAg ICAgIHhmcmVlKGZlYXQpOworICAgIH0KK30KKworLyogTDMgQ0FUIGZ1bmN0aW9ucyBpbXBsZW1l bnRhdGlvbi4gKi8KK3N0YXRpYyB2b2lkIGwzX2NhdF9pbml0X2ZlYXR1cmUoc3RydWN0IGNwdWlk X2xlYWYgcmVncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZlYXRf bm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBzcl9z b2NrZXRfaW5mbyAqaW5mbykKK3sKKyAgICBzdHJ1Y3QgcHNyX2NhdF9od19pbmZvIGwzX2NhdDsK KyAgICB1bnNpZ25lZCBpbnQgc29ja2V0OworCisgICAgLyogTm8gdmFsaWQgdmFsdWUgc28gZG8g bm90IGVuYWJsZSBmZWF0dXJlLiAqLworICAgIGlmICggIXJlZ3MuYSB8fCAhcmVncy5iICkKKyAg ICAgICAgcmV0dXJuOworCisgICAgbDNfY2F0LmNibV9sZW4gPSAocmVncy5hICYgQ0FUX0NCTV9M RU5fTUFTSykgKyAxOworICAgIGwzX2NhdC5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCByZWdz LmQgJiBDQVRfQ09TX01BWF9NQVNLKTsKKworICAgIC8qIGNvcz0wIGlzIHJlc2VydmVkIGFzIGRl ZmF1bHQgY2JtKGFsbCBiaXRzIHdpdGhpbiBjYm1fbGVuIGFyZSAxKS4gKi8KKyAgICBmZWF0LT5j b3NfcmVnX3ZhbFswXSA9ICgxdWxsIDw8IGwzX2NhdC5jYm1fbGVuKSAtIDE7CisKKyAgICBmZWF0 LT5mZWF0dXJlID0gUFNSX1NPQ0tFVF9MM19DQVQ7CisgICAgQVNTRVJUKCF0ZXN0X2JpdChQU1Jf U09DS0VUX0wzX0NBVCwgJmluZm8tPmZlYXRfbWFzaykpOworICAgIF9fc2V0X2JpdChQU1JfU09D S0VUX0wzX0NBVCwgJmluZm8tPmZlYXRfbWFzayk7CisKKyAgICBmZWF0LT5pbmZvLmwzX2NhdF9p bmZvID0gbDNfY2F0OworCisgICAgaW5mby0+bnJfZmVhdCsrOworCisgICAgLyogQWRkIHRoaXMg ZmVhdHVyZSBpbnRvIGxpc3QuICovCisgICAgbGlzdF9hZGRfdGFpbCgmZmVhdC0+bGlzdCwgJmlu Zm8tPmZlYXRfbGlzdCk7CisKKyAgICBzb2NrZXQgPSBjcHVfdG9fc29ja2V0KHNtcF9wcm9jZXNz b3JfaWQoKSk7CisgICAgaWYgKCAhb3B0X2NwdV9pbmZvICkKKyAgICAgICAgcmV0dXJuOworCisg ICAgcHJpbnRrKFhFTkxPR19JTkZPICJMMyBDQVQ6IGVuYWJsZWQgb24gc29ja2V0ICV1LCBjb3Nf bWF4OiV1LCBjYm1fbGVuOiV1XG4iLAorICAgICAgICAgICBzb2NrZXQsIGZlYXQtPmluZm8ubDNf Y2F0X2luZm8uY29zX21heCwKKyAgICAgICAgICAgZmVhdC0+aW5mby5sM19jYXRfaW5mby5jYm1f bGVuKTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmZWF0X29wcyBsM19jYXRfb3BzID0gewor fTsKKwogc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNoYXIgKnMsIGNoYXIgKnZh bHVlLCBjaGFyICpmZWF0dXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu c2lnbmVkIGludCBtYXNrKQogewpAQCAtMTgwLDYgKzI1Nyw5IEBAIHN0YXRpYyB2b2lkIF9faW5p dCBwYXJzZV9wc3JfcGFyYW0oY2hhciAqcykKICAgICAgICAgaWYgKCB2YWxfc3RyICYmICFzdHJj bXAocywgInJtaWRfbWF4IikgKQogICAgICAgICAgICAgb3B0X3JtaWRfbWF4ID0gc2ltcGxlX3N0 cnRvdWwodmFsX3N0ciwgTlVMTCwgMCk7CiAKKyAgICAgICAgaWYgKCB2YWxfc3RyICYmICFzdHJj bXAocywgImNvc19tYXgiKSApCisgICAgICAgICAgICBvcHRfY29zX21heCA9IHNpbXBsZV9zdHJ0 b3VsKHZhbF9zdHIsIE5VTEwsIDApOworCiAgICAgICAgIHMgPSBzcyArIDE7CiAgICAgfSB3aGls ZSAoIHNzICk7CiB9CkBAIC0zMzUsMTggKzQxNSwxMDcgQEAgdm9pZCBwc3JfZG9tYWluX2ZyZWUo c3RydWN0IGRvbWFpbiAqZCkKICAgICBwc3JfZnJlZV9ybWlkKGQpOwogfQogCitzdGF0aWMgdm9p ZCBjcHVfaW5pdF93b3JrKHZvaWQpCit7CisgICAgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5m bzsKKyAgICB1bnNpZ25lZCBpbnQgc29ja2V0OworICAgIHVuc2lnbmVkIGludCBjcHUgPSBzbXBf cHJvY2Vzc29yX2lkKCk7CisgICAgc3RydWN0IGZlYXRfbm9kZSAqZmVhdDsKKyAgICBzdHJ1Y3Qg Y3B1aWRfbGVhZiByZWdzID0gey5hID0gMCwgLmIgPSAwLCAuYyA9IDAsIC5kID0gMH07CisKKyAg ICBpZiAoICFjcHVfaGFzKCZjdXJyZW50X2NwdV9kYXRhLCBYODZfRkVBVFVSRV9QUUUpICkKKyAg ICAgICAgcmV0dXJuOworICAgIGVsc2UgaWYgKCBjdXJyZW50X2NwdV9kYXRhLmNwdWlkX2xldmVs IDwgUFNSX0NQVUlEX0xFVkVMX0NBVCApCisgICAgeworICAgICAgICBfX2NsZWFyX2JpdChYODZf RkVBVFVSRV9QUUUsIGN1cnJlbnRfY3B1X2RhdGEueDg2X2NhcGFiaWxpdHkpOworICAgICAgICBy ZXR1cm47CisgICAgfQorCisgICAgc29ja2V0ID0gY3B1X3RvX3NvY2tldChjcHUpOworICAgIGlu Zm8gPSBzb2NrZXRfaW5mbyArIHNvY2tldDsKKyAgICBpZiAoIGluZm8tPmZlYXRfbWFzayApCisg ICAgICAgIHJldHVybjsKKworICAgIElOSVRfTElTVF9IRUFEKCZpbmZvLT5mZWF0X2xpc3QpOwor ICAgIHNwaW5fbG9ja19pbml0KCZpbmZvLT5yZWZfbG9jayk7CisKKyAgICBjcHVpZF9jb3VudF9s ZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDAsICZyZWdzKTsKKyAgICBpZiAoIHJlZ3MuYiAmIFBT Ul9SRVNPVVJDRV9UWVBFX0wzICkKKyAgICB7CisgICAgICAgIGNwdWlkX2NvdW50X2xlYWYoUFNS X0NQVUlEX0xFVkVMX0NBVCwgMSwgJnJlZ3MpOworCisgICAgICAgIGZlYXQgPSBmZWF0X2wzX2Nh dDsKKyAgICAgICAgLyogcHNyX2NwdV9wcmVwYXJlIHdpbGwgYWxsb2NhdGUgaXQgb24gc3Vic2Vx dWVudCBDUFUgb25saW5pbmcuICovCisgICAgICAgIGZlYXRfbDNfY2F0ID0gTlVMTDsKKyAgICAg ICAgZmVhdC0+b3BzID0gbDNfY2F0X29wczsKKworICAgICAgICBsM19jYXRfaW5pdF9mZWF0dXJl KHJlZ3MsIGZlYXQsIGluZm8pOworICAgIH0KK30KKworc3RhdGljIHZvaWQgY3B1X2Zpbmlfd29y ayh1bnNpZ25lZCBpbnQgY3B1KQoreworICAgIHVuc2lnbmVkIGludCBzb2NrZXQgPSBjcHVfdG9f c29ja2V0KGNwdSk7CisKKyAgICBpZiAoICFzb2NrZXRfY3B1bWFza1tzb2NrZXRdIHx8IGNwdW1h c2tfZW1wdHkoc29ja2V0X2NwdW1hc2tbc29ja2V0XSkgKQorICAgIHsKKyAgICAgICAgZnJlZV9m ZWF0dXJlKHNvY2tldF9pbmZvICsgc29ja2V0KTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIF9f aW5pdCBpbml0X3Bzcih2b2lkKQoreworICAgIGlmICggb3B0X2Nvc19tYXggPCAxICkKKyAgICB7 CisgICAgICAgIHByaW50ayhYRU5MT0dfSU5GTyAiQ0FUOiBkaXNhYmxlZCwgY29zX21heCBpcyB0 b28gc21hbGxcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc29ja2V0X2luZm8g PSB4emFsbG9jX2FycmF5KHN0cnVjdCBwc3Jfc29ja2V0X2luZm8sIG5yX3NvY2tldHMpOworCisg ICAgaWYgKCAhc29ja2V0X2luZm8gKQorICAgIHsKKyAgICAgICAgcHJpbnRrKFhFTkxPR19JTkZP ICJGYWlsZWQgdG8gYWxsb2Mgc29ja2V0X2luZm8hXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAg IH0KK30KKworc3RhdGljIHZvaWQgX19pbml0IHBzcl9mcmVlKHZvaWQpCit7CisgICAgdW5zaWdu ZWQgaW50IGk7CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IG5yX3NvY2tldHM7IGkrKyApCisgICAg ICAgIGZyZWVfZmVhdHVyZSgmc29ja2V0X2luZm9baV0pOworCisgICAgeGZyZWUoc29ja2V0X2lu Zm8pOworICAgIHNvY2tldF9pbmZvID0gTlVMTDsKK30KKwogc3RhdGljIGludCBwc3JfY3B1X3By ZXBhcmUodW5zaWduZWQgaW50IGNwdSkKIHsKKyAgICBpZiAoICFzb2NrZXRfaW5mbyApCisgICAg ICAgIHJldHVybiAwOworCisgICAgLyogTWFsbG9jIG1lbW9yeSBmb3IgdGhlIGdsb2JhbCBmZWF0 dXJlIGhlYWQgaGVyZS4gKi8KKyAgICBpZiAoIGZlYXRfbDNfY2F0ID09IE5VTEwgJiYKKyAgICAg ICAgIChmZWF0X2wzX2NhdCA9IHh6YWxsb2Moc3RydWN0IGZlYXRfbm9kZSkpID09IE5VTEwgKQor ICAgICAgICByZXR1cm4gLUVOT01FTTsKKwogICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgdm9p ZCBwc3JfY3B1X2luaXQodm9pZCkKIHsKKyAgICBpZiAoIHNvY2tldF9pbmZvICkKKyAgICAgICAg Y3B1X2luaXRfd29yaygpOworCiAgICAgcHNyX2Fzc29jX2luaXQoKTsKIH0KIAogc3RhdGljIHZv aWQgcHNyX2NwdV9maW5pKHVuc2lnbmVkIGludCBjcHUpCiB7CisgICAgaWYgKCBzb2NrZXRfaW5m byApCisgICAgICAgIGNwdV9maW5pX3dvcmsoY3B1KTsKICAgICByZXR1cm47CiB9CiAKQEAgLTM4 OCwxMCArNTU3LDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IHBzcl9wcmVzbXBfaW5pdCh2b2lkKQog ICAgIGlmICggKG9wdF9wc3IgJiBQU1JfQ01UKSAmJiBvcHRfcm1pZF9tYXggKQogICAgICAgICBp bml0X3Bzcl9jbXQob3B0X3JtaWRfbWF4KTsKIAotICAgIHBzcl9jcHVfcHJlcGFyZSgwKTsKKyAg ICBpZiAoIG9wdF9wc3IgJiBQU1JfQ0FUICkKKyAgICAgICAgaW5pdF9wc3IoKTsKKworICAgIGlm ICggcHNyX2NwdV9wcmVwYXJlKDApICkKKyAgICAgICAgcHNyX2ZyZWUoKTsKIAogICAgIHBzcl9j cHVfaW5pdCgpOwotICAgIGlmICggcHNyX2NtdF9lbmFibGVkKCkgKQorICAgIGlmICggcHNyX2Nt dF9lbmFibGVkKCkgfHwgc29ja2V0X2luZm8gKQogICAgICAgICByZWdpc3Rlcl9jcHVfbm90aWZp ZXIoJmNwdV9uZmIpOwogCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9h c20teDg2L3Byb2Nlc3Nvci5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni9wcm9jZXNzb3IuaAppbmRl eCA3NzM1YmMyLi5lYjBhMWU5IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3Byb2Nl c3Nvci5oCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvcHJvY2Vzc29yLmgKQEAgLTE0LDYgKzE0 LDcgQEAKICNpbmNsdWRlIDxhc20vdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vY3B1ZmVhdHVyZS5o PgogI2luY2x1ZGUgPGFzbS9kZXNjLmg+CisjaW5jbHVkZSA8YXNtL3g4Nl9lbXVsYXRlLmg+CiAj ZW5kaWYKIAogI2luY2x1ZGUgPGFzbS94ODYtZGVmbnMuaD4KQEAgLTI1OSw2ICsyNjAsMTIgQEAg c3RhdGljIGFsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50IGNwdWlkX2NvdW50X2VieCgKICAgICBy ZXR1cm4gZWJ4OwogfQogCitzdGF0aWMgYWx3YXlzX2lubGluZSB2b2lkIGNwdWlkX2NvdW50X2xl YWYodWludDMyX3QgbGVhZiwgdWludDMyX3Qgc3VibGVhZiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY3B1aWRfbGVhZiAqZGF0YSkKK3sKKyAgICBj cHVpZF9jb3VudChsZWFmLCBzdWJsZWFmLCAmZGF0YS0+YSwgJmRhdGEtPmIsICZkYXRhLT5jLCAm ZGF0YS0+ZCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyByZWFkX2NyMCh2b2lk KQogewogICAgIHVuc2lnbmVkIGxvbmcgY3IwOwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhl bi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK