OpenSolaris

  subsites:   Code Reviews   Gates   Issues   Defects   Polls   Test   PKG   Planet   Mail
You are not signed in. Sign in or register.

Heads up: x86 SMBIOS Support

Date: Sat, 27 Aug 2005 15:51:01 -0700 (PDT)
From: Michael Shapiro <mws at eng dot sun dot com>
To: on-all at sun dot com, onnv-gate at onnv dot eng dot sun dot com
Subject: Heads up: x86 SMBIOS Support


Gatelings,

My recent putback of:

PSARC 2005/483 SMBIOS Support for Solaris
6313638 SMBIOS Support for Solaris
6230033 prtdiag should be implemented for Solaris x86

introduces some new features for x86 systems that may be of interest to
you if you are doing h/w administration of Solaris x86 systems or development
of low-level x86 system software.  System Management BIOS (SMBIOS) is an
industry-standard mechanism for low-level system software to export hardware
configuration information to higher-level system management software.
Almost all modern x86 systems have a BIOS that supports the SMBIOS spec.
This wad adds the following new features to Solaris:

	- A common API for examining SMBIOS data, compiled both into the x86
	  kernel and into the new library libsmbios.so.1.

	- A driver /dev/smbios to export a snapshot of the SMBIOS data.

	- A utility /usr/sbin/smbios to examine and/or copy the SMBIOS data,
	  using /dev/smbios by default but can also use a file or /dev/xsvc.
	  If you've used Linux "dmidecode" before, this is the same idea,
	  but hopefully a more useful and friendly implementation.

	- An initial implementation of prtdiag(1M) for x86 systems that
	  uses libsmbios to obtain some basic h/w configuration information.

Remember to resolve BFU conflicts properly (name_to_major, minor_perm) to
facilitate the proper installation of the new facilities.  If nothing else,
you can use these capabilities to find out the true system name and BIOS
version of an x86 system that has an SMBIOS by doing this:

	$ prtdiag | head -2 
	System Configuration: Sun Microsystems   W1100z/2100z
	BIOS Configuration: Sun Microsystems R01-B2 S0 10/12/2004

If you want to inspect a system that is running an earlier Solaris release
that you can't BFU, you can also do this on an older Solaris system:

	# cp <path-to-latest-proto-area>/usr/lib/libsmbios.1 /usr/lib
	# cp <path-to-latest-proto-area>/usr/sbin/smbios /usr/sbin
	# smbios <options> /dev/xsvc

and the utility will grab the SMBIOS information using the physical
memory access device /dev/xsvc.  If you want even more details,
you can find a copy of the spec, draft man pages, and example output in:

	/shared/sac/PSARC/2005/483/commit.materials/

or simply e-mail me directly if you have more questions.  Any bugs and RFEs
go here (creation of library/libsmbios may take another day or so):

	smbios(1M), prtdiag(1M) - utility/kernel
	smbios(7D) - kernel/fm
	libsmbios - library/libsmbios

Finally, if for some reason you encounter an unforeseen bug in my code which
causes a machine to not boot, you can disable SMBIOS processing on boot by
doing the following:

	set ksmbios_flags = -1   <-- in /etc/system, OR
	ksmbios_flags/W -1       <-- after booting kmdb with the -kd flags

which will bypass the boot-time SMBIOS processing.  And then send me e-mail.

-Mike

-- 
Mike Shapiro, Solaris Kernel Development. blogs.sun.com/mws/