# HG changeset patch # User Boris Chiu # Date 1399667056 25200 # Node ID dc9ed1510572c66bbcd47d8e2334f0d6a481e2c1 # Parent 09b39660eb0bb33b5bec292aad95b4b44d214042 18382333 libibverbs ibv_cmd_get_context() fails when mcxnex driver UAR space is exhausted 18422470 modify librdmacm on solaris to avoid opening device context per hca on startup 18720315 open-fabrics needs TPNOs in pkg manifest diff -r 09b39660eb0b -r dc9ed1510572 components/open-fabrics/libibverbs/solaris_compatibility.c --- a/components/open-fabrics/libibverbs/solaris_compatibility.c Fri May 09 07:58:08 2014 -0700 +++ b/components/open-fabrics/libibverbs/solaris_compatibility.c Fri May 09 13:24:16 2014 -0700 @@ -56,6 +56,8 @@ #include #include "../include/infiniband/arch.h" #include "../include/infiniband/verbs.h" +#include "../include/infiniband/kern-abi.h" +#include "../include/infiniband/driver.h" #include #include #include @@ -208,6 +210,12 @@ void __attribute__((constructor))solaris_init(void); void __attribute__((destructor))solaris_fini(void); +int sol_ibv_query_device(struct ibv_device *device, + struct ibv_device_attr *device_attr); + +int sol_ibv_query_port(struct ibv_context *, uint8_t, struct ibv_port_attr *); + + void solaris_init(void) { @@ -283,7 +291,6 @@ { ibdev_cache_info_t info; struct ibv_device **root_dev_list, **dev_list = NULL; - struct ibv_context *ctx = NULL; struct ibv_device_attr device_attr; int i, num_dev, dev_num, ret = 1; uint64_t guid; @@ -298,17 +305,12 @@ for (i = 0; i < num_dev; i++, dev_list++) { - if (!(ctx = ibv_open_device(*dev_list))) { - fprintf(stderr, "failed to open device %p\n", + if (sol_ibv_query_device(*dev_list, &device_attr)) { + fprintf(stderr, "failed to query device %p\n", *dev_list); goto error_exit2; } - if (ibv_query_device(ctx, &device_attr)) { - fprintf(stderr, "failed to query device %p\n", ctx); - goto error_exit3; - } - guid = ntohll(device_attr.node_guid); sprintf(info.ibd_node_guid_str, "%04x:%04x:%04x:%04x", (unsigned)(guid >> 48) & 0xffff, @@ -339,7 +341,7 @@ p = ibdev + (strlen("mlx4_")); } else { fprintf(stderr, "Invalid device %s\n", ibdev); - goto error_exit3; + goto error_exit2; } dev_num = atoi(p); (void) strcpy(info.ibd_name, ibdev); @@ -349,16 +351,13 @@ if (ibdev_cache_add(dev_num, &info)) { fprintf(stderr, "failed to add dev %d to ibdev cache\n", dev_num); - goto error_exit3; + goto error_exit2; } } ret = 0; /* clean up and Return */ -error_exit3: - if (ctx) - ibv_close_device(ctx); error_exit2: if (root_dev_list) ibv_free_device_list(root_dev_list); @@ -747,10 +746,11 @@ uint16_t **pkey_table) { struct ibv_device **root_dev_list, **dev_list = NULL; - struct ibv_context *ctx = NULL; + struct ibv_context ctx; union ibv_gid *gids = NULL; uint16_t *pkeys = NULL; int i, num_dev, rv, ret = 1; + char uverbs_devpath[MAXPATHLEN]; root_dev_list = dev_list = ibv_get_device_list(&num_dev); if (!dev_list) { @@ -769,14 +769,17 @@ goto error_exit2; } - if (!(ctx = ibv_open_device(*dev_list))) { - fprintf(stderr, "failed to open device %p\n", *dev_list); + snprintf(uverbs_devpath, MAXPATHLEN, "%s/%s", IB_OFS_DEVPATH_PREFIX, + (*dev_list)->dev_name); + + ctx.device = *dev_list; + + if ((ctx.cmd_fd = open(uverbs_devpath, O_RDWR)) < 0) goto error_exit2; - } - if (ibv_query_port(ctx, port_num, port_attr)) { + if (sol_ibv_query_port(&ctx, port_num, port_attr)) { fprintf(stderr, "failed to query dev %p, port %d\n", - ctx, port_num); + &ctx, port_num); goto error_exit3; } @@ -789,7 +792,7 @@ * set high bit of port_num to get all gids in one shot. */ port_num |= 0x80; - rv = sol_ibv_query_gid(ctx, port_num, port_attr->gid_tbl_len, + rv = sol_ibv_query_gid(&ctx, port_num, port_attr->gid_tbl_len, gids); if (rv != 0) goto error_exit4; @@ -808,7 +811,7 @@ * set high bit of port_num to get all pkeys in one shot. */ port_num |= 0x80; - rv = sol_ibv_query_pkey(ctx, port_num, port_attr->pkey_tbl_len, + rv = sol_ibv_query_pkey(&ctx, port_num, port_attr->pkey_tbl_len, pkeys); if (rv != 0) goto error_exit5; @@ -829,8 +832,8 @@ if (gids) free(gids); error_exit3: - if (ctx) - ibv_close_device(ctx); + if (ctx.cmd_fd > 0) + close(ctx.cmd_fd); error_exit2: if (root_dev_list) ibv_free_device_list(root_dev_list); @@ -1626,10 +1629,8 @@ sol_ibv_query_gid(struct ibv_context *context, uint8_t port_num, int index, union ibv_gid *gid) { - char uverbs_devpath[MAXPATHLEN]; - int uverbs_fd; - int count, start; - sol_uverbs_gid_t *uverbs_gidp; + int count, start; + sol_uverbs_gid_t *uverbs_gidp; /* * Not exported via sysfs, use ioctl. @@ -1638,12 +1639,6 @@ ((port_num & 0x80) && (index == 0))) return (-1); - snprintf(uverbs_devpath, MAXPATHLEN, "%s/%s", IB_OFS_DEVPATH_PREFIX, - context->device->dev_name); - - if ((uverbs_fd = open(uverbs_devpath, O_RDWR)) < 0) - return (-1); - if (port_num & 0x80) { start = 0; count = index; @@ -1655,7 +1650,6 @@ uverbs_gidp = (sol_uverbs_gid_t *)malloc(count * sizeof (union ibv_gid) + sizeof (sol_uverbs_gid_t)); if (uverbs_gidp == NULL) { - close(uverbs_fd); return (-1); } @@ -1663,7 +1657,7 @@ uverbs_gidp->uverbs_gid_cnt = count; uverbs_gidp->uverbs_gid_start_index = start; - if (ioctl(uverbs_fd, UVERBS_IOCTL_GET_GIDS, uverbs_gidp) != 0) { + if (ioctl(context->cmd_fd, UVERBS_IOCTL_GET_GIDS, uverbs_gidp) != 0) { #ifdef DEBUG fprintf(stderr, "UVERBS_IOCTL_GET_GIDS failed: %s\n", strerror(errno)); @@ -1682,12 +1676,10 @@ } memcpy(gid, uverbs_gidp->uverbs_gids, sizeof (union ibv_gid) * count); free(uverbs_gidp); - close(uverbs_fd); return (0); gid_error_exit: free(uverbs_gidp); - close(uverbs_fd); return (-1); } @@ -1695,10 +1687,8 @@ sol_ibv_query_pkey(struct ibv_context *context, uint8_t port_num, int index, uint16_t *pkey) { - char uverbs_devpath[MAXPATHLEN]; - int uverbs_fd; - int count, start; - sol_uverbs_pkey_t *uverbs_pkeyp; + int count, start; + sol_uverbs_pkey_t *uverbs_pkeyp; /* * Not exported via sysfs, use ioctl. @@ -1707,9 +1697,7 @@ ((port_num & 0x80) && (index == 0))) return (-1); - snprintf(uverbs_devpath, MAXPATHLEN, "%s/%s", IB_OFS_DEVPATH_PREFIX, - context->device->dev_name); - if ((uverbs_fd = open(uverbs_devpath, O_RDWR)) < 0) + if (context->cmd_fd < 0) return (-1); if (port_num & 0x80) { @@ -1723,7 +1711,6 @@ uverbs_pkeyp = (sol_uverbs_pkey_t *)malloc(count * sizeof (uint16_t) + sizeof (sol_uverbs_pkey_t)); if (uverbs_pkeyp == NULL) { - close(uverbs_fd); return (-1); } @@ -1731,7 +1718,7 @@ uverbs_pkeyp->uverbs_pkey_cnt = count; uverbs_pkeyp->uverbs_pkey_start_index = start; - if (ioctl(uverbs_fd, UVERBS_IOCTL_GET_PKEYS, uverbs_pkeyp) != 0) { + if (ioctl(context->cmd_fd, UVERBS_IOCTL_GET_PKEYS, uverbs_pkeyp) != 0) { #ifdef DEBUG fprintf(stderr, "UVERBS_IOCTL_GET_PKEYS failed: %s\n", strerror(errno)); @@ -1750,12 +1737,57 @@ } memcpy(pkey, uverbs_pkeyp->uverbs_pkey, sizeof (uint16_t) * count); free(uverbs_pkeyp); - close(uverbs_fd); return (0); pkey_error_exit: free(uverbs_pkeyp); - close(uverbs_fd); return (-1); } + +int +sol_ibv_query_device(struct ibv_device *device, struct ibv_device_attr *attr) +{ + struct ibv_query_device cmd; + struct ibv_context context; + char uverbs_devpath[MAXPATHLEN]; + int uverbs_fd, ret; + uint64_t raw_fw_ver; + unsigned major, minor, sub_minor; + + context.device = device; + + if (!device || !attr) + return (-1); + + snprintf(uverbs_devpath, MAXPATHLEN, "%s/%s", IB_OFS_DEVPATH_PREFIX, + device->dev_name); + + if ((context.cmd_fd = open(uverbs_devpath, O_RDWR)) < 0) + return (-1); + + ret = ibv_cmd_query_device(&context, attr, &raw_fw_ver, &cmd, + sizeof (cmd)); + + if (ret) + return (ret); + + major = (raw_fw_ver >> 32) & 0xffff; + minor = (raw_fw_ver >> 16) & 0xffff; + sub_minor = raw_fw_ver & 0xffff; + + snprintf(attr->fw_ver, sizeof (attr->fw_ver), + "%d.%d.%03d", major, minor, sub_minor); + + close(context.cmd_fd); + return (0); +} + +int +sol_ibv_query_port(struct ibv_context *context, uint8_t port, + struct ibv_port_attr *attr) +{ + struct ibv_query_port cmd; + + return (ibv_cmd_query_port(context, port, attr, &cmd, sizeof (cmd))); +} #endif diff -r 09b39660eb0b -r dc9ed1510572 components/open-fabrics/librdmacm/patches/base.patch --- a/components/open-fabrics/librdmacm/patches/base.patch Fri May 09 07:58:08 2014 -0700 +++ b/components/open-fabrics/librdmacm/patches/base.patch Fri May 09 13:24:16 2014 -0700 @@ -59,6 +59,15 @@ #define min(a, b) (a < b ? a : b) static inline int ERR(int err) +@@ -74,7 +68,7 @@ + return -1; + } + +-int ucma_init(); ++int ucma_init(void); + extern int af_ib_support; + + #define RAI_ROUTEONLY 0x01000000 diff -r -u /tmp/librdmacm-1.0.14.1/src/cma.c librdmacm-1.0.14.1/src/cma.c --- /tmp/librdmacm-1.0.14.1/src/cma.c Fri Dec 10 12:05:34 2010 +++ librdmacm-1.0.14.1/src/cma.c Mon Mar 28 16:44:55 2011 @@ -81,7 +90,217 @@ #include #include #include -@@ -354,9 +360,18 @@ +@@ -100,6 +106,8 @@ + struct ibv_pd *pd; + uint64_t guid; + int port_cnt; ++ int refcnt; ++ int max_qpsize; + uint8_t max_initiator_depth; + uint8_t max_responder_resources; + }; +@@ -143,6 +151,7 @@ + + static struct cma_device *cma_dev_array; + static int cma_dev_cnt; ++static int cma_init_cnt; + static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER; + static int abi_ver = RDMA_USER_CM_MAX_ABI_VERSION; + int af_ib_support; +@@ -156,12 +165,16 @@ + + if (cma_dev_cnt) { + while (cma_dev_cnt--) { +- ibv_dealloc_pd(cma_dev_array[cma_dev_cnt].pd); ++ if (!cma_dev_array[cma_dev_cnt].verbs) ++ continue; ++ ++ if (cma_dev_array[cma_dev_cnt].refcnt) ++ ibv_dealloc_pd(cma_dev_array[cma_dev_cnt].pd); + ibv_close_device(cma_dev_array[cma_dev_cnt].verbs); ++ cma_init_cnt--; + } + + free(cma_dev_array); +- cma_dev_cnt = 0; + } + } + +@@ -228,9 +241,7 @@ + int ucma_init(void) + { + struct ibv_device **dev_list = NULL; +- struct cma_device *cma_dev; +- struct ibv_device_attr attr; +- int i, ret, dev_cnt, ib; ++ int i, ret, dev_cnt; + + /* Quick check without lock to see if we're already initialized */ + if (cma_dev_cnt) +@@ -253,46 +264,20 @@ + goto err1; + } + +- cma_dev_array = malloc(sizeof *cma_dev * dev_cnt); ++ if (!dev_cnt) { ++ printf("CMA: no RDMA devices found\n"); ++ ret = ERR(ENODEV); ++ goto err2; ++ } ++ cma_dev_array = calloc(dev_cnt, sizeof *cma_dev_array); + if (!cma_dev_array) { + ret = ERR(ENOMEM); + goto err2; + } + +- for (i = 0, ib = 0; dev_list[i];) { +- cma_dev = &cma_dev_array[i]; ++ for (i = 0; dev_list[i]; i++) ++ cma_dev_array[i].guid = ibv_get_device_guid(dev_list[i]); + +- cma_dev->guid = ibv_get_device_guid(dev_list[i]); +- cma_dev->verbs = ibv_open_device(dev_list[i]); +- if (!cma_dev->verbs) { +- printf("CMA: unable to open RDMA device\n"); +- ret = ERR(ENODEV); +- goto err3; +- } +- +- cma_dev->pd = ibv_alloc_pd(cma_dev->verbs); +- if (!cma_dev->pd) { +- ibv_close_device(cma_dev->verbs); +- ret = ERR(ENOMEM); +- goto err3; +- } +- +- i++; +- ret = ibv_query_device(cma_dev->verbs, &attr); +- if (ret) { +- printf("CMA: unable to query RDMA device\n"); +- ret = ERR(ret); +- goto err3; +- } +- +- cma_dev->port_cnt = attr.phys_port_cnt; +- cma_dev->max_initiator_depth = (uint8_t) attr.max_qp_init_rd_atom; +- cma_dev->max_responder_resources = (uint8_t) attr.max_qp_rd_atom; +- ib += (cma_dev->verbs->device->transport_type == IBV_TRANSPORT_IB); +- } +- +- if (ib) +- ucma_ib_init(); + cma_dev_cnt = dev_cnt; + ucma_set_af_ib_support(); + pthread_mutex_unlock(&mut); +@@ -299,12 +284,6 @@ + ibv_free_device_list(dev_list); + return 0; + +-err3: +- while (i--) { +- ibv_dealloc_pd(cma_dev_array[i].pd); +- ibv_close_device(cma_dev_array[i].verbs); +- } +- free(cma_dev_array); + err2: + ibv_free_device_list(dev_list); + err1: +@@ -312,12 +291,93 @@ + return ret; + } + ++static struct ibv_context *ucma_open_device(uint64_t guid) ++{ ++ struct ibv_device **dev_list; ++ struct ibv_context *verbs = NULL; ++ int i; ++ ++ dev_list = ibv_get_device_list(NULL); ++ if (!dev_list) { ++ fprintf(stderr, PFX "Fatal: unable to get RDMA device list\n"); ++ return NULL; ++ } ++ ++ for (i = 0; dev_list[i]; i++) { ++ if (ibv_get_device_guid(dev_list[i]) == guid) { ++ verbs = ibv_open_device(dev_list[i]); ++ break; ++ } ++ } ++ ++ if (!verbs) ++ fprintf(stderr, PFX "Fatal: unable to open RDMA device\n"); ++ ++ ibv_free_device_list(dev_list); ++ return verbs; ++} ++ ++static int ucma_init_device(struct cma_device *cma_dev) ++{ ++ struct ibv_device_attr attr; ++ int ret; ++ ++ if (cma_dev->verbs) ++ return 0; ++ ++ cma_dev->verbs = ucma_open_device(cma_dev->guid); ++ if (!cma_dev->verbs) ++ return ERR(ENODEV); ++ ++ ret = ibv_query_device(cma_dev->verbs, &attr); ++ if (ret) { ++ fprintf(stderr, PFX "Fatal: unable to query RDMA device\n"); ++ ret = ERR(ret); ++ goto err; ++ } ++ ++ cma_dev->port_cnt = attr.phys_port_cnt; ++ cma_dev->max_qpsize = attr.max_qp_wr; ++ cma_dev->max_initiator_depth = (uint8_t) attr.max_qp_init_rd_atom; ++ cma_dev->max_responder_resources = (uint8_t) attr.max_qp_rd_atom; ++ cma_init_cnt++; ++ return 0; ++ ++err: ++ ibv_close_device(cma_dev->verbs); ++ cma_dev->verbs = NULL; ++ return ret; ++} ++ ++static int ucma_init_all(void) ++{ ++ int i, ret = 0; ++ ++ if (!cma_dev_cnt) { ++ ret = ucma_init(); ++ if (ret) ++ return ret; ++ } ++ ++ if (cma_init_cnt == cma_dev_cnt) ++ return 0; ++ ++ pthread_mutex_lock(&mut); ++ for (i = 0; i < cma_dev_cnt; i++) { ++ ret = ucma_init_device(&cma_dev_array[i]); ++ if (ret) ++ break; ++ } ++ pthread_mutex_unlock(&mut); ++ return ret; ++} ++ + struct ibv_context **rdma_get_devices(int *num_devices) + { + struct ibv_context **devs = NULL; + int i; + +- if (ucma_init()) ++ if (ucma_init_all()) + goto out; + + devs = malloc(sizeof *devs * (cma_dev_cnt + 1)); +@@ -354,9 +414,18 @@ if (!channel) return NULL; @@ -100,7 +319,48 @@ goto err; } return channel; -@@ -1186,6 +1201,10 @@ +@@ -374,18 +443,33 @@ + static int ucma_get_device(struct cma_id_private *id_priv, uint64_t guid) + { + struct cma_device *cma_dev; +- int i; ++ int i, ret; + + for (i = 0; i < cma_dev_cnt; i++) { + cma_dev = &cma_dev_array[i]; +- if (cma_dev->guid == guid) { +- id_priv->cma_dev = cma_dev; +- id_priv->id.verbs = cma_dev->verbs; +- return 0; +- } ++ if (cma_dev->guid == guid) ++ goto match; + } +- ++ + return ERR(ENODEV); ++match: ++ pthread_mutex_lock(&mut); ++ if ((ret = ucma_init_device(cma_dev))) ++ goto out; ++ ++ if (!cma_dev->refcnt++) { ++ cma_dev->pd = ibv_alloc_pd(cma_dev->verbs); ++ if (!cma_dev->pd) { ++ cma_dev->refcnt--; ++ ret = ERR(ENOMEM); ++ goto out; ++ } ++ } ++ id_priv->cma_dev = cma_dev; ++ id_priv->id.verbs = cma_dev->verbs; ++out: ++ pthread_mutex_unlock(&mut); ++ return ret; + } + + static void ucma_free_id(struct cma_id_private *id_priv) +@@ -1186,6 +1270,10 @@ if (ret) return ret; @@ -111,7 +371,7 @@ qp = ibv_create_qp(pd, qp_init_attr); if (!qp) { ret = ERR(ENOMEM); -@@ -1787,6 +1806,9 @@ +@@ -1787,6 +1875,9 @@ CMA_CREATE_MSG_CMD(msg, cmd, UCMA_CMD_ACCEPT, size); cmd->id = id_priv->handle; @@ -121,7 +381,7 @@ ret = write(id_priv->id.channel->fd, msg, size); if (ret != size) { -@@ -2051,8 +2073,20 @@ +@@ -2051,8 +2142,20 @@ CMA_CREATE_MSG_CMD_RESP(msg, cmd, resp, UCMA_CMD_MIGRATE_ID, size); cmd->id = id_priv->handle; @@ -361,7 +621,7 @@ #include diff -r -u /tmp/librdmacm-1.0.14.1/examples/rping.c librdmacm-1.0.14.1/examples/rping.c --- /tmp/librdmacm-1.0.14.1/examples/rping.c Tue Feb 15 17:10:48 2011 -+++ librdmacm-1.0.14.1/examples/rping.c Wed May 25 14:46:30 2011 ++++ librdmacm-1.0.14.1/examples/rping.c Wed Apr 23 10:37:57 2014 @@ -40,11 +40,17 @@ #include #include diff -r 09b39660eb0b -r dc9ed1510572 components/open-fabrics/open-fabrics.license --- a/components/open-fabrics/open-fabrics.license Fri May 09 07:58:08 2014 -0700 +++ b/components/open-fabrics/open-fabrics.license Fri May 09 13:24:16 2014 -0700 @@ -23,6 +23,7 @@ Copyright (c) 2009 HNR Consulting. All rights reserved. Copyright (c) 2005 Hewlett Packard, Inc (Grant Grundler). Copyright (c) 2006 Mellanox Technologies Ltd. All rights reserved +Copyright (c) 2009 Mellanox Technologies Ltd. All rights reserved This software is available to you under a choice of one of two @@ -65,7 +66,9 @@ Copyright (c) 2006 Oracle. All rights reserved. Copyright (C) 2008 Oracle. All rights reserved. Copyright (c) 2008 Chelsio, Inc. All rights reserved. - +Copyright (c) 1996 by Sun Microsystems, Inc. +Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. +Copyright (C) 1989-2003 Free Software Foundation, Inc. * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU @@ -509,6 +512,8 @@ Copyright (c) 2004 Intel Corporation. All rights reserved. Copyright (c) 2005, 2006, 2007 Cisco Systems, Inc. All rights reserved. Copyright (c) 2008 Lawrence Livermore National Laboratory +Copyright (C) 1989-2009 Free Software Foundation, Inc. +Copyright (C) 1994 X Consortium This software is available to you under a choice of one of two licenses. You may choose to be licensed under the terms of the the @@ -923,6 +928,8 @@ Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved Copyright (c) 2009 HNR Consulting. All rights reserved. Copyright (c) 2007 Xsigo Systems Inc. All rights reserved. +Copyright (C) 1989-2009 Free Software Foundation, Inc. +Copyright (C) 1994 X Consortium This software with the exception of OpenSM is available to you under a choice of one of two licenses. You may chose to be @@ -1341,6 +1348,8 @@ Copyright (c) 2004 Topspin Communications. All rights reserved. Copyright (c) 2005-2006 Mellanox Technologies Ltd. All rights reserved. +Copyright (C) 1999-2005 Free Software Foundation, Inc. +Copyright (C) 1994 X Consortium This software is available to you under a choice of one of two licenses. You may choose to be licensed under the terms of the GNU @@ -1433,6 +1442,8 @@ Copyright (c) 2009,2010 HNR Consulting. All rights reserved. Copyright (c) 2009 Simula Research Laboratory. All rights reserved. Copyright (c) 2009 HNR Consulting. All rights reserved +Copyright (C) 1994 X Consortium +Copyright (C) 1996-2009 Free Software Foundation, Inc. This software is available to you under a choice of one of two licenses. You may choose to be licensed under the terms of the GNU @@ -1496,6 +1507,9 @@ Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved. +Copyright (C) 1996-2009 Free Software Foundation, Inc. +Copyright (C) 1994 X Consortium +Copyright (c) 1996 by Sun Microsystems, Inc. Portions Copyright (c) 1995-1998 The University of Utah and The Regents of the University of California. @@ -1545,9 +1559,10 @@ The Software contains the following Copyrights, which are reproduced for this distribution as per OpenIB.org BSD license conditions: -Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (c) 2002-2009 Johann George. All rights reserved. Copyright (c) 2006-2009 QLogic Corporation. All rights reserved. +Copyright (C) 1989-2010 Free Software Foundation, Inc. +Copyright (C) 1994 X Consortium This software is available to you under a choice of one of two licenses. You may choose to be licensed under the terms of the GNU @@ -1612,10 +1627,11 @@ The Software contains the following Copyrights, which are reproduced for this distribution as per OpenIB.org BSD license conditions: -Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. +Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2010 Lawrence Livermore National Lab. All rights reserved. Copyright (c) 2009 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2009 HNR Consulting. All rights reserved. +Copyright (c) 2010 HNR Consulting. All rights reserved. Copyright (c) 2009 Lawrence Livermore National Security Copyright (c) 2004-2009 Voltaire Inc. All rights reserved. Copyright (c) 2008 Lawrence Livermore National Lab. All rights reserved. @@ -1626,6 +1642,9 @@ Copyright (c) 2002-2010 Mellanox Technologies LTD. All rights reserved. Copyright (C) 2001-2003 The Regents of the University of California. Copyright (c) 1996-2003 Intel Corporation. All rights reserved. +Copyright (C) 2006 The Regents of the University of California. +Copyright (C) 1996-2009 Free Software Foundation, Inc. +Copyright (C) 1994 X Consortium This software with the exception of OpenSM is available to you under a choice of one of two licenses. You may chose to be @@ -2047,6 +2066,8 @@ Copyright (c) 2005 Ammasso, Inc. All rights reserved. Copyright (c) 2006 Open Grid Computing, Inc. All rights reserved. Copyright (c) 2005 Voltaire Inc. All rights reserved. +Copyright (C) 1989-2005 Free Software Foundation, Inc. +Copyright (C) 1994 X Consortium This software is available to you under a choice of one of two licenses. You may choose to be licensed under the terms of the the @@ -2435,6 +2456,8 @@ this distribution as per OpenIB.org BSD license conditions: Copyright (c) 2004-2009 Voltaire Inc. All rights reserved. +Copyright (C) 1989-2008 Free Software Foundation, Inc. +Copyright (C) 1994 X Consortium This software with the exception of OpenSM is available to you under a choice of one of two licenses. You may chose to be @@ -2856,6 +2879,10 @@ Copyright (c) 2004, 2005 Topspin Communications. All rights reserved. Copyright (c) 2005, 2006, 2007 Cisco Systems. All rights reserved. Copyright (c) 2005 Mellanox Technologies Ltd. All rights reserved. +Copyright (c) 2009, Damien Lespiau +Copyright (C) 1994 X Consortium +Copyright (C) 1989-2009 Free Software Foundation, Inc. +Copyright (c) 2005, 2006, 2007 Cisco Systems. All rights reserved. This software is available to you under a choice of one of two licenses. You may choose to be licensed under the terms of the the diff -r 09b39660eb0b -r dc9ed1510572 components/open-fabrics/open-fabrics.p5m --- a/components/open-fabrics/open-fabrics.p5m Fri May 09 07:58:08 2014 -0700 +++ b/components/open-fabrics/open-fabrics.p5m Fri May 09 13:24:16 2014 -0700 @@ -18,7 +18,7 @@ # # CDDL HEADER END # -# Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. # default mangler.man.stability volatile> @@ -417,66 +417,79 @@ license open-fabrics.license license='open-fabrics' \ com.oracle.info.description="the OpenFabrics Enterprise Distribution" \ com.oracle.info.name=open-fabrics \ - com.oracle.info.version=1.5.3 + com.oracle.info.version=1.5.3 \ + com.oracle.info.tpno=3369 license open-fabrics.license license='open-fabrics (ibutils)' \ com.oracle.info.description="the OpenFabrics User Level InfiniBand Management Utilities" \ com.oracle.info.name=ibutils \ - com.oracle.info.version=1.5.7 + com.oracle.info.version=1.5.7 \ + com.oracle.info.tpno=5084 license open-fabrics.license license='open-fabrics (infiniband-diags)' \ com.oracle.info.description="the OpenFabrics Diagnostic Tools" \ com.oracle.info.name=infiniband-diags \ - com.oracle.info.version=1.5.8 + com.oracle.info.version=1.5.8 \ + com.oracle.info.tpno=5085 license open-fabrics.license license='open-fabrics (libibmad)' \ com.oracle.info.description="the OpenFabrics InfiniBand MAD library" \ com.oracle.info.name=libibmad \ - com.oracle.info.version=1.3.7 + com.oracle.info.version=1.3.7 \ + com.oracle.info.tpno=5086 license open-fabrics.license license='open-fabrics (libibumad)' \ com.oracle.info.description="the OpenFabrics user MAD interface library" \ com.oracle.info.name=libibumad \ - com.oracle.info.version=1.3.7 + com.oracle.info.version=1.3.7 \ + com.oracle.info.tpno=5087 license open-fabrics.license license='open-fabrics (libibverbs)' \ com.oracle.info.description="the OpenFabrics RDMA verbs library" \ com.oracle.info.name=libibverbs \ - com.oracle.info.version=1.1.4 + com.oracle.info.version=1.1.4 \ + com.oracle.info.tpno=5082 license open-fabrics.license license='open-fabrics (libmlx4)' \ com.oracle.info.description="the OpenFabrics Mellanox ConnectX driver" \ com.oracle.info.name=libmlx4 \ - com.oracle.info.version=1.0.1 + com.oracle.info.version=1.0.1 \ + com.oracle.info.tpno=5088 license open-fabrics.license license='open-fabrics (librdmacm)' \ com.oracle.info.description="the OpenFabrics RDMA cm library" \ com.oracle.info.name=librdmacm \ - com.oracle.info.version=1.0.14.1 + com.oracle.info.version=1.0.14.1 \ + com.oracle.info.tpno=5089 license open-fabrics.license license='open-fabrics (libsdp)' \ com.oracle.info.description="the OpenFabrics InfiniBand SDP library" \ com.oracle.info.name=libsdp \ - com.oracle.info.version=1.1.108 + com.oracle.info.version=1.1.108 \ + com.oracle.info.tpno=5080 license open-fabrics.license license='open-fabrics (opensm)' \ com.oracle.info.description="the OpenFabrics InfiniBand Subnet Manager and Administrator" \ com.oracle.info.name=opensm \ - com.oracle.info.version=3.3.9 + com.oracle.info.version=3.3.9 \ + com.oracle.info.tpno=5091 license open-fabrics.license license='open-fabrics (perftest)' \ com.oracle.info.description="the OpenFabrics performance tests" \ com.oracle.info.name=perftest \ - com.oracle.info.version=1.3.0 + com.oracle.info.version=1.3.0 \ + com.oracle.info.tpno=5081 license open-fabrics.license license='open-fabrics (qperf)' \ com.oracle.info.description="the OpenFabrics RDMA and IP performance tests" \ com.oracle.info.name=qperf \ - com.oracle.info.version=0.4.6 + com.oracle.info.version=0.4.6 \ + com.oracle.info.tpno=5083 license open-fabrics.license license='open-fabrics (rds-tools)' \ com.oracle.info.description="the OpenFabrics RDS support tools" \ com.oracle.info.name=rds-tools \ - com.oracle.info.version=2.0.4 + com.oracle.info.version=2.0.4 \ + com.oracle.info.tpno=5092 depend fmri=text/gawk type=require