[PATCH 00/10] arm64: Replace TLB invalidation preprocessor macros with C functions

Ryan Roberts ryan.roberts at arm.com
Fri Dec 12 04:12:05 PST 2025


On 10/12/2025 12:29, Ryan Roberts wrote:
> 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?

Since I didn't hear back, I've reworked the series to include Linus's suggestion
and am currently testing. Plan to post against -rc1.

> 
> 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