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 20CBAC4167B for ; Mon, 27 Nov 2023 05:54:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 265836B02DE; Mon, 27 Nov 2023 00:54:39 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 215FB6B02DF; Mon, 27 Nov 2023 00:54:39 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 10F2C6B02E0; Mon, 27 Nov 2023 00:54:39 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 00BBB6B02DE for ; Mon, 27 Nov 2023 00:54:38 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id AC8C0C0107 for ; Mon, 27 Nov 2023 05:54:38 +0000 (UTC) X-FDA: 81502669836.01.B0C7E6C Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) by imf29.hostedemail.com (Postfix) with ESMTP id D5F86120005 for ; Mon, 27 Nov 2023 05:54:36 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="hZJ/BML2"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf29.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.170 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=1701064476; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=sOXILmKXZldhKWQnQlWNCBsYfucE8pgkM3z8uK/DEzw=; b=ExzL0DlE8f8JV1qqxQYwVN+g8XjzSZQhOoCsAoVrKBtLTvnDt+9dOmNMAfFMee2wfa419E P5SH25IqcQxooSN20vC8VunwnWICqK/HsjRb2hcvOEYVf6VgOeG1JlfCOV3W3WJGdfcgD7 Ozc4rfxTLUmc21wWckAfCioYwC1FatE= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b="hZJ/BML2"; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf29.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.170 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701064476; a=rsa-sha256; cv=none; b=Q/8yU6U4NlHegQ/0qisnpRYr7YcjJ3FmmDwbrHltNO/5wMeYB7V+TI4MP9j5HN7tnmlfsK XCZp48W+4DYE1JrSlrcTijqsreERVa9bv9igsN11etPjEh4zmq8nGQy02UKW7eyEO5FvR3 4lSQfwDtYxaqBl81YiiW17yP05YpriI= Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-6bd32d1a040so3754371b3a.3 for ; Sun, 26 Nov 2023 21:54:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701064475; x=1701669275; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sOXILmKXZldhKWQnQlWNCBsYfucE8pgkM3z8uK/DEzw=; b=hZJ/BML20ugMpLbvVtv9cbloFVX2db3Y0bOTraFzV3y8aJnfwC2AGQUkHuRKbN/HX1 nnv7K8zcLvCMKDarx98zBGOLG0BNx/Cfa2zGg7qlHQKX8GqpSUSQx0kwpE/730gDwv5q OXKHcxbom8OVRRPGbZj+C1pwPxm6nQb+04qwChfXDjPEpkVxBWpB2y55hQ7aaUMM6Rq3 8hbZhtYzm7PYGC8QF79mnQnkgNcaeEjstw1F/kYDrVC0T1YQ/lOO9wBH+bjFYkpPluV6 aCKMtW7ijhDaXG7kbFmM1LymvcEjVdYMShSI/+UfzKBFO1Y0VxPe47tp3UD1iki3imLR FGng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701064475; x=1701669275; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sOXILmKXZldhKWQnQlWNCBsYfucE8pgkM3z8uK/DEzw=; b=RHqinvL1URpfNeNsYwbEzAfo0pCQjgy+TUuCPRo9lkhHQmEuyPJHM+td0TMWkCQt0d gujI3lX/7sbIvk/IJ7vQVIXvWuu4HEFIUsqlc610FS7NHKaPBLZjFgDQXU/CrATwSOl5 vItOjByUJdjWbRnGXmZbNBGwAnGuhti70U8SNFjmZdLVXI/aimDn2kiGAzVfl+476RSM GmTa8fV8u10W8I7t8XLWxR7Py80TppVYeioFAgjutwqSA+WkdAbZk0agwX7S0LtpGC5U nm1ecU14ZgY35/CCxuWlUR1csjkW81rvxaBZEdO8XxqKUo/Qf/XhUykfwiUOQbEs2DQx VH7Q== X-Gm-Message-State: AOJu0YzOyrzyg9pO8cNpmErW1ybtK1N/ltrcLOKm3mHf8+PHoXWCZQX0 26nAEaFc8G0/M3C//QLUkL8= X-Google-Smtp-Source: AGHT+IHyx7SqBKV4eZDV5ZT42b271aGYC7KYgXNe9EH1UiqXskUInT4E8XIHNPcjIJEdM0Tb4s1VtQ== X-Received: by 2002:a05:6a00:2d9d:b0:6cb:8ccc:a5cf with SMTP id fb29-20020a056a002d9d00b006cb8ccca5cfmr12497223pfb.18.1701064475563; Sun, 26 Nov 2023 21:54:35 -0800 (PST) Received: from barry-desktop.hub ([2407:7000:8942:5500:6f18:c2e2:c23c:9ba2]) by smtp.gmail.com with ESMTPSA id t22-20020aa79396000000b006be0fb89ac2sm6435370pfe.197.2023.11.26.21.54.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 26 Nov 2023 21:54:35 -0800 (PST) From: Barry Song <21cnbao@gmail.com> X-Google-Original-From: Barry Song To: ryan.roberts@arm.com Cc: akpm@linux-foundation.org, andreyknvl@gmail.com, anshuman.khandual@arm.com, ardb@kernel.org, catalin.marinas@arm.com, david@redhat.com, dvyukov@google.com, glider@google.com, james.morse@arm.com, jhubbard@nvidia.com, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mark.rutland@arm.com, maz@kernel.org, oliver.upton@linux.dev, ryabinin.a.a@gmail.com, suzuki.poulose@arm.com, vincenzo.frascino@arm.com, wangkefeng.wang@huawei.com, will@kernel.org, willy@infradead.org, yuzenghui@huawei.com, yuzhao@google.com, ziy@nvidia.com Subject: Re: [PATCH v2 01/14] mm: Batch-copy PTE ranges during fork() Date: Mon, 27 Nov 2023 18:54:14 +1300 Message-Id: <20231127055414.9015-1-v-songbaohua@oppo.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231115163018.1303287-2-ryan.roberts@arm.com> References: <20231115163018.1303287-2-ryan.roberts@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: D5F86120005 X-Stat-Signature: 5p4ypdmp1qtsq5k6gm33xnjzhwpapdd9 X-HE-Tag: 1701064476-497011 X-HE-Meta: U2FsdGVkX19yXgGptdbrCd0BoHTWI8v4Z9bR5HtRuBCZeRFXv44IOoTyDTscBaaICped0dXFcOYueijdXHyGI8qKrZOSVEEEUavk/A58zjWuQ11WnSAFPg0hYe74n1VTEJz3ugTqAbsusNTRdV8xPC/DI4rdmUoRT3Ia5bu1txNDDR7S9JMGqO6gX8BlGaGooy4FvCFOGJhzAVey0Zu1kG2AQwyKs8t6592eC2ywKTYaECpVNa1cygUafYeVK2mFf366hMm8kbISVcnj1SlBsmcoGuoqPC5Litrf7+Lnj22kV7WahtOH5seHDcUFGHqr/61sZc43tR8XQC/Q5S6KGm0AywHGSj1mbYXu9MLOfirshjycUJyv3zt9NOxY68DBUCkia/m095mOEYXzo6zWyq3pbOnwct8wEXr4CKnHUjZ5ei5bnpaQ0c8LrIooOsjrIGjPdH1Ztbk4e9AOTufu1a619juSYyI1D+9gCBxyMKcnzA7L6YAzdKALm6jO2iosKrLv6j1NHxO89v+ARLEOHAoyHj1ry5GCG9EtLNZakAoOusV3/XML+cDCcEUAgK7UoeS0cd8WtI7Z1qI5VxH6k4FIuUAwS5mxEf2+QswF1l+EYveDTFATE++SdVtBNgvNoQ31j2XVlKea7jpjoqR6sFoNpBVMmutUYa9vTphAf0cb55QxzXqMCXMFK6GiYaoK+1qj2HC7HyO//nUN+plkowUGnP3qPV5Nuuui7LOvH8NRPkpF6TH4+W5pFRY0OH4XBZv8TtAcXGE5xjGGi4iovqYQVX+HgIv/kTlXOmJ15AhBSwxAko1QqwTS331rxPxRoDJ0euuKITh2CK6ZW+Tw/ctzvDuU8Wus4zHyBSck1ddgGiuBhcgrb2h/oq5C7QB0//Yp3BAi5vG8BsMIm5UHM0vievXKTGMN9UuoabvoZIgMp6iAl6HydC2xwHrAXIC5qyMgCES37Ho0fdovjXt zyonmuH/ x4KLFd78DtOUDx+lB1c2TOIkJPsWCrJF9jZJd0QOHGufQlK19dzUNlmT7TWv68z5ak+gGAHWFI6VdlDljuxMfe/ZwDhjCnhLfj2syccc6/pcOuBvVylGecQ0PYc2K2x9za2P7qEN7Fk3ff4E567snj2yH2dEuUTV2eWq2jfGyYTzRPy+CeA/5O4ndz2RXvtfeoXdVaPGhtpPuC91YC2rL+bcLdec9WD/vqPUYwx6MJQOY1cOEWAfcEWApAX2WExCHzVvGVWiPWbvQF53jRtLHK9714U5gKjjPDKjFnrbhK5jsaYlSLYhF1brML56lk9JBPCojFFhIoeDJqvWpKkkN7YE1Z6ULwwStsEqmJxWLcmtwc+989HhsiAeScsrUzi1qRsLkaGzQ0JdBZYUfwPAOf7D5wXYOz6PbOe2KZsvjtg4TRjJnLdUZvQqfiuWVOhPHL5+1LMuxYM/oSNMcB/unypu8g/MQvUVvjneJAs/qYYVx4wQVPOrcYsWxWUyx3NOFFwNyr0N3GTFUHRp6/aNKcG0UrA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000017, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: > +copy_present_ptes(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma, > + pte_t *dst_pte, pte_t *src_pte, > + unsigned long addr, unsigned long end, > + int *rss, struct folio **prealloc) > { > struct mm_struct *src_mm = src_vma->vm_mm; > unsigned long vm_flags = src_vma->vm_flags; > pte_t pte = ptep_get(src_pte); > struct page *page; > struct folio *folio; > + int nr = 1; > + bool anon; > + bool any_dirty = pte_dirty(pte); > + int i; > > page = vm_normal_page(src_vma, addr, pte); > - if (page) > + if (page) { > folio = page_folio(page); > - if (page && folio_test_anon(folio)) { > - /* > - * If this page may have been pinned by the parent process, > - * copy the page immediately for the child so that we'll always > - * guarantee the pinned page won't be randomly replaced in the > - * future. > - */ > - folio_get(folio); > - if (unlikely(page_try_dup_anon_rmap(page, false, src_vma))) { > - /* Page may be pinned, we have to copy. */ > - folio_put(folio); > - return copy_present_page(dst_vma, src_vma, dst_pte, src_pte, > - addr, rss, prealloc, page); > + anon = folio_test_anon(folio); > + nr = folio_nr_pages_cont_mapped(folio, page, src_pte, addr, > + end, pte, &any_dirty); in case we have a large folio with 16 CONTPTE basepages, and userspace do madvise(addr + 4KB * 5, DONTNEED); thus, the 4th basepage of PTE becomes PTE_NONE and folio_nr_pages_cont_mapped() will return 15. in this case, we should copy page0~page3 and page5~page15. but the current code is copying page0~page14, right? unless we are immediatly split_folio to basepages in zap_pte_range(), we will have problems? > + > + for (i = 0; i < nr; i++, page++) { > + if (anon) { > + /* > + * If this page may have been pinned by the > + * parent process, copy the page immediately for > + * the child so that we'll always guarantee the > + * pinned page won't be randomly replaced in the > + * future. > + */ > + if (unlikely(page_try_dup_anon_rmap( > + page, false, src_vma))) { > + if (i != 0) > + break; > + /* Page may be pinned, we have to copy. */ > + return copy_present_page( > + dst_vma, src_vma, dst_pte, > + src_pte, addr, rss, prealloc, > + page); > + } > + rss[MM_ANONPAGES]++; > + VM_BUG_ON(PageAnonExclusive(page)); > + } else { > + page_dup_file_rmap(page, false); > + rss[mm_counter_file(page)]++; > + } Thanks Barry