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 48671C2BD09 for ; Thu, 27 Jun 2024 23:52:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B87FD6B00A7; Thu, 27 Jun 2024 19:52:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B385C6B00A8; Thu, 27 Jun 2024 19:52:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9D8196B00A9; Thu, 27 Jun 2024 19:52:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 7E0266B00A7 for ; Thu, 27 Jun 2024 19:52:12 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 2DE22C0171 for ; Thu, 27 Jun 2024 23:52:12 +0000 (UTC) X-FDA: 82278319704.14.60CD424 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) by imf09.hostedemail.com (Postfix) with ESMTP id 5790C140006 for ; Thu, 27 Jun 2024 23:52:10 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ayhr8+s7; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf09.hostedemail.com: domain of shy828301@gmail.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=shy828301@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719532310; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Ks8Ee873v/YWDfaAZSbPbf4GZ92SmbzoFMAWI2lsj4Q=; b=JZSnQgSnlhJPQ3/E9mOpy1Z9k242/EU0pq6Srrt2aAIDMk6QcDamcKRWfYZcg7hs7mdACg sqm8mviH+8RQBk1sPv4itAH8gHb0498bT/HIrT/01+TD8jCZFPd32sVI3NXkpcvN4FCA37 qj0IMLLzyld085f7x2CRmgNNcznbgf4= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719532310; a=rsa-sha256; cv=none; b=vl7KGFbXUYamcrkiPluREPQHBgxQYM/wxChzeSK9cXRpXjZs/DwnriBRO7Ti6DFb3azHyC PDSW0CALkzjGaFivn4Ka8h5bWgzjqCA9EaoKBVOYdXYf1lC/ZibvMzGgG4TVZZckZaIorg LoL/wKK//VGgO4mgQS83e/UNgI22DaM= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Ayhr8+s7; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf09.hostedemail.com: domain of shy828301@gmail.com designates 209.85.208.44 as permitted sender) smtp.mailfrom=shy828301@gmail.com Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-57cbc2a2496so65840a12.0 for ; Thu, 27 Jun 2024 16:52:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1719532329; x=1720137129; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Ks8Ee873v/YWDfaAZSbPbf4GZ92SmbzoFMAWI2lsj4Q=; b=Ayhr8+s75a2epNlfpVC20hhsgc87UGis6kKwZWnSk/8Nd0B8IJSD7YUlb1VB3jDzeB X8HinjwY5C2QHzMnFOytMwechzyHtWdFs8ujG7/CAEVBoeLVj4U3IXPSJBbrNex263rs AOkOFj95kID0M68zYMCpXFk/Prqg2LISVrY54alGN9WBzYFV7s++GP+DmVj4r+YjgyOZ mCp+5C/4M1Qq5/D6aInx7ol6D+1WDNzIwZ/UjeCvq+M+YivHbXB2j4PtEzIag4Gog856 OSi3BphpvDGIL03Vi11iXkrxdz/kEYzxzXHaqk648moYqTnFbysWlyjbWrromJNweCiX SogQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719532329; x=1720137129; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ks8Ee873v/YWDfaAZSbPbf4GZ92SmbzoFMAWI2lsj4Q=; b=pwsQHZ1zbqon5liWqb5cmWGE306QiWowTTld1nCrW0uc2JsCTbW0QkRPk4rWpOwTHH MmVXtQIJllOvcsSbVopRV1WXUMcwKQ1HBcp1ynBPR+kMzJGVNAsLsuxlPx+OhhaxRUzf LXyeOVZbpORHx3bmiVPStMVQj+gMaGgv3cCrgNh85le+3Z9xyjmm0f0jYWJrndeP0Ssw Z6mG33z1AaE8xqpsTJ6DrdQLGsH2+NGSJmCUT8/NO5CfqqArhWOjk5GUKF4w0VT6fbGU FBJWW4hK6KG1UP8joJ5urmynqlM2valDblWicD+fnBgKvEsAe866PD4/0ZJNeHXmrqjF Z8uQ== X-Forwarded-Encrypted: i=1; AJvYcCU8/Fd3PRfsMkUsQlX+Ou/iWxMV2cg1q885pStMbtWtktwT1XJmg/HPxF3cuYWCK5nkBmaEx+kwe6cZxRyGAdilt/0= X-Gm-Message-State: AOJu0YywZB/cACjaPkLsMgN6sJoJJm479/KAPf8LT4k+geGKnJeAF2uY e8meyHv65XFsDMOoMNH2w4y8yXdywAaQYNQ+Fh6MBkdUlMpJHEJq3yBubxgfDKQUhQHWoLhjEF9 Ck023W1+6pHccY5o1uXsoQM94IJ0= X-Google-Smtp-Source: AGHT+IEIbNWJLrlBds5DDA5KvyeLOgGoa5YaIEliXBuL3Tt1oSxXNhF1Ocn8nV8jTme0NtiwPywLvN7eTEdQ4CUuh2w= X-Received: by 2002:a17:907:cbc7:b0:a72:44d8:3051 with SMTP id a640c23a62f3a-a727f6678a5mr625278966b.16.1719532328655; Thu, 27 Jun 2024 16:52:08 -0700 (PDT) MIME-Version: 1.0 References: <20240627231601.1713119-1-yang@os.amperecomputing.com> <20240627164240.47ae4e1d0e7b1ddb11aedaf3@linux-foundation.org> In-Reply-To: <20240627164240.47ae4e1d0e7b1ddb11aedaf3@linux-foundation.org> From: Yang Shi Date: Thu, 27 Jun 2024 16:51:56 -0700 Message-ID: Subject: Re: [v2 linus-tree PATCH] mm: gup: do not call try_grab_folio() in slow path To: Andrew Morton Cc: Yang Shi , peterx@redhat.com, yangge1116@126.com, david@redhat.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Vivek Kasireddy Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 5790C140006 X-Stat-Signature: 4ta4rxiztc9pf8ntb4x8ghwwz1ufjyme X-Rspam-User: X-HE-Tag: 1719532330-887670 X-HE-Meta: U2FsdGVkX19UJeKLz2J3xAX1KlovcNewrcjMB2QUXaQoIhsb6/hdnivry7zzGEcxJ1dD1Ekj7CwO6EC2RyqIpupQJAUm3pEXVC5NlhCj1gyrxwCg9Hambilq4bWbncTdOyo/rSFNksZgiolTxmZS/hB8TQG7un69PpgfNyK82ffmcWYUO0pmTIC88AM/agROX3oD3LD1xkzTslB6cr9R0MOaxfXTGXN++EtoyDXPNopgGcZq0vtVXOe/S/IT7hQXUrzb0CUS0XiWrSKDiq8gDkSHM93oGE44vclVeHobGbBSVbyJFQUehkybPUIdCiF3cuKjCvNahcCIcQ1afqdWUk3bAY5DHWS+bSK83IrIZkVrGhTZBLcIRRXysP9XoNGbPA+4Uz8mJQnWaxWTPBff4SU4iw86EIFkVj2vszvmCWO83VBKfVkT7YJD1Ojayf+0odkI0O2zGumuB2Ud7KKrSUQj4OSRAqrC9Gu0oNymtMStDwROBYcbqwk1V+4Wn3HC8dUNWm5uUGFvClglkPbOpF4oIOGe8By/hV1PPwe2UCgeeRNbU0vSH+3LqH9EunUPdRqCF6EDBJ3QN/QurZ3RyKyU4UeZEYDz1h7rRnI9GnJcg+Fg/FwUuzPv2KyLgoP+CrR/A9YxwkD92Ne2w0/RNLMV96ovOYbRUAmKw31R+fJ3pSDpS940H/zfoLO5/K8P72a4LR44Ugm9Vl6mpUXTyiZuGVOob5fv93p2ki3HP40RFLnBoJA8G+kVXNH9sdXJo4+YLjIPbQTNJGHsF/nS7agFScmedk7IkU8JZzLJHCyPXc7yyal8n3gl2w4PUCv1fFgZsM7IQ6hX2mcCFczKA2Dx+w361E6hwM0Y3PpqwTHiv2tTlUhfW3kvv2hTafJ76u5i1/jcq5lsPAPsLwqnLvXr0Nnhn2dr4yz5INcEgmCz/PMQa3BpKa6JxwX0QMqoJFL8aC8u7hvEwsU3Var fCm/UzaP rqpmikoqU/2ptG3uKq0+oFHj8Ofx9ih6BQvG4QwM9hwWeBZkdKqv2Zf9XikqYkNFu6i+75ZywmUNqq8M20cw6tRwFKq34qVGPB4ttlQpipg7twhCxD69onvjic+dnJ5Uc/7iuo8t5HUoqZX9CtKinijfvaGLKxNUCxgeakgKDgd597Pr06v9T8lONpJ2wNEIns0MR1PQINbfJNfcEIxaIa6tk/2b9ecvoKwuDkEuRUkogTh4krFFtFZrwLC+Z5HK7YkXs+MpE0FzPIK6ab0rE+D5OTTohUUl+nzaJBWP4ADGDAtcKTuqnZxFw+Dhv3qZELYRUAKiDT3tz4rvPtvnPr9cUBiwXMj0ya51H7WE8vhuS/UvMOuf5euFFm7hj26KJLEEn2fV6mz4ZBSjog4Y1d439wBpeFsUWTdgVPx5thbSPlIlDF2dWkWRbI+ES0DawumAFB1AvyOr5/aY= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000174, 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 Thu, Jun 27, 2024 at 4:42=E2=80=AFPM Andrew Morton wrote: > > On Thu, 27 Jun 2024 16:16:01 -0700 Yang Shi = wrote: > > > The try_grab_folio() is supposed to be used in fast path and it elevate= s > > folio refcount by using add ref unless zero. We are guaranteed to have > > at least one stable reference in slow path, so the simple atomic add > > could be used. The performance difference should be trivial, but the > > misuse may be confusing and misleading. > > > > In another thread [1] a kernel warning was reported when pinning folio > > in CMA memory when launching SEV virtual machine. The splat looks like= : > > > > [ 464.325306] WARNING: CPU: 13 PID: 6734 at mm/gup.c:1313 __get_user_p= ages+0x423/0x520 > > [ 464.325464] CPU: 13 PID: 6734 Comm: qemu-kvm Kdump: loaded Not taint= ed 6.6.33+ #6 > > [ 464.325477] RIP: 0010:__get_user_pages+0x423/0x520 > > [ 464.325515] Call Trace: > > [ 464.325520] > > [ 464.325523] ? __get_user_pages+0x423/0x520 > > [ 464.325528] ? __warn+0x81/0x130 > > [ 464.325536] ? __get_user_pages+0x423/0x520 > > [ 464.325541] ? report_bug+0x171/0x1a0 > > [ 464.325549] ? handle_bug+0x3c/0x70 > > [ 464.325554] ? exc_invalid_op+0x17/0x70 > > [ 464.325558] ? asm_exc_invalid_op+0x1a/0x20 > > [ 464.325567] ? __get_user_pages+0x423/0x520 > > [ 464.325575] __gup_longterm_locked+0x212/0x7a0 > > [ 464.325583] internal_get_user_pages_fast+0xfb/0x190 > > [ 464.325590] pin_user_pages_fast+0x47/0x60 > > [ 464.325598] sev_pin_memory+0xca/0x170 [kvm_amd] > > [ 464.325616] sev_mem_enc_register_region+0x81/0x130 [kvm_amd] > > > > Per the analysis done by yangge, when starting the SEV virtual machine, > > it will call pin_user_pages_fast(..., FOLL_LONGTERM, ...) to pin the > > memory. But the page is in CMA area, so fast GUP will fail then > > fallback to the slow path due to the longterm pinnalbe check in > > try_grab_folio(). > > The slow path will try to pin the pages then migrate them out of CMA > > area. But the slow path also uses try_grab_folio() to pin the page, > > it will also fail due to the same check then the above warning > > is triggered. > > > > The remainder of mm-unstable actually applies OK on top of this. > > I applied the below as a fixup to Vivek's "mm/gup: introduce > memfd_pin_folios() for pinning memfd folios". After this, your v1 > patch reverts cleanly. Thanks for taking care of this. Yeah, it is not bad. I actually removed the memfd hunk then the patch can be applied to Linus's tree cleanly. > > --- a/mm/gup.c~mm-gup-introduce-memfd_pin_folios-for-pinning-memfd-folios= -fix > +++ a/mm/gup.c > @@ -3856,14 +3856,15 @@ long memfd_pin_folios(struct file *memfd > next_idx !=3D folio_index(fbatch.foli= os[i])) > continue; > > - folio =3D try_grab_folio(&fbatch.folios[i= ]->page, > - 1, FOLL_PIN); > - if (!folio) { > + if (try_grab_folio(fbatch.folios[i], > + 1, FOLL_PIN)) { > folio_batch_release(&fbatch); > ret =3D -EINVAL; > goto err; > } > > + folio =3D fbatch.folios[i]; > + > if (nr_folios =3D=3D 0) > *offset =3D offset_in_folio(folio= , start); > > _ > > >