On Tue, Apr 04, 2023 at 04:42:23PM +0300, Yair Podemsky wrote: > diff --git a/mm/mmu_gather.c b/mm/mmu_gather.c > index 2b93cf6ac9ae..5ea9be6fb87c 100644 > --- a/mm/mmu_gather.c > +++ b/mm/mmu_gather.c > @@ -191,7 +191,13 @@ static void tlb_remove_table_smp_sync(void *arg) > /* Simply deliver the interrupt */ > } > > -void tlb_remove_table_sync_one(void) > +#ifdef CONFIG_ARCH_HAS_CPUMASK_BITS > +#define REMOVE_TABLE_IPI_MASK mm_cpumask(mm) > +#else > +#define REMOVE_TABLE_IPI_MASK NULL > +#endif /* CONFIG_ARCH_HAS_CPUMASK_BITS */ > + > +void tlb_remove_table_sync_one(struct mm_struct *mm) > { > /* > * This isn't an RCU grace period and hence the page-tables cannot be > @@ -200,7 +206,8 @@ void tlb_remove_table_sync_one(void) > * It is however sufficient for software page-table walkers that rely on > * IRQ disabling. > */ > - smp_call_function(tlb_remove_table_smp_sync, NULL, 1); > + on_each_cpu_mask(REMOVE_TABLE_IPI_MASK, tlb_remove_table_smp_sync, > + NULL, true); > } Uhh, I don't think NULL is a valid @mask argument. Should that not be something like: #ifdef CONFIG_ARCH_HAS_CPUMASK #define REMOVE_TABLE_IPI_MASK mm_cpumask(mm) #else #define REMOVE_TABLE_IPI_MASK cpu_online_mask #endif preempt_disable(); on_each_cpu_mask(REMOVE_TABLE_IPI_MASK, tlb_remove_table_smp_sync, NULL true); preempt_enable(); ?