From nobody Mon Apr 6 00:08:34 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D9959C54EE9 for ; Tue, 13 Sep 2022 18:11:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232491AbiIMSL4 (ORCPT ); Tue, 13 Sep 2022 14:11:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60314 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231907AbiIMSLJ (ORCPT ); Tue, 13 Sep 2022 14:11:09 -0400 Received: from mail-pl1-x62c.google.com (mail-pl1-x62c.google.com [IPv6:2607:f8b0:4864:20::62c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85E3A72B7C for ; Tue, 13 Sep 2022 10:18:01 -0700 (PDT) Received: by mail-pl1-x62c.google.com with SMTP id p18so12490354plr.8 for ; Tue, 13 Sep 2022 10:18:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=XQ8hIFG6q5WKMN5Ns4E0eRv8QKNJMaYAAhMqE3kUHyU=; b=Zwd2T64CMlOt2t6v2YUv91XYfNgJbAxGmsslT3ZAOs6w6EZg8t5Fqp8Nqh8dVEKNAA FqB9RVgbnB5pAyE57yYcdPvNa3eK64heDwFxyr1qvrUFEBWY/8t5kaRgEGMu0OsOUvVk rgmlIr3av1kFrhsoQVo6gw7QSDja6eytLvufYelEZXhwBU4yEEmu36iJOPKR+NAcJx6R UDEu5dpNkDEBF3pPNPSxZTIce6cEgmE6LsXYTBHQXL8MNOnp2+etsTirEjdR8SZnElid DzmhxcVu6uxPtGGYRT57qjG2E7JL8PUIeaqgsNR5nSimhHdOf0kfcFDwQ3j+5j9EWE+Z Y2fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=XQ8hIFG6q5WKMN5Ns4E0eRv8QKNJMaYAAhMqE3kUHyU=; b=XxrJ6qYEl45KiIfTPAbw1U9jhfKtyl5eudoSoUhsDWEwt1S49P3Wo1uMkVidSO3aer fLiATzUYV5BUwVgxDhCQOVotfO/xfvucUGj8juVF1cdIrmjXsizQ0FdWdxy8f+aZkJdE VLBNt8KGvNWxeLzpEWHqJFkru/jt2o1ijlmb5sgg049LLJHXo9F8f1IvqQ1V/crjBtmn 2rGcu/FHoZ9VRtFSH6lcuhdTzeAkYKNIyr3Ms0PymnqCoivZ7sdzjRLaS93Wa3UIAWXL yl4+83FD9Mo9u5ZMKf5p50BDvdAsjGAo8/P9eDnld9E8Mf3ZpbeCzttapy3BHnbTjIzT MAVw== X-Gm-Message-State: ACgBeo0srT7kzo5ptrJGIRxObhf0uUMonX3eHLjs7ge2GolXsP+9u6Wj j/CBJsfxF7bzMQIJJpcMnRiKcpukz6X/3w== X-Google-Smtp-Source: AA6agR6R65XTgekQohxDq76X9er4kMYytxvwLwcHqbE3PUPmsCOvUZYFcycYI1IHpgWbWwLDaTiQlw== X-Received: by 2002:a17:902:820a:b0:178:456e:138 with SMTP id x10-20020a170902820a00b00178456e0138mr4704863pln.145.1663089480839; Tue, 13 Sep 2022 10:18:00 -0700 (PDT) Received: from sc2-haas01-esx0118.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id z27-20020aa79e5b000000b0053e5b905843sm796474pfq.203.2022.09.13.10.17.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Sep 2022 10:18:00 -0700 (PDT) From: Nadav Amit X-Google-Original-From: Nadav Amit To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, VMware PV-Drivers Reviewers , Arnd Bergmann , Nadav Amit Subject: [PATCH 1/3] vmw_balloon: access reset_required through READ/WRITE_ONCE Date: Tue, 13 Sep 2022 02:43:04 -0700 Message-Id: <20220913094306.317734-2-namit@vmware.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220913094306.317734-1-namit@vmware.com> References: <20220913094306.317734-1-namit@vmware.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Nadav Amit reset_required might be accessed concurrently, at least through debugfs. While there is no apparent functional risk, avoid any potential race, even if it is benign. Use READ_ONCE() and WRITE_ONCE() when accessing reset_required. Signed-off-by: Nadav Amit --- drivers/misc/vmw_balloon.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/misc/vmw_balloon.c b/drivers/misc/vmw_balloon.c index 61a2be712bf7..7fa91983c567 100644 --- a/drivers/misc/vmw_balloon.c +++ b/drivers/misc/vmw_balloon.c @@ -492,7 +492,7 @@ __vmballoon_cmd(struct vmballoon *b, unsigned long cmd,= unsigned long arg1, =20 /* mark reset required accordingly */ if (status =3D=3D VMW_BALLOON_ERROR_RESET) - b->reset_required =3D true; + WRITE_ONCE(b->reset_required, true); =20 return status; } @@ -965,7 +965,7 @@ static int64_t vmballoon_change(struct vmballoon *b) * Otherwise we might get huge positives instead of negatives */ =20 - if (b->reset_required) + if (READ_ONCE(b->reset_required)) return 0; =20 /* consider a 2MB slack on deflate, unless the balloon is emptied */ @@ -1446,7 +1446,7 @@ static void vmballoon_reset(struct vmballoon *b) } =20 vmballoon_stats_gen_inc(b, VMW_BALLOON_STAT_RESET); - b->reset_required =3D false; + WRITE_ONCE(b->reset_required, false); =20 error =3D vmballoon_vmci_init(b); if (error) @@ -1473,7 +1473,7 @@ static void vmballoon_work(struct work_struct *work) struct vmballoon *b =3D container_of(dwork, struct vmballoon, dwork); int64_t change =3D 0; =20 - if (b->reset_required) + if (READ_ONCE(b->reset_required)) vmballoon_reset(b); =20 down_read(&b->conf_sem); @@ -1666,7 +1666,7 @@ static int vmballoon_debug_show(struct seq_file *f, v= oid *offset) VMW_BALLOON_CAPABILITIES); seq_printf(f, "%-22s: %#16lx\n", "used capabilities", b->capabilities); seq_printf(f, "%-22s: %16s\n", "is resetting", - b->reset_required ? "y" : "n"); + READ_ONCE(b->reset_required) ? "y" : "n"); =20 /* format size info */ seq_printf(f, "%-22s: %16lu\n", "target", READ_ONCE(b->target)); --=20 2.25.1 From nobody Mon Apr 6 00:08:34 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 832D7ECAAD8 for ; Tue, 13 Sep 2022 18:11:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229890AbiIMSLu (ORCPT ); Tue, 13 Sep 2022 14:11:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60316 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231616AbiIMSLN (ORCPT ); Tue, 13 Sep 2022 14:11:13 -0400 Received: from mail-pf1-x42f.google.com (mail-pf1-x42f.google.com [IPv6:2607:f8b0:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D0E717436B for ; Tue, 13 Sep 2022 10:18:02 -0700 (PDT) Received: by mail-pf1-x42f.google.com with SMTP id b75so7150118pfb.7 for ; Tue, 13 Sep 2022 10:18:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=PvnL+9cGl2OZT8JmDVYUgH6KLMONpy7QbVIbld3HZFU=; b=j3yjGxUKh7EVbd/drrPml3FFgsu3DnYW8P+O2OaGRYDdqd3l137D7BK70Pf8P/24UP dMxhOL4B8tYRjki/wGriHL4u6ehhm1PYBVxBrikecmI28KWGeL3EKHS1ypANQtFIbLkw VHRWxMT6SLNe3SMd1Y0HnS7hfmk4PsDowqW7SeQQ5hL0L9TIbEwgfjVEtakLkWHUgFoL QzFAhlbH5vidkGrl3jzkrO4f3KtmEauIsGmMl+jrDuTLSXmDxQPTZvKxuGPrl0C4XtOJ 7ktOc3rR1MdJjhdOt4h2PGiB6FmW5ETm00zr9btBRywo3X9QSB2dh72Wwm7CxdJvFjM6 NWqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=PvnL+9cGl2OZT8JmDVYUgH6KLMONpy7QbVIbld3HZFU=; b=Q/V/ymo0p3w3cxbE5G25XLtGkkfMLFXCw2Kw8XrrnPnPUQVMkD1rk5ApkrFEx87Vfc ZWL5UXP7kXKSZl79+sSpFB7okQQAB1Swn8ukILWDfBsnRwfn7tkW0fpmugxeCwacpsTu RuL2YYsLMzuwFSosehKuRtpUbdYcYR0I2yG4vAjXPIWwZKIzVX236BLYsNeTYWyWR1ld g5kISgdQTCt69H0YOc77G8JFY5PIDuq2zU/IP8QOVj+dO3Ir+uWBcrul6m3GZLbK0NdW DNag+rL9ObQ5iqnpm4682L4kZcsE8y0mTmJShI+gIgoAeDFhOpKUL/LQU1wpZCmthZz0 Q9iw== X-Gm-Message-State: ACgBeo0M9kfnNPIj5GtpJ+OjL/UDdQp2HfT6GRqy5xpOhc1uvyMbehfB VeidU+c3QMMQR7pRXdGkzJZ28xVMBeBX5Q== X-Google-Smtp-Source: AA6agR6B/WSFLIxR901//HPrAt3VSA3sOqUTNRD0eNW0Z+2tGsFw55Mv/bRaEXkKYDPo2/O0ISVF0g== X-Received: by 2002:a05:6a00:21d1:b0:542:b916:c48f with SMTP id t17-20020a056a0021d100b00542b916c48fmr13625403pfj.56.1663089482159; Tue, 13 Sep 2022 10:18:02 -0700 (PDT) Received: from sc2-haas01-esx0118.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id z27-20020aa79e5b000000b0053e5b905843sm796474pfq.203.2022.09.13.10.18.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Sep 2022 10:18:01 -0700 (PDT) From: Nadav Amit X-Google-Original-From: Nadav Amit To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, VMware PV-Drivers Reviewers , Arnd Bergmann , Nadav Amit Subject: [PATCH 2/3] vmw_balloon: exit if initalization fails Date: Tue, 13 Sep 2022 02:43:05 -0700 Message-Id: <20220913094306.317734-3-namit@vmware.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220913094306.317734-1-namit@vmware.com> References: <20220913094306.317734-1-namit@vmware.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Nadav Amit In certain VMware hypervisor variants the balloon might not be supported. In such cases initialization would fail, but resources would keep being unnecessarily wasted. The balloon driver would retry reinitialization every second for no reason. Initialize the balloon once during init, before starting the worker. If initialization fails, put out a message and fail gracefully. Signed-off-by: Nadav Amit --- drivers/misc/vmw_balloon.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/drivers/misc/vmw_balloon.c b/drivers/misc/vmw_balloon.c index 7fa91983c567..762442b9ece8 100644 --- a/drivers/misc/vmw_balloon.c +++ b/drivers/misc/vmw_balloon.c @@ -1416,7 +1416,7 @@ static void vmballoon_pop(struct vmballoon *b) * is not empty) and then restarting protocol. This operation normally * happens when host responds with VMW_BALLOON_ERROR_RESET to a command. */ -static void vmballoon_reset(struct vmballoon *b) +static int vmballoon_reset(struct vmballoon *b) { int error; =20 @@ -1427,11 +1427,13 @@ static void vmballoon_reset(struct vmballoon *b) /* free all pages, skipping monitor unlock */ vmballoon_pop(b); =20 - if (vmballoon_send_start(b, VMW_BALLOON_CAPABILITIES)) + error =3D vmballoon_send_start(b, VMW_BALLOON_CAPABILITIES); + if (error) goto unlock; =20 if ((b->capabilities & VMW_BALLOON_BATCHED_CMDS) !=3D 0) { - if (vmballoon_init_batching(b)) { + error =3D vmballoon_init_batching(b); + if (error) { /* * We failed to initialize batching, inform the monitor * about it by sending a null capability. @@ -1448,8 +1450,7 @@ static void vmballoon_reset(struct vmballoon *b) vmballoon_stats_gen_inc(b, VMW_BALLOON_STAT_RESET); WRITE_ONCE(b->reset_required, false); =20 - error =3D vmballoon_vmci_init(b); - if (error) + if (vmballoon_vmci_init(b)) pr_err_once("failed to initialize vmci doorbell\n"); =20 if (vmballoon_send_guest_id(b)) @@ -1457,6 +1458,7 @@ static void vmballoon_reset(struct vmballoon *b) =20 unlock: up_write(&b->conf_sem); + return error; } =20 /** @@ -1879,6 +1881,23 @@ static int __init vmballoon_init(void) if (x86_hyper_type !=3D X86_HYPER_VMWARE) return -ENODEV; =20 + INIT_LIST_HEAD(&balloon.huge_pages); + spin_lock_init(&balloon.comm_lock); + init_rwsem(&balloon.conf_sem); + balloon.vmci_doorbell =3D VMCI_INVALID_HANDLE; + balloon.batch_page =3D NULL; + balloon.page =3D NULL; + balloon.reset_required =3D true; + + /* + * Reset the balloon to check that it is indeed supported. + */ + error =3D vmballoon_reset(&balloon); + if (error) { + pr_err("memory ballooning is disabled"); + goto fail; + } + INIT_DELAYED_WORK(&balloon.dwork, vmballoon_work); =20 error =3D vmballoon_register_shrinker(&balloon); @@ -1892,14 +1911,6 @@ static int __init vmballoon_init(void) balloon_devinfo_init(&balloon.b_dev_info); vmballoon_compaction_init(&balloon); =20 - INIT_LIST_HEAD(&balloon.huge_pages); - spin_lock_init(&balloon.comm_lock); - init_rwsem(&balloon.conf_sem); - balloon.vmci_doorbell =3D VMCI_INVALID_HANDLE; - balloon.batch_page =3D NULL; - balloon.page =3D NULL; - balloon.reset_required =3D true; - queue_delayed_work(system_freezable_wq, &balloon.dwork, 0); =20 vmballoon_debugfs_init(&balloon); --=20 2.25.1 From nobody Mon Apr 6 00:08:34 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB382ECAAD8 for ; Tue, 13 Sep 2022 18:12:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231994AbiIMSMA (ORCPT ); Tue, 13 Sep 2022 14:12:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56854 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231749AbiIMSLW (ORCPT ); Tue, 13 Sep 2022 14:11:22 -0400 Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 187B779EC9 for ; Tue, 13 Sep 2022 10:18:04 -0700 (PDT) Received: by mail-pl1-x635.google.com with SMTP id v1so12502509plo.9 for ; Tue, 13 Sep 2022 10:18:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=3ZodDSu6Cw5hgKhb4h9fYDsQ0BBEjxdpwaIiLy4Endc=; b=RAdhZsbxcXy9FNvxHeLOh50hx7eC9LAPfpuSPoZggO0QhJdrVW+IcJ3UgIVjAIM2TZ ss3TwsJgXUTGZWLTULS7aM166J6Dn/RyMsmVHuJu1NW6aYXCU+sI41nAe+27GSZqE9p0 f0MVv0MBHctbYJOAUnhIsKv/RXCNoa3/OFf31x/BhyElHAZgGE3kIycQC5z648KACPFj aMNi8z/Ic1J21tMSr709IYAbdXi/7Mvs1DNaj2QyMQfbESJ54sPbwh41NUZQeBYmXF/w 8yZx0rGqsOUwEofguW05YvyUd13zDVdDX/wQykmokSiAy9jsoJTQ9/G2h+nES3hiKEyj htpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=3ZodDSu6Cw5hgKhb4h9fYDsQ0BBEjxdpwaIiLy4Endc=; b=6IWL4dfH3SFoE2KyZY+ER3/0+GzTRv95MZ6vonpfa12bpkFW6IxuJmb7OE9p0tIhgD jyBT4WNiZjxZMNi/6d4geiA4xUkI5ypxUNmEZBs80PUn2Bp8IiJw0hIyjTqoHSCXVS+r jrwN2wUMk3uWZaFEtS45o4TGPQALyEzToNeELcjMY7QwLD98i5k5XhFKZaW2ENgTlJ9d X7GvPm38b3OrRXkbiQ243nl48WLQl+2uxaWcdLuGRE6X0tZv+7AGTLiFOGvBx/+zgd6h ckwmgpsWePWyiOJZh9LY7nkgqqrd4EqVzoBRS985o+B4Y7NXQczqIZ2vB82LHUeUwVpx M47A== X-Gm-Message-State: ACrzQf266EVDUI1Hro3UV9xEfsBavtpVqj62W23cJ5PilBoESaA9NWnI LJha3WtzkeXJWf9GJcmbr6mHFp4k8ptAjg== X-Google-Smtp-Source: AMsMyM5YvOwt78O+hZ4wxWriRsafI7QgmSTmB6I//55n/kYzrhAa7rSVgFfXAffFia5CzE0NVm6SiA== X-Received: by 2002:a17:90a:39c9:b0:1fa:c50d:11f4 with SMTP id k9-20020a17090a39c900b001fac50d11f4mr314167pjf.166.1663089483248; Tue, 13 Sep 2022 10:18:03 -0700 (PDT) Received: from sc2-haas01-esx0118.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id z27-20020aa79e5b000000b0053e5b905843sm796474pfq.203.2022.09.13.10.18.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Sep 2022 10:18:02 -0700 (PDT) From: Nadav Amit X-Google-Original-From: Nadav Amit To: Greg Kroah-Hartman Cc: linux-kernel@vger.kernel.org, VMware PV-Drivers Reviewers , Arnd Bergmann , Nadav Amit Subject: [PATCH 3/3] vmw_balloon: open-code vmballoon_compaction_init() Date: Tue, 13 Sep 2022 02:43:06 -0700 Message-Id: <20220913094306.317734-4-namit@vmware.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220913094306.317734-1-namit@vmware.com> References: <20220913094306.317734-1-namit@vmware.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" From: Nadav Amit 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 Reported-by: kernel test robot Reviewed-by: David Hildenbrand --- 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; } =20 -/** - * 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 =3D 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 =3D vmballoon_migratepage; =20 queue_delayed_work(system_freezable_wq, &balloon.dwork, 0); =20 --=20 2.25.1