mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-09-09 08:17:53 -06:00
target/i386: Update EPYC-Rome CPU model for Cache property, RAS, SVM feature bits
Found that some of the cache properties are not set correctly for EPYC models. l1d_cache.no_invd_sharing should not be true. l1i_cache.no_invd_sharing should not be true. L2.self_init should be true. L2.inclusive should be true. L3.inclusive should not be true. L3.no_invd_sharing should be true. Fix these cache properties. Also add the missing RAS and SVM features bits on AMD EPYC-Rome. The SVM feature bits are used in nested guests. succor : Software uncorrectable error containment and recovery capability. overflow-recov : MCA overflow recovery support. lbrv : LBR virtualization tsc-scale : MSR based TSC rate control vmcb-clean : VMCB clean bits flushbyasid : Flush by ASID pause-filter : Pause intercept filter pfthreshold : PAUSE filter threshold v-vmsave-vmload : Virtualized VMLOAD and VMSAVE vgif : Virtualized GIF Signed-off-by: Babu Moger <babu.moger@amd.com> Reviewed-by: Maksim Davydov <davydov-max@yandex-team.ru> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Link: https://lore.kernel.org/r/8265af72057b84c99ac3a02a5487e32759cc69b1.1746734284.git.babu.moger@amd.com Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
397db937e8
commit
83d940e970
1 changed files with 73 additions and 0 deletions
|
@ -2373,6 +2373,60 @@ static const CPUCaches epyc_rome_v3_cache_info = {
|
|||
},
|
||||
};
|
||||
|
||||
static const CPUCaches epyc_rome_v5_cache_info = {
|
||||
.l1d_cache = &(CPUCacheInfo) {
|
||||
.type = DATA_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,
|
||||
},
|
||||
.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 = 512 * KiB,
|
||||
.line_size = 64,
|
||||
.associativity = 8,
|
||||
.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 = 16 * MiB,
|
||||
.line_size = 64,
|
||||
.associativity = 16,
|
||||
.partitions = 1,
|
||||
.sets = 16384,
|
||||
.lines_per_tag = 1,
|
||||
.self_init = true,
|
||||
.no_invd_sharing = true,
|
||||
.complex_indexing = false,
|
||||
.share_level = CPU_TOPOLOGY_LEVEL_DIE,
|
||||
},
|
||||
};
|
||||
|
||||
static const CPUCaches epyc_milan_cache_info = {
|
||||
.l1d_cache = &(CPUCacheInfo) {
|
||||
.type = DATA_CACHE,
|
||||
|
@ -5449,6 +5503,25 @@ static const X86CPUDefinition builtin_x86_defs[] = {
|
|||
{ /* end of list */ }
|
||||
},
|
||||
},
|
||||
{
|
||||
.version = 5,
|
||||
.props = (PropValue[]) {
|
||||
{ "overflow-recov", "on" },
|
||||
{ "succor", "on" },
|
||||
{ "lbrv", "on" },
|
||||
{ "tsc-scale", "on" },
|
||||
{ "vmcb-clean", "on" },
|
||||
{ "flushbyasid", "on" },
|
||||
{ "pause-filter", "on" },
|
||||
{ "pfthreshold", "on" },
|
||||
{ "v-vmsave-vmload", "on" },
|
||||
{ "vgif", "on" },
|
||||
{ "model-id",
|
||||
"AMD EPYC-Rome-v5 Processor" },
|
||||
{ /* end of list */ }
|
||||
},
|
||||
.cache_info = &epyc_rome_v5_cache_info
|
||||
},
|
||||
{ /* end of list */ }
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue