- kvm-s390x-Fix-leak-in-machine_set_loadparm.patch [RHEL-98555] - kvm-hw-s390x-ccw-device-Fix-memory-leak-in-loadparm-sett.patch [RHEL-98555] - kvm-target-i386-Update-EPYC-CPU-model-for-Cache-property.patch [RHEL-52650] - kvm-target-i386-Update-EPYC-Rome-CPU-model-for-Cache-pro.patch [RHEL-52650] - kvm-target-i386-Update-EPYC-Milan-CPU-model-for-Cache-pr.patch [RHEL-52650] - kvm-target-i386-Add-couple-of-feature-bits-in-CPUID_Fn80.patch [RHEL-52650] - kvm-target-i386-Update-EPYC-Genoa-for-Cache-property-per.patch [RHEL-52650] - kvm-target-i386-Add-support-for-EPYC-Turin-model.patch [RHEL-52650] - kvm-include-qemu-compiler-add-QEMU_UNINITIALIZED-attribu.patch [RHEL-95479] - kvm-hw-virtio-virtio-avoid-cost-of-ftrivial-auto-var-ini.patch [RHEL-95479] - kvm-block-skip-automatic-zero-init-of-large-array-in-ioq.patch [RHEL-95479] - kvm-chardev-char-fd-skip-automatic-zero-init-of-large-ar.patch [RHEL-95479] - kvm-chardev-char-pty-skip-automatic-zero-init-of-large-a.patch [RHEL-95479] - kvm-chardev-char-socket-skip-automatic-zero-init-of-larg.patch [RHEL-95479] - kvm-hw-audio-ac97-skip-automatic-zero-init-of-large-arra.patch [RHEL-95479] - kvm-hw-audio-cs4231a-skip-automatic-zero-init-of-large-a.patch [RHEL-95479] - kvm-hw-audio-es1370-skip-automatic-zero-init-of-large-ar.patch [RHEL-95479] - kvm-hw-audio-gus-skip-automatic-zero-init-of-large-array.patch [RHEL-95479] - kvm-hw-audio-marvell_88w8618-skip-automatic-zero-init-of.patch [RHEL-95479] - kvm-hw-audio-sb16-skip-automatic-zero-init-of-large-arra.patch [RHEL-95479] - kvm-hw-audio-via-ac97-skip-automatic-zero-init-of-large-.patch [RHEL-95479] - kvm-hw-char-sclpconsole-lm-skip-automatic-zero-init-of-l.patch [RHEL-95479] - kvm-hw-dma-xlnx_csu_dma-skip-automatic-zero-init-of-larg.patch [RHEL-95479] - kvm-hw-display-vmware_vga-skip-automatic-zero-init-of-la.patch [RHEL-95479] - kvm-hw-hyperv-syndbg-skip-automatic-zero-init-of-large-a.patch [RHEL-95479] - kvm-hw-misc-aspeed_hace-skip-automatic-zero-init-of-larg.patch [RHEL-95479] - kvm-hw-net-rtl8139-skip-automatic-zero-init-of-large-arr.patch [RHEL-95479] - kvm-hw-net-tulip-skip-automatic-zero-init-of-large-array.patch [RHEL-95479] - kvm-hw-net-virtio-net-skip-automatic-zero-init-of-large-.patch [RHEL-95479] - kvm-hw-net-xgamc-skip-automatic-zero-init-of-large-array.patch [RHEL-95479] - kvm-hw-nvme-ctrl-skip-automatic-zero-init-of-large-array.patch [RHEL-95479] - kvm-hw-ppc-pnv_occ-skip-automatic-zero-init-of-large-str.patch [RHEL-95479] - kvm-hw-ppc-spapr_tpm_proxy-skip-automatic-zero-init-of-l.patch [RHEL-95479] - kvm-hw-usb-hcd-ohci-skip-automatic-zero-init-of-large-ar.patch [RHEL-95479] - kvm-hw-scsi-lsi53c895a-skip-automatic-zero-init-of-large.patch [RHEL-95479] - kvm-hw-scsi-megasas-skip-automatic-zero-init-of-large-ar.patch [RHEL-95479] - kvm-hw-ufs-lu-skip-automatic-zero-init-of-large-array.patch [RHEL-95479] - kvm-net-socket-skip-automatic-zero-init-of-large-array.patch [RHEL-95479] - kvm-net-stream-skip-automatic-zero-init-of-large-array.patch [RHEL-95479] - kvm-hw-i386-amd_iommu-Isolate-AMDVI-PCI-from-amd-iommu-d.patch [RHEL-85649] - kvm-hw-i386-amd_iommu-Allow-migration-when-explicitly-cr.patch [RHEL-85649] - kvm-Enable-amd-iommu-device.patch [RHEL-85649] - kvm-ui-vnc-Update-display-update-interval-when-VM-state-.patch [RHEL-83883] - Resolves: RHEL-98555 ([s390x][RHEL10.1][ccw-device] there would be memory leak with virtio_blk disks) - Resolves: RHEL-52650 ([AMDSERVER 10.1 Feature] Turin: Qemu EPYC-Turin Model) - Resolves: RHEL-95479 (-ftrivial-auto-var-init=zero reduced performance) - Resolves: RHEL-85649 ([RHEL 10]Qemu/amd-iommu: Add ability to manually specify the AMDVI-PCI device) - Resolves: RHEL-83883 (Video stuck after switchover phase when play one video during migration)
201 lines
8.2 KiB
Diff
201 lines
8.2 KiB
Diff
From 6a86e17bd55a867b903e14a6cff3d985a046a794 Mon Sep 17 00:00:00 2001
|
|
From: Babu Moger <babu.moger@amd.com>
|
|
Date: Thu, 8 May 2025 14:58:04 -0500
|
|
Subject: [PATCH 08/43] target/i386: Add support for EPYC-Turin model
|
|
|
|
RH-Author: John Allen <None>
|
|
RH-MergeRequest: 377: Update EPYC Models and Feature Bits
|
|
RH-Jira: RHEL-52650
|
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
RH-Commit: [6/6] 3d8805bafc53da2bd5a2b2b96cc892ea7ca9f2b3 (johnalle/qemu-kvm-fork)
|
|
|
|
Add the support for AMD EPYC zen 5 processors (EPYC-Turin).
|
|
|
|
Add the following new feature bits on top of the feature bits from
|
|
the previous generation EPYC models.
|
|
|
|
movdiri : Move Doubleword as Direct Store Instruction
|
|
movdir64b : Move 64 Bytes as Direct Store Instruction
|
|
avx512-vp2intersect : AVX512 Vector Pair Intersection to a Pair
|
|
of Mask Register
|
|
avx-vnni : AVX VNNI Instruction
|
|
prefetchi : Indicates support for IC prefetch
|
|
sbpb : Selective Branch Predictor Barrier
|
|
ibpb-brtype : IBPB includes branch type prediction flushing
|
|
srso-user-kernel-no : Not vulnerable to SRSO at the user-kernel boundary
|
|
|
|
Link: https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/programmer-references/57238.zip
|
|
Link: https://www.amd.com/content/dam/amd/en/documents/corporate/cr/speculative-return-stack-overflow-whitepaper.pdf
|
|
Signed-off-by: Babu Moger <babu.moger@amd.com>
|
|
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
|
|
Link: https://lore.kernel.org/r/b4fa7708a0e1453d2e9b8ec3dc881feb92eeca0b.1746734284.git.babu.moger@amd.com
|
|
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
(cherry picked from commit 3771a4daa273ba17cb27309984413790d1df5651)
|
|
|
|
JIRA: https://issues.redhat.com/browse/RHEL-52650
|
|
|
|
Signed-off-by: John Allen <johnalle@redhat.com>
|
|
---
|
|
target/i386/cpu.c | 138 ++++++++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 138 insertions(+)
|
|
|
|
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
|
|
index 523ac08a07..3e31999d19 100644
|
|
--- a/target/i386/cpu.c
|
|
+++ b/target/i386/cpu.c
|
|
@@ -2668,6 +2668,61 @@ static const CPUCaches epyc_genoa_v2_cache_info = {
|
|
.share_level = CPU_TOPOLOGY_LEVEL_DIE,
|
|
},
|
|
};
|
|
+
|
|
+static const CPUCaches epyc_turin_cache_info = {
|
|
+ .l1d_cache = &(CPUCacheInfo) {
|
|
+ .type = DATA_CACHE,
|
|
+ .level = 1,
|
|
+ .size = 48 * KiB,
|
|
+ .line_size = 64,
|
|
+ .associativity = 12,
|
|
+ .partitions = 1,
|
|
+ .sets = 64,
|
|
+ .lines_per_tag = 1,
|
|
+ .self_init = true,
|
|
+ .share_level = CPU_TOPOLOGY_LEVEL_CORE,
|
|
+ },
|
|
+ .l1i_cache = &(CPUCacheInfo) {
|
|
+ .type = INSTRUCTION_CACHE,
|
|
+ .level = 1,
|
|
+ .size = 32 * KiB,
|
|
+ .line_size = 64,
|
|
+ .associativity = 8,
|
|
+ .partitions = 1,
|
|
+ .sets = 64,
|
|
+ .lines_per_tag = 1,
|
|
+ .self_init = true,
|
|
+ .share_level = CPU_TOPOLOGY_LEVEL_CORE,
|
|
+ },
|
|
+ .l2_cache = &(CPUCacheInfo) {
|
|
+ .type = UNIFIED_CACHE,
|
|
+ .level = 2,
|
|
+ .size = 1 * MiB,
|
|
+ .line_size = 64,
|
|
+ .associativity = 16,
|
|
+ .partitions = 1,
|
|
+ .sets = 1024,
|
|
+ .lines_per_tag = 1,
|
|
+ .self_init = true,
|
|
+ .inclusive = true,
|
|
+ .share_level = CPU_TOPOLOGY_LEVEL_CORE,
|
|
+ },
|
|
+ .l3_cache = &(CPUCacheInfo) {
|
|
+ .type = UNIFIED_CACHE,
|
|
+ .level = 3,
|
|
+ .size = 32 * MiB,
|
|
+ .line_size = 64,
|
|
+ .associativity = 16,
|
|
+ .partitions = 1,
|
|
+ .sets = 32768,
|
|
+ .lines_per_tag = 1,
|
|
+ .self_init = true,
|
|
+ .no_invd_sharing = true,
|
|
+ .complex_indexing = false,
|
|
+ .share_level = CPU_TOPOLOGY_LEVEL_DIE,
|
|
+ },
|
|
+};
|
|
+
|
|
/* The following VMX features are not supported by KVM and are left out in the
|
|
* CPU definitions:
|
|
*
|
|
@@ -5937,6 +5992,89 @@ static const X86CPUDefinition builtin_x86_defs[] = {
|
|
.model_id = "Zhaoxin YongFeng Processor",
|
|
},
|
|
#endif
|
|
+ {
|
|
+ .name = "EPYC-Turin",
|
|
+ .level = 0xd,
|
|
+ .vendor = CPUID_VENDOR_AMD,
|
|
+ .family = 26,
|
|
+ .model = 0,
|
|
+ .stepping = 0,
|
|
+ .features[FEAT_1_ECX] =
|
|
+ CPUID_EXT_RDRAND | CPUID_EXT_F16C | CPUID_EXT_AVX |
|
|
+ CPUID_EXT_XSAVE | CPUID_EXT_AES | CPUID_EXT_POPCNT |
|
|
+ CPUID_EXT_MOVBE | CPUID_EXT_SSE42 | CPUID_EXT_SSE41 |
|
|
+ CPUID_EXT_PCID | CPUID_EXT_CX16 | CPUID_EXT_FMA |
|
|
+ CPUID_EXT_SSSE3 | CPUID_EXT_MONITOR | CPUID_EXT_PCLMULQDQ |
|
|
+ CPUID_EXT_SSE3,
|
|
+ .features[FEAT_1_EDX] =
|
|
+ CPUID_SSE2 | CPUID_SSE | CPUID_FXSR | CPUID_MMX | CPUID_CLFLUSH |
|
|
+ CPUID_PSE36 | CPUID_PAT | CPUID_CMOV | CPUID_MCA | CPUID_PGE |
|
|
+ CPUID_MTRR | CPUID_SEP | CPUID_APIC | CPUID_CX8 | CPUID_MCE |
|
|
+ CPUID_PAE | CPUID_MSR | CPUID_TSC | CPUID_PSE | CPUID_DE |
|
|
+ CPUID_VME | CPUID_FP87,
|
|
+ .features[FEAT_6_EAX] =
|
|
+ CPUID_6_EAX_ARAT,
|
|
+ .features[FEAT_7_0_EBX] =
|
|
+ CPUID_7_0_EBX_FSGSBASE | CPUID_7_0_EBX_BMI1 | 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_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_MOVDIRI |
|
|
+ CPUID_7_0_ECX_MOVDIR64B,
|
|
+ .features[FEAT_7_0_EDX] =
|
|
+ CPUID_7_0_EDX_FSRM | CPUID_7_0_EDX_AVX512_VP2INTERSECT,
|
|
+ .features[FEAT_7_1_EAX] =
|
|
+ CPUID_7_1_EAX_AVX_VNNI | CPUID_7_1_EAX_AVX512_BF16,
|
|
+ .features[FEAT_8000_0001_ECX] =
|
|
+ CPUID_EXT3_OSVW | CPUID_EXT3_3DNOWPREFETCH |
|
|
+ CPUID_EXT3_MISALIGNSSE | CPUID_EXT3_SSE4A | CPUID_EXT3_ABM |
|
|
+ CPUID_EXT3_CR8LEG | CPUID_EXT3_SVM | CPUID_EXT3_LAHF_LM |
|
|
+ CPUID_EXT3_TOPOEXT | CPUID_EXT3_PERFCORE,
|
|
+ .features[FEAT_8000_0001_EDX] =
|
|
+ CPUID_EXT2_LM | CPUID_EXT2_RDTSCP | CPUID_EXT2_PDPE1GB |
|
|
+ CPUID_EXT2_FFXSR | CPUID_EXT2_MMXEXT | CPUID_EXT2_NX |
|
|
+ CPUID_EXT2_SYSCALL,
|
|
+ .features[FEAT_8000_0007_EBX] =
|
|
+ CPUID_8000_0007_EBX_OVERFLOW_RECOV | CPUID_8000_0007_EBX_SUCCOR,
|
|
+ .features[FEAT_8000_0008_EBX] =
|
|
+ CPUID_8000_0008_EBX_CLZERO | CPUID_8000_0008_EBX_XSAVEERPTR |
|
|
+ CPUID_8000_0008_EBX_WBNOINVD | CPUID_8000_0008_EBX_IBPB |
|
|
+ CPUID_8000_0008_EBX_IBRS | CPUID_8000_0008_EBX_STIBP |
|
|
+ CPUID_8000_0008_EBX_STIBP_ALWAYS_ON |
|
|
+ CPUID_8000_0008_EBX_AMD_SSBD | CPUID_8000_0008_EBX_AMD_PSFD,
|
|
+ .features[FEAT_8000_0021_EAX] =
|
|
+ CPUID_8000_0021_EAX_NO_NESTED_DATA_BP |
|
|
+ CPUID_8000_0021_EAX_FS_GS_BASE_NS |
|
|
+ CPUID_8000_0021_EAX_LFENCE_ALWAYS_SERIALIZING |
|
|
+ CPUID_8000_0021_EAX_NULL_SEL_CLR_BASE |
|
|
+ CPUID_8000_0021_EAX_AUTO_IBRS | CPUID_8000_0021_EAX_PREFETCHI |
|
|
+ CPUID_8000_0021_EAX_SBPB | CPUID_8000_0021_EAX_IBPB_BRTYPE |
|
|
+ CPUID_8000_0021_EAX_SRSO_USER_KERNEL_NO,
|
|
+ .features[FEAT_8000_0022_EAX] =
|
|
+ CPUID_8000_0022_EAX_PERFMON_V2,
|
|
+ .features[FEAT_XSAVE] =
|
|
+ CPUID_XSAVE_XSAVEOPT | CPUID_XSAVE_XSAVEC |
|
|
+ CPUID_XSAVE_XGETBV1 | CPUID_XSAVE_XSAVES,
|
|
+ .features[FEAT_SVM] =
|
|
+ CPUID_SVM_NPT | CPUID_SVM_LBRV | CPUID_SVM_NRIPSAVE |
|
|
+ CPUID_SVM_TSCSCALE | CPUID_SVM_VMCBCLEAN | CPUID_SVM_FLUSHASID |
|
|
+ CPUID_SVM_PAUSEFILTER | CPUID_SVM_PFTHRESHOLD |
|
|
+ CPUID_SVM_V_VMSAVE_VMLOAD | CPUID_SVM_VGIF |
|
|
+ CPUID_SVM_VNMI | CPUID_SVM_SVME_ADDR_CHK,
|
|
+ .xlevel = 0x80000022,
|
|
+ .model_id = "AMD EPYC-Turin Processor",
|
|
+ .cache_info = &epyc_turin_cache_info,
|
|
+ },
|
|
};
|
|
|
|
/*
|
|
--
|
|
2.39.3
|
|
|