From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v6 09/24] x86: refactor psr: set value: assemble features value array. Date: Wed, 8 Feb 2017 16:16:01 +0800 Message-ID: <1486541776-8406-10-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 1cbNTO-0005uV-MT for xen-devel@lists.xenproject.org; Wed, 08 Feb 2017 08:19:30 +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 T25seSBjYW4gb25lIENPUyBJRCBiZSB1c2VkIGJ5IG9uZSBkb21haW4gYXQgb25lIHRpbWUuIFRo YXQgbWVhbnMgYWxsIGVuYWJsZWQKZmVhdHVyZXMnIENPUyByZWdpc3RlcnMgYXQgdGhpcyBDT1Mg SUQgYXJlIHZhbGlkIGZvciB0aGlzIGRvbWFpbiBhdCB0aGF0IHRpbWUuCgpXaGVuIHVzZXIgdXBk YXRlcyBhIGZlYXR1cmUncyB2YWx1ZSwgd2UgbmVlZCBtYWtlIHN1cmUgYWxsIG90aGVyIGZlYXR1 cmVzJwp2YWx1ZXMgYXJlIG5vdCBhZmZlY3RlZC4gU28sIHdlIGZpcnN0bHkgbmVlZCBhc3NlbWJs ZSBhbiBhcnJheSB3aGljaCBjb250YWlucwphbGwgZmVhdHVyZXMgY3VycmVudCB2YWx1ZXMgYW5k IHJlcGxhY2UgdGhlIHNldHRpbmcgZmVhdHVyZSdzIHZhbHVlIGluIGFycmF5CnRvIG5ldyB2YWx1 ZS4KClRoZW4sIHdlIGNhbiB0cnkgdG8gZmluZCBpZiB0aGVyZSBpcyBhIENPUyBJRCBvbiB3aGlj aCBhbGwgZmVhdHVyZXMnIENPUwpyZWdpc3RlcnMgdmFsdWVzIGFyZSBzYW1lIGFzIHRoZSBhcnJh eS4gSWYgd2UgY2FuIGZpbmQsIHdlIGp1c3QgdXNlIHRoaXMgQ09TCklELiBJZiBmYWlsIHRvIGZp bmQsIHdlIG5lZWQgYWxsb2NhdGUgYSBuZXcgQ09TIElELgoKVGhpcyBwYXRjaCBpbXBsZW1lbnRz IHZhbHVlIGFycmF5IGFzc2VtYmxpbmcgZmxvdy4KClNpZ25lZC1vZmYtYnk6IFlpIFN1biA8eWku eS5zdW5AbGludXguaW50ZWwuY29tPgotLS0KdjY6CiAgICAtIGNoYW5nZSAnYXNzZW1ibGVfdmFs X2FycmF5JyB0byAnY29tYmluZV92YWxfYXJyYXknLgogICAgLSBjaGVjayByZXR1cm4gdmFsdWUg b2YgJ2dldF9vbGRfdmFsJy4KICAgIC0gcmVwbGFjZSBzb21lICdFSU5WQUwnIHRvICdFTk9TUEMn LgotLS0KIHhlbi9hcmNoL3g4Ni9wc3IuYyB8IDE1MSArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLQogMSBmaWxlIGNoYW5nZWQsIDE0NiBpbnNlcnRp b25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9wc3IuYyBi L3hlbi9hcmNoL3g4Ni9wc3IuYwppbmRleCAyNDMzNDRiLi5jM2JhN2VlIDEwMDY0NAotLS0gYS94 ZW4vYXJjaC94ODYvcHNyLmMKKysrIGIveGVuL2FyY2gveDg2L3Bzci5jCkBAIC0xMTksNiArMTE5 LDMyIEBAIHN0cnVjdCBmZWF0X29wcyB7CiAgICAgLyogZ2V0X3ZhbCBpcyB1c2VkIHRvIGdldCBm ZWF0dXJlIENPUyByZWdpc3RlciB2YWx1ZS4gKi8KICAgICBib29sICgqZ2V0X3ZhbCkoY29uc3Qg c3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdW5zaWduZWQgaW50IGNvcywKICAgICAgICAgICAgICAg ICAgICAgZW51bSBjYm1fdHlwZSB0eXBlLCB1aW50NjRfdCAqdmFsKTsKKyAgICAvKgorICAgICAq IGdldF9jb3NfbnVtIGlzIHVzZWQgdG8gZ2V0IHRoZSBDT1MgcmVnaXN0ZXJzIGFtb3VudCB1c2Vk IGJ5IHRoZQorICAgICAqIGZlYXR1cmUgZm9yIG9uZSBzZXR0aW5nLCBlLmcuIENEUCB1c2VzIDIg Q09TcyBidXQgQ0FUIHVzZXMgMS4KKyAgICAgKi8KKyAgICB1bnNpZ25lZCBpbnQgKCpnZXRfY29z X251bSkoY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCk7CisgICAgLyoKKyAgICAgKiBnZXRf b2xkX3ZhbCBhbmQgc2V0X25ld192YWwgYXJlIGEgcGFpciBvZiBmdW5jdGlvbnMgY2FsbGVkIGlu IG9yZGVyLgorICAgICAqIFRoZSBjYWxsZXIgd2lsbCB0cmF2ZXJzZSBhbGwgZmVhdHVyZXMgaW4g dGhlIGxpc3QgYW5kIGNhbGwgYm90aAorICAgICAqIGZ1bmN0aW9ucyBmb3IgZXZlcnkgZmVhdHVy ZSB0byBkbyBiZWxvdyB0d28gdGhpbmdzOgorICAgICAqIDEuIGdldCBvbGRfY29zIHJlZ2lzdGVy IHZhbHVlIG9mIGFsbCBzdXBwb3J0ZWQgZmVhdHVyZXMgYW5kCisgICAgICogMi4gc2V0IHRoZSBu ZXcgdmFsdWUgZm9yIHRoZSBmZWF0dXJlLgorICAgICAqCisgICAgICogQWxsIHRoZSB2YWx1ZXMg YXJlIHNldCBpbnRvIHZhbHVlIGFycmF5IGFjY29yZGluZyB0aGUgdHJhdmVyc2FsIG9yZGVyLAor ICAgICAqIG1lYW5pbmcgdGhlIHNhbWUgb3JkZXIgb2YgZmVhdHVyZSBsaXN0IG1lbWJlcnMuCisg ICAgICoKKyAgICAgKiBUaGUgcmV0dXJuIHZhbHVlIG1lYW5pbmc6CisgICAgICogMCAtIHN1Y2Nl c3MuCisgICAgICogbmVnYXRpdmUgLSBlcnJvci4KKyAgICAgKi8KKyAgICBpbnQgKCpnZXRfb2xk X3ZhbCkodWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBv bGRfY29zKTsKKyAgICBpbnQgKCpzZXRfbmV3X3ZhbCkodWludDY0X3QgdmFsW10sCisgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQsCisgICAgICAgICAg ICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg dWludDY0X3QgbSk7CiB9OwogCiAvKgpAQCAtMjA0LDYgKzIzMCwyOSBAQCBzdGF0aWMgZW51bSBw c3JfZmVhdF90eXBlIHBzcl9jYm1fdHlwZV90b19mZWF0X3R5cGUoZW51bSBjYm1fdHlwZSB0eXBl KQogICAgIHJldHVybiBmZWF0X3R5cGU7CiB9CiAKK3N0YXRpYyBib29sIHBzcl9jaGVja19jYm0o dW5zaWduZWQgaW50IGNibV9sZW4sIHVpbnQ2NF90IGNibSkKK3sKKyAgICB1bnNpZ25lZCBpbnQg Zmlyc3RfYml0LCB6ZXJvX2JpdDsKKworICAgIC8qIFNldCBiaXRzIHNob3VsZCBvbmx5IGluIHRo ZSByYW5nZSBvZiBbMCwgY2JtX2xlbikuICovCisgICAgaWYgKCBjYm0gJiAofjB1bGwgPDwgY2Jt X2xlbikgKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvKiBBdCBsZWFzdCBvbmUgYml0 IG5lZWQgdG8gYmUgc2V0LiAqLworICAgIGlmICggY2JtID09IDAgKQorICAgICAgICByZXR1cm4g ZmFsc2U7CisKKyAgICBmaXJzdF9iaXQgPSBmaW5kX2ZpcnN0X2JpdCgmY2JtLCBjYm1fbGVuKTsK KyAgICB6ZXJvX2JpdCA9IGZpbmRfbmV4dF96ZXJvX2JpdCgmY2JtLCBjYm1fbGVuLCBmaXJzdF9i aXQpOworCisgICAgLyogU2V0IGJpdHMgc2hvdWxkIGJlIGNvbnRpZ3VvdXMuICovCisgICAgaWYg KCB6ZXJvX2JpdCA8IGNibV9sZW4gJiYKKyAgICAgICAgIGZpbmRfbmV4dF9iaXQoJmNibSwgY2Jt X2xlbiwgemVyb19iaXQpIDwgY2JtX2xlbiApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg IHJldHVybiB0cnVlOworfQorCiAvKiBMMyBDQVQgZnVuY3Rpb25zIGltcGxlbWVudGF0aW9uLiAq Lwogc3RhdGljIHZvaWQgbDNfY2F0X2luaXRfZmVhdHVyZShzdHJ1Y3QgY3B1aWRfbGVhZiByZWdz LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0 LApAQCAtMjcyLDEwICszMjEsNDUgQEAgc3RhdGljIGJvb2wgbDNfY2F0X2dldF92YWwoY29uc3Qg c3RydWN0IGZlYXRfbm9kZSAqZmVhdCwgdW5zaWduZWQgaW50IGNvcywKICAgICByZXR1cm4gdHJ1 ZTsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGludCBsM19jYXRfZ2V0X2Nvc19udW0oY29uc3Qgc3Ry dWN0IGZlYXRfbm9kZSAqZmVhdCkKK3sKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludCBs M19jYXRfZ2V0X29sZF92YWwodWludDY0X3QgdmFsW10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBzdHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgaW50IG9sZF9jb3MpCit7CisgICAgaWYgKCBvbGRfY29zID4g ZmVhdC0+aW5mby5sM19jYXRfaW5mby5jb3NfbWF4ICkKKyAgICAgICAgLyogVXNlIGRlZmF1bHQg dmFsdWUuICovCisgICAgICAgIG9sZF9jb3MgPSAwOworCisgICAgLyogQ0FUICovCisgICAgdmFs WzBdID0gIGZlYXQtPmNvc19yZWdfdmFsW29sZF9jb3NdOworCisgICAgcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgbDNfY2F0X3NldF9uZXdfdmFsKHVpbnQ2NF90IHZhbFtdLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gY2JtX3R5cGUgdHlwZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG0pCit7CisgICAgaWYgKCAhcHNyX2NoZWNrX2Ni bShmZWF0LT5pbmZvLmwzX2NhdF9pbmZvLmNibV9sZW4sIG0pICkKKyAgICAgICAgcmV0dXJuIC1F SU5WQUw7CisKKyAgICB2YWxbMF0gPSBtOworCisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZmVhdF9vcHMgbDNfY2F0X29wcyA9IHsKICAgICAuZ2V0X2Nvc19tYXggPSBs M19jYXRfZ2V0X2Nvc19tYXgsCiAgICAgLmdldF9mZWF0X2luZm8gPSBsM19jYXRfZ2V0X2ZlYXRf aW5mbywKICAgICAuZ2V0X3ZhbCA9IGwzX2NhdF9nZXRfdmFsLAorICAgIC5nZXRfY29zX251bSA9 IGwzX2NhdF9nZXRfY29zX251bSwKKyAgICAuZ2V0X29sZF92YWwgPSBsM19jYXRfZ2V0X29sZF92 YWwsCisgICAgLnNldF9uZXdfdmFsID0gbDNfY2F0X3NldF9uZXdfdmFsLAogfTsKIAogc3RhdGlj IHZvaWQgX19pbml0IHBhcnNlX3Bzcl9ib29sKGNoYXIgKnMsIGNoYXIgKnZhbHVlLCBjaGFyICpm ZWF0dXJlLApAQCAtNTQ2LDE1ICs2MzAsNDIgQEAgaW50IHBzcl9nZXRfdmFsKHN0cnVjdCBkb21h aW4gKmQsIHVuc2lnbmVkIGludCBzb2NrZXQsCiAvKiBTZXQgdmFsdWUgZnVuY3Rpb25zICovCiBz dGF0aWMgdW5zaWduZWQgaW50IGdldF9jb3NfbnVtKGNvbnN0IHN0cnVjdCBwc3Jfc29ja2V0X2lu Zm8gKmluZm8pCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAq ZmVhdF90bXA7CisgICAgdW5zaWduZWQgaW50IG51bSA9IDA7CisKKyAgICAvKiBHZXQgYWxsIGZl YXR1cmVzIHRvdGFsIGFtb3VudC4gKi8KKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGZlYXRfdG1w LCAmaW5mby0+ZmVhdF9saXN0LCBsaXN0KQorICAgICAgICBudW0gKz0gZmVhdF90bXAtPm9wcy5n ZXRfY29zX251bShmZWF0X3RtcCk7CisKKyAgICByZXR1cm4gbnVtOwogfQogCi1zdGF0aWMgaW50 IGFzc2VtYmxlX3ZhbF9hcnJheSh1aW50NjRfdCAqdmFsLAorc3RhdGljIGludCBjb21iaW5lX3Zh bF9hcnJheSh1aW50NjRfdCAqdmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlu dDMyX3QgYXJyYXlfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Ry dWN0IHBzcl9zb2NrZXRfaW5mbyAqaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGludCBvbGRfY29zKQogewotICAgIHJldHVybiAtRUlOVkFMOworICAgIGNvbnN0 IHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7CisgICAgaW50IHJldDsKKyAgICB1aW50NjRfdCAqdmFs X3RtcCA9IHZhbDsKKworICAgIGlmICggIXZhbCApCisgICAgICAgIHJldHVybiAtRUlOVkFMOwor CisgICAgLyogR2V0IGFsbCBmZWF0dXJlcyBjdXJyZW50IHZhbHVlcyBhY2NvcmRpbmcgdG8gb2xk X2Nvcy4gKi8KKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KGZlYXQsICZpbmZvLT5mZWF0X2xpc3Qs IGxpc3QpCisgICAgeworICAgICAgICAvKiB2YWx1ZSBnZXR0aW5nIG9yZGVyIGlzIHNhbWUgYXMg ZmVhdHVyZSBsaXN0ICovCisgICAgICAgIHJldCA9IGZlYXQtPm9wcy5nZXRfb2xkX3ZhbCh2YWxf dG1wLCBmZWF0LCBvbGRfY29zKTsKKyAgICAgICAgaWYgKCByZXQgKQorICAgICAgICAgICAgcmV0 dXJuIHJldDsKKworICAgICAgICB2YWxfdG1wICs9IGZlYXQtPm9wcy5nZXRfY29zX251bShmZWF0 KTsKKyAgICAgICAgaWYgKCB2YWxfdG1wIC0gdmFsID4gYXJyYXlfbGVuKQorICAgICAgICAgICAg cmV0dXJuIC1FTk9TUEM7CisgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQg c2V0X25ld192YWxfdG9fYXJyYXkodWludDY0X3QgKnZhbCwKQEAgLTU2NCw3ICs2NzUsMzcgQEAg c3RhdGljIGludCBzZXRfbmV3X3ZhbF90b19hcnJheSh1aW50NjRfdCAqdmFsLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnVtIGNibV90eXBlIHR5cGUsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IG0pCiB7Ci0gICAgcmV0dXJuIC1FSU5WQUw7Cisg ICAgY29uc3Qgc3RydWN0IGZlYXRfbm9kZSAqZmVhdDsKKyAgICBpbnQgcmV0OworICAgIHVpbnQ2 NF90ICp2YWxfdG1wID0gdmFsOworCisgICAgLyogU2V0IG5ldyB2YWx1ZSBpbnRvIGFycmF5IGFj Y29yZGluZyB0byBmZWF0dXJlJ3MgcG9zaXRpb24gaW4gYXJyYXkuICovCisgICAgbGlzdF9mb3Jf ZWFjaF9lbnRyeShmZWF0LCAmaW5mby0+ZmVhdF9saXN0LCBsaXN0KQorICAgIHsKKyAgICAgICAg aWYgKCBmZWF0LT5mZWF0dXJlICE9IGZlYXRfdHlwZSApCisgICAgICAgIHsKKyAgICAgICAgICAg IHZhbF90bXAgKz0gZmVhdC0+b3BzLmdldF9jb3NfbnVtKGZlYXQpOworICAgICAgICAgICAgaWYg KCB2YWxfdG1wIC0gdmFsID4gYXJyYXlfbGVuKQorICAgICAgICAgICAgICAgIHJldHVybiAtRU5P U1BDOworCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisg ICAgICAgICAqIFZhbHVlIHNldHRpbmcgcG9zaXRpb24gaXMgc2FtZSBhcyBmZWF0dXJlIGxpc3Qu CisgICAgICAgICAqIERpZmZlcmVudCBmZWF0dXJlcyBtYXkgaGF2ZSBkaWZmZXJlbnQgc2V0dGlu ZyBiZWhhdmlvcnMsIGUuZy4gQ0RQCisgICAgICAgICAqIGhhcyB0d28gdmFsdWVzIChEQVRBL0NP REUpIHdoaWNoIG5lZWQgdXMgdG8gc2F2ZSBpbnB1dCB2YWx1ZSB0bworICAgICAgICAgKiBkaWZm ZXJlbnQgcG9zaXRpb24gaW4gdGhlIGFycmF5IGFjY29yZGluZyB0byB0eXBlLCBzbyB3ZSBoYXZl IHRvCisgICAgICAgICAqIG1haW50YWluIGEgY2FsbGJhY2sgZnVuY3Rpb24uCisgICAgICAgICAq LworICAgICAgICByZXQgPSBmZWF0LT5vcHMuc2V0X25ld192YWwodmFsX3RtcCwgZmVhdCwgdHlw ZSwgbSk7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAg ICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiAwOwogfQog CiBzdGF0aWMgaW50IGZpbmRfY29zKGNvbnN0IHVpbnQ2NF90ICp2YWwsIHVpbnQzMl90IGFycmF5 X2xlbiwKQEAgLTYzNSw3ICs3NzYsNyBAQCBpbnQgcHNyX3NldF92YWwoc3RydWN0IGRvbWFpbiAq ZCwgdW5zaWduZWQgaW50IHNvY2tldCwKICAgICBpZiAoICF2YWxfYXJyYXkgKQogICAgICAgICBy ZXR1cm4gLUVOT01FTTsKIAotICAgIGlmICggKHJldCA9IGFzc2VtYmxlX3ZhbF9hcnJheSh2YWxf YXJyYXksIGFycmF5X2xlbiwgaW5mbywgb2xkX2NvcykpICE9IDAgKQorICAgIGlmICggKHJldCA9 IGNvbWJpbmVfdmFsX2FycmF5KHZhbF9hcnJheSwgYXJyYXlfbGVuLCBpbmZvLCBvbGRfY29zKSkg IT0gMCApCiAgICAgewogICAgICAgICB4ZnJlZSh2YWxfYXJyYXkpOwogICAgICAgICByZXR1cm4g cmV0OwotLSAKMS45LjEKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0 dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK