diff options
-rw-r--r-- | manifest | 3 | ||||
-rw-r--r-- | usr/src/lib/fm/topo/maps/Makefile | 3 | ||||
-rw-r--r-- | usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-chassis-hc-topology.xml | 33 | ||||
-rwxr-xr-x | usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-disk-hc-topology.xmlgenksh | 104 | ||||
-rw-r--r-- | usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-hc-topology.xml | 215 | ||||
-rw-r--r-- | usr/src/lib/fm/topo/maps/WDC,H4060-S/Makefile | 35 |
6 files changed, 392 insertions, 1 deletions
@@ -10603,6 +10603,9 @@ f usr/platform/i86pc/lib/fm/eft/gcpu_amd.eft 0444 root sys f usr/platform/i86pc/lib/fm/eft/intel.eft 0444 root sys d usr/platform/i86pc/lib/fm/topo 0755 root sys d usr/platform/i86pc/lib/fm/topo/maps 0755 root sys +f usr/platform/i86pc/lib/fm/topo/maps/H4060-S-hc-topology.xml 0444 root sys +f usr/platform/i86pc/lib/fm/topo/maps/H4060-S-chassis-hc-topology.xml 0444 root sys +f usr/platform/i86pc/lib/fm/topo/maps/H4060-S-disk-hc-topology.xml 0444 root sys f usr/platform/i86pc/lib/fm/topo/maps/Joyent-Compute-Platform-1101-disk-hc-topology.xml 0444 root sys s usr/platform/i86pc/lib/fm/topo/maps/Joyent-Compute-Platform-3101-hc-topology.xml=./SSG-2028R-ACR24L-hc-topology.xml s usr/platform/i86pc/lib/fm/topo/maps/Joyent-Compute-Platform-3101-usb.usbtopo=./SSG-2028R-ACR24L-usb.usbtopo diff --git a/usr/src/lib/fm/topo/maps/Makefile b/usr/src/lib/fm/topo/maps/Makefile index db3ec89603..5e26dfbf76 100644 --- a/usr/src/lib/fm/topo/maps/Makefile +++ b/usr/src/lib/fm/topo/maps/Makefile @@ -56,7 +56,8 @@ i386_SUBDIRS = i86pc \ SMCI,SSG-2028R-ACR24L \ SMCI,SYS-2028U-E1CNRT+ \ SMCI,SSG-6049P-E1CR36L \ - SMCI,SSG-2029P-ACR24L + SMCI,SSG-2029P-ACR24L \ + WDC,H4060-S SUBDIRS = $($(MACH)_SUBDIRS) diff --git a/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-chassis-hc-topology.xml b/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-chassis-hc-topology.xml new file mode 100644 index 0000000000..5bba0b3b90 --- /dev/null +++ b/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-chassis-hc-topology.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<!DOCTYPE topology SYSTEM "/usr/share/lib/xml/dtd/topology.dtd.1"> +<!-- + Copyright (c) 2018, Joyent, Inc. + + + This file and its contents are supplied under the terms of the + Common Development and Distribution License ("CDDL"), version 1.0. + You may only use this file in accordance with the terms of version + 1.0 of the CDDL. + + A full copy of the text of the CDDL should have accompanied this + source. A copy of the CDDL is also available via the Internet at + http://www.illumos.org/license/CDDL. + +--> + +<topology name='chassis' scheme='hc'> + <range name='chassis' min='0' max='0'> + <node instance='0'> + <fac-enum provider='fac_prov_ipmi' /> + <propgroup name='ipmi' version='1' + name-stability='Private' data-stability='Private' > + <propval name='entity-list' type='string_array' > + <propitem value='Physical Scrty' /> + <propitem value='FP NMI Diag Int' /> + <propitem value='Button' /> + <propitem value='Fan Redundancy' /> + </propval> + </propgroup> + </node> + </range> +</topology> diff --git a/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-disk-hc-topology.xmlgenksh b/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-disk-hc-topology.xmlgenksh new file mode 100755 index 0000000000..9feaacfbd6 --- /dev/null +++ b/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-disk-hc-topology.xmlgenksh @@ -0,0 +1,104 @@ +#!/bin/ksh -x +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright (c) 2019, Joyent, Inc. +# + +# +# The 60 LFF drive bays and their occupants will get enumerated by the ses +# module. However, the labels we get from SES have the drive serial number +# embedded in them - for example: "SLOT 00,8DGNA1EH". +# +# So we override the labels here. There are no physical labels on the LFF +# drive bays. And the service sticker label on the underside of the top +# chassis cover simply refers to the bays by number (starting from 0). As +# these bays are intended to be occupied by hard drives, we set the FRU labels +# "HDD 0" to "HDD 59". +# +function do_hdd_bay +{ + cat <<EOF + <node instance='${1}' static='true'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='${2}' /> + </propgroup> + </node> +EOF +} + +# +# Generate the topology map the 8 SFF SAS bays. LED managment for these +# bays is driven by the IOM and so empty bays will already have been enumerated +# by the ses module. We simply add the necessary binding properties to these +# bay nodes so that the disk module can enumerate any occupants. The SFF +# bays, which are intended to carry SSDs are physically labeled "SSD 60" to +# "SSD 67" +# +function do_ssd_bay +{ + cat <<EOF + <node instance='${1}' static='true'> + <propgroup name='protocol' version='1' name-stability='Private' + data-stability='Private'> + <propval name='label' type='string' value='${2}' /> + </propgroup> + <propgroup name='binding' version='1' name-stability='Private' + data-stability='Private'> + <propval name='driver' type='string' value='mpt_sas' /> + <propval name='devctl' type='string' + value='${3}' /> + <propval name='enclosure' type='uint32' value='${4}' /> + <propval name='slot' type='uint32' value='${5}' /> + </propgroup> + </node> +EOF +} + +cat <<EOF +<topology name='disk' scheme='hc'> + <range name='ses-enclosure' min='0' max='0'> + <node instance='0' static='true'> + <dependents grouping='children'> + <range name='bay' min='0' max='67'> +EOF + +bay=0 +while (( bay <= 59 )); do + do_hdd_bay $bay "HDD $bay" + (( bay = bay + 1 )) +done + +enclosure=1 +bay=60 +slot=0 +devctl='/devices/pci@7b,0/pci8086,2030@0/pci1000,30e0@0:devctl' +while (( slot <= 7 )); do + do_ssd_bay $bay "SSD $bay" "$devctl" $enclosure $slot + (( bay = bay + 1 )) + (( slot = slot + 1 )) +done + +cat <<EOF + <dependents grouping='children'> + <range name='disk' min='0' max='0'> + <enum-method name='disk' version='1' /> + </range> + </dependents> + </range> <!-- bay --> + </dependents> + </node> +</range> <!-- ses-enclosure --> + +</topology> +EOF diff --git a/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-hc-topology.xml b/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-hc-topology.xml new file mode 100644 index 0000000000..fb109baad7 --- /dev/null +++ b/usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-hc-topology.xml @@ -0,0 +1,215 @@ +<?xml version="1.0"?> +<!DOCTYPE topology SYSTEM "/usr/share/lib/xml/dtd/topology.dtd.1"> +<!-- + This file and its contents are supplied under the terms of the + Common Development and Distribution License ("CDDL"), version 1.0. + You may only use this file in accordance with the terms of version + 1.0 of the CDDL. + + A full copy of the text of the CDDL should have accompanied this + source. A copy of the CDDL is also available via the Internet at + http://www.illumos.org/license/CDDL. + + Copyright (c) 2018, Joyent, Inc. +--> +<topology name='i86pc' scheme='hc'> + + <range name='motherboard' min='0' max='0'> + <enum-method name='smbios' version='1' /> + <node instance='0' static='true'> + <fac-enum provider='fac_prov_ipmi' /> + <facility name='BMC Watchdog' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='269' /> + <propval name='sensor-class' type='string' value='discrete' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='BMC Watchdog' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + </propgroup> + </facility> + <facility name='CPU ERR2' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='269' /> + <propval name='sensor-class' type='string' value='discrete' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='CPU ERR2' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + </propgroup> + </facility> + <facility name='CPU Missing' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='269' /> + <propval name='sensor-class' type='string' value='discrete' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='CPU Missing' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + </propgroup> + </facility> + <facility name='SSB Therm Trip' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='269' /> + <propval name='sensor-class' type='string' value='discrete' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='SSB Therm Trip' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + </propgroup> + </facility> + <facility name='SMI Watchdog' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='269' /> + <propval name='sensor-class' type='string' value='discrete' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='SMI Watchdog' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + </propgroup> + </facility> + <facility name='Voltage Fault' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='269' /> + <propval name='sensor-class' type='string' value='discrete' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='Voltage Fault' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + </propgroup> + </facility> + <facility name='VR Watchdog' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='269' /> + <propval name='sensor-class' type='string' value='discrete' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='VR Watchdog' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + </propgroup> + </facility> + <facility name='VRD Hot' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='269' /> + <propval name='sensor-class' type='string' value='discrete' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='VRD Hot' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + </propgroup> + </facility> + <facility name='P1 Therm Ctrl %' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='257' /> + <propval name='units' type='uint32' value='200' /> + <propval name='sensor-class' type='string' value='threshold' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='P1 Therm Ctrl %' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + <propmethod name='ipmi_sensor_reading' version='0' + propname='reading' proptype='double' > + </propmethod> + </propgroup> + </facility> + <facility name='P2 Therm Ctrl %' type='sensor' provider='fac_prov_ipmi' > + <propgroup name='facility' version='1' name-stability='Private' + data-stability='Private' > + <propval name='type' type='uint32' value='257' /> + <propval name='units' type='uint32' value='200' /> + <propval name='sensor-class' type='string' value='threshold' /> + <propval name='entity_ref' type='string_array' value='discrete' > + <propitem value='P2 Therm Ctrl %' /> + </propval> + <propmethod name='ipmi_sensor_state' version='0' + propname='state' proptype='uint32' > + </propmethod> + <propmethod name='ipmi_sensor_reading' version='0' + propname='reading' proptype='double' > + </propmethod> + </propgroup> + </facility> + <propgroup name='protocol' version='1' + name-stability='Private' data-stability='Private' > + <propval name='label' type='string' value='MB' /> + </propgroup> + <propgroup name='ipmi' version='1' + name-stability='Private' data-stability='Private' > + <propval name='entity-list' type='string_array' > + <propitem value='BB Ambient Temp' /> + <propitem value='BB BMC Temp' /> + <propitem value='BB Mem VRM Temp' /> + <propitem value='BB Mem VR Temp' /> + <propitem value='BB M.2 Temp' /> + <propitem value='BB P2 VR Temp' /> + <propitem value='BB +12.0V' /> + <propitem value='BB +3.3V Vbat' /> + <propitem value='BMC FW Health' /> + <propitem value='DIMM Thrm Mrgn 1' /> + <propitem value='DIMM Thrm Mrgn 2' /> + <propitem value='DIMM Thrm Mrgn 3' /> + <propitem value='DIMM Thrm Mrgn 4' /> + <propitem value='FW Update Status ' /> + <propitem value='LAN NIC Temp' /> + <propitem value='IPMI Watchdog' /> + <propitem value='P1 DTS Therm Mgn' /> + <propitem value='P1 Status' /> + <propitem value='P2 DTS Therm Mgn' /> + <propitem value='P2 Status' /> + <propitem value='SSB Temp' /> + <propitem value='System Event Log' /> + <propitem value='System Event' /> + </propval> + </propgroup> + </node> + + <dependents grouping='children'> + <range name='chip' min='0' max='1'> + <enum-method name='chip' version='1' /> + </range> + <range name='hostbridge' min='0' max='254'> + <enum-method name='hostbridge' version='1' /> + </range> + <range name='sp' min='0' max='0'> + <enum-method name='ipmi' version='1' /> + </range> + </dependents> + + </range> + + <range name='chassis' min='0' max='0'> + <propmap name='H4060-S-chassis' /> + </range> + <range name='ses-enclosure' min='0' max='0'> + <enum-method name='ses' version='1' /> + <propmap name='H4060-S-disk' /> + </range> + +</topology> diff --git a/usr/src/lib/fm/topo/maps/WDC,H4060-S/Makefile b/usr/src/lib/fm/topo/maps/WDC,H4060-S/Makefile new file mode 100644 index 0000000000..1a5e9c97d4 --- /dev/null +++ b/usr/src/lib/fm/topo/maps/WDC,H4060-S/Makefile @@ -0,0 +1,35 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright (c) 2018, Joyent, Inc. +# + +# NOTE: The name of the xml file we are building is 'platform' +# specific, but its build is structured as 'arch' specific since +# 'uname -i' on all x86 platforms returns i86pc. + +ARCH = i86pc +CLASS = arch +DTDFILE = topology.dtd.1 + +TOPOFILE = \ + H4060-S-hc-topology.xml \ + H4060-S-chassis-hc-topology.xml \ + H4060-S-disk-hc-topology.xml \ + +SRCDIR = ../WDC,H4060-S + +PLATFORM = H4060-S + +CLOBBERFILES += H4060-S-disk-hc-topology.xml + +include ../Makefile.map |