From: Michal Hocko <mhocko@kernel.org>
To: David Hildenbrand <david@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Oscar Salvador <osalvador@suse.de>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [PATCH v1] drivers/base/node.c: get rid of get_nid_for_pfn()
Date: Thu, 28 Nov 2019 13:01:21 +0100 [thread overview]
Message-ID: <20191128120121.GL26807@dhcp22.suse.cz> (raw)
In-Reply-To: <c7a3c823-d07d-54f7-19f1-bb75fb8f82df@redhat.com>
On Thu 28-11-19 12:52:16, David Hildenbrand wrote:
> On 28.11.19 12:50, Michal Hocko wrote:
> > On Thu 28-11-19 12:23:08, David Hildenbrand wrote:
> > [...]
> >> >From fc13fd540a1702592e389e821f6266098e41e2bd Mon Sep 17 00:00:00 2001
> >> From: David Hildenbrand <david@redhat.com>
> >> Date: Wed, 27 Nov 2019 16:18:42 +0100
> >> Subject: [PATCH] drivers/base/node.c: optimize get_nid_for_pfn()
> >>
> >> Since commit d84f2f5a7552 ("drivers/base/node.c: simplify
> >> unregister_memory_block_under_nodes()") we only have a single user of
> >> get_nid_for_pfn(). The remaining user calls this function when booting -
> >> where all added memory is online.
> >>
> >> Make it clearer that this function should only be used during boot (
> >> e.g., calling it on offline memory would be bad) by renaming the
> >> function to something meaningful, optimize out the ifdef and the additional
> >> system_state check, and add a comment why CONFIG_DEFERRED_STRUCT_PAGE_INIT
> >> handling is in place at all.
> >>
> >> Also, optimize the call site. There is no need to check against
> >> page_nid < 0 - it will never match the nid (nid >= 0).
> >>
> >> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> >> Cc: "Rafael J. Wysocki" <rafael@kernel.org>
> >> Cc: Michal Hocko <mhocko@kernel.org>
> >> Cc: Oscar Salvador <osalvador@suse.de>
> >> Cc: Andrew Morton <akpm@linux-foundation.org>
> >> Signed-off-by: David Hildenbrand <david@redhat.com>
> >
> > Yes this looks much better! I am not sure this will pass all weird
> > config combinations because IS_ENABLED will not hide early_pfn_to_nid
> > from the early compiler stages so it might complain. But if this passes
> > 0day compile scrutiny then this is much much better. If not then we just
> > have to use ifdef which is a minor thing.
>
> The compiler should optimize out
>
> if (0)
> code
>
> and therefore never link to early_pfn_to_nid.
You are right, but there is a catch. The optimization phase is much
later than the syntactic check so if the code doesn't make sense
for the syntactic point of view then it will complain. This is a notable
difference to #ifdef which just removes the whole block in the
preprocessor phase.
--
Michal Hocko
SUSE Labs
next prev parent reply other threads:[~2019-11-28 12:01 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-27 17:41 [PATCH v1] drivers/base/node.c: get rid of get_nid_for_pfn() David Hildenbrand
2019-11-28 10:20 ` Michal Hocko
2019-11-28 10:25 ` David Hildenbrand
2019-11-28 11:23 ` David Hildenbrand
2019-11-28 11:50 ` Michal Hocko
2019-11-28 11:52 ` David Hildenbrand
2019-11-28 12:01 ` Michal Hocko [this message]
2019-11-28 12:19 ` David Hildenbrand
2019-11-28 14:13 ` David Hildenbrand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191128120121.GL26807@dhcp22.suse.cz \
--to=mhocko@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=david@redhat.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=osalvador@suse.de \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.