Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp133558pxf; Tue, 6 Apr 2021 17:16:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzDB+Hr9EeXpAHTT6J4rO7T9s5a03cu8+Jp4KUdtvjjIw2d/hm3x8I/QjsxJ04hvsD1AsqX X-Received: by 2002:a17:906:dfce:: with SMTP id jt14mr691553ejc.83.1617754617686; Tue, 06 Apr 2021 17:16:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617754617; cv=none; d=google.com; s=arc-20160816; b=Cc6m3x8YL2tEQ8+sUG3i6y96z7ywPz7G8FPQzK+ngWslY8gRjfMKpH8WhFtK4yQUkC F5VvdO7acWunIJoKzP0+UHmNyh2FaxvAMIa0nZbJPxgNHCSOvfGUe+mzyH3lo7RznGjB LXpH9E5JbXlA8qyKSG1hyOxYzRCO9xG9vOkYC6Kom6Me4uUZRNPqesVSBQFYY/PY8S5B D4+mslhTtha9YhWG7Yd2dBOkPhO2b2mjcuHoWOEURkdoQLMey+A5i0bcMUy+USThWGCC mQSn8dikl7RtEIMRMD4SwBwQ36/MnZ2kUmHy3+5jSboLgWClNQ3XNSqwvbNrf1XvRy4I DUAw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=reA9JAMAZVa0XzjwqsfdCGmyPLpHSENiaA9L03WtnX4=; b=pA9X6s6j5HbPLXgdIv61ct06Q8bU5uH7ch8qSNigNU0Ykgf8SJtAoAYWYJIsQ29Ewu 8wVnSkKD7D8cMFGjfXJgEnl9+3gVZpgKCRNDBZU1Vxey40+F2uwSn4C3ygwlbGrO4xiA 2KAHz777WlyU+0Tqtwk++otu0RuXtlB+SKGbJVU5m4qgCxWcQpDHpZoaWKu8MrXmGjWN HM8uWz+EH+c+iyJ39a9ILT8Cw8LNsiZouS8+sO0ZVGE4sBto8L2z9zpv0VvgMIhKvzLV OxWN1BZazfaLL26fUevIZsHRMvVQcJpbEzPorEDYpJ/D4MLdYRIBYvbOEMC8BlIUwzzs Wm+g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j23si365398ejy.525.2021.04.06.17.16.34; Tue, 06 Apr 2021 17:16:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245369AbhDFLLr (ORCPT + 99 others); Tue, 6 Apr 2021 07:11:47 -0400 Received: from mx2.suse.de ([195.135.220.15]:49670 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234057AbhDFLLe (ORCPT ); Tue, 6 Apr 2021 07:11:34 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 38D8CB154; Tue, 6 Apr 2021 11:11:26 +0000 (UTC) From: Oscar Salvador To: Andrew Morton Cc: David Hildenbrand , Michal Hocko , Anshuman Khandual , Pavel Tatashin , Vlastimil Babka , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Oscar Salvador Subject: [PATCH v6 2/8] mm,memory_hotplug: Relax fully spanned sections check Date: Tue, 6 Apr 2021 13:11:09 +0200 Message-Id: <20210406111115.8953-3-osalvador@suse.de> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210406111115.8953-1-osalvador@suse.de> References: <20210406111115.8953-1-osalvador@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When using self-hosted vmemmap pages, the number of pages passed to {online,offline}_pages might not fully span sections, but they always fully span pageblocks. Relax the check account for that case. Signed-off-by: Oscar Salvador --- mm/memory_hotplug.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c index 0cdbbfbc5757..5fe3e3942b19 100644 --- a/mm/memory_hotplug.c +++ b/mm/memory_hotplug.c @@ -838,9 +838,13 @@ int __ref online_pages(unsigned long pfn, unsigned long nr_pages, int ret; struct memory_notify arg; - /* We can only online full sections (e.g., SECTION_IS_ONLINE) */ + /* We can only offline full sections (e.g., SECTION_IS_ONLINE). + * However, when using e.g: memmap_on_memory, some pages are initialized + * prior to calling in here. The remaining amount of pages must be + * pageblock aligned. + */ if (WARN_ON_ONCE(!nr_pages || - !IS_ALIGNED(pfn | nr_pages, PAGES_PER_SECTION))) + !IS_ALIGNED(pfn | nr_pages, pageblock_nr_pages))) return -EINVAL; mem_hotplug_begin(); @@ -1573,9 +1577,13 @@ int __ref offline_pages(unsigned long start_pfn, unsigned long nr_pages) int ret, node; char *reason; - /* We can only offline full sections (e.g., SECTION_IS_ONLINE) */ + /* We can only offline full sections (e.g., SECTION_IS_ONLINE). + * However, when using e.g: memmap_on_memory, some pages are initialized + * prior to calling in here. The remaining amount of pages must be + * pageblock aligned. + */ if (WARN_ON_ONCE(!nr_pages || - !IS_ALIGNED(start_pfn | nr_pages, PAGES_PER_SECTION))) + !IS_ALIGNED(start_pfn | nr_pages, pageblock_nr_pages))) return -EINVAL; mem_hotplug_begin(); -- 2.16.3