Received: by 10.223.176.5 with SMTP id f5csp1728305wra; Sun, 28 Jan 2018 07:09:43 -0800 (PST) X-Google-Smtp-Source: AH8x224QWSgzlH+K8gV3dZGfxJI9VloTqVEH0COZx7mWXFwKGFlyNTLDOWHvBUiYixy3RUe3hlvg X-Received: by 10.99.64.196 with SMTP id n187mr12838669pga.147.1517152183526; Sun, 28 Jan 2018 07:09:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517152183; cv=none; d=google.com; s=arc-20160816; b=oZ4xHXCygn+ZVo3oIpkOFvQ5NC6mOAY3N2I8YMYUyw7oUg5j/DvOniOmWba2ZDgWbQ bftvbQW2hFIsDO1lIeyQX4TWUtesd6K5RQM7kKs4n28iVihLGSBI6tnboT4ZelZnykor 46nQXgDXiRZBsmvk20F1psBBNDO2DiyURPxDpOmPM3auP780TwJJAGN8yBiLQa0LXLHB /P+qGHScCUaPIOGbLspO2ggiUFoNbG/Nc/8aYOAXT0DT3yedudxeXjDi480BvsHGHVD7 Tu/ImllzZCpgfeDXX0XL6Z9mnu3R4E07tksEXIubLsg1veSMQcjad13cuAEdnMmbsgo2 2lig== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=pjGMaw2IRWhfgupFOh/v/SCYSiat4lR6zSloDDmP224=; b=rHrmc3EC5o9fai/QwNJ5qPcfu1NBQJX0RtTWu2VmExivmDjpr7RkMrimAnvLRjJ8hP R6FSuX9U/hyCyBxs7vT5BHQWtMtu6+0ovm77mHplGmM5c6jS1w538L//r3eIXKi6/ITs jtb4hvD6KiIjPB9NkZxNyulJbPCKybTXqpQOwSDGOD7lRB39sUazoCjw0vEfMskNdbXb JScCRXX6zeS3B5HY+gdwetMVenBXbTeXcEaCkZwpjD7gqJJerUofEovsGY6MxKRwmFf7 l8yLLvi8f3F+E+dTBWeOsMSJ2yJkgDYswxT0d9k3LduMbbXbBdGnhnCK9gXWsAtzaQQD ZdTw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=zp4qvKV+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x11-v6si7182542plm.734.2018.01.28.07.09.28; Sun, 28 Jan 2018 07:09:43 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20150623.gappssmtp.com header.s=20150623 header.b=zp4qvKV+; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751884AbeA1PJE (ORCPT + 99 others); Sun, 28 Jan 2018 10:09:04 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:36855 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751362AbeA1PJC (ORCPT ); Sun, 28 Jan 2018 10:09:02 -0500 Received: by mail-wm0-f68.google.com with SMTP id f3so29132938wmc.1 for ; Sun, 28 Jan 2018 07:09:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=pjGMaw2IRWhfgupFOh/v/SCYSiat4lR6zSloDDmP224=; b=zp4qvKV+N8xI06t+0I8JybN8z2o/foGO0EQD+mdPWOGYLZopoL77iANai9gKSzrNE4 WO6FeoWXmKePZL6IV64waRccIC7otlYiPcbgrUEzYSkg4gsnJAgr3x2S9tnYE2vx43JM +H/UiBuLJ3GMUCES/Yz53OmortMBobytGR7L5KF5sg6V9kivXwnotcOYqWmZrjjyr7Cq 1529wLEuFApbbD/MULvx2XHR6JZ8ga9m/6jX8xRD6LCckipOCi/tJBlNDxPp1d0pmFv2 wWlvpTy59iOAvw8slnUA8cO69jSMANAJalqoBpa6iJ5JfybhYa2HS4zn5GdfZO/fsMR0 a4TA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=pjGMaw2IRWhfgupFOh/v/SCYSiat4lR6zSloDDmP224=; b=HbwevBX/lIYkPbpWzTBGwa6MEDnvC9gnSUO7pB/pZ4+IHtzBxXqiUhl4tp8c3YLp49 Ug/fE7wtzSBPM1LVR54aR7evzbpjd29qwwrkk9tv97yq6i4KxpZtQR9KbYuRImTDI+nQ s8lBGTBNCVGU7upCXxHvNwtJcwxtP6LjskhgZDHfWFBbZc3NRYKLUj/Mq/YQvP+suYjK EC6dyxaOFc6hNJzJzi2R7AHzsLhKxNu6Iu/F1iygxLLp91Qr58lrux96FR8Iq4It/+VW 3GoyWPHpFGJjOB+xAOigNfF190igktx07oamJ3b609uKS3NPOn2B1haNj1hjHoEwhpKq I6/Q== X-Gm-Message-State: AKwxytfgpGeikfvqZWtME25XVD31p1Sahm7GmXgmBjL8BxCTpWuEM8Xw BB4yEPidjdc1z6hVKyb/OhR6og== X-Received: by 10.28.105.214 with SMTP id z83mr16472420wmh.77.1517152141456; Sun, 28 Jan 2018 07:09:01 -0800 (PST) Received: from localhost.localdomain ([51.15.160.169]) by smtp.googlemail.com with ESMTPSA id d195sm7484119wmd.2.2018.01.28.07.09.00 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 28 Jan 2018 07:09:00 -0800 (PST) From: Corentin Labbe To: dledford@redhat.com, hal.rosenstock@gmail.com, infinipath@intel.com, sean.hefty@intel.com Cc: linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, Corentin Labbe Subject: [PATCH] IB/qib: remove qib_keys.c Date: Sun, 28 Jan 2018 15:08:55 +0000 Message-Id: <1517152135-24942-1-git-send-email-clabbe@baylibre.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org qib_keys.c was left uncompilable in commit 7c2e11fe2dbe ("IB/qib: Remove qp and mr functionality from qib") Since nothing need it, remove it from tree. Signed-off-by: Corentin Labbe --- drivers/infiniband/hw/qib/qib_keys.c | 235 ----------------------------------- 1 file changed, 235 deletions(-) delete mode 100644 drivers/infiniband/hw/qib/qib_keys.c diff --git a/drivers/infiniband/hw/qib/qib_keys.c b/drivers/infiniband/hw/qib/qib_keys.c deleted file mode 100644 index 8fdf79f8d4e4..000000000000 --- a/drivers/infiniband/hw/qib/qib_keys.c +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (c) 2006, 2007, 2009 QLogic Corporation. All rights reserved. - * Copyright (c) 2005, 2006 PathScale, Inc. 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 GNU - * General Public License (GPL) Version 2, available from the file - * COPYING in the main directory of this source tree, or the - * OpenIB.org BSD license below: - * - * 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. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -#include "qib.h" - -/** - * qib_alloc_lkey - allocate an lkey - * @mr: memory region that this lkey protects - * @dma_region: 0->normal key, 1->restricted DMA key - * - * Returns 0 if successful, otherwise returns -errno. - * - * Increments mr reference count as required. - * - * Sets the lkey field mr for non-dma regions. - * - */ - -int qib_alloc_lkey(struct rvt_mregion *mr, int dma_region) -{ - unsigned long flags; - u32 r; - u32 n; - int ret = 0; - struct qib_ibdev *dev = to_idev(mr->pd->device); - struct rvt_lkey_table *rkt = &dev->lk_table; - - spin_lock_irqsave(&rkt->lock, flags); - - /* special case for dma_mr lkey == 0 */ - if (dma_region) { - struct rvt_mregion *tmr; - - tmr = rcu_access_pointer(dev->dma_mr); - if (!tmr) { - qib_get_mr(mr); - rcu_assign_pointer(dev->dma_mr, mr); - mr->lkey_published = 1; - } - goto success; - } - - /* Find the next available LKEY */ - r = rkt->next; - n = r; - for (;;) { - if (rkt->table[r] == NULL) - break; - r = (r + 1) & (rkt->max - 1); - if (r == n) - goto bail; - } - rkt->next = (r + 1) & (rkt->max - 1); - /* - * Make sure lkey is never zero which is reserved to indicate an - * unrestricted LKEY. - */ - rkt->gen++; - /* - * bits are capped in qib_verbs.c to insure enough bits - * for generation number - */ - mr->lkey = (r << (32 - ib_rvt_lkey_table_size)) | - ((((1 << (24 - ib_rvt_lkey_table_size)) - 1) & rkt->gen) - << 8); - if (mr->lkey == 0) { - mr->lkey |= 1 << 8; - rkt->gen++; - } - qib_get_mr(mr); - rcu_assign_pointer(rkt->table[r], mr); - mr->lkey_published = 1; -success: - spin_unlock_irqrestore(&rkt->lock, flags); -out: - return ret; -bail: - spin_unlock_irqrestore(&rkt->lock, flags); - ret = -ENOMEM; - goto out; -} - -/** - * qib_free_lkey - free an lkey - * @mr: mr to free from tables - */ -void qib_free_lkey(struct rvt_mregion *mr) -{ - unsigned long flags; - u32 lkey = mr->lkey; - u32 r; - struct qib_ibdev *dev = to_idev(mr->pd->device); - struct rvt_lkey_table *rkt = &dev->lk_table; - - spin_lock_irqsave(&rkt->lock, flags); - if (!mr->lkey_published) - goto out; - if (lkey == 0) - RCU_INIT_POINTER(dev->dma_mr, NULL); - else { - r = lkey >> (32 - ib_rvt_lkey_table_size); - RCU_INIT_POINTER(rkt->table[r], NULL); - } - qib_put_mr(mr); - mr->lkey_published = 0; -out: - spin_unlock_irqrestore(&rkt->lock, flags); -} - -/** - * qib_rkey_ok - check the IB virtual address, length, and RKEY - * @qp: qp for validation - * @sge: SGE state - * @len: length of data - * @vaddr: virtual address to place data - * @rkey: rkey to check - * @acc: access flags - * - * Return 1 if successful, otherwise 0. - * - * increments the reference count upon success - */ -int qib_rkey_ok(struct rvt_qp *qp, struct rvt_sge *sge, - u32 len, u64 vaddr, u32 rkey, int acc) -{ - struct rvt_lkey_table *rkt = &to_idev(qp->ibqp.device)->lk_table; - struct rvt_mregion *mr; - unsigned n, m; - size_t off; - - /* We use RKEY == zero for kernel virtual addresses */ - rcu_read_lock(); - if (rkey == 0) { - struct rvt_pd *pd = ibpd_to_rvtpd(qp->ibqp.pd); - struct qib_ibdev *dev = to_idev(pd->ibpd.device); - - if (pd->user) - goto bail; - mr = rcu_dereference(dev->dma_mr); - if (!mr) - goto bail; - if (unlikely(!atomic_inc_not_zero(&mr->refcount))) - goto bail; - rcu_read_unlock(); - - sge->mr = mr; - sge->vaddr = (void *) vaddr; - sge->length = len; - sge->sge_length = len; - sge->m = 0; - sge->n = 0; - goto ok; - } - - mr = rcu_dereference( - rkt->table[(rkey >> (32 - ib_rvt_lkey_table_size))]); - if (unlikely(!mr || mr->lkey != rkey || qp->ibqp.pd != mr->pd)) - goto bail; - - off = vaddr - mr->iova; - if (unlikely(vaddr < mr->iova || off + len > mr->length || - (mr->access_flags & acc) == 0)) - goto bail; - if (unlikely(!atomic_inc_not_zero(&mr->refcount))) - goto bail; - rcu_read_unlock(); - - off += mr->offset; - if (mr->page_shift) { - /* - page sizes are uniform power of 2 so no loop is necessary - entries_spanned_by_off is the number of times the loop below - would have executed. - */ - size_t entries_spanned_by_off; - - entries_spanned_by_off = off >> mr->page_shift; - off -= (entries_spanned_by_off << mr->page_shift); - m = entries_spanned_by_off / RVT_SEGSZ; - n = entries_spanned_by_off % RVT_SEGSZ; - } else { - m = 0; - n = 0; - while (off >= mr->map[m]->segs[n].length) { - off -= mr->map[m]->segs[n].length; - n++; - if (n >= RVT_SEGSZ) { - m++; - n = 0; - } - } - } - sge->mr = mr; - sge->vaddr = mr->map[m]->segs[n].vaddr + off; - sge->length = mr->map[m]->segs[n].length - off; - sge->sge_length = len; - sge->m = m; - sge->n = n; -ok: - return 1; -bail: - rcu_read_unlock(); - return 0; -} - -- 2.13.6