Received: by 2002:a25:86ce:0:0:0:0:0 with SMTP id y14csp473872ybm; Wed, 22 May 2019 06:28:57 -0700 (PDT) X-Google-Smtp-Source: APXvYqy4+0F9ahrnAz86LhkZu+//z01OgAUvG/7ePEhaKZ30AYcQmQBC4RmtxiwCaAAo/B7HqcHt X-Received: by 2002:a63:c64c:: with SMTP id x12mr89243530pgg.379.1558531737018; Wed, 22 May 2019 06:28:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1558531737; cv=none; d=google.com; s=arc-20160816; b=wO4+ki0A7lbqjPnrrora4OsASnxfKZ0LbDeUKzN8Zi0E53ByDZKwWvnv8oaOXQtj30 Dkmn7S2xSTzrYdS6yBWvKaG2NE2NJS9vjgXeNB/stFPWRmagVOqoOEY8G9gr2MAj89OG jf0bDBs996GWFvIGeCyhbAJSwMFfKgqiOPOQVGDA/NoH/P0fG8KTUAEfS6q+kCfr1iD/ +3MEX4TAHwjZx9y99qSo/N2dx+Yd11tVxA03Sg/XDOTEhoKSjLqah2A6VTfhsHqUKHwe yAUG7xJeqQ+DFMSXq+siUgE0/ADZ6gtivBETFfZfObeGs67iykwqcRUypscU6ZuXmkd7 fcOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=Bag1e7TgMSl+NBTXmefOqIrWziHV3NkU7816y87r8As=; b=c0GcC0eYw5N9QJIXrs6BtF6IiL2AQy4P8a3cLi9xKWdmRaUByoo48IOzoEfHnoPB06 3olAK9N+H/W2QorfQSMVM/8rtaLZabae3p9/jKn7Lg9RZ0istXddwy+DtC3h+edxe73/ ajPE6y+71dLIOUqL0stXEbCwLoZFQxfqa6sAAoqxzIMz7n3L1+UOy3meZTxb2EXNvA/L DbloS+eocH8YIb4HFlOd2Bjp2Xtx/bsErth1QQQJHeNmXxpuUmEWIrTtTPLLTihhR1c5 ikKtNNDJP62UXwAU0J6bWaqTidvFOS7dYWTzWXexF+KPuOdZPEnAAaxgxGQEcK16EmiE c/qg== ARC-Authentication-Results: i=1; mx.google.com; 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 77si25884750pgb.237.2019.05.22.06.28.41; Wed, 22 May 2019 06:28:57 -0700 (PDT) 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; 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 S1729750AbfEVNZr (ORCPT + 99 others); Wed, 22 May 2019 09:25:47 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:51378 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729126AbfEVNZq (ORCPT ); Wed, 22 May 2019 09:25:46 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 26F9615AB; Wed, 22 May 2019 06:25:46 -0700 (PDT) Received: from [10.1.26.184] (unknown [10.1.26.184]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id DA7E43F73F; Wed, 22 May 2019 06:25:44 -0700 (PDT) Subject: Re: [PATCH] swiotlb: sync buffer when mapping FROM_DEVICE To: Christoph Hellwig Cc: =?UTF-8?Q?Horia_Geant=c4=83?= , Konrad Rzeszutek Wilk , Marek Szyprowski , iommu@lists.linux-foundation.org, linux-kernel@vger.kernel.org, linux-imx@nxp.com References: <20190522072018.10660-1-horia.geanta@nxp.com> <20190522123243.GA26390@lst.de> <6cbe5470-16a6-17e9-337d-6ba18b16b6e8@arm.com> <20190522130921.GA26874@lst.de> From: Robin Murphy Message-ID: Date: Wed, 22 May 2019 14:25:38 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 In-Reply-To: <20190522130921.GA26874@lst.de> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-GB Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 2019-05-22 2:09 pm, Christoph Hellwig wrote: > On Wed, May 22, 2019 at 01:50:47PM +0100, Robin Murphy wrote: >> Would that work out any different from the existing DMA_ATTR_SKIP_CPU_SYNC? >> >> If drivers are prepared to handle this issue from their end, they can >> already do so for single mappings by using that attr along with explicit >> partial syncs via dma_sync_single(). For page/sg mappings we'd still have >> the problem of identifying what part of "partial" actually matters, and >> probably having to add some additional new sync operations to cope. > > Except that the same optimization we are tripping over here is also > present in dma_sync_* - dma_sync_*_to_device with DMA_FROM_DEVICE is a > no-op in swiotlb. Sure, but that should be irrelevant since the effective problem here is in the sync_*_for_cpu direction, and it's the unmap which nobbles the buffer. If the driver does this: dma_map_single(whole buffer); dma_unmap_single(whole buffer); then it could instead do this and be happy: dma_map_single(whole buffer, SKIP_CPU_SYNC); dma_sync_single_for_cpu(updated part of buffer); dma_unmap_single(whole buffer, SKIP_CPU_SYNC); Robin.