Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp4851714imm; Mon, 17 Sep 2018 23:41:45 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYeDJBZdTE74yxO41MRvecMVW70+laHEwoUPajgX6qsJQ5WEPOYfhHAw58/SBfRUxLSllFr X-Received: by 2002:a62:7e93:: with SMTP id z141-v6mr29349209pfc.14.1537252905498; Mon, 17 Sep 2018 23:41:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537252905; cv=none; d=google.com; s=arc-20160816; b=pI5GNKioJX73t2ZV7638GhmGDEeQeh6Eu+RHMxVZOCA4+whimnEUL3G2XqkNzGrSVQ +m71djszjeHFE/dA2NqNfggBvwWuJf7oexROoCuz9L2iNq724kYRfu7sRCYHHs2pZ0/f lILnL9JcUJdjKLU2gk24q0hOgAch1iE9gTJPRIinHKjw0Xjgkk0OFwB0CwwFOrMqILLu oqgiTgUEpzb0WaO4sDldvQLuAQsah714jO9sqcTQA6UmL/uIFwE4PvSMQc92rRLf+pCG ul22K/XugGwZp0bOQ8sMXXGO8nIMBeh4vo6Qs9l+LqMZiwJWYmWVljwCbbdb8TQ2zKMk c86g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=29JrJ6FQl0MDUWPLQbfhV0NVaLU26KlHBukqZC2deKs=; b=i5VKwv3PAuQROx/d1qbpDkJEFUyVkNWpK3YlIfG9eWpCBaqS2nxJHuFGiRGr0LacGl 5FZcYVIkSjxyzAh45Me/Ak/7mjONVoRNmbUNPs7iUQtzyFoJkLrcHaqmtVP+lcA0sXEC DkXnyr1OO8Nf1Kjkg7Lz78JxE8aACdKofs5jRl5RBvzCw7+y9O0e4PNchEEuWRY48GYY mcLZ3SvY55cUiKSJc4dIg3QYoCNxUuxu2J49MRQh/fFenkrOVwC0TTOJ4H3Khk/Ec6Kw jlFJb1PCrGQNOo6RRlLacCjYiNCYORHw7u6y3IhVbp8feAyKFI3FuCvoG1Gt7z/4q1Jf RTdQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h9-v6si17602132pgr.260.2018.09.17.23.41.30; Mon, 17 Sep 2018 23:41:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729350AbeIRMLh (ORCPT + 99 others); Tue, 18 Sep 2018 08:11:37 -0400 Received: from ex13-edg-ou-002.vmware.com ([208.91.0.190]:36971 "EHLO EX13-EDG-OU-002.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729295AbeIRMLg (ORCPT ); Tue, 18 Sep 2018 08:11:36 -0400 Received: from sc9-mailhost3.vmware.com (10.113.161.73) by EX13-EDG-OU-002.vmware.com (10.113.208.156) with Microsoft SMTP Server id 15.0.1156.6; Mon, 17 Sep 2018 23:39:56 -0700 Received: from sc2-haas01-esx0118.eng.vmware.com (sc2-haas01-esx0118.eng.vmware.com [10.172.44.118]) by sc9-mailhost3.vmware.com (Postfix) with ESMTP id D4AEA40957; Mon, 17 Sep 2018 23:40:19 -0700 (PDT) From: Nadav Amit To: Arnd Bergmann , Greg Kroah-Hartman CC: , Nadav Amit Subject: [PATCH 09/19] vmw_balloon: simplify vmballoon_send_get_target() Date: Mon, 17 Sep 2018 23:38:43 -0700 Message-ID: <20180918063853.198332-10-namit@vmware.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180918063853.198332-1-namit@vmware.com> References: <20180918063853.198332-1-namit@vmware.com> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-002.vmware.com: namit@vmware.com does not designate permitted sender hosts) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As we want to leave as little as possible on the global balloon structure, to avoid possible future races, we want to get rid sysinfo. We can actually get the total_ram directly, and simplify the logic of vmballoon_send_get_target() a little. While we are doing that, let's return int and avoid mistakes due to bool/int conversions. Reviewed-by: Xavier Deguillard Signed-off-by: Nadav Amit --- drivers/misc/vmw_balloon.c | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/drivers/misc/vmw_balloon.c b/drivers/misc/vmw_balloon.c index aafd087809e9..17ac066a20fe 100644 --- a/drivers/misc/vmw_balloon.c +++ b/drivers/misc/vmw_balloon.c @@ -223,8 +223,6 @@ struct vmballoon { struct dentry *dbg_entry; #endif - struct sysinfo sysinfo; - struct delayed_work dwork; struct vmci_handle vmci_doorbell; @@ -353,34 +351,29 @@ static u16 vmballoon_page_size(bool is_2m_page) return 1; } -/* - * Retrieve desired balloon size from the host. +/** + * vmballoon_send_get_target() - Retrieve desired balloon size from the host. + * + * @b: pointer to the balloon. + * + * Return: zero on success, EINVAL if limit does not fit in 32-bit, as required + * by the host-guest protocol and EIO if an error occurred in communicating with + * the host. */ -static bool vmballoon_send_get_target(struct vmballoon *b) +static int vmballoon_send_get_target(struct vmballoon *b) { unsigned long status; unsigned long limit; - u32 limit32; - /* - * si_meminfo() is cheap. Moreover, we want to provide dynamic - * max balloon size later. So let us call si_meminfo() every - * iteration. - */ - si_meminfo(&b->sysinfo); - limit = b->sysinfo.totalram; + limit = totalram_pages; /* Ensure limit fits in 32-bits */ - limit32 = (u32)limit; - if (limit != limit32) - return false; + if (limit != (u32)limit) + return -EINVAL; status = vmballoon_cmd(b, VMW_BALLOON_CMD_GET_TARGET, limit, 0); - if (status == VMW_BALLOON_SUCCESS) - return true; - - return false; + return status == VMW_BALLOON_SUCCESS ? 0 : -EIO; } static struct page *vmballoon_alloc_page(bool is_2m_page) @@ -960,7 +953,7 @@ static void vmballoon_work(struct work_struct *work) if (b->reset_required) vmballoon_reset(b); - if (vmballoon_send_get_target(b)) + if (!vmballoon_send_get_target(b)) change = vmballoon_change(b); if (change != 0) { -- 2.17.1