summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Johnston <rob.johnston@joyent.com>2020-04-10 19:19:09 +0000
committerRob Johnston <rob.johnston@joyent.com>2020-04-10 19:19:09 +0000
commit343dcd4adb826931c3ab826439315f837bda9ad0 (patch)
treefb63bf6c54be206ff3d53cf9766bfe851bb89d4a
parentbddd9bf04a29664ca9425e80b9404c61bbc4283e (diff)
downloadillumos-joyent-OS-7071.tar.gz
OS-7071 Add platform topo map for HGST Ultrastar Serv60+8OS-7071
-rw-r--r--manifest3
-rw-r--r--usr/src/lib/fm/topo/maps/Makefile3
-rw-r--r--usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-chassis-hc-topology.xml33
-rwxr-xr-xusr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-disk-hc-topology.xmlgenksh104
-rw-r--r--usr/src/lib/fm/topo/maps/WDC,H4060-S/H4060-S-hc-topology.xml215
-rw-r--r--usr/src/lib/fm/topo/maps/WDC,H4060-S/Makefile35
6 files changed, 392 insertions, 1 deletions
diff --git a/manifest b/manifest
index a764464427..77aa026ec0 100644
--- a/manifest
+++ b/manifest
@@ -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