Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp2286475imm; Thu, 20 Sep 2018 10:35:16 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZlgVX2ZeE7APP0TShxeEamNiBgfz3mKsyEX9GNXWSLeCxAZOhvosxGYUf2g9hl2VWEZhyI X-Received: by 2002:a62:6690:: with SMTP id s16-v6mr42410536pfj.152.1537464916836; Thu, 20 Sep 2018 10:35:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537464916; cv=none; d=google.com; s=arc-20160816; b=MRKMca4lpuTRyTEQpC+b7qJ9Sm2Vovn13JDJASlmZk/bkAD5OAJsgNRyR0de/EUXpk r+jz0jm8DroeQuC5p6o+rImMGi7lPzBw6G0hXYju4u/BjmEDALOG/HJ5t9e+V2EGS9eH bBKTvNETNgatWSfmK1BvRWAnBKoT3GbxrEIAunjMgYAgPhQ5QiT6kYGT5uwt2aRPy9Af wsKumzR7Z2lWoXc1Pk7gn2F4zQwPd/yOyxiEenTgSGoP41O7EpExaUoqTxhvfLQDCMaY BvQtO5qEtY984aGTqhZ/o6rv65i8R/fdUDwqkO8CKkMotRnr2LUM8cH1nYLfqzrrKBly e8Lw== 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=LTu+c7xdjcJrpgZZKgzU3AE1IU3oKWPJrllBNxQrjHE=; b=T4PnzimqcFoXSrEckswbCEwb+dqgYv7bGeahFTqUBAyzhS+BLWp2LFX6n8RzNjb9/b AtLICRNCd9niXM+ck5M7iEbYOm5j7DiZwIY09N6gncMdodf+VDV+jmqL8ToBGZrl0+mF IbSFBLqKsrxJEwjmYMDemQGaK++/ff2U+Yzcpz/N4A5bZ9rmvR07G4zzvX4NhpZ7+Wre +t89qyJFYh6YvhktgXuNLpN4EGy219/jPW6Ox/NkQiH1h5VHIiR5NidqgVR9oiXauH8i e8Mf1HQEcz5qa5I+KYGaMAhbzXPv3bF3kOJ8WsHbd4fX5iwXW0KVB2jdiJRRtrD2Nu+Q Rcqw== 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 d38-v6si24610375pla.422.2018.09.20.10.35.00; Thu, 20 Sep 2018 10:35:16 -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 S2388277AbeITXRc (ORCPT + 99 others); Thu, 20 Sep 2018 19:17:32 -0400 Received: from ex13-edg-ou-001.vmware.com ([208.91.0.189]:8434 "EHLO EX13-EDG-OU-001.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387951AbeITXQ1 (ORCPT ); Thu, 20 Sep 2018 19:16:27 -0400 Received: from sc9-mailhost3.vmware.com (10.113.161.73) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Thu, 20 Sep 2018 10:31:47 -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 23E534069E; Thu, 20 Sep 2018 10:31:48 -0700 (PDT) From: Nadav Amit To: Greg Kroah-Hartman , Arnd Bergmann CC: , Xavier Deguillard , Nadav Amit Subject: [PATCH v2 10/20] vmw_balloon: simplify vmballoon_send_get_target() Date: Thu, 20 Sep 2018 10:30:16 -0700 Message-ID: <20180920173026.141333-11-namit@vmware.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180920173026.141333-1-namit@vmware.com> References: <20180920173026.141333-1-namit@vmware.com> MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-001.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 0d9f223d463e..3c80a21e0f91 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) @@ -962,7 +955,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