Index: head/usr.sbin/bhyve/bhyverun.h =================================================================== --- head/usr.sbin/bhyve/bhyverun.h +++ head/usr.sbin/bhyve/bhyverun.h @@ -36,6 +36,7 @@ struct vmctx; extern int guest_ncpus; +extern uint16_t cores, sockets, threads; extern char *guest_uuid_str; extern char *vmname; Index: head/usr.sbin/bhyve/smbiostbl.c =================================================================== --- head/usr.sbin/bhyve/smbiostbl.c +++ head/usr.sbin/bhyve/smbiostbl.c @@ -636,7 +636,7 @@ { int i; - for (i = 0; i < guest_ncpus; i++) { + for (i = 0; i < sockets; i++) { struct smbios_table_type4 *type4; char *p; int nstrings, len; @@ -655,6 +655,16 @@ *(*endaddr) = '\0'; (*endaddr)++; type4->socket = nstrings + 1; + /* Revise cores and threads after update to smbios 3.0 */ + if (cores > 254) + type4->cores = 0; + else + type4->cores = cores; + /* This threads is total threads in a socket */ + if ((cores * threads) > 254) + type4->threads = 0; + else + type4->threads = (cores * threads); curaddr = *endaddr; }