From: Igor Mammedov <imammedo@redhat.com>
To: qemu-devel@nongnu.org
Cc: afaerber@suse.de
Subject: [Qemu-devel] [PATCH 14/16] target-i386: use static properties to list CPUID features
Date: Wed, 27 Nov 2013 23:28:54 +0100 [thread overview]
Message-ID: <1385591336-2755-15-git-send-email-imammedo@redhat.com> (raw)
In-Reply-To: <1385591336-2755-1-git-send-email-imammedo@redhat.com>
- it breaks compatibility with previous output format by printing all features
in one string with "feat-" prefixes and all "_" replaced by "-"
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
target-i386/cpu.c | 44 ++++++++++----------------------------------
1 file changed, 10 insertions(+), 34 deletions(-)
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 5c3455f..a9297cc 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1742,42 +1742,13 @@ out:
return;
}
-/* generate a composite string into buf of all cpuid names in featureset
- * selected by fbits. indicate truncation at bufsize in the event of overflow.
- * if flags, suppress names undefined in featureset.
- */
-static void listflags(char *buf, int bufsize, uint32_t fbits,
- const char **featureset, uint32_t flags)
-{
- const char **p = &featureset[31];
- char *q, *b, bit;
- int nc;
-
- b = 4 <= bufsize ? buf + (bufsize -= 3) - 1 : NULL;
- *buf = '\0';
- for (q = buf, bit = 31; fbits && bufsize; --p, fbits &= ~(1 << bit), --bit)
- if (fbits & 1 << bit && (*p || !flags)) {
- if (*p)
- nc = snprintf(q, bufsize, "%s%s", q == buf ? "" : " ", *p);
- else
- nc = snprintf(q, bufsize, "%s[%d]", q == buf ? "" : " ", bit);
- if (bufsize <= nc) {
- if (b) {
- memcpy(b, "...", sizeof("..."));
- }
- return;
- }
- q += nc;
- bufsize -= nc;
- }
-}
-
/* generate CPU information. */
void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf)
{
x86_def_t *def;
char buf[256];
int i;
+ const Property *prop;
for (i = 0; i < ARRAY_SIZE(builtin_x86_defs); i++) {
def = &builtin_x86_defs[i];
@@ -1791,12 +1762,17 @@ void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf)
#endif
(*cpu_fprintf)(f, "\nRecognized CPUID flags:\n");
- for (i = 0; i < ARRAY_SIZE(feature_word_info); i++) {
- FeatureWordInfo *fw = &feature_word_info[i];
- listflags(buf, sizeof(buf), (uint32_t)~0, fw->feat_names, 1);
- (*cpu_fprintf)(f, " %s\n", buf);
+ (*cpu_fprintf)(f, " ");
+ QDEV_PROP_FOREACH(prop, object_class_by_name(TYPE_X86_CPU)) {
+ const char *name = prop ? prop->name : "";
+
+ if (!g_str_has_prefix(name, "feat-")) {
+ continue;
+ }
+ (*cpu_fprintf)(f, " %s", name);
}
+ (*cpu_fprintf)(f, "\n");
}
CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
--
1.8.3.1
next prev parent reply other threads:[~2013-11-27 22:29 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-27 22:28 [Qemu-devel] [PATCH qom-cpu 00/16 v10] target-i386: convert CPU features into properties Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 01/16] target-i386: cleanup 'foo' feature handling' Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 02/16] target-i386: cleanup 'foo=val' feature handling Igor Mammedov
2014-02-11 9:14 ` Eduardo Habkost
2014-02-11 14:28 ` Andreas Färber
2013-11-27 22:28 ` [Qemu-devel] [PATCH 03/16] target-i386: cpu: convert 'level' to static property Igor Mammedov
2014-02-11 9:14 ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 04/16] target-i386: cpu: convert 'xlevel' " Igor Mammedov
2014-02-11 9:15 ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 05/16] target-i386: cpu: convert 'family' " Igor Mammedov
2014-02-11 9:37 ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 06/16] target-i386: cpu: convert 'model' " Igor Mammedov
2014-02-11 9:40 ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 07/16] target-i386: cpu: convert 'stepping' " Igor Mammedov
2014-02-11 9:40 ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 08/16] target-i386: cpu: convert 'vendor' " Igor Mammedov
2014-02-11 11:31 ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 09/16] target-i386: cpu: convert 'model-id' " Igor Mammedov
2014-02-11 11:36 ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 10/16] target-i386: cpu: convert 'tsc-frequency' " Igor Mammedov
2014-02-11 11:36 ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 11/16] target-i386: set [+-]feature using static properties Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 12/16] qdev: introduce qdev_prop_find_bit() Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 13/16] target-i386: use static properties in check_features_against_host() to print CPUID feature names Igor Mammedov
2013-11-27 22:28 ` Igor Mammedov [this message]
2013-11-27 22:28 ` [Qemu-devel] [PATCH 15/16] target-i386: remove unused *_feature_name arrays Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 16/16] target-i386: cpu: fix invalid use of error_is_set(errp) if errp == NULL Igor Mammedov
2013-12-15 22:50 ` [Qemu-devel] [PATCH qom-cpu 00/16 v10] target-i386: convert CPU features into properties Andreas Färber
2013-12-16 15:01 ` Igor Mammedov
2013-12-16 18:26 ` Eduardo Habkost
2013-12-17 13:01 ` Igor Mammedov
2014-01-07 8:41 ` Igor Mammedov
2014-02-05 14:40 ` Igor Mammedov
2014-02-05 16:14 ` Andreas Färber
2014-02-05 16:52 ` Igor Mammedov
2014-02-06 15:19 ` Igor Mammedov
2014-02-06 15:51 ` Andreas Färber
2014-02-06 16:16 ` [Qemu-devel] CPU models and feature probing (was Re: [PATCH qom-cpu 00/16 v10] target-i386: convert CPU) " Eduardo Habkost
2014-02-06 16:57 ` Andreas Färber
2014-02-07 10:16 ` Eduardo Habkost
2014-02-07 10:55 ` Paolo Bonzini
2014-02-11 11:54 ` Eduardo Habkost
2014-02-11 14:31 ` Anthony Liguori
2014-02-11 15:25 ` Eduardo Habkost
2014-02-11 15:58 ` Anthony Liguori
2014-02-11 16:43 ` Eduardo Habkost
2014-02-11 16:45 ` Paolo Bonzini
2014-02-11 16:55 ` Andreas Färber
2014-02-11 18:57 ` Anthony Liguori
2014-02-11 21:38 ` Paolo Bonzini
2014-02-07 10:37 ` Eduardo Habkost
2014-02-11 17:17 ` [Qemu-devel] [PATCH qom-cpu 00/16 v10] target-i386: convert CPU " Igor Mammedov
2014-03-05 16:53 ` Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1385591336-2755-15-git-send-email-imammedo@redhat.com \
--to=imammedo@redhat.com \
--cc=afaerber@suse.de \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).