From: "Matthew Wilcox (Oracle)" <willy@xxxxxxxxxxxxx> It's possible to save a few hundred bytes from the kernel text by moving the 'order' argument into the GFP flags. I had the idea while I was playing with THP pagecache (notably, I didn't want to add an 'order' parameter to pagecache_get_page()) What I got for a -tiny config for page_alloc.o (with a tinyconfig, x86-32) after each step: text data bss dec hex filename 21462 349 44 21855 555f 1.o 21447 349 44 21840 5550 2.o 21415 349 44 21808 5530 3.o 21399 349 44 21792 5520 4.o 21399 349 44 21792 5520 5.o 21367 349 44 21760 5500 6.o 21303 349 44 21696 54c0 7.o 21303 349 44 21696 54c0 8.o 21303 349 44 21696 54c0 9.o 21303 349 44 21696 54c0 A.o 21303 349 44 21696 54c0 B.o I assure you that the callers all shrink as well. vmscan.o also shrinks, but I didn't keep detailed records. Anyway, this is just a quick POC due to me being on an aeroplane for most of today. Maybe we don't want to spend five GFP bits on this. Some bits of this could be pulled out and applied even if we don't want to go for the main objective. eg rmqueue_pcplist() doesn't use its gfp_flags argument. Matthew Wilcox (Oracle) (11): fix function alignment mm: Pass order to __alloc_pages_nodemask in GFP flags mm: Pass order to __get_free_pages() in GFP flags mm: Pass order to prep_new_page in GFP flags mm: Remove gfp_flags argument from rmqueue_pcplist mm: Pass order to rmqueue in GFP flags mm: Pass order to get_page_from_freelist in GFP flags mm: Pass order to __alloc_pages_cpuset_fallback in GFP flags mm: Pass order to prepare_alloc_pages in GFP flags mm: Pass order to try_to_free_pages in GFP flags mm: Pass order to node_reclaim() in GFP flags arch/x86/Makefile_32.cpu | 2 + arch/x86/events/intel/ds.c | 4 +- arch/x86/kvm/vmx/vmx.c | 4 +- arch/x86/mm/init.c | 3 +- arch/x86/mm/pgtable.c | 7 +-- drivers/base/devres.c | 2 +- include/linux/gfp.h | 57 +++++++++++--------- include/linux/migrate.h | 2 +- include/linux/swap.h | 2 +- include/trace/events/vmscan.h | 28 +++++----- mm/filemap.c | 2 +- mm/gup.c | 4 +- mm/hugetlb.c | 5 +- mm/internal.h | 5 +- mm/khugepaged.c | 2 +- mm/mempolicy.c | 30 +++++------ mm/migrate.c | 2 +- mm/mmu_gather.c | 2 +- mm/page_alloc.c | 97 +++++++++++++++++------------------ mm/shmem.c | 5 +- mm/slub.c | 2 +- mm/vmscan.c | 26 +++++----- 22 files changed, 147 insertions(+), 146 deletions(-) -- 2.20.1