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 F22D8E77188 for ; Mon, 6 Jan 2025 17:26:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 81EEF6B0083; Mon, 6 Jan 2025 12:26:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 7A6856B0088; Mon, 6 Jan 2025 12:26:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 647076B0089; Mon, 6 Jan 2025 12:26:36 -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 42A496B0083 for ; Mon, 6 Jan 2025 12:26:36 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id DBA3480187 for ; Mon, 6 Jan 2025 17:26:35 +0000 (UTC) X-FDA: 82977706350.18.365FAAB Received: from mail-qt1-f181.google.com (mail-qt1-f181.google.com [209.85.160.181]) by imf08.hostedemail.com (Postfix) with ESMTP id 5C812160033 for ; Mon, 6 Jan 2025 17:26:30 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="B5WL/NJx"; spf=pass (imf08.hostedemail.com: domain of surenb@google.com designates 209.85.160.181 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=1736184390; 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=T6rxXklF4dZRAeJ2Ffa+a+2xKsUwbq1AwgjfUqcTc6Y=; b=3PIO2CuhIHTVe75aYesTHm4daPIQ7Dcdwkp6PTfOdQVvw6aWhozbSoM/SusGh/yzc9bnSS WRycPNp+HZG9KsyJRLK3uuYKCtbI142UXIvyFOJCx6HTKomZmVZsY+Yj+H8W0YqV+aeZC/ LbLNMvTvyA1SD52+5yeRPmtBkqJoR4M= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b="B5WL/NJx"; spf=pass (imf08.hostedemail.com: domain of surenb@google.com designates 209.85.160.181 as permitted sender) smtp.mailfrom=surenb@google.com; dmarc=pass (policy=reject) header.from=google.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736184390; a=rsa-sha256; cv=none; b=KU7EIlc5YyQwYWyEJS3DH3WtNR31czRl4wkUmFzWFti97whJjJQslQ5mmeTnSQ9rh3i/ej AyWrR3DTm0WcfM1pHiQ9vmakRHZmnAK533dTYTyo0jodPzQ8AlXvgqG5xmb7ca0kPXewEq Oe8hpal3iE1pU33f3coPHKa7XaIQhz8= Received: by mail-qt1-f181.google.com with SMTP id d75a77b69052e-467896541e1so514031cf.0 for ; Mon, 06 Jan 2025 09:26:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1736184389; x=1736789189; 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=T6rxXklF4dZRAeJ2Ffa+a+2xKsUwbq1AwgjfUqcTc6Y=; b=B5WL/NJxPhvbF3C0DzIcGK4wHIe5CL9jsc2qN72Zjth73//IsYo9PGt3EyKFHrxUZV zfSoiOtjBybAxQVeq3tkcTZlFHDrk4VhK5J5rqeeAS4Kz31wZl72vOA2DOzX7vT6DR+y 9orPthTms7pPqs7kM7ZYuhOpPV+I92PsrcYToA66IqlvoM8oCt883UG36Ss02SacRniW DsLanWIN1F240j43UtogNeikjyBHc1xOM7rV+MdSmZyIBWztIVaGkzI1JgYsbRQ/hVtC WPgl5NMFVZtB1QJrqkIpCzhkjMjBJnOn9vq+GoFK6u+fr30nDrz2JKddkANdhsetDjMw B37Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736184389; x=1736789189; 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=T6rxXklF4dZRAeJ2Ffa+a+2xKsUwbq1AwgjfUqcTc6Y=; b=slcvYE4gZ/nNBmI4Mu61hvBCn7pqcg8eHrhwQqSh6L4p72LSu+NtQWEIXMi/NqXt+/ Rg1BLEh5fsZrsas2Hrt0rz37KwiHTtvvKB1z4uLfYEj2Wf0KWjk5IFMVnj/S1z1+8xLY BCLNEQv6uvGPN/xaClUolrUdy1wu3y0jIo2ZWtyO6yTMbXhcbToW6VooQyyg4vOhJqh6 9qxUu2NeQ2pIWSSE4fyMiHfAKiXexpnsMMigvxOHaxH0u4gGUKQoRGUaeDY1jfYrxSx/ qGIFEZlEeCzAXL/Mc9lGuGU3e6LSBJ9EwiB3fxwhrH66nTxI4qS9HhxdZXMEaEXvY37Q ArZw== X-Forwarded-Encrypted: i=1; AJvYcCUBVKisgUetq9+aAGMi/ms2IaXtBZBCAVCONq/b4Be5m26mxIGSmqsANCDV3hPRlES6TcjYbE5WRQ==@kvack.org X-Gm-Message-State: AOJu0Yx3Fm+7D8O1KpDH4Zyf5yvTyv+nZF7Xwoldk8ywp/33xFJ5RTRV AY7ri3k5F9N8hQPW2Mmvwej7y45Q6XxDiKfPUmVb5eZ5+qlOlXws5mrVto0tQp+77Sh2vw9gilg oIZB11zqQz2PWpPVj1y8xvMkL1/kV/yT8ryCI X-Gm-Gg: ASbGncvVUH845WaLwaf9DbvyT3r1OmyFldU67u+ysIMxDytgIPlAQFOjuL/YMIvQa9H Z4UAH0BKAKwbT7Zai9x1zvYDripIL0EZwlfLWYg== X-Google-Smtp-Source: AGHT+IFJCjq3wjm9kRCvwm8UoVMoNTKlObb/EWc2On4aKjNnEpuElJqH1BI9wHN48IrRIzMGVNSUTYt+Hm5YgR/7v/8= X-Received: by 2002:ac8:5a0a:0:b0:467:7ef7:88a3 with SMTP id d75a77b69052e-46b1fb09a9dmr7572121cf.16.1736184389095; Mon, 06 Jan 2025 09:26:29 -0800 (PST) MIME-Version: 1.0 References: <20241226170710.1159679-1-surenb@google.com> <20241226170710.1159679-13-surenb@google.com> <20250106003821.3gtfxq33fqj4wm5b@master> In-Reply-To: <20250106003821.3gtfxq33fqj4wm5b@master> From: Suren Baghdasaryan Date: Mon, 6 Jan 2025 09:26:18 -0800 X-Gm-Features: AbW1kvbaXcBoTX_mpSsAlcDCw3o53cgg9-NCBUyOQF6QTVAS9PZy6MM4RcwFoVw Message-ID: Subject: Re: [PATCH v7 12/17] mm: replace vm_lock and detached flag with a reference count To: Wei Yang Cc: akpm@linux-foundation.org, peterz@infradead.org, willy@infradead.org, liam.howlett@oracle.com, lorenzo.stoakes@oracle.com, mhocko@suse.com, vbabka@suse.cz, 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, 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-Queue-Id: 5C812160033 X-Rspamd-Server: rspam12 X-Stat-Signature: h3t84hquqjm4mxx45f3bqih4q6foq9nw X-Rspam-User: X-HE-Tag: 1736184390-948587 X-HE-Meta: U2FsdGVkX1+RpjnCrlcb13eY0loiwyh5DFI2GOIzxSopPAw2OfYNQDfYrsAoKeCThgx4Hb+Vimx9T9WNdgums3reaLA/lRIWBz+V0g7GJTn59TfZni/UD1by64bOsWkf9rt9kDdEigWipnqTRPbD4J7C6LkOJEf4go/3mufjqtzy/0mHSX8g5t7iHmym0dR6BFgbSkoh/y484sxtc8jPOMrYLXIJQk9Rbyp0OgowhoNoDiEx/i7ITA7irbeTk4zwAe+nfLyARbvZpjHgtHDfl/+bekTR/8KC6eMckKFitrPH3O39eYWEHUQdDn5zT8DwVtcar+Q9CJ6PWboO9N3KVpjzIhFKZNvHhDW6PceTmXmOlOYjo+8WDkgDPVVlzqaDNnvAWbL6AK8e2xHjG2Tws/GNJgB6NpYBJuK9B0j/NhAkL9/lPeAZN6Yy40vyPzqfSbF48yWg97MCXr4nW+Ku0IkRWLRMuYHpjUdvq6uM1VOGpgbwLuQjbP8/epmx/t+QeuqRYHWyGZeTfWT4w3K4ZI4UegkHcOvL9gFAuoGJ0+Bnd71zJWSz5ZZb45RD0MSqCV3IbqwH5NFtzpNfJI2N8iXYE8vDog5fjGN1xlRw9eQQY5GGPfIXuvb0xzWGuNdxKyBsqajeksVastcgSJAApjV/rMF7w2JWZm/I6qvzqwZV9dk7nAyBD5LAaeUwm6yMYQH02GzcxYQriyfcgiDdlaBPsqkxbYtU9AKLR/2O5+zDEE9OBpID7yHFO6RHWMSvppcBnAj30YhBF6pr53QLDLFBMFBwwtALXXsMdcqB5HG8c5mWgJ1xLcN9/bNhjcpIqoyDWZkjFVkeYDI0cuH3akzBGaz3eN+mBL5T/ATcPGy2p/mUpnglGEquB63UynmOFLSNk399rwvcDCKJaKWUNnSmjs+6ulWorzZhWg+aNQrT/p7eCnMJmcJwWS7paA7R2rjAlXRLLJbJ9S8T0uF 6UjmsB92 f6s0dmaZCzbkwD1QFGznQKIVDmMqcDN3iFukB5bHoexulN0JECSXhUMSWzsfJTA/Z+ri+JZVdl54Qg13eWjQ5KCylcjAg1F9ylNNUnLW2ta4k4OqQBvfHHGyXRBY0K6EQLuVKCtEso/M7prp0vfujagNpwuqZqahr3+/XKPhqi8oProQriGq2ZNwjgfKWPR0EGPvOFSacUy1cK/ewrofLsSmYlipJr2Rfmk057iTP+g9lVAGoMrO7KD6BTQ4PiDdn1OWIG9oLbeD63nTIMaHvc5cr7hL/w22+xmaaXtW36lDNEgT+GDmWwKBJoGMJ2zuHBaWfs7LLZpfSQnZJHKlKu3dbQg== 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 Sun, Jan 5, 2025 at 4:38=E2=80=AFPM Wei Yang = wrote: > > On Thu, Dec 26, 2024 at 09:07:04AM -0800, Suren Baghdasaryan wrote: > [...] > > /* > > * Try to read-lock a vma. The function is allowed to occasionally yiel= d false > > * locked result to avoid performance overhead, in which case we fall b= ack to > >@@ -710,6 +733,8 @@ static inline void vma_lock_init(struct vm_area_stru= ct *vma) > > */ > > static inline bool vma_start_read(struct vm_area_struct *vma) > > { > >+ int oldcnt; > >+ > > /* > > * Check before locking. A race might cause false locked result. > > * We can use READ_ONCE() for the mm_lock_seq here, and don't nee= d > >@@ -720,13 +745,20 @@ static inline bool vma_start_read(struct vm_area_s= truct *vma) > > if (READ_ONCE(vma->vm_lock_seq) =3D=3D READ_ONCE(vma->vm_mm->mm_l= ock_seq.sequence)) > > return false; > > > >- if (unlikely(down_read_trylock(&vma->vm_lock.lock) =3D=3D 0)) > >+ > >+ rwsem_acquire_read(&vma->vmlock_dep_map, 0, 0, _RET_IP_); > >+ /* Limit at VMA_REF_LIMIT to leave one count for a writer */ > >+ if (unlikely(!__refcount_inc_not_zero_limited(&vma->vm_refcnt, &o= ldcnt, > >+ VMA_REF_LIMIT))) { > >+ rwsem_release(&vma->vmlock_dep_map, _RET_IP_); > > return false; > >+ } > >+ lock_acquired(&vma->vmlock_dep_map, _RET_IP_); > > > > /* > >- * Overflow might produce false locked result. > >+ * Overflow of vm_lock_seq/mm_lock_seq might produce false locked= result. > > * False unlocked result is impossible because we modify and chec= k > >- * vma->vm_lock_seq under vma->vm_lock protection and mm->mm_lock= _seq > >+ * vma->vm_lock_seq under vma->vm_refcnt protection and mm->mm_lo= ck_seq > > * modification invalidates all existing locks. > > * > > * We must use ACQUIRE semantics for the mm_lock_seq so that if w= e are > >@@ -734,10 +766,12 @@ static inline bool vma_start_read(struct vm_area_s= truct *vma) > > * after it has been unlocked. > > * This pairs with RELEASE semantics in vma_end_write_all(). > > */ > >- if (unlikely(vma->vm_lock_seq =3D=3D raw_read_seqcount(&vma->vm_m= m->mm_lock_seq))) { > >- up_read(&vma->vm_lock.lock); > >+ if (unlikely(oldcnt & VMA_LOCK_OFFSET || > >+ vma->vm_lock_seq =3D=3D raw_read_seqcount(&vma->vm_m= m->mm_lock_seq))) { > > I am not sure it worth mention. In case it is too trivial, just ignore. > > If (oldcnt & VMA_LOCK_OFFSET), oldcnt + 1 > VMA_REF_LIMIT. This means > __refcount_inc_not_zero_limited() above would return false. > > If my understanding is correct, we don't need to check it here. Yes, you are correct, (oldcnt & VMA_LOCK_OFFSET) is not really needed here. I'll send a small fixup removing this check and adding a comment before __refcount_inc_not_zero_limited() explaining that it will fail if VMA_LOCK_OFFSET is set. Thanks, Suren. > > >+ vma_refcount_put(vma); > > return false; > > } > >+ > > return true; > > } > > > [...] > > -- > Wei Yang > Help you, Help me