Commit 1fe29f6d authored by Gavin Shan's avatar Gavin Shan Committed by Kefeng Wang
Browse files

arm64: tlb: Allow range operation for MAX_TLBI_RANGE_PAGES

mainline inclusion
from mainline-v6.10-rc1
commit 73301e464a72a0d007d0d4e0f4d3dab5c58125bf
category: performance
bugzilla: https://gitee.com/openeuler/kernel/issues/IB82FR


CVE: NA

-------------------------------------------------

MAX_TLBI_RANGE_PAGES pages is covered by SCALE#3 and NUM#31 and it's
supported now. Allow TLBI RANGE operation when the number of pages is
equal to MAX_TLBI_RANGE_PAGES in __flush_tlb_range_nosync().

Suggested-by: default avatarMarc Zyngier <maz@kernel.org>
Signed-off-by: default avatarGavin Shan <gshan@redhat.com>
Reviewed-by: default avatarAnshuman Khandual <anshuman.khandual@arm.com>
Reviewed-by: default avatarRyan Roberts <ryan.roberts@arm.com>
Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Reviewed-by: default avatarShaoqin Huang <shahuang@redhat.com>
Link: https://lore.kernel.org/r/20240405035852.1532010-4-gshan@redhat.com


Signed-off-by: default avatarWill Deacon <will@kernel.org>
(cherry picked from commit 73301e464a72a0d007d0d4e0f4d3dab5c58125bf)
Signed-off-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
parent 96e4d6a5
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -417,11 +417,11 @@ static inline void __flush_tlb_range_nosync(struct vm_area_struct *vma,
	 * When not uses TLB range ops, we can handle up to
	 * (MAX_DVM_OPS - 1) pages;
	 * When uses TLB range ops, we can handle up to
	 * (MAX_TLBI_RANGE_PAGES - 1) pages.
	 * MAX_TLBI_RANGE_PAGES pages.
	 */
	if ((!system_supports_tlb_range() &&
	     (end - start) >= (MAX_DVM_OPS * stride)) ||
	    pages >= MAX_TLBI_RANGE_PAGES) {
	    pages > MAX_TLBI_RANGE_PAGES) {
		flush_tlb_mm(vma->vm_mm);
		return;
	}