tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/mst/vhost.git linux-next head: c5db5a8d998da36ada7287aa53b4ed501a0a2b2b commit: c5db5a8d998da36ada7287aa53b4ed501a0a2b2b [15/15] virtio-balloon: Add support for providing unused page reports to host config: arm64-defconfig (attached as .config) compiler: aarch64-linux-gcc (GCC) 7.4.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout c5db5a8d998da36ada7287aa53b4ed501a0a2b2b # save the attached .config to linux build tree GCC_VERSION=7.4.0 make.cross ARCH=arm64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> All error/warnings (new ones prefixed by >>): arch/arm64/Makefile:56: CROSS_COMPILE_COMPAT not defined or empty, the compat vDSO will not be built arch/arm64/Makefile:56: CROSS_COMPILE_COMPAT not defined or empty, the compat vDSO will not be built In file included from include/linux/mmzone.h:775:0, from include/linux/gfp.h:6, from include/linux/xarray.h:14, from include/linux/radix-tree.h:18, from include/linux/idr.h:15, from include/linux/kernfs.h:13, from include/linux/sysfs.h:16, from include/linux/kobject.h:20, from include/linux/of.h:17, from include/linux/irqdomain.h:35, from include/linux/acpi.h:13, from include/acpi/apei.h:9, from include/acpi/ghes.h:5, from include/linux/arm_sdei.h:14, from arch/arm64/kernel/asm-offsets.c:10: include/linux/page_reporting.h:9:37: warning: "HUGETLB_PAGE_ORDER" is not defined, evaluates to 0 [-Wundef] #if defined(CONFIG_HUGETLB_PAGE) && HUGETLB_PAGE_ORDER < MAX_ORDER ^~~~~~~~~~~~~~~~~~ include/linux/page_reporting.h: In function 'get_unreported_tail': >> include/linux/page_reporting.h:10:34: error: 'HUGETLB_PAGE_ORDER' undeclared (first use in this function); did you mean 'IOREMAP_MAX_ORDER'? #define PAGE_REPORTING_MIN_ORDER HUGETLB_PAGE_ORDER ^ >> include/linux/page_reporting.h:72:15: note: in expansion of macro 'PAGE_REPORTING_MIN_ORDER' if (order >= PAGE_REPORTING_MIN_ORDER && ^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/page_reporting.h:10:34: note: each undeclared identifier is reported only once for each function it appears in #define PAGE_REPORTING_MIN_ORDER HUGETLB_PAGE_ORDER ^ >> include/linux/page_reporting.h:72:15: note: in expansion of macro 'PAGE_REPORTING_MIN_ORDER' if (order >= PAGE_REPORTING_MIN_ORDER && ^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/page_reporting.h: In function 'add_page_to_reported_list': >> include/linux/page_reporting.h:10:34: error: 'HUGETLB_PAGE_ORDER' undeclared (first use in this function); did you mean 'IOREMAP_MAX_ORDER'? #define PAGE_REPORTING_MIN_ORDER HUGETLB_PAGE_ORDER ^ include/linux/page_reporting.h:94:31: note: in expansion of macro 'PAGE_REPORTING_MIN_ORDER' zone->reported_pages[order - PAGE_REPORTING_MIN_ORDER]++; ^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/page_reporting.h: In function 'del_page_from_reported_list': >> include/linux/page_reporting.h:10:34: error: 'HUGETLB_PAGE_ORDER' undeclared (first use in this function); did you mean 'IOREMAP_MAX_ORDER'? #define PAGE_REPORTING_MIN_ORDER HUGETLB_PAGE_ORDER ^ include/linux/page_reporting.h:110:44: note: in expansion of macro 'PAGE_REPORTING_MIN_ORDER' zone->reported_pages[page_private(page) - PAGE_REPORTING_MIN_ORDER]--; ^~~~~~~~~~~~~~~~~~~~~~~~ include/linux/page_reporting.h: In function 'page_reporting_notify_free': >> include/linux/page_reporting.h:10:34: error: 'HUGETLB_PAGE_ORDER' undeclared (first use in this function); did you mean 'IOREMAP_MAX_ORDER'? #define PAGE_REPORTING_MIN_ORDER HUGETLB_PAGE_ORDER ^ include/linux/page_reporting.h:158:14: note: in expansion of macro 'PAGE_REPORTING_MIN_ORDER' if (order < PAGE_REPORTING_MIN_ORDER) ^~~~~~~~~~~~~~~~~~~~~~~~ make[2]: *** [arch/arm64/kernel/asm-offsets.s] Error 1 make[2]: Target '__build' not remade because of errors. make[1]: *** [prepare0] Error 2 make[1]: Target 'prepare' not remade because of errors. make: *** [sub-make] Error 2 8 real 4 user 4 sys 96.33% cpu make prepare vim +10 include/linux/page_reporting.h b1b0d638e6f93b Alexander Duyck 2019-09-06 8 b1b0d638e6f93b Alexander Duyck 2019-09-06 @9 #if defined(CONFIG_HUGETLB_PAGE) && HUGETLB_PAGE_ORDER < MAX_ORDER b1b0d638e6f93b Alexander Duyck 2019-09-06 @10 #define PAGE_REPORTING_MIN_ORDER HUGETLB_PAGE_ORDER b1b0d638e6f93b Alexander Duyck 2019-09-06 11 #else b1b0d638e6f93b Alexander Duyck 2019-09-06 12 #define PAGE_REPORTING_MIN_ORDER (MAX_ORDER - 1) b1b0d638e6f93b Alexander Duyck 2019-09-06 13 #endif b1b0d638e6f93b Alexander Duyck 2019-09-06 14 #define PAGE_REPORTING_HWM 32 b1b0d638e6f93b Alexander Duyck 2019-09-06 15 b1b0d638e6f93b Alexander Duyck 2019-09-06 16 #ifdef CONFIG_PAGE_REPORTING b1b0d638e6f93b Alexander Duyck 2019-09-06 17 struct page_reporting_dev_info { b1b0d638e6f93b Alexander Duyck 2019-09-06 18 /* function that alters pages to make them "reported" */ b1b0d638e6f93b Alexander Duyck 2019-09-06 19 void (*report)(struct page_reporting_dev_info *phdev, b1b0d638e6f93b Alexander Duyck 2019-09-06 20 unsigned int nents); b1b0d638e6f93b Alexander Duyck 2019-09-06 21 b1b0d638e6f93b Alexander Duyck 2019-09-06 22 /* scatterlist containing pages to be processed */ b1b0d638e6f93b Alexander Duyck 2019-09-06 23 struct scatterlist *sg; b1b0d638e6f93b Alexander Duyck 2019-09-06 24 b1b0d638e6f93b Alexander Duyck 2019-09-06 25 /* b1b0d638e6f93b Alexander Duyck 2019-09-06 26 * Upper limit on the number of pages that the react function b1b0d638e6f93b Alexander Duyck 2019-09-06 27 * expects to be placed into the batch list to be processed. b1b0d638e6f93b Alexander Duyck 2019-09-06 28 */ b1b0d638e6f93b Alexander Duyck 2019-09-06 29 unsigned long capacity; b1b0d638e6f93b Alexander Duyck 2019-09-06 30 b1b0d638e6f93b Alexander Duyck 2019-09-06 31 /* work struct for processing reports */ b1b0d638e6f93b Alexander Duyck 2019-09-06 32 struct delayed_work work; b1b0d638e6f93b Alexander Duyck 2019-09-06 33 b1b0d638e6f93b Alexander Duyck 2019-09-06 34 /* b1b0d638e6f93b Alexander Duyck 2019-09-06 35 * The number of zones requesting reporting, plus one additional if b1b0d638e6f93b Alexander Duyck 2019-09-06 36 * processing thread is active. b1b0d638e6f93b Alexander Duyck 2019-09-06 37 */ b1b0d638e6f93b Alexander Duyck 2019-09-06 38 atomic_t refcnt; b1b0d638e6f93b Alexander Duyck 2019-09-06 39 }; b1b0d638e6f93b Alexander Duyck 2019-09-06 40 b1b0d638e6f93b Alexander Duyck 2019-09-06 41 /* Boundary functions */ b1b0d638e6f93b Alexander Duyck 2019-09-06 42 struct list_head *__page_reporting_get_boundary(unsigned int order, b1b0d638e6f93b Alexander Duyck 2019-09-06 43 int migratetype); b1b0d638e6f93b Alexander Duyck 2019-09-06 44 void page_reporting_del_from_boundary(struct page *page, struct zone *zone); b1b0d638e6f93b Alexander Duyck 2019-09-06 45 void page_reporting_add_to_boundary(struct page *page, struct zone *zone, b1b0d638e6f93b Alexander Duyck 2019-09-06 46 int migratetype); b1b0d638e6f93b Alexander Duyck 2019-09-06 47 void page_reporting_move_to_boundary(struct page *page, struct zone *zone, b1b0d638e6f93b Alexander Duyck 2019-09-06 48 int migratetype); b1b0d638e6f93b Alexander Duyck 2019-09-06 49 b1b0d638e6f93b Alexander Duyck 2019-09-06 50 /* Reported page accessors, defined in page_alloc.c */ b1b0d638e6f93b Alexander Duyck 2019-09-06 51 struct page *get_unreported_page(struct zone *zone, unsigned int order, b1b0d638e6f93b Alexander Duyck 2019-09-06 52 int migratetype); b1b0d638e6f93b Alexander Duyck 2019-09-06 53 void free_reported_page(struct page *page, unsigned int order); b1b0d638e6f93b Alexander Duyck 2019-09-06 54 b1b0d638e6f93b Alexander Duyck 2019-09-06 55 /* Tear-down and bring-up for page reporting devices */ b1b0d638e6f93b Alexander Duyck 2019-09-06 56 void page_reporting_shutdown(struct page_reporting_dev_info *phdev); b1b0d638e6f93b Alexander Duyck 2019-09-06 57 int page_reporting_startup(struct page_reporting_dev_info *phdev); b1b0d638e6f93b Alexander Duyck 2019-09-06 58 b1b0d638e6f93b Alexander Duyck 2019-09-06 59 void __page_reporting_free_stats(struct zone *zone); b1b0d638e6f93b Alexander Duyck 2019-09-06 60 void __page_reporting_request(struct zone *zone); b1b0d638e6f93b Alexander Duyck 2019-09-06 61 #endif /* CONFIG_PAGE_REPORTING */ b1b0d638e6f93b Alexander Duyck 2019-09-06 62 b1b0d638e6f93b Alexander Duyck 2019-09-06 63 /* b1b0d638e6f93b Alexander Duyck 2019-09-06 64 * Method for obtaining the tail of the free list. Using this allows for b1b0d638e6f93b Alexander Duyck 2019-09-06 65 * tail insertions of unreported pages into the region that is currently b1b0d638e6f93b Alexander Duyck 2019-09-06 66 * being scanned so as to avoid interleaving reported and unreported pages. b1b0d638e6f93b Alexander Duyck 2019-09-06 67 */ b1b0d638e6f93b Alexander Duyck 2019-09-06 68 static inline struct list_head * b1b0d638e6f93b Alexander Duyck 2019-09-06 69 get_unreported_tail(struct zone *zone, unsigned int order, int migratetype) b1b0d638e6f93b Alexander Duyck 2019-09-06 70 { b1b0d638e6f93b Alexander Duyck 2019-09-06 71 #ifdef CONFIG_PAGE_REPORTING b1b0d638e6f93b Alexander Duyck 2019-09-06 @72 if (order >= PAGE_REPORTING_MIN_ORDER && b1b0d638e6f93b Alexander Duyck 2019-09-06 73 test_bit(ZONE_PAGE_REPORTING_ACTIVE, &zone->flags)) b1b0d638e6f93b Alexander Duyck 2019-09-06 74 return __page_reporting_get_boundary(order, migratetype); b1b0d638e6f93b Alexander Duyck 2019-09-06 75 #endif b1b0d638e6f93b Alexander Duyck 2019-09-06 76 return &zone->free_area[order].free_list[migratetype]; b1b0d638e6f93b Alexander Duyck 2019-09-06 77 } b1b0d638e6f93b Alexander Duyck 2019-09-06 78 :::::: The code at line 10 was first introduced by commit :::::: b1b0d638e6f93b91cf34585350bb00035d066989 mm: Introduce Reported pages :::::: TO: Alexander Duyck <alexander.h.duyck@xxxxxxxxxxxxxxx> :::::: CC: Michael S. Tsirkin <mst@xxxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip