Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1087246pxb; Thu, 28 Jan 2021 07:44:45 -0800 (PST) X-Google-Smtp-Source: ABdhPJywuCP+59Eo2BjKULvizv9LVE6gEFbjZWR02yFMs6XMV0AP7ke5mYGXoeceqW3UA5IBE3VN X-Received: by 2002:a17:906:f6d8:: with SMTP id jo24mr11739186ejb.213.1611848685554; Thu, 28 Jan 2021 07:44:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611848685; cv=none; d=google.com; s=arc-20160816; b=dzgjaGxiTX3dJs2iUbXPsYLPSZEIvks8jezea2wWJCp8UhZVGWzMV2FPNRD5lbZLrn i2MwKjgmIJdXS8+5wLwnbjT5rTPAT2DafdjiTDOJIsqCTWRhIq5vQQBsweNNY9gyLTZd Z1G8mfTa5BKehFgRF7e3g7F7rKwqljdd1qdEPgpWJu24rr8BYH8p/+FIrtz5RETxczr2 W8u2olY+o5q2118Hu5/55x30sncRT97yz9iJbPlP8JYivGpQEalFpghW0G2DvZpSjHkG HOtHwFLME86CiFcrXzIuts7yC6v149S04lJBlW/69NYvuCwqicu1r50pK30KkNgiygQX nE/Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :mime-version:accept-language:in-reply-to:references:message-id:date :thread-index:thread-topic:subject:cc:to:from; bh=2xY7IcupDegtqpvznBz1acv+Mbye8xmtZ3DXsHQpIrs=; b=W8ILGBhWgKKe8wk/Elb6wEpymRHiscT6AXY6PBRW7ok1wUO3Ab4mMC0UhJqXnjC2k3 oDNTjJd9ijescDeDxMxFa7XerXufU7QsgzwZj4xT8g6Wo1fZstoNSrtHwTLgl/VyNp93 A42xMR6mVTDpXACqK/TSKNshErSLlgKy8Rcpktugo6kRYGawYPx2mODhQiWuJi/qmTnY I4FkGkYafdi7/BH2sq77N3FKRe7b5AkkdhGS6rFaJsmFVAc7ys5w+9iVz1ArMfBj5dC4 svCtUjwl5YutcQPMTonR8HPwOlczrrr84r2Ridv91/oUQ4JFN0pJ4fyLZ5RhKWovDi89 WsAw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b2si2605702ejk.68.2021.01.28.07.44.20; Thu, 28 Jan 2021 07:44:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=aculab.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231388AbhA1PnM convert rfc822-to-8bit (ORCPT + 99 others); Thu, 28 Jan 2021 10:43:12 -0500 Received: from eu-smtp-delivery-151.mimecast.com ([185.58.85.151]:56632 "EHLO eu-smtp-delivery-151.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231244AbhA1PnL (ORCPT ); Thu, 28 Jan 2021 10:43:11 -0500 Received: from AcuMS.aculab.com (156.67.243.126 [156.67.243.126]) (Using TLS) by relay.mimecast.com with ESMTP id uk-mta-12-etlw7F1KPkS310PW0vAHjQ-1; Thu, 28 Jan 2021 15:41:31 +0000 X-MC-Unique: etlw7F1KPkS310PW0vAHjQ-1 Received: from AcuMS.Aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) by AcuMS.aculab.com (fd9f:af1c:a25b:0:43c:695e:880f:8750) with Microsoft SMTP Server (TLS) id 15.0.1347.2; Thu, 28 Jan 2021 15:41:31 +0000 Received: from AcuMS.Aculab.com ([fe80::43c:695e:880f:8750]) by AcuMS.aculab.com ([fe80::43c:695e:880f:8750%12]) with mapi id 15.00.1347.000; Thu, 28 Jan 2021 15:41:31 +0000 From: David Laight To: 'Christoph Hellwig' , Mauro Carvalho Chehab , Marek Szyprowski , "Tomasz Figa" , Ricardo Ribalda , "Sergey Senozhatsky" , "iommu@lists.linux-foundation.org" CC: Robin Murphy , "linux-doc@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-media@vger.kernel.org" Subject: RE: [PATCH 2/6] dma-mapping: add a dma_mmap_pages helper Thread-Topic: [PATCH 2/6] dma-mapping: add a dma_mmap_pages helper Thread-Index: AQHW9YdDx2Jomxp/n0KiElYHhtkl1qo9KjnA Date: Thu, 28 Jan 2021 15:41:31 +0000 Message-ID: <792682fa4a97411a8248abeec29b78ee@AcuMS.aculab.com> References: <20210128145837.2250561-1-hch@lst.de> <20210128145837.2250561-3-hch@lst.de> In-Reply-To: <20210128145837.2250561-3-hch@lst.de> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.202.205.107] MIME-Version: 1.0 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=C51A453 smtp.mailfrom=david.laight@aculab.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: aculab.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Christoph Hellwig > Sent: 28 January 2021 14:59 > > Add a helper to map memory allocated using dma_alloc_pages into > a user address space, similar to the dma_alloc_attrs function for > coherent allocations. > ... > +:: > + > + int > + dma_mmap_pages(struct device *dev, struct vm_area_struct *vma, > + size_t size, struct page *page) > + > +Map an allocation returned from dma_alloc_pages() into a user address space. > +dev and size must be the same as those passed into dma_alloc_pages(). > +page must be the pointer returned by dma_alloc_pages(). To be useful this needs to specify the offset into the user address area. (ie the offset in the mmap() buffer.) For example we have an fpga based PCIe card that converts internal addresses that refer to one of 512 16k 'pages' to 64bit PCIe bus master addresses. So it (sort of) contains its own iommu. So we can allocate (aligned) 16k kernel memory buffers with dma_alloc_coherent() and make them appear contiguous to the on-board PCIe bus master users. We then mmap() them into contiguous user addresses. So both 'ends' see contiguous addresses without requiring contiguous physical memory or requiring all the memory be allocated at the same time. Clearly in-kernel users have to allow for the 16k boundaries. But the large structures are accesses from user space. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)