From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mx1.redhat.com ([209.132.183.28]) by casper.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1gP1js-0004aM-Dz for kexec@lists.infradead.org; Tue, 20 Nov 2018 08:50:34 +0000 Subject: Re: [PATCH v1 5/8] hv_balloon: mark inflated pages PG_offline References: <20181119101616.8901-1-david@redhat.com> <20181119101616.8901-6-david@redhat.com> <1747228.35250472.1542703532881.JavaMail.zimbra@redhat.com> From: David Hildenbrand Message-ID: <6258a58b-28c7-c055-0752-e8bd085b835f@redhat.com> Date: Tue, 20 Nov 2018 09:49:42 +0100 MIME-Version: 1.0 In-Reply-To: <1747228.35250472.1542703532881.JavaMail.zimbra@redhat.com> Content-Language: en-US List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "kexec" Errors-To: kexec-bounces+dwmw2=infradead.org@lists.infradead.org To: Pankaj Gupta Cc: Michal Hocko , Stephen Hemminger , Kairui Song , linux-pm@vger.kernel.org, pv-drivers@vmware.com, Haiyang Zhang , linux-doc@vger.kernel.org, kexec-ml , linux-kernel@vger.kernel.org, Matthew Wilcox , linux-mm@kvack.org, "Michael S. Tsirkin" , xen-devel@lists.xenproject.org, linux-fsdevel@vger.kernel.org, devel@linuxdriverproject.org, Vitaly Kuznetsov , "K. Y. Srinivasan" , Andrew Morton On 20.11.18 09:45, Pankaj Gupta wrote: > > 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? Yes we have to otherwise the code will crash when trying to set PageBuddy. (only one page type at a time may be set right now, and it makes sense. A page that is offline cannot e.g. be a buddy page) So PageOffline is completely managed by the page owner. > > Thanks, > Pankaj -- Thanks, David / dhildenb _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec