From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v8 09/24] x86: refactor psr: set value: assemble features value array. Date: Wed, 15 Feb 2017 16:49:24 +0800 Message-ID: <1487148579-7243-10-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 1cdvKw-0007Mv-MP for xen-devel@lists.xenproject.org; Wed, 15 Feb 2017 08:53:18 +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 T25seSBjYW4gb25lIENPUyBJRCBiZSB1c2VkIGJ5IG9uZSBkb21haW4gYXQgb25lIHRpbWUuIFRo YXQgbWVhbnMgYWxsIGVuYWJsZWQKZmVhdHVyZXMnIENPUyByZWdpc3RlcnMgYXQgdGhpcyBDT1Mg SUQgYXJlIHZhbGlkIGZvciB0aGlzIGRvbWFpbiBhdCB0aGF0IHRpbWUuCgpXaGVuIHVzZXIgdXBk YXRlcyBhIGZlYXR1cmUncyB2YWx1ZSwgd2UgbmVlZCBtYWtlIHN1cmUgYWxsIG90aGVyIGZlYXR1 cmVzJwp2YWx1ZXMgYXJlIG5vdCBhZmZlY3RlZC4gU28sIHdlIGZpcnN0bHkgbmVlZCBhc3NlbWJs ZSBhbiBhcnJheSB3aGljaCBjb250YWlucwphbGwgZmVhdHVyZXMgY3VycmVudCB2YWx1ZXMgYW5k IHJlcGxhY2UgdGhlIHNldHRpbmcgZmVhdHVyZSdzIHZhbHVlIGluIGFycmF5CnRvIG5ldyB2YWx1 ZS4KClRoZW4sIHdlIGNhbiB0cnkgdG8gZmluZCBpZiB0aGVyZSBpcyBhIENPUyBJRCBvbiB3aGlj aCBhbGwgZmVhdHVyZXMnIENPUwpyZWdpc3RlcnMgdmFsdWVzIGFyZSBzYW1lIGFzIHRoZSBhcnJh eS4gSWYgd2UgY2FuIGZpbmQsIHdlIGp1c3QgdXNlIHRoaXMgQ09TCklELiBJZiBmYWlsIHRvIGZp bmQsIHdlIG5lZWQgYWxsb2NhdGUgYSBuZXcgQ09TIElELgoKVGhpcyBwYXRjaCBpbXBsZW1lbnRz IHZhbHVlIGFycmF5IGFzc2VtYmxpbmcgZmxvdy4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWku eS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyB8IDE1MSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMSBmaWxl IGNoYW5nZWQsIDE0NiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3hlbi9hcmNoL3g4Ni9wc3IuYyBiL3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCBkNDE0YjVlLi5h ZTEwOGI5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2 L3Bzci5jCkBAIC0xMTksNiArMTE5LDMyIEBAIHN0cnVjdCBmZWF0X29wcyB7CiAgICAgLyogZ2V0 X3ZhbCBpcyB1c2VkIHRvIGdldCBmZWF0dXJlIENPUyByZWdpc3RlciB2YWx1ZS4gKi8KICAgICBi b29sICgqZ2V0X3ZhbCkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdW5zaWduZWQgaW50 IGNvcywKICAgICAgICAgICAgICAgICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLCB1aW50NjRfdCAq dmFsKTsKKyAgICAvKgorICAgICAqIGdldF9jb3NfbnVtIGlzIHVzZWQgdG8gZ2V0IHRoZSBDT1Mg cmVnaXN0ZXJzIGFtb3VudCB1c2VkIGJ5IHRoZQorICAgICAqIGZlYXR1cmUgZm9yIG9uZSBzZXR0 aW5nLCBlLmcuIENEUCB1c2VzIDIgQ09TcyBidXQgQ0FUIHVzZXMgMS4KKyAgICAgKi8KKyAgICB1 bnNpZ25lZCBpbnQgKCpnZXRfY29zX251bSkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCk7 CisgICAgLyoKKyAgICAgKiBnZXRfb2xkX3ZhbCBhbmQgc2V0X25ld192YWwgYXJlIGEgcGFpciBv ZiBmdW5jdGlvbnMgY2FsbGVkIGluIG9yZGVyLgorICAgICAqIFRoZSBjYWxsZXIgd2lsbCB0cmF2 ZXJzZSBhbGwgZmVhdHVyZXMgaW4gdGhlIGxpc3QgYW5kIGNhbGwgYm90aAorICAgICAqIGZ1bmN0 aW9ucyBmb3IgZXZlcnkgZmVhdHVyZSB0byBkbyBiZWxvdyB0d28gdGhpbmdzOgorICAgICAqIDEu IGdldCBvbGRfY29zIHJlZ2lzdGVyIHZhbHVlIG9mIGFsbCBzdXBwb3J0ZWQgZmVhdHVyZXMgYW5k CisgICAgICogMi4gc2V0IHRoZSBuZXcgdmFsdWUgZm9yIHRoZSBmZWF0dXJlLgorICAgICAqCisg ICAgICogQWxsIHRoZSB2YWx1ZXMgYXJlIHNldCBpbnRvIHZhbHVlIGFycmF5IGFjY29yZGluZyB0 aGUgdHJhdmVyc2FsIG9yZGVyLAorICAgICAqIG1lYW5pbmcgdGhlIHNhbWUgb3JkZXIgb2YgZmVh dHVyZSBsaXN0IG1lbWJlcnMuCisgICAgICoKKyAgICAgKiBUaGUgcmV0dXJuIHZhbHVlIG1lYW5p bmc6CisgICAgICogMCAtIHN1Y2Nlc3MuCisgICAgICogbmVnYXRpdmUgLSBlcnJvci4KKyAgICAg Ki8KKyAgICBpbnQgKCpnZXRfb2xkX3ZhbCkodWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAg ICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zKTsKKyAgICBpbnQgKCpzZXRfbmV3X3ZhbCkodWlu dDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X25v ZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgbSk7CiB9OwogCiAvKgpAQCAtMjA3LDYgKzIz MywyOSBAQCBzdGF0aWMgZW51bSBwc3JfZmVhdF90eXBlIHBzcl9jYm1fdHlwZV90b19mZWF0X3R5 cGUoZW51bSBjYm1fdHlwZSB0eXBlKQogICAgIHJldHVybiBmZWF0X3R5cGU7CiB9CiAKK3N0YXRp YyBib29sIHBzcl9jaGVja19jYm0odW5zaWduZWQgaW50IGNibV9sZW4sIHVpbnQ2NF90IGNibSkK K3sKKyAgICB1bnNpZ25lZCBpbnQgZmlyc3RfYml0LCB6ZXJvX2JpdDsKKworICAgIC8qIFNldCBi aXRzIHNob3VsZCBvbmx5IGluIHRoZSByYW5nZSBvZiBbMCwgY2JtX2xlbikuICovCisgICAgaWYg KCBjYm0gJiAofjB1bGwgPDwgY2JtX2xlbikgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg ICAvKiBBdCBsZWFzdCBvbmUgYml0IG5lZWQgdG8gYmUgc2V0LiAqLworICAgIGlmICggY2JtID09 IDAgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmaXJzdF9iaXQgPSBmaW5kX2ZpcnN0 X2JpdCgmY2JtLCBjYm1fbGVuKTsKKyAgICB6ZXJvX2JpdCA9IGZpbmRfbmV4dF96ZXJvX2JpdCgm Y2JtLCBjYm1fbGVuLCBmaXJzdF9iaXQpOworCisgICAgLyogU2V0IGJpdHMgc2hvdWxkIGJlIGNv bnRpZ3VvdXMuICovCisgICAgaWYgKCB6ZXJvX2JpdCA8IGNibV9sZW4gJiYKKyAgICAgICAgIGZp bmRfbmV4dF9iaXQoJmNibSwgY2JtX2xlbiwgemVyb19iaXQpIDwgY2JtX2xlbiApCisgICAgICAg IHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiAvKiBMMyBDQVQgZnVuY3Rp b25zIGltcGxlbWVudGF0aW9uLiAqLwogc3RhdGljIHZvaWQgbDNfY2F0X2luaXRfZmVhdHVyZShz dHJ1Y3QgY3B1aWRfbGVhZiByZWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZmVhdF9ub2RlICpmZWF0LApAQCAtMjc1LDEwICszMjQsNDUgQEAgc3RhdGljIGJvb2wg bDNfY2F0X2dldF92YWwoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdW5zaWduZWQgaW50 IGNvcywKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGludCBsM19jYXRf Z2V0X2Nvc19udW0oY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCkKK3sKKyAgICByZXR1cm4g MTsKK30KKworc3RhdGljIGludCBsM19jYXRfZ2V0X29sZF92YWwodWludDY0X3QgdmFsW10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MpCit7 CisgICAgaWYgKCBvbGRfY29zID4gZmVhdC0+aW5mby5sM19jYXRfaW5mby5jb3NfbWF4ICkKKyAg ICAgICAgLyogVXNlIGRlZmF1bHQgdmFsdWUuICovCisgICAgICAgIG9sZF9jb3MgPSAwOworCisg ICAgLyogQ0FUICovCisgICAgdmFsWzBdID0gIGZlYXQtPmNvc19yZWdfdmFsW29sZF9jb3NdOwor CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgbDNfY2F0X3NldF9uZXdfdmFsKHVpbnQ2 NF90IHZhbFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZl YXRfbm9kZSAqZmVhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5 cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG0pCit7Cisg ICAgaWYgKCAhcHNyX2NoZWNrX2NibShmZWF0LT5pbmZvLmwzX2NhdF9pbmZvLmNibV9sZW4sIG0p ICkKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICB2YWxbMF0gPSBtOworCisgICAgcmV0 dXJuIDA7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmVhdF9vcHMgbDNfY2F0X29wcyA9IHsK ICAgICAuZ2V0X2Nvc19tYXggPSBsM19jYXRfZ2V0X2Nvc19tYXgsCiAgICAgLmdldF9mZWF0X2lu Zm8gPSBsM19jYXRfZ2V0X2ZlYXRfaW5mbywKICAgICAuZ2V0X3ZhbCA9IGwzX2NhdF9nZXRfdmFs LAorICAgIC5nZXRfY29zX251bSA9IGwzX2NhdF9nZXRfY29zX251bSwKKyAgICAuZ2V0X29sZF92 YWwgPSBsM19jYXRfZ2V0X29sZF92YWwsCisgICAgLnNldF9uZXdfdmFsID0gbDNfY2F0X3NldF9u ZXdfdmFsLAogfTsKIAogc3RhdGljIHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNoYXIgKnMs IGNoYXIgKnZhbHVlLCBjaGFyICpmZWF0dXJlLApAQCAtNTQ5LDE1ICs2MzMsNDIgQEAgaW50IHBz cl9nZXRfdmFsKHN0cnVjdCBkb21haW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCiAvKiBTZXQg dmFsdWUgZnVuY3Rpb25zICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGdldF9jb3NfbnVtKGNvbnN0 IHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm8pCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgY29u c3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdF90bXA7CisgICAgdW5zaWduZWQgaW50IG51bSA9IDA7 CisKKyAgICAvKiBHZXQgYWxsIGZlYXR1cmVzIHRvdGFsIGFtb3VudC4gKi8KKyAgICBsaXN0X2Zv cl9lYWNoX2VudHJ5KGZlYXRfdG1wLCAmaW5mby0+ZmVhdF9saXN0LCBsaXN0KQorICAgICAgICBu dW0gKz0gZmVhdF90bXAtPm9wcy5nZXRfY29zX251bShmZWF0X3RtcCk7CisKKyAgICByZXR1cm4g bnVtOwogfQogCi1zdGF0aWMgaW50IGFzc2VtYmxlX3ZhbF9hcnJheSh1aW50NjRfdCAqdmFsLAor c3RhdGljIGludCBjb21iaW5lX3ZhbF9hcnJheSh1aW50NjRfdCAqdmFsLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDMyX3QgYXJyYXlfbGVuLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RydWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBvbGRfY29zKQogewotICAgIHJldHVy biAtRUlOVkFMOworICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7CisgICAgaW50IHJl dDsKKyAgICB1aW50NjRfdCAqdmFsX3RtcCA9IHZhbDsKKworICAgIGlmICggIXZhbCApCisgICAg ICAgIHJldHVybiAtRUlOVkFMOworCisgICAgLyogR2V0IGFsbCBmZWF0dXJlcyBjdXJyZW50IHZh bHVlcyBhY2NvcmRpbmcgdG8gb2xkX2Nvcy4gKi8KKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGZl YXQsICZpbmZvLT5mZWF0X2xpc3QsIGxpc3QpCisgICAgeworICAgICAgICAvKiB2YWx1ZSBnZXR0 aW5nIG9yZGVyIGlzIHNhbWUgYXMgZmVhdHVyZSBsaXN0ICovCisgICAgICAgIHJldCA9IGZlYXQt Pm9wcy5nZXRfb2xkX3ZhbCh2YWxfdG1wLCBmZWF0LCBvbGRfY29zKTsKKyAgICAgICAgaWYgKCBy ZXQgKQorICAgICAgICAgICAgcmV0dXJuIHJldDsKKworICAgICAgICB2YWxfdG1wICs9IGZlYXQt Pm9wcy5nZXRfY29zX251bShmZWF0KTsKKyAgICAgICAgaWYgKCB2YWxfdG1wIC0gdmFsID4gYXJy YXlfbGVuKQorICAgICAgICAgICAgcmV0dXJuIC1FTk9TUEM7CisgICAgfQorCisgICAgcmV0dXJu IDA7CiB9CiAKIHN0YXRpYyBpbnQgc2V0X25ld192YWxfdG9fYXJyYXkodWludDY0X3QgKnZhbCwK QEAgLTU2Nyw3ICs2NzgsMzcgQEAgc3RhdGljIGludCBzZXRfbmV3X3ZhbF90b19hcnJheSh1aW50 NjRfdCAqdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGNibV90eXBl IHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG0pCiB7Ci0g ICAgcmV0dXJuIC1FSU5WQUw7CisgICAgY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdDsKKyAg ICBpbnQgcmV0OworICAgIHVpbnQ2NF90ICp2YWxfdG1wID0gdmFsOworCisgICAgLyogU2V0IG5l dyB2YWx1ZSBpbnRvIGFycmF5IGFjY29yZGluZyB0byBmZWF0dXJlJ3MgcG9zaXRpb24gaW4gYXJy YXkuICovCisgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShmZWF0LCAmaW5mby0+ZmVhdF9saXN0LCBs aXN0KQorICAgIHsKKyAgICAgICAgaWYgKCBmZWF0LT5mZWF0dXJlICE9IGZlYXRfdHlwZSApCisg ICAgICAgIHsKKyAgICAgICAgICAgIHZhbF90bXAgKz0gZmVhdC0+b3BzLmdldF9jb3NfbnVtKGZl YXQpOworICAgICAgICAgICAgaWYgKCB2YWxfdG1wIC0gdmFsID4gYXJyYXlfbGVuKQorICAgICAg ICAgICAgICAgIHJldHVybiAtRU5PU1BDOworCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg ICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFZhbHVlIHNldHRpbmcgcG9zaXRpb24gaXMg c2FtZSBhcyBmZWF0dXJlIGxpc3QuCisgICAgICAgICAqIERpZmZlcmVudCBmZWF0dXJlcyBtYXkg aGF2ZSBkaWZmZXJlbnQgc2V0dGluZyBiZWhhdmlvcnMsIGUuZy4gQ0RQCisgICAgICAgICAqIGhh cyB0d28gdmFsdWVzIChEQVRBL0NPREUpIHdoaWNoIG5lZWQgdXMgdG8gc2F2ZSBpbnB1dCB2YWx1 ZSB0bworICAgICAgICAgKiBkaWZmZXJlbnQgcG9zaXRpb24gaW4gdGhlIGFycmF5IGFjY29yZGlu ZyB0byB0eXBlLCBzbyB3ZSBoYXZlIHRvCisgICAgICAgICAqIG1haW50YWluIGEgY2FsbGJhY2sg ZnVuY3Rpb24uCisgICAgICAgICAqLworICAgICAgICByZXQgPSBmZWF0LT5vcHMuc2V0X25ld192 YWwodmFsX3RtcCwgZmVhdCwgdHlwZSwgbSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAg ICAgIHJldHVybiByZXQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0K KworICAgIHJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IGZpbmRfY29zKGNvbnN0IHVpbnQ2NF90 ICp2YWwsIHVpbnQzMl90IGFycmF5X2xlbiwKQEAgLTYzOCw3ICs3NzksNyBAQCBpbnQgcHNyX3Nl dF92YWwoc3RydWN0IGRvbWFpbiAqZCwgdW5zaWduZWQgaW50IHNvY2tldCwKICAgICBpZiAoICF2 YWxfYXJyYXkgKQogICAgICAgICByZXR1cm4gLUVOT01FTTsKIAotICAgIGlmICggKHJldCA9IGFz c2VtYmxlX3ZhbF9hcnJheSh2YWxfYXJyYXksIGFycmF5X2xlbiwgaW5mbywgb2xkX2NvcykpICE9 IDAgKQorICAgIGlmICggKHJldCA9IGNvbWJpbmVfdmFsX2FycmF5KHZhbF9hcnJheSwgYXJyYXlf bGVuLCBpbmZvLCBvbGRfY29zKSkgIT0gMCApCiAgICAgewogICAgICAgICB4ZnJlZSh2YWxfYXJy YXkpOwogICAgICAgICByZXR1cm4gcmV0OwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK