From: Nadav Amit <namit@vmware.com>
Following commit 68f2736a85832 ("mm: Convert all PageMovable users to
movable_operations"), the code of vmballoon_compaction_init() is very
simple and does not worth a separate function.
Instead, open code vmballoon_compaction_init. As migratepage is always
defined, use IS_ENABLED(), which makes the code easier to read. No
functional change is intended.
Signed-off-by: Nadav Amit <namit@vmware.com>
---
drivers/misc/vmw_balloon.c | 26 +++-----------------------
1 file changed, 3 insertions(+), 23 deletions(-)
diff --git a/drivers/misc/vmw_balloon.c b/drivers/misc/vmw_balloon.c
index 762442b9ece8..46212cd09854 100644
--- a/drivers/misc/vmw_balloon.c
+++ b/drivers/misc/vmw_balloon.c
@@ -1848,28 +1848,6 @@ static int vmballoon_migratepage(struct balloon_dev_info *b_dev_info,
return ret;
}
-/**
- * vmballoon_compaction_init() - initialized compaction for the balloon.
- *
- * @b: pointer to the balloon.
- *
- * If during the initialization a failure occurred, this function does not
- * perform cleanup. The caller must call vmballoon_compaction_deinit() in this
- * case.
- *
- * Return: zero on success or error code on failure.
- */
-static __init void vmballoon_compaction_init(struct vmballoon *b)
-{
- b->b_dev_info.migratepage = vmballoon_migratepage;
-}
-
-#else /* CONFIG_BALLOON_COMPACTION */
-static inline void vmballoon_compaction_init(struct vmballoon *b)
-{
-}
-#endif /* CONFIG_BALLOON_COMPACTION */
-
static int __init vmballoon_init(void)
{
int error;
@@ -1909,7 +1887,9 @@ static int __init vmballoon_init(void)
* balloon_devinfo_init() .
*/
balloon_devinfo_init(&balloon.b_dev_info);
- vmballoon_compaction_init(&balloon);
+
+ if (IS_ENABLED(CONFIG_BALLOON_COMPACTION))
+ b->b_dev_info.migratepage = vmballoon_migratepage;
queue_delayed_work(system_freezable_wq, &balloon.dwork, 0);
--
2.25.1
On 13.09.22 11:43, Nadav Amit wrote:
> From: Nadav Amit <namit@vmware.com>
>
> Following commit 68f2736a85832 ("mm: Convert all PageMovable users to
> movable_operations"), the code of vmballoon_compaction_init() is very
> simple and does not worth a separate function.
>
> Instead, open code vmballoon_compaction_init. As migratepage is always
> defined, use IS_ENABLED(), which makes the code easier to read. No
> functional change is intended.
>
> Signed-off-by: Nadav Amit <namit@vmware.com>
> ---
Reviewed-by: David Hildenbrand <david@redhat.com>
--
Thanks,
David / dhildenb
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 linus/master v6.0-rc5 next-20220914]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Nadav-Amit/vmw_balloon-misc-fixes-and-enhancements/20220914-021333
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git ceecbbddbf549fe0b7ffa3804a6e255b3360030f
config: i386-randconfig-a012-20220912 (https://download.01.org/0day-ci/archive/20220915/202209150729.vb9gopf2-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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/aa1f38765dd703cbeb3450454d0b5b2c7f5a8f8d
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Nadav-Amit/vmw_balloon-misc-fixes-and-enhancements/20220914-021333
git checkout aa1f38765dd703cbeb3450454d0b5b2c7f5a8f8d
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/misc/vmw_balloon.c:1732:2: error: unterminated conditional directive
#ifdef CONFIG_BALLOON_COMPACTION
^
1 error generated.
vim +1732 drivers/misc/vmw_balloon.c
453dc65931915ab drivers/misc/vmware_balloon.c Dmitry Torokhov 2010-04-23 1730
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1731
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 @1732 #ifdef CONFIG_BALLOON_COMPACTION
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1733 /**
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1734 * vmballoon_migratepage() - migrates a balloon page.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1735 * @b_dev_info: balloon device information descriptor.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1736 * @newpage: the page to which @page should be migrated.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1737 * @page: a ballooned page that should be migrated.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1738 * @mode: migration mode, ignored.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1739 *
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1740 * This function is really open-coded, but that is according to the interface
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1741 * that balloon_compaction provides.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1742 *
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1743 * Return: zero on success, -EAGAIN when migration cannot be performed
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1744 * momentarily, and -EBUSY if migration failed and should be retried
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1745 * with that specific page.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1746 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1747 static int vmballoon_migratepage(struct balloon_dev_info *b_dev_info,
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1748 struct page *newpage, struct page *page,
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1749 enum migrate_mode mode)
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1750 {
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1751 unsigned long status, flags;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1752 struct vmballoon *b;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1753 int ret;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1754
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1755 b = container_of(b_dev_info, struct vmballoon, b_dev_info);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1756
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1757 /*
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1758 * If the semaphore is taken, there is ongoing configuration change
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1759 * (i.e., balloon reset), so try again.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1760 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1761 if (!down_read_trylock(&b->conf_sem))
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1762 return -EAGAIN;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1763
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1764 spin_lock(&b->comm_lock);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1765 /*
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1766 * We must start by deflating and not inflating, as otherwise the
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1767 * hypervisor may tell us that it has enough memory and the new page is
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1768 * not needed. Since the old page is isolated, we cannot use the list
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1769 * interface to unlock it, as the LRU field is used for isolation.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1770 * Instead, we use the native interface directly.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1771 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1772 vmballoon_add_page(b, 0, page);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1773 status = vmballoon_lock_op(b, 1, VMW_BALLOON_4K_PAGE,
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1774 VMW_BALLOON_DEFLATE);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1775
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1776 if (status == VMW_BALLOON_SUCCESS)
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1777 status = vmballoon_status_page(b, 0, &page);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1778
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1779 /*
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1780 * If a failure happened, let the migration mechanism know that it
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1781 * should not retry.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1782 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1783 if (status != VMW_BALLOON_SUCCESS) {
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1784 spin_unlock(&b->comm_lock);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1785 ret = -EBUSY;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1786 goto out_unlock;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1787 }
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1788
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1789 /*
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1790 * The page is isolated, so it is safe to delete it without holding
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1791 * @pages_lock . We keep holding @comm_lock since we will need it in a
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1792 * second.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1793 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1794 balloon_page_delete(page);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1795
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1796 put_page(page);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1797
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1798 /* Inflate */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1799 vmballoon_add_page(b, 0, newpage);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1800 status = vmballoon_lock_op(b, 1, VMW_BALLOON_4K_PAGE,
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1801 VMW_BALLOON_INFLATE);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1802
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1803 if (status == VMW_BALLOON_SUCCESS)
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1804 status = vmballoon_status_page(b, 0, &newpage);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1805
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1806 spin_unlock(&b->comm_lock);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1807
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1808 if (status != VMW_BALLOON_SUCCESS) {
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1809 /*
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1810 * A failure happened. While we can deflate the page we just
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1811 * inflated, this deflation can also encounter an error. Instead
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1812 * we will decrease the size of the balloon to reflect the
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1813 * change and report failure.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1814 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1815 atomic64_dec(&b->size);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1816 ret = -EBUSY;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1817 } else {
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1818 /*
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1819 * Success. Take a reference for the page, and we will add it to
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1820 * the list after acquiring the lock.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1821 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1822 get_page(newpage);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1823 ret = MIGRATEPAGE_SUCCESS;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1824 }
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1825
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1826 /* Update the balloon list under the @pages_lock */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1827 spin_lock_irqsave(&b->b_dev_info.pages_lock, flags);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1828
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1829 /*
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1830 * On inflation success, we already took a reference for the @newpage.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1831 * If we succeed just insert it to the list and update the statistics
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1832 * under the lock.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1833 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1834 if (ret == MIGRATEPAGE_SUCCESS) {
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1835 balloon_page_insert(&b->b_dev_info, newpage);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1836 __count_vm_event(BALLOON_MIGRATE);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1837 }
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1838
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1839 /*
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1840 * We deflated successfully, so regardless to the inflation success, we
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1841 * need to reduce the number of isolated_pages.
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1842 */
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1843 b->b_dev_info.isolated_pages--;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1844 spin_unlock_irqrestore(&b->b_dev_info.pages_lock, flags);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1845
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1846 out_unlock:
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1847 up_read(&b->conf_sem);
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1848 return ret;
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1849 }
83a8afa72e9c0a2 drivers/misc/vmw_balloon.c Nadav Amit 2019-04-25 1850
--
0-DAY CI Kernel Test Service
https://01.org/lkp
On Sep 14, 2022, at 5:05 PM, kernel test robot <lkp@intel.com> wrote: > ⚠ External Email > > Hi Nadav, > > I love your patch! Yet something to improve: Ugh. Last minute change and my build was done without VMW_BALLOON. Sorry. Will send v2. Regards, Nadav
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 linus/master v6.0-rc5 next-20220915]
[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#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Nadav-Amit/vmw_balloon-misc-fixes-and-enhancements/20220914-021333
base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git ceecbbddbf549fe0b7ffa3804a6e255b3360030f
config: x86_64-randconfig-a014 (https://download.01.org/0day-ci/archive/20220916/202209161512.GNTVEnlu-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project f28c006a5895fc0e329fe15fead81e37457cb1d1)
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/aa1f38765dd703cbeb3450454d0b5b2c7f5a8f8d
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Nadav-Amit/vmw_balloon-misc-fixes-and-enhancements/20220914-021333
git checkout aa1f38765dd703cbeb3450454d0b5b2c7f5a8f8d
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> drivers/misc/vmw_balloon.c:1892:3: error: use of undeclared identifier 'b'
b->b_dev_info.migratepage = vmballoon_migratepage;
^
drivers/misc/vmw_balloon.c:1732:2: error: unterminated conditional directive
#ifdef CONFIG_BALLOON_COMPACTION
^
2 errors generated.
vim +/b +1892 drivers/misc/vmw_balloon.c
1850
1851 static int __init vmballoon_init(void)
1852 {
1853 int error;
1854
1855 /*
1856 * Check if we are running on VMware's hypervisor and bail out
1857 * if we are not.
1858 */
1859 if (x86_hyper_type != X86_HYPER_VMWARE)
1860 return -ENODEV;
1861
1862 INIT_LIST_HEAD(&balloon.huge_pages);
1863 spin_lock_init(&balloon.comm_lock);
1864 init_rwsem(&balloon.conf_sem);
1865 balloon.vmci_doorbell = VMCI_INVALID_HANDLE;
1866 balloon.batch_page = NULL;
1867 balloon.page = NULL;
1868 balloon.reset_required = true;
1869
1870 /*
1871 * Reset the balloon to check that it is indeed supported.
1872 */
1873 error = vmballoon_reset(&balloon);
1874 if (error) {
1875 pr_err("memory ballooning is disabled");
1876 goto fail;
1877 }
1878
1879 INIT_DELAYED_WORK(&balloon.dwork, vmballoon_work);
1880
1881 error = vmballoon_register_shrinker(&balloon);
1882 if (error)
1883 goto fail;
1884
1885 /*
1886 * Initialization of compaction must be done after the call to
1887 * balloon_devinfo_init() .
1888 */
1889 balloon_devinfo_init(&balloon.b_dev_info);
1890
1891 if (IS_ENABLED(CONFIG_BALLOON_COMPACTION))
> 1892 b->b_dev_info.migratepage = vmballoon_migratepage;
1893
1894 queue_delayed_work(system_freezable_wq, &balloon.dwork, 0);
1895
1896 vmballoon_debugfs_init(&balloon);
1897
1898 return 0;
1899 fail:
1900 vmballoon_unregister_shrinker(&balloon);
1901 return error;
1902 }
1903
--
0-DAY CI Kernel Test Service
https://01.org/lkp
© 2016 - 2026 Red Hat, Inc.