Re: [PATCH v12 2/6] mm/vmstat: Use vmstat_dirty to track CPU-specific vmstat discrepancies

From: Frederic Weisbecker
Date: Fri Dec 30 2022 - 08:21:55 EST


On Tue, Dec 27, 2022 at 09:11:39AM -0300, Marcelo Tosatti wrote:
> @@ -606,6 +608,7 @@ static inline void mod_zone_state(struct
>
> if (z)
> zone_page_state_add(z, zone, item);
> + vmstat_mark_dirty();
> }
>
> void mod_zone_page_state(struct zone *zone, enum zone_stat_item item,
> @@ -674,6 +677,7 @@ static inline void mod_node_state(struct
>
> if (z)
> node_page_state_add(z, pgdat, item);
> + vmstat_mark_dirty();

Looking at this further, about the two above chunks, there is a risk to
mark the wrong CPU dirty because those functions are preemptible and rely
on this_cpu_cmpxchg() to deal with preemption.

Thanks.