hw/smbios: Add table 4 parameter, "processor-id"
This parameter is to be used in the processor_id entry in the type 4 table. This parameter is set as optional and if left will use the values from the CPU model. This enables hiding the host information from the guest and allowing AMD VMs to run pretending to be Intel for some userspace software concerns. Reviewed-by: Peter Foley <pefoley@google.com> Reviewed-by: Titus Rwantare <titusr@google.com> Signed-off-by: Patrick Venture <venture@google.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Message-Id: <20220125163118.1011809-1-venture@google.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
e6895f04c8
commit
cb5fb04fe6
@ -104,9 +104,11 @@ static struct {
|
|||||||
const char *sock_pfx, *manufacturer, *version, *serial, *asset, *part;
|
const char *sock_pfx, *manufacturer, *version, *serial, *asset, *part;
|
||||||
uint64_t max_speed;
|
uint64_t max_speed;
|
||||||
uint64_t current_speed;
|
uint64_t current_speed;
|
||||||
|
uint64_t processor_id;
|
||||||
} type4 = {
|
} type4 = {
|
||||||
.max_speed = DEFAULT_CPU_SPEED,
|
.max_speed = DEFAULT_CPU_SPEED,
|
||||||
.current_speed = DEFAULT_CPU_SPEED
|
.current_speed = DEFAULT_CPU_SPEED,
|
||||||
|
.processor_id = 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct {
|
static struct {
|
||||||
@ -327,6 +329,10 @@ static const QemuOptDesc qemu_smbios_type4_opts[] = {
|
|||||||
.name = "part",
|
.name = "part",
|
||||||
.type = QEMU_OPT_STRING,
|
.type = QEMU_OPT_STRING,
|
||||||
.help = "part number",
|
.help = "part number",
|
||||||
|
}, {
|
||||||
|
.name = "processor-id",
|
||||||
|
.type = QEMU_OPT_NUMBER,
|
||||||
|
.help = "processor id",
|
||||||
},
|
},
|
||||||
{ /* end of list */ }
|
{ /* end of list */ }
|
||||||
};
|
};
|
||||||
@ -683,8 +689,13 @@ static void smbios_build_type_4_table(MachineState *ms, unsigned instance)
|
|||||||
t->processor_type = 0x03; /* CPU */
|
t->processor_type = 0x03; /* CPU */
|
||||||
t->processor_family = 0x01; /* Other */
|
t->processor_family = 0x01; /* Other */
|
||||||
SMBIOS_TABLE_SET_STR(4, processor_manufacturer_str, type4.manufacturer);
|
SMBIOS_TABLE_SET_STR(4, processor_manufacturer_str, type4.manufacturer);
|
||||||
t->processor_id[0] = cpu_to_le32(smbios_cpuid_version);
|
if (type4.processor_id == 0) {
|
||||||
t->processor_id[1] = cpu_to_le32(smbios_cpuid_features);
|
t->processor_id[0] = cpu_to_le32(smbios_cpuid_version);
|
||||||
|
t->processor_id[1] = cpu_to_le32(smbios_cpuid_features);
|
||||||
|
} else {
|
||||||
|
t->processor_id[0] = cpu_to_le32((uint32_t)type4.processor_id);
|
||||||
|
t->processor_id[1] = cpu_to_le32(type4.processor_id >> 32);
|
||||||
|
}
|
||||||
SMBIOS_TABLE_SET_STR(4, processor_version_str, type4.version);
|
SMBIOS_TABLE_SET_STR(4, processor_version_str, type4.version);
|
||||||
t->voltage = 0;
|
t->voltage = 0;
|
||||||
t->external_clock = cpu_to_le16(0); /* Unknown */
|
t->external_clock = cpu_to_le16(0); /* Unknown */
|
||||||
@ -1323,6 +1334,8 @@ void smbios_entry_add(QemuOpts *opts, Error **errp)
|
|||||||
save_opt(&type4.serial, opts, "serial");
|
save_opt(&type4.serial, opts, "serial");
|
||||||
save_opt(&type4.asset, opts, "asset");
|
save_opt(&type4.asset, opts, "asset");
|
||||||
save_opt(&type4.part, opts, "part");
|
save_opt(&type4.part, opts, "part");
|
||||||
|
/* If the value is 0, it will take the value from the CPU model. */
|
||||||
|
type4.processor_id = qemu_opt_get_number(opts, "processor-id", 0);
|
||||||
type4.max_speed = qemu_opt_get_number(opts, "max-speed",
|
type4.max_speed = qemu_opt_get_number(opts, "max-speed",
|
||||||
DEFAULT_CPU_SPEED);
|
DEFAULT_CPU_SPEED);
|
||||||
type4.current_speed = qemu_opt_get_number(opts, "current-speed",
|
type4.current_speed = qemu_opt_get_number(opts, "current-speed",
|
||||||
|
@ -2537,6 +2537,7 @@ DEF("smbios", HAS_ARG, QEMU_OPTION_smbios,
|
|||||||
" specify SMBIOS type 3 fields\n"
|
" specify SMBIOS type 3 fields\n"
|
||||||
"-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n"
|
"-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str]\n"
|
||||||
" [,asset=str][,part=str][,max-speed=%d][,current-speed=%d]\n"
|
" [,asset=str][,part=str][,max-speed=%d][,current-speed=%d]\n"
|
||||||
|
" [,processor-id=%d]\n"
|
||||||
" specify SMBIOS type 4 fields\n"
|
" specify SMBIOS type 4 fields\n"
|
||||||
"-smbios type=11[,value=str][,path=filename]\n"
|
"-smbios type=11[,value=str][,path=filename]\n"
|
||||||
" specify SMBIOS type 11 fields\n"
|
" specify SMBIOS type 11 fields\n"
|
||||||
@ -2562,7 +2563,7 @@ SRST
|
|||||||
``-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str][,sku=str]``
|
``-smbios type=3[,manufacturer=str][,version=str][,serial=str][,asset=str][,sku=str]``
|
||||||
Specify SMBIOS type 3 fields
|
Specify SMBIOS type 3 fields
|
||||||
|
|
||||||
``-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str]``
|
``-smbios type=4[,sock_pfx=str][,manufacturer=str][,version=str][,serial=str][,asset=str][,part=str][,processor-id=%d]``
|
||||||
Specify SMBIOS type 4 fields
|
Specify SMBIOS type 4 fields
|
||||||
|
|
||||||
``-smbios type=11[,value=str][,path=filename]``
|
``-smbios type=11[,value=str][,path=filename]``
|
||||||
|
Loading…
Reference in New Issue
Block a user