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 1E578C71157 for ; Tue, 17 Jun 2025 15:22:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 87B8F6B0088; Tue, 17 Jun 2025 11:22:15 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 852CD6B0089; Tue, 17 Jun 2025 11:22:15 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 769216B008A; Tue, 17 Jun 2025 11:22:15 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 661656B0088 for ; Tue, 17 Jun 2025 11:22:15 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id F360D160468 for ; Tue, 17 Jun 2025 15:22:14 +0000 (UTC) X-FDA: 83565258588.04.5FACB75 Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) by imf01.hostedemail.com (Postfix) with ESMTP id D14D34000E for ; Tue, 17 Jun 2025 15:22:12 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=ziepe.ca header.s=google header.b=Tp5xhT6g; dmarc=none; spf=pass (imf01.hostedemail.com: domain of jgg@ziepe.ca designates 209.85.222.172 as permitted sender) smtp.mailfrom=jgg@ziepe.ca ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1750173732; a=rsa-sha256; cv=none; b=qW3TXVw8KJgfHEN/AeOSgc1VE9MmdNL3Pm6IK4M8gwQAo9X2r1/BtBwx0Dt3RlZLaM6aXY PvatvSQdV3v1feyIxiXY61dyuisbPiJTad4O4KSPuSGiJtnZioVe7KydOCtEQpIl877kCG HzuJvWNCIxg8m9UpN4vGf5VDRNBBf7Y= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=ziepe.ca header.s=google header.b=Tp5xhT6g; dmarc=none; spf=pass (imf01.hostedemail.com: domain of jgg@ziepe.ca designates 209.85.222.172 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=1750173732; 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=hAlJYdD693dMCPqgshGz2YSTkDAS4ntCvbnIFJeTdbU=; b=Uq4fgkkEX9Ai9RoCRwORcHreNz6HMVasr93MkZOTngq4sOoWSeSPHs+5aAhaXqCLb70NhQ dkDKZq0bQ8hG33Dyya1OYFN/SW8OJxxtrq7eKg1SkAbOi0u1EllGDW3l0lSElJIg/sek4n sgxTaL/m/NcFNdKanPc7pdUf4G6ynm4= Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-7d3862646eeso352826985a.2 for ; Tue, 17 Jun 2025 08:22:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ziepe.ca; s=google; t=1750173732; x=1750778532; 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=hAlJYdD693dMCPqgshGz2YSTkDAS4ntCvbnIFJeTdbU=; b=Tp5xhT6gmdBxdalunpN0nLU+aquM2E29DWmoZn+9Q2pYN7ky4fRn+eNw+oHNZJfFoh G/n6x6Z+/bpp6sCX/+O1yugEXK4iP5dbrxAgRkQxTXcTEKb5h7AENpuGfhEidLmnczTc hTPLhRBl/TMFsF3n4PihIo5mVDU2gH7RNYci0lM2HJj0vlabj3bB5XzTF/edsoFTT4VV rKZVPvGvgBmSfBjoGRQ9BbISZ5iFr546+ViOa8UYQSZt727/1Q63vedtP0CEtAGJJlgd AlfkBtjjPOtvZG27ntDQvIqp2rwv72JItu/35AdP51d6SRNN3FixKOoFrfStg4CGq/Gd F39A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750173732; x=1750778532; 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=hAlJYdD693dMCPqgshGz2YSTkDAS4ntCvbnIFJeTdbU=; b=NlyRnKu6JzHKDNLyIE/8wAj1UGNn2tYUiCh29zKyjYhlRJYHryLlSMvyxuT8MMXQyP VWSFRmwm9JZ4x3VXrO/fF708eiKNWGyxDLpDKZhcuYCDH6xeyztKaX7X5hxaMU7FUb2r eqbZNkjBK7c79ZfjEniCSrokF77ATLeqpq/u8QqryA24WLIkM7s+zk0zWEoTB23+gEDw Nwy/6hUyHuISYeBq/ium01Fz8btqbme8tIhBE4Wk7krulHSOeJcGWqi6ePVRDVrWAuAy gTQONHlwEdYrzs5SpXwCxZMOv7TLsLSiiqrZFiOMThAXOIi1uE95bi4XUqJOL3V+cZDR rutw== X-Forwarded-Encrypted: i=1; AJvYcCWLT3l1mkyNrhP7wBqr/9OWUSsVkcHSbOj4dkH6b0mqe03YQdUqaZE/us/chGiqi5dbHZO0WmOu/A==@kvack.org X-Gm-Message-State: AOJu0YxSB9/tnuSGVIhfAb4vD9c98kGOCirF1UKUdwcjPc4nuoyPP7eU PRuJ/cySCJcJdGVMiHdAWTMonOn9c/EII3VGH5X9ZfEXcLMcoj/y6W0UR0npknSROiA= X-Gm-Gg: ASbGncvsmn+W+my/HGL3wpAUjuRXiMbNtkBIB5Sm6e58Ufe0OKdJB7lEnSNWi3uwliq M3AksT31XZNn6ocncXlsawx8YgFXSyb8/d9wObl5CtI09q+FlNXQzNI179N+D7IHdjrkzaobGXO GnY3ZQLjPWrhGfD/bDJ0/wHEtvJGKKW8RmAUSABT6lajzDPwg68wZGWTru/QiwN8ZytVr1QpX6U 1hXrg+o/BpvoGhdmZTnfcKw98e4WyBDX/Q3jDWyVNVGbtn2M4JM/egfG8RpyVBIo+5ZPM8DX4Jn CWSSWz2fRDUqoA2sRpoqBOzzL8ugy/sBJKUOqzzPolj2pIRK3ebjVOKdadg+EX95GJ1orgxNvMs bYinJX5gxW6T/koCM13i6+1L3DRbQ53ekrcHbTQ== X-Google-Smtp-Source: AGHT+IHhOv68rhuOsFIfHaN5jjUV2xZjgW6ScWH+EgGxpcNazcuKo7y9IaAPOCSULwCgT+vyOmBzwA== X-Received: by 2002:a05:620a:2989:b0:7d3:8f29:d1ac with SMTP id af79cd13be357-7d3c6c1e5f0mr2138020885a.19.1750173731683; Tue, 17 Jun 2025 08:22:11 -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 af79cd13be357-7d3b8f0b35csm660925385a.102.2025.06.17.08.22.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 08:22:11 -0700 (PDT) Received: from jgg by wakko with local (Exim 4.97) (envelope-from ) id 1uRY8Y-00000006VzD-2tNI; Tue, 17 Jun 2025 12:22:10 -0300 Date: Tue, 17 Jun 2025 12:22:10 -0300 From: Jason Gunthorpe To: David Hildenbrand Cc: lizhe.67@bytedance.com, alex.williamson@redhat.com, akpm@linux-foundation.org, peterx@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH v4 2/3] gup: introduce unpin_user_folio_dirty_locked() Message-ID: <20250617152210.GA1552699@ziepe.ca> References: <20250617041821.85555-1-lizhe.67@bytedance.com> <20250617041821.85555-3-lizhe.67@bytedance.com> <20250617134251.GA1376515@ziepe.ca> <460e16a0-c8d9-493a-b54f-2c793c969eb1@redhat.com> <21958961-259f-4520-ae60-e234383945d7@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: D14D34000E X-Rspamd-Server: rspam10 X-Stat-Signature: 1xau6hynkm6osc6xhniwui4rijfbqqi4 X-HE-Tag: 1750173732-279552 X-HE-Meta: U2FsdGVkX1+3/TtzkP0o9JBmCuCWNviLo9eTTXJ1hBzt1tQRh1QMn/z6TMT3Zj7stdO/+4QcVAd160waPZj3KCoiRWYVH0+CYrBs4nbqxD39FEO4XqMR+/Yqi/01nXq6qYafrtN5Y5I2y695pnW4yL3y/+Raz69xIY5ft4ARXqQFIITRN0/r6gqcwDSaG+KEbtSyuxJvMiuj1IVkvMoCXJtKQCnfT8UTiac8nhZW64In8f38X1Z20OucLWQZqS2e/iGypIVUgEHdYaEAVYtv+6MnN0+lsuc5BumdEdWMaDh4aQY6eIzmPTD7SwZQ5kVechLDwQKKVJP3ITioO8zfMRs4yADydPsyZH1WhWolVuPZ1JzdAqM7ZqoT6G3uUG/SMpX1hzJ5lL3RTN4hjn/AquigGe6whxqDnMLunvWBc81YC6WEvYLexGQzrL6ckPx8HyuZzi6cJ4ZmMLCQP+xWAMTOh9ZlshXjTO410HIGZW0VnmTeRBSNpPyWFTy2oaY2ykmCRUVH+JJs4yMgHbtSVYcXADueabCGugz3k31MYdnuSqwtoFEyg+6mJJeB//O1e7f3Yt+4gIA4j47G8PjKXfnTVRv1AcgrOJ2EVnocGu2+67oGAi948dWcSA9uQuptte7pQR7iiH7eY7dQf2IZuzG+nNlOL1pRCH6ycWnQ2ymhwGKD2fnYZHgLGMNsVO+1Dw+ugmQi+zflsAcXp/NPJBIal1CAU1A3vqFAJC8NlYmP/wNDjCvqb2PLymV0arIUqf+S7C4aiMnbpPnncCJBby1ottF5bziqraLI0qKrluxpitwnj35ECcXEqYEeEIoGKEg6a2KsMeb6YA51VhApRgQI5N0oG0slVsK1cdM/1DQOWhOMbs3LZ+TvY7BeQcXpJuQiYOBVbEE2AeAWYWMx9uHZRl8lPBb/oPvkr7Ka2cPYfVbRsJHYUckpNAJvZHGTTpBB8H2tXc2HmnYRVSq lkWtIC3P IkQ+ibzsfLhdRrI5AbWD5cR+ctv+k7nPbNeFr0nWbiQAAxj24090Stj1OSISl6AT5XjTZLZtn1mT1+AFymeYTdSk8EubuVZUK+XMBvFLzmbDZJIP5ngvDI1aDdMpMgbusg1SjK+A44MG5tg3RbpLUuesDnYSS9TQxmUK2CHKYGX8GnT3Z4rFnATao/JbTv/IqTqUW/HuLOfU9beH5RKT2nyq18I/EH5WIe+qIc/kVn7kH/kwqfUPTr0Q5VaNsjOhFQzNYLZwREPpCzih8CLaH+kAbhbpNSd/uoJvm9I5+mt10+pmOzNDRGSCsJU+p6xoV3rwo3jMXv8bm+lQqAjuanb6U4nLDWgR+hzAD 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 Tue, Jun 17, 2025 at 04:04:26PM +0200, David Hildenbrand wrote: > On 17.06.25 15:58, David Hildenbrand wrote: > > On 17.06.25 15:45, David Hildenbrand wrote: > > > On 17.06.25 15:42, Jason Gunthorpe wrote: > > > > On Tue, Jun 17, 2025 at 12:18:20PM +0800, lizhe.67@bytedance.com wrote: > > > > > > > > > @@ -360,12 +360,7 @@ void unpin_user_page_range_dirty_lock(struct page *page, unsigned long npages, > > > > > for (i = 0; i < npages; i += nr) { > > > > > folio = gup_folio_range_next(page, npages, i, &nr); > > > > > - if (make_dirty && !folio_test_dirty(folio)) { > > > > > - folio_lock(folio); > > > > > - folio_mark_dirty(folio); > > > > > - folio_unlock(folio); > > > > > - } > > > > > - gup_put_folio(folio, nr, FOLL_PIN); > > > > > + unpin_user_folio_dirty_locked(folio, nr, make_dirty); > > > > > } > > > > > > > > I don't think we should call an exported function here - this is a > > > > fast path for rdma and iommfd, I don't want to see it degrade to save > > > > three duplicated lines :\ > > > > > > Any way to quantify? In theory, the compiler could still optimize this > > > within the same file, no? > > > > Looking at the compiler output, I think the compile is doing exactly that. > > > > Unless my obdjump -D -S analysis skills are seriously degraded :) > > FWIW, while already looking at this, even before this change, the compiler > does not inline gup_put_folio() into this function, which is a bit > unexpected. Weird, but I would not expect this as a general rule, not sure we should rely on it. I would say exported function should not get automatically inlined. That throws all the kprobes into chaos :\ BTW, why can't the other patches in this series just use unpin_user_page_range_dirty_lock? The way this stuff is supposed to work is to combine adjacent physical addresses and then invoke unpin_user_page_range_dirty_lock() on the start page of the physical range. This is why we have the gup_folio_range_next() which does the segmentation in an efficient way. Combining adjacent physical is basically free math. Segmenting to folios in the vfio side doesn't make a lot of sense, IMHO. Jason