From patchwork Wed Feb 26 12:06:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ryan Roberts X-Patchwork-Id: 13992227 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 6F97FC021B8 for ; Wed, 26 Feb 2025 12:07:31 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C0CCA280046; Wed, 26 Feb 2025 07:07:30 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BBFA1280044; Wed, 26 Feb 2025 07:07:30 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A5C84280046; Wed, 26 Feb 2025 07:07:30 -0500 (EST) 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 810A8280044 for ; Wed, 26 Feb 2025 07:07:30 -0500 (EST) Received: from smtpin02.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 35B031413FC for ; Wed, 26 Feb 2025 12:07:30 +0000 (UTC) X-FDA: 83161971060.02.7E88B8F Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf19.hostedemail.com (Postfix) with ESMTP id 87A641A0014 for ; Wed, 26 Feb 2025 12:07:28 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com; dmarc=pass (policy=none) header.from=arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1740571648; a=rsa-sha256; cv=none; b=K3ZOPodWlE5QrXUlp3juWWTpi/CbKzY7FGMJXWyLzgwrbK3nqqcwdFTNdcME/2OJ7WH1Gu bhKqqfBB4t62CDTTuZe/NcAMetp+/fvyGsIZ0sPKgP854bunviGQcojIKzbXuVK0TDd0AZ PLPZr7y4DYZAL8HAZM30Y+a1VcNymBY= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=none; spf=pass (imf19.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@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=1740571648; 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; bh=XWGx/yAY5Qj9jMZ9Dgbjm1iQesk6QnuJ8XxpH6HOHRU=; b=WZLvRTGoDkT5vBJygXcQHxW3URLyPWomiN5yK8v3qzia5XPAu3bnvp2UBFwSr2fyLGOEW2 aKN6csBvYQc9RS1zXdLOpsemD73dogvajxw1C0HtbxyBQD7HjpRQzGCMQSrd9dVjzcWk5F lg7O12YjT7Fcnu3BEDwMfDSt9IWDqOQ= 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 D2B1E13D5; Wed, 26 Feb 2025 04:07:43 -0800 (PST) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.27]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 96BB13F5A1; Wed, 26 Feb 2025 04:07:22 -0800 (PST) From: Ryan Roberts To: Catalin Marinas , Will Deacon , Huacai Chen , WANG Xuerui , Thomas Bogendoerfer , "James E.J. Bottomley" , Helge Deller , Madhavan Srinivasan , Michael Ellerman , Nicholas Piggin , Christophe Leroy , Naveen N Rao , Paul Walmsley , Palmer Dabbelt , Albert Ou , Heiko Carstens , Vasily Gorbik , Alexander Gordeev , Christian Borntraeger , Sven Schnelle , Gerald Schaefer , "David S. Miller" , Andreas Larsson , Arnd Bergmann , Muchun Song , Andrew Morton , Uladzislau Rezki , Christoph Hellwig , David Hildenbrand , "Matthew Wilcox (Oracle)" , Mark Rutland , Anshuman Khandual , Dev Jain , Kevin Brodsky , Alexandre Ghiti Cc: Ryan Roberts , linux-arm-kernel@lists.infradead.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v3 3/3] arm64: hugetlb: Fix flush_hugetlb_tlb_range() invalidation level Date: Wed, 26 Feb 2025 12:06:53 +0000 Message-ID: <20250226120656.2400136-4-ryan.roberts@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250226120656.2400136-1-ryan.roberts@arm.com> References: <20250226120656.2400136-1-ryan.roberts@arm.com> MIME-Version: 1.0 X-Stat-Signature: hos1odi9w9ghkuo63wn9c6ketigqrxru X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 87A641A0014 X-Rspam-User: X-HE-Tag: 1740571648-223452 X-HE-Meta: U2FsdGVkX1877OKMlrcVK9d0eqx6T90n93pq36xJasfXG1eSwPLmENHj6peekEqtCY0hcMfRt1YkUdSlszw0je5/COK3P3bcKAP7iHlk6RtHPh4bI3M7hG3ffWyS8Q4M3rNvbqCan3lodbz7+t0cyEttHnB4puhQXz+067Cp+MjETrormLrBvDafzjdgx7l87nb8i3DszA+5G0os7BjNj1ZUTMEOpmI52HSB9D7Im07eWOSVR3/sL7QTw5igglCWlqVq69SME/CVUoE8qghxQ5FtDn8IvAv4lEM427i0qCXjjpe9NQq7Iffghf2Ug9jRqzrP0fdGIDKxinwYoSwy/JDpCRbaI1xniLGsZmO4C32Gv+xboR5qGjpkOt0UUBjwGVOr23ziK4IoDfZSIXjVNhZq+G48i/v0CWmdfaLeQJ0Ew5z9YNi0/nTdWlqXQyIxhJM4hkXbn4H934yFMM3d1/tjuukZv+wrULFMGBgbF8olUpIMjAx9aLMUDETPtkJa06/zUNzUzqjOGp0kOs07GbGQMoXvHkX5XinXVF/KQlCufTaRSVa9nwd8cNwrD/Z58nSVSOI6lIkQbxDj9Qna3/IgaTeLJTrkl9fx+dgBWPi+RAW78DSRi21QMEBCmyjMtEztXK1vE7a29hUIAYHw2KFvhtuBrfEhBhMNnQ63ZPYAdymOZ9QDe6a34QIXUc7v/ZWwulPQiKhmrRZOpobFEtiTlItT1Y/YurHNLdxPh2Zfx/CkMAiZQdMLQF4Yg75R2gnL/TsiySBN86kVNXE9Jtno4DRESwzZCHx0eE/GGEoGZ1ZAHdbvVdGC+mTKLOZ9b1/Q+RNdOzjAp7vzcOmAMqVi3oj0Pe+BBmPiG/gyE3woERlAlm4m2wHoLManJSintKr3gWwicJYonJHX+4krcxozEYT9cKWcJ/1ISLvtrYB7nBLHm+6Pr3J+FtqWyA7CblQt7XoArgAvKTZeOp/ OqJdcAzq uTm6+1EQbIvgL9GJoD27IY9cHKgQw+KXGzS/1lVMRgF4eVAQF1YR3EGq2k35nfb9EEfQwenEkoCEn+bsBg8p+b+ZurwDoEJIch5BkWVQiqD/Ykk5LVfc+oTA4Qu3VsmWXJhNu6iW+K8gJnEermo5TkoV/k1P/RP1Kja+ITnKwQmMEch+tv1akSqgRVBdzYIDZlzww539wpiatficXsRkzXy2okJefitOf+yfn 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: commit c910f2b65518 ("arm64/mm: Update tlb invalidation routines for FEAT_LPA2") changed the "invalidation level unknown" hint from 0 to TLBI_TTL_UNKNOWN (INT_MAX). But the fallback "unknown level" path in flush_hugetlb_tlb_range() was not updated. So as it stands, when trying to invalidate CONT_PMD_SIZE or CONT_PTE_SIZE hugetlb mappings, we will spuriously try to invalidate at level 0 on LPA2-enabled systems. Fix this so that the fallback passes TLBI_TTL_UNKNOWN, and while we are at it, explicitly use the correct stride and level for CONT_PMD_SIZE and CONT_PTE_SIZE, which should provide a minor optimization. Cc: stable@vger.kernel.org Fixes: c910f2b65518 ("arm64/mm: Update tlb invalidation routines for FEAT_LPA2") Reviewed-by: Anshuman Khandual Reviewed-by: Catalin Marinas Signed-off-by: Ryan Roberts --- arch/arm64/include/asm/hugetlb.h | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h index 03db9cb21ace..07fbf5bf85a7 100644 --- a/arch/arm64/include/asm/hugetlb.h +++ b/arch/arm64/include/asm/hugetlb.h @@ -76,12 +76,22 @@ static inline void flush_hugetlb_tlb_range(struct vm_area_struct *vma, { unsigned long stride = huge_page_size(hstate_vma(vma)); - if (stride == PMD_SIZE) - __flush_tlb_range(vma, start, end, stride, false, 2); - else if (stride == PUD_SIZE) - __flush_tlb_range(vma, start, end, stride, false, 1); - else - __flush_tlb_range(vma, start, end, PAGE_SIZE, false, 0); + switch (stride) { +#ifndef __PAGETABLE_PMD_FOLDED + case PUD_SIZE: + __flush_tlb_range(vma, start, end, PUD_SIZE, false, 1); + break; +#endif + case CONT_PMD_SIZE: + case PMD_SIZE: + __flush_tlb_range(vma, start, end, PMD_SIZE, false, 2); + break; + case CONT_PTE_SIZE: + __flush_tlb_range(vma, start, end, PAGE_SIZE, false, 3); + break; + default: + __flush_tlb_range(vma, start, end, PAGE_SIZE, false, TLBI_TTL_UNKNOWN); + } } #endif /* __ASM_HUGETLB_H */