On Wed, Mar 31 2021 at 12:01, Mel Gorman wrote: > On Wed, Mar 31, 2021 at 11:55:56AM +0200, Thomas Gleixner wrote: > @@ -887,13 +887,11 @@ void cpu_vm_stats_fold(int cpu) > > pzstats = per_cpu_ptr(zone->per_cpu_zonestats, cpu); > > - preempt_disable(); > for (i = 0; i < NR_VM_ZONE_STAT_ITEMS; i++) > if (pzstats->vm_stat_diff[i]) { > int v; > > - v = pzstats->vm_stat_diff[i]; > - pzstats->vm_stat_diff[i] = 0; > + v = this_cpu_xchg(pzstats->vm_stat_diff[i], 0); Confused. pzstats is not a percpu pointer. zone->per_cpu_zonestats is. But @cpu is not necessarily the current CPU. Thanks, tglx