On Mon, 24. Jun 14:18, Uladzislau Rezki wrote: > > > > IMO, I thought we can fix this by following. > > It doesn't initialize unused variables and utilize the percpu xarray. If I said > > anything wrong, please do let me know. I can learn a lot from you all :). > > > > > > diff --git a/mm/vmalloc.c b/mm/vmalloc.c > > index 11fe5ea208aa..f9f981674b2d 100644 > > --- a/mm/vmalloc.c > > +++ b/mm/vmalloc.c > > @@ -4480,17 +4480,21 @@ void __init vmalloc_init(void) > > */ > > vmap_area_cachep = KMEM_CACHE(vmap_area, SLAB_PANIC); > > > > - for_each_possible_cpu(i) { > > + for (i = 0; i < nr_cpu_ids; i++) { > > struct vmap_block_queue *vbq; > > struct vfree_deferred *p; > > > > vbq = &per_cpu(vmap_block_queue, i); > > + xa_init(&vbq->vmap_blocks); > > + > > + if (!cpu_possible(i)) > Why do you need such check? IIUC, take this issue as example, cpumask is b101 and nr_cpu_id is 3, if i = 1, There is no need to initialize unused variables here; initializing the xarray for the hash index is sufficient. > > Thanks! > > -- > Uladzislau Rezki -- help you, help me, Hailong.