mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
* Some hw/isa cleanups
* Fixes for x86 CPUID * Cleanups for configure, hw/isa and x86 -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmXPW5sUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroO1Mgf/USSqZxAyS1tyutpVslKmQjCyUiNW xEuHhAqoTz4Xg/8Q1J9aCcs2hdpBx2ULEQryUiTlH3LPLy3j9lGxMfg9Ma65mPVg KOSm/vfnw2VPXav8MJVNbm0gSI5fPmprRYgFi4TrkknmKnDo2TElrCG6Oe6LN/X+ kiJD9K8PE+OE7xVhNDf7JAxUHt531oX7iM8p6JGGBYQdPOZ8rGf4K5PDrDxnHckG dbKHhqkbrSHaX/gu4q0ukgfIprs40ChYQ10vZ95mYyuWgIHOi51PciPmQ/qLPof0 b/au08F0SpTE5cxx1Rk4cAuhP/PtzVln5lsSl9r9KzJ3Hcv6qnwXUU1nUg== =U+N2 -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * Some hw/isa cleanups * Fixes for x86 CPUID * Cleanups for configure, hw/isa and x86 # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmXPW5sUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroO1Mgf/USSqZxAyS1tyutpVslKmQjCyUiNW # xEuHhAqoTz4Xg/8Q1J9aCcs2hdpBx2ULEQryUiTlH3LPLy3j9lGxMfg9Ma65mPVg # KOSm/vfnw2VPXav8MJVNbm0gSI5fPmprRYgFi4TrkknmKnDo2TElrCG6Oe6LN/X+ # kiJD9K8PE+OE7xVhNDf7JAxUHt531oX7iM8p6JGGBYQdPOZ8rGf4K5PDrDxnHckG # dbKHhqkbrSHaX/gu4q0ukgfIprs40ChYQ10vZ95mYyuWgIHOi51PciPmQ/qLPof0 # b/au08F0SpTE5cxx1Rk4cAuhP/PtzVln5lsSl9r9KzJ3Hcv6qnwXUU1nUg== # =U+N2 # -----END PGP SIGNATURE----- # gpg: Signature made Fri 16 Feb 2024 12:56:59 GMT # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * tag 'for-upstream' of https://gitlab.com/bonzini/qemu: ci: Fix again build-previous-qemu usb: inline device creation functions target/i386: Generate an illegal opcode exception on cmp instructions with lock prefix i386: xen: fix compilation --without-default-devices configure: put all symlink creation together configure: do not create legacy symlinks smc37c669: remove useless is_enabled functions isa-superio: validate floppy.count value mips: remove unnecessary "select PTIMER" i386/cpuid: Move leaf 7 to correct group i386/cpuid: Remove subleaf constraint on CPUID leaf 1F i386/cpuid: Decrease cpuid_i when skipping CPUID leaf 1F physmem: replace function name with __func__ in ram_block_discard_range() i386/pc: Drop pc_machine_kvm_type() target/i386: Add support of KVM_FEATURE_ASYNC_PF_VMEXIT for guest i386/cpu: Mask with XCR0/XSS mask for FEAT_XSAVE_XCR0_HI and FEAT_XSAVE_XSS_HI leafs i386/cpu: Clear FEAT_XSAVE_XSS_LO/HI leafs when CPUID_EXT_XSAVE is not available Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
760b4dcddd
13 changed files with 64 additions and 103 deletions
|
@ -857,7 +857,7 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
|
|||
.feat_names = {
|
||||
"kvmclock", "kvm-nopiodelay", "kvm-mmu", "kvmclock",
|
||||
"kvm-asyncpf", "kvm-steal-time", "kvm-pv-eoi", "kvm-pv-unhalt",
|
||||
NULL, "kvm-pv-tlb-flush", NULL, "kvm-pv-ipi",
|
||||
NULL, "kvm-pv-tlb-flush", "kvm-asyncpf-vmexit", "kvm-pv-ipi",
|
||||
"kvm-poll-control", "kvm-pv-sched-yield", "kvm-asyncpf-int", "kvm-msi-ext-dest-id",
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
|
@ -6927,6 +6927,8 @@ static void x86_cpu_enable_xsave_components(X86CPU *cpu)
|
|||
if (!(env->features[FEAT_1_ECX] & CPUID_EXT_XSAVE)) {
|
||||
env->features[FEAT_XSAVE_XCR0_LO] = 0;
|
||||
env->features[FEAT_XSAVE_XCR0_HI] = 0;
|
||||
env->features[FEAT_XSAVE_XSS_LO] = 0;
|
||||
env->features[FEAT_XSAVE_XSS_HI] = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -6945,9 +6947,9 @@ static void x86_cpu_enable_xsave_components(X86CPU *cpu)
|
|||
}
|
||||
|
||||
env->features[FEAT_XSAVE_XCR0_LO] = mask & CPUID_XSTATE_XCR0_MASK;
|
||||
env->features[FEAT_XSAVE_XCR0_HI] = mask >> 32;
|
||||
env->features[FEAT_XSAVE_XCR0_HI] = (mask & CPUID_XSTATE_XCR0_MASK) >> 32;
|
||||
env->features[FEAT_XSAVE_XSS_LO] = mask & CPUID_XSTATE_XSS_MASK;
|
||||
env->features[FEAT_XSAVE_XSS_HI] = mask >> 32;
|
||||
env->features[FEAT_XSAVE_XSS_HI] = (mask & CPUID_XSTATE_XSS_MASK) >> 32;
|
||||
}
|
||||
|
||||
/***** Steps involved on loading and filtering CPUID data
|
||||
|
|
|
@ -1914,6 +1914,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
|
|||
}
|
||||
case 0x1f:
|
||||
if (env->nr_dies < 2) {
|
||||
cpuid_i--;
|
||||
break;
|
||||
}
|
||||
/* fallthrough */
|
||||
|
@ -1925,10 +1926,6 @@ int kvm_arch_init_vcpu(CPUState *cs)
|
|||
break;
|
||||
}
|
||||
|
||||
if (i == 0x1f && j == 64) {
|
||||
break;
|
||||
}
|
||||
|
||||
c->function = i;
|
||||
c->flags = KVM_CPUID_FLAG_SIGNIFCANT_INDEX;
|
||||
c->index = j;
|
||||
|
@ -1954,7 +1951,6 @@ int kvm_arch_init_vcpu(CPUState *cs)
|
|||
c = &cpuid_data.entries[cpuid_i++];
|
||||
}
|
||||
break;
|
||||
case 0x7:
|
||||
case 0x12:
|
||||
for (j = 0; ; j++) {
|
||||
c->function = i;
|
||||
|
@ -1974,6 +1970,7 @@ int kvm_arch_init_vcpu(CPUState *cs)
|
|||
c = &cpuid_data.entries[cpuid_i++];
|
||||
}
|
||||
break;
|
||||
case 0x7:
|
||||
case 0x14:
|
||||
case 0x1d:
|
||||
case 0x1e: {
|
||||
|
|
|
@ -1507,12 +1507,13 @@ static bool check_iopl(DisasContext *s)
|
|||
/* if d == OR_TMP0, it means memory operand (address in A0) */
|
||||
static void gen_op(DisasContext *s1, int op, MemOp ot, int d)
|
||||
{
|
||||
/* Invalid lock prefix when destination is not memory or OP_CMPL. */
|
||||
if ((d != OR_TMP0 || op == OP_CMPL) && s1->prefix & PREFIX_LOCK) {
|
||||
gen_illegal_opcode(s1);
|
||||
return;
|
||||
}
|
||||
|
||||
if (d != OR_TMP0) {
|
||||
if (s1->prefix & PREFIX_LOCK) {
|
||||
/* Lock prefix when destination is not memory. */
|
||||
gen_illegal_opcode(s1);
|
||||
return;
|
||||
}
|
||||
gen_op_mov_v_reg(s1, ot, s1->T0, d);
|
||||
} else if (!(s1->prefix & PREFIX_LOCK)) {
|
||||
gen_op_ld_v(s1, ot, s1->T0, s1->A0);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue