Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1135413imm; Wed, 26 Sep 2018 12:16:51 -0700 (PDT) X-Google-Smtp-Source: ACcGV60ezLnWNGrEwDpxfDKQfiBFh0B/CZpbekOEVCaD5SJT+d25OB9n4R1Q7tpne13RS0nkG5DI X-Received: by 2002:a62:c008:: with SMTP id x8-v6mr7623502pff.149.1537989411603; Wed, 26 Sep 2018 12:16:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537989411; cv=none; d=google.com; s=arc-20160816; b=n/t0S0hHrbp7cpvY91+pItpYb7a4ww2zOMW1GCnykY2isQ3zBUzWk1jBMywssbxp63 w9s2KtgivUZKixXaI5qA/liYAnDXjR1EgTil0DWWjoMq6tTUd7hXter5kCAInwG2eQnN dMZbsHQQZ+7P5X/Pl+A60M/XxY/UqROBJTy6XNI0gZOP76CKkfxV6YZDK7UeCZbIDCKz a5dztzaAUooOJPgMJwhHBcIVfjkkTPyAsBzhzpWgHrqNFdU21yqykg8Nc6C1gWmySONh Z8UbSJhTDQTTUwynuovkd7FxI1Z0o2ZtVyMfX6LhrZIGniDC4mF1TPzIFPD+8WTXeZC0 OkdA== 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=PFZhGZ48TiMHA0n7G2IAFw/V0eDBfwPrk3DX7Nw4cyy85juvNGAzzAOXCf5HzvlYn1 xE9sdlUFa9SKRY08oBzddYDiKMwcO1jEfdrXmxKL61It6ggmzYoKbqXq+HCZMw4h8B6/ lDzpSxz9M0VC/EcYh6EPEo+/fMtsZUfOxcRRbWIZmAru1F9fuTvum7X/hruUz+1Ub3Za xzUNdVRL+vVy973e6Vrn0TYfVQF8nQ2cEC7Nb7xZ97iivs3XK0HO9yFswnLAjzjJX1OD 5mVAA2UtaKTPU68NNK3v6Sj7dzNfEhRZrHK9H6gF4oIbf0cSqw91tlryFJiofB5nWeEu 2HYw== 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 u2-v6si5308103pfn.250.2018.09.26.12.16.36; Wed, 26 Sep 2018 12:16:51 -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 S1727741AbeI0B3p (ORCPT + 99 others); Wed, 26 Sep 2018 21:29:45 -0400 Received: from ex13-edg-ou-001.vmware.com ([208.91.0.189]:2656 "EHLO EX13-EDG-OU-001.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727541AbeI0B3n (ORCPT ); Wed, 26 Sep 2018 21:29:43 -0400 Received: from sc9-mailhost2.vmware.com (10.113.161.72) by EX13-EDG-OU-001.vmware.com (10.113.208.155) with Microsoft SMTP Server id 15.0.1156.6; Wed, 26 Sep 2018 12:15:01 -0700 Received: from sc2-haas01-esx0118.eng.vmware.com (sc2-haas01-esx0118.eng.vmware.com [10.172.44.118]) by sc9-mailhost2.vmware.com (Postfix) with ESMTP id A84CDB0E87; Wed, 26 Sep 2018 15:15:09 -0400 (EDT) From: Nadav Amit To: Arnd Bergmann , CC: Xavier Deguillard , , Nadav Amit Subject: [PATCH v3 10/20] vmw_balloon: simplify vmballoon_send_get_target() Date: Wed, 26 Sep 2018 12:13:26 -0700 Message-ID: <20180926191336.101885-11-namit@vmware.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20180926191336.101885-1-namit@vmware.com> References: <20180926191336.101885-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