Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp1496753pxv; Fri, 2 Jul 2021 05:22:22 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzvA5d7T6HYO3FQJZpBNYK7kOX1fizPkIRoOvHOsMNw/10zI21xcTOcClecTEZZJXT/RVom X-Received: by 2002:a92:7c11:: with SMTP id x17mr1064775ilc.224.1625228542585; Fri, 02 Jul 2021 05:22:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625228542; cv=none; d=google.com; s=arc-20160816; b=ODD+pWq1vwwwwozrlPiGcrnI32bSgMYFHLQFtzXFeOcesUN0RbLVAEFQE8O8pYXZ5Q UBeqn5tjpxC+UPL8U+c62nNm/qeW4/OXpwK8AnTdhZ/gT6HaGUMylgX/AQ0BOe2urlA5 CvhPAaFFFft42heYPpV9Feww9u0JSzpJNjzev1hqN5Dp7HvqpbroKKXDwrW9oFXKvQwH DSTHrQtuk8kgL41tYL2fNUCZ56vdSbqNhKB2Xg+K43m6HlebF5uqwWX2oyTxbo6JOd66 CkYlLnrrHKKhXBQJ5slXjE2LrmFOJoG9axGuxenhIDI7ftTJVma9KwUpkU8LzNtqqvka wyjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=B8Ca/03PVVMeP5n0edc8DituqmM6qLoYX7dIIIVyhKA=; b=VBdaAA7JuNb83w9GNDEhnmPFru4DjFyB4Uy6cHRjPQYZhMwecLPDdIAgcPwWAOYlQ2 zI6huMIBWC8B8ZYO6lHLpuZUDhYpmaM99rhrH27lmjejBri3tIJvRuXO9gMTjuz+2may 6EWNPqMw5gsLxCFmWwT1i1QmIL0D5ZVs38/yXAixftPV/90QXoM006YKRz9mg9XCiiGT h2nq8LeTzc8cMmywRs4iXbl/5Ryz1+MNNz9vYYuAJYwra2FYIvbKBkkTQkqDIAIQD5mQ mpKLORAYnOYvXr7iBGnVQ9q3ToOD2764o01VhuqMFIhsZ5IZjWVuik/0QfELKhj1z2eV A5+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=dvBN8Zta; 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; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f12si2622407ilk.157.2021.07.02.05.21.55; Fri, 02 Jul 2021 05:22:22 -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; dkim=pass header.i=@suse.com header.s=susede1 header.b=dvBN8Zta; 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; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=suse.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232156AbhGBMXq (ORCPT + 99 others); Fri, 2 Jul 2021 08:23:46 -0400 Received: from smtp-out1.suse.de ([195.135.220.28]:38588 "EHLO smtp-out1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232107AbhGBMXp (ORCPT ); Fri, 2 Jul 2021 08:23:45 -0400 Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out1.suse.de (Postfix) with ESMTP id ABFD0220ED; Fri, 2 Jul 2021 12:13:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1625227984; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=B8Ca/03PVVMeP5n0edc8DituqmM6qLoYX7dIIIVyhKA=; b=dvBN8ZtaTXw2tmTKaFnY+usmC9pmak3btEi7MP4vZgXo4Trgt2NH0MkASmjnvppGNEtWL6 ib5BokE4ybVuxz5sGfRhDxWGaUQwaoRFjho30pCKXhsoZl1y28pRoY7VW6HX+iasbMxIeA 8o3qXLWarTQowcx9ZV/IH0O3uNxz728= Received: from suse.cz (unknown [10.100.201.86]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 01075A3B81; Fri, 2 Jul 2021 12:13:03 +0000 (UTC) Date: Fri, 2 Jul 2021 14:13:03 +0200 From: Michal Hocko To: Ohhoon Kwon Cc: david@redhat.com, akpm@linux-foundation.org, bhe@redhat.com, rppt@linux.ibm.com, ohkwon1043@gmail.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/3] mm: sparse: pass section_nr to section_mark_present Message-ID: References: <20210702094132.6276-1-ohoono.kwon@samsung.com> <20210702094132.6276-2-ohoono.kwon@samsung.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210702094132.6276-2-ohoono.kwon@samsung.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri 02-07-21 18:41:30, Ohhoon Kwon wrote: > With CONFIG_SPARSEMEM_EXTREME enabled, __section_nr() which converts > mem_section to section_nr could be costly since it iterates all > section roots to check if the given mem_section is in its range. > > On the other hand, __nr_to_section() which converts section_nr to > mem_section can be done in O(1). > > Let's pass section_nr instead of mem_section ptr to > section_mark_present() in order to reduce needless iterations. It is indeed wasteful to spend time on something that is already known. Both callers have already determined both the section number and the section so why not just pass both to section_mark_present? One could argue that from an API point of view it is a bad practice to have two indipendent arguments referring to the same underlying object, and I would agree, but this is not really a something that has a wider use so it is more of a helper. Maybe we want to make that more explicit via __ prefix. > Signed-off-by: Ohhoon Kwon > --- > mm/sparse.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/mm/sparse.c b/mm/sparse.c > index 55c18aff3e42..4a2700e9a65f 100644 > --- a/mm/sparse.c > +++ b/mm/sparse.c > @@ -186,13 +186,14 @@ void __meminit mminit_validate_memmodel_limits(unsigned long *start_pfn, > * those loops early. > */ > unsigned long __highest_present_section_nr; > -static void section_mark_present(struct mem_section *ms) > +static void section_mark_present(unsigned long section_nr) > { > - unsigned long section_nr = __section_nr(ms); > + struct mem_section *ms; > > if (section_nr > __highest_present_section_nr) > __highest_present_section_nr = section_nr; > > + ms = __nr_to_section(section_nr); > ms->section_mem_map |= SECTION_MARKED_PRESENT; > } > > @@ -279,7 +280,7 @@ static void __init memory_present(int nid, unsigned long start, unsigned long en > if (!ms->section_mem_map) { > ms->section_mem_map = sparse_encode_early_nid(nid) | > SECTION_IS_ONLINE; > - section_mark_present(ms); > + section_mark_present(section); > } > } > } > @@ -933,7 +934,7 @@ int __meminit sparse_add_section(int nid, unsigned long start_pfn, > > ms = __nr_to_section(section_nr); > set_section_nid(section_nr, nid); > - section_mark_present(ms); > + section_mark_present(section_nr); > > /* Align memmap to section boundary in the subsection case */ > if (section_nr_to_pfn(section_nr) != start_pfn) > -- > 2.17.1 -- Michal Hocko SUSE Labs