qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL v2 0/6] X86 patches
@ 2015-04-27 18:45 Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 1/6] MAINTAINERS: Add myself to X86 Eduardo Habkost
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Eduardo Habkost @ 2015-04-27 18:45 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Paolo Bonzini, Andreas Färber, Richard Henderson

Changes in v2:
 * Rebase to 0d81cdddaa40a1988b24657aeac19959cfad0fde
 * Rewrote commit message of 'target-i386: Make "level" and "xlevel" properties
   static', to mention it fixes a bug (missing check for realized device)

The following changes since commit 0d81cdddaa40a1988b24657aeac19959cfad0fde:

  Merge remote-tracking branch 'remotes/qmp-unstable/tags/for-upstream' into staging (2015-04-27 17:28:41 +0100)

are available in the git repository at:

  git://github.com/ehabkost/qemu.git tags/x86-pull-request

for you to fetch changes up to 726a8ff68677d8d5fba17eb0ffb85076bfb598dc:

  target-i386: Remove AMD feature flag aliases from CPU model table (2015-04-27 15:41:03 -0300)

----------------------------------------------------------------
X86 queue, 2015-04-27 (v2)

----------------------------------------------------------------

Eduardo Habkost (6):
  MAINTAINERS: Add myself to X86
  MAINTAINERS: Change status of X86 to Maintained
  qemu-config: Accept empty option values
  target-i386: Make "level" and "xlevel" properties static
  target-i386: X86CPU::xlevel2 QOM property
  target-i386: Remove AMD feature flag aliases from CPU model table

 MAINTAINERS        |  3 ++-
 target-i386/cpu.c  | 50 ++++----------------------------------------------
 util/qemu-config.c |  4 +++-
 3 files changed, 9 insertions(+), 48 deletions(-)

-- 
2.1.0

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PULL v2 1/6] MAINTAINERS: Add myself to X86
  2015-04-27 18:45 [Qemu-devel] [PULL v2 0/6] X86 patches Eduardo Habkost
@ 2015-04-27 18:45 ` Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 2/6] MAINTAINERS: Change status of X86 to Maintained Eduardo Habkost
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Eduardo Habkost @ 2015-04-27 18:45 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Paolo Bonzini, Andreas Färber, Richard Henderson

Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 MAINTAINERS | 1 +
 1 file changed, 1 insertion(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index d7e9ba2..7db4c00 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -172,6 +172,7 @@ F: hw/unicore32/
 X86
 M: Paolo Bonzini <pbonzini@redhat.com>
 M: Richard Henderson <rth@twiddle.net>
+M: Eduardo Habkost <ehabkost@redhat.com>
 S: Odd Fixes
 F: target-i386/
 F: hw/i386/
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PULL v2 2/6] MAINTAINERS: Change status of X86 to Maintained
  2015-04-27 18:45 [Qemu-devel] [PULL v2 0/6] X86 patches Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 1/6] MAINTAINERS: Add myself to X86 Eduardo Habkost
@ 2015-04-27 18:45 ` Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 3/6] qemu-config: Accept empty option values Eduardo Habkost
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Eduardo Habkost @ 2015-04-27 18:45 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Paolo Bonzini, Andreas Färber, Richard Henderson

"Odd Fixes" doesn't reflect the current status of target-i386. We have
people looking after it, now.

Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 MAINTAINERS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 7db4c00..f714a98 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -173,7 +173,7 @@ X86
 M: Paolo Bonzini <pbonzini@redhat.com>
 M: Richard Henderson <rth@twiddle.net>
 M: Eduardo Habkost <ehabkost@redhat.com>
-S: Odd Fixes
+S: Maintained
 F: target-i386/
 F: hw/i386/
 
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PULL v2 3/6] qemu-config: Accept empty option values
  2015-04-27 18:45 [Qemu-devel] [PULL v2 0/6] X86 patches Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 1/6] MAINTAINERS: Add myself to X86 Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 2/6] MAINTAINERS: Change status of X86 to Maintained Eduardo Habkost
@ 2015-04-27 18:45 ` Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 4/6] target-i386: Make "level" and "xlevel" properties static Eduardo Habkost
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Eduardo Habkost @ 2015-04-27 18:45 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Paolo Bonzini, Andreas Färber, Richard Henderson

Currently it is impossible to set an option in a config file to an empty
string, because the parser matches only lines containing non-empty
strings between double-quotes.

As sscanf() "[" conversion specifier only matches non-empty strings, add
a special case for empty strings.

Reviewed-by: Eric Blake <eblake@redhat.com>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 util/qemu-config.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/util/qemu-config.c b/util/qemu-config.c
index 2d32ce7..a393a3d 100644
--- a/util/qemu-config.c
+++ b/util/qemu-config.c
@@ -413,7 +413,9 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname)
             opts = qemu_opts_create(list, NULL, 0, &error_abort);
             continue;
         }
-        if (sscanf(line, " %63s = \"%1023[^\"]\"", arg, value) == 2) {
+        value[0] = '\0';
+        if (sscanf(line, " %63s = \"%1023[^\"]\"", arg, value) == 2 ||
+            sscanf(line, " %63s = \"\"", arg) == 1) {
             /* arg = value */
             if (opts == NULL) {
                 error_report("no group defined");
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PULL v2 4/6] target-i386: Make "level" and "xlevel" properties static
  2015-04-27 18:45 [Qemu-devel] [PULL v2 0/6] X86 patches Eduardo Habkost
                   ` (2 preceding siblings ...)
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 3/6] qemu-config: Accept empty option values Eduardo Habkost
@ 2015-04-27 18:45 ` Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 5/6] target-i386: X86CPU::xlevel2 QOM property Eduardo Habkost
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Eduardo Habkost @ 2015-04-27 18:45 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Paolo Bonzini, Andreas Färber, Richard Henderson

Static properties require only 1 line of code, much simpler than the
existing code that requires writing new getters/setters.

As a nice side-effect, this fixes an existing bug where the setters were
incorrectly allowing the properties to be changed after the CPU was
already realized.

Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 target-i386/cpu.c | 40 ++--------------------------------------
 1 file changed, 2 insertions(+), 38 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 03b33cf..2bbf01d 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -1618,38 +1618,6 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
     env->cpuid_version |= value & 0xf;
 }
 
-static void x86_cpuid_get_level(Object *obj, Visitor *v, void *opaque,
-                                const char *name, Error **errp)
-{
-    X86CPU *cpu = X86_CPU(obj);
-
-    visit_type_uint32(v, &cpu->env.cpuid_level, name, errp);
-}
-
-static void x86_cpuid_set_level(Object *obj, Visitor *v, void *opaque,
-                                const char *name, Error **errp)
-{
-    X86CPU *cpu = X86_CPU(obj);
-
-    visit_type_uint32(v, &cpu->env.cpuid_level, name, errp);
-}
-
-static void x86_cpuid_get_xlevel(Object *obj, Visitor *v, void *opaque,
-                                 const char *name, Error **errp)
-{
-    X86CPU *cpu = X86_CPU(obj);
-
-    visit_type_uint32(v, &cpu->env.cpuid_xlevel, name, errp);
-}
-
-static void x86_cpuid_set_xlevel(Object *obj, Visitor *v, void *opaque,
-                                 const char *name, Error **errp)
-{
-    X86CPU *cpu = X86_CPU(obj);
-
-    visit_type_uint32(v, &cpu->env.cpuid_xlevel, name, errp);
-}
-
 static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
 {
     X86CPU *cpu = X86_CPU(obj);
@@ -2900,12 +2868,6 @@ static void x86_cpu_initfn(Object *obj)
     object_property_add(obj, "stepping", "int",
                         x86_cpuid_version_get_stepping,
                         x86_cpuid_version_set_stepping, NULL, NULL, NULL);
-    object_property_add(obj, "level", "int",
-                        x86_cpuid_get_level,
-                        x86_cpuid_set_level, NULL, NULL, NULL);
-    object_property_add(obj, "xlevel", "int",
-                        x86_cpuid_get_xlevel,
-                        x86_cpuid_set_xlevel, NULL, NULL, NULL);
     object_property_add_str(obj, "vendor",
                             x86_cpuid_get_vendor,
                             x86_cpuid_set_vendor, NULL);
@@ -2998,6 +2960,8 @@ static Property x86_cpu_properties[] = {
     DEFINE_PROP_BOOL("check", X86CPU, check_cpuid, false),
     DEFINE_PROP_BOOL("enforce", X86CPU, enforce_cpuid, false),
     DEFINE_PROP_BOOL("kvm", X86CPU, expose_kvm, true),
+    DEFINE_PROP_UINT32("level", X86CPU, env.cpuid_level, 0),
+    DEFINE_PROP_UINT32("xlevel", X86CPU, env.cpuid_xlevel, 0),
     DEFINE_PROP_END_OF_LIST()
 };
 
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PULL v2 5/6] target-i386: X86CPU::xlevel2 QOM property
  2015-04-27 18:45 [Qemu-devel] [PULL v2 0/6] X86 patches Eduardo Habkost
                   ` (3 preceding siblings ...)
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 4/6] target-i386: Make "level" and "xlevel" properties static Eduardo Habkost
@ 2015-04-27 18:45 ` Eduardo Habkost
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 6/6] target-i386: Remove AMD feature flag aliases from CPU model table Eduardo Habkost
  2015-04-28 12:47 ` [Qemu-devel] [PULL v2 0/6] X86 patches Peter Maydell
  6 siblings, 0 replies; 8+ messages in thread
From: Eduardo Habkost @ 2015-04-27 18:45 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Paolo Bonzini, Andreas Färber, Richard Henderson

We already have "level" and "xlevel", only "xlevel2" is missing.

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 target-i386/cpu.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index 2bbf01d..e657f10 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -2077,7 +2077,7 @@ static void x86_cpu_load_def(X86CPU *cpu, X86CPUDefinition *def, Error **errp)
     object_property_set_int(OBJECT(cpu), def->model, "model", errp);
     object_property_set_int(OBJECT(cpu), def->stepping, "stepping", errp);
     object_property_set_int(OBJECT(cpu), def->xlevel, "xlevel", errp);
-    env->cpuid_xlevel2 = def->xlevel2;
+    object_property_set_int(OBJECT(cpu), def->xlevel2, "xlevel2", errp);
     cpu->cache_info_passthrough = def->cache_info_passthrough;
     object_property_set_str(OBJECT(cpu), def->model_id, "model-id", errp);
     for (w = 0; w < FEATURE_WORDS; w++) {
@@ -2962,6 +2962,7 @@ static Property x86_cpu_properties[] = {
     DEFINE_PROP_BOOL("kvm", X86CPU, expose_kvm, true),
     DEFINE_PROP_UINT32("level", X86CPU, env.cpuid_level, 0),
     DEFINE_PROP_UINT32("xlevel", X86CPU, env.cpuid_xlevel, 0),
+    DEFINE_PROP_UINT32("xlevel2", X86CPU, env.cpuid_xlevel2, 0),
     DEFINE_PROP_END_OF_LIST()
 };
 
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Qemu-devel] [PULL v2 6/6] target-i386: Remove AMD feature flag aliases from CPU model table
  2015-04-27 18:45 [Qemu-devel] [PULL v2 0/6] X86 patches Eduardo Habkost
                   ` (4 preceding siblings ...)
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 5/6] target-i386: X86CPU::xlevel2 QOM property Eduardo Habkost
@ 2015-04-27 18:45 ` Eduardo Habkost
  2015-04-28 12:47 ` [Qemu-devel] [PULL v2 0/6] X86 patches Peter Maydell
  6 siblings, 0 replies; 8+ messages in thread
From: Eduardo Habkost @ 2015-04-27 18:45 UTC (permalink / raw)
  To: qemu-devel, Peter Maydell
  Cc: Paolo Bonzini, Andreas Färber, Richard Henderson

When CPU vendor is AMD, the AMD feature alias bits on
CPUID[0x80000001].EDX are already automatically copied from CPUID[1].EDX
on x86_cpu_realizefn(). When CPU vendor is Intel, those bits are
reserved and should be zero. On either case, those bits shouldn't be set
in the CPU model table.

Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
 target-i386/cpu.c | 7 -------
 1 file changed, 7 deletions(-)

diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index e657f10..3305e09 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -688,7 +688,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
         .features[FEAT_1_ECX] =
             CPUID_EXT_SSE3 | CPUID_EXT_CX16 | CPUID_EXT_POPCNT,
         .features[FEAT_8000_0001_EDX] =
-            (PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
             CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_LAHF_LM | CPUID_EXT3_SVM |
@@ -711,7 +710,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_SSE3 | CPUID_EXT_MONITOR | CPUID_EXT_CX16 |
             CPUID_EXT_POPCNT,
         .features[FEAT_8000_0001_EDX] =
-            (PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
             CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX |
             CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT | CPUID_EXT2_MMXEXT |
             CPUID_EXT2_FFXSR | CPUID_EXT2_PDPE1GB | CPUID_EXT2_RDTSCP,
@@ -769,7 +767,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_SSE3 | CPUID_EXT_CX16,
         /* Missing: CPUID_EXT2_PDPE1GB, CPUID_EXT2_RDTSCP */
         .features[FEAT_8000_0001_EDX] =
-            (PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
             CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
         /* Missing: CPUID_EXT3_LAHF_LM, CPUID_EXT3_CMP_LEG, CPUID_EXT3_EXTAPIC,
                     CPUID_EXT3_CR8LEG, CPUID_EXT3_ABM, CPUID_EXT3_SSE4A,
@@ -805,8 +802,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_MTRR | CPUID_CLFLUSH | CPUID_MCA | CPUID_PSE36,
         .features[FEAT_1_ECX] =
             CPUID_EXT_SSE3,
-        .features[FEAT_8000_0001_EDX] =
-            PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES,
         .features[FEAT_8000_0001_ECX] =
             0,
         .xlevel = 0x80000008,
@@ -888,7 +883,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             PPRO_FEATURES | CPUID_PSE36 | CPUID_VME | CPUID_MTRR |
             CPUID_MCA,
         .features[FEAT_8000_0001_EDX] =
-            (PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
             CPUID_EXT2_MMXEXT | CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT,
         .xlevel = 0x80000008,
     },
@@ -912,7 +906,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
             CPUID_EXT_SSE3 | CPUID_EXT_MONITOR | CPUID_EXT_SSSE3 |
             CPUID_EXT_MOVBE,
         .features[FEAT_8000_0001_EDX] =
-            (PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
             CPUID_EXT2_NX,
         .features[FEAT_8000_0001_ECX] =
             CPUID_EXT3_LAHF_LM,
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [Qemu-devel] [PULL v2 0/6] X86 patches
  2015-04-27 18:45 [Qemu-devel] [PULL v2 0/6] X86 patches Eduardo Habkost
                   ` (5 preceding siblings ...)
  2015-04-27 18:45 ` [Qemu-devel] [PULL v2 6/6] target-i386: Remove AMD feature flag aliases from CPU model table Eduardo Habkost
@ 2015-04-28 12:47 ` Peter Maydell
  6 siblings, 0 replies; 8+ messages in thread
From: Peter Maydell @ 2015-04-28 12:47 UTC (permalink / raw)
  To: Eduardo Habkost
  Cc: Paolo Bonzini, Richard Henderson, QEMU Developers,
	Andreas Färber

On 27 April 2015 at 19:45, Eduardo Habkost <ehabkost@redhat.com> wrote:
> Changes in v2:
>  * Rebase to 0d81cdddaa40a1988b24657aeac19959cfad0fde
>  * Rewrote commit message of 'target-i386: Make "level" and "xlevel" properties
>    static', to mention it fixes a bug (missing check for realized device)
>
> The following changes since commit 0d81cdddaa40a1988b24657aeac19959cfad0fde:
>
>   Merge remote-tracking branch 'remotes/qmp-unstable/tags/for-upstream' into staging (2015-04-27 17:28:41 +0100)
>
> are available in the git repository at:
>
>   git://github.com/ehabkost/qemu.git tags/x86-pull-request
>
> for you to fetch changes up to 726a8ff68677d8d5fba17eb0ffb85076bfb598dc:
>
>   target-i386: Remove AMD feature flag aliases from CPU model table (2015-04-27 15:41:03 -0300)
>
> ----------------------------------------------------------------
> X86 queue, 2015-04-27 (v2)

Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2015-04-28 12:47 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-27 18:45 [Qemu-devel] [PULL v2 0/6] X86 patches Eduardo Habkost
2015-04-27 18:45 ` [Qemu-devel] [PULL v2 1/6] MAINTAINERS: Add myself to X86 Eduardo Habkost
2015-04-27 18:45 ` [Qemu-devel] [PULL v2 2/6] MAINTAINERS: Change status of X86 to Maintained Eduardo Habkost
2015-04-27 18:45 ` [Qemu-devel] [PULL v2 3/6] qemu-config: Accept empty option values Eduardo Habkost
2015-04-27 18:45 ` [Qemu-devel] [PULL v2 4/6] target-i386: Make "level" and "xlevel" properties static Eduardo Habkost
2015-04-27 18:45 ` [Qemu-devel] [PULL v2 5/6] target-i386: X86CPU::xlevel2 QOM property Eduardo Habkost
2015-04-27 18:45 ` [Qemu-devel] [PULL v2 6/6] target-i386: Remove AMD feature flag aliases from CPU model table Eduardo Habkost
2015-04-28 12:47 ` [Qemu-devel] [PULL v2 0/6] X86 patches Peter Maydell

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).