X86 queue, 2015-04-27 (v2)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABCAAGBQJVPoMfAAoJECgHk2+YTcWmzuQQAIOf4o/0t/lV87uR1/smP+E/ mvdWm9FiaRXkc0SYrIdpNoPyyMfNnzwDocywIaMcMNEzxMe1oP/objm3yWuOpeeH Q26oMt/phXsPBRl5vxhAQ29LxuCagDivRFyTUxa7E8/D9GKmVFE6/orwHeMfwUEs frILNM5lCLiXk4dgeQPW9xWb8iAm/RVRWFRIya5HVh51PjjsN/iLQDtSLM5Ivvvn Pn5+cspcjD6bjM3tGiXYJZtUdoKh/7Dc8QLHhOOGd0XGysnfEbsmNQbk5Kl62PL/ 3Ug0yQWpecM5IrmPWi/Omh2YJNdTbrjsOMaLWZv2LtWl/o8mD51rPJeK9Pfym/26 dsQgcYK/0GowEOxb/PUkWoX7eNziUyKryksgtdLxyrcllO5QKhrkTibDh8UOKYwI X6qEqrhCJ8pN6GhFJYK/2ieMajOoa3TE7WE5CenEPFyEmDqQkKWrjUyc0YZjcZ98 cHJESCyXxaetzpwt17WT+vaEwpKyj7RBBS55fuV7S6+QRpWewyvxsKcEe7nfHDPe k7VOkG7YD0LX9dnoFGLvHbxms/QUji5K2rprvZYdA5PNywTwRsyW58XR/G1jOU2Q oDkLL+B52A3+cBUz4n7yrP4GumvxTR9mfOGbvdKXRYHyJka74aoGecPblAVz3ew4 UTgqXmdlJzA5SzyPObcq =t4Wd -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/ehabkost/tags/x86-pull-request' into staging X86 queue, 2015-04-27 (v2) # gpg: Signature made Mon Apr 27 19:42:39 2015 BST using RSA key ID 984DC5A6 # gpg: Good signature from "Eduardo Habkost <ehabkost@redhat.com>" # gpg: WARNING: This key is not certified with sufficiently trusted signatures! # gpg: It is not certain that the signature belongs to the owner. # Primary key fingerprint: 5A32 2FD5 ABC4 D3DB ACCF D1AA 2807 936F 984D C5A6 * remotes/ehabkost/tags/x86-pull-request: target-i386: Remove AMD feature flag aliases from CPU model table target-i386: X86CPU::xlevel2 QOM property target-i386: Make "level" and "xlevel" properties static qemu-config: Accept empty option values MAINTAINERS: Change status of X86 to Maintained MAINTAINERS: Add myself to X86 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
84cbd63f87
|
@ -172,7 +172,8 @@ F: hw/unicore32/
|
||||||
X86
|
X86
|
||||||
M: Paolo Bonzini <pbonzini@redhat.com>
|
M: Paolo Bonzini <pbonzini@redhat.com>
|
||||||
M: Richard Henderson <rth@twiddle.net>
|
M: Richard Henderson <rth@twiddle.net>
|
||||||
S: Odd Fixes
|
M: Eduardo Habkost <ehabkost@redhat.com>
|
||||||
|
S: Maintained
|
||||||
F: target-i386/
|
F: target-i386/
|
||||||
F: hw/i386/
|
F: hw/i386/
|
||||||
|
|
||||||
|
|
|
@ -688,7 +688,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
|
||||||
.features[FEAT_1_ECX] =
|
.features[FEAT_1_ECX] =
|
||||||
CPUID_EXT_SSE3 | CPUID_EXT_CX16 | CPUID_EXT_POPCNT,
|
CPUID_EXT_SSE3 | CPUID_EXT_CX16 | CPUID_EXT_POPCNT,
|
||||||
.features[FEAT_8000_0001_EDX] =
|
.features[FEAT_8000_0001_EDX] =
|
||||||
(PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
|
|
||||||
CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
|
CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
|
||||||
.features[FEAT_8000_0001_ECX] =
|
.features[FEAT_8000_0001_ECX] =
|
||||||
CPUID_EXT3_LAHF_LM | CPUID_EXT3_SVM |
|
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_SSE3 | CPUID_EXT_MONITOR | CPUID_EXT_CX16 |
|
||||||
CPUID_EXT_POPCNT,
|
CPUID_EXT_POPCNT,
|
||||||
.features[FEAT_8000_0001_EDX] =
|
.features[FEAT_8000_0001_EDX] =
|
||||||
(PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
|
|
||||||
CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX |
|
CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX |
|
||||||
CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT | CPUID_EXT2_MMXEXT |
|
CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT | CPUID_EXT2_MMXEXT |
|
||||||
CPUID_EXT2_FFXSR | CPUID_EXT2_PDPE1GB | CPUID_EXT2_RDTSCP,
|
CPUID_EXT2_FFXSR | CPUID_EXT2_PDPE1GB | CPUID_EXT2_RDTSCP,
|
||||||
|
@ -769,7 +767,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
|
||||||
CPUID_EXT_SSE3 | CPUID_EXT_CX16,
|
CPUID_EXT_SSE3 | CPUID_EXT_CX16,
|
||||||
/* Missing: CPUID_EXT2_PDPE1GB, CPUID_EXT2_RDTSCP */
|
/* Missing: CPUID_EXT2_PDPE1GB, CPUID_EXT2_RDTSCP */
|
||||||
.features[FEAT_8000_0001_EDX] =
|
.features[FEAT_8000_0001_EDX] =
|
||||||
(PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
|
|
||||||
CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
|
CPUID_EXT2_LM | CPUID_EXT2_SYSCALL | CPUID_EXT2_NX,
|
||||||
/* Missing: CPUID_EXT3_LAHF_LM, CPUID_EXT3_CMP_LEG, CPUID_EXT3_EXTAPIC,
|
/* Missing: CPUID_EXT3_LAHF_LM, CPUID_EXT3_CMP_LEG, CPUID_EXT3_EXTAPIC,
|
||||||
CPUID_EXT3_CR8LEG, CPUID_EXT3_ABM, CPUID_EXT3_SSE4A,
|
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,
|
CPUID_MTRR | CPUID_CLFLUSH | CPUID_MCA | CPUID_PSE36,
|
||||||
.features[FEAT_1_ECX] =
|
.features[FEAT_1_ECX] =
|
||||||
CPUID_EXT_SSE3,
|
CPUID_EXT_SSE3,
|
||||||
.features[FEAT_8000_0001_EDX] =
|
|
||||||
PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES,
|
|
||||||
.features[FEAT_8000_0001_ECX] =
|
.features[FEAT_8000_0001_ECX] =
|
||||||
0,
|
0,
|
||||||
.xlevel = 0x80000008,
|
.xlevel = 0x80000008,
|
||||||
|
@ -888,7 +883,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
|
||||||
PPRO_FEATURES | CPUID_PSE36 | CPUID_VME | CPUID_MTRR |
|
PPRO_FEATURES | CPUID_PSE36 | CPUID_VME | CPUID_MTRR |
|
||||||
CPUID_MCA,
|
CPUID_MCA,
|
||||||
.features[FEAT_8000_0001_EDX] =
|
.features[FEAT_8000_0001_EDX] =
|
||||||
(PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
|
|
||||||
CPUID_EXT2_MMXEXT | CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT,
|
CPUID_EXT2_MMXEXT | CPUID_EXT2_3DNOW | CPUID_EXT2_3DNOWEXT,
|
||||||
.xlevel = 0x80000008,
|
.xlevel = 0x80000008,
|
||||||
},
|
},
|
||||||
|
@ -912,7 +906,6 @@ static X86CPUDefinition builtin_x86_defs[] = {
|
||||||
CPUID_EXT_SSE3 | CPUID_EXT_MONITOR | CPUID_EXT_SSSE3 |
|
CPUID_EXT_SSE3 | CPUID_EXT_MONITOR | CPUID_EXT_SSSE3 |
|
||||||
CPUID_EXT_MOVBE,
|
CPUID_EXT_MOVBE,
|
||||||
.features[FEAT_8000_0001_EDX] =
|
.features[FEAT_8000_0001_EDX] =
|
||||||
(PPRO_FEATURES & CPUID_EXT2_AMD_ALIASES) |
|
|
||||||
CPUID_EXT2_NX,
|
CPUID_EXT2_NX,
|
||||||
.features[FEAT_8000_0001_ECX] =
|
.features[FEAT_8000_0001_ECX] =
|
||||||
CPUID_EXT3_LAHF_LM,
|
CPUID_EXT3_LAHF_LM,
|
||||||
|
@ -1618,38 +1611,6 @@ static void x86_cpuid_version_set_stepping(Object *obj, Visitor *v,
|
||||||
env->cpuid_version |= value & 0xf;
|
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)
|
static char *x86_cpuid_get_vendor(Object *obj, Error **errp)
|
||||||
{
|
{
|
||||||
X86CPU *cpu = X86_CPU(obj);
|
X86CPU *cpu = X86_CPU(obj);
|
||||||
|
@ -2109,7 +2070,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->model, "model", errp);
|
||||||
object_property_set_int(OBJECT(cpu), def->stepping, "stepping", errp);
|
object_property_set_int(OBJECT(cpu), def->stepping, "stepping", errp);
|
||||||
object_property_set_int(OBJECT(cpu), def->xlevel, "xlevel", 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;
|
cpu->cache_info_passthrough = def->cache_info_passthrough;
|
||||||
object_property_set_str(OBJECT(cpu), def->model_id, "model-id", errp);
|
object_property_set_str(OBJECT(cpu), def->model_id, "model-id", errp);
|
||||||
for (w = 0; w < FEATURE_WORDS; w++) {
|
for (w = 0; w < FEATURE_WORDS; w++) {
|
||||||
|
@ -2900,12 +2861,6 @@ static void x86_cpu_initfn(Object *obj)
|
||||||
object_property_add(obj, "stepping", "int",
|
object_property_add(obj, "stepping", "int",
|
||||||
x86_cpuid_version_get_stepping,
|
x86_cpuid_version_get_stepping,
|
||||||
x86_cpuid_version_set_stepping, NULL, NULL, NULL);
|
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",
|
object_property_add_str(obj, "vendor",
|
||||||
x86_cpuid_get_vendor,
|
x86_cpuid_get_vendor,
|
||||||
x86_cpuid_set_vendor, NULL);
|
x86_cpuid_set_vendor, NULL);
|
||||||
|
@ -2998,6 +2953,9 @@ static Property x86_cpu_properties[] = {
|
||||||
DEFINE_PROP_BOOL("check", X86CPU, check_cpuid, false),
|
DEFINE_PROP_BOOL("check", X86CPU, check_cpuid, false),
|
||||||
DEFINE_PROP_BOOL("enforce", X86CPU, enforce_cpuid, false),
|
DEFINE_PROP_BOOL("enforce", X86CPU, enforce_cpuid, false),
|
||||||
DEFINE_PROP_BOOL("kvm", X86CPU, expose_kvm, true),
|
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()
|
DEFINE_PROP_END_OF_LIST()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -413,7 +413,9 @@ int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname)
|
||||||
opts = qemu_opts_create(list, NULL, 0, &error_abort);
|
opts = qemu_opts_create(list, NULL, 0, &error_abort);
|
||||||
continue;
|
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 */
|
/* arg = value */
|
||||||
if (opts == NULL) {
|
if (opts == NULL) {
|
||||||
error_report("no group defined");
|
error_report("no group defined");
|
||||||
|
|
Loading…
Reference in New Issue