From patchwork Mon Apr 7 05:31:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anshuman Khandual X-Patchwork-Id: 14039720 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 3BCBEC36010 for ; Mon, 7 Apr 2025 05:31:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1FDB66B0005; Mon, 7 Apr 2025 01:31:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 186836B0007; Mon, 7 Apr 2025 01:31:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 027326B0008; Mon, 7 Apr 2025 01:31:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id D615E6B0005 for ; Mon, 7 Apr 2025 01:31:27 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id B4989140BFF for ; Mon, 7 Apr 2025 05:31:28 +0000 (UTC) X-FDA: 83306125056.04.C1160D1 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf16.hostedemail.com (Postfix) with ESMTP id 84DDE18000B for ; Mon, 7 Apr 2025 05:31:26 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=none; spf=pass (imf16.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744003887; 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:references; bh=uKEsnQRm4iZkdbgqRHGKxOdH3c1QC+bpFfLwfztEk/E=; b=TT5XxlgCksBVSSujtwWXbn8hBntb5Ei5GT+nvB9UdAzo2tH3adGvkBxXN5RGdn7mX7J/jI tAWLfmzJQEGjjnQ9r8lyp51nqp/uQM/JRYR6rd0C7VD5uniRgeD3l07bebLVr8r0k0x2nV Aofcnmj+IypnuQ+hF1bLlIbNP4s5yNg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744003887; a=rsa-sha256; cv=none; b=cG1dzAz+jnxU2PhrJkP+J3ExfMrgVJi0R9S/GUjPuAtjL4i5qboWSR68dFetMEnUAYmJwN 7Bnv5DFuZuI9fEpRme3SBICjXi3VoIOjJi8ROxQJ6hP6TCXdqCpMlpKy9ylGUpKIVrKU5Q v2jnK7Tc2pZLR2yeeZIVKolLA3fi6gs= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=none; spf=pass (imf16.hostedemail.com: domain of anshuman.khandual@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=anshuman.khandual@arm.com; dmarc=pass (policy=none) header.from=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id B171F106F; Sun, 6 Apr 2025 22:31:26 -0700 (PDT) Received: from a077893.blr.arm.com (a077893.blr.arm.com [10.162.42.8]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 527C93F6A8; Sun, 6 Apr 2025 22:31:18 -0700 (PDT) From: Anshuman Khandual To: linux-mm@kvack.org Cc: mark.rutland@arm.com, Anshuman Khandual , Catalin Marinas , Will Deacon , Steven Price , Ryan Roberts , Madhavan Srinivasan , Nicholas Piggin , Paul Walmsley , Palmer Dabbelt , Gerald Schaefer , Heiko Carstens , Peter Zijlstra , Thomas Gleixner , Ingo Molnar , Alexander Gordeev , Andrew Morton , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org Subject: [PATCH V2 0/3] mm/ptdump: Drop assumption that pxd_val() is u64 Date: Mon, 7 Apr 2025 11:01:10 +0530 Message-Id: <20250407053113.746295-1-anshuman.khandual@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: 84DDE18000B X-Stat-Signature: 94d3rircq3csepo3t7n53hzhfwi89uxe X-HE-Tag: 1744003886-553078 X-HE-Meta: U2FsdGVkX19JJO3F69yE2lkHqvWaBEd0cGx4Kym4FnDSWnSfngXtkKiIMLhgHBmG0IYWmX18LHTCBR7hHxb1DIrLfiFXhexJ8W/5AKhqWP9PYIucIVyWx53UeRqWgiDcRW2eqPPgAo43YjIDDG8TxzCG5o5u81W1XPQibHefv6AYGsCRpoU6TBTTYD4QAhqsCLDDUp7a99ycLl0H5uDL6tl5EzpRoQ22jvCQ89QIc5z/WvgayqJITrEXa9zt/0DRp/CfZCFJiVD/tKuzOTCLxy1E46JcSGAnN407k7rBOjJGOPa4txvzONgoGU3jRXeUALxix3k8AfVztRAuQh36OtQO2nvWSSV6Hbf5aoXWTwWj1rXK/8eluQDL24sLGpg6kf0EtxoCO7maF26CmnolOaqTHNQu5g4thhGqtHjaHdoPq/yHSeEc2H5i6M2O/11+m4Vrsy+rP3nx2JS7HMCZKEKQEZk//CbcHN4BKbGVOqTMaW/nn1nKM3Cl5PXEjMzBYFK+spzEiFEf12JjsbBd8WpvSAYkYS8DXmwLngYOAJqXqSQSh2VPp1azNXozoBZSc8PBatb/5D5tl2TEsXrApDx8cKd3XuzsoG4zSUefwDotNjcDtkbtrAjsP0SWD83ILlfQTbG8XcIDMumayOyxwlqL5x/ewOumE7+Ntq7/brRt78/7Qx7uakLmaSoT2XRWqz7nukEw4cYhZP/3nRyNTQ8RvLqa9iP5elt09AjTlVaNX26Q66Md1zCDzv2nFsuL+fdSlkoOrQ1PVs6LriDQWiBKWlIGikSDyZUSJYWVhy6dR2WLkqVgg8dhVJZuf5q7O43ReSHtb3oNHzk+XmVTJNOnJl7b0T0Xn69w6/sGBwXhHIQi7jzssc9uDvpYmPiW0jJdFgp4+UjL+26AzwoT6oOQqhKXM8kRvuR25dKTlzBZoNHA+Y46PD0E01koYJkCksYHC3VEIxQBTTVD5Qu M1H5w2Jg H3SJxU3vD791L//AVq6Z7o25wowB7R7G5ZxEwWySWnTRn9v6Ly8oaxe2AKB2YGDV1GZMoVUEid95whOeLofLyqQjw3Egc5Q26ltcComlNdWLKQN6amLexae5Myp8D4Ca7oFD+dbVaQYriPNLH1OGzmi0bK5nSerCBENfp/XVCWuNJUSn4K5oqohm8TYzRZNUbQlYtA+7g8VnwtGT/pNnkFdID72TJqWIfmWBJJijiK4Nn46zWZIoE48oFd8f0yMTotScD0rWGp78cc9z+wg0gmOhhBwKAWGBxB4Fbhh8UUPOkuJvyAfVDS/XueHFg5imKMiMbBbsCte2u5qlCJRI+0R/VXd+IkpLYkvt0x26MC9iVg1RVcq3ULc4Y6HZBLeTiRbz4sG1sCyjF7KPn8dpONp59n8ZB+3xjqo9yH9luDHH1T0rs0HuF9xIOjY5kEndhdiUDajU3XCERq5RoNZNd7Zoxi2g8sNngbPlraOzeBNzuLMOEO5/HLEug6ja4PRp8C41t0w5XYSITY5BGaisHU63wLow47hvqZUNi6Chm9mic+5CtbA2p3e4aoMUr7XYQlDsAOmnw4GFzMLSNvnecs4C6ydiTi2QhZJvu1rn9xGvJNGF59V9jzwKtpNOzoNauJYBpQomkaJaEVsv56mYGirRoSg== 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: List-Subscribe: List-Unsubscribe: Last argument passed down in note_page() is u64 assuming pxd_val() returned value (all page table levels) is 64 bit - which might not be the case going ahead when D128 page tables is enabled on arm64 platform. Besides pxd_val() is very platform specific and its type should not be assumed in generic MM. A similar problem exists for effective_prot(), although it is restricted to x86 platform. This series splits note_page() and effective_prot() into individual page table level specific callbacks which accepts corresponding pxd_t page table entry as an argument instead and later on all subscribing platforms could derive pxd_val() from the table entries as required and proceed as before. Define ptdesc_t type which describes the basic page table descriptor layout on arm64 platform. Subsequently all level specific pxxval_t descriptors are derived from ptdesc_t thus establishing a common original format, which can also be appropriate for page table entries, masks and protection values etc which are used at all page table levels. This series has been tested on arm64 platform but it does build on other relevant platforms (v6.15-rc1). Changes in V2: - Added a patch to split effective_prot() callback per Alexander - Added a patch to define ptdesc_t data type on arm64 platform per Ryan Changes in V1: https://lore.kernel.org/all/20250317061818.16244-1-anshuman.khandual@arm.com/ - Added note_page_flush() callback and implemented the same on all subscribing platforms - Moved note_page() argument change from u64 to pteval_t on arm64 platform from second patch to the first patch instead Changes in RFC: https://lore.kernel.org/all/20250310095902.390664-1-anshuman.khandual@arm.com/ Cc: Catalin Marinas Cc: Will Deacon Cc: Steven Price Cc: Ryan Roberts Cc: Madhavan Srinivasan Cc: Nicholas Piggin Cc: Paul Walmsley Cc: Palmer Dabbelt Cc: Gerald Schaefer Cc: Heiko Carstens Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Ingo Molnar Cc: Alexander Gordeev Cc: Andrew Morton Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-riscv@lists.infradead.org Cc: linux-s390@vger.kernel.org Cc: linux-mm@kvack.org Anshuman Khandual (3): mm/ptdump: Split note_page() into level specific callbacks mm/ptdump: Split effective_prot() into level specific callbacks arm64/mm: Define ptdesc_t arch/arm64/include/asm/pgtable-types.h | 20 +++++--- arch/arm64/include/asm/ptdump.h | 24 ++++++--- arch/arm64/kernel/efi.c | 4 +- arch/arm64/kernel/pi/map_kernel.c | 2 +- arch/arm64/kernel/pi/map_range.c | 4 +- arch/arm64/kernel/pi/pi.h | 2 +- arch/arm64/mm/mmap.c | 2 +- arch/arm64/mm/ptdump.c | 50 ++++++++++++++++-- arch/powerpc/mm/ptdump/ptdump.c | 46 ++++++++++++++++- arch/riscv/mm/ptdump.c | 46 ++++++++++++++++- arch/s390/mm/dump_pagetables.c | 46 ++++++++++++++++- arch/x86/mm/dump_pagetables.c | 71 +++++++++++++++++++++++++- include/linux/ptdump.h | 15 ++++-- mm/ptdump.c | 62 ++++++++++++++-------- 14 files changed, 339 insertions(+), 55 deletions(-)