Re: [PATCH v2 2/5] Introducing qpw_lock() and per-cpu queue & flush work

Vlastimil Babka (SUSE)
2026-03-03T12:03:46Z

On 3/2/26 16:49, Marcelo Tosatti wrote:
> +#define local_qpw_lock(lock) \
> + do { \
> + if (static_branch_maybe(CONFIG_QPW_DEFAULT, &qpw_sl)) { \
> + migrate_disable(); \

Have you considered using migrate_disable() on PREEMPT_RT and
preempt_disable() on !PREEMPT_RT since it's cheaper? It's what the pcp
locking in mm/page_alloc.c does, for that reason. It should reduce the
overhead with qpw=1 on !PREEMPT_RT.

> + spin_lock(this_cpu_ptr(lock.sl)); \
> + } else \
> + local_lock(lock.ll); \
> + } while (0)
> +