From patchwork Sun Apr 24 18:10:01 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chris Wilson X-Patchwork-Id: 614177 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3qtHTp56Shz9t47 for ; Mon, 25 Apr 2016 04:10:54 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=fftTcr2f; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753075AbcDXSKg (ORCPT ); Sun, 24 Apr 2016 14:10:36 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:35340 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753036AbcDXSKc (ORCPT ); Sun, 24 Apr 2016 14:10:32 -0400 Received: by mail-wm0-f65.google.com with SMTP id e201so16813586wme.2; Sun, 24 Apr 2016 11:10:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=jgLz6XGz0YM6SEzAiraYSC3V3U9bVANSSJuMawpoRBw=; b=fftTcr2fW82xYD8VAuGKVJq9WoZdob5fctUdD3ayjfp5EvIianjqHbsV8k2fAlPC9h 5LyMV2pGOoR6ZZUxpGjVTJ4OuM4K3/f8Van3ZN+8pKgcQZNk9MxU8QB1EhhpJPdbgp8O nVk1vCLKc5eeMZmquFOeYQP8oRxnNCApu+y06V7EF98df0k5WFp5w/yAJGS393wHtT+a owDUj8OP7BY8WyGXYP2yqQ64go8CkpSV9gVU2ftd0OpQV10x9Jc7Bl+AskU9PIG4XsjJ n4P3sxBntRg5ZjDIer1vsbVp9VLayd472EUA6UScCqJUHHdW9m5Ke2TFJJoEwTm4oaR1 1N0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=jgLz6XGz0YM6SEzAiraYSC3V3U9bVANSSJuMawpoRBw=; b=G8KAtKwMpIGxR6u4R6ES7tSZSrzArk4M/8lf1kNfNxW1ZVITms61E/jes5pvTU5HnM loITpZ7crTTEtYBubqnBaEtVnBLLdugdMouFeMb8sJWpReKrq7+ZIsohi5qrZE5PHmiS gsvNJtYqNn1xaGkkIxOXaYLT7qnr5KUL2Hqs0m+Wx3NXJ2iTyEzSX+6qab5wHG+Wk7po Y7iTd9AfzL/vCeCozJFbYCdU1D5+MaxozrmAJ7ZtKKXKl2zwPJvDJEg7t2g9465HwIm2 lViI/M94bUepVytvtuSGUTzlTpCJ7Pobn0A5JboUc+3vRo0ect+Amj1y/M2yfVyVOU95 A4/w== X-Gm-Message-State: AOPr4FWTr+059/XDMz1x3CNoSs1fZXox1+RSZz9cMWzk81Ic+yR3C4iGvdl/NZPcPM99IA== X-Received: by 10.194.2.225 with SMTP id 1mr34794450wjx.29.1461521430701; Sun, 24 Apr 2016 11:10:30 -0700 (PDT) Received: from haswell.alporthouse.com ([78.156.65.138]) by smtp.gmail.com with ESMTPSA id lh1sm19590888wjb.20.2016.04.24.11.10.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 24 Apr 2016 11:10:29 -0700 (PDT) From: Chris Wilson To: intel-gfx@lists.freedesktop.org Cc: Chris Wilson , Tvrtko Ursulin , Daniel Vetter , Jani Nikula , David Airlie , Yishai Hadas , Dan Williams , Ingo Molnar , "Peter Zijlstra (Intel)" , David Hildenbrand , "Luis R . Rodriguez" , dri-devel@lists.freedesktop.org, netdev@vger.kernel.org, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 03/21] io-mapping: Specify mapping size for io_mapping_map_wc() Date: Sun, 24 Apr 2016 19:10:01 +0100 Message-Id: <1461521419-18086-3-git-send-email-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1461521419-18086-1-git-send-email-chris@chris-wilson.co.uk> References: <1461521419-18086-1-git-send-email-chris@chris-wilson.co.uk> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The ioremap() hidden behind the io_mapping_map_wc() convenience helper can be used for remapping multiple pages. Extend the helper so that future callers can use it for larger ranges. Signed-off-by: Chris Wilson Cc: Tvrtko Ursulin Cc: Daniel Vetter Cc: Jani Nikula Cc: David Airlie Cc: Yishai Hadas Cc: Dan Williams Cc: Ingo Molnar Cc: "Peter Zijlstra (Intel)" Cc: David Hildenbrand Cc: Luis R. Rodriguez Cc: intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org Cc: netdev@vger.kernel.org Cc: linux-rdma@vger.kernel.org Cc: linux-kernel@vger.kernel.org Reviewed-by: Luis R. Rodriguez --- drivers/gpu/drm/i915/intel_overlay.c | 3 ++- drivers/net/ethernet/mellanox/mlx4/pd.c | 4 +++- include/linux/io-mapping.h | 10 +++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_overlay.c b/drivers/gpu/drm/i915/intel_overlay.c index 9746b9841c13..0d5a376878d3 100644 --- a/drivers/gpu/drm/i915/intel_overlay.c +++ b/drivers/gpu/drm/i915/intel_overlay.c @@ -198,7 +198,8 @@ intel_overlay_map_regs(struct intel_overlay *overlay) regs = (struct overlay_registers __iomem *)overlay->reg_bo->phys_handle->vaddr; else regs = io_mapping_map_wc(ggtt->mappable, - overlay->flip_addr); + overlay->flip_addr, + PAGE_SIZE); return regs; } diff --git a/drivers/net/ethernet/mellanox/mlx4/pd.c b/drivers/net/ethernet/mellanox/mlx4/pd.c index b3cc3ab63799..6fc156a3918d 100644 --- a/drivers/net/ethernet/mellanox/mlx4/pd.c +++ b/drivers/net/ethernet/mellanox/mlx4/pd.c @@ -205,7 +205,9 @@ int mlx4_bf_alloc(struct mlx4_dev *dev, struct mlx4_bf *bf, int node) goto free_uar; } - uar->bf_map = io_mapping_map_wc(priv->bf_mapping, uar->index << PAGE_SHIFT); + uar->bf_map = io_mapping_map_wc(priv->bf_mapping, + uar->index << PAGE_SHIFT, + PAGE_SIZE); if (!uar->bf_map) { err = -ENOMEM; goto unamp_uar; diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h index e399029b68c5..645ad06b5d52 100644 --- a/include/linux/io-mapping.h +++ b/include/linux/io-mapping.h @@ -100,14 +100,16 @@ io_mapping_unmap_atomic(void __iomem *vaddr) } static inline void __iomem * -io_mapping_map_wc(struct io_mapping *mapping, unsigned long offset) +io_mapping_map_wc(struct io_mapping *mapping, + unsigned long offset, + unsigned long size) { resource_size_t phys_addr; BUG_ON(offset >= mapping->size); phys_addr = mapping->base + offset; - return ioremap_wc(phys_addr, PAGE_SIZE); + return ioremap_wc(phys_addr, size); } static inline void @@ -155,7 +157,9 @@ io_mapping_unmap_atomic(void __iomem *vaddr) /* Non-atomic map/unmap */ static inline void __iomem * -io_mapping_map_wc(struct io_mapping *mapping, unsigned long offset) +io_mapping_map_wc(struct io_mapping *mapping, + unsigned long offset, + unsigned long size) { return ((char __force __iomem *) mapping) + offset; }