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 168FCE7719C for ; Fri, 10 Jan 2025 22:37:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6D7CB6B00AD; Fri, 10 Jan 2025 17:37:46 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 6876D6B00AE; Fri, 10 Jan 2025 17:37:46 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 54ECF6B00AF; Fri, 10 Jan 2025 17:37:46 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 314CC6B00AD for ; Fri, 10 Jan 2025 17:37:46 -0500 (EST) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id D99981A0F0A for ; Fri, 10 Jan 2025 22:37:45 +0000 (UTC) X-FDA: 82993005690.07.0CB7A88 Received: from mail-qt1-f174.google.com (mail-qt1-f174.google.com [209.85.160.174]) by imf25.hostedemail.com (Postfix) with ESMTP id 0D9E7A0003 for ; Fri, 10 Jan 2025 22:37:43 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=RLZRCbyu; spf=pass (imf25.hostedemail.com: domain of surenb@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736548664; 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=VCsCbt/F7o+7bUFtMHgt+4W8wSxsiag28o1iJ0lUURU=; b=NI397lZF6I+ar3yN8CQynPlVLqO45rAuxhLLJaD+Qoj1uxvqP2/ZRtiaqq7yofQEdQpbT8 fto8j//Dy7P98Hpa9+RFVK2YeJ7BGdFl0Agh+bdppZ/PuC6DAKggz9+an7dBoCXqyxSm0A 5a2G/6QB15m5DrVJgsoY1gR+N82aihY= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736548664; a=rsa-sha256; cv=none; b=0nwEWMYG9Jm3r0MVu91mDffgmpEJkewahKHxg11Y9+ViSyk4H73T1KOBw0kmPGEPxSiCw9 ALXdXwbUrduWjyza+XwRdRb3Ecxed0xHsBoS4xgu++VXiO/lIBehpNJNYJUsZ/sNOPC/gx JJ12Fz6gZF6EwpNnNvyaFOtoBPb8qRk= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=RLZRCbyu; spf=pass (imf25.hostedemail.com: domain of surenb@google.com designates 209.85.160.174 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com Received: by mail-qt1-f174.google.com with SMTP id d75a77b69052e-4679b5c66d0so67641cf.1 for ; Fri, 10 Jan 2025 14:37:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736548663; x=1737153463; 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=VCsCbt/F7o+7bUFtMHgt+4W8wSxsiag28o1iJ0lUURU=; b=RLZRCbyuPHc5/97CvNCmZMq0I8GHcb7KtrwG+o/S4WGEbljGMCV9ezolbMlU+Ah8Xl 0yrr6H8FpO6eybt0bKwMb+zIEpMMb8Mf2ka4NrlYJuOKk3JVz/OUlajwsarcNUCI5Oxw WweHjOxymkUg3v0itwxwCVRVxMVSmx9tBKyl37XciROGudbWS6yZQoRLhdj/WZ7H6YYa aSqgl7149S+S+qh6uJxpQ4WWKJ409BxM4Pb7rRq+8QoHcEz3JWsW+osbwTvQeU+VBEn3 +g6+EJ6bX0VFWycW4cqEohhet2ovwxJTLh0oV/ZKFbw70qiwx8hxzIrqXR2ywKxnKxva W7Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736548663; x=1737153463; 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=VCsCbt/F7o+7bUFtMHgt+4W8wSxsiag28o1iJ0lUURU=; b=eRFMjSOgD4rBwl6r5xd6Np4gzrpX/SmYmTWT9UnDfdgYdtplBqWH7rsb+jPcMWecBw hDsT1aphzX6Ik0UHbQ3GFeGnyw2lUtbBv43kmJEhzqqtaUchWL7HSwyiTt/w3Krz5RT8 /7B+lMKwcguWJyoudEEeLocLsgy67MJSaAzqY8pAxsub/0/MEwasVjvSHIANNYyurkwV F+Q/Lj73as/jlVzKeAeHI8cQqbzD+sI05QxJU3bQqWyIFdDXBX9U5sKWJm9VWndXEXZs J3fCRuvv6RBFJf03r88vFmVfJRHqR/aoddLx13Ogg+fmTXl7FkM2kwF5vzeJnpmyWiDE 4eEA== X-Forwarded-Encrypted: i=1; AJvYcCWJ0vm+WPsLyLU4feDr6KaTik5tf3BKQGJzIkUa3WiXj24CnMupsieuRptcQbFoPELIXlYJCUsQaA==@kvack.org X-Gm-Message-State: AOJu0Yyo6Ad+5R446N6dpZZJZmlTEb5PEXIcFUqTEl+2sy8kxkVKNXIj w6N58nqjX9iVCRXzsDYXqxlBrnNjizpshpLrNUscAQDZRRgNOm5RplF1dYWs7IdGzvM3cOr3J11 FIMnP9XA/ahWkr8dR5f3H4tn9Ed7F3l7R/K0W X-Gm-Gg: ASbGncuRTf7m2XROGSXcUIdT45YQJCfF2+9gk/zyGaw8LgYDzOFq1guqBFHI3RqfoJL goX06zHF6VQ4QK8LDtOk8G/Q0W2iG7GXzXjq48A== X-Google-Smtp-Source: AGHT+IE9TbOBUXKwhFL7KHGpiY4kYROhhORMvC39gdiYzTQrJx+eCn1R1EPTlvn2VmTqsz9si8WbaeNOdnU1/fWc6Dg= X-Received: by 2002:a05:622a:4006:b0:467:86b4:4e92 with SMTP id d75a77b69052e-46c89deb0camr4751741cf.29.1736548662891; Fri, 10 Jan 2025 14:37:42 -0800 (PST) MIME-Version: 1.0 References: <20250109023025.2242447-1-surenb@google.com> <20250109023025.2242447-12-surenb@google.com> <95e9d80e-6c19-4a1f-9c21-307006858dff@suse.cz> In-Reply-To: From: Suren Baghdasaryan Date: Fri, 10 Jan 2025 14:37:31 -0800 X-Gm-Features: AbW1kvbCOp8K3P864gUWqlw7OPO8CAY5GJyIaJJ198lrylsF9s56o0p40lcVHsk Message-ID: Subject: Re: [PATCH v8 11/16] mm: replace vm_lock and detached flag with a reference count To: Vlastimil Babka Cc: akpm@linux-foundation.org, peterz@infradead.org, willy@infradead.org, liam.howlett@oracle.com, lorenzo.stoakes@oracle.com, mhocko@suse.com, hannes@cmpxchg.org, mjguzik@gmail.com, oliver.sang@intel.com, mgorman@techsingularity.net, david@redhat.com, peterx@redhat.com, oleg@redhat.com, dave@stgolabs.net, paulmck@kernel.org, brauner@kernel.org, dhowells@redhat.com, hdanton@sina.com, hughd@google.com, lokeshgidra@google.com, minchan@google.com, jannh@google.com, shakeel.butt@linux.dev, souravpanda@google.com, pasha.tatashin@soleen.com, klarasmodin@gmail.com, richard.weiyang@gmail.com, corbet@lwn.net, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@android.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 0D9E7A0003 X-Stat-Signature: x84tee8c88g8h15hhaj4wmc9dfybg9ib X-Rspam-User: X-HE-Tag: 1736548663-78390 X-HE-Meta: U2FsdGVkX18IZQglVYQDpytquJj5YpsdlSgTu4EMTO2jYmLZnB1dItdQpCtErLzv7aF4K/HoylvxRHSbbrWUvDqekiYG+VE/vzyJzQFLUjJ+Xj01ulXq7Dsx39UJK/wpGiyeElwLt/T74ha04L25QKjDXwMVFsyw4A1vcj9D6GUZwGO2BHXupGDzVVPZSUvHFHR0IvOEyuNAUl2X/UBD0Lie4iJ/W0bpLskbKEDqne/juWu2KWZd+0Zi60w1Nyx0MMofikeFf8NO/EAdAsEJeqrPp9jAZF2nLfYQbrNnpL2VhTwe3inaXukKN+oXyVb7sA6KlaX9qGBIPU6CEbiCqBD3kGozuKwK03uk6sTsQUcvfcBLyWWzQlTh+6/nkz1AFND1nMqa/SnXCWUzqYnps16SoGd77wFGkIAQ8oVaL3ptGhVAcK0xhI/B3d/nztuMi1jyiP8qVB/4nNEjDbkYksK4tArp6dRKX3UA5o7ZllI1k/IbXyJ/8DYg8aM7JrB6brBihfVJrWNsDfXtdu14UNaqJgXoYnW3WeX9JXKnh2yD0A9g+wm4kyxnvHnUYmlslHxkXv2EJxiuIM6UQZErQux0E62ikMRi6iAmJTbjIDKAoPUO5AK+hQIlPmieZsvQldlm+QyW14I1NVjZGl+26ERozRVo8s4Kt9B5wvszZaSBqVJSjRR8PuyW5ey8Hwf6x0JuxIG7eMhceQitHezu4Z1YNrJLb+ouqhmOWujfzJqtupK3YXQh54em76uK+c/RoKhIopwJF6h5tUwUutkoSQuqw+GlCIc98kwgwGSk2M/Ad8J55L0FigT9zRbDjBnC/W/08ka6G28+OGXaHaFbJrBIExPjv0t66dl/GRbdpzaPZhHwC4L6ryVTN7REtMPAybG8K4MuxJDDA0KB3LmLmRV7l/zBBdex3QmsXPbXn1S0VrxB1nIqKcpPfgOCgmMLVxRzH33p19dh7cbEkhg o7CNlGoh AmNPDimAh6r1z0wpN0/WYdX4cTonUyBhBWbhfUgevwvFnrk3D+MINv3B3OyRuWAIbJNV+vdk0Vg0n9RDMe653RuN8rvcxMwTHsVK9eEulSYMoRtqcVB3lTEGUltj0FNz7gFjnWGblkbZ1Ta2nlyuS6mYV+zBrXh2INoqU3zWDYhEqkfHhJRcck1jHPaMyrqzHQYSrChaOIihAn3zpDlGny3oEnSeMme7zEH40wRYHj3HnAXv0fn2yylDhKiXnWTmEXh9lbclB2Vmxzrx62rJ85q8yhUOpKstoHVHYMa1y+F6E7GHAc5knkf428w== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000011, 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 Fri, Jan 10, 2025 at 2:26=E2=80=AFPM Vlastimil Babka wr= ote: > > On 1/10/25 16:56, Suren Baghdasaryan wrote: > >> > --- a/mm/memory.c > >> > +++ b/mm/memory.c > >> > @@ -6370,9 +6370,41 @@ struct vm_area_struct *lock_mm_and_find_vma(s= truct mm_struct *mm, > >> > #endif > >> > > >> > #ifdef CONFIG_PER_VMA_LOCK > >> > +static inline bool __vma_enter_locked(struct vm_area_struct *vma, u= nsigned int tgt_refcnt) > >> > +{ > >> > + /* > >> > + * If vma is detached then only vma_mark_attached() can raise = the > >> > + * vm_refcnt. mmap_write_lock prevents racing with vma_mark_at= tached(). > >> > + */ > >> > + if (!refcount_add_not_zero(VMA_LOCK_OFFSET, &vma->vm_refcnt)) > >> > + return false; > >> > + > >> > + rwsem_acquire(&vma->vmlock_dep_map, 0, 0, _RET_IP_); > >> > + rcuwait_wait_event(&vma->vm_mm->vma_writer_wait, > >> > + refcount_read(&vma->vm_refcnt) =3D=3D tgt_refcnt, > >> > + TASK_UNINTERRUPTIBLE); > >> > + lock_acquired(&vma->vmlock_dep_map, _RET_IP_); > >> > + > >> > + return true; > >> > +} > >> > + > >> > +static inline void __vma_exit_locked(struct vm_area_struct *vma, bo= ol *detached) > >> > +{ > >> > + *detached =3D refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_= refcnt); > >> > + rwsem_release(&vma->vmlock_dep_map, _RET_IP_); > >> > +} > >> > + > >> > void __vma_start_write(struct vm_area_struct *vma, unsigned int mm_= lock_seq) > >> > { > >> > - down_write(&vma->vm_lock.lock); > >> > + bool locked; > >> > + > >> > + /* > >> > + * __vma_enter_locked() returns false immediately if the vma i= s not > >> > + * attached, otherwise it waits until refcnt is (VMA_LOCK_OFFS= ET + 1) > >> > + * indicating that vma is attached with no readers. > >> > + */ > >> > + locked =3D __vma_enter_locked(vma, VMA_LOCK_OFFSET + 1); > >> > >> Wonder if it would be slightly better if tgt_refcount was just 1 (or 0 > >> below in vma_mark_detached()) and the VMA_LOCK_OFFSET added to it in > >> __vma_enter_locked() itself as it's the one adding it in the first pla= ce. > > > > Well, it won't be called tgt_refcount then. Maybe "bool vma_attached" > > and inside __vma_enter_locked() we do: > > > > unsigned int tgt_refcnt =3D VMA_LOCK_OFFSET + vma_attached ? 1 : 0; > > > > Is that better? > > Yeah I think so as it centralizes the target refcount logic into a single > place __vma_enter_locked(). > Hm but then it's weird that __vma_start_write() would set vma_attached to > true and yet it handles also a case where it's not attached. Ah, good point. > Maybe call the parameter "detaching" and switch the 0 and 1? Yes, that would be less confusing. Thanks for the suggestion, I'll use it.