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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id AE8FEC7115A for ; Wed, 18 Jun 2025 11:46:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4ED3B6B008C; Wed, 18 Jun 2025 07:46:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 49D996B0099; Wed, 18 Jun 2025 07:46:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 38C866B009A; Wed, 18 Jun 2025 07:46:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 274E96B008C for ; Wed, 18 Jun 2025 07:46:34 -0400 (EDT) Received: from smtpin06.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id CE59F1D79A4 for ; Wed, 18 Jun 2025 11:46:33 +0000 (UTC) X-FDA: 83568343866.06.7A06B04 Received: from mail-qt1-f182.google.com (mail-qt1-f182.google.com [209.85.160.182]) by imf23.hostedemail.com (Postfix) with ESMTP id C4E0A14000A for ; Wed, 18 Jun 2025 11:46:31 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=ziepe.ca header.s=google header.b=L5UoPyN8; dmarc=none; spf=pass (imf23.hostedemail.com: domain of jgg@ziepe.ca designates 209.85.160.182 as permitted sender) smtp.mailfrom=jgg@ziepe.ca ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750247191; a=rsa-sha256; cv=none; b=DxN8DYLePyIJaL8ox5f1a98cW1Qz+DdKN+j8kDT4fimkoCR84voVI5H1LiYld9m/5m+7jz gZYR0JH1A8LbvQrx/0jmEEzYRji1GhIY5/GMdr83Lep5WgY2d8nVMqaxk/wghS83CnaAum 03di05qUQcW7RMV9nKheOJH2Qeb6UvU= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=ziepe.ca header.s=google header.b=L5UoPyN8; dmarc=none; spf=pass (imf23.hostedemail.com: domain of jgg@ziepe.ca designates 209.85.160.182 as permitted sender) smtp.mailfrom=jgg@ziepe.ca ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1750247191; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+wxDAXtg4Qo50atD2TXEt4R3fx9+/jlU++z8cat2peU=; b=NUtbXM2HZ0TNqp0Z9TvZWwiR/8uzfdJsJDBjjFnWs627vQnJgQBHQs1p8tHdMtM9Saa+nm t37o7EMxbgeBfC3ZhWCwQE/hPfhpPGIqPBbq2f5dM19sfD6zGds6N+5BpB8/mlMJ3Uk7mO ukpsDTNkZDSkWC0wPsbpAeuej6JqI6Y= Received: by mail-qt1-f182.google.com with SMTP id d75a77b69052e-4a58c2430edso7233311cf.1 for ; Wed, 18 Jun 2025 04:46:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; t=1750247191; x=1750851991; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=+wxDAXtg4Qo50atD2TXEt4R3fx9+/jlU++z8cat2peU=; b=L5UoPyN8tYuGF2Aq14c44akhxbdjzqN6+GqHNPXTNVGEuJgv8AyV96wa3vmJm19NEK gX9fw3VKtBMdhx9Mn1toSCw14v8ZsChiEKX1N7L84lwGHPyPwXjaqhBLziTmit4X7OK0 4sVas7xPyU4VT+akIg16CCd/gPZbdcOT+P3QH7EwUERDnnnJj33FoGpSsdfPsqqtdbGO jPZgTdmUaRJIMVbgy30gYYWK1/HJquvkjjOE9dn3RwzOatW6EfK6H6qKytCci7xbEt5/ Xe4zcibJgKcQY+18HTonu7b+62tBOD/zr/kcBY60b+QmuVoapi4s3Ar4UdNgx/6GDWka M1lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750247191; x=1750851991; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=+wxDAXtg4Qo50atD2TXEt4R3fx9+/jlU++z8cat2peU=; b=UEfuZlMezE4qAIesvHWWVV/bxuUFNE5sYecmgF6myRz8hbxMOcujPu4rnZabQcRgHY I4MsUc707sTbKN47Ws7QNtvHm/xithIt/tdRh7P4OiqgkHTNZS19M7MCgvjge/uKSHhi qBDUNVoG6ffrlnaxl+Bw9YmY288US32kA+7re47CZ74rh6drxkBn9bx8IQDo95lC9MqH N/+Vca3L6hugaV8BJPYygHYTBMqA/50qPyzdzgNCVQL/iD69zq4oh2qhG1jLISiy9y2q wDLQWWm3Zk42B3sdvGZgQs1jdOaMsNZZ/lskyrj6zVewwyZnPS0g65tHK1tkM1C/eYAt liHg== X-Forwarded-Encrypted: i=1; AJvYcCUjLIBUWnikzXlxHwITJFU4C+134VTEmM/5YRAHwlB5FGF/Z0emFCR5fiXy4ZjkVCe6r65IgkSWNg==@kvack.org X-Gm-Message-State: AOJu0Yxftm9XtabifsN9sZfH5wzA8tw3CC3dCc+Ari4D7teyW90lgX9u YgJEg3ymdpguBOKULjp+1KIZENm26h5tb9C65+mOzHKQ4RN75V/p1ieOOEXfPgmK28M= X-Gm-Gg: ASbGncsXSAu4JjOqnlwMZc11wLnG4eRi5W4/X/r2LGOlE7OIZF05oUjgK5GOtG5RnqE z8UCsWLVNPmvcZdxWjCcG6uxp+vjkdEC9kZpIrdwA52nokQ+JnmLTFYcL9WB8wp5EM/DvtpGGg/ BOCkpF4cyE1CvT1r5McETsyR2EYMB9YGnv8KaLCe6fDyN19IyF566owSUyatYys7zS8Y5VFrbTz jJRjhRuHkfk+UC8lLNv7P2yZYu8WnD1oJOtG8E5MxgvVluT7sRSIW49/Bo+CUalWJ/jaFW/glhs mPDSvxECdc6LiiF7Nb3HNFg+o0wtrhc8x0bsQCIX6133hAtlzxVoUtGDNzKyNqc9RlN8fe0+mJg eDEtqgqklCZeBfC9HHlV7WnWoWlopXW6+gA49/w== X-Google-Smtp-Source: AGHT+IH9ampaEvML5kl4q5XP1ejBHxic8pQJ9EplcrH4aE8+2qiZ3Q+h0D+ADETOd0AZ5S0xxE/VJQ== X-Received: by 2002:ac8:7d4f:0:b0:4a6:f6e6:7696 with SMTP id d75a77b69052e-4a7645dd6bamr37752941cf.26.1750247190820; Wed, 18 Jun 2025 04:46:30 -0700 (PDT) Received: from ziepe.ca (hlfxns017vw-142-167-56-70.dhcp-dynamic.fibreop.ns.bellaliant.net. [142.167.56.70]) by smtp.gmail.com with ESMTPSA id d75a77b69052e-4a72a4b148esm72211971cf.40.2025.06.18.04.46.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 04:46:30 -0700 (PDT) Received: from jgg by wakko with local (Exim 4.97) (envelope-from ) id 1uRrFN-00000006l9d-25JO; Wed, 18 Jun 2025 08:46:29 -0300 Date: Wed, 18 Jun 2025 08:46:29 -0300 From: Jason Gunthorpe To: David Hildenbrand Cc: lizhe.67@bytedance.com, akpm@linux-foundation.org, alex.williamson@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, peterx@redhat.com Subject: Re: [PATCH v4 2/3] gup: introduce unpin_user_folio_dirty_locked() Message-ID: <20250618114629.GL1376515@ziepe.ca> References: <20250617152210.GA1552699@ziepe.ca> <20250618062820.8477-1-lizhe.67@bytedance.com> <20250618113626.GK1376515@ziepe.ca> <9c31da33-8579-414a-9b2a-21d7d8049050@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Rspam-User: X-Rspamd-Queue-Id: C4E0A14000A X-Rspamd-Server: rspam10 X-Stat-Signature: 1cdfobpx34yeqj4ctrje7aomx1htr8ec X-HE-Tag: 1750247191-918458 X-HE-Meta: U2FsdGVkX1+Cag1rPdHQUz5G0Mrt03gZzY5ek0Pg60jplhBlBKtzeGBdioAiZUsXxJeezlqGSPnC9aCqJHXkvuFekuEzaYesrY92q4ReEm72KSUw1oCfi+ApXuMKIYjgAD3HWk9mSUmoUursXYg3qw+5aaA0ukMIergKmqwgPXWJK87ovp3bXu5U8nbyct7zA9fsg0X8l1Q0AvjP8g1lzhZLZFcx9LtIxUht2ZppZvQx248mB53EijJZ5ni+N+TmqQwGG8wusmmFu9HmlrR7lCt3PKoQGgn0BJ7ynE43UxB4rE28mMZixMp9QTWdyFc2ZXc1Yy4nSesJ6pOieDJypFGoU7pylKiV1l4DgYxtGxYdcXKkROjf2mMXFRP4vNrCyvwuFQbstJlqhVBZtyra0oDX31yI9IrZmIi0jtFLHZixSXUk+leVa8ufHIXatchq/dvQfrNN+b4S6Q1TODJn1vWhtj/1pFbiFrXpq3ACnFJ6kjclUkytwYPKAHMkZWkHlDPCEOffebdWg9dbmvtD/YqW/+UtYISt5bMMAcILbptU8/A0R8XV0n1S4j5BSD+NVo6JdkGyZ8gS+JRE7SPuLOWFZFZvE3+ldF3+sUcbfIaiCrbe7ZJ8lugegD4ZRcRXIN3P9IcCbMLcL2HMNMlzGJ7w+5ys0gpStwffgmfESbG7bLGuX+E16MylJ0Oh1zgodfZy6I53YoXZ5B8nz7b/tZ3rJtWzvp0Kcc0D5T4Gt+g+0Qreh21Pp+ndpo8MkBAVzEDXYjqpuEKvpsbt2FVQixvSRsvjfWzHXN9oeanwsvwulxRMUSFyP1KXOBBGzRBYHKKkdlVlfCos1rJ4RVKuR0f5b8Dq8R2gQDsYdr2NZxssvF8rucJjDC1py80vDnzFxwgc2Mgm6ZjgjjlhQYQjrMkaafJO1SdjH/le+96iV6padN0ERUzsTBB6DlGxmNIyia5j/z2/mb4CndBaWMX e/r/+7lt 7HACj8oA9rGYayEnAnnSdYJAK6N0R76aFEU7KH/pXFPSwdQPlqP5h6N9yKZnIXVH3Y1RxOQ4UJKfOOL2RaBbrtDdNA8kBGB4b8haLJicikob14JRKVkW3i65cSz8UX/1ULWaY5htKMFvHO5xmdnq+acNDcjtR/rxMfVGyPsklNX2XshOQLnddPi6kGdFRarbkKha6IPuFdpbNFNv21pqYirPPOFHhlDo0riTLxVTcd1QpciEJhACDTYAA+Gh2jZ5SAIisNZDTuWG+D9q7Bu8f3qJoz5OeTqNC0DYgqogIVFCa0OQRD3xNBt6F7CAxyNFMUskPTqiotXSX0rjoRDawlffMIcf30cl4xn/ckHq9QGYW2MkJyG8I/+bStgmmPV8yDRR2mhN6cwBxdkIqujO6maH1x7vAELitnLY/ 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: List-Subscribe: List-Unsubscribe: On Wed, Jun 18, 2025 at 01:42:09PM +0200, David Hildenbrand wrote: > On 18.06.25 13:40, David Hildenbrand wrote: > > On 18.06.25 13:36, Jason Gunthorpe wrote: > > > On Wed, Jun 18, 2025 at 02:28:20PM +0800, lizhe.67@bytedance.com wrote: > > > > On Tue, 17 Jun 2025 12:22:10 -0300, jgg@ziepe.ca wrote: > > > > > + while (npage) { > > > > > + long nr_pages = 1; > > > > > + > > > > > + if (!is_invalid_reserved_pfn(pfn)) { > > > > > + struct page *page = pfn_to_page(pfn); > > > > > + struct folio *folio = page_folio(page); > > > > > + long folio_pages_num = folio_nr_pages(folio); > > > > > + > > > > > + /* > > > > > + * For a folio, it represents a physically > > > > > + * contiguous set of bytes, and all of its pages > > > > > + * share the same invalid/reserved state. > > > > > + * > > > > > + * Here, our PFNs are contiguous. Therefore, if we > > > > > + * detect that the current PFN belongs to a large > > > > > + * folio, we can batch the operations for the next > > > > > + * nr_pages PFNs. > > > > > + */ > > > > > + if (folio_pages_num > 1) > > > > > + nr_pages = min_t(long, npage, > > > > > + folio_pages_num - > > > > > + folio_page_idx(folio, page)); > > > > > + > > > > > + unpin_user_folio_dirty_locked(folio, nr_pages, > > > > > + dma->prot & IOMMU_WRITE); > > > > > > > > Are you suggesting that we should directly call > > > > unpin_user_page_range_dirty_lock() here (patch 3/3) instead? > > > > > > I'm saying you should not have the word 'folio' inside the VFIO. You > > > accumulate a contiguous range of pfns, by only checking the pfn, and > > > then call > > > > > > unpin_user_page_range_dirty_lock(pfn_to_page(first_pfn)...); > > > > > > No need for any of this. vfio should never look at the struct page > > > except as the last moment to pass the range. > > > > Hah, agreed, that's actually simpler and there is no need to factor > > anything out. > > Ah, no, wait, the problem is that we don't know how many pages we can > supply, because there might be is_invalid_reserved_pfn() in the range ... You stop batching when you hit any invalid_reserved_pfn and flush it. It still has to check read back and check every PFN to make sure it is contiguous, checking reserved too is not a problemm. Jason