From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=3.0 tests=FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 215DDC2D0EA for ; Wed, 8 Apr 2020 13:18:29 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id C84A82072A for ; Wed, 8 Apr 2020 13:18:28 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C84A82072A Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=sina.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 713E48E0010; Wed, 8 Apr 2020 09:18:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 69D478E000D; Wed, 8 Apr 2020 09:18:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 5B26C8E0010; Wed, 8 Apr 2020 09:18:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0112.hostedemail.com [216.40.44.112]) by kanga.kvack.org (Postfix) with ESMTP id 40DD58E000D for ; Wed, 8 Apr 2020 09:18:28 -0400 (EDT) Received: from smtpin08.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 0675B9991 for ; Wed, 8 Apr 2020 13:18:28 +0000 (UTC) X-FDA: 76684741896.08.spot83_83f1263ee951b X-HE-Tag: spot83_83f1263ee951b X-Filterd-Recvd-Size: 2027 Received: from r3-21.sinamail.sina.com.cn (r3-21.sinamail.sina.com.cn [202.108.3.21]) by imf10.hostedemail.com (Postfix) with SMTP for ; Wed, 8 Apr 2020 13:18:26 +0000 (UTC) Received: from unknown (HELO localhost.localdomain)([114.246.227.120]) by sina.com with ESMTP id 5E8DCEF90001B142; Wed, 8 Apr 2020 21:17:47 +0800 (CST) X-Sender: hdanton@sina.com X-Auth-ID: hdanton@sina.com X-SMAIL-MID: 228695628785 From: Hillf Danton To: Christoph Hellwig Cc: Andrew Morton , linux-mm@kvack.org, iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 04/28] dma-mapping: use vmap insted of reimplementing it Date: Wed, 8 Apr 2020 21:17:36 +0800 Message-Id: <20200408131736.9532-1-hdanton@sina.com> In-Reply-To: <20200408115926.1467567-1-hch@lst.de> References: <20200408115926.1467567-1-hch@lst.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On Wed, 8 Apr 2020 13:59:02 +0200 Christoph Hellwig wrote: > =20 > @@ -62,24 +42,20 @@ void *dma_common_pages_remap(struct page **pages, s= ize_t size, > void *dma_common_contiguous_remap(struct page *page, size_t size, > pgprot_t prot, const void *caller) > { > - int i; > + int count =3D size >> PAGE_SHIFT; > struct page **pages; > - struct vm_struct *area; > + void *vaddr; > + int i; > =20 > - pages =3D kmalloc(sizeof(struct page *) << get_order(size), GFP_KERNE= L); > + pages =3D kmalloc_array(count, sizeof(struct page *), GFP_KERNEL); Is it making sense to vmalloc pages as long as array size is bigger than PAGE_SIZE? > if (!pages) > return NULL; > - > - for (i =3D 0; i < (size >> PAGE_SHIFT); i++) > + for (i =3D 0; i < count; i++) > pages[i] =3D nth_page(page, i); > - > - area =3D __dma_common_pages_remap(pages, size, prot, caller); > - > + vaddr =3D vmap(pages, count, VM_DMA_COHERENT, prot); > kfree(pages); > =20 > - if (!area) > - return NULL; > - return area->addr; > + return vaddr; > }