Hi Juergen,
I love your patch! Yet something to improve:
[auto build test ERROR on xen-tip/linux-next] [also build test ERROR on linus/master linux/master v5.18-rc1 next-20220406] [If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in https://git-scm.com/docs/git-format-patch]
url: https://github.com/intel-lab-lkp/linux/commits/Juergen-Gross/xen-balloon-fix... base: https://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git linux-next config: arm64-randconfig-r011-20220406 (https://download.01.org/0day-ci/archive/20220407/202204071359.uas4tsu0-lkp@i...) compiler: aarch64-linux-gcc (GCC) 11.2.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/intel-lab-lkp/linux/commit/b3deb59d5386ade4fb227038f202a9... git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Juergen-Gross/xen-balloon-fix-page-onlining-when-populating-new-zone/20220407-000935 git checkout b3deb59d5386ade4fb227038f202a9bdb8ade4ab # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=arm64 SHELL=/bin/bash drivers/
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot lkp@intel.com
All errors (new ones prefixed by >>):
drivers/xen/balloon.c: In function 'decrease_reservation':
drivers/xen/balloon.c:518:24: error: implicit declaration of function 'alloc_page_for_balloon' [-Werror=implicit-function-declaration]
518 | page = alloc_page_for_balloon(gfp); | ^~~~~~~~~~~~~~~~~~~~~~ drivers/xen/balloon.c:518:22: warning: assignment to 'struct page *' from 'int' makes pointer from integer without a cast [-Wint-conversion] 518 | page = alloc_page_for_balloon(gfp); | ^
drivers/xen/balloon.c:545:17: error: implicit declaration of function 'add_page_to_balloon' [-Werror=implicit-function-declaration]
545 | add_page_to_balloon(page); | ^~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors
vim +/alloc_page_for_balloon +518 drivers/xen/balloon.c
505 506 static enum bp_state decrease_reservation(unsigned long nr_pages, gfp_t gfp) 507 { 508 enum bp_state state = BP_DONE; 509 unsigned long i; 510 struct page *page, *tmp; 511 int ret; 512 LIST_HEAD(pages); 513 514 if (nr_pages > ARRAY_SIZE(frame_list)) 515 nr_pages = ARRAY_SIZE(frame_list); 516 517 for (i = 0; i < nr_pages; i++) {
518 page = alloc_page_for_balloon(gfp);
519 if (page == NULL) { 520 nr_pages = i; 521 state = BP_EAGAIN; 522 break; 523 } 524 list_add(&page->lru, &pages); 525 } 526 527 /* 528 * Ensure that ballooned highmem pages don't have kmaps. 529 * 530 * Do this before changing the p2m as kmap_flush_unused() 531 * reads PTEs to obtain pages (and hence needs the original 532 * p2m entry). 533 */ 534 kmap_flush_unused(); 535 536 /* 537 * Setup the frame, update direct mapping, invalidate P2M, 538 * and add to balloon. 539 */ 540 i = 0; 541 list_for_each_entry_safe(page, tmp, &pages, lru) { 542 frame_list[i++] = xen_page_to_gfn(page); 543 544 list_del(&page->lru);
545 add_page_to_balloon(page);
546 } 547 548 flush_tlb_all(); 549 550 ret = xenmem_reservation_decrease(nr_pages, frame_list); 551 BUG_ON(ret != nr_pages); 552 553 balloon_stats.current_pages -= nr_pages; 554 555 return state; 556 } 557