Patchwork [v2] target-i386: Improve x86_cpu_list output

login
register
mail settings
Submitter Jan Kiszka
Date Feb. 27, 2013, 9:15 a.m.
Message ID <512DCEC7.3030902@siemens.com>
Download mbox | patch
Permalink /patch/223562/
State New
Headers show

Comments

Jan Kiszka - Feb. 27, 2013, 9:15 a.m.
Several issues fixed:
 - We were missing a bunch of feature lists. Fix this by simply dumping
   the meta list feature_word_info.
 - kvm_enabled() cannot be true at this point because accelerators are
   initialized much later during init. Also, hiding this makes it very
   hard to discover for users. Simply dump unconditionally if CONFIG_KVM
   is set.
 - Add explanation for "host" CPU type.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---

Changes in v2:
 - Do not dump "host" type if CONFIG_KVM is not set
 - Explain that "host" depends on KVM mode

 target-i386/cpu.c |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)
Igor Mammedov - Feb. 27, 2013, 9:30 a.m.
On Wed, 27 Feb 2013 10:15:51 +0100
Jan Kiszka <jan.kiszka@siemens.com> wrote:

> Several issues fixed:
>  - We were missing a bunch of feature lists. Fix this by simply dumping
>    the meta list feature_word_info.
>  - kvm_enabled() cannot be true at this point because accelerators are
>    initialized much later during init. Also, hiding this makes it very
>    hard to discover for users. Simply dump unconditionally if CONFIG_KVM
>    is set.
>  - Add explanation for "host" CPU type.
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Reviewed-By: Igor Mammedov <imammedo@redhat.com>

> ---
> 
> Changes in v2:
>  - Do not dump "host" type if CONFIG_KVM is not set
>  - Explain that "host" depends on KVM mode
> 
>  target-i386/cpu.c |   23 ++++++++++++-----------
>  1 files changed, 12 insertions(+), 11 deletions(-)
> 
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 5582e5f..b4189c3 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -1463,18 +1463,19 @@ void x86_cpu_list(FILE *f, fprintf_function
> cpu_fprintf) snprintf(buf, sizeof(buf), "%s", def->name);
>          (*cpu_fprintf)(f, "x86 %16s  %-48s\n", buf, def->model_id);
>      }
> -    if (kvm_enabled()) {
> -        (*cpu_fprintf)(f, "x86 %16s\n", "[host]");
> -    }
> +#ifdef CONFIG_KVM
> +    (*cpu_fprintf)(f, "x86 %16s  %-48s\n", "host",
> +                   "KVM processor with all supported host features "
> +                   "(only available in KVM mode)");
> +#endif
> +
>      (*cpu_fprintf)(f, "\nRecognized CPUID flags:\n");
> -    listflags(buf, sizeof(buf), (uint32_t)~0, feature_name, 1);
> -    (*cpu_fprintf)(f, "  %s\n", buf);
> -    listflags(buf, sizeof(buf), (uint32_t)~0, ext_feature_name, 1);
> -    (*cpu_fprintf)(f, "  %s\n", buf);
> -    listflags(buf, sizeof(buf), (uint32_t)~0, ext2_feature_name, 1);
> -    (*cpu_fprintf)(f, "  %s\n", buf);
> -    listflags(buf, sizeof(buf), (uint32_t)~0, ext3_feature_name, 1);
> -    (*cpu_fprintf)(f, "  %s\n", buf);
> +    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);
> +    }
>  }
>  
>  CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
Andreas Färber - Feb. 27, 2013, 9:33 a.m.
Am 27.02.2013 10:15, schrieb Jan Kiszka:
> Several issues fixed:
>  - We were missing a bunch of feature lists. Fix this by simply dumping
>    the meta list feature_word_info.
>  - kvm_enabled() cannot be true at this point because accelerators are
>    initialized much later during init. Also, hiding this makes it very
>    hard to discover for users. Simply dump unconditionally if CONFIG_KVM
>    is set.
>  - Add explanation for "host" CPU type.
> 
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
> 
> Changes in v2:
>  - Do not dump "host" type if CONFIG_KVM is not set
>  - Explain that "host" depends on KVM mode

I had requested on v1 to not fix multiple issues in one patch, but I can
split it myself on Friday if there's no other issues.

Andreas

> 
>  target-i386/cpu.c |   23 ++++++++++++-----------
>  1 files changed, 12 insertions(+), 11 deletions(-)
> 
> diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> index 5582e5f..b4189c3 100644
> --- a/target-i386/cpu.c
> +++ b/target-i386/cpu.c
> @@ -1463,18 +1463,19 @@ void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf)
>          snprintf(buf, sizeof(buf), "%s", def->name);
>          (*cpu_fprintf)(f, "x86 %16s  %-48s\n", buf, def->model_id);
>      }
> -    if (kvm_enabled()) {
> -        (*cpu_fprintf)(f, "x86 %16s\n", "[host]");
> -    }
> +#ifdef CONFIG_KVM
> +    (*cpu_fprintf)(f, "x86 %16s  %-48s\n", "host",
> +                   "KVM processor with all supported host features "
> +                   "(only available in KVM mode)");
> +#endif
> +
>      (*cpu_fprintf)(f, "\nRecognized CPUID flags:\n");
> -    listflags(buf, sizeof(buf), (uint32_t)~0, feature_name, 1);
> -    (*cpu_fprintf)(f, "  %s\n", buf);
> -    listflags(buf, sizeof(buf), (uint32_t)~0, ext_feature_name, 1);
> -    (*cpu_fprintf)(f, "  %s\n", buf);
> -    listflags(buf, sizeof(buf), (uint32_t)~0, ext2_feature_name, 1);
> -    (*cpu_fprintf)(f, "  %s\n", buf);
> -    listflags(buf, sizeof(buf), (uint32_t)~0, ext3_feature_name, 1);
> -    (*cpu_fprintf)(f, "  %s\n", buf);
> +    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);
> +    }
>  }
>  
>  CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
>
Jan Kiszka - Feb. 27, 2013, 9:37 a.m.
On 2013-02-27 10:33, Andreas Färber wrote:
> Am 27.02.2013 10:15, schrieb Jan Kiszka:
>> Several issues fixed:
>>  - We were missing a bunch of feature lists. Fix this by simply dumping
>>    the meta list feature_word_info.
>>  - kvm_enabled() cannot be true at this point because accelerators are
>>    initialized much later during init. Also, hiding this makes it very
>>    hard to discover for users. Simply dump unconditionally if CONFIG_KVM
>>    is set.
>>  - Add explanation for "host" CPU type.
>>
>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>> ---
>>
>> Changes in v2:
>>  - Do not dump "host" type if CONFIG_KVM is not set
>>  - Explain that "host" depends on KVM mode
> 
> I had requested on v1 to not fix multiple issues in one patch, but I can
> split it myself on Friday if there's no other issues.

Sorry, missed that. But I also see no point in splitting up in this
case, specifically as we no agree on the result.

Jan
Andreas Färber - March 24, 2013, 5:38 p.m.
Am 27.02.2013 10:37, schrieb Jan Kiszka:
> On 2013-02-27 10:33, Andreas Färber wrote:
>> Am 27.02.2013 10:15, schrieb Jan Kiszka:
>>> Several issues fixed:
>>>  - We were missing a bunch of feature lists. Fix this by simply dumping
>>>    the meta list feature_word_info.
>>>  - kvm_enabled() cannot be true at this point because accelerators are
>>>    initialized much later during init. Also, hiding this makes it very
>>>    hard to discover for users. Simply dump unconditionally if CONFIG_KVM
>>>    is set.
>>>  - Add explanation for "host" CPU type.
>>>
>>> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
>>> ---
>>>
>>> Changes in v2:
>>>  - Do not dump "host" type if CONFIG_KVM is not set
>>>  - Explain that "host" depends on KVM mode
>>
>> I had requested on v1 to not fix multiple issues in one patch, but I can
>> split it myself on Friday if there's no other issues.
> 
> Sorry, missed that. But I also see no point in splitting up in this
> case, specifically as we no agree on the result.

Thanks, applied to qom-cpu as two patches (clean git-checkout -p split):
https://github.com/afaerber/qemu-cpu/commits/qom-cpu

Sorry for taking so long.

Andreas

Patch

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 5582e5f..b4189c3 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1463,18 +1463,19 @@  void x86_cpu_list(FILE *f, fprintf_function cpu_fprintf)
         snprintf(buf, sizeof(buf), "%s", def->name);
         (*cpu_fprintf)(f, "x86 %16s  %-48s\n", buf, def->model_id);
     }
-    if (kvm_enabled()) {
-        (*cpu_fprintf)(f, "x86 %16s\n", "[host]");
-    }
+#ifdef CONFIG_KVM
+    (*cpu_fprintf)(f, "x86 %16s  %-48s\n", "host",
+                   "KVM processor with all supported host features "
+                   "(only available in KVM mode)");
+#endif
+
     (*cpu_fprintf)(f, "\nRecognized CPUID flags:\n");
-    listflags(buf, sizeof(buf), (uint32_t)~0, feature_name, 1);
-    (*cpu_fprintf)(f, "  %s\n", buf);
-    listflags(buf, sizeof(buf), (uint32_t)~0, ext_feature_name, 1);
-    (*cpu_fprintf)(f, "  %s\n", buf);
-    listflags(buf, sizeof(buf), (uint32_t)~0, ext2_feature_name, 1);
-    (*cpu_fprintf)(f, "  %s\n", buf);
-    listflags(buf, sizeof(buf), (uint32_t)~0, ext3_feature_name, 1);
-    (*cpu_fprintf)(f, "  %s\n", buf);
+    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);
+    }
 }
 
 CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)