On Tue, May 23, 2023 at 04:02:09PM +0200, Thomas Gleixner wrote: > Following up to the discussion about excessive TLB flushes > > https://lore.kernel.org/all/87a5y5a6kj.ffs@tglx > > this series addresses the following issues: > > > 1) Prevent the stale TLB problem related to fully utilized vmap blocks > > > 2) Avoid the double per CPU list walk in _vm_unmap_aliases() > > > 3) Avoid flushing dirty space over and over > > > 4) Add a lockless quickcheck in vb_alloc() and add missing > READ/WRITE_ONCE() annotations > > 5) Prevent overeager purging of usable vmap_blocks if > not under memory/address space pressure. > > Thanks, > > tglx Thank you for fixing it! <snip> urezki@pc638:~/data/raid0/coding/linux.git$ make -j64 bzImage DESCEND objtool INSTALL libsubcmd_headers CALL scripts/checksyscalls.sh CC mm/vmalloc.o In file included from ./include/linux/list_lru.h:14, from ./include/linux/fs.h:13, from ./include/linux/huge_mm.h:8, from ./include/linux/mm.h:855, from mm/vmalloc.c:12: mm/vmalloc.c: In function ‘_vm_unmap_aliases’: mm/vmalloc.c:2220:19: error: ‘struct vmap_block_queue’ has no member named ‘vmap_blocks’ 2220 | xa_for_each(&vbq->vmap_blocks, idx, vb) { | ^~ ./include/linux/xarray.h:449:23: note: in definition of macro ‘xa_for_each_range’ 449 | entry = xa_find(xa, &index, last, XA_PRESENT); \ | ^~ ./include/linux/xarray.h:501:2: note: in expansion of macro ‘xa_for_each_start’ 501 | xa_for_each_start(xa, index, entry, 0) | ^~~~~~~~~~~~~~~~~ mm/vmalloc.c:2220:3: note: in expansion of macro ‘xa_for_each’ 2220 | xa_for_each(&vbq->vmap_blocks, idx, vb) { | ^~~~~~~~~~~ mm/vmalloc.c:2220:19: error: ‘struct vmap_block_queue’ has no member named ‘vmap_blocks’ 2220 | xa_for_each(&vbq->vmap_blocks, idx, vb) { | ^~ ./include/linux/xarray.h:451:29: note: in definition of macro ‘xa_for_each_range’ 451 | entry = xa_find_after(xa, &index, last, XA_PRESENT)) | ^~ ./include/linux/xarray.h:501:2: note: in expansion of macro ‘xa_for_each_start’ 501 | xa_for_each_start(xa, index, entry, 0) | ^~~~~~~~~~~~~~~~~ mm/vmalloc.c:2220:3: note: in expansion of macro ‘xa_for_each’ 2220 | xa_for_each(&vbq->vmap_blocks, idx, vb) { | ^~~~~~~~~~~ mm/vmalloc.c:2228:9: error: too few arguments to function ‘purge_fragmented_block’ 2228 | if (!purge_fragmented_block(vb, vbq, &purge_list) && | ^~~~~~~~~~~~~~~~~~~~~~ mm/vmalloc.c:2047:13: note: declared here 2047 | static bool purge_fragmented_block(struct vmap_block *vb, struct vmap_block_queue *vbq, | ^~~~~~~~~~~~~~~~~~~~~~ make[2]: *** [scripts/Makefile.build:252: mm/vmalloc.o] Error 1 make[1]: *** [scripts/Makefile.build:494: mm] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:2025: .] Error 2 urezki@pc638:~/data/raid0/coding/linux.git$ ^C <snip> Could please fix it? :) -- Uladzislau Rezki