mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
* Granite Rapids CPU model
* Miscellaneous bugfixes -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmSn7uYUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroPi1gf+MJNyMneyyEZgBwlwgs2NYjz+cKwW KxtCOHDfew5S1qpq+gyvUnq5K0JJBGZKoFMwS6JwOpHASGx1o6mlF06CgLAk7wKh yCf1kzvRA4y3tYbSwvxD5iKV3YSsayIHuJ8q2GslVXBtAZ0xC2cREQLzKLNuEV6M rO4bj6QUV2fRc9u9TlurXijsdalUAEjmkIeZhtghhkD+lJo44yzcF7qAROaE3pFa IYEp8pTgcbJeiI0BUNFTRk0OlE5f7MT3GIQwTC34WWPO+r/uBXL5FXNqN38svugh 7hjOliIMU4I6jpL1t7v2+9Vs38gAEPchJ0Nly4TV+dydh7l1pIn9G7ssoA== =OBRZ -----END PGP SIGNATURE----- Merge tag 'for-upstream' of https://gitlab.com/bonzini/qemu into staging * Granite Rapids CPU model * Miscellaneous bugfixes # -----BEGIN PGP SIGNATURE----- # # iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmSn7uYUHHBib256aW5p # QHJlZGhhdC5jb20ACgkQv/vSX3jHroPi1gf+MJNyMneyyEZgBwlwgs2NYjz+cKwW # KxtCOHDfew5S1qpq+gyvUnq5K0JJBGZKoFMwS6JwOpHASGx1o6mlF06CgLAk7wKh # yCf1kzvRA4y3tYbSwvxD5iKV3YSsayIHuJ8q2GslVXBtAZ0xC2cREQLzKLNuEV6M # rO4bj6QUV2fRc9u9TlurXijsdalUAEjmkIeZhtghhkD+lJo44yzcF7qAROaE3pFa # IYEp8pTgcbJeiI0BUNFTRk0OlE5f7MT3GIQwTC34WWPO+r/uBXL5FXNqN38svugh # 7hjOliIMU4I6jpL1t7v2+9Vs38gAEPchJ0Nly4TV+dydh7l1pIn9G7ssoA== # =OBRZ # -----END PGP SIGNATURE----- # gpg: Signature made Fri 07 Jul 2023 11:54:30 AM BST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [undefined] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [undefined] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # 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: target/i386: Add new CPU model GraniteRapids target/i386: Add few security fix bits in ARCH_CAPABILITIES into SapphireRapids CPU model target/i386: Add new bit definitions of MSR_IA32_ARCH_CAPABILITIES target/i386: Allow MCDT_NO if host supports target/i386: Add support for MCDT_NO in CPUID enumeration target/i386: Adjust feature level according to FEAT_7_1_EDX qemu_cleanup: begin drained section after vm_shutdown() meson.build: Remove the logic to link C code with the C++ linker python: bump minimum requirements so they are compatible with 3.12 Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
3b08e40b7a
10 changed files with 210 additions and 35 deletions
22
meson.build
22
meson.build
|
@ -473,19 +473,10 @@ if targetos != 'darwin'
|
|||
warn_flags += ['-Wthread-safety']
|
||||
endif
|
||||
|
||||
# Check that the C++ compiler exists and works with the C compiler.
|
||||
link_language = 'c'
|
||||
linker = cc
|
||||
# Set up C++ compiler flags
|
||||
qemu_cxxflags = []
|
||||
if 'cpp' in all_languages
|
||||
qemu_cxxflags = ['-D__STDC_LIMIT_MACROS', '-D__STDC_CONSTANT_MACROS', '-D__STDC_FORMAT_MACROS'] + qemu_cflags
|
||||
if cxx.links(files('scripts/main.c'), args: qemu_cflags)
|
||||
link_language = 'cpp'
|
||||
linker = cxx
|
||||
else
|
||||
message('C++ compiler does not work with C compiler')
|
||||
message('Disabling C++-specific optional code')
|
||||
endif
|
||||
endif
|
||||
|
||||
# clang does not support glibc + FORTIFY_SOURCE (is it still true?)
|
||||
|
@ -1600,7 +1591,7 @@ if not get_option('snappy').auto() or have_system
|
|||
snappy = cc.find_library('snappy', has_headers: ['snappy-c.h'],
|
||||
required: get_option('snappy'))
|
||||
endif
|
||||
if snappy.found() and not linker.links('''
|
||||
if snappy.found() and not cc.links('''
|
||||
#include <snappy-c.h>
|
||||
int main(void) { snappy_max_compressed_length(4096); return 0; }''', dependencies: snappy)
|
||||
snappy = not_found
|
||||
|
@ -2746,7 +2737,7 @@ config_host_data.set('CONFIG_AF_VSOCK', cc.has_header_symbol(
|
|||
|
||||
have_vss = false
|
||||
have_vss_sdk = false # old xp/2003 SDK
|
||||
if targetos == 'windows' and link_language == 'cpp'
|
||||
if targetos == 'windows' and 'cpp' in all_languages
|
||||
have_vss = cxx.compiles('''
|
||||
#define __MIDL_user_allocate_free_DEFINED__
|
||||
#include <vss.h>
|
||||
|
@ -3827,7 +3818,6 @@ foreach target : target_dirs
|
|||
c_args: c_args,
|
||||
dependencies: arch_deps + deps + exe['dependencies'],
|
||||
objects: lib.extract_all_objects(recursive: true),
|
||||
link_language: link_language,
|
||||
link_depends: [block_syms, qemu_syms] + exe.get('link_depends', []),
|
||||
link_args: link_args,
|
||||
win_subsystem: exe['win_subsystem'])
|
||||
|
@ -4061,7 +4051,7 @@ summary_info += {'host CPU': cpu}
|
|||
summary_info += {'host endianness': build_machine.endian()}
|
||||
summary_info += {'C compiler': ' '.join(meson.get_compiler('c').cmd_array())}
|
||||
summary_info += {'Host C compiler': ' '.join(meson.get_compiler('c', native: true).cmd_array())}
|
||||
if link_language == 'cpp'
|
||||
if 'cpp' in all_languages
|
||||
summary_info += {'C++ compiler': ' '.join(meson.get_compiler('cpp').cmd_array())}
|
||||
else
|
||||
summary_info += {'C++ compiler': false}
|
||||
|
@ -4074,13 +4064,13 @@ if get_option('optimization') != 'plain'
|
|||
option_cflags += ['-O' + get_option('optimization')]
|
||||
endif
|
||||
summary_info += {'CFLAGS': ' '.join(get_option('c_args') + option_cflags)}
|
||||
if link_language == 'cpp'
|
||||
if 'cpp' in all_languages
|
||||
summary_info += {'CXXFLAGS': ' '.join(get_option('cpp_args') + option_cflags)}
|
||||
endif
|
||||
if targetos == 'darwin'
|
||||
summary_info += {'OBJCFLAGS': ' '.join(get_option('objc_args') + option_cflags)}
|
||||
endif
|
||||
link_args = get_option(link_language + '_link_args')
|
||||
link_args = get_option('c_link_args')
|
||||
if link_args.length() > 0
|
||||
summary_info += {'LDFLAGS': ' '.join(link_args)}
|
||||
endif
|
||||
|
|
|
@ -346,7 +346,10 @@ async def manage_connection(self) -> None:
|
|||
self._set_status('[Disconnected]')
|
||||
await self.disconnect()
|
||||
# check if a retry is needed
|
||||
if self.runstate == Runstate.IDLE:
|
||||
# mypy 1.4.0 doesn't believe runstate can change after
|
||||
# disconnect(), hence the cast.
|
||||
state = cast(Runstate, self.runstate)
|
||||
if state == Runstate.IDLE:
|
||||
continue
|
||||
await self.runstate_changed()
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ devel =
|
|||
flake8 >= 5.0.4
|
||||
fusepy >= 2.0.4
|
||||
isort >= 5.1.2
|
||||
mypy >= 0.780
|
||||
mypy >= 1.4.0
|
||||
pylint >= 2.17.3
|
||||
tox >= 3.18.0
|
||||
urwid >= 2.1.2
|
||||
|
|
|
@ -28,7 +28,7 @@ avocado-framework==90.0
|
|||
# Linters
|
||||
flake8==5.0.4
|
||||
isort==5.1.2
|
||||
mypy==0.780
|
||||
mypy==1.4.0
|
||||
pylint==2.17.3
|
||||
|
||||
# Transitive flake8 dependencies
|
||||
|
@ -37,12 +37,11 @@ pycodestyle==2.9.1
|
|||
pyflakes==2.5.0
|
||||
|
||||
# Transitive mypy dependencies
|
||||
mypy-extensions==0.4.3
|
||||
typed-ast==1.4.0
|
||||
typing-extensions==4.5.0
|
||||
mypy-extensions==1.0.0
|
||||
typing-extensions==4.7.1
|
||||
|
||||
# Transitive pylint dependencies
|
||||
astroid==2.15.4
|
||||
lazy-object-proxy==1.4.0
|
||||
toml==0.10.0
|
||||
wrapt==1.12.1
|
||||
wrapt==1.14.0
|
||||
|
|
|
@ -9,7 +9,7 @@ endif
|
|||
have_qga_vss = get_option('qga_vss') \
|
||||
.require(targetos == 'windows',
|
||||
error_message: 'VSS support requires Windows') \
|
||||
.require(link_language == 'cpp',
|
||||
.require('cpp' in all_languages,
|
||||
error_message: 'VSS support requires a C++ compiler') \
|
||||
.require(have_vss, error_message: '''VSS support requires VSS headers.
|
||||
If your Visual Studio installation doesn't have the VSS headers,
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
int main(void) {}
|
|
@ -802,21 +802,21 @@ void qemu_cleanup(void)
|
|||
*/
|
||||
blk_exp_close_all();
|
||||
|
||||
/*
|
||||
* We must cancel all block jobs while the block layer is drained,
|
||||
* or cancelling will be affected by throttling and thus may block
|
||||
* for an extended period of time.
|
||||
* vm_shutdown() will bdrv_drain_all(), so we may as well include
|
||||
* it in the drained section.
|
||||
* We do not need to end this section, because we do not want any
|
||||
* requests happening from here on anyway.
|
||||
*/
|
||||
bdrv_drain_all_begin();
|
||||
|
||||
/* No more vcpu or device emulation activity beyond this point */
|
||||
vm_shutdown();
|
||||
replay_finish();
|
||||
|
||||
/*
|
||||
* We must cancel all block jobs while the block layer is drained,
|
||||
* or cancelling will be affected by throttling and thus may block
|
||||
* for an extended period of time.
|
||||
* Begin the drained section after vm_shutdown() to avoid requests being
|
||||
* stuck in the BlockBackend's request queue.
|
||||
* We do not need to end this section, because we do not want any
|
||||
* requests happening from here on anyway.
|
||||
*/
|
||||
bdrv_drain_all_begin();
|
||||
job_cancel_sync_all();
|
||||
bdrv_close_all();
|
||||
|
||||
|
|
|
@ -739,6 +739,7 @@ void x86_cpu_vendor_words2str(char *dst, uint32_t vendor1,
|
|||
#define TCG_7_1_EAX_FEATURES (CPUID_7_1_EAX_FZRM | CPUID_7_1_EAX_FSRS | \
|
||||
CPUID_7_1_EAX_FSRC)
|
||||
#define TCG_7_1_EDX_FEATURES 0
|
||||
#define TCG_7_2_EDX_FEATURES 0
|
||||
#define TCG_APM_FEATURES 0
|
||||
#define TCG_6_EAX_FEATURES CPUID_6_EAX_ARAT
|
||||
#define TCG_XSAVE_FEATURES (CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XGETBV1)
|
||||
|
@ -993,6 +994,25 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
|
|||
},
|
||||
.tcg_features = TCG_7_1_EDX_FEATURES,
|
||||
},
|
||||
[FEAT_7_2_EDX] = {
|
||||
.type = CPUID_FEATURE_WORD,
|
||||
.feat_names = {
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, "mcdt-no", NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
},
|
||||
.cpuid = {
|
||||
.eax = 7,
|
||||
.needs_ecx = true, .ecx = 2,
|
||||
.reg = R_EDX,
|
||||
},
|
||||
.tcg_features = TCG_7_2_EDX_FEATURES,
|
||||
},
|
||||
[FEAT_8000_0007_EDX] = {
|
||||
.type = CPUID_FEATURE_WORD,
|
||||
.feat_names = {
|
||||
|
@ -3922,6 +3942,151 @@ static const X86CPUDefinition builtin_x86_defs[] = {
|
|||
MSR_VMX_VMFUNC_EPT_SWITCHING,
|
||||
.xlevel = 0x80000008,
|
||||
.model_id = "Intel Xeon Processor (SapphireRapids)",
|
||||
.versions = (X86CPUVersionDefinition[]) {
|
||||
{ .version = 1 },
|
||||
{
|
||||
.version = 2,
|
||||
.props = (PropValue[]) {
|
||||
{ "sbdr-ssdp-no", "on" },
|
||||
{ "fbsdp-no", "on" },
|
||||
{ "psdp-no", "on" },
|
||||
{ /* end of list */ }
|
||||
}
|
||||
},
|
||||
{ /* end of list */ }
|
||||
}
|
||||
},
|
||||
{
|
||||
.name = "GraniteRapids",
|
||||
.level = 0x20,
|
||||
.vendor = CPUID_VENDOR_INTEL,
|
||||
.family = 6,
|
||||
.model = 173,
|
||||
.stepping = 0,
|
||||
/*
|
||||
* please keep the ascending order so that we can have a clear view of
|
||||
* bit position of each feature.
|
||||
*/
|
||||
.features[FEAT_1_EDX] =
|
||||
CPUID_FP87 | CPUID_VME | CPUID_DE | CPUID_PSE | CPUID_TSC |
|
||||
CPUID_MSR | CPUID_PAE | CPUID_MCE | CPUID_CX8 | CPUID_APIC |
|
||||
CPUID_SEP | CPUID_MTRR | CPUID_PGE | CPUID_MCA | CPUID_CMOV |
|
||||
CPUID_PAT | CPUID_PSE36 | CPUID_CLFLUSH | CPUID_MMX | CPUID_FXSR |
|
||||
CPUID_SSE | CPUID_SSE2,
|
||||
.features[FEAT_1_ECX] =
|
||||
CPUID_EXT_SSE3 | CPUID_EXT_PCLMULQDQ | CPUID_EXT_SSSE3 |
|
||||
CPUID_EXT_FMA | CPUID_EXT_CX16 | CPUID_EXT_PCID | CPUID_EXT_SSE41 |
|
||||
CPUID_EXT_SSE42 | CPUID_EXT_X2APIC | CPUID_EXT_MOVBE |
|
||||
CPUID_EXT_POPCNT | CPUID_EXT_TSC_DEADLINE_TIMER | CPUID_EXT_AES |
|
||||
CPUID_EXT_XSAVE | CPUID_EXT_AVX | CPUID_EXT_F16C | CPUID_EXT_RDRAND,
|
||||
.features[FEAT_8000_0001_EDX] =
|
||||
CPUID_EXT2_SYSCALL | CPUID_EXT2_NX | CPUID_EXT2_PDPE1GB |
|
||||
CPUID_EXT2_RDTSCP | CPUID_EXT2_LM,
|
||||
.features[FEAT_8000_0001_ECX] =
|
||||
CPUID_EXT3_LAHF_LM | CPUID_EXT3_ABM | CPUID_EXT3_3DNOWPREFETCH,
|
||||
.features[FEAT_8000_0008_EBX] =
|
||||
CPUID_8000_0008_EBX_WBNOINVD,
|
||||
.features[FEAT_7_0_EBX] =
|
||||
CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | CPUID_7_0_EBX_HLE |
|
||||
CPUID_7_0_EBX_AVX2 | CPUID_7_0_EBX_SMEP | CPUID_7_0_EBX_BMI2 |
|
||||
CPUID_7_0_EBX_ERMS | CPUID_7_0_EBX_INVPCID | CPUID_7_0_EBX_RTM |
|
||||
CPUID_7_0_EBX_AVX512F | CPUID_7_0_EBX_AVX512DQ |
|
||||
CPUID_7_0_EBX_RDSEED | CPUID_7_0_EBX_ADX | CPUID_7_0_EBX_SMAP |
|
||||
CPUID_7_0_EBX_AVX512IFMA | CPUID_7_0_EBX_CLFLUSHOPT |
|
||||
CPUID_7_0_EBX_CLWB | CPUID_7_0_EBX_AVX512CD | CPUID_7_0_EBX_SHA_NI |
|
||||
CPUID_7_0_EBX_AVX512BW | CPUID_7_0_EBX_AVX512VL,
|
||||
.features[FEAT_7_0_ECX] =
|
||||
CPUID_7_0_ECX_AVX512_VBMI | CPUID_7_0_ECX_UMIP | CPUID_7_0_ECX_PKU |
|
||||
CPUID_7_0_ECX_AVX512_VBMI2 | CPUID_7_0_ECX_GFNI |
|
||||
CPUID_7_0_ECX_VAES | CPUID_7_0_ECX_VPCLMULQDQ |
|
||||
CPUID_7_0_ECX_AVX512VNNI | CPUID_7_0_ECX_AVX512BITALG |
|
||||
CPUID_7_0_ECX_AVX512_VPOPCNTDQ | CPUID_7_0_ECX_LA57 |
|
||||
CPUID_7_0_ECX_RDPID | CPUID_7_0_ECX_BUS_LOCK_DETECT,
|
||||
.features[FEAT_7_0_EDX] =
|
||||
CPUID_7_0_EDX_FSRM | CPUID_7_0_EDX_SERIALIZE |
|
||||
CPUID_7_0_EDX_TSX_LDTRK | CPUID_7_0_EDX_AMX_BF16 |
|
||||
CPUID_7_0_EDX_AVX512_FP16 | CPUID_7_0_EDX_AMX_TILE |
|
||||
CPUID_7_0_EDX_AMX_INT8 | CPUID_7_0_EDX_SPEC_CTRL |
|
||||
CPUID_7_0_EDX_ARCH_CAPABILITIES | CPUID_7_0_EDX_SPEC_CTRL_SSBD,
|
||||
.features[FEAT_ARCH_CAPABILITIES] =
|
||||
MSR_ARCH_CAP_RDCL_NO | MSR_ARCH_CAP_IBRS_ALL |
|
||||
MSR_ARCH_CAP_SKIP_L1DFL_VMENTRY | MSR_ARCH_CAP_MDS_NO |
|
||||
MSR_ARCH_CAP_PSCHANGE_MC_NO | MSR_ARCH_CAP_TAA_NO |
|
||||
MSR_ARCH_CAP_SBDR_SSDP_NO | MSR_ARCH_CAP_FBSDP_NO |
|
||||
MSR_ARCH_CAP_PSDP_NO | MSR_ARCH_CAP_PBRSB_NO,
|
||||
.features[FEAT_XSAVE] =
|
||||
CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC |
|
||||
CPUID_XSAVE_XGETBV1 | CPUID_XSAVE_XSAVES | CPUID_D_1_EAX_XFD,
|
||||
.features[FEAT_6_EAX] =
|
||||
CPUID_6_EAX_ARAT,
|
||||
.features[FEAT_7_1_EAX] =
|
||||
CPUID_7_1_EAX_AVX_VNNI | CPUID_7_1_EAX_AVX512_BF16 |
|
||||
CPUID_7_1_EAX_FZRM | CPUID_7_1_EAX_FSRS | CPUID_7_1_EAX_FSRC |
|
||||
CPUID_7_1_EAX_AMX_FP16,
|
||||
.features[FEAT_7_1_EDX] =
|
||||
CPUID_7_1_EDX_PREFETCHITI,
|
||||
.features[FEAT_7_2_EDX] =
|
||||
CPUID_7_2_EDX_MCDT_NO,
|
||||
.features[FEAT_VMX_BASIC] =
|
||||
MSR_VMX_BASIC_INS_OUTS | MSR_VMX_BASIC_TRUE_CTLS,
|
||||
.features[FEAT_VMX_ENTRY_CTLS] =
|
||||
VMX_VM_ENTRY_LOAD_DEBUG_CONTROLS | VMX_VM_ENTRY_IA32E_MODE |
|
||||
VMX_VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL |
|
||||
VMX_VM_ENTRY_LOAD_IA32_PAT | VMX_VM_ENTRY_LOAD_IA32_EFER,
|
||||
.features[FEAT_VMX_EPT_VPID_CAPS] =
|
||||
MSR_VMX_EPT_EXECONLY |
|
||||
MSR_VMX_EPT_PAGE_WALK_LENGTH_4 | MSR_VMX_EPT_PAGE_WALK_LENGTH_5 |
|
||||
MSR_VMX_EPT_WB | MSR_VMX_EPT_2MB | MSR_VMX_EPT_1GB |
|
||||
MSR_VMX_EPT_INVEPT | MSR_VMX_EPT_AD_BITS |
|
||||
MSR_VMX_EPT_INVEPT_SINGLE_CONTEXT | MSR_VMX_EPT_INVEPT_ALL_CONTEXT |
|
||||
MSR_VMX_EPT_INVVPID | MSR_VMX_EPT_INVVPID_SINGLE_ADDR |
|
||||
MSR_VMX_EPT_INVVPID_SINGLE_CONTEXT |
|
||||
MSR_VMX_EPT_INVVPID_ALL_CONTEXT |
|
||||
MSR_VMX_EPT_INVVPID_SINGLE_CONTEXT_NOGLOBALS,
|
||||
.features[FEAT_VMX_EXIT_CTLS] =
|
||||
VMX_VM_EXIT_SAVE_DEBUG_CONTROLS |
|
||||
VMX_VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL |
|
||||
VMX_VM_EXIT_ACK_INTR_ON_EXIT | VMX_VM_EXIT_SAVE_IA32_PAT |
|
||||
VMX_VM_EXIT_LOAD_IA32_PAT | VMX_VM_EXIT_SAVE_IA32_EFER |
|
||||
VMX_VM_EXIT_LOAD_IA32_EFER | VMX_VM_EXIT_SAVE_VMX_PREEMPTION_TIMER,
|
||||
.features[FEAT_VMX_MISC] =
|
||||
MSR_VMX_MISC_STORE_LMA | MSR_VMX_MISC_ACTIVITY_HLT |
|
||||
MSR_VMX_MISC_VMWRITE_VMEXIT,
|
||||
.features[FEAT_VMX_PINBASED_CTLS] =
|
||||
VMX_PIN_BASED_EXT_INTR_MASK | VMX_PIN_BASED_NMI_EXITING |
|
||||
VMX_PIN_BASED_VIRTUAL_NMIS | VMX_PIN_BASED_VMX_PREEMPTION_TIMER |
|
||||
VMX_PIN_BASED_POSTED_INTR,
|
||||
.features[FEAT_VMX_PROCBASED_CTLS] =
|
||||
VMX_CPU_BASED_VIRTUAL_INTR_PENDING |
|
||||
VMX_CPU_BASED_USE_TSC_OFFSETING | VMX_CPU_BASED_HLT_EXITING |
|
||||
VMX_CPU_BASED_INVLPG_EXITING | VMX_CPU_BASED_MWAIT_EXITING |
|
||||
VMX_CPU_BASED_RDPMC_EXITING | VMX_CPU_BASED_RDTSC_EXITING |
|
||||
VMX_CPU_BASED_CR3_LOAD_EXITING | VMX_CPU_BASED_CR3_STORE_EXITING |
|
||||
VMX_CPU_BASED_CR8_LOAD_EXITING | VMX_CPU_BASED_CR8_STORE_EXITING |
|
||||
VMX_CPU_BASED_TPR_SHADOW | VMX_CPU_BASED_VIRTUAL_NMI_PENDING |
|
||||
VMX_CPU_BASED_MOV_DR_EXITING | VMX_CPU_BASED_UNCOND_IO_EXITING |
|
||||
VMX_CPU_BASED_USE_IO_BITMAPS | VMX_CPU_BASED_MONITOR_TRAP_FLAG |
|
||||
VMX_CPU_BASED_USE_MSR_BITMAPS | VMX_CPU_BASED_MONITOR_EXITING |
|
||||
VMX_CPU_BASED_PAUSE_EXITING |
|
||||
VMX_CPU_BASED_ACTIVATE_SECONDARY_CONTROLS,
|
||||
.features[FEAT_VMX_SECONDARY_CTLS] =
|
||||
VMX_SECONDARY_EXEC_VIRTUALIZE_APIC_ACCESSES |
|
||||
VMX_SECONDARY_EXEC_ENABLE_EPT | VMX_SECONDARY_EXEC_DESC |
|
||||
VMX_SECONDARY_EXEC_RDTSCP |
|
||||
VMX_SECONDARY_EXEC_VIRTUALIZE_X2APIC_MODE |
|
||||
VMX_SECONDARY_EXEC_ENABLE_VPID | VMX_SECONDARY_EXEC_WBINVD_EXITING |
|
||||
VMX_SECONDARY_EXEC_UNRESTRICTED_GUEST |
|
||||
VMX_SECONDARY_EXEC_APIC_REGISTER_VIRT |
|
||||
VMX_SECONDARY_EXEC_VIRTUAL_INTR_DELIVERY |
|
||||
VMX_SECONDARY_EXEC_RDRAND_EXITING |
|
||||
VMX_SECONDARY_EXEC_ENABLE_INVPCID |
|
||||
VMX_SECONDARY_EXEC_ENABLE_VMFUNC | VMX_SECONDARY_EXEC_SHADOW_VMCS |
|
||||
VMX_SECONDARY_EXEC_RDSEED_EXITING | VMX_SECONDARY_EXEC_ENABLE_PML |
|
||||
VMX_SECONDARY_EXEC_XSAVES,
|
||||
.features[FEAT_VMX_VMFUNC] =
|
||||
MSR_VMX_VMFUNC_EPT_SWITCHING,
|
||||
.xlevel = 0x80000008,
|
||||
.model_id = "Intel Xeon Processor (GraniteRapids)",
|
||||
.versions = (X86CPUVersionDefinition[]) {
|
||||
{ .version = 1 },
|
||||
{ /* end of list */ },
|
||||
|
@ -6017,6 +6182,11 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
|||
*edx = env->features[FEAT_7_1_EDX];
|
||||
*ebx = 0;
|
||||
*ecx = 0;
|
||||
} else if (count == 2) {
|
||||
*edx = env->features[FEAT_7_2_EDX];
|
||||
*eax = 0;
|
||||
*ebx = 0;
|
||||
*ecx = 0;
|
||||
} else {
|
||||
*eax = 0;
|
||||
*ebx = 0;
|
||||
|
@ -6880,6 +7050,8 @@ void x86_cpu_expand_features(X86CPU *cpu, Error **errp)
|
|||
x86_cpu_adjust_feat_level(cpu, FEAT_6_EAX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_0_ECX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_1_EAX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_1_EDX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_7_2_EDX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_8000_0001_EDX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_8000_0001_ECX);
|
||||
x86_cpu_adjust_feat_level(cpu, FEAT_8000_0007_EDX);
|
||||
|
|
|
@ -628,6 +628,7 @@ typedef enum FeatureWord {
|
|||
FEAT_XSAVE_XSS_LO, /* CPUID[EAX=0xd,ECX=1].ECX */
|
||||
FEAT_XSAVE_XSS_HI, /* CPUID[EAX=0xd,ECX=1].EDX */
|
||||
FEAT_7_1_EDX, /* CPUID[EAX=7,ECX=1].EDX */
|
||||
FEAT_7_2_EDX, /* CPUID[EAX=7,ECX=2].EDX */
|
||||
FEATURE_WORDS,
|
||||
} FeatureWord;
|
||||
|
||||
|
@ -932,6 +933,9 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
|
|||
/* PREFETCHIT0/1 Instructions */
|
||||
#define CPUID_7_1_EDX_PREFETCHITI (1U << 14)
|
||||
|
||||
/* Do not exhibit MXCSR Configuration Dependent Timing (MCDT) behavior */
|
||||
#define CPUID_7_2_EDX_MCDT_NO (1U << 5)
|
||||
|
||||
/* XFD Extend Feature Disabled */
|
||||
#define CPUID_D_1_EAX_XFD (1U << 4)
|
||||
|
||||
|
@ -1018,7 +1022,11 @@ uint64_t x86_cpu_get_supported_feature_word(FeatureWord w,
|
|||
#define MSR_ARCH_CAP_PSCHANGE_MC_NO (1U << 6)
|
||||
#define MSR_ARCH_CAP_TSX_CTRL_MSR (1U << 7)
|
||||
#define MSR_ARCH_CAP_TAA_NO (1U << 8)
|
||||
#define MSR_ARCH_CAP_SBDR_SSDP_NO (1U << 13)
|
||||
#define MSR_ARCH_CAP_FBSDP_NO (1U << 14)
|
||||
#define MSR_ARCH_CAP_PSDP_NO (1U << 15)
|
||||
#define MSR_ARCH_CAP_FB_CLEAR (1U << 17)
|
||||
#define MSR_ARCH_CAP_PBRSB_NO (1U << 24)
|
||||
|
||||
#define MSR_CORE_CAP_SPLIT_LOCK_DETECT (1U << 5)
|
||||
|
||||
|
|
|
@ -432,6 +432,10 @@ uint32_t kvm_arch_get_supported_cpuid(KVMState *s, uint32_t function,
|
|||
uint32_t eax;
|
||||
host_cpuid(7, 1, &eax, &unused, &unused, &unused);
|
||||
ret |= eax & (CPUID_7_1_EAX_FZRM | CPUID_7_1_EAX_FSRS | CPUID_7_1_EAX_FSRC);
|
||||
} else if (function == 7 && index == 2 && reg == R_EDX) {
|
||||
uint32_t edx;
|
||||
host_cpuid(7, 2, &unused, &unused, &unused, &edx);
|
||||
ret |= edx & CPUID_7_2_EDX_MCDT_NO;
|
||||
} else if (function == 0xd && index == 0 &&
|
||||
(reg == R_EAX || reg == R_EDX)) {
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue