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 028E4E77197 for ; Mon, 6 Jan 2025 00:38:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 21AA76B0083; Sun, 5 Jan 2025 19:38:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 1F1806B0088; Sun, 5 Jan 2025 19:38:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0B9296B0089; Sun, 5 Jan 2025 19:38:30 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id DFD7D6B0083 for ; Sun, 5 Jan 2025 19:38:29 -0500 (EST) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 5770E45A49 for ; Mon, 6 Jan 2025 00:38:29 +0000 (UTC) X-FDA: 82975165938.28.1186572 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) by imf19.hostedemail.com (Postfix) with ESMTP id 55B9F1A0013 for ; Mon, 6 Jan 2025 00:38:27 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Jt3UBpRL; spf=pass (imf19.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736123907; h=from:from:sender:reply-to: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=ScyDvmN2hvlNSyorVRI/pPT6VvzNA2QQfFXIwD14bAc=; b=djU5sH21lWr/hNbiDUEY2ZG/3kaRAZnyjRKE6URw1oO6KIhloHpI/5Jt0NPfVO3VFN4D7H WGcYFK1gdKvmF8mhJSkdIMUK6NBFnXvDZ046YyP++ZISIYc76Okh90+Z4gw4dWzQGAsufQ Pmw97mbPfL8iRvSknTHmSn+Cmb+WY4g= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=Jt3UBpRL; spf=pass (imf19.hostedemail.com: domain of richard.weiyang@gmail.com designates 209.85.208.45 as permitted sender) smtp.mailfrom=richard.weiyang@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736123907; a=rsa-sha256; cv=none; b=BMLdOJMnRfy+jQ2Koo0Jw4jfxrumZzIGGjk9PHj6SEVGko3rfit7rMFXrmvnE1pesBHP40 b+HMq6e+feEN9yPIdDy1HKq7MMrs41Q5tzisdQbZh03mJQAzpXfWMUfEH6XObvsyWqS1wz uoTZde7xz/xDMHL7Z70QIifAltf1iX4= Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5d3f28881d6so20604692a12.1 for ; Sun, 05 Jan 2025 16:38:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736123906; x=1736728706; darn=kvack.org; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=ScyDvmN2hvlNSyorVRI/pPT6VvzNA2QQfFXIwD14bAc=; b=Jt3UBpRL5OhKthjLj5ZZVOSdzY3gXWk30KPLAsVOxtnuVktSe4OA2bV5U0/l9ymnIQ 6YylscAGOyS2mW4LH1GzfTcMLcHkyuG7ZJZKJ0+a5uuk7di5VLzrq79bsr8CtXHSN8a2 7e2P9UF+vJl1+D7OhJcfOOHzOCUT0O7Miy8+WRvG7Ouz3q3yCSW1ZDmVDDH+UrqfZV7L ojPhBDf61aBYICyukcySjmx81NFEys4SeCfNoiBDLs1lxO0rlTwmDGm22RtYt8hgeoxq pnDRcx/ZrcnUc4dKQVVzRjazekxZP1ulYzfZpS5ldzmkbfhLIYDR+7lkahzbu6O8MM7Z U2XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736123906; x=1736728706; h=user-agent:in-reply-to:content-disposition:mime-version:references :reply-to:message-id:subject:cc:to:from:date:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ScyDvmN2hvlNSyorVRI/pPT6VvzNA2QQfFXIwD14bAc=; b=Lf6NfRXjQP0Yt6lBTZ+Ge1WIrlGTzsCQrOIfVdQnnAgvC5WuJ70cnev2lalAlwkGBD KHy47VbpsTNh5K9jxZh64qoMjdi4SJfE709s58is/N6Axy14KO3+3vM4wYZOM6Fk/dzl 0saXIp9Elc9wwCmga1dMeKZvhunJxkI0UTMR8SkU4Cae9fwrb3AeQ/HrbpMXWDTeCWI1 7aT95mSbXFpD/80/YoFzkIHR3uistM3qM80HuQDoHtDCvlI1DhorQMZtgpQJq12epjmz zdr3aLksjtIlLlpQR1/ubNsGM9zCuO9Mm9JY2yVBjfUA7x/cwNE7/Vo2Akr/cHKpro3p FJoQ== X-Forwarded-Encrypted: i=1; AJvYcCWFE439xZ1gHYEYXHDic6LvmRZMaYkSJXqRB4RnEx5c7zMIuMkkRePOFhRejJ1wex7hU17qh36siQ==@kvack.org X-Gm-Message-State: AOJu0YykkGdwC/u3AWucGc1ep8jSOaefqrZV7MaGWsMzFSKcp7dzR1ZE 8yq/T4PIhJaXM0OpU3tcf988GGxliQCPg8oTBDV/HjWv11I0JKpO X-Gm-Gg: ASbGncvCrlHO85HvJbcGgeP9XydFySG2r2P9oYWVxTDax+af4T0GIL7LceFyiMIFhiX XCBR9dew7Wns2zi6bSlGFCY4cIR2Nju+yRZLh82tpnur8Ny/s/gZG7WhQ7sXcGDmMXCJfNoEMcs 6romWpBqIZARHaISLlgOq3wrxji9RfvbLlRxwolhAc5yvO/IwgsSJ8VvZRTiPv67OTiIh1CoSb7 ppYSXPwf0iH+iTIql1Ritvk6kvGS+yxBgF5EFWAbkiYsebqLqGujYBN X-Google-Smtp-Source: AGHT+IFuMFshYB4c1/i6O6qbKQRnohJMCYNPJsurHUTjRi208uWhTMf1HrBa011c4vtpyq7O1FLJjw== X-Received: by 2002:a05:6402:430c:b0:5d3:f55f:8349 with SMTP id 4fb4d7f45d1cf-5d81de1cf36mr120588497a12.33.1736123905414; Sun, 05 Jan 2025 16:38:25 -0800 (PST) Received: from localhost ([185.92.221.13]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-aac0f066112sm2171123966b.179.2025.01.05.16.38.22 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Sun, 05 Jan 2025 16:38:23 -0800 (PST) Date: Mon, 6 Jan 2025 00:38:21 +0000 From: Wei Yang To: Suren Baghdasaryan 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 Subject: Re: [PATCH v7 12/17] mm: replace vm_lock and detached flag with a reference count Message-ID: <20250106003821.3gtfxq33fqj4wm5b@master> Reply-To: Wei Yang References: <20241226170710.1159679-1-surenb@google.com> <20241226170710.1159679-13-surenb@google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20241226170710.1159679-13-surenb@google.com> User-Agent: NeoMutt/20170113 (1.7.2) X-Rspamd-Server: rspam05 X-Stat-Signature: s6q1itmwr3fxmmkr368838cb98hrkxe9 X-Rspamd-Queue-Id: 55B9F1A0013 X-Rspam-User: X-HE-Tag: 1736123907-961912 X-HE-Meta: U2FsdGVkX1+4PlXYWiN97j3POsb4aJ5pEZwFJRF161IQno/mVlyvnrEOp6NHTYy3CbOafo27mtLXrQSvnB/ThtngZehcJqvdly84ptZUz4sTiCkFG1Xt+65JBzEMGDCdPdWX/FuOLfy18xQrbRJrIOGGGIviG2XG0ARjKbH2Qi+j4suwHN6ec8qDXwOLeWgXx8fVf7aZadYa90Gv2Flummth/2vkcv8tOXRpg1bweM9bclrfjJxYC+fE48b2eDdHHR86hLh2RhHDtc8djDNVkFNMVAPPEVjNn8kLxjOFGxhD1wrfwFAxD5WkC3xGVmNVkBGh0DQuZp0P9ne8Pb29FGPEmheiTjT4O75NchnB40Ny9LtWi81RBRdePH1mfEA+jVff2By3JPsl48Pqm/D4auTE589Ht+an7a0T25zE7mRqAS1MUMhTTWt756L5b02zWLbgjL0YTkuL3zdAZgu6x/wYv6pZpoKR+xI1hB7zdrUuUPD6Jm9NwbznuXqwR1vcPGcXmJa5VAVtkjjaRz5lQUr7fX6RXZZ4B2HC37nEWSLX44Ea4uVn1x+zj2LP6ZFRFqYVN8s3oWbKs0CBXq3nDG9LAdLV/Y7Pt0OeGHJQTyxlvGNcCx7ei5AI3/CTWP4zBf2hiL24ahcQnx0+NF/irUXzUspHQOfyVbX5qLzdXBrvTWQ7onsDUOScj4rwkVoHAFYSrCLVwRP1bp6opSwgD/3al1ch1IyoUEBYvvJViosCGWWXtbNw9SlTEVJ91hDV8eJdEGAxP0RG4Pmz7UAYXUDfomFCNENDvI5ZJinpunZAvStQUQB5bZ9WRikd8soTthdeIF0FiLwZDwHnrRjUxGfYlV+PK/en5eFVn6kcFQgiUd03gMGp1uyu3w44CPZs4hjisWic/VfZs5gjTJwX9Eq+Nxw3uXKxcvn9r9XKvHd6VA6x2QmiAWJBd5EpQxl6eTUSlAmc+m62mE2niNW WUgqIH+A RgkUB+WlI3PcgCtylhFFYman7FAASTG/w2il+eFwZ8/7G5yNYPBAsjpivYezAsvkCRgka4dJ7E8E/zx/QYC8xZFnFtSTzJBqGsvp66/TxAVUr24iy75DWkxcu1XkPfnTd/opCU0Vhui9+t2cvm6pUSiIAugoeeCRBcfzJ82rPNKfwyMXfWHcKdXdP20AQ0dDlfcvETSg1hF/HwkiK7op7KNQfGbHwLufjkEqXhbVqbKnvTyfjV09DHkXu7wH7fILzxeVfWR/A/ZA3FTCo08NI+7Jrfs5fCmmTRU/jZigWW4+7qqMkGK4nHSz7QKQ6FGe+0xRo2yMg9E1xZUHmK542WahVVC4LrnuxP4EegViQeDyDvTditZMg3byhRcYCx4EVEt4Qf3CTii4I5OHTDXBFrbDF5LbEH194JszQIaYmPEOMPsedPWO2uM7zarm274qIXS8OyacmHpBnFVDOAUOeG0nFwwN3wu88m+yCnxo3Rp/6RZdL6VWcc8J8vzjsPtrQweRGW7E6RYKF0cdCD61+T6sfIssEkikQQGFrrw5wYJHxe0DdySCEbMEtp+V+CQ+uRkakMjwS6DheghyJH30iFj1HsEPL9XoqOJ5d 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 Thu, Dec 26, 2024 at 09:07:04AM -0800, Suren Baghdasaryan wrote: [...] > /* > * Try to read-lock a vma. The function is allowed to occasionally yield false > * locked result to avoid performance overhead, in which case we fall back to >@@ -710,6 +733,8 @@ static inline void vma_lock_init(struct vm_area_struct *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 need >@@ -720,13 +745,20 @@ static inline bool vma_start_read(struct vm_area_struct *vma) > if (READ_ONCE(vma->vm_lock_seq) == READ_ONCE(vma->vm_mm->mm_lock_seq.sequence)) > return false; > >- if (unlikely(down_read_trylock(&vma->vm_lock.lock) == 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, &oldcnt, >+ 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 check >- * 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_lock_seq > * modification invalidates all existing locks. > * > * We must use ACQUIRE semantics for the mm_lock_seq so that if we are >@@ -734,10 +766,12 @@ static inline bool vma_start_read(struct vm_area_struct *vma) > * after it has been unlocked. > * This pairs with RELEASE semantics in vma_end_write_all(). > */ >- if (unlikely(vma->vm_lock_seq == raw_read_seqcount(&vma->vm_mm->mm_lock_seq))) { >- up_read(&vma->vm_lock.lock); >+ if (unlikely(oldcnt & VMA_LOCK_OFFSET || >+ vma->vm_lock_seq == raw_read_seqcount(&vma->vm_mm->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. >+ vma_refcount_put(vma); > return false; > } >+ > return true; > } > [...] -- Wei Yang Help you, Help me