Re: [tip: x86/mm] x86/mm/tlb: Update mm_cpumask lazily
From: Peter Zijlstra
Date: Tue Nov 19 2024 - 08:02:10 EST
On Tue, Nov 19, 2024 at 11:27:35AM -0000, tip-bot2 for Rik van Riel wrote:
> diff --git a/arch/x86/kernel/alternative.c b/arch/x86/kernel/alternative.c
> index d17518c..8b66a55 100644
> --- a/arch/x86/kernel/alternative.c
> +++ b/arch/x86/kernel/alternative.c
> @@ -1825,11 +1825,18 @@ static inline temp_mm_state_t use_temporary_mm(struct mm_struct *mm)
> return temp_state;
> }
>
> +__ro_after_init struct mm_struct *poking_mm;
> +__ro_after_init unsigned long poking_addr;
> +
> static inline void unuse_temporary_mm(temp_mm_state_t prev_state)
> {
> lockdep_assert_irqs_disabled();
> +
> switch_mm_irqs_off(NULL, prev_state.mm, current);
>
> + /* Clear the cpumask, to indicate no TLB flushing is needed anywhere */
> + cpumask_clear_cpu(raw_smp_processor_id(), mm_cpumask(poking_mm));
Oh bugger, this is really unfortunate.
Let me try and fix this.