git: 0c6282e842b3 - main - bhyve: add SMBIOS Baseboard Information

Chuck Tuffli chuck at FreeBSD.org
Mon Apr 12 15:12:47 UTC 2021


The branch main has been updated by chuck:

URL: https://cgit.FreeBSD.org/src/commit/?id=0c6282e842b33a1c86e01b27fc40af9c76fd404e

commit 0c6282e842b33a1c86e01b27fc40af9c76fd404e
Author:     Chuck Tuffli <chuck at FreeBSD.org>
AuthorDate: 2021-04-12 15:09:52 +0000
Commit:     Chuck Tuffli <chuck at FreeBSD.org>
CommitDate: 2021-04-12 15:09:52 +0000

    bhyve: add SMBIOS Baseboard Information
    
    Add the System Management BIOS Baseboard (or Module) Information
    a.k.a. Type 2 structure to the SMBIOS emulation.
    
    Reviewed by:    rgrimes, bcran, grehan
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D29657
---
 usr.sbin/bhyve/smbiostbl.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/usr.sbin/bhyve/smbiostbl.c b/usr.sbin/bhyve/smbiostbl.c
index 716fb48178c1..ca68f8d95363 100644
--- a/usr.sbin/bhyve/smbiostbl.c
+++ b/usr.sbin/bhyve/smbiostbl.c
@@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$");
 
 #define	SMBIOS_TYPE_BIOS	0
 #define	SMBIOS_TYPE_SYSTEM	1
+#define	SMBIOS_TYPE_BOARD	2
 #define	SMBIOS_TYPE_CHASSIS	3
 #define	SMBIOS_TYPE_PROCESSOR	4
 #define	SMBIOS_TYPE_MEMARRAY	16
@@ -157,10 +158,31 @@ struct smbios_table_type1 {
 	uint8_t			family;		/* family name string */
 } __packed;
 
+/*
+ * Baseboard (or Module) Information
+ */
+#define SMBIOS_BRF_HOSTING	0x1
+#define SMBIOS_BRT_MOTHERBOARD	0xa
+
+struct smbios_table_type2 {
+	struct smbios_structure	header;
+	uint8_t			manufacturer;	/* manufacturer string */
+	uint8_t			product;	/* product name string */
+	uint8_t			version;	/* version string */
+	uint8_t			serial;		/* serial number string */
+	uint8_t			asset;		/* asset tag string */
+	uint8_t			fflags;		/* feature flags */
+	uint8_t			location;	/* location in chassis */
+	uint16_t		chandle;	/* chassis handle */
+	uint8_t			type;		/* board type */
+	uint8_t			n_objs;		/* number of contained object handles */
+} __packed;
+
 /*
  * System Enclosure or Chassis
  */
 #define	SMBIOS_CHT_UNKNOWN	0x02	/* unknown */
+#define	SMBIOS_CHT_DESKTOP	0x03	/* desktop */
 
 #define	SMBIOS_CHST_SAFE	0x03	/* safe */
 
@@ -360,6 +382,30 @@ const char *smbios_type1_strings[] = {
 	NULL
 };
 
+struct smbios_table_type2 smbios_type2_template = {
+	{ SMBIOS_TYPE_BOARD, sizeof (struct smbios_table_type2), 0 },
+	1,			/* manufacturer string */
+	2,			/* product string */
+	3,			/* version string */
+	4,			/* serial number string */
+	5,			/* asset tag string */
+	SMBIOS_BRF_HOSTING,	/* feature flags */
+	6,			/* location string */
+	SMBIOS_CHT_DESKTOP,	/* chassis handle */
+	SMBIOS_BRT_MOTHERBOARD,	/* board type */
+	0
+};
+
+const char *smbios_type2_strings[] = {
+	"FreeBSD",		/* manufacturer string */
+	"BHYVE",		/* product name string */
+	"1.0",			/* version string */
+	"None",			/* serial number string */
+	"None",			/* asset tag string */
+	"None",			/* location string */
+	NULL
+};
+
 struct smbios_table_type3 smbios_type3_template = {
 	{ SMBIOS_TYPE_CHASSIS, sizeof (struct smbios_table_type3), 0 },
 	1,		/* manufacturer string */
@@ -518,6 +564,9 @@ static struct smbios_template_entry smbios_template[] = {
 	{ (struct smbios_structure *)&smbios_type1_template,
 	  smbios_type1_strings,
 	  smbios_type1_initializer },
+	{ (struct smbios_structure *)&smbios_type2_template,
+	  smbios_type2_strings,
+	  smbios_generic_initializer },
 	{ (struct smbios_structure *)&smbios_type3_template,
 	  smbios_type3_strings,
 	  smbios_generic_initializer },


More information about the dev-commits-src-all mailing list