lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201809181721.ZRwIoy4P%fengguang.wu@intel.com>
Date:   Tue, 18 Sep 2018 17:55:33 +0800
From:   kbuild test robot <lkp@...el.com>
To:     Nadav Amit <namit@...are.com>
Cc:     kbuild-all@...org, Arnd Bergmann <arnd@...db.de>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        linux-kernel@...r.kernel.org, Nadav Amit <namit@...are.com>
Subject: Re: [PATCH 11/19] vmw_balloon: rework the inflate and deflate loops

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

Download attachment ".config.gz" of type "application/gzip" (25764 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ