Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp400276imu; Tue, 20 Nov 2018 00:46:41 -0800 (PST) X-Google-Smtp-Source: AFSGD/WvAXotVg5DsItXMfd5C+kGtEsOI/qZ9IZnWBH27gqCaAnQICV9lQQw/1dFtZPAEXKYUrMg X-Received: by 2002:a63:170c:: with SMTP id x12mr1075702pgl.364.1542703601182; Tue, 20 Nov 2018 00:46:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542703601; cv=none; d=google.com; s=arc-20160816; b=QmIVgDOKw1JMRrBpv9099lEqFhKLv1roD9tcTrx0/Fdd5pxEN73NIQzNDaZos6J+la 5PkdAllfdKTqWK0BRSIPDodOFMtDnv7P1i2qIGUA0vDBrlX0vgzsUYhSEfYBBn2+ix67 QCyZthDTHwF8+irNjEmKn/F31ktZ0jJq87OsBffVO9JHuIrOMPhsA84l9yUHsOxomhXg 5CeKNoo4plBbBKWVDfrpsYQEA6WLSqGah+n3Ci5zSb6kfh1jF2uhAsNVER1gaLXvRYrq erNJ43rEgKG8JvXWA3wLj5ZO3X2BrZoQjBBqMFj2ZdXYqQP25TnBobA1zJdTo30psZkO maYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:thread-index:thread-topic :content-transfer-encoding:mime-version:subject:references :in-reply-to:message-id:cc:to:from:date; bh=1J+ATSXWoRtMnYS/gJDCOddh1wORQfJ3oCBE44AUYLI=; b=SepvKRL6qyMXgV0mVQa13EZM4gF9tqb7p8UaAbLHEQSOP7LkamzjSZaGZUt77oG2wD ooQ3H1NK4bYAOSX7rgx5xLGQehuhyzbGA91TfVJHCy/23n7FlIC3BkfssPqKUEM2xOyV OVSb7V9rU7MNHiUUgbZT0O0SFNLqWiwf9TCfykwQxwojklqkp/0FddHuvgn3TDLQ3L37 ldf+NeJpbfHNvEakhTGEA4Ao0TQjKf65mgXIDS2KwZ6dGUlXW+XLskd+a8nExhQGsFoB kaZ1f8xjoaHb0cwEjiyhuOC9jVxt/4qOpwkLllh21HaG0hSuxSlblNwZZtm1ZQx1NWLC /aOw== 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=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v19si18706315pfa.80.2018.11.20.00.46.25; Tue, 20 Nov 2018 00:46:41 -0800 (PST) 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=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726784AbeKTTNc (ORCPT + 99 others); Tue, 20 Nov 2018 14:13:32 -0500 Received: from mx1.redhat.com ([209.132.183.28]:41556 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726101AbeKTTNc (ORCPT ); Tue, 20 Nov 2018 14:13:32 -0500 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id B915D811D3; Tue, 20 Nov 2018 08:45:33 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 85CDF608C4; Tue, 20 Nov 2018 08:45:33 +0000 (UTC) Received: from zmail21.collab.prod.int.phx2.redhat.com (zmail21.collab.prod.int.phx2.redhat.com [10.5.83.24]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 439FE1800533; Tue, 20 Nov 2018 08:45:33 +0000 (UTC) Date: Tue, 20 Nov 2018 03:45:32 -0500 (EST) From: Pankaj Gupta To: David Hildenbrand Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org, devel@linuxdriverproject.org, linux-fsdevel@vger.kernel.org, linux-pm@vger.kernel.org, xen-devel@lists.xenproject.org, kexec-ml , pv-drivers@vmware.com, "K. Y. Srinivasan" , Haiyang Zhang , Stephen Hemminger , Kairui Song , Vitaly Kuznetsov , Andrew Morton , Matthew Wilcox , Michal Hocko , "Michael S. Tsirkin" Message-ID: <1747228.35250472.1542703532881.JavaMail.zimbra@redhat.com> In-Reply-To: <20181119101616.8901-6-david@redhat.com> References: <20181119101616.8901-1-david@redhat.com> <20181119101616.8901-6-david@redhat.com> Subject: Re: [PATCH v1 5/8] hv_balloon: mark inflated pages PG_offline MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Originating-IP: [10.67.116.119, 10.4.195.20] Thread-Topic: hv_balloon: mark inflated pages PG_offline Thread-Index: WULPe0NX2lje8pHd8lwBzyMbSeWoFw== X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 20 Nov 2018 08:45:34 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi David, > > Mark inflated and never onlined pages PG_offline, to tell the world that > the content is stale and should not be dumped. > > Cc: "K. Y. Srinivasan" > Cc: Haiyang Zhang > Cc: Stephen Hemminger > Cc: Kairui Song > Cc: Vitaly Kuznetsov > Cc: Andrew Morton > Cc: Matthew Wilcox > Cc: Michal Hocko > Cc: "Michael S. Tsirkin" > Signed-off-by: David Hildenbrand > --- > drivers/hv/hv_balloon.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/hv/hv_balloon.c b/drivers/hv/hv_balloon.c > index 211f3fe3a038..47719862e57f 100644 > --- a/drivers/hv/hv_balloon.c > +++ b/drivers/hv/hv_balloon.c > @@ -681,8 +681,13 @@ static struct notifier_block hv_memory_nb = { > /* Check if the particular page is backed and can be onlined and online it. > */ > static void hv_page_online_one(struct hv_hotadd_state *has, struct page *pg) > { > - if (!has_pfn_is_backed(has, page_to_pfn(pg))) > + if (!has_pfn_is_backed(has, page_to_pfn(pg))) { > + if (!PageOffline(pg)) > + __SetPageOffline(pg); > return; > + } > + if (PageOffline(pg)) > + __ClearPageOffline(pg); > > /* This frame is currently backed; online the page. */ > __online_page_set_limits(pg); > @@ -1201,6 +1206,7 @@ static void free_balloon_pages(struct hv_dynmem_device > *dm, > > for (i = 0; i < num_pages; i++) { > pg = pfn_to_page(i + start_frame); > + __ClearPageOffline(pg); Just thinking, do we need to care for clearing PageOffline flag before freeing a balloon'd page? Thanks, Pankaj > __free_page(pg); > dm->num_pages_ballooned--; > } > @@ -1213,7 +1219,7 @@ static unsigned int alloc_balloon_pages(struct > hv_dynmem_device *dm, > struct dm_balloon_response *bl_resp, > int alloc_unit) > { > - unsigned int i = 0; > + unsigned int i, j; > struct page *pg; > > if (num_pages < alloc_unit) > @@ -1245,6 +1251,10 @@ static unsigned int alloc_balloon_pages(struct > hv_dynmem_device *dm, > if (alloc_unit != 1) > split_page(pg, get_order(alloc_unit << PAGE_SHIFT)); > > + /* mark all pages offline */ > + for (j = 0; j < (1 << get_order(alloc_unit << PAGE_SHIFT)); j++) > + __SetPageOffline(pg + j); > + > bl_resp->range_count++; > bl_resp->range_array[i].finfo.start_page = > page_to_pfn(pg); > -- > 2.17.2 > >