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 35A70C001E0 for ; Wed, 9 Aug 2023 19:21:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B218B8E0001; Wed, 9 Aug 2023 15:21:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AD1A46B007D; Wed, 9 Aug 2023 15:21:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 999698E0001; Wed, 9 Aug 2023 15:21:28 -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 8749A6B007B for ; Wed, 9 Aug 2023 15:21:28 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 4BC1A1C95B7 for ; Wed, 9 Aug 2023 19:21:28 +0000 (UTC) X-FDA: 81105535056.19.C4F8631 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf11.hostedemail.com (Postfix) with ESMTP id 2096E40019 for ; Wed, 9 Aug 2023 19:21:25 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=lsUxQcuW; dmarc=none; spf=none (imf11.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1691608886; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=V6aw3cKsEAtcteG5TsVfLRgpt+DuKUB5RKFqkVnPpSE=; b=VaiLSE1NtbyT5RhIwE0dlLPceInEzcbzIyNDXnseCnIDxhWLpStIYs5AMjMS8Jug/6x3LW 45h8kZFwvgW0eDeEQ79EvYlBN+QULLFS1AF0h+4QqpZmKtpDm1MgUxATI9zjsTB5WfzeDE 8N3fd0r1HsA8xsTgwn1O3qU+02J9BBo= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=lsUxQcuW; dmarc=none; spf=none (imf11.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1691608886; a=rsa-sha256; cv=none; b=pVChHZyHjRrT6OGTiHMkSIcdmYhbCUCVg9n7y/YLFP/mexfSkgX4yXXc6yrUxaiAma+kAn gZWtzXtN8gJU5ns1eaSSImMMnoR4YjYERO5/kbDPjuMk9lkhgWu9Bk3fNueM7eT0AVJt9W PyS5oVF2mLzqsZjQKAOzPpmUN25LocM= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=V6aw3cKsEAtcteG5TsVfLRgpt+DuKUB5RKFqkVnPpSE=; b=lsUxQcuWgOl6iSPOALnYzG0wD2 LrOSFUpTYzRV2I7TU5dEJ6WhDAMXvaHNrHA7jsmh7FirTeooUWNl06NukygzHox9aG34P/umosboi NzK4MRv0KQb+H2+de/XnOqWVFFCLY0z8SJJnOEE9dj3ESBZf38CMe55j8CIxFekqBMuQ2M5asPan2 vyFsomoxYkhgRpoCb4rQHpuA5eM+b2i3usPxfRMfN5o4Vi7d9OMWfer5oZSvs7IbzTNR9FzrsuV3K jp5E14YVTVI/bGT8STIPcApoP+jVIkqCUNCFb1DvtD0iMjux2Xmcd3wrmz8w255nTjze/GHMB6qr2 u+rEebWg==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1qTok8-007x7J-SP; Wed, 09 Aug 2023 19:21:16 +0000 Date: Wed, 9 Aug 2023 20:21:16 +0100 From: Matthew Wilcox To: Ryan Roberts Cc: David Hildenbrand , linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-doc@vger.kernel.org, Andrew Morton , Jonathan Corbet , Mike Kravetz , Hugh Dickins , Yin Fengwei , Yang Shi , Zi Yan Subject: Re: [PATCH mm-unstable v1] mm: add a total mapcount for large folios Message-ID: References: <20230809083256.699513-1-david@redhat.com> <181fcc79-b1c6-412f-9ca1-d1f21ef33e32@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <181fcc79-b1c6-412f-9ca1-d1f21ef33e32@arm.com> X-Rspamd-Queue-Id: 2096E40019 X-Rspam-User: X-Rspamd-Server: rspam02 X-Stat-Signature: wyfjjt8j8e5dykoiaorgwm64sd1dc5wt X-HE-Tag: 1691608885-245725 X-HE-Meta: U2FsdGVkX1+Kn8j2sTlDy+bBROqhjRxLHptNrq+t5AhoKqDG2RHzTDpDV+lGtyBH61gkR5+prZd8yAI/wteI0nGK1NirOCeu4NOXLKMnLoBKmRBOFDwQ12f2E7rW21atPI0D9zyg9SNxEcjkzwWQkQSU5k8V09Fi+A3zlC6bWueSUsd1um5VRawUBTIk7If19xt6vGTitncIW0yF6HrGiUf3QwYWRwJYulbk5RlNcV8XKGgnlPT14TFutDWDprrf1J+1BP7mF+09ggJQ+0Zc/A2zAntQZDWDvDJ4PvEQy6qxcDG9LLOl00Tpw28sJ5TVp+EKka2m6gpM1G/d20wzCtoj2+XtbgAPsi0e9xaYxU+4PTkgNBXTvLQnqaMawC4AcCOODQ0DInfJbniIV+UMTDdauLDWuyjF/2zhYs6+TqHzNURoMGLRclArrtSJKc2C4AXqwfZ+F4OhBWcOKCN+jvDAUjO+VrxbIGvKhR8yH+ld9FdvEiDHKWqidDCWi+FbKX8ZHSU1OXj5sPs4CKy970rQJToaippfNTtuJq8vCPRIs1OmS+4HCxHy1U6CLdroAgn1iv2zuwlL4gPHCoGO9s8DU0FROK0iDSofDbLTihNMgQif0vdkKClMesLKrtb/hDiPg4P4yddOW3XVtERAGNYPZIVLObWTmBW2tN52X09kfz6N0zAmsjFC72kn2vZgjvXFJVVd+zo2rYZlFDUAx4RZydF/Ej490h56P3Pa+h+Ro1hy89flc/NueEt9JJze4B0uFlBOUYq37L51+WJmitfX6ro0OE+K5saVoOIh6m5j133HmnkgkMfJmGPr7ynDyBxoVmbp+hXqZ17uLP/hqHuC0RAF3qfK/R9kqQh8+Y6JKeN6nuM+3LH24TOg/l8PE9qIV3385uLNY0ogy8BsZN66BDOvlfTaMx5o+b5ku1EREfUREeBXPelAKu0irD75N+igumuuLoaM5EWenFg BU0KyUKZ HDqU0yX3yXlSQomCe09HMHoPiXvkBBeMU1f3S3frEG71fMtwtwh5GsXNnV9j1NRm+mC6mX4PrhVr7sfGTt6tx5m03PhFgyv/Ag9Kpqccd87F6c7NZjyIIA2C/R0PuuPOqblnjY8CgvLkH5p8= 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: On Wed, Aug 09, 2023 at 08:07:43PM +0100, Ryan Roberts wrote: > > +++ b/mm/hugetlb.c > > @@ -1479,7 +1479,7 @@ static void __destroy_compound_gigantic_folio(struct folio *folio, > > struct page *p; > > > > atomic_set(&folio->_entire_mapcount, 0); > > - atomic_set(&folio->_nr_pages_mapped, 0); > > + atomic_set(&folio->_total_mapcount, 0); > > Just checking this is definitely what you intended? _total_mapcount is -1 when > it means "no pages mapped", so 0 means 1 page mapped? We're destroying the page here, so rather than setting the meaning of this, we're setting the contents of this memory to 0. Other thoughts that ran through my mind ... can we wrap? I don't think we can; we always increment total_mapcount by 1, no matter whether we're incrementing entire_mapcount or an individual page's mapcount, and we always call folio_get() first, so we can't increment total_mapcount past 2^32 because folio_get() will die first. We might be able to wrap past 2^31, but I don't think so. I had some other thoughts, but I convinced myself they were all OK.