Subject: x86 Generic FMA Topology Enumerator [PSARC/2009/490 FastTrack timeout 09/22/2009] To: PSARC-ext@Sun.Com Cc: x86-pi@sun.com Bcc: one-pager-list@sac.sfbay one-pager-log@sac.sfbay sac-bar@sac.sfbay I am sponsoring this case on behalf of Tom Pothier. The case seeks micro/patch binding. Timeout is 09/22/2009. The case introduces a variety of interfaces to support a new generic x86 FMA topology enumerator. Template Version: @(#)sac_nextcase 1.68 02/23/09 SMI This information is Copyright 2009 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: x86 Generic FMA Topology Enumerator 1.2. Name of Document Author/Supplier: Author: Tom Pothier 1.3 Date of This Document: 15 September, 2009 4. Technical Description Summary of new interfaces for the x86 Generic FMA Topology Enumerator (x86gentopo) project. 1. Introduce four (4) OEM specific type SMBIOS structures. These are described in the X64 Platform Resource Management Specification (PRMS-1). The new structures are: - Processor Extended Information Structure - PCIEXRC Information Structure - Memory Array Extended Information Structure - Memory Device Extended Information Structure 2. Implement contained elements for SMBIOS Type-3 structures and contained handles for SMBIOS Type-2 structures. These will be used to enumerate forthcoming platforms which contain multiple chassis' and/or multiple base boards (motherboards). 3. Extend smbios(1M) and libsmbios.so to implement 1 and 2 above. 4. Rename the existing i86pc-hc-topology.xml XML map file to i86pc-legacy-hc-topology.xml. The current i86pc-hc-topology.xml file will be altered to call the x86pi.so enumerator. 5. Introduce a new kernel tunable variable "x86gentopo_legacy". When set to one (1) the platform will revert to legacy enumeration via the XML i86pc-legacy-hc-topology.xml map file. 6. Introduce a new /dev/fm ioctl: FM_IOC_GENTOPO_LEGACY. This ioctl will return the value of the kernel variable "x86gentopo_legacy" which determines when x86gentopo reverts to legacy enumeration. (All platform SMBIOS compliance checks for x86 generic topology enumeration are in the kernel.) 7. Introduce the fm API fm_fmri_hc_create() which can accept a variable list of nvpairs to create an hc-scheme fmri. This is required since forthcoming platforms may have multiple base boards that will be unknown until enumeration is complete. Interface Tables ------------------ These interfaces extend SMBIOS capability and are Consolidation Private. This is in line with the original SMBIOS interfaces in "PSARC/2005/483 SMBIOS Support for Solaris". Name Value Description -------------------------------------------------------------------------------- | SUN_OEM_EXT_PROCESSOR | 132 | SMBIOS OEM-Specific Type Processor | | | Extended Information Structure -------------------------------------------------------------------------------- | SUN_OEM_PCIEXRC | 138 | SMBIOS OEM-Specific Type PCIEXRC | | | Information Structure -------------------------------------------------------------------------------- | SUN_OEM_EXT_MEMARRAY | 144 | SMBIOS OEM-Specific Type Memory | | | Array Extended Information | | | Structure -------------------------------------------------------------------------------- | SUN_OEM_EXT_MEMDEVICE | 145 | SMBIOS OEM-Specific Type Memory | | | Device Extended Information | | | Structure -------------------------------------------------------------------------------- | smb_processor_ext_t | - | smbios_impl.h Type 132 structure -------------------------------------------------------------------------------- | smb_pciexrc_t | - | smbios_impl.h Type 138 structure -------------------------------------------------------------------------------- | smb_memarray_ext_t | - | smbios_impl.h Type 144 structure -------------------------------------------------------------------------------- | smb_memdevice_ext_t | - | smbios_impl.h Type 145 structure -------------------------------------------------------------------------------- | smbios_processor_ext_t | - | smbios.h Type 132 structure -------------------------------------------------------------------------------- | smbios_pciexrc_t | - | smbios.h Type 138 structure -------------------------------------------------------------------------------- | smbios_memarray_ext_t | - | smbios.h Type 144 structure -------------------------------------------------------------------------------- | smbios_memdevice_ext_t | - | smbios.h Type 145 structure -------------------------------------------------------------------------------- | smbios_info_contains() | - | libsmbios (and kernel) routine to | | | retrieve SMBIOS contained elements | | | and/or contained handles -------------------------------------------------------------------------------- | smbios_info_extmemarray() | - | libsmbios routine to return | | | extended memory array structure | | | information -------------------------------------------------------------------------------- | smbios_info_extmemdevice() | - | libsmbios routine to return | | | extended memory device structure | | | information -------------------------------------------------------------------------------- | smbios_info_extprocessor() | - | libsmbios routine to return | | | extended processor structure | | | information -------------------------------------------------------------------------------- | smbios_info_pciexrc() | - | libsmbios routine to return | | | PCI RootPort/RootComplex structure | | | information. -------------------------------------------------------------------------------- | smbios_lookup_type() | - | libsmbios routine to find an | | | smbios_structure_t associated with | | | an SMBIOS structure type -------------------------------------------------------------------------------- This interface is Committed. -------------------------------------------------------------------------------- | i86pc-legacy-hc-topology.xml | - | rename of the existing | | | i86pc-hc-topology.xml map file -------------------------------------------------------------------------------- This interface is Project Private. -------------------------------------------------------------------------------- | x86gentopo_legacy | 0 OR 1 | kernel tunable variable where '0' | | | indicates x86 generic FMA topology | | | enumeration; '1' indicates x86 | | | legacy FMA topology enumeration -------------------------------------------------------------------------------- These interfaces are Project Private. -------------------------------------------------------------------------------- | FM_IOC_GENTOPO_LEGACY | 0xFA0009 | /dev/fm ioctl which returns the | | | value of x86gentopo_legacy -------------------------------------------------------------------------------- | fm_fmri_hc_create() | - | fm API which accepts a variable | | | list of nvpairs -------------------------------------------------------------------------------- 6. Resources and Schedule 6.4. Steering Committee requested information 6.4.1. Consolidation C-team Name: ON 6.5. ARC review type: FastTrack 6.6. ARC Exposure: open