From patchwork Tue Feb 18 08:15:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Maciej Wieczor-Retman X-Patchwork-Id: 13979243 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 5227FC021A9 for ; Tue, 18 Feb 2025 08:18:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E3C582800F6; Tue, 18 Feb 2025 03:18:51 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id DEC1A2800EC; Tue, 18 Feb 2025 03:18:51 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CB4002800F6; Tue, 18 Feb 2025 03:18:51 -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 AC4CF2800EC for ; Tue, 18 Feb 2025 03:18:51 -0500 (EST) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 6FEE3160979 for ; Tue, 18 Feb 2025 08:18:51 +0000 (UTC) X-FDA: 83132364462.27.D015156 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.16]) by imf23.hostedemail.com (Postfix) with ESMTP id 521C2140005 for ; Tue, 18 Feb 2025 08:18:49 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=asurgMUu; spf=pass (imf23.hostedemail.com: domain of maciej.wieczor-retman@intel.com designates 192.198.163.16 as permitted sender) smtp.mailfrom=maciej.wieczor-retman@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739866729; a=rsa-sha256; cv=none; b=GrAF/cpX8q5V+XBTJkh4Mgjhb2MJC4+zKxbvpM27tr80XS/2IHzsu4F4thhoGzOiJvFYrz xHZuQ4Lxid5ajjLNYKigG0IHIfEmxbbvbo04/5U9YbRz00udyTuxV+O16QaKGiyfsEGLt7 Dej34BZeCKHxrOim7pWX7rVhcmrJFMs= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=asurgMUu; spf=pass (imf23.hostedemail.com: domain of maciej.wieczor-retman@intel.com designates 192.198.163.16 as permitted sender) smtp.mailfrom=maciej.wieczor-retman@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1739866729; 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=Dq6MnYM3YBaeNWtWD0oUNO4zWYWOlBEkNt7N4mL1ols=; b=NcP8snX4KlOUBJj8+INU3I/0JihawLQRPyPcGIGIYqXvlbbFgRCBkzRg/eKtyc7zguz830 Fzols2RQjFTt8CyPvV9GI8w8aTiBrjx3g6T9i3bOThwLDczS0x9s9G+iW8YhW5Jp1/C7Q8 DOvTBWUl1pcBzYtpZAcuzdnC0lvjAq4= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1739866730; x=1771402730; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=A3dtCBfE4C8c/Xw6lULikavzFkti/llvChkLMpO3s2Q=; b=asurgMUuCih7isQgDwfOBI87SC6N8RogrItBKcOG6J216ods76nnAToA yq+jcjfXfpj+nC/h0xsZ7oXTXjtsSGixnYGNuOwBUG+MQSVMx7OWT3i05 lGgCnf1hCICmwIuVNHS/xpyibDBxndIpHv6Sb+xnWGkRIQO5DPe5VO5cj lyKLo06MZ67S3MOHXAFTGJMRW/QRkjWLBYT6GOs3hLWMymjnGWOGdj62b X+YZY8KHHlc5+rzUab3bL3oFm10FiRGQLaKCwlP1+1bl1hpNclhc6nrlF wTo+vfhn0CvsBAc2Fzyk58YgBdA8akch5t15GNSmR/hCdYFkAErGinZ5O g==; X-CSE-ConnectionGUID: 1XD7aXY7TlSyXIur7c55KA== X-CSE-MsgGUID: b4+rnlpOTrScI/Vx+f09aw== X-IronPort-AV: E=McAfee;i="6700,10204,11348"; a="28150323" X-IronPort-AV: E=Sophos;i="6.13,295,1732608000"; d="scan'208";a="28150323" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by fmvoesa110.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Feb 2025 00:18:48 -0800 X-CSE-ConnectionGUID: wF3cj88LRZaiNzHrGFykHQ== X-CSE-MsgGUID: O+VYLHV1SG6BS6/LzC21Dw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,199,1725346800"; d="scan'208";a="119247761" Received: from ijarvine-mobl1.ger.corp.intel.com (HELO wieczorr-mobl1.intel.com) ([10.245.245.49]) by ORVIESA003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Feb 2025 00:18:28 -0800 From: Maciej Wieczor-Retman To: kees@kernel.org, julian.stecklina@cyberus-technology.de, kevinloughlin@google.com, peterz@infradead.org, tglx@linutronix.de, justinstitt@google.com, catalin.marinas@arm.com, wangkefeng.wang@huawei.com, bhe@redhat.com, ryabinin.a.a@gmail.com, kirill.shutemov@linux.intel.com, will@kernel.org, ardb@kernel.org, jason.andryuk@amd.com, dave.hansen@linux.intel.com, pasha.tatashin@soleen.com, ndesaulniers@google.com, guoweikang.kernel@gmail.com, dwmw@amazon.co.uk, mark.rutland@arm.com, broonie@kernel.org, apopple@nvidia.com, bp@alien8.de, rppt@kernel.org, kaleshsingh@google.com, richard.weiyang@gmail.com, luto@kernel.org, glider@google.com, pankaj.gupta@amd.com, andreyknvl@gmail.com, pawan.kumar.gupta@linux.intel.com, kuan-ying.lee@canonical.com, tony.luck@intel.com, tj@kernel.org, jgross@suse.com, dvyukov@google.com, baohua@kernel.org, samuel.holland@sifive.com, dennis@kernel.org, akpm@linux-foundation.org, thomas.weissschuh@linutronix.de, surenb@google.com, kbingham@kernel.org, ankita@nvidia.com, nathan@kernel.org, maciej.wieczor-retman@intel.com, ziy@nvidia.com, xin@zytor.com, rafael.j.wysocki@intel.com, andriy.shevchenko@linux.intel.com, cl@linux.com, jhubbard@nvidia.com, hpa@zytor.com, scott@os.amperecomputing.com, david@redhat.com, jan.kiszka@siemens.com, vincenzo.frascino@arm.com, corbet@lwn.net, maz@kernel.org, mingo@redhat.com, arnd@arndb.de, ytcoode@gmail.com, xur@google.com, morbo@google.com, thiago.bauermann@linaro.org Cc: linux-doc@vger.kernel.org, kasan-dev@googlegroups.com, linux-kernel@vger.kernel.org, llvm@lists.linux.dev, linux-mm@kvack.org, linux-arm-kernel@lists.infradead.org, x86@kernel.org Subject: [PATCH v2 08/14] x86: Physical address comparisons in fill_p*d/pte Date: Tue, 18 Feb 2025 09:15:24 +0100 Message-ID: X-Mailer: git-send-email 2.47.1 In-Reply-To: References: MIME-Version: 1.0 X-Rspamd-Queue-Id: 521C2140005 X-Stat-Signature: x1aadip8mxr3cx55pfj548b5ery97puy X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1739866729-107457 X-HE-Meta: U2FsdGVkX1+NKtEB52bkBE1p08JKisHMklS8rEtwJiEXjibRnHT2MzBqskVNac6HY/4JaWVmmuiHEYWEfIgRmjWDkWmduQHXlizAI6dwVOlAcyjCoU0210ffz8eCOW6gWP2h/Uo1LBmWCoO7rp0nmERk2xHmpbVLL6gSbKvprEzeb8aU/3jvzQKBr5Uw3qJopx8bd7gMadYQo6M57IOlyp+yaz6sfiXN1q120nN+EGtCXhlduAbE/WoXVm6c62VfDoMs8m5+5l0J9TJ5zu76fflUwkRkTE6AYM52I+LvkR7cMonK+i64uwTfH7ADDF8WolQ8DHzwRWlqA6dLhgS55SA4gdLfQTxXrMotPXSADK1UCqTonOvuMb3a2OpFX8DlN+FjW42RHiWf86gIVb+KNMfKt+oHCC1IdlTAMFH/3ePzf7k21pjkSQtOnI7zb0PZa8xfzj7iL63YgN7XogYx8xo484B1lJzOnPRGhNf5+JHNd1MX74o+wKiwfWOdd25ZAi0FhC83x2GI4gmaPlPezbYXowXJ1DSit/XBfYo8hiKpHSQE3X7nFrRgoX8q1WzPvost0l4I22uTLc2gypyhFHNAM9MDrR2cDryxPsrpsUykjzV/fNg0JX1BP38hMg4WEMDXqzfXHGJ/LjDZo/fX+6cgNBsZM4bqJWSdJUEaVjrwz1NLdGDM/5J3Ygng1EamsTYfFIaLXytD3uWuUKYZrLFt1DzOPFAtIJLiy8lkzdhIw4r15y/7WKw1pCIq3fG9HfpsmXNjkhhOE/5gfQMa/PUAUxVLrtiYL47IjSZ3V6suhHl2ZLHTZFIvavfxmRWA28nEuo+yO1vFyNg+lmD9FsNvpB8bHvMKQzc7RdyHzWqHcYaot6Q8V9r+wDx6hAgjku1R86p6ZTo9Z02QlzoS0/S9uxqCcpN6PeubCE1E+l/duSplQfj6GxpCyWGL4fMJGJcdxltRmuVcHR/IkQH QkdAsbOI AdvS6uulezP4zK5NT4QRoprFMQCQ2JAX4JrUxOhSbnjSLEQ2aDUQR57IQLHhhaHkZi2+j92+VZNy4v4axfUKds0C7R15aQDi5X7pIo5H6e8ZjX1V+56KP+iboMIPcgi9rTdX4sd6VPmnzxEUdo4moVqhn/ts7WgmAtBpqYGJapgjCKSN2UZkfn3JDeQf4DHPH+/FAwCMG2f16Rkq7vt2r9WXBnbeW4BAh3hQT39LLejzW9qd0aTUYzD8UWaiihaC6m9kET0I/y90VYnvhnJyuBRY9loVxNlGQdxx/zHJiMdUDqro= 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: Calculating page offset returns a pointer without a tag. When comparing the calculated offset to a tagged page pointer an error is raised because they are not equal. Change pointer comparisons to physical address comparisons as to avoid issues with tagged pointers that pointer arithmetic would create. Open code pte_offset_kernel(), pmd_offset(), pud_offset() and p4d_offset(). Because one parameter is always zero and the rest of the function insides are enclosed inside __va(), removing that layer lowers the complexity of final assembly. Signed-off-by: Maciej Wieczor-Retman --- Changelog v2: - Open code *_offset() to avoid it's internal __va(). arch/x86/mm/init_64.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 01ea7c6df303..e555895dbb68 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c @@ -251,7 +251,10 @@ static p4d_t *fill_p4d(pgd_t *pgd, unsigned long vaddr) if (pgd_none(*pgd)) { p4d_t *p4d = (p4d_t *)spp_getpage(); pgd_populate(&init_mm, pgd, p4d); - if (p4d != p4d_offset(pgd, 0)) + + if (__pa(p4d) != (pgtable_l5_enabled() ? + __pa(pgd) : + (unsigned long)pgd_val(*pgd) & PTE_PFN_MASK)) printk(KERN_ERR "PAGETABLE BUG #00! %p <-> %p\n", p4d, p4d_offset(pgd, 0)); } @@ -263,7 +266,7 @@ static pud_t *fill_pud(p4d_t *p4d, unsigned long vaddr) if (p4d_none(*p4d)) { pud_t *pud = (pud_t *)spp_getpage(); p4d_populate(&init_mm, p4d, pud); - if (pud != pud_offset(p4d, 0)) + if (__pa(pud) != (p4d_val(*p4d) & p4d_pfn_mask(*p4d))) printk(KERN_ERR "PAGETABLE BUG #01! %p <-> %p\n", pud, pud_offset(p4d, 0)); } @@ -275,7 +278,7 @@ static pmd_t *fill_pmd(pud_t *pud, unsigned long vaddr) if (pud_none(*pud)) { pmd_t *pmd = (pmd_t *) spp_getpage(); pud_populate(&init_mm, pud, pmd); - if (pmd != pmd_offset(pud, 0)) + if (__pa(pmd) != (pud_val(*pud) & pud_pfn_mask(*pud))) printk(KERN_ERR "PAGETABLE BUG #02! %p <-> %p\n", pmd, pmd_offset(pud, 0)); } @@ -287,7 +290,7 @@ static pte_t *fill_pte(pmd_t *pmd, unsigned long vaddr) if (pmd_none(*pmd)) { pte_t *pte = (pte_t *) spp_getpage(); pmd_populate_kernel(&init_mm, pmd, pte); - if (pte != pte_offset_kernel(pmd, 0)) + if (__pa(pte) != (pmd_val(*pmd) & pmd_pfn_mask(*pmd))) printk(KERN_ERR "PAGETABLE BUG #03!\n"); } return pte_offset_kernel(pmd, vaddr);