[PATCH 00/10] arm64: Replace TLB invalidation preprocessor macros with C functions
Ryan Roberts
ryan.roberts at arm.com
Wed Dec 10 04:29:33 PST 2025
On 11/07/2025 17:17, Will Deacon wrote:
> Hi all,
>
> I cooked this series following a complaint from Linus back in March
> about our range-based TLB invalidation macro after we fixed an
> over-invalidation bug thanks to incorrect handling of its arguments:
>
> https://lore.kernel.org/all/CAHk-=wgiX0q0WCL+SFwVCYtG7JR3=2Rshse-5J3AO2Y4AgT7Jw@mail.gmail.com/
>
> Once I started trying to rework the range macro into a C function, I
> spotted a few other opportunities for cleanup and so I've ended up with
> this series.
>
> Testing and feedback welcome.
Hi Will,
Did this go anywhere/are you planning to post a new version? There are a couple
of other cleanups I'd like to do in this area, and also I'd like to add tlbip
support. But I don't want to spend time on it if the baseline is going to
drastically change.
If you're not planning a v2, perhaps I could have a go then extend for the
extras I want to do?
Thanks,
Ryan
>
> Cheers,
>
> Will
>
> Cc: Ard Biesheuvel <ardb at kernel.org>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Ryan Roberts <ryan.roberts at arm.com>
> Cc: Mark Rutland <mark.rutland at arm.com>
> Cc: Linus Torvalds <torvalds at linux-foundation.org>
> Cc: Oliver Upton <oliver.upton at linux.dev>
> Cc: Marc Zyngier <maz at kernel.org>
>
> --->8
>
> Will Deacon (10):
> arm64: mm: Introduce a C wrapper for by-level TLB invalidation helpers
> arm64: mm: Introduce a C wrapper for by-range TLB invalidation helpers
> arm64: mm: Implicitly invalidate user ASID based on TLBI operation
> arm64: mm: Remove unused 'tlbi_user' argument from
> __flush_tlb_range_op()
> arm64: mm: Re-implement the __tlbi_level macro in C
> arm64: mm: Simplify __TLBI_RANGE_NUM() macro
> arm64: mm: Push __TLBI_VADDR() into __tlbi_level()
> arm64: mm: Inline __TLBI_VADDR_RANGE() into __tlbi_range()
> arm64: mm: Simplify __flush_tlb_range_limit_excess()
> arm64: mm: Re-implement the __flush_tlb_range_op macro in C
>
> arch/arm64/include/asm/tlbflush.h | 230 ++++++++++++++++++------------
> arch/arm64/kernel/sys_compat.c | 2 +-
> arch/arm64/kvm/hyp/nvhe/mm.c | 2 +-
> arch/arm64/kvm/hyp/pgtable.c | 4 +-
> 4 files changed, 140 insertions(+), 98 deletions(-)
>
More information about the linux-arm-kernel
mailing list