Hi Nadav,

I love your patch! Yet something to improve:

[auto build test ERROR on char-misc/char-misc-testing]
[also build test ERROR on v4.19-rc4 next-20180913]
[if your patch is applied to the wrong git tree, please drop us a note to help 
improve the system]

url:    
https://github.com/0day-ci/linux/commits/Nadav-Amit/vmw_balloon-compaction-shrinker-64-bit-etc/20180918-152302
config: i386-randconfig-s2-09171149 (attached as .config)
compiler: gcc-6 (Debian 6.4.0-9) 6.4.0 20171026
reproduce:
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   drivers/misc/vmw_balloon.o: In function `vmballoon_deflate':
>> drivers/misc/vmw_balloon.c:1073: undefined reference to `__divdi3'
   drivers/misc/vmw_balloon.o: In function `vmballoon_inflate':
   drivers/misc/vmw_balloon.c:966: undefined reference to `__divdi3'

vim +1073 drivers/misc/vmw_balloon.c

  1018  
  1019  /**
  1020   * vmballoon_deflate() - Decrease the size of the balloon.
  1021   *
  1022   * @b: pointer to the balloon
  1023   * @n_frames: the number of frames to deflate. If zero, automatically
  1024   * calculated according to the target size.
  1025   * @coordinated: whether to coordinate with the host
  1026   *
  1027   * Decrease the size of the balloon allowing guest to use more memory.
  1028   *
  1029   * Return: The number of deflated frames (i.e., basic page size units)
  1030   */
  1031  static unsigned long vmballoon_deflate(struct vmballoon *b, uint64_t 
n_frames,
  1032                                         bool coordinated)
  1033  {
  1034          unsigned long deflated_frames = 0;
  1035          unsigned long tried_frames = 0;
  1036          struct vmballoon_ctl ctl = {
  1037                  .pages = LIST_HEAD_INIT(ctl.pages),
  1038                  .refused_pages = LIST_HEAD_INIT(ctl.refused_pages),
  1039                  .page_size = VMW_BALLOON_4K_PAGE,
  1040                  .op = VMW_BALLOON_DEFLATE
  1041          };
  1042  
  1043          /* free pages to reach target */
  1044          while (true) {
  1045                  unsigned int to_deflate_pages, n_unlocked_frames;
  1046                  unsigned int page_in_frames;
  1047                  int64_t to_deflate_frames;
  1048                  bool deflated_all;
  1049  
  1050                  page_in_frames = 
vmballoon_page_in_frames(ctl.page_size);
  1051  
  1052                  VM_BUG_ON(!list_empty(&ctl.pages));
  1053                  VM_BUG_ON(ctl.n_pages);
  1054                  VM_BUG_ON(!list_empty(&ctl.refused_pages));
  1055                  VM_BUG_ON(ctl.n_refused_pages);
  1056  
  1057                  /*
  1058                   * If we were requested a specific number of frames, we 
try to
  1059                   * deflate this number of frames. Otherwise, deflation 
is
  1060                   * performed according to the target and balloon size.
  1061                   */
  1062                  to_deflate_frames = n_frames ? n_frames - tried_frames :
  1063                                                 -vmballoon_change(b);
  1064  
  1065                  /* break if no work to do */
  1066                  if (to_deflate_frames <= 0)
  1067                          break;
  1068  
  1069                  /*
  1070                   * Calculate the number of frames based on current page 
size,
  1071                   * but limit the deflated frames to a single chunk
  1072                   */
> 1073                  to_deflate_pages = min_t(unsigned long, 
> b->batch_max_pages,
  1074                                           DIV_ROUND_UP(to_deflate_frames,
  1075                                                        page_in_frames));
  1076  
  1077                  /* First take the pages from the balloon pages. */
  1078                  vmballoon_dequeue_page_list(b, &ctl.pages, &ctl.n_pages,
  1079                                              ctl.page_size, 
to_deflate_pages);
  1080  
  1081                  /*
  1082                   * Before pages are moving to the refused list, count 
their
  1083                   * frames as frames that we tried to deflate.
  1084                   */
  1085                  tried_frames += ctl.n_pages * page_in_frames;
  1086  
  1087                  /*
  1088                   * Unlock the pages by communicating with the 
hypervisor if the
  1089                   * communication is coordinated (i.e., not pop). We 
ignore the
  1090                   * return code. Instead we check if all the pages we 
manage to
  1091                   * unlock all the pages. If we failed, we will move to 
the next
  1092                   * page size, and would eventually try again later.
  1093                   */
  1094                  if (coordinated)
  1095                          vmballoon_lock(b, &ctl);
  1096  
  1097                  /*
  1098                   * Check if we deflated enough. We will move to the 
next page
  1099                   * size if we did not manage to do so. This calculation 
takes
  1100                   * place now, as once the pages are released, the 
number of
  1101                   * pages is zeroed.
  1102                   */
  1103                  deflated_all = (ctl.n_pages == to_deflate_pages);
  1104  
  1105                  /* Update local and global counters */
  1106                  n_unlocked_frames = ctl.n_pages * page_in_frames;
  1107                  atomic64_sub(n_unlocked_frames, &b->size);
  1108                  deflated_frames += n_unlocked_frames;
  1109  
  1110                  vmballoon_stats_page_add(b, VMW_BALLOON_PAGE_STAT_FREE,
  1111                                           ctl.page_size, ctl.n_pages);
  1112  
  1113                  /* free the ballooned pages */
  1114                  vmballoon_release_page_list(&ctl.pages, &ctl.n_pages,
  1115                                              ctl.page_size);
  1116  
  1117                  /* Return the refused pages to the ballooned list. */
  1118                  vmballoon_enqueue_page_list(b, &ctl.refused_pages,
  1119                                              &ctl.n_refused_pages,
  1120                                              ctl.page_size);
  1121  
  1122                  /* If we failed to unlock all the pages, move to next 
size. */
  1123                  if (!deflated_all) {
  1124                          if (ctl.page_size == b->max_page_size)
  1125                                  break;
  1126                          ctl.page_size++;
  1127                  }
  1128  
  1129                  cond_resched();
  1130          }
  1131  
  1132          return deflated_frames;
  1133  }
  1134  

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip

Reply via email to