Mercurial > illumos > illumos-gate
changeset 5046:66c87e13529d
6603899 Turgo platform support needs to lose its platform-specific prtdiag overlay
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deleted_files/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.c Thu Sep 13 22:03:23 2007 -0700 @@ -0,0 +1,511 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Sun4v Platform specific functions. + * + * called when : + * machine_type == turgo + * + */ + +#pragma ident "%Z%%M% %I% %E% SMI" + +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <kstat.h> +#include <fcntl.h> +#include <string.h> +#include <assert.h> +#include <libintl.h> +#include <note.h> +#include <sys/systeminfo.h> +#include <sys/openpromio.h> +#include <sys/sysmacros.h> +#include <picl.h> +#include "picldefs.h" +#include <pdevinfo.h> +#include <display.h> +#include <display_sun4v.h> +#include <libprtdiag.h> +#include "turgo.h" + +#if !defined(TEXT_DOMAIN) +#define TEXT_DOMAIN "SYS_TEST" +#endif + +/* local functions */ +static void turgo_get_bus_type(char *path, struct io_card *card); +static void turgo_get_slot_number(char *path, struct io_card *card); +static int turgo_get_network_instance(char *path); +static int turgo_get_first_compatible_value(picl_nodehdl_t nodeh, + char **outbuf); +static int64_t turgo_get_int_propval(picl_nodehdl_t modh, char *prop_name, + int *ret); + +static void +turgo_get_bus_type(char *path, struct io_card *card) +{ + if (strcmp(path, TURGO_NIU) == 0) { + (void) strcpy(card->bus_type, "NIU"); + } else if (strncmp(path, TURGO_PCIX_SLOT1, TURGO_PCIX_COMP) == 0) { + (void) strcpy(card->bus_type, "PCIX"); + } else if (strncmp(path, TURGO_PCIX_SLOT2, TURGO_PCIX_COMP) == 0) { + (void) strcpy(card->bus_type, "PCIX"); + } else { + (void) strcpy(card->bus_type, "PCIE"); + } +} + +static void +turgo_get_slot_number(char *path, struct io_card *card) +{ + if (strncmp(path, TURGO_N2_XAUI0, + strlen(TURGO_N2_XAUI0)) == 0) { + (void) strcpy(card->slot_str, "0"); + card->slot = 0; + } else if (strncmp(path, TURGO_N2_XAUI1, + strlen(TURGO_N2_XAUI1)) == 0) { + (void) strcpy(card->slot_str, "1"); + card->slot = 1; + } else if (strncmp(path, TURGO_PCIE_SLOT0, + strlen(TURGO_PCIE_SLOT0)) == 0) { + (void) strcpy(card->slot_str, "0"); + card->slot = 0; + } else if (strncmp(path, TURGO_PCIE_SLOT1, + strlen(TURGO_PCIE_SLOT1)) == 0) { + (void) strcpy(card->slot_str, "1"); + card->slot = 1; + } else if (strncmp(path, TURGO_PCIE_SLOT2, + strlen(TURGO_PCIE_SLOT2)) == 0) { + (void) strcpy(card->slot_str, "2"); + card->slot = 2; + } else if (strncmp(path, TURGO_PCIE_SLOT3, + strlen(TURGO_PCIE_SLOT3)) == 0) { + (void) strcpy(card->slot_str, "3"); + card->slot = 3; + } else if (strncmp(path, TURGO_PCIX_SLOT1, + strlen(TURGO_PCIX_SLOT1)) == 0) { + (void) strcpy(card->slot_str, "1"); + card->slot = 1; + } else if (strncmp(path, TURGO_PCIX_SLOT2, + strlen(TURGO_PCIX_SLOT2)) == 0) { + (void) strcpy(card->slot_str, "2"); + card->slot = 2; + } else { + (void) strcpy(card->slot_str, MOTHERBOARD); + card->slot = NO_SLOT; + } + +#ifdef DEBUG + printf("DEBUG: path = %s, slot = %d\n", path, card->slot); +#endif +} + +static int +turgo_get_network_instance(char *path) +{ + if (strcmp(path, TURGO_NETWORK_0) == 0) { + return (0); + } else if (strcmp(path, TURGO_NETWORK_1) == 0) { + return (1); + } else if (strcmp(path, TURGO_NETWORK_2) == 0) { + return (2); + } else if (strcmp(path, TURGO_NETWORK_3) == 0) { + return (3); + } else if (strcmp(path, TURGO_N2_XAUI0) == 0) { + return (0); + } else if (strcmp(path, TURGO_N2_XAUI1) == 0) { + return (1); + } else { + return (-1); + } +} +/* + * add all io devices under pci in io list + */ +/* ARGSUSED */ +int +turgo_pci_callback(picl_nodehdl_t pcih, void *args) +{ + int err = PICL_SUCCESS; + picl_nodehdl_t nodeh; + char path[MAXSTRLEN]; + char parent_path[MAXSTRLEN]; + char piclclass[PICL_CLASSNAMELEN_MAX]; + char name[MAXSTRLEN]; + char model[MAXSTRLEN]; + char *compatible; + char binding_name[MAXSTRLEN]; + struct io_card pci_card; + int32_t instance; + + err = picl_get_propval_by_name(pcih, PICL_PROP_DEVFS_PATH, parent_path, + sizeof (parent_path)); + if (err != PICL_SUCCESS) { + return (err); + } + + /* Walk through the children */ + err = picl_get_propval_by_name(pcih, PICL_PROP_CHILD, &nodeh, + sizeof (picl_nodehdl_t)); + + while (err == PICL_SUCCESS) { + err = picl_get_propval_by_name(nodeh, PICL_PROP_CLASSNAME, + piclclass, sizeof (piclclass)); + if (err != PICL_SUCCESS) + return (err); + + if (strcmp(piclclass, "pciex") == 0) { + err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER, + &nodeh, sizeof (picl_nodehdl_t)); + continue; + } else if (strcmp(piclclass, "sun4v") == 0) { + err = picl_get_propval_by_name(nodeh, PICL_PROP_CHILD, + &nodeh, sizeof (picl_nodehdl_t)); + continue; + } else if (strcmp(piclclass, "pci") == 0) { + err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER, + &nodeh, sizeof (picl_nodehdl_t)); + continue; + } + + err = picl_get_propval_by_name(nodeh, PICL_PROP_DEVFS_PATH, + path, sizeof (path)); + if (err != PICL_SUCCESS) { + return (err); + } + + (void) strlcpy(pci_card.notes, path, sizeof (pci_card.notes)); + + turgo_get_bus_type(parent_path, &pci_card); + + err = picl_get_propval_by_name(nodeh, PICL_PROP_NAME, &name, + sizeof (name)); + if (err == PICL_PROPNOTFOUND) + (void) strcpy(name, ""); + else if (err != PICL_SUCCESS) + return (err); + + if (strcmp(parent_path, TURGO_NIU) == 0) + turgo_get_slot_number(path, &pci_card); + else + turgo_get_slot_number(parent_path, &pci_card); + + /* Figure out NAC name */ + if ((strcmp(name, NETWORK) == 0) && + (strcmp(pci_card.slot_str, MOTHERBOARD) == 0)) { + instance = turgo_get_network_instance(path); + (void) snprintf(pci_card.status, + sizeof (pci_card.status), "%s/%s%d", MOTHERBOARD, + "NET", instance); + } else { + if (pci_card.slot != NO_SLOT) { + (void) snprintf(pci_card.status, + sizeof (pci_card.status), "%s/%s%d", + MOTHERBOARD, pci_card.bus_type, + pci_card.slot); + } else { + (void) snprintf(pci_card.status, + sizeof (pci_card.status), "%s/%s", + MOTHERBOARD, pci_card.bus_type); + } + } + + /* + * Get the name of this card. If binding_name is found, + * name will be <nodename>-<binding_name> + */ + + err = picl_get_propval_by_name(nodeh, PICL_PROP_BINDING_NAME, + &binding_name, sizeof (binding_name)); + if (err == PICL_PROPNOTFOUND) { + /* + * if compatible prop is found, name will be + * <nodename>-<compatible> + */ + err = turgo_get_first_compatible_value(nodeh, + &compatible); + if (err == PICL_SUCCESS) { + (void) strlcat(name, "-", MAXSTRLEN); + (void) strlcat(name, compatible, MAXSTRLEN); + free(compatible); + } else if (err != PICL_PROPNOTFOUND) { + return (err); + } + } else if (err != PICL_SUCCESS) { + return (err); + } else if (strcmp(name, binding_name) != 0) { + (void) strlcat(name, "-", MAXSTRLEN); + (void) strlcat(name, binding_name, MAXSTRLEN); + } + + (void) strlcpy(pci_card.name, name, sizeof (pci_card.name)); + + /* Get the model of this card */ + + err = picl_get_propval_by_name(nodeh, OBP_PROP_MODEL, + &model, sizeof (model)); + if (err == PICL_PROPNOTFOUND) + (void) strcpy(model, ""); + else if (err != PICL_SUCCESS) + return (err); + (void) strlcpy(pci_card.model, model, sizeof (pci_card.model)); + + /* Print NAC name */ + log_printf("%-11s", pci_card.status); + /* Print IO Type */ + log_printf("%6s", pci_card.bus_type); + /* Print Slot # */ + log_printf("%5s", pci_card.slot_str); + /* Print Parent Path */ + if (strlen(pci_card.notes) > 45) + log_printf("%45.44s+", pci_card.notes); + else + log_printf("%46.45s", pci_card.notes); + /* Printf Card Name */ + if (strlen(pci_card.name) > 24) + log_printf("%25.24s+", pci_card.name); + else + log_printf("%26s", pci_card.name); + /* Print Card Model */ + if (strlen(pci_card.model) > 10) + log_printf("%10.9s+", pci_card.model); + else + log_printf("%10s", pci_card.model); + log_printf("\n"); + + err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER, &nodeh, + sizeof (picl_nodehdl_t)); + + } + + return (PICL_WALK_CONTINUE); +} + +/* + * Add all IO ASIC revisions to list + */ +/* ARGSUSED */ +int +turgo_hw_rev_callback(picl_nodehdl_t pcih, void *args) +{ + int err = PICL_SUCCESS; + char path[MAXSTRLEN] = ""; + char device_path[MAXSTRLEN]; + char NAC[MAXSTRLEN]; + char *compatible; + int32_t revision; + int device_found = 0; + + err = picl_get_propval_by_name(pcih, PICL_PROP_DEVFS_PATH, path, + sizeof (path)); + if (err != PICL_SUCCESS) { + return (err); + } + + if ((strcmp(path, TURGO_NETWORK_0) == 0) || + (strcmp(path, TURGO_NETWORK_1) == 0)) { + device_found = 1; + (void) snprintf(NAC, sizeof (NAC), "%s/%s%d", + MOTHERBOARD, OPHIR, 0); + revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, + &err); + } else if ((strcmp(path, TURGO_NETWORK_2) == 0) || + (strcmp(path, TURGO_NETWORK_3) == 0)) { + device_found = 1; + (void) snprintf(NAC, sizeof (NAC), "%s/%s%d", MOTHERBOARD, + OPHIR, 1); + revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, + &err); + } else if (strcmp(path, TURGO_SWITCH_A_PATH) == 0) { + device_found = 1; + (void) snprintf(NAC, sizeof (NAC), "%s/%s", + MOTHERBOARD, TURGO_SWITCH_A); + revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, + &err); + } else if (strcmp(path, TURGO_SWITCH_B_PATH) == 0) { + device_found = 1; + (void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD, + TURGO_SWITCH_B); + revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, + &err); + } else if (strcmp(path, TURGO_SWITCH_C_PATH) == 0) { + device_found = 1; + (void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD, + TURGO_SWITCH_C); + revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, + &err); + } else if (strcmp(path, TURGO_LSI_PATH) == 0) { + device_found = 1; + (void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD, + SAS_SATA_HBA); + revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, + &err); + } else if (strcmp(path, TURGO_PCIE_PCIX) == 0) { + device_found = 1; + (void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD, + PCIE_PCIX_BRIDGE); + revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, + &err); + } + + if (device_found == 1) { + (void) strcpy(device_path, path); + err = turgo_get_first_compatible_value(pcih, &compatible); + if (err != PICL_SUCCESS) { + return (err); + } + + /* Print NAC name */ + log_printf("%-20s", NAC); + /* Print Device Path */ + if (strlen(device_path) > 45) + log_printf("%45.44s+", device_path); + else + log_printf("%46s", device_path); + /* Print Compatible # */ + log_printf("%31s", compatible); + free(compatible); + /* Print Revision */ + log_printf("%6d", revision); + log_printf("\n"); + } + + return (PICL_WALK_CONTINUE); +} + +/* + * return the first compatible value + */ +static int +turgo_get_first_compatible_value(picl_nodehdl_t nodeh, char **outbuf) +{ + int err; + picl_prophdl_t proph; + picl_propinfo_t pinfo; + picl_prophdl_t tblh; + picl_prophdl_t rowproph; + char *pval; + + err = picl_get_propinfo_by_name(nodeh, OBP_PROP_COMPATIBLE, + &pinfo, &proph); + if (err != PICL_SUCCESS) + return (err); + + if (pinfo.type == PICL_PTYPE_CHARSTRING) { + pval = malloc(pinfo.size); + if (pval == NULL) + return (PICL_FAILURE); + err = picl_get_propval(proph, pval, pinfo.size); + if (err != PICL_SUCCESS) { + free(pval); + return (err); + } + *outbuf = pval; + return (PICL_SUCCESS); + } else if (pinfo.type != PICL_PTYPE_TABLE) + return (PICL_FAILURE); + + /* get first string from table */ + err = picl_get_propval(proph, &tblh, pinfo.size); + if (err != PICL_SUCCESS) + return (err); + + err = picl_get_next_by_row(tblh, &rowproph); + if (err != PICL_SUCCESS) + return (err); + + err = picl_get_propinfo(rowproph, &pinfo); + if (err != PICL_SUCCESS) + return (err); + + pval = malloc(pinfo.size); + if (pval == NULL) + return (PICL_FAILURE); + + err = picl_get_propval(rowproph, pval, pinfo.size); + if (err != PICL_SUCCESS) { + free(pval); + return (err); + } + + *outbuf = pval; + return (PICL_SUCCESS); +} + +/* + * return the revision of a device. + */ +static int64_t +turgo_get_int_propval(picl_nodehdl_t modh, char *prop_name, int *ret) +{ + int err; + picl_prophdl_t proph; + picl_propinfo_t pinfo; + int8_t int8v; + int16_t int16v; + int32_t int32v; + int64_t int64v; + + err = picl_get_propinfo_by_name(modh, prop_name, &pinfo, &proph); + if (err != PICL_SUCCESS) { + *ret = err; + return (0); + } + + /* + * If it is not an int, uint or byte array prop, return failure + */ + if ((pinfo.type != PICL_PTYPE_INT) && + (pinfo.type != PICL_PTYPE_UNSIGNED_INT) && + (pinfo.type != PICL_PTYPE_BYTEARRAY)) { + *ret = PICL_FAILURE; + return (0); + } + + switch (pinfo.size) { + case sizeof (int8_t): + err = picl_get_propval(proph, &int8v, sizeof (int8v)); + *ret = err; + return (int8v); + case sizeof (int16_t): + err = picl_get_propval(proph, &int16v, sizeof (int16v)); + *ret = err; + return (int16v); + case sizeof (int32_t): + err = picl_get_propval(proph, &int32v, sizeof (int32v)); + *ret = err; + return (int32v); + case sizeof (int64_t): + err = picl_get_propval(proph, &int64v, sizeof (int64v)); + *ret = err; + return (int64v); + default: /* not supported size */ + *ret = PICL_FAILURE; + return (0); + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deleted_files/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.h Thu Sep 13 22:03:23 2007 -0700 @@ -0,0 +1,113 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +/* + * Sun4v Platform header file. + * + * called when : + * machine_type == turgo + * + */ + +#ifndef _TURGO_H +#define _TURGO_H + +#pragma ident "%Z%%M% %I% %E% SMI" + +#ifdef __cplusplus +extern "C" { +#endif + +#define TURGO_PLATFORM "SUNW,Netra-T5220" +#define TURGO_PCIE_COMP 30 +#define TURGO_XAUI_COMP 17 +#define TURGO_PCIX_COMP 30 +#define NO_SLOT -1 +#define MOTHERBOARD "MB" +#define TURGO_SWITCH_A "PCI-SWITCH0" +#define TURGO_SWITCH_B "PCI-SWITCH1" +#define TURGO_SWITCH_C "PCI-SWITCH2" +#define OPHIR "GBE" +#define NETWORK "network" +#define PCIE "/PCIE" +#define PCIX "/PCIX" +#define TURGO_NIU "/niu@80" +#define TURGO_SWITCH_A_PATH "/pci@0/pci@0" +#define TURGO_SWITCH_B_PATH "/pci@0/pci@0/pci@8/pci@0" +#define TURGO_SWITCH_C_PATH "/pci@0/pci@0/pci@1/pci@0" +#define TURGO_NETWORK_0 "/pci@0/pci@0/pci@1/pci@0/pci@2/network@0" +#define TURGO_NETWORK_1 "/pci@0/pci@0/pci@1/pci@0/pci@2/network@0,1" +#define TURGO_NETWORK_2 "/pci@0/pci@0/pci@1/pci@0/pci@3/network@0" +#define TURGO_NETWORK_3 "/pci@0/pci@0/pci@1/pci@0/pci@3/network@0,1" +#define TURGO_USB_0 "/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0" +#define TURGO_USB_1 "/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,1" +#define TURGO_USB_2 "/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,2" +#define TURGO_IDE "/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/ide@1f" +#define TURGO_PCIE_SLOT0 "/pci@0/pci@0/pci@8/pci@0/pci@9" +#define TURGO_PCIE_SLOT1 "/pci@0/pci@0/pci@8/pci@0/pci@1" +#define TURGO_PCIE_SLOT2 "/pci@0/pci@0/pci@9" +#define TURGO_PCIE_SLOT3 "/pci@0/pci@0/pci@8/pci@0/pci@8" +#define TURGO_PCIE_PCIX "/pci@0/pci@0/pci@8/pci@0/pci@2" +#define TURGO_PCIX_SLOT1 "/pci@0/pci@0/pci@8/pci@0/pci@2/pci@0,2/pci@1" +#define TURGO_PCIX_SLOT2 "/pci@0/pci@0/pci@8/pci@0/pci@2/pci@0" +#define TURGO_LSI_PATH "/pci@0/pci@0/pci@2/scsi@0" +#define TURGO_N2_XAUI0 "/niu@80/network@1" +#define TURGO_N2_XAUI1 "/niu@80/network@0" +#define SAS_SATA_HBA "SAS-SATA-HBA" +#define PCIE_PCIX_BRIDGE "PCIE-PCIX-BRIDGE" + + + +/* + * Property names + */ +#define OBP_PROP_REG "reg" +#define OBP_PROP_CLOCK_FREQ "clock-frequency" +#define OBP_PROP_BOARD_NUM "board#" +#define OBP_PROP_REVISION_ID "revision-id" +#define OBP_PROP_VERSION_NUM "version#" +#define OBP_PROP_BOARD_TYPE "board_type" +#define OBP_PROP_ECACHE_SIZE "ecache-size" +#define OBP_PROP_IMPLEMENTATION "implementation#" +#define OBP_PROP_MASK "mask#" +#define OBP_PROP_COMPATIBLE "compatible" +#define OBP_PROP_BANNER_NAME "banner-name" +#define OBP_PROP_MODEL "model" +#define OBP_PROP_66MHZ_CAPABLE "66mhz-capable" +#define OBP_PROP_FBC_REG_ID "fbc_reg_id" +#define OBP_PROP_VERSION "version" +#define OBP_PROP_INSTANCE "instance" + +/* + * Function Headers + */ +int turgo_pci_callback(picl_nodehdl_t pcih, void *args); +int turgo_hw_rev_callback(picl_nodehdl_t pcih, void *args); + +#ifdef __cplusplus +} +#endif + +#endif /* _TURGO_H */
--- a/usr/src/cmd/picl/plugins/sun4v/ontario/piclsbl/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/cmd/picl/plugins/sun4v/ontario/piclsbl/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -78,6 +78,7 @@ LINKED_PLATFORMS = SUNW,Sun-Blade-T6300 SUNW,T5140 LINKED_PLATFORMS += SUNW,Sun-Blade-T6320 LINKED_PLATFORMS += SUNW,SPARC-Enterprise-T5120 +LINKED_PLATFORMS += SUNW,Netra-T5220 LINKED_DIRS = $(LINKED_PLATFORMS:%=$(USR_PLAT_DIR)/%) LINKED_LIB_DIRS = $(LINKED_PLATFORMS:%=$(USR_PLAT_DIR)/%/lib)
--- a/usr/src/lib/fm/topo/maps/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/lib/fm/topo/maps/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -34,7 +34,8 @@ SUNW,Sun-Blade-T6320 \ SUNW,SPARC-Enterprise-T5120 \ SUNW,T5140 \ - SUNW,Netra-CP3260 + SUNW,Netra-CP3260 \ + SUNW,Netra-T5220 i386_SUBDIRS = i86pc \ SUNW,Sun-Fire-X4500
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/lib/fm/topo/maps/SUNW,Netra-T5220/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -0,0 +1,33 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# + +# Copyright 2007 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +#ident "%Z%%M% %I% %E% SMI" + +PLATFORMS = SUNW,Netra-T5220 +CLASS = platform +DTDFILE = +TOPOFILE = Netra-T5220-hc-topology.xml +SRCDIR = ../SUNW,Netra-T5220 + +include ../Makefile.map
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/lib/fm/topo/maps/SUNW,Netra-T5220/Netra-T5220-hc-topology.xml Thu Sep 13 22:03:23 2007 -0700 @@ -0,0 +1,52 @@ +<?xml version="1.0"?> +<!DOCTYPE topology SYSTEM "/usr/share/lib/xml/dtd/topology.dtd.1"> +<!-- + Copyright 2007 Sun Microsystems, Inc. All rights reserved. + Use is subject to license terms. + + CDDL HEADER START + + The contents of this file are subject to the terms of the + Common Development and Distribution License (the "License"). + You may not use this file except in compliance with the License. + + You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + or http://www.opensolaris.org/os/licensing. + See the License for the specific language governing permissions + and limitations under the License. + + When distributing Covered Code, include this CDDL HEADER in each + file and include the License file at usr/src/OPENSOLARIS.LICENSE. + If applicable, add the following below this CDDL HEADER, with the + fields enclosed by brackets "[]" replaced with your own identifying + information: Portions Copyright [yyyy] [name of copyright owner] + + CDDL HEADER END + + ident "%Z%%M% %I% %E% SMI" +--> + +<topology name='SUNW,Netra-T5220' scheme='hc'> + <range name='motherboard' min='0' max='0'> + <enum-method name='motherboard' version='1'/> + + <dependents grouping='children'> + <range name='chip' min='0' max='0'> + <enum-method name='chip' version='1'/> + + <dependents grouping='children'> + <range name='hostbridge' min='0' max='254'> + <enum-method name='hostbridge' version='1' /> + + <dependents grouping='children'> + <range name='niu' min='0' max='0'> + <enum-method name='niu' version='1'/> + </range> + </dependents> + </range> + </dependents> + </range> + </dependents> + + </range> +</topology>
--- a/usr/src/lib/fm/topo/maps/SUNW,Sun-Fire-T200/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/lib/fm/topo/maps/SUNW,Sun-Fire-T200/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -31,8 +31,7 @@ TOPOFILE = Sun-Fire-T200-hc-topology.xml \ Sun-Fire-T1000-hc-topology.xml \ SPARC-Enterprise-T1000-hc-topology.xml \ - Sun-Blade-T6300-hc-topology.xml \ - Netra-T5220-hc-topology.xml + Sun-Blade-T6300-hc-topology.xml SRCDIR = ../SUNW,Sun-Fire-T200
--- a/usr/src/lib/fm/topo/maps/SUNW,Sun-Fire-T200/Netra-T5220-hc-topology.xml Thu Sep 13 19:59:30 2007 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE topology SYSTEM "/usr/share/lib/xml/dtd/topology.dtd.1"> -<!-- - Copyright 2007 Sun Microsystems, Inc. All rights reserved. - Use is subject to license terms. - - CDDL HEADER START - - The contents of this file are subject to the terms of the - Common Development and Distribution License (the "License"). - You may not use this file except in compliance with the License. - - You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - or http://www.opensolaris.org/os/licensing. - See the License for the specific language governing permissions - and limitations under the License. - - When distributing Covered Code, include this CDDL HEADER in each - file and include the License file at usr/src/OPENSOLARIS.LICENSE. - If applicable, add the following below this CDDL HEADER, with the - fields enclosed by brackets "[]" replaced with your own identifying - information: Portions Copyright [yyyy] [name of copyright owner] - - CDDL HEADER END - - ident "%Z%%M% %I% %E% SMI" ---> - -<topology name='SUNW,Netra-T5220' scheme='hc'> - <range name='motherboard' min='0' max='0'> - <enum-method name='motherboard' version='1'/> - - <dependents grouping='children'> - <range name='chip' min='0' max='0'> - <enum-method name='chip' version='1'/> - - <dependents grouping='children'> - <range name='hostbridge' min='0' max='254'> - <enum-method name='hostbridge' version='1' /> - - <dependents grouping='children'> - <range name='niu' min='0' max='0'> - <enum-method name='niu' version='1'/> - </range> - </dependents> - </range> - </dependents> - </range> - </dependents> - - </range> -</topology>
--- a/usr/src/lib/libpcp/sparc/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/lib/libpcp/sparc/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -42,7 +42,8 @@ SUNW,Sun-Blade-T6320 \ SUNW,SPARC-Enterprise-T5120 \ SUNW,T5140 \ - SUNW,Netra-CP3260 + SUNW,Netra-CP3260 \ + SUNW,Netra-T5220 include ../Makefile.com
--- a/usr/src/lib/libprtdiag_psr/sparc/ontario/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/lib/libprtdiag_psr/sparc/ontario/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -28,7 +28,7 @@ UTSBASE = ../../../../uts -PLATFORM_OBJECTS= ontario.o erie.o pelton.o stpaul.o huron.o glendale.o turgo.o +PLATFORM_OBJECTS= ontario.o erie.o pelton.o stpaul.o huron.o glendale.o include ../Makefile.com
--- a/usr/src/lib/libprtdiag_psr/sparc/ontario/common/ontario.c Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/lib/libprtdiag_psr/sparc/ontario/common/ontario.c Thu Sep 13 22:03:23 2007 -0700 @@ -57,7 +57,6 @@ #include "stpaul.h" #include "huron.h" #include "glendale_common.h" -#include "turgo.h" #if !defined(TEXT_DOMAIN) #define TEXT_DOMAIN "SYS_TEST" @@ -367,14 +366,6 @@ "niu", glendale_pci_callback); (void) picl_walk_tree_by_class(plafh, "pciex", "pciex", glendale_pci_callback); - } else if (strncmp(platbuf, TURGO_PLATFORM, - strlen(TURGO_PLATFORM)) == 0) { - (void) picl_walk_tree_by_class(plafh, "sun4v", - "niu", turgo_pci_callback); - (void) picl_walk_tree_by_class(plafh, "pciex", - "pciex", turgo_pci_callback); - (void) picl_walk_tree_by_class(plafh, "pci", - "pci", turgo_pci_callback); } else { (void) picl_walk_tree_by_class(plafh, "pciex", "pciex", erie_pci_callback); @@ -611,16 +602,6 @@ "network", glendale_hw_rev_callback); (void) picl_walk_tree_by_class(plafh, "scsi-2", "scsi-2", glendale_hw_rev_callback); - } else if (strncmp(platbuf, TURGO_PLATFORM, - strlen(TURGO_PLATFORM)) == 0) { - (void) picl_walk_tree_by_class(plafh, "pciex", - "pciex", turgo_hw_rev_callback); - (void) picl_walk_tree_by_class(plafh, "sun4v", - "niu", turgo_hw_rev_callback); - (void) picl_walk_tree_by_class(plafh, "network", - "network", turgo_hw_rev_callback); - (void) picl_walk_tree_by_class(plafh, "scsi-2", "scsi-2", - turgo_hw_rev_callback); } else { (void) picl_walk_tree_by_class(plafh, "pciex", "pciex", erie_hw_rev_callback);
--- a/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.c Thu Sep 13 19:59:30 2007 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,511 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -/* - * Sun4v Platform specific functions. - * - * called when : - * machine_type == turgo - * - */ - -#pragma ident "%Z%%M% %I% %E% SMI" - -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <kstat.h> -#include <fcntl.h> -#include <string.h> -#include <assert.h> -#include <libintl.h> -#include <note.h> -#include <sys/systeminfo.h> -#include <sys/openpromio.h> -#include <sys/sysmacros.h> -#include <picl.h> -#include "picldefs.h" -#include <pdevinfo.h> -#include <display.h> -#include <display_sun4v.h> -#include <libprtdiag.h> -#include "turgo.h" - -#if !defined(TEXT_DOMAIN) -#define TEXT_DOMAIN "SYS_TEST" -#endif - -/* local functions */ -static void turgo_get_bus_type(char *path, struct io_card *card); -static void turgo_get_slot_number(char *path, struct io_card *card); -static int turgo_get_network_instance(char *path); -static int turgo_get_first_compatible_value(picl_nodehdl_t nodeh, - char **outbuf); -static int64_t turgo_get_int_propval(picl_nodehdl_t modh, char *prop_name, - int *ret); - -static void -turgo_get_bus_type(char *path, struct io_card *card) -{ - if (strcmp(path, TURGO_NIU) == 0) { - (void) strcpy(card->bus_type, "NIU"); - } else if (strncmp(path, TURGO_PCIX_SLOT1, TURGO_PCIX_COMP) == 0) { - (void) strcpy(card->bus_type, "PCIX"); - } else if (strncmp(path, TURGO_PCIX_SLOT2, TURGO_PCIX_COMP) == 0) { - (void) strcpy(card->bus_type, "PCIX"); - } else { - (void) strcpy(card->bus_type, "PCIE"); - } -} - -static void -turgo_get_slot_number(char *path, struct io_card *card) -{ - if (strncmp(path, TURGO_N2_XAUI0, - strlen(TURGO_N2_XAUI0)) == 0) { - (void) strcpy(card->slot_str, "0"); - card->slot = 0; - } else if (strncmp(path, TURGO_N2_XAUI1, - strlen(TURGO_N2_XAUI1)) == 0) { - (void) strcpy(card->slot_str, "1"); - card->slot = 1; - } else if (strncmp(path, TURGO_PCIE_SLOT0, - strlen(TURGO_PCIE_SLOT0)) == 0) { - (void) strcpy(card->slot_str, "0"); - card->slot = 0; - } else if (strncmp(path, TURGO_PCIE_SLOT1, - strlen(TURGO_PCIE_SLOT1)) == 0) { - (void) strcpy(card->slot_str, "1"); - card->slot = 1; - } else if (strncmp(path, TURGO_PCIE_SLOT2, - strlen(TURGO_PCIE_SLOT2)) == 0) { - (void) strcpy(card->slot_str, "2"); - card->slot = 2; - } else if (strncmp(path, TURGO_PCIE_SLOT3, - strlen(TURGO_PCIE_SLOT3)) == 0) { - (void) strcpy(card->slot_str, "3"); - card->slot = 3; - } else if (strncmp(path, TURGO_PCIX_SLOT1, - strlen(TURGO_PCIX_SLOT1)) == 0) { - (void) strcpy(card->slot_str, "1"); - card->slot = 1; - } else if (strncmp(path, TURGO_PCIX_SLOT2, - strlen(TURGO_PCIX_SLOT2)) == 0) { - (void) strcpy(card->slot_str, "2"); - card->slot = 2; - } else { - (void) strcpy(card->slot_str, MOTHERBOARD); - card->slot = NO_SLOT; - } - -#ifdef DEBUG - printf("DEBUG: path = %s, slot = %d\n", path, card->slot); -#endif -} - -static int -turgo_get_network_instance(char *path) -{ - if (strcmp(path, TURGO_NETWORK_0) == 0) { - return (0); - } else if (strcmp(path, TURGO_NETWORK_1) == 0) { - return (1); - } else if (strcmp(path, TURGO_NETWORK_2) == 0) { - return (2); - } else if (strcmp(path, TURGO_NETWORK_3) == 0) { - return (3); - } else if (strcmp(path, TURGO_N2_XAUI0) == 0) { - return (0); - } else if (strcmp(path, TURGO_N2_XAUI1) == 0) { - return (1); - } else { - return (-1); - } -} -/* - * add all io devices under pci in io list - */ -/* ARGSUSED */ -int -turgo_pci_callback(picl_nodehdl_t pcih, void *args) -{ - int err = PICL_SUCCESS; - picl_nodehdl_t nodeh; - char path[MAXSTRLEN]; - char parent_path[MAXSTRLEN]; - char piclclass[PICL_CLASSNAMELEN_MAX]; - char name[MAXSTRLEN]; - char model[MAXSTRLEN]; - char *compatible; - char binding_name[MAXSTRLEN]; - struct io_card pci_card; - int32_t instance; - - err = picl_get_propval_by_name(pcih, PICL_PROP_DEVFS_PATH, parent_path, - sizeof (parent_path)); - if (err != PICL_SUCCESS) { - return (err); - } - - /* Walk through the children */ - err = picl_get_propval_by_name(pcih, PICL_PROP_CHILD, &nodeh, - sizeof (picl_nodehdl_t)); - - while (err == PICL_SUCCESS) { - err = picl_get_propval_by_name(nodeh, PICL_PROP_CLASSNAME, - piclclass, sizeof (piclclass)); - if (err != PICL_SUCCESS) - return (err); - - if (strcmp(piclclass, "pciex") == 0) { - err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER, - &nodeh, sizeof (picl_nodehdl_t)); - continue; - } else if (strcmp(piclclass, "sun4v") == 0) { - err = picl_get_propval_by_name(nodeh, PICL_PROP_CHILD, - &nodeh, sizeof (picl_nodehdl_t)); - continue; - } else if (strcmp(piclclass, "pci") == 0) { - err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER, - &nodeh, sizeof (picl_nodehdl_t)); - continue; - } - - err = picl_get_propval_by_name(nodeh, PICL_PROP_DEVFS_PATH, - path, sizeof (path)); - if (err != PICL_SUCCESS) { - return (err); - } - - (void) strlcpy(pci_card.notes, path, sizeof (pci_card.notes)); - - turgo_get_bus_type(parent_path, &pci_card); - - err = picl_get_propval_by_name(nodeh, PICL_PROP_NAME, &name, - sizeof (name)); - if (err == PICL_PROPNOTFOUND) - (void) strcpy(name, ""); - else if (err != PICL_SUCCESS) - return (err); - - if (strcmp(parent_path, TURGO_NIU) == 0) - turgo_get_slot_number(path, &pci_card); - else - turgo_get_slot_number(parent_path, &pci_card); - - /* Figure out NAC name */ - if ((strcmp(name, NETWORK) == 0) && - (strcmp(pci_card.slot_str, MOTHERBOARD) == 0)) { - instance = turgo_get_network_instance(path); - (void) snprintf(pci_card.status, - sizeof (pci_card.status), "%s/%s%d", MOTHERBOARD, - "NET", instance); - } else { - if (pci_card.slot != NO_SLOT) { - (void) snprintf(pci_card.status, - sizeof (pci_card.status), "%s/%s%d", - MOTHERBOARD, pci_card.bus_type, - pci_card.slot); - } else { - (void) snprintf(pci_card.status, - sizeof (pci_card.status), "%s/%s", - MOTHERBOARD, pci_card.bus_type); - } - } - - /* - * Get the name of this card. If binding_name is found, - * name will be <nodename>-<binding_name> - */ - - err = picl_get_propval_by_name(nodeh, PICL_PROP_BINDING_NAME, - &binding_name, sizeof (binding_name)); - if (err == PICL_PROPNOTFOUND) { - /* - * if compatible prop is found, name will be - * <nodename>-<compatible> - */ - err = turgo_get_first_compatible_value(nodeh, - &compatible); - if (err == PICL_SUCCESS) { - (void) strlcat(name, "-", MAXSTRLEN); - (void) strlcat(name, compatible, MAXSTRLEN); - free(compatible); - } else if (err != PICL_PROPNOTFOUND) { - return (err); - } - } else if (err != PICL_SUCCESS) { - return (err); - } else if (strcmp(name, binding_name) != 0) { - (void) strlcat(name, "-", MAXSTRLEN); - (void) strlcat(name, binding_name, MAXSTRLEN); - } - - (void) strlcpy(pci_card.name, name, sizeof (pci_card.name)); - - /* Get the model of this card */ - - err = picl_get_propval_by_name(nodeh, OBP_PROP_MODEL, - &model, sizeof (model)); - if (err == PICL_PROPNOTFOUND) - (void) strcpy(model, ""); - else if (err != PICL_SUCCESS) - return (err); - (void) strlcpy(pci_card.model, model, sizeof (pci_card.model)); - - /* Print NAC name */ - log_printf("%-11s", pci_card.status); - /* Print IO Type */ - log_printf("%6s", pci_card.bus_type); - /* Print Slot # */ - log_printf("%5s", pci_card.slot_str); - /* Print Parent Path */ - if (strlen(pci_card.notes) > 45) - log_printf("%45.44s+", pci_card.notes); - else - log_printf("%46.45s", pci_card.notes); - /* Printf Card Name */ - if (strlen(pci_card.name) > 24) - log_printf("%25.24s+", pci_card.name); - else - log_printf("%26s", pci_card.name); - /* Print Card Model */ - if (strlen(pci_card.model) > 10) - log_printf("%10.9s+", pci_card.model); - else - log_printf("%10s", pci_card.model); - log_printf("\n"); - - err = picl_get_propval_by_name(nodeh, PICL_PROP_PEER, &nodeh, - sizeof (picl_nodehdl_t)); - - } - - return (PICL_WALK_CONTINUE); -} - -/* - * Add all IO ASIC revisions to list - */ -/* ARGSUSED */ -int -turgo_hw_rev_callback(picl_nodehdl_t pcih, void *args) -{ - int err = PICL_SUCCESS; - char path[MAXSTRLEN] = ""; - char device_path[MAXSTRLEN]; - char NAC[MAXSTRLEN]; - char *compatible; - int32_t revision; - int device_found = 0; - - err = picl_get_propval_by_name(pcih, PICL_PROP_DEVFS_PATH, path, - sizeof (path)); - if (err != PICL_SUCCESS) { - return (err); - } - - if ((strcmp(path, TURGO_NETWORK_0) == 0) || - (strcmp(path, TURGO_NETWORK_1) == 0)) { - device_found = 1; - (void) snprintf(NAC, sizeof (NAC), "%s/%s%d", - MOTHERBOARD, OPHIR, 0); - revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, - &err); - } else if ((strcmp(path, TURGO_NETWORK_2) == 0) || - (strcmp(path, TURGO_NETWORK_3) == 0)) { - device_found = 1; - (void) snprintf(NAC, sizeof (NAC), "%s/%s%d", MOTHERBOARD, - OPHIR, 1); - revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, - &err); - } else if (strcmp(path, TURGO_SWITCH_A_PATH) == 0) { - device_found = 1; - (void) snprintf(NAC, sizeof (NAC), "%s/%s", - MOTHERBOARD, TURGO_SWITCH_A); - revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, - &err); - } else if (strcmp(path, TURGO_SWITCH_B_PATH) == 0) { - device_found = 1; - (void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD, - TURGO_SWITCH_B); - revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, - &err); - } else if (strcmp(path, TURGO_SWITCH_C_PATH) == 0) { - device_found = 1; - (void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD, - TURGO_SWITCH_C); - revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, - &err); - } else if (strcmp(path, TURGO_LSI_PATH) == 0) { - device_found = 1; - (void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD, - SAS_SATA_HBA); - revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, - &err); - } else if (strcmp(path, TURGO_PCIE_PCIX) == 0) { - device_found = 1; - (void) snprintf(NAC, sizeof (NAC), "%s/%s", MOTHERBOARD, - PCIE_PCIX_BRIDGE); - revision = turgo_get_int_propval(pcih, OBP_PROP_REVISION_ID, - &err); - } - - if (device_found == 1) { - (void) strcpy(device_path, path); - err = turgo_get_first_compatible_value(pcih, &compatible); - if (err != PICL_SUCCESS) { - return (err); - } - - /* Print NAC name */ - log_printf("%-20s", NAC); - /* Print Device Path */ - if (strlen(device_path) > 45) - log_printf("%45.44s+", device_path); - else - log_printf("%46s", device_path); - /* Print Compatible # */ - log_printf("%31s", compatible); - free(compatible); - /* Print Revision */ - log_printf("%6d", revision); - log_printf("\n"); - } - - return (PICL_WALK_CONTINUE); -} - -/* - * return the first compatible value - */ -static int -turgo_get_first_compatible_value(picl_nodehdl_t nodeh, char **outbuf) -{ - int err; - picl_prophdl_t proph; - picl_propinfo_t pinfo; - picl_prophdl_t tblh; - picl_prophdl_t rowproph; - char *pval; - - err = picl_get_propinfo_by_name(nodeh, OBP_PROP_COMPATIBLE, - &pinfo, &proph); - if (err != PICL_SUCCESS) - return (err); - - if (pinfo.type == PICL_PTYPE_CHARSTRING) { - pval = malloc(pinfo.size); - if (pval == NULL) - return (PICL_FAILURE); - err = picl_get_propval(proph, pval, pinfo.size); - if (err != PICL_SUCCESS) { - free(pval); - return (err); - } - *outbuf = pval; - return (PICL_SUCCESS); - } else if (pinfo.type != PICL_PTYPE_TABLE) - return (PICL_FAILURE); - - /* get first string from table */ - err = picl_get_propval(proph, &tblh, pinfo.size); - if (err != PICL_SUCCESS) - return (err); - - err = picl_get_next_by_row(tblh, &rowproph); - if (err != PICL_SUCCESS) - return (err); - - err = picl_get_propinfo(rowproph, &pinfo); - if (err != PICL_SUCCESS) - return (err); - - pval = malloc(pinfo.size); - if (pval == NULL) - return (PICL_FAILURE); - - err = picl_get_propval(rowproph, pval, pinfo.size); - if (err != PICL_SUCCESS) { - free(pval); - return (err); - } - - *outbuf = pval; - return (PICL_SUCCESS); -} - -/* - * return the revision of a device. - */ -static int64_t -turgo_get_int_propval(picl_nodehdl_t modh, char *prop_name, int *ret) -{ - int err; - picl_prophdl_t proph; - picl_propinfo_t pinfo; - int8_t int8v; - int16_t int16v; - int32_t int32v; - int64_t int64v; - - err = picl_get_propinfo_by_name(modh, prop_name, &pinfo, &proph); - if (err != PICL_SUCCESS) { - *ret = err; - return (0); - } - - /* - * If it is not an int, uint or byte array prop, return failure - */ - if ((pinfo.type != PICL_PTYPE_INT) && - (pinfo.type != PICL_PTYPE_UNSIGNED_INT) && - (pinfo.type != PICL_PTYPE_BYTEARRAY)) { - *ret = PICL_FAILURE; - return (0); - } - - switch (pinfo.size) { - case sizeof (int8_t): - err = picl_get_propval(proph, &int8v, sizeof (int8v)); - *ret = err; - return (int8v); - case sizeof (int16_t): - err = picl_get_propval(proph, &int16v, sizeof (int16v)); - *ret = err; - return (int16v); - case sizeof (int32_t): - err = picl_get_propval(proph, &int32v, sizeof (int32v)); - *ret = err; - return (int32v); - case sizeof (int64_t): - err = picl_get_propval(proph, &int64v, sizeof (int64v)); - *ret = err; - return (int64v); - default: /* not supported size */ - *ret = PICL_FAILURE; - return (0); - } -}
--- a/usr/src/lib/libprtdiag_psr/sparc/ontario/common/turgo.h Thu Sep 13 19:59:30 2007 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ -/* - * Copyright 2007 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -/* - * Sun4v Platform header file. - * - * called when : - * machine_type == turgo - * - */ - -#ifndef _TURGO_H -#define _TURGO_H - -#pragma ident "%Z%%M% %I% %E% SMI" - -#ifdef __cplusplus -extern "C" { -#endif - -#define TURGO_PLATFORM "SUNW,Netra-T5220" -#define TURGO_PCIE_COMP 30 -#define TURGO_XAUI_COMP 17 -#define TURGO_PCIX_COMP 30 -#define NO_SLOT -1 -#define MOTHERBOARD "MB" -#define TURGO_SWITCH_A "PCI-SWITCH0" -#define TURGO_SWITCH_B "PCI-SWITCH1" -#define TURGO_SWITCH_C "PCI-SWITCH2" -#define OPHIR "GBE" -#define NETWORK "network" -#define PCIE "/PCIE" -#define PCIX "/PCIX" -#define TURGO_NIU "/niu@80" -#define TURGO_SWITCH_A_PATH "/pci@0/pci@0" -#define TURGO_SWITCH_B_PATH "/pci@0/pci@0/pci@8/pci@0" -#define TURGO_SWITCH_C_PATH "/pci@0/pci@0/pci@1/pci@0" -#define TURGO_NETWORK_0 "/pci@0/pci@0/pci@1/pci@0/pci@2/network@0" -#define TURGO_NETWORK_1 "/pci@0/pci@0/pci@1/pci@0/pci@2/network@0,1" -#define TURGO_NETWORK_2 "/pci@0/pci@0/pci@1/pci@0/pci@3/network@0" -#define TURGO_NETWORK_3 "/pci@0/pci@0/pci@1/pci@0/pci@3/network@0,1" -#define TURGO_USB_0 "/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0" -#define TURGO_USB_1 "/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,1" -#define TURGO_USB_2 "/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/usb@0,2" -#define TURGO_IDE "/pci@0/pci@0/pci@1/pci@0/pci@1/pci@0/ide@1f" -#define TURGO_PCIE_SLOT0 "/pci@0/pci@0/pci@8/pci@0/pci@9" -#define TURGO_PCIE_SLOT1 "/pci@0/pci@0/pci@8/pci@0/pci@1" -#define TURGO_PCIE_SLOT2 "/pci@0/pci@0/pci@9" -#define TURGO_PCIE_SLOT3 "/pci@0/pci@0/pci@8/pci@0/pci@8" -#define TURGO_PCIE_PCIX "/pci@0/pci@0/pci@8/pci@0/pci@2" -#define TURGO_PCIX_SLOT1 "/pci@0/pci@0/pci@8/pci@0/pci@2/pci@0,2/pci@1" -#define TURGO_PCIX_SLOT2 "/pci@0/pci@0/pci@8/pci@0/pci@2/pci@0" -#define TURGO_LSI_PATH "/pci@0/pci@0/pci@2/scsi@0" -#define TURGO_N2_XAUI0 "/niu@80/network@1" -#define TURGO_N2_XAUI1 "/niu@80/network@0" -#define SAS_SATA_HBA "SAS-SATA-HBA" -#define PCIE_PCIX_BRIDGE "PCIE-PCIX-BRIDGE" - - - -/* - * Property names - */ -#define OBP_PROP_REG "reg" -#define OBP_PROP_CLOCK_FREQ "clock-frequency" -#define OBP_PROP_BOARD_NUM "board#" -#define OBP_PROP_REVISION_ID "revision-id" -#define OBP_PROP_VERSION_NUM "version#" -#define OBP_PROP_BOARD_TYPE "board_type" -#define OBP_PROP_ECACHE_SIZE "ecache-size" -#define OBP_PROP_IMPLEMENTATION "implementation#" -#define OBP_PROP_MASK "mask#" -#define OBP_PROP_COMPATIBLE "compatible" -#define OBP_PROP_BANNER_NAME "banner-name" -#define OBP_PROP_MODEL "model" -#define OBP_PROP_66MHZ_CAPABLE "66mhz-capable" -#define OBP_PROP_FBC_REG_ID "fbc_reg_id" -#define OBP_PROP_VERSION "version" -#define OBP_PROP_INSTANCE "instance" - -/* - * Function Headers - */ -int turgo_pci_callback(picl_nodehdl_t pcih, void *args); -int turgo_hw_rev_callback(picl_nodehdl_t pcih, void *args); - -#ifdef __cplusplus -} -#endif - -#endif /* _TURGO_H */
--- a/usr/src/lib/libtsalarm/sparc/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/lib/libtsalarm/sparc/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -33,9 +33,9 @@ PLATFORM_OBJECTS= tsalarm.o # -# platform library directory (/usr/platform/SUNW,Sun-Fire-T200/lib) +# platform library directory (/usr/platform/SUNW,Netra-T5220/lib) # -PLATFORM=SUNW,Sun-Fire-T200 +PLATFORM=SUNW,Netra-T5220 include ../Makefile.com
--- a/usr/src/pkgdefs/SUNWfmd/prototype_sparc Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/pkgdefs/SUNWfmd/prototype_sparc Thu Sep 13 22:03:23 2007 -0700 @@ -206,4 +206,9 @@ d none usr/platform/SUNW,Netra-CP3260/lib/fm/topo 755 root bin d none usr/platform/SUNW,Netra-CP3260/lib/fm/topo/maps 755 root bin f none usr/platform/SUNW,Netra-CP3260/lib/fm/topo/maps/Netra-CP3260-hc-topology.xml 444 root bin -f none usr/platform/SUNW,Sun-Fire-T200/lib/fm/topo/maps/Netra-T5220-hc-topology.xml 444 root bin +d none usr/platform/SUNW,Netra-T5220 755 root sys +d none usr/platform/SUNW,Netra-T5220/lib 755 root bin +d none usr/platform/SUNW,Netra-T5220/lib/fm 755 root bin +d none usr/platform/SUNW,Netra-T5220/lib/fm/topo 755 root bin +d none usr/platform/SUNW,Netra-T5220/lib/fm/topo/maps 755 root bin +f none usr/platform/SUNW,Netra-T5220/lib/fm/topo/maps/Netra-T5220-hc-topology.xml 444 root bin
--- a/usr/src/pkgdefs/SUNWkvmt200.v/prototype_com Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/pkgdefs/SUNWkvmt200.v/prototype_com Thu Sep 13 22:03:23 2007 -0700 @@ -53,6 +53,7 @@ d none usr/platform/SUNW,Sun-Blade-T6320 755 root sys d none usr/platform/SUNW,SPARC-Enterprise-T5120 755 root sys d none usr/platform/SUNW,T5140 755 root sys +d none usr/platform/SUNW,Netra-T5220 755 root sys # # create links to sun4v platform # @@ -61,10 +62,11 @@ s none usr/platform/SUNW,Sun-Blade-T6320/sbin=../sun4v/sbin s none usr/platform/SUNW,SPARC-Enterprise-T5120/sbin=../sun4v/sbin s none usr/platform/SUNW,T5140/sbin=../sun4v/sbin +s none usr/platform/SUNW,Netra-T5220/sbin=../sun4v/sbin # # create include directory # -d none usr/platform/SUNW,Sun-Fire-T200/include 755 root bin +d none usr/platform/SUNW,Netra-T5220/include 755 root bin # # create lib directory # @@ -75,6 +77,7 @@ d none usr/platform/SUNW,Sun-Blade-T6320/lib 755 root bin d none usr/platform/SUNW,SPARC-Enterprise-T5120/lib 755 root bin d none usr/platform/SUNW,T5140/lib 755 root bin +d none usr/platform/SUNW,Netra-T5220/lib 755 root bin # # add binary and libraries for prtdiag # @@ -92,6 +95,7 @@ s none usr/platform/SUNW,Sun-Blade-T6320/lib/libpcp.so=../../sun4v/lib/libpcp.so s none usr/platform/SUNW,SPARC-Enterprise-T5120/lib/libpcp.so=../../sun4v/lib/libpcp.so s none usr/platform/SUNW,T5140/lib/libpcp.so=../../sun4v/lib/libpcp.so +s none usr/platform/SUNW,Netra-T5220/lib/libpcp.so=../../sun4v/lib/libpcp.so s none usr/platform/SUNW,Sun-Fire-T200/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1 s none usr/platform/SUNW,Netra-CP3060/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1 @@ -100,6 +104,7 @@ s none usr/platform/SUNW,Sun-Blade-T6320/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1 s none usr/platform/SUNW,SPARC-Enterprise-T5120/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1 s none usr/platform/SUNW,T5140/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1 +s none usr/platform/SUNW,Netra-T5220/lib/libpcp.so.1=../../sun4v/lib/libpcp.so.1 # # platform-dependent boot object @@ -111,6 +116,7 @@ s none usr/platform/SUNW,Sun-Blade-T6320/lib/fs=../../sun4v/lib/fs s none usr/platform/SUNW,SPARC-Enterprise-T5120/lib/fs=../../sun4v/lib/fs s none usr/platform/SUNW,T5140/lib/fs=../../sun4v/lib/fs +s none usr/platform/SUNW,Netra-T5220/lib/fs=../../sun4v/lib/fs # # add erie link # @@ -120,10 +126,6 @@ # s none usr/platform/SUNW,Netra-T2000=SUNW,Sun-Fire-T200 # -# add turgo link -# -s none usr/platform/SUNW,Netra-T5220=SUNW,Sun-Fire-T200 -# # add huron 2U link # s none usr/platform/SUNW,SPARC-Enterprise-T5220=SUNW,SPARC-Enterprise-T5120 @@ -156,6 +158,6 @@ # # add library for tsalarm # -f none usr/platform/SUNW,Sun-Fire-T200/lib/libtsalarm.so.1 644 root bin -s none usr/platform/SUNW,Sun-Fire-T200/lib/libtsalarm.so=./libtsalarm.so.1 -f none usr/platform/SUNW,Sun-Fire-T200/include/tsalarm.h 644 root bin +f none usr/platform/SUNW,Netra-T5220/lib/libtsalarm.so.1 644 root bin +s none usr/platform/SUNW,Netra-T5220/lib/libtsalarm.so=./libtsalarm.so.1 +f none usr/platform/SUNW,Netra-T5220/include/tsalarm.h 644 root bin
--- a/usr/src/pkgdefs/SUNWpiclu/prototype_sparc Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/pkgdefs/SUNWpiclu/prototype_sparc Thu Sep 13 22:03:23 2007 -0700 @@ -162,6 +162,12 @@ d none usr/platform/SUNW,T5140/lib/picl/plugins 755 root sys s none usr/platform/SUNW,T5140/lib/picl/plugins/libpiclsbl.so=../../../../SUNW,Sun-Fire-T200/lib/picl/plugins/libpiclsbl.so.1 s none usr/platform/SUNW,T5140/lib/picl/plugins/libpiclsbl.so.1=../../../../SUNW,Sun-Fire-T200/lib/picl/plugins/libpiclsbl.so.1 +d none usr/platform/SUNW,Netra-T5220 755 root sys +d none usr/platform/SUNW,Netra-T5220/lib 755 root bin +d none usr/platform/SUNW,Netra-T5220/lib/picl 755 root sys +d none usr/platform/SUNW,Netra-T5220/lib/picl/plugins 755 root sys +s none usr/platform/SUNW,Netra-T5220/lib/picl/plugins/libpiclsbl.so=../../../../SUNW,Sun-Fire-T200/lib/picl/plugins/libpiclsbl.so.1 +s none usr/platform/SUNW,Netra-T5220/lib/picl/plugins/libpiclsbl.so.1=../../../../SUNW,Sun-Fire-T200/lib/picl/plugins/libpiclsbl.so.1 d none usr/platform/SUNW,Sun-Fire-V240 755 root sys d none usr/platform/SUNW,Sun-Fire-V240/lib 755 root bin s none usr/platform/SUNW,Sun-Fire-V240/lib/libprtdiag_psr.so.1=../../SUNW,Sun-Blade-100/lib/libprtdiag_psr.so.1
--- a/usr/src/pkgdefs/etc/exception_list_sparc Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/pkgdefs/etc/exception_list_sparc Thu Sep 13 22:03:23 2007 -0700 @@ -825,6 +825,7 @@ usr/platform/SUNW,SPARC-Enterprise-T5120/lib/llib-lpcp.ln sparc usr/platform/sun4v/lib/llib-lpcp.ln sparc usr/platform/SUNW,Netra-CP3260/lib/llib-lpcp.ln sparc +usr/platform/SUNW,Netra-T5220/lib/llib-lpcp.ln sparc # # ZFS internal tools and lint libraries #
--- a/usr/src/psm/stand/boot/sparcv9/sun4v/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/psm/stand/boot/sparcv9/sun4v/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -38,6 +38,7 @@ PLATLINKS += SUNW,Sun-Blade-T6320 PLATLINKS += SUNW,SPARC-Enterprise-T5120 PLATLINKS += SUNW,T5140 +PLATLINKS += SUNW,Netra-T5220 LINKED_DIRS = $(PLATLINKS:%=$(USR_PLAT_DIR)/%) LINKED_LIB_DIRS = $(PLATLINKS:%=$(USR_PLAT_DIR)/%/lib)
--- a/usr/src/uts/sun4v/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/uts/sun4v/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -34,6 +34,7 @@ include Makefile.stpaul include Makefile.huron include Makefile.maramba +include Makefile.turgo USR_GLENDALE_DIR = $(USR_PLAT_DIR)/SUNW,Sun-Blade-T6320 USR_GLENDALE_SBIN_DIR = $(USR_GLENDALE_DIR)/sbin @@ -197,7 +198,9 @@ $(USR_HURON_DIR) \ $(USR_HURON_SBIN_DIR) $(USR_HURON_LIB_DIR) \ $(USR_MARAMBA_DIR) $(USR_MARAMBA_SBIN_DIR) \ - $(USR_MARAMBA_LIB_DIR) + $(USR_MARAMBA_LIB_DIR) \ + $(USR_TURGO_DIR) $(USR_TURGO_SBIN_DIR) \ + $(USR_TURGO_LIB_DIR) # @@ -249,6 +252,15 @@ $(USR_MARAMBA_LIB_DIR): $(USR_MARAMBA_DIR) -$(INS.dir.root.bin) +$(USR_TURGO_DIR): $(USR_SUN4V_PLAT_DIR) + -$(INS.dir.root.sys) + +$(USR_TURGO_SBIN_DIR): $(USR_TURGO_DIR) + $(INS.slink5) + +$(USR_TURGO_LIB_DIR): $(USR_TURGO_DIR) + -$(INS.dir.root.bin) + # # Full kernel lint target. #
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usr/src/uts/sun4v/Makefile.turgo Thu Sep 13 22:03:23 2007 -0700 @@ -0,0 +1,37 @@ +# +# CDDL HEADER START +# +# The contents of this file are subject to the terms of the +# Common Development and Distribution License (the "License"). +# You may not use this file except in compliance with the License. +# +# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE +# or http://www.opensolaris.org/os/licensing. +# See the License for the specific language governing permissions +# and limitations under the License. +# +# When distributing Covered Code, include this CDDL HEADER in each +# file and include the License file at usr/src/OPENSOLARIS.LICENSE. +# If applicable, add the following below this CDDL HEADER, with the +# fields enclosed by brackets "[]" replaced with your own identifying +# information: Portions Copyright [yyyy] [name of copyright owner] +# +# CDDL HEADER END +# +# +# +# Copyright 2007 Sun Microsystems, Inc. All rights reserved. +# Use is subject to license terms. +# +#ident "%Z%%M% %I% %E% SMI" +# +# Global definitions for sun4v turgo implementation specific modules. +# + +# +# Define directories. +# + +USR_TURGO_DIR = $(USR_PLAT_DIR)/SUNW,Netra-T5220 +USR_TURGO_SBIN_DIR = $(USR_TURGO_DIR)/sbin +USR_TURGO_LIB_DIR = $(USR_TURGO_DIR)/lib
--- a/usr/src/uts/sun4v/ontario/Makefile Thu Sep 13 19:59:30 2007 -0700 +++ b/usr/src/uts/sun4v/ontario/Makefile Thu Sep 13 22:03:23 2007 -0700 @@ -70,7 +70,6 @@ LINKED_PLATFORMS = SUNW,Sun-Fire-T1000 LINKED_PLATFORMS += SUNW,SPARC-Enterprise-T1000 LINKED_PLATFORMS += SUNW,Netra-T2000 -LINKED_PLATFORMS += SUNW,Netra-T5220 LINKED_PLATFORMS += SUNW,SPARC-Enterprise-T2000 PPLINKED_PLATFORMS = SUNW,Netra-T2000 PPLINKED_PLATFORMS += SUNW,SPARC-Enterprise-T2000