From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5039EC433DF for ; Wed, 19 Aug 2020 18:00:21 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1344320658 for ; Wed, 19 Aug 2020 18:00:21 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="bWwE8UwO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1344320658 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 9FAA08D004D; Wed, 19 Aug 2020 14:00:20 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9AB5B8D0002; Wed, 19 Aug 2020 14:00:20 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 879758D004D; Wed, 19 Aug 2020 14:00:20 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0144.hostedemail.com [216.40.44.144]) by kanga.kvack.org (Postfix) with ESMTP id 67A6F8D0002 for ; Wed, 19 Aug 2020 14:00:20 -0400 (EDT) Received: from smtpin15.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay02.hostedemail.com (Postfix) with ESMTP id 74E5B362F for ; Wed, 19 Aug 2020 18:00:19 +0000 (UTC) X-FDA: 77168082558.15.steam41_0003ba52702a Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin15.hostedemail.com (Postfix) with ESMTP id 4484A1814B0D0 for ; Wed, 19 Aug 2020 18:00:17 +0000 (UTC) X-HE-Tag: steam41_0003ba52702a X-Filterd-Recvd-Size: 6031 Received: from us-smtp-delivery-1.mimecast.com (us-smtp-2.mimecast.com [205.139.110.61]) by imf43.hostedemail.com (Postfix) with ESMTP for ; Wed, 19 Aug 2020 18:00:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1597860016; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=LyiC6rM+UlQBr5f9T8t1uz9U5WC5Q5Z6b9lxK5tYtZU=; b=bWwE8UwO4zkSM+SIPea241gbx6dU8odkACrf1BdjWHb5E0+mnVsjmQkq7FwWpg6BVquMgR JGWOjQ4xNpb06iihDNWvGe/NOt2brsiNL+CA02DtFngzRRzsFlNBGBiWSoyxS7Gc8t9O53 +ilNaUdYlXvNHI+txCVOeuwZ/a68N84= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-110-k92kuqJ7O7e_oRVMEBsnIQ-1; Wed, 19 Aug 2020 14:00:12 -0400 X-MC-Unique: k92kuqJ7O7e_oRVMEBsnIQ-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DAB8C807330; Wed, 19 Aug 2020 18:00:10 +0000 (UTC) Received: from t480s.redhat.com (ovpn-114-11.ams2.redhat.com [10.36.114.11]) by smtp.corp.redhat.com (Postfix) with ESMTP id 0B11910013C4; Wed, 19 Aug 2020 18:00:08 +0000 (UTC) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org, David Hildenbrand , Michal Hocko , Andrew Morton , Wei Yang , Baoquan He , Pankaj Gupta , Oscar Salvador Subject: [PATCH v2 03/10] mm/memory_hotplug: simplify page offlining Date: Wed, 19 Aug 2020 19:59:50 +0200 Message-Id: <20200819175957.28465-4-david@redhat.com> In-Reply-To: <20200819175957.28465-1-david@redhat.com> References: <20200819175957.28465-1-david@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Rspamd-Queue-Id: 4484A1814B0D0 X-Spamd-Result: default: False [0.00 / 100.00] X-Rspamd-Server: rspam03 Content-Transfer-Encoding: quoted-printable X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: We make sure that we cannot have any memory holes right at the beginning of offline_pages(). We no longer need walk_system_ram_range() and can call test_pages_isolated() and __offline_isolated_pages() directly. offlined_pages always corresponds to nr_pages, so we can simplify that. Acked-by: Michal Hocko Cc: Andrew Morton Cc: Michal Hocko Cc: Wei Yang Cc: Baoquan He Cc: Pankaj Gupta Cc: Oscar Salvador Signed-off-by: David Hildenbrand --- mm/memory_hotplug.c | 46 ++++++++++----------------------------------- 1 file changed, 10 insertions(+), 36 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 6856702af68d9..50aa5df696e9d 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -1373,28 +1373,6 @@ do_migrate_range(unsigned long start_pfn, unsigned= long end_pfn) return ret; } =20 -/* Mark all sections offline and remove all free pages from the buddy. *= / -static int -offline_isolated_pages_cb(unsigned long start, unsigned long nr_pages, - void *data) -{ - unsigned long *offlined_pages =3D (unsigned long *)data; - - *offlined_pages +=3D __offline_isolated_pages(start, start + nr_pages); - return 0; -} - -/* - * Check all pages in range, recorded as memory resource, are isolated. - */ -static int -check_pages_isolated_cb(unsigned long start_pfn, unsigned long nr_pages, - void *data) -{ - return test_pages_isolated(start_pfn, start_pfn + nr_pages, - MEMORY_OFFLINE); -} - static int __init cmdline_parse_movable_node(char *p) { movable_node_enabled =3D true; @@ -1481,7 +1459,7 @@ static int count_system_ram_pages_cb(unsigned long = start_pfn, int __ref offline_pages(unsigned long start_pfn, unsigned long nr_pages) { const unsigned long end_pfn =3D start_pfn + nr_pages; - unsigned long pfn, system_ram_pages =3D 0, offlined_pages =3D 0; + unsigned long pfn, system_ram_pages =3D 0; int ret, node, nr_isolate_pageblock; unsigned long flags; struct zone *zone; @@ -1579,16 +1557,12 @@ int __ref offline_pages(unsigned long start_pfn, = unsigned long nr_pages) reason =3D "failure to dissolve huge pages"; goto failed_removal_isolated; } - /* check again */ - ret =3D walk_system_ram_range(start_pfn, end_pfn - start_pfn, - NULL, check_pages_isolated_cb); - } while (ret); - - /* Ok, all of our target is isolated. - We cannot do rollback at this point. */ - walk_system_ram_range(start_pfn, end_pfn - start_pfn, - &offlined_pages, offline_isolated_pages_cb); - pr_info("Offlined Pages %ld\n", offlined_pages); + } while (test_pages_isolated(start_pfn, end_pfn, MEMORY_OFFLINE)); + + /* Mark all sections offline and remove free pages from the buddy. */ + __offline_isolated_pages(start_pfn, end_pfn); + pr_info("Offlined Pages %ld\n", nr_pages); + /* * Onlining will reset pagetype flags and makes migrate type * MOVABLE, so just need to decrease the number of isolated @@ -1599,11 +1573,11 @@ int __ref offline_pages(unsigned long start_pfn, = unsigned long nr_pages) spin_unlock_irqrestore(&zone->lock, flags); =20 /* removal success */ - adjust_managed_page_count(pfn_to_page(start_pfn), -offlined_pages); - zone->present_pages -=3D offlined_pages; + adjust_managed_page_count(pfn_to_page(start_pfn), -nr_pages); + zone->present_pages -=3D nr_pages; =20 pgdat_resize_lock(zone->zone_pgdat, &flags); - zone->zone_pgdat->node_present_pages -=3D offlined_pages; + zone->zone_pgdat->node_present_pages -=3D nr_pages; pgdat_resize_unlock(zone->zone_pgdat, &flags); =20 init_per_zone_wmark_min(); --=20 2.26.2