From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: <linux-mm@kvack.org>, <linux-acpi@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>, <x86@kernel.org>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Bjorn Helgaas <bhelgaas@google.com>, <rafael@kernel.org>,
<linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>, <linuxarm@huawei.com>,
Dan Williams <dan.j.williams@intel.com>,
"Brice Goglin" <Brice.Goglin@inria.fr>,
Sean V Kelley <sean.v.kelley@linux.intel.com>,
<linux-api@vger.kernel.org>
Subject: Re: [PATCH v9 2/6] x86: Support Generic Initiator only proximity domains
Date: Fri, 21 Aug 2020 09:54:14 +0100 [thread overview]
Message-ID: <20200821095414.00004559@Huawei.com> (raw)
In-Reply-To: <20200820222433.GA1571517@bjorn-Precision-5520>
On Thu, 20 Aug 2020 17:24:33 -0500
Bjorn Helgaas <helgaas@kernel.org> wrote:
> On Wed, Aug 19, 2020 at 10:51:07PM +0800, Jonathan Cameron wrote:
> > In common with memoryless domains we only register GI domains
> > if the proximity node is not online. If a domain is already
> > a memory containing domain, or a memoryless domain there is
> > nothing to do just because it also contains a Generic Initiator.
> >
> > Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> > ---
> > arch/x86/include/asm/numa.h | 2 ++
> > arch/x86/kernel/setup.c | 1 +
> > arch/x86/mm/numa.c | 14 ++++++++++++++
> > 3 files changed, 17 insertions(+)
> >
> > diff --git a/arch/x86/include/asm/numa.h b/arch/x86/include/asm/numa.h
> > index bbfde3d2662f..f631467272a3 100644
> > --- a/arch/x86/include/asm/numa.h
> > +++ b/arch/x86/include/asm/numa.h
> > @@ -62,12 +62,14 @@ extern void numa_clear_node(int cpu);
> > extern void __init init_cpu_to_node(void);
> > extern void numa_add_cpu(int cpu);
> > extern void numa_remove_cpu(int cpu);
> > +extern void init_gi_nodes(void);
> > #else /* CONFIG_NUMA */
> > static inline void numa_set_node(int cpu, int node) { }
> > static inline void numa_clear_node(int cpu) { }
> > static inline void init_cpu_to_node(void) { }
> > static inline void numa_add_cpu(int cpu) { }
> > static inline void numa_remove_cpu(int cpu) { }
> > +static inline void init_gi_nodes(void) { }
> > #endif /* CONFIG_NUMA */
> >
> > #ifdef CONFIG_DEBUG_PER_CPU_MAPS
> > diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
> > index 3511736fbc74..9062c146f03a 100644
> > --- a/arch/x86/kernel/setup.c
> > +++ b/arch/x86/kernel/setup.c
> > @@ -1218,6 +1218,7 @@ void __init setup_arch(char **cmdline_p)
> > prefill_possible_map();
> >
> > init_cpu_to_node();
> > + init_gi_nodes();
> >
> > io_apic_init_mappings();
> >
> > diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
> > index aa76ec2d359b..fc630dc6764e 100644
> > --- a/arch/x86/mm/numa.c
> > +++ b/arch/x86/mm/numa.c
> > @@ -747,6 +747,20 @@ static void __init init_memory_less_node(int nid)
> > */
> > }
> >
> > +/*
> > + * Generic Initiator Nodes may have neither CPU nor Memory.
> > + * At this stage if either of the others were present we would
> > + * already be online.
> > + */
> > +void __init init_gi_nodes(void)
> > +{
> > + int nid;
> > +
> > + for_each_node_state(nid, N_GENERIC_INITIATOR)
> > + if (!node_online(nid))
> > + init_memory_less_node(nid);
> > +}
>
> This doesn't *look* very x86-specific, and apparently you don't need
> any arm64-specific changes? Too bad this can't be unified a little
> bit to remove the arch #ifdefs completely.
The only ifdefs in the set aren't actually about this (which is entirely
contained in arch code) they are to avoid ia64 issues as has an entirely
different implementation that I doubt anyone wants to touch!
>
> I do see that init_memory_less_node() is only implemented on x86, but
> it just seems like all this might not be inherently be arch-specific.
I absolutely agree with a long term aim to unify the numa setup code
across architectures.
The x86 code is rather more involved than what we have for arm64. On arm64,
memoryless nodes are handled in the same pass as those with memory (and
we get GI nodes for free).
There are some separate patches under discussion that take a few steps
in that direction.
https://lore.kernel.org/linux-arm-kernel/20200814214725.28818-3-atish.patra@wdc.com/T/
https://patchwork.kernel.org/patch/11651437/ (this one is mostly by coincidence rather
than intent!)
Jonathan
next prev parent reply other threads:[~2020-08-21 8:55 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-19 14:51 [PATCH v9 0/6] ACPI: Support Generic Initiator " Jonathan Cameron
2020-08-19 14:51 ` [PATCH v9 1/6] ACPI: Support Generic Initiator only domains Jonathan Cameron
2020-08-19 14:51 ` [PATCH v9 2/6] x86: Support Generic Initiator only proximity domains Jonathan Cameron
2020-08-20 22:24 ` Bjorn Helgaas
2020-08-21 8:54 ` Jonathan Cameron [this message]
2020-08-19 14:51 ` [PATCH v9 3/6] ACPI: Let ACPI know we support Generic Initiator Affinity Structures Jonathan Cameron
2020-08-19 14:51 ` [PATCH v9 4/6] ACPI: HMAT: Fix handling of changes from ACPI 6.2 to ACPI 6.3 Jonathan Cameron
2020-08-20 22:21 ` Bjorn Helgaas
2020-08-21 8:42 ` Jonathan Cameron
2020-08-21 12:13 ` Bjorn Helgaas
2020-08-21 12:59 ` Jonathan Cameron
2020-08-21 13:46 ` Bjorn Helgaas
2020-08-21 14:59 ` Bjorn Helgaas
2020-08-21 16:30 ` Jonathan Cameron
2020-08-21 16:37 ` Jonathan Cameron
2020-08-21 16:54 ` Bjorn Helgaas
2020-08-19 14:51 ` [PATCH v9 5/6] node: Add access1 class to represent CPU to memory characteristics Jonathan Cameron
2020-08-19 14:51 ` [PATCH v9 6/6] docs: mm: numaperf.rst Add brief description for access class 1 Jonathan Cameron
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=20200821095414.00004559@Huawei.com \
--to=jonathan.cameron@huawei.com \
--cc=Brice.Goglin@inria.fr \
--cc=bhelgaas@google.com \
--cc=dan.j.williams@intel.com \
--cc=helgaas@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxarm@huawei.com \
--cc=lorenzo.pieralisi@arm.com \
--cc=mingo@redhat.com \
--cc=rafael@kernel.org \
--cc=sean.v.kelley@linux.intel.com \
--cc=tglx@linutronix.de \
--cc=x86@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox