From patchwork Tue Feb 7 17:58:02 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrii Anisov X-Patchwork-Id: 9560789 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 14AF46047A for ; Tue, 7 Feb 2017 18:00:33 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id EF4BF28454 for ; Tue, 7 Feb 2017 18:00:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E450B2845C; Tue, 7 Feb 2017 18:00:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.6 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_MED, RCVD_IN_SORBS_SPAM, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id BD5A728454 for ; Tue, 7 Feb 2017 18:00:31 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cbA1q-0001UP-WD; Tue, 07 Feb 2017 17:58:10 +0000 Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cbA1p-0001U7-04 for xen-devel@lists.xenproject.org; Tue, 07 Feb 2017 17:58:09 +0000 Received: from [85.158.139.211] by server-7.bemta-5.messagelabs.com id FE/08-02154-0BA0A985; Tue, 07 Feb 2017 17:58:08 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrHIsWRWlGSWpSXmKPExsVyMbThoO56rlk RBreP6Vp83zKZyYHR4/CHKywBjFGsmXlJ+RUJrBknO/cxFbwSqvh+8xlrA+M6gS5GLg4hgRmM Ep1tfWwgDovASxaJty+bGEEcCYF+Von/394wdzFyAjkxEo/2fmSFsKskDv85yQJiCwmoSew7d J0FYtQ8Jolz28+wgSTYBHQlrr96wARiiwgoSdxbNZkJpIgZaKvE69W7wRLCAj4Sey5vYQSxWQ RUJXZ+fwA2lVfAXeLbwotMENvkJG6e6wS7glPAQ2Ll7ResEJvdJf6+/MU0gVFgASPDKkaN4tS istQiXUMzvaSizPSMktzEzBxdQwNTvdzU4uLE9NScxKRiveT83E2MwPBiAIIdjOdPex5ilORg UhLlPb17ZoQQX1J+SmVGYnFGfFFpTmrxIUYZDg4lCd5izlkRQoJFqempFWmZOcBAh0lLcPAoi fCWgKR5iwsSc4sz0yFSpxgtOXq6Tr9k4jh1A0Tu2XX5JZMQS15+XqqUOO88kAYBkIaM0jy4cb BovMQoKyXMywh0oBBPQWpRbmYJqvwrRnEORiVh3iMgU3gy80rgtr4COogJ6KBtV6aBHFSSiJC SamDcuVTBdt0TUx3Zr6am892856yWM3JXneRz9/FR+cKTZiXfWdaL505r1D6Sy7hPdd+cLW68 V3TW/Kn5GhnmkvhxQ+bB8/f1y4pu9N/b6NiXmOvT7vOq8M96k8VrZU47ypVK/f/7zt5S+MKes 7Nb2KqOcpVrywgEF3z2yj83iVP31umFXx4KhrIosRRnJBpqMRcVJwIAwk+hKsECAAA= X-Env-Sender: andrii.anisov@gmail.com X-Msg-Ref: server-9.tower-206.messagelabs.com!1486490287!83862906!1 X-Originating-IP: [209.85.128.193] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.1.1; banners=-,-,- X-VirusChecked: Checked Received: (qmail 24319 invoked from network); 7 Feb 2017 17:58:07 -0000 Received: from mail-wr0-f193.google.com (HELO mail-wr0-f193.google.com) (209.85.128.193) by server-9.tower-206.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 7 Feb 2017 17:58:07 -0000 Received: by mail-wr0-f193.google.com with SMTP id k90so6184667wrc.3 for ; Tue, 07 Feb 2017 09:58:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=b2gF5lFW5k+n/2XoIvNujMyZlhRDj6r/behbj7YOU+M=; b=GDataDsD3r4OA7bihq3n4ZUYs4dNZ8enMdMW06a785Z5BtAicuDK5cA6jqJiJISxQ5 kVwEc3p1XSWXh0qmIxVqnNKCkQoyNo4Se+Qn9SCpIcWAnR3LKCDEwXdiDeeLFpp8dhAd pmh4BcQlk/JRFUNqqW96bP5RSChITw4tFoJGz2YvGI39IjusBXtH76S2j259jsgUEZYL +5jXf7vlG8RKTW4kACnsjGV8mcloH195gUjZ0ycLBpdfwcum8SPhxkyErndkhQahEiik Pw1JIzI5iPWCIfs6qe+/CqP2YPrpsvGMSdUzr+tjB5n2KSrDQT1/yFIWOahQNC8YnVsl Ml/A== 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:in-reply-to :references; bh=b2gF5lFW5k+n/2XoIvNujMyZlhRDj6r/behbj7YOU+M=; b=lG6wz717H4kl/KZuPw3kLlPfr5xosCqTMj+SLUi9aSJhlnYHiUtYNh9L0EG/1WLy6l deQLUGew1v0SQhgyZXRAKZEEaCRNmNTnNgtadgSvL3PEeRNY/IkbrnAeqGFXXp4jD2nI c2qFvjQu2jA8I7/ZcL3BlXWyPHokV+PFgksyfzuVFAoGRhUXPyQ78hfpwf08m/NzuhlB WcmQvCY6YkqSSxpBlrT66CQt9RU94dvGW2nRghloMOQNCf219tDcL7q8lsqoNE/bXs6l FRPLOKvmex/4WJibPObDY2sJpw+PwC0/Qx9NNvcyDGQKPvrikeJGEUCxiv8qfDhaPKkr /LsQ== X-Gm-Message-State: AIkVDXLR7aIeQTASPn9EWGIPRGOLNd0Yt/bevKHPm/h1kJXmkOJo9H0F+Sh5KnLssjU4yQ== X-Received: by 10.223.160.14 with SMTP id k14mr17504668wrk.69.1486490287427; Tue, 07 Feb 2017 09:58:07 -0800 (PST) Received: from aanisov-work.kyiv.epam.com (ll-56.209.223.85.sovam.net.ua. [85.223.209.56]) by smtp.gmail.com with ESMTPSA id z134sm19809549wmc.20.2017.02.07.09.58.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 07 Feb 2017 09:58:06 -0800 (PST) From: Andrii Anisov To: xen-devel@lists.xenproject.org Date: Tue, 7 Feb 2017 19:58:02 +0200 Message-Id: <1486490283-20941-2-git-send-email-andrii.anisov@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1486490283-20941-1-git-send-email-andrii.anisov@gmail.com> References: <1486490283-20941-1-git-send-email-andrii.anisov@gmail.com> Cc: julien.grall@arm.com, sstabellini@kernel.org, andrii_anisov@epam.com, oleksandr.dmytryshyn@globallogic.com Subject: [Xen-devel] [PATCH v4 1/2] swiotlb-xen: implement xen_swiotlb_dma_mmap callback X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Stefano Stabellini This function creates userspace mapping for the DMA-coherent memory. Signed-off-by: Stefano Stabellini Signed-off-by: Oleksandr Dmytryshyn Signed-off-by: Andrii Anisov --- arch/arm/xen/mm.c | 1 + drivers/xen/swiotlb-xen.c | 19 +++++++++++++++++++ include/xen/swiotlb-xen.h | 5 +++++ 3 files changed, 25 insertions(+) diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c index bd62d94..cd1684e 100644 --- a/arch/arm/xen/mm.c +++ b/arch/arm/xen/mm.c @@ -198,6 +198,7 @@ static struct dma_map_ops xen_swiotlb_dma_ops = { .unmap_page = xen_swiotlb_unmap_page, .dma_supported = xen_swiotlb_dma_supported, .set_dma_mask = xen_swiotlb_set_dma_mask, + .mmap = xen_swiotlb_dma_mmap, }; int __init xen_mm_init(void) diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c index f8afc6d..728d4e0 100644 --- a/drivers/xen/swiotlb-xen.c +++ b/drivers/xen/swiotlb-xen.c @@ -681,3 +681,22 @@ xen_swiotlb_set_dma_mask(struct device *dev, u64 dma_mask) return 0; } EXPORT_SYMBOL_GPL(xen_swiotlb_set_dma_mask); + +/* + * Create userspace mapping for the DMA-coherent memory. + * This function should be called with the pages from the current domain only, + * passing pages mapped from other domains would lead to memory corruption. + */ +int +xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma, + void *cpu_addr, dma_addr_t dma_addr, size_t size, + unsigned long attrs) +{ +#if defined(CONFIG_ARM) || defined(CONFIG_ARM64) + if (__generic_dma_ops(dev)->mmap) + return __generic_dma_ops(dev)->mmap(dev, vma, cpu_addr, + dma_addr, size, attrs); +#endif + return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size); +} +EXPORT_SYMBOL_GPL(xen_swiotlb_dma_mmap); diff --git a/include/xen/swiotlb-xen.h b/include/xen/swiotlb-xen.h index a0083be..a315c87 100644 --- a/include/xen/swiotlb-xen.h +++ b/include/xen/swiotlb-xen.h @@ -55,4 +55,9 @@ xen_swiotlb_dma_supported(struct device *hwdev, u64 mask); extern int xen_swiotlb_set_dma_mask(struct device *dev, u64 dma_mask); + +extern int +xen_swiotlb_dma_mmap(struct device *dev, struct vm_area_struct *vma, + void *cpu_addr, dma_addr_t dma_addr, size_t size, + unsigned long attrs); #endif /* __LINUX_SWIOTLB_XEN_H */