From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D84E217732 for ; Fri, 27 Oct 2023 11:56:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Authentication-Results: smtp.subspace.kernel.org; dkim=none 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 6BB811424; Fri, 27 Oct 2023 04:57:25 -0700 (PDT) Received: from e125769.cambridge.arm.com (e125769.cambridge.arm.com [10.1.196.26]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id D65D03F738; Fri, 27 Oct 2023 04:56:41 -0700 (PDT) From: Ryan Roberts To: Ard Biesheuvel , Ard Biesheuvel , Will Deacon , Catalin Marinas , Marc Zyngier , Oliver Upton , Mark Rutland , Anshuman Khandual , Kees Cook , Joey Gouly , Suzuki K Poulose , James Morse , Zenghui Yu Cc: Ryan Roberts , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev Subject: [RFC PATCH v1 0/3] Update tlb invalidation routines for FEAT_LPA2 Date: Fri, 27 Oct 2023 12:56:31 +0100 Message-Id: <20231027115634.1432154-1-ryan.roberts@arm.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: kvmarm@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Hi All, As raised yesterday against Ard's LPA2 series [1], we need to address the TLBI changes to properly support LPA2 before Ard's changes get merged. So far those changes have been part of my KVM LPA2 series [2]. So this is an attempt to split the TLBI changes to make them independent. The idea is that this series would go in first, then Ard's and the rest of my series can race eachother and it doesn't really matter who wins. I've attempted to address all of Marc's feedback against the versions of these patches posted at [2], including adding benchmark data (see patch 1). Although if people are still nervous that this could regress non-lpa2 performance in some cases, I could rework so that there are lpa2 and non-lpa2 variants of __flush_tlb_range_op(), and the correct version is chosen at the higher level (based on lpa2_is_enabled() / kvm_lpa2_is_enabled()). It turns out that we won't be able to key LPA2 usage off the same static key for both the kernel and kvm usage because the kernel usage additionally depends on CONFIG_ARM64_LPA2 being enabled. So I've introduced 2 stub functions (lpa2_is_enabled() and kvm_lpa2_is_enabled()) to advertise it. Ard already defines and implements lpa2_is_enabled() in his series, so there will be a minor conflict to resolve there. I plan to define kvm_lpa2_is_enabled() to be the static key for kvm in my series. Marc, would you be happy with this approach? Anyway, I wanted to put this out there as an RFC. If we are happy with it, then I'll re-post on 6.7-rc1. [1] https://lore.kernel.org/linux-arm-kernel/5651bb31-9ef6-4dfc-b146-64606279bbf7@arm.com/ [2] https://lore.kernel.org/kvmarm/20231009185008.3803879-1-ryan.roberts@arm.com/ Thanks, Ryan Ryan Roberts (3): arm64/mm: Modify range-based tlbi to decrement scale arm64/mm: Add lpa2_is_enabled() kvm_lpa2_is_enabled() stubs arm64/mm: Update tlb invalidation routines for FEAT_LPA2 arch/arm64/include/asm/kvm_mmu.h | 3 + arch/arm64/include/asm/pgtable-prot.h | 2 + arch/arm64/include/asm/tlb.h | 15 ++-- arch/arm64/include/asm/tlbflush.h | 100 ++++++++++++++++---------- 4 files changed, 78 insertions(+), 42 deletions(-) -- 2.25.1