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 6B28BCD1293 for ; Sat, 31 Aug 2024 10:09:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C5A296B0246; Sat, 31 Aug 2024 06:09:19 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C075E6B0248; Sat, 31 Aug 2024 06:09:19 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id ACE856B0249; Sat, 31 Aug 2024 06:09:19 -0400 (EDT) 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 9022E6B0246 for ; Sat, 31 Aug 2024 06:09:19 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 445E4C0ADD for ; Sat, 31 Aug 2024 10:09:19 +0000 (UTC) X-FDA: 82512118038.29.083CE33 Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) by imf06.hostedemail.com (Postfix) with ESMTP id 8A22D18001C for ; Sat, 31 Aug 2024 10:09:17 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=I3lJfkoj; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf06.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.177 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725098883; a=rsa-sha256; cv=none; b=3n/XbhKTyAwJ5WRnfcMOoqKcj/ioq04a2SZaKuO46MqxoLXUhHb0usPWh+Vh9ruUWyTvHt 0Uvk5s+ilWfKy/ZVBwJLRDo3oTaFHkhQH7eQ5x95QPZ5oKRYKYETFo0af2m7Aw5PdD/by7 qZqrxjzR6cFFR+cihJ3EJEGjj2bzqxs= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=I3lJfkoj; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf06.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.221.177 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725098883; 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=TMIAsf05xblxABJbGq9fMP/mE25x4zXuc8GRvOofYRs=; b=AbU8x9vnwuxfXVkOwt5hklBAThzRB1350R7ilk8FwZzfld/qZbAkbfFAC7euebUmWDm0lb PJfjw7iYCJJNJ4lD0dtPzTFVANxdfdQpd1JpXJsarylaf33jONebUjzLSapIxHohhPpDuU LsRoywGIsE3Cf9DibuMNuHAC6uo5gCU= Received: by mail-vk1-f177.google.com with SMTP id 71dfb90a1353d-4fcfcdcb4acso839701e0c.0 for ; Sat, 31 Aug 2024 03:09:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725098956; x=1725703756; 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=TMIAsf05xblxABJbGq9fMP/mE25x4zXuc8GRvOofYRs=; b=I3lJfkojpMFgpcHysw56zh8bRhzv7HQS277Aww1SxUlsnP5fTMidZ2IqfROfDZ4wcc Zx6CZj+9Mmd7WV12Vh7ODLYT99Qvk4VNWLOxdUU2VGHMsxjjrHFr+PJSeHdas5dqtenZ nStlQGWNazeZhxl0OiCeMFQaK/FDoNpTjEH+ks4ECELsRFw4XbcdPJvYnGvEacyEyjF0 s/i0DQgE17Jsn2yz6vmdfI1Tin97gCzxmwt1YNgTKksdONZAdxIVfuwnVHgF0mYkBEa6 T3iewFXWIih27+fKMc7IfvqSWqQwEVv0mTQULo+k7Hcp8dCYfC4NKOfeAHp0D3AOZ1pA +o6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725098956; x=1725703756; 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=TMIAsf05xblxABJbGq9fMP/mE25x4zXuc8GRvOofYRs=; b=ueDezaQaI24jAT3Y14fb9GkjHJ+mZsPbvIfLYGVJEd6GJBaWY7O+//Zha1zusmdc2j Fofl6idRsWdbYDjxLRORKUwSNenmEY5cuZ63X97ETBtSKpHA0mSJRbMkYrnGQUNb2PV2 laB5mObHZZ+N1sGqz7aCeWH+NT5F6QMjBr7PvJACITUdlFyFKfbGUUt7RiPl8UqwWElQ TImRQVjrSfReAQM7eGq9Pc2hKVLYCUnFIiZfqJDwKou+MAwH1b6pSOWLBPUcxzXx/Z7h fmc+/zmHJZotd/gLthNpxfDSz/kYoalDWs2+9OlvXkonXQa/i8g7mC6h13Z2Xca5GvpZ YwDQ== X-Forwarded-Encrypted: i=1; AJvYcCVtUGY7keqf1q2wr/owYJ4lZJ8/ZQXBGD3bKJiTa9PHOaX+CdqeUgK4CC/874pNO5zICmMBKOe5FA==@kvack.org X-Gm-Message-State: AOJu0YzfOSwd3cnHXOS5esyJybPbzZujlKTRqJSr0l3gyVqUmyNZK+W6 SeAY4mpOPS9p80sVbWdMjXZ7pV6Ujx3zRcpremhtzOedStJPH5xAzoVZoY9JmpGCRf0Eoedc3tF +AICdL6T4/dIzsoIVJOTzRoFMqc4= X-Google-Smtp-Source: AGHT+IGpV55JQZNentY8D2NUN1bNdSfSH2h6yEnuqfI4K8+9qaTMytABl3522UWCKfSXzdQCp68REDVswoZyeJMww5w= X-Received: by 2002:a05:6122:3d07:b0:4f2:a974:29e5 with SMTP id 71dfb90a1353d-4ffe4a5c6bdmr9241955e0c.1.1725098956630; Sat, 31 Aug 2024 03:09:16 -0700 (PDT) MIME-Version: 1.0 References: <20240831092339.66085-1-21cnbao@gmail.com> In-Reply-To: From: Barry Song <21cnbao@gmail.com> Date: Sat, 31 Aug 2024 22:09:05 +1200 Message-ID: Subject: Re: [PATCH RFC] mm: entirely reuse the whole anon mTHP in do_wp_page To: David Hildenbrand Cc: akpm@linux-foundation.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Barry Song , Chuanhua Han , Baolin Wang , Ryan Roberts , Zi Yan , Chris Li , Kairui Song , Kalesh Singh , Suren Baghdasaryan Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: 8A22D18001C X-Stat-Signature: j4yexrbc15icxn3f5sfe3bjehd3xryzi X-Rspam-User: X-HE-Tag: 1725098957-772008 X-HE-Meta: U2FsdGVkX18GEVyn/FXwunKKxTChUy8KtVhPQ+HJ6vCygLaJUXNeDVfuQ1+ofX457Ftz+xHhT5K4a8M+r35yAf/aqlMSL7TIHC20hQzhs1PQHPw+WYIs/AW8pWB6LcJW6V+SXFfCaFR1iriscxV7uHXAc+tRs9JnMc+gYjw15SRQVnY2Wz2qMCM4jsZGnxOfTpDw/DWB3G+vjWjc6EHUT0hCM6sEhOcn9BJ+zaWIQJIQlDhn0iurOZj1ohU/8VROyInhuEu1QjitSSCPRpil5KgnPqd/gu48qWBu1DUuB+KfVo2Yax/ZvymnjmRUR0kAEz2466EsU41jS+T1fOGVkTJ+9/4A2Q1yWHST5IYJDycgWX/fp7c2Qj9j/DEw26D0d4vnRkZU2YjJ+XamlQo5F5REIc1fN9iQEZP916F3CPI5aKsaSC4D7gb7IqOoyWKdQ9Z9oU57iyQBiuvX8tiK8zHHYHX3BCpfB3IH98RJJHUF7mMsjZZ36Oq+5yNhHXCJgoHOH03GVZy0pqHPDo6EYuwMgJYQCSspja+7AorkYUfpEnoP4AF3Vyrdjfolc3K7Vj8dWpbtNFbeO1NX6Z43l5duIsmt4zFJZicSmGr26xBa+DN3Cdxs6a7lN97jr6BsdJn7GM5V418vDiIX2FVBkx3XXxRBGzj+Abl1uAHkle13USKltw54mBat9c4JeZ7xl5BnL/IF4i/4Xk8qd+YucOwyv/4P/XAD0c/ehCxNTkU1+tx19+wutdwVpVNONG1SA4q4B4PzhG8oCywXWSq+1t1Gui/Xn8hFy9yrxrP9jk8cy4kRw7QQRfgOXV/Gr1OSuLyncm4zdzBkYw87CZ0bk0pvX4anJJ19i+I28Z5vyh4V7VmUrV4sNQqvS5lCu6iGOEUFdGXV2E9pVOhL84ecdOsBuEavPe1IT3ZIv0qRoideWXMMYEPwdqHvHiIw//Wwhr4gAsl0G3WV6sPSYvE 4P8VE7xC /KZUJMHJ+qq8FKU5ZkSCTMg+ZcUfmNU8y1CZ/PoCvo6mfBGsE8pW4mK11jFAAlTkF0pUcUIbJNBeuVs9tmsNSzaF0L4nDIU9zSPYOzQGy5yW5O5hENz2J5It8I6F8qXJyvz2vnziYfJupprR3T1wB7RQ2dyWdZBaY5aPyqE4+kO2a+UvkHV0ZBEHf8/qx9tAlDgwkJHDJaQxJ6YhYWhRBxD+FWuLP8b1yXx7o7PkncJ7C4hHUI+YOYX/3ai4otbuFLFGrPrATAqb7Mkqd+5QiFM3kgRTtfmbry2Gd1JqFpRUghdVseb/FpMXioIkWsOsVVR5NXZu7I4PyStiZODgr7rhkzQyWW+13XsTfoDsoKNXQfJo= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000228, 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 Sat, Aug 31, 2024 at 9:59=E2=80=AFPM David Hildenbrand wrote: > > > > + idx =3D folio_page_idx(folio, vmf->page); > > + folio_start =3D address - idx * PAGE_SIZE; > > + folio_end =3D folio_start + nr * PAGE_SIZE; > > + > > + if (unlikely(folio_start < max(address & PMD_MASK, vma->v= m_start))) > > + return false; > > + if (unlikely(folio_end > pmd_addr_end(address, vma->vm_en= d))) > > + return false; > > + folio_ptep =3D vmf->pte - idx; > > + folio_pte =3D ptep_get(folio_ptep); > > + if (!pte_present(folio_pte) || pte_pfn(folio_pte) !=3D fo= lio_pfn(folio)) > > + return false; > > + if (folio_pte_batch(folio, folio_start, folio_ptep, folio= _pte, nr, 0, > > + NULL, NULL, NULL) !=3D nr) > > + return false; > > + if (folio_mapcount(folio) !=3D nr) > > + return false; > > BTW, you're not checking against the refcount (and it's all a bit racy > on concurrent unmapping!). So you're re-introducing the vmsplice > child->parent attak. i don't quite understand this, you mean the below is not enough? - if (folio_test_ksm(folio) || folio_ref_count(folio) > 3) + if (folio_test_ksm(folio) || folio_ref_count(folio) > 2 + nr) return false; if (!folio_test_lru(folio)) /* @@ -3591,13 +3627,13 @@ static bool wp_can_reuse_anon_folio(struct folio *f= olio, * remote LRU caches or references to LRU folios. */ lru_add_drain(); - if (folio_ref_count(folio) > 1 + folio_test_swapcache(folio)) + if (folio_ref_count(folio) > nr + folio_test_swapcache(folio)) return false; if (!folio_trylock(folio)) return false; if (folio_test_swapcache(folio)) folio_free_swap(folio); - if (folio_test_ksm(folio) || folio_ref_count(folio) !=3D 1) { + if (folio_test_ksm(folio) || folio_ref_count(folio) !=3D nr) { folio_unlock(folio); return false; > > -- > Cheers, > > David / dhildenb >