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=-11.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_2 autolearn=unavailable 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 A2362C433E1 for ; Fri, 21 Aug 2020 08:57:23 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 6D4F8207DF for ; Fri, 21 Aug 2020 08:57:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="tH4F9lX2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6D4F8207DF Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=Huawei.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To:Message-ID: Subject:To:From:Date:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=ec0UTc+HdbO7EZTqqXUbfAhtWXA29A771IYGCyiHmSI=; b=tH4F9lX2x5ub9yc6jS1so1U8P IwmgzZUhfjP11nT2Fq2QOUjrcAC42uy80kPmwboiIKJ+kNLQ1Xc+OXkFXakY7j1oH/GN9LOibO4Aa 4sloRbyKCHfRhuTUPSmVYes7E1Pyo+MTwdVZnfkglJPFyz19RWU4GtEytQuATfExG8g8lEferuwgZ 0Tm6GOZsMDddU9HbB1+FmS1+leNGQzvtRUUhA4Z7pLbN86+a0ZlV7DGtDptjInOl7i5dApilMTXhu ol2xI3hw9IMP2ATQdhblsMkIQ98YSQ9huUCFlPtFnXrZSFTaO/AcS81unnV6ntOfwLpzp2lnA9z/g bJKjovjTg==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1k92q4-0000BO-Bw; Fri, 21 Aug 2020 08:55:57 +0000 Received: from lhrrgout.huawei.com ([185.176.76.210] helo=huawei.com) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1k92q1-00009p-7u for linux-arm-kernel@lists.infradead.org; Fri, 21 Aug 2020 08:55:54 +0000 Received: from lhreml710-chm.china.huawei.com (unknown [172.18.7.107]) by Forcepoint Email with ESMTP id E386C4B18AC1B04972AA; Fri, 21 Aug 2020 09:55:48 +0100 (IST) Received: from localhost (10.52.123.86) by lhreml710-chm.china.huawei.com (10.201.108.61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1913.5; Fri, 21 Aug 2020 09:55:47 +0100 Date: Fri, 21 Aug 2020 09:54:14 +0100 From: Jonathan Cameron To: Bjorn Helgaas Subject: Re: [PATCH v9 2/6] x86: Support Generic Initiator only proximity domains Message-ID: <20200821095414.00004559@Huawei.com> In-Reply-To: <20200820222433.GA1571517@bjorn-Precision-5520> References: <20200819145111.1715026-3-Jonathan.Cameron@huawei.com> <20200820222433.GA1571517@bjorn-Precision-5520> Organization: Huawei Technologies Research and Development (UK) Ltd. X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; i686-w64-mingw32) MIME-Version: 1.0 X-Originating-IP: [10.52.123.86] X-ClientProxiedBy: lhreml701-chm.china.huawei.com (10.201.108.50) To lhreml710-chm.china.huawei.com (10.201.108.61) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200821_045553_451424_FB8144F8 X-CRM114-Status: GOOD ( 25.15 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: rafael@kernel.org, Lorenzo Pieralisi , linux-acpi@vger.kernel.org, linux-api@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, linuxarm@huawei.com, linux-mm@kvack.org, Ingo Molnar , Brice Goglin , Bjorn Helgaas , Thomas Gleixner , Dan Williams , linux-arm-kernel@lists.infradead.org, Sean V Kelley Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Thu, 20 Aug 2020 17:24:33 -0500 Bjorn Helgaas 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 > > --- > > 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 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel