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 3EACFEB64D8 for ; Wed, 14 Jun 2023 13:35:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 82E8D6B0074; Wed, 14 Jun 2023 09:35:33 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 7DE576B0075; Wed, 14 Jun 2023 09:35:33 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6A6C78E0002; Wed, 14 Jun 2023 09:35:33 -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 5C9776B0074 for ; Wed, 14 Jun 2023 09:35:33 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E460914067B for ; Wed, 14 Jun 2023 13:35:32 +0000 (UTC) X-FDA: 80901450504.20.55F7D34 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf25.hostedemail.com (Postfix) with ESMTP id 0A798A001E for ; Wed, 14 Jun 2023 13:35:30 +0000 (UTC) Authentication-Results: imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=peVIK5Pc; spf=pass (imf25.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1686749731; 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=kDplHThFng1ZnvUU/nrV0DZWqe549eX9hfFyICHwH8Q=; b=XFH7t1YUvehP87xs6wAZtYdtamF+l3R8DKFK4WkyWyoSA2z8PzjhsuxejjhFc/bEVm7F4l GWomvNcj58lbwywpop+XcHDrA8QvU/GOtuZoSQNxHFlLEpFBUUs0K+aInZV+fvcumcOXzb wOgTv9MC7nlGC2BaQ6iZkJf6YTiCu1s= ARC-Authentication-Results: i=1; imf25.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=peVIK5Pc; spf=pass (imf25.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1686749731; a=rsa-sha256; cv=none; b=IG4bMbQpoVxTdxylNvPhtZBcaOgme7Qnty21r5iOVFMS35XdwQvnhfRpbbDBxDIoJAp1tW wrlbE122jOYk/8O9KjXEe5cvYVwgUeainhyQ/X9pYXY3pz7eBYTIt8vAiHBHPow+c3oPWy mV0K7rpdouP/3IYbXSOWfIqMU/b4iug= Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 0E80460F45; Wed, 14 Jun 2023 13:35:30 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0713C433CA; Wed, 14 Jun 2023 13:35:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1686749729; bh=81ZlQN2KCaIJsbaaGHZ2hKMohISmlbSD+ssqzisoAQE=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=peVIK5PcFaRM99or9IKjg5Wk1GpROr9ctyT8BIC08WEGhT/YvEFdtyhqzVHUa/AJj e0i1V5xO3S+nkbZMN2Z1j+Bn1zFA3bcGptvRkcKcxOtQ1DiUiH/SRvFWkjYuPvNtOb /7PZZr5SP19VfVlFD96OM/KULQ1zOIX2Xbubj4bVzLGTDR+801nenrylY8DxDwa57O 6Uw9KCAyHqA9nB1qo3GINyvqzZNtOwnsJDGtTX7sr0o8aiGfHvWm3PF1wyD410WZI6 eWxsBLAJy2LJHLpDUj97I0afV+G5xEfwOHfY+jLMTVk+L4qUJ/WcbncB5RrE8B814w cPPJ2HH5q8yYA== Date: Wed, 14 Jun 2023 16:34:51 +0300 From: Mike Rapoport To: "Vishal Moola (Oracle)" Cc: Andrew Morton , Matthew Wilcox , linux-mm@kvack.org, linux-arch@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-csky@vger.kernel.org, linux-hexagon@vger.kernel.org, loongarch@lists.linux.dev, linux-m68k@lists.linux-m68k.org, linux-mips@vger.kernel.org, linux-openrisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, sparclinux@vger.kernel.org, linux-um@lists.infradead.org, xen-devel@lists.xenproject.org, kvm@vger.kernel.org, Hugh Dickins Subject: Re: [PATCH v4 04/34] pgtable: Create struct ptdesc Message-ID: <20230614133451.GC52412@kernel.org> References: <20230612210423.18611-1-vishal.moola@gmail.com> <20230612210423.18611-5-vishal.moola@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230612210423.18611-5-vishal.moola@gmail.com> X-Rspamd-Queue-Id: 0A798A001E X-Rspam-User: X-Stat-Signature: ayj4j137npsbta835m6771965sgiiopg X-Rspamd-Server: rspam01 X-HE-Tag: 1686749730-756487 X-HE-Meta: U2FsdGVkX19btvYZxlogc/W0l/x/gptVUfBW8oqrg/Oa4gXgTw9Pa2vhRYwbJvhxqDqfb1B8A8LLLimcPF5shB3wO9jP8axbxR3htfyTOt7IhgTfAJcg7qQKGSHOnMRZn1kM56OLJuryUn3jU23s37wPZOe2OEq60XHlP3KjjcxHzKtygvnWI7biVjGbMaRV/lzRLVH3QpVAKaHrk4ic5jEkBjqAb5ma+/c9Hjd9pWxRkjAMYdxZ9mfu0JO3RQPa+3rzYWfStY8KQK9UJE1gsRZptmFAiGxjAkKfs5iQxlCRio8ZgqhspZ8eBDrv5NsgtE21QbWoU1WDfsIn91gcs/OL1lpyey0RyLWSyVZZNcnt1afI/x8Mbfw0FjfE2MShgAWBXADPWoUxw+/gBsR5nkfbVN9TEQbf5h+WMtUcg8fbdQGALsJQygCpG2HlivGSZa+r9JcWwK9PIW793vFsbhDen6TdkYKScpij4SSj56G0SQ9npA0rx2lZspDvz15ZIMpadAO/RTpEdh4Xc3NCmgm3lxA2Jk5R8zZ1f8Gbb+VtU6ZlK8jZUGrbjZbBGY7WvoRQBqraPAv1xTd3jT9dOhvX1PbYI6cBLLGVZ/rMD9GrGmmJ7gUKlJFbQZ+0oTi+X8ZvKKMJvhpB45Z3jYDu37yNsz4BX+rKf1+XC6v4putGYoc1t8Z+z3guDiRB/rjfIwQ54gP8/6AbrId+x1OdayCYJyJ901LEmDEtyUYNvilQdSvTsKlRmuZVzMA7REXG8b3SD+1JIwJhnGi0GObd1BXVfDyXbPZolbpspQMEljivQTBqNPM4S8X4ksQeTBhtoeHsotIDT5Zwq0pVfl97wE3nA3/SE2QqXDElLqgT0Th5P5mLEglVPN+vjoPsKlTGu4HVN+Nzdoc657JkHYopoW12CPVIqnyWloiUmMzSJLmM4n0vecunq9PFrMZgVKX47NQd6H6e/Y90QxoU0/N KrxSzfow sVTEHN7atw80oRJumJi0OO0YC9c6IMHpfKezJx41BVtGBb0u1k4W90Qme3ZMrLvpET1sYNPBZ4ArPfWxW9pbHzdNAYs8VxhEe6Vcxsd4OD/DZrflyDKJm2wWPujB0Pp2H+qmTw9wbx11YoIO8TIGpcLPiCFM+0npPv8urhGQKNGlKDHj3vm3ABKGjhIEVLQCY4yC47+KFQxcLn1vbSGYpxrJ39BQ3Njpknpg7TXm1S6NWuDEAXb63j9qqFRrBcNr+bxOADT431yntKRhHAiQ0FebcyJEXgK7G1u7CVQ1U9w7IAeXpXBh4tdnoOoBnk8dbn76OcIfnvCeWID/GJJt1z2KzBJ1l0xtWDqfMYBqEALbAauTSlpHEal25lCDdhSczFeoFzte+abJCLHLr71WvB4fp805wk1r3ntBTuvPcW2P+sD2dP5lzxI9RtA4CLYguqKhG 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 Mon, Jun 12, 2023 at 02:03:53PM -0700, Vishal Moola (Oracle) wrote: > Currently, page table information is stored within struct page. As part > of simplifying struct page, create struct ptdesc for page table > information. > > Signed-off-by: Vishal Moola (Oracle) Acked-by: Mike Rapoport (IBM) > --- > include/linux/pgtable.h | 51 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 51 insertions(+) > > diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h > index c5a51481bbb9..330de96ebfd6 100644 > --- a/include/linux/pgtable.h > +++ b/include/linux/pgtable.h > @@ -975,6 +975,57 @@ static inline void ptep_modify_prot_commit(struct vm_area_struct *vma, > #endif /* __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION */ > #endif /* CONFIG_MMU */ > > + > +/** > + * struct ptdesc - Memory descriptor for page tables. > + * @__page_flags: Same as page flags. Unused for page tables. > + * @pt_list: List of used page tables. Used for s390 and x86. > + * @_pt_pad_1: Padding that aliases with page's compound head. > + * @pmd_huge_pte: Protected by ptdesc->ptl, used for THPs. > + * @_pt_s390_gaddr: Aliases with page's mapping. Used for s390 gmap only. > + * @pt_mm: Used for x86 pgds. > + * @pt_frag_refcount: For fragmented page table tracking. Powerpc and s390 only. > + * @ptl: Lock for the page table. Do you mind aligning the descriptions by @pt_frag_refcount? I think it'll be more readable. > + * > + * This struct overlays struct page for now. Do not modify without a good > + * understanding of the issues. > + */ > +struct ptdesc { > + unsigned long __page_flags; > + > + union { > + struct list_head pt_list; > + struct { > + unsigned long _pt_pad_1; > + pgtable_t pmd_huge_pte; > + }; > + }; > + unsigned long _pt_s390_gaddr; > + > + union { > + struct mm_struct *pt_mm; > + atomic_t pt_frag_refcount; > + }; > + > +#if ALLOC_SPLIT_PTLOCKS > + spinlock_t *ptl; > +#else > + spinlock_t ptl; > +#endif > +}; > + > +#define TABLE_MATCH(pg, pt) \ > + static_assert(offsetof(struct page, pg) == offsetof(struct ptdesc, pt)) > +TABLE_MATCH(flags, __page_flags); > +TABLE_MATCH(compound_head, pt_list); > +TABLE_MATCH(compound_head, _pt_pad_1); > +TABLE_MATCH(pmd_huge_pte, pmd_huge_pte); > +TABLE_MATCH(mapping, _pt_s390_gaddr); > +TABLE_MATCH(pt_mm, pt_mm); > +TABLE_MATCH(ptl, ptl); > +#undef TABLE_MATCH > +static_assert(sizeof(struct ptdesc) <= sizeof(struct page)); > + > /* > * No-op macros that just return the current protection value. Defined here > * because these macros can be used even if CONFIG_MMU is not defined. > -- > 2.40.1 > > -- Sincerely yours, Mike.