[openib-general] [PATCH 04/22] OF adapter probing

Heiko J Schick info at schihei.de
Sat Feb 18 23:46:10 EST 2006


Hello Roland,

sorry, this file is not used anymore. The functions

	int hipz_count_adapters(void);
	int hipz_probe_adapters(char **adapter_list);
	u64 hipz_get_adapter_handle(char *adapter);

nowadays handled by the IBMEBUS [1] bus device driver.

[1]: http://www.kernel.org/git/?p=linux/kernel/git/torvalds/ 
linux-2.6.git;a=commit;h=d7a301033f1990188f65abf4fe8e5b90ef0e3888

Regards,
	Heiko

On Feb 18, 2006, at 1:57 AM, Roland Dreier wrote:

> From: Roland Dreier <rolandd at cisco.com>
>
> hipz_probe_adapters() looks a little funny -- it seems to bail out
> of all the remaining adapters if one of them isn't quite right.
> ---
>
>  drivers/infiniband/hw/ehca/hcp_sense.c |  144 +++++++++++++++++++++ 
> +++++++++++
>  drivers/infiniband/hw/ehca/hcp_sense.h |  136 +++++++++++++++++++++ 
> +++++++++
>  2 files changed, 280 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/infiniband/hw/ehca/hcp_sense.c b/drivers/ 
> infiniband/hw/ehca/hcp_sense.c
> new file mode 100644
> index 0000000..83fa4a3
> --- /dev/null
> +++ b/drivers/infiniband/hw/ehca/hcp_sense.c
> @@ -0,0 +1,144 @@
> +/*
> + *  IBM eServer eHCA Infiniband device driver for Linux on POWER
> + *
> + *  ehca detection and query code for POWER
> + *
> + *  Authors: Heiko J Schick <schickhj at de.ibm.com>
> + *
> + *  Copyright (c) 2005 IBM Corporation
> + *
> + *  All rights reserved.
> + *
> + *  This source code is distributed under a dual license of GPL  
> v2.0 and OpenIB
> + *  BSD.
> + *
> + * OpenIB BSD License
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following  
> conditions are met:
> + *
> + * Redistributions of source code must retain the above copyright  
> notice, this
> + * list of conditions and the following disclaimer.
> + *
> + * Redistributions in binary form must reproduce the above  
> copyright notice,
> + * this list of conditions and the following disclaimer in the  
> documentation
> + * and/or other materials
> + * provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND  
> CONTRIBUTORS "AS IS"
> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT  
> LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A  
> PARTICULAR PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR  
> CONTRIBUTORS BE
> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  
> EXEMPLARY, OR
> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  
> PROCUREMENT OF
> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
> + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  
> LIABILITY, WHETHER
> + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR  
> OTHERWISE)
> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF  
> ADVISED OF THE
> + * POSSIBILITY OF SUCH DAMAGE.
> + *
> + *  $Id: hcp_sense.c,v 1.10 2006/02/06 10:17:34 schickhj Exp $
> + */
> +
> +#define DEB_PREFIX "snse"
> +
> +#include "ehca_kernel.h"
> +#include "ehca_tools.h"
> +
> +int hipz_count_adapters(void)
> +{
> +	int num = 0;
> +	struct device_node *dn = NULL;
> +
> +	EDEB_EN(7, "");
> +
> +	while ((dn = of_find_node_by_name(dn, "lhca"))) {
> +		num++;
> +	}
> +
> +	of_node_put(dn);
> +
> +	if (num == 0) {
> +		EDEB_ERR(4, "No lhca node name was found in the"
> +			 " Open Firmware device tree.");
> +		return -ENODEV;
> +	}
> +
> +	EDEB(6, " ... found %x adapter(s)", num);
> +
> +	EDEB_EX(7, "num=%x", num);
> +
> +	return num;
> +}
> +
> +int hipz_probe_adapters(char **adapter_list)
> +{
> +	int ret = 0;
> +	int num = 0;
> +	struct device_node *dn = NULL;
> +	char *loc;
> +
> +	EDEB_EN(7, "adapter_list=%p", adapter_list);
> +
> +	while ((dn = of_find_node_by_name(dn, "lhca"))) {
> +		loc = get_property(dn, "ibm,loc-code", NULL);
> +		if (loc == NULL) {
> +			EDEB_ERR(4, "No ibm,loc-code property for"
> +				 " lhca Open Firmware device tree node.");
> +			ret = -ENODEV;
> +			goto probe_adapters0;
> +		}
> +
> +		adapter_list[num] = loc;
> +		EDEB(6, " ... found adapter[%x] with loc-code: %s", num, loc);
> +		num++;
> +	}
> +
> +      probe_adapters0:
> +	of_node_put(dn);
> +
> +	EDEB_EX(7, "ret=%x", ret);
> +
> +	return ret;
> +}
> +
> +u64 hipz_get_adapter_handle(char *adapter)
> +{
> +	struct device_node *dn = NULL;
> +	char *loc;
> +	u64 *u64data = NULL;
> +	u64 ret = 0;
> +
> +	EDEB_EN(7, "adapter=%p", adapter);
> +
> +	while ((dn = of_find_node_by_name(dn, "lhca"))) {
> +		loc = get_property(dn, "ibm,loc-code", NULL);
> +		if (loc == NULL) {
> +			EDEB_ERR(4, "No ibm,loc-code property for"
> +				 " lhca Open Firmware device tree node.");
> +			goto get_adapter_handle0;
> +		}
> +
> +		if (strcmp(loc, adapter) == 0) {
> +			u64data =
> +			    (u64 *) get_property(dn, "ibm,hca-handle", NULL);
> +			break;
> +		}
> +	}
> +
> +	if (u64data == NULL) {
> +		EDEB_ERR(4, "No ibm,hca-handle property for"
> +			 " lhca Open Firmware device tree node with"
> +			 " ibm,loc-code: %s.", adapter);
> +		goto get_adapter_handle0;
> +	}
> +
> +	ret = *u64data;
> +
> +      get_adapter_handle0:
> +	of_node_put(dn);
> +
> +	EDEB_EX(7, "ret=%lx",ret);
> +
> +	return ret;
> +}
> diff --git a/drivers/infiniband/hw/ehca/hcp_sense.h b/drivers/ 
> infiniband/hw/ehca/hcp_sense.h
> new file mode 100644
> index 0000000..a49040b
> --- /dev/null
> +++ b/drivers/infiniband/hw/ehca/hcp_sense.h
> @@ -0,0 +1,136 @@
> +/*
> + *  IBM eServer eHCA Infiniband device driver for Linux on POWER
> + *
> + *  ehca detection and query code for POWER
> + *
> + *  Authors: Heiko J Schick <schickhj at de.ibm.com>
> + *
> + *  Copyright (c) 2005 IBM Corporation
> + *
> + *  All rights reserved.
> + *
> + *  This source code is distributed under a dual license of GPL  
> v2.0 and OpenIB
> + *  BSD.
> + *
> + * OpenIB BSD License
> + *
> + * Redistribution and use in source and binary forms, with or without
> + * modification, are permitted provided that the following  
> conditions are met:
> + *
> + * Redistributions of source code must retain the above copyright  
> notice, this
> + * list of conditions and the following disclaimer.
> + *
> + * Redistributions in binary form must reproduce the above  
> copyright notice,
> + * this list of conditions and the following disclaimer in the  
> documentation
> + * and/or other materials
> + * provided with the distribution.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND  
> CONTRIBUTORS "AS IS"
> + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT  
> LIMITED TO, THE
> + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A  
> PARTICULAR PURPOSE
> + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR  
> CONTRIBUTORS BE
> + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  
> EXEMPLARY, OR
> + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  
> PROCUREMENT OF
> + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
> + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF  
> LIABILITY, WHETHER
> + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR  
> OTHERWISE)
> + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF  
> ADVISED OF THE
> + * POSSIBILITY OF SUCH DAMAGE.
> + *
> + *  $Id: hcp_sense.h,v 1.11 2006/02/06 10:17:34 schickhj Exp $
> + */
> +
> +#ifndef HCP_SENSE_H
> +#define HCP_SENSE_H
> +
> +int hipz_count_adapters(void);
> +int hipz_probe_adapters(char **adapter_list);
> +u64 hipz_get_adapter_handle(char *adapter);
> +
> +/* query hca response block */
> +struct query_hca_rblock {
> +	u32 cur_reliable_dg;
> +	u32 cur_qp;
> +	u32 cur_cq;
> +	u32 cur_eq;
> +	u32 cur_mr;
> +	u32 cur_mw;
> +	u32 cur_ee_context;
> +	u32 cur_mcast_grp;
> +	u32 cur_qp_attached_mcast_grp;
> +	u32 reserved1;
> +	u32 cur_ipv6_qp;
> +	u32 cur_eth_qp;
> +	u32 cur_hp_mr;
> +	u32 reserved2[3];
> +	u32 max_rd_domain;
> +	u32 max_qp;
> +	u32 max_cq;
> +	u32 max_eq;
> +	u32 max_mr;
> +	u32 max_hp_mr;
> +	u32 max_mw;
> +	u32 max_mrwpte;
> +	u32 max_special_mrwpte;
> +	u32 max_rd_ee_context;
> +	u32 max_mcast_grp;
> +	u32 max_qps_attached_all_mcast_grp;
> +	u32 max_qps_attached_mcast_grp;
> +	u32 max_raw_ipv6_qp;
> +	u32 max_raw_ethy_qp;
> +	u32 internal_clock_frequency;
> +	u32 max_pd;
> +	u32 max_ah;
> +	u32 max_cqe;
> +	u32 max_wqes_wq;
> +	u32 max_partitions;
> +	u32 max_rr_ee_context;
> +	u32 max_rr_qp;
> +	u32 max_rr_hca;
> +	u32 max_act_wqs_ee_context;
> +	u32 max_act_wqs_qp;
> +	u32 max_sge;
> +	u32 max_sge_rd;
> +	u32 memory_page_size_supported;
> +	u64 max_mr_size;
> +	u32 local_ca_ack_delay;
> +	u32 num_ports;
> +	u32 vendor_id;
> +	u32 vendor_part_id;
> +	u32 hw_ver;
> +	u64 node_guid;
> +	u64 hca_cap_indicators;
> +	u32 data_counter_register_size;
> +	u32 max_shared_rq;
> +	u32 max_isns_eq;
> +	u32 max_neq;
> +} __attribute__ ((packed));
> +
> +/* query port response block */
> +struct query_port_rblock {
> +	u32 state;
> +	u32 bad_pkey_cntr;
> +	u32 lmc;
> +	u32 lid;
> +	u32 subnet_timeout;
> +	u32 qkey_viol_cntr;
> +	u32 sm_sl;
> +	u32 sm_lid;
> +	u32 capability_mask;
> +	u32 init_type_reply;
> +	u32 pkey_tbl_len;
> +	u32 gid_tbl_len;
> +	u64 gid_prefix;
> +	u32 port_nr;
> +	u16 pkey_entries[16];
> +	u8  reserved1[32];
> +	u32 trent_size;
> +	u32 trbuf_size;
> +	u64 max_msg_sz;
> +	u32 max_mtu;
> +	u32 vl_cap;
> +	u8  reserved2[1900];
> +	u64 guid_entries[255];
> +} __attribute__ ((packed));
> +
> +#endif
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
>
> To unsubscribe, please visit http://openib.org/mailman/listinfo/ 
> openib-general
>




More information about the Linuxppc64-dev mailing list