Skip to content

Commit

Permalink
Add mapping of the CPUs
Browse files Browse the repository at this point in the history
This patch adds the mapping of CPUs from oVirt to OCP. This includes the
additional flags pointed out in the source environment.

Signed-off-by: Liran Rotenberg <lrotenbe@redhat.com>
  • Loading branch information
liranr23 committed Dec 24, 2023
1 parent 0a4fd64 commit 989cdca
Showing 1 changed file with 45 additions and 0 deletions.
45 changes: 45 additions & 0 deletions pkg/controller/plan/adapter/ovirt/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,35 @@ var osMap = map[string]string{
"windows_11": "win11",
}

var cpuMap = map[string]string{
"Nehalem": "Nehalem",
"Nehalem,+spec-ctrl,+ssbd": "Nehalem-IBRS",
"Westmere": "Westmere",
"Westmere,+pcid,+spec-ctrl,+ssbd": "Westmere-IBRS",
"SandyBridge": "SandyBridge",
"SandyBridge,+pcid,+spec-ctrl,+ssbd,+md-clear": "SandyBridge-IBRS",
"IvyBridge": "IvyBridge",
"IvyBridge,+pcid,+spec-ctrl,+ssbd,+md-clear": "IvyBridge-IBRS",
"Haswell-noTSX": "Haswell-noTSX",
"Haswell-noTSX,+spec-ctrl,+ssbd,+md-clear": "Haswell-noTSX-IBRS",
"Broadwell-noTSX": "Broadwell-noTSX",
"Broadwell-noTSX,+spec-ctrl,+ssbd,+md-clear": "Broadwell-noTSX-IBRS",
"Skylake-Client,-hle,-rtm,-mpx": "Skylake-Client",
"Skylake-Client-noTSX-IBRS,+ssbd,+md-clear,-mpx": "Skylake-Client-noTSX-IBRS",
"Skylake-Server,-hle,-rtm,-mpx": "Skylake-Server",
"Skylake-Server-noTSX-IBRS,+ssbd,+md-clear,-mpx": "Skylake-Server-noTSX-IBRS",
"Cascadelake-Server,-hle,-rtm,-mpx": "Cascadelake-Server",
"Cascadelake-Server-noTSX,-mpx": "Cascadelake-Server-noTSX",
"Icelake-Server-noTSX,-mpx": "Icelake-Server",
"Icelake-Server-noTSX,+arch-capabilities,+rdctl-no,+ibrs-all,+skip-l1dfl-vmentry,+mds-no,+pschange-mc-no,-mpx": "Icelake-Server-noTSX",
"Opteron_G4": "Opteron_G4",
"Opteron_G5": "Opteron_G5",
"EPYC": "EPYC",
"EPYC,+ibpb,+virt-ssbd": "EPYC-IBPB",
"POWER8": "POWER8",
"POWER9": "POWER9",
}

// oVirt builder.
type Builder struct {
*plancontext.Context
Expand Down Expand Up @@ -391,7 +420,23 @@ func (r *Builder) mapCPU(vm *model.Workload, object *cnv.VirtualMachineSpec) {
if vm.CpuPinningPolicy == model.Dedicated {
object.Template.Spec.Domain.CPU.DedicatedCPUPlacement = true
}
if vm.CustomCpuModel != "" {
r.setCpuFlags(vm.CustomCpuModel, object)
}
}

func (r *Builder) setCpuFlags(fullCpu string, object *cnv.VirtualMachineSpec) {
object.Template.Spec.Domain.CPU.Model = cpuMap[fullCpu]
cpuFlags := strings.Split(fullCpu, ",")
for _, val := range cpuFlags[1:] {
if flag, found := strings.CutPrefix(val, "+"); found {
object.Template.Spec.Domain.CPU.Features = append(object.Template.Spec.Domain.CPU.Features, cnv.CPUFeature{Name: flag, Policy: "require"})
} else if flag, found = strings.CutPrefix(val, "-"); found {
object.Template.Spec.Domain.CPU.Features = append(object.Template.Spec.Domain.CPU.Features, cnv.CPUFeature{Name: flag, Policy: "disable"})
} else {
object.Template.Spec.Domain.CPU.Features = append(object.Template.Spec.Domain.CPU.Features, cnv.CPUFeature{Name: flag})
}
}
}

func (r *Builder) mapFirmware(vm *model.Workload, cluster *model.Cluster, object *cnv.VirtualMachineSpec) {
Expand Down

0 comments on commit 989cdca

Please sign in to comment.