Re: [PATCH 05/10] x86,tlb: use INVLPGB in flush_tlb_all

From: Peter Zijlstra
Date: Sun Dec 22 2024 - 06:17:58 EST


On Sat, Dec 21, 2024 at 11:06:37PM -0500, Rik van Riel wrote:
> The flush_tlb_all() function is not used a whole lot, but we might
> as well use broadcast TLB flushing there, too.
>
> Signed-off-by: Rik van Riel <riel@xxxxxxxxxxx>
> ---
> arch/x86/mm/tlb.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/arch/x86/mm/tlb.c b/arch/x86/mm/tlb.c
> index 09980fb17907..bf85cd0590d5 100644
> --- a/arch/x86/mm/tlb.c
> +++ b/arch/x86/mm/tlb.c
> @@ -1074,6 +1074,11 @@ static void do_flush_tlb_all(void *info)
> void flush_tlb_all(void)
> {
> count_vm_tlb_event(NR_TLB_REMOTE_FLUSH);
> + if (static_cpu_has(X86_FEATURE_INVLPGB)) {

guard(preempt)();

?

> + invlpgb_flush_all();
> + tlbsync();
> + return;
> + }
> on_each_cpu(do_flush_tlb_all, NULL, 1);
> }
>
> --
> 2.47.1
>