aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/qib/qib_verbs.c
diff options
context:
space:
mode:
authorMike Marciniszyn <mike.marciniszyn@intel.com>2012-07-16 13:11:06 -0400
committerRoland Dreier <roland@purestorage.com>2012-07-17 13:18:37 -0400
commit1fb9fed6d48960fec3ad8c97fed9aa16c9557091 (patch)
tree1ad8f9170aa4940aba1a3ba7d7d471a918a88420 /drivers/infiniband/hw/qib/qib_verbs.c
parent7e23017704172cb6508cb365eb2cae7335e5da71 (diff)
IB/qib: Fix QP RCU sparse warnings
Commit af061a644a0e ("IB/qib: Use RCU for qpn lookup") introduced sparse warnings. This patch corrects those issues. Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
Diffstat (limited to 'drivers/infiniband/hw/qib/qib_verbs.c')
-rw-r--r--drivers/infiniband/hw/qib/qib_verbs.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/drivers/infiniband/hw/qib/qib_verbs.c b/drivers/infiniband/hw/qib/qib_verbs.c
index 59cdea345a82..03ace0650a8f 100644
--- a/drivers/infiniband/hw/qib/qib_verbs.c
+++ b/drivers/infiniband/hw/qib/qib_verbs.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * Copyright (c) 2006, 2007, 2008, 2009, 2010 QLogic Corporation. 2 * Copyright (c) 2012 Intel Corporation. All rights reserved.
3 * All rights reserved. 3 * Copyright (c) 2006 - 2012 QLogic Corporation. All rights reserved.
4 * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. 4 * Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved.
5 * 5 *
6 * This software is available to you under a choice of one of two 6 * This software is available to you under a choice of one of two
@@ -1845,6 +1845,23 @@ bail:
1845 return ret; 1845 return ret;
1846} 1846}
1847 1847
1848struct ib_ah *qib_create_qp0_ah(struct qib_ibport *ibp, u16 dlid)
1849{
1850 struct ib_ah_attr attr;
1851 struct ib_ah *ah = ERR_PTR(-EINVAL);
1852 struct qib_qp *qp0;
1853
1854 memset(&attr, 0, sizeof attr);
1855 attr.dlid = dlid;
1856 attr.port_num = ppd_from_ibp(ibp)->port;
1857 rcu_read_lock();
1858 qp0 = rcu_dereference(ibp->qp0);
1859 if (qp0)
1860 ah = ib_create_ah(qp0->ibqp.pd, &attr);
1861 rcu_read_unlock();
1862 return ah;
1863}
1864
1848/** 1865/**
1849 * qib_destroy_ah - destroy an address handle 1866 * qib_destroy_ah - destroy an address handle
1850 * @ibah: the AH to destroy 1867 * @ibah: the AH to destroy
@@ -2060,7 +2077,7 @@ int qib_register_ib_device(struct qib_devdata *dd)
2060 spin_lock_init(&dev->lk_table.lock); 2077 spin_lock_init(&dev->lk_table.lock);
2061 dev->lk_table.max = 1 << ib_qib_lkey_table_size; 2078 dev->lk_table.max = 1 << ib_qib_lkey_table_size;
2062 lk_tab_size = dev->lk_table.max * sizeof(*dev->lk_table.table); 2079 lk_tab_size = dev->lk_table.max * sizeof(*dev->lk_table.table);
2063 dev->lk_table.table = (struct qib_mregion **) 2080 dev->lk_table.table = (struct qib_mregion __rcu **)
2064 __get_free_pages(GFP_KERNEL, get_order(lk_tab_size)); 2081 __get_free_pages(GFP_KERNEL, get_order(lk_tab_size));
2065 if (dev->lk_table.table == NULL) { 2082 if (dev->lk_table.table == NULL) {
2066 ret = -ENOMEM; 2083 ret = -ENOMEM;