arch-x86: Make CPUID vendor string a param
authorMatthew Poremba <matthew.poremba@amd.com>
Thu, 15 Oct 2020 20:46:43 +0000 (15:46 -0500)
committerMatthew Poremba <matthew.poremba@amd.com>
Mon, 2 Nov 2020 18:17:41 +0000 (18:17 +0000)
commit4a0797593f3d64cb69dfbc2c1a8762ae5a9c1007
treeddf5aeb206e1c286c35d83d4b20c88d5657571a8
parentbd6c80b3f7d390fbb842435404500de70c08ef0e
arch-x86: Make CPUID vendor string a param

Modern libraries such as ROCm, MPI, and libnuma use files in Linux'
sysfs to determine the system topology such as number of CPUs, cache
size, cache associativity, etc. If Linux does not recognize the vendor
string returned by CPUID in x86 it will do a generic initialization
which does not include creating these files. In the case of ROCm
(specifically ROCt) this causes failures when getting device properties.

This can be solved by setting the vendor string to, for example,
AuthenticAMD (as qemu does) so that Linux will create the relevant sysfs
files. Unfortunately, simply changing the string in cpuid.cc to
AuthenticAMD causes simulation slowdown and may not be desirable to all
users. This change creates a parameter, defaulting to M5 Simulator as it
currently is, which can be set in python configuration files to change
the vendor string. Example of how to configure this is:

for i in range(len(self.cpus)):
    for j in range(len(self.cpus[i].isa)):
        self.cpus[i].isa[j].vendor_string = "AuthenticAMD"

Change-Id: I8de26d5a145867fa23518718a799dd96b5b9bffa
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/36156
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
src/arch/x86/X86ISA.py
src/arch/x86/cpuid.cc
src/arch/x86/isa.cc
src/arch/x86/isa.hh