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 4B5BDC4345F for ; Thu, 11 Apr 2024 14:10:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DA4526B0098; Thu, 11 Apr 2024 10:10:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D544C6B0099; Thu, 11 Apr 2024 10:10:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C41D86B009A; Thu, 11 Apr 2024 10:10:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id A48566B0099 for ; Thu, 11 Apr 2024 10:10:34 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 50E0DC0BC3 for ; Thu, 11 Apr 2024 14:10:34 +0000 (UTC) X-FDA: 81997436388.29.B4D0DF7 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf20.hostedemail.com (Postfix) with ESMTP id 398F91C0026 for ; Thu, 11 Apr 2024 14:10:31 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=oDiANBVq; dmarc=none; spf=none (imf20.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=1712844632; 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=erzRazoUFf0ozboYbu3QcZz8RyM7ffSzd+JFbM6Ge+Q=; b=TxXw0Oj5Vaxb5xp3LgQLsTbtf9jU2ie3kEjFIC/Zt0v0em2ofXHGKQXsGjF9LBHTqv0dT4 b1uy0FM1n2TVaq87NZkYKx/3lWWWl7X4q4/hGi6cKI9fX2THaIvT098WJAFvurTVas1AIc flhG5doUwtdaWCEcrc5ltH9OeEYu21E= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=oDiANBVq; dmarc=none; spf=none (imf20.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=1712844632; a=rsa-sha256; cv=none; b=Lo/V6cEHk7r6StMWjz/mTx9vaxeGErOAKR8vKPFj9riPEoZbx+8BDCZIAqnp88lSvlwss9 KBB8wEVMCBR64Fi1sy8oc64DBMwL4DBO+JQ/ItieQf8QvFJOap1FGBLcMXe4Tkc3SbB9yj icEl4o5zd2+UnJ95bO1If8fNx5SDJEw= 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=erzRazoUFf0ozboYbu3QcZz8RyM7ffSzd+JFbM6Ge+Q=; b=oDiANBVqfwpUInZAI+qxzHiKs5 /Fl/0EBc8p6ZnhZkIiPrXZZ3NQ+4hVXY+UfC+oKQwgIH5215GgNWwbgLWqQIzUp2sNOQk1x8zSeje BllT0miOuQz2XJa8UB0X/HC9IbPZCPR/NqQxjUeQQeIQ4jxAdwu5rK3k5swzrDN7XWoD/LnNzlCoK EWR7cLFWf/Zvz3FJPiXisxDqWcR+/+ltNj1XufULs+9d7Bo896HMc9SZnHHIJZ/i+MXU02q31llB/ YlaCfOegPFTe5lCal2aE/znH6zb2wffKGdgbyQvb2kGnpgkQLhvA9QFjbxFFKnFKZYtFP7j6KCeNL FOprjeqw==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1ruv8B-0000000767L-2DcS; Thu, 11 Apr 2024 14:10:23 +0000 Date: Thu, 11 Apr 2024 15:10:23 +0100 From: Matthew Wilcox To: Alistair Popple Cc: linux-mm@kvack.org, david@fromorbit.com, dan.j.williams@intel.com, jhubbard@nvidia.com, rcampbell@nvidia.com, jgg@nvidia.com, linux-fsdevel@vger.kernel.org, jack@suse.cz, djwong@kernel.org, hch@lst.de, david@redhat.com, ruansy.fnst@fujitsu.com, nvdimm@lists.linux.dev, linux-xfs@vger.kernel.org, linux-ext4@vger.kernel.org, jglisse@redhat.com Subject: Re: [RFC 07/10] mm: Allow compound zone device pages Message-ID: References: <9c21d7ed27117f6a2c2ef86fe9d2d88e4c8c8ad4.1712796818.git-series.apopple@nvidia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9c21d7ed27117f6a2c2ef86fe9d2d88e4c8c8ad4.1712796818.git-series.apopple@nvidia.com> X-Rspamd-Queue-Id: 398F91C0026 X-Rspam-User: X-Rspamd-Server: rspam05 X-Stat-Signature: 5pc4akkwz8168nzhfk9dme6peh1xrc8w X-HE-Tag: 1712844631-465254 X-HE-Meta: U2FsdGVkX18d3YUBpQ5cTrBTviIwQ20h919lkIXSXFsML91WXGjLPY5hxTvuJkELdKNBK3iRtVJkboowQNKKdIJ3ku0Al/3ceLM3WKkHieVffAgrDF6d1q4EpTS0DEFyCUmKkusja5o7b4KSHABb+4FbPReF5y0/kKcEFSjsTQ9ql1IgtbgvnWS48f622cpxoaATFIyyZw/z5Qa778TKzLv5N7KHF9rJEze5EALm4pkr92tHsTzEy1ecsjcVASFmmi4vI9byEdLFehMvzom7rgMHRrg5v41rtyTozHGyXSmwuMkx4fIWG0PNzoYmBlTRtRG4RDWURweqQjvDhgyYi5m8sMKOp1AYRsLXmBfXmWpo/u7MOXtF3ag4SxR1c8OQubn4DY3RMAeXMp67Wkya6HLwy353C6X82hL/vWFwdBw75LB87ynF+kCv7Sy5UwRzFg60t2vY3R+oNMeCoOaLFkODUHS+SIf18vYg8hsb8p2uar0ECcxZC89kM+13H7aTNfDeEIT3OBIQRS1zJwGPyp0U1TU0o4ijMZfb0Jug/uyTZpM9uCstWFsYzKaIZOHrDKxSAQxf/aBpjXohJK+vZR8+58bzj/ZXEAkb2SOee/kkvLvLp6zQrKtDxCCmxfYnJRGYSrLFYjRBMz4wJp0rU2VDMnxIK3UCaLaJQHN+ExUL66YpsdCOoqvCQ1D9mo+rdTU8MGkmnr6OrCPmzH+j+Jlqe3duLgQjgnMKVptxo5jX4aYBFY1IP/OgMmnNrcvClRGLyFHIOIyW6gA4eNwQ7er2xvOyozDud2m1VDzlXIZVPz4NP0oF0zLMpGwuWwGhmiqSycGc1fhXHAAbAK77Lg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000003, 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, Apr 11, 2024 at 10:57:28AM +1000, Alistair Popple wrote: > Supporting compound zone device pages requires compound_head() to > distinguish between head and tail pages whilst still preserving the > special struct page fields that are specific to zone device pages. > > A tail page is distinguished by having bit zero being set in > page->compound_head, with the remaining bits pointing to the head > page. For zone device pages page->compound_head is shared with > page->pgmap. > > The page->pgmap field is common to all pages within a memory section. > Therefore pgmap is the same for both head and tail pages and we can > use the same scheme to distinguish tail pages. To obtain the pgmap for > a tail page a new accessor is introduced to fetch it from > compound_head. Would it make sense at this point to move pgmap and zone_device_data from struct page to struct folio? That will make any forgotten places fail to compile instead of getting a bogus value.