From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ganapatrao Kulkarni Date: Tue, 02 Feb 2016 10:21:19 +0000 Subject: [PATCH v10 4/8] arm64, numa : Enable numa dt for arm64 platforms. Message-Id: <1454407763-1017-5-git-send-email-gkulkarni@caviumnetworks.com> List-Id: References: <1454407763-1017-1-git-send-email-gkulkarni@caviumnetworks.com> In-Reply-To: <1454407763-1017-1-git-send-email-gkulkarni-M3mlKVOIwJVv6pq1l3V1OdBPR1lH4CV8@public.gmane.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-ia64-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-metag-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-s390-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Will.Deacon-5wv7dgnIgG8@public.gmane.org, catalin.marinas-5wv7dgnIgG8@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, mark.rutland-5wv7dgnIgG8@public.gmane.org, grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, leif.lindholm-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, rfranz-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org, ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, msalter-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, steve.capper-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, hanjun.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, al.stone-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, pawel.moll-5wv7dgnIgG8@public.gmane.org, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org, galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org, lenb-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, marc.zyngier-5wv7dgnIgG8@public.gmane.org, lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org, bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, tony.luck-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, fenghua.yu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, james.hog Cc: gpkulkarni-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Adding numa dt binding support for arm64 based platforms. Reviewed-by: Robert Richter Signed-off-by: Ganapatrao Kulkarni --- arch/arm64/include/asm/numa.h | 2 ++ arch/arm64/kernel/smp.c | 2 ++ arch/arm64/mm/numa.c | 17 +++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/arch/arm64/include/asm/numa.h b/arch/arm64/include/asm/numa.h index 574267f..e9b4f29 100644 --- a/arch/arm64/include/asm/numa.h +++ b/arch/arm64/include/asm/numa.h @@ -31,12 +31,14 @@ void __init arm64_numa_init(void); int __init numa_add_memblk(int nodeid, u64 start, u64 end); void __init numa_set_distance(int from, int to, int distance); void __init numa_free_distance(void); +void __init early_map_cpu_to_node(unsigned int cpu, int nid); void numa_store_cpu_info(unsigned int cpu); #else /* CONFIG_NUMA */ static inline void numa_store_cpu_info(unsigned int cpu) { } static inline void arm64_numa_init(void) { } +static inline void early_map_cpu_to_node(unsigned int cpu, int nid) { } #endif /* CONFIG_NUMA */ diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index d6e7d6a..46c45c8 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -520,6 +520,8 @@ static void __init of_parse_and_init_cpus(void) pr_debug("cpu logical map 0x%llx\n", hwid); cpu_logical_map(cpu_count) = hwid; + + early_map_cpu_to_node(cpu_count, of_node_to_nid(dn)); next: cpu_count++; } diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c index 60f19a2..7aad5d4 100644 --- a/arch/arm64/mm/numa.c +++ b/arch/arm64/mm/numa.c @@ -20,6 +20,7 @@ #include #include #include +#include struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; EXPORT_SYMBOL(node_data); @@ -122,6 +123,15 @@ void numa_store_cpu_info(unsigned int cpu) map_cpu_to_node(cpu, numa_off ? 0 : cpu_to_node_map[cpu]); } +void __init early_map_cpu_to_node(unsigned int cpu, int nid) +{ + /* fallback to node 0 */ + if (nid < 0 || nid >= MAX_NUMNODES) + nid = 0; + + cpu_to_node_map[cpu] = nid; +} + /** * numa_add_memblk - Set node id to memblk * @nid: NUMA node ID of the new memblk @@ -383,5 +393,12 @@ static int __init dummy_numa_init(void) */ void __init arm64_numa_init(void) { + if (!numa_off) { +#ifdef CONFIG_OF_NUMA + if (!numa_init(of_numa_init)) + return; +#endif + } + numa_init(dummy_numa_init); } -- 1.8.1.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754464AbcBBKLR (ORCPT ); Tue, 2 Feb 2016 05:11:17 -0500 Received: from mail-bn1bon0073.outbound.protection.outlook.com ([157.56.111.73]:11632 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754371AbcBBKLL (ORCPT ); Tue, 2 Feb 2016 05:11:11 -0500 Authentication-Results: lists.infradead.org; dkim=none (message not signed) header.d=none;lists.infradead.org; dmarc=none action=none header.from=caviumnetworks.com; From: Ganapatrao Kulkarni To: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , CC: Subject: [PATCH v10 4/8] arm64, numa : Enable numa dt for arm64 platforms. Date: Tue, 2 Feb 2016 15:39:19 +0530 Message-ID: <1454407763-1017-5-git-send-email-gkulkarni@caviumnetworks.com> X-Mailer: git-send-email 1.8.1.4 In-Reply-To: <1454407763-1017-1-git-send-email-gkulkarni@caviumnetworks.com> References: <1454407763-1017-1-git-send-email-gkulkarni@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BM1PR01CA0067.INDPRD01.PROD.OUTLOOK.COM (25.163.199.39) To CY1PR0701MB1696.namprd07.prod.outlook.com (25.163.20.30) X-Microsoft-Exchange-Diagnostics: 1;CY1PR0701MB1696;2:6cklu/5QrBeP9DgqQ4W3gAv1ZOTn9jlNwRhC24AEQ63hPQnM0DG5gCGlHwvr/XX4L5ll/I0dp8yrlaG70V3HigFUf5JZ4kkx/YLCQpN9jkM413+Y1dhd+75zz07iHTDsyQ7pSHCE16OA7wuosINJGA==;3:oxNFxQDGt8jWoav6vBRxvllYLWtg6rjq3fSLZdm0u71FawRdWm3nWY/4BxEBrWkmNOSXbL53wt+PQS6VFrwbqNBmbTjeG1V5DnKOwqgEjwU2J342xsYd7TtlM1E1W6a5;25:sxY7rT9uZnrj5hyBvirTrFhCMa3H5D0RrL4L9LmBRN4IIUcXwg+6vbRcLD8VWBFiO8/EIacvGGY/zZzgfBKKgxWO2Txzd6d2XZPkhBbWAmc75xTsLNQEDhs9KNabhKKSdL3A6etaiMB6syuPyjL9kZRrDRRaVjIX4mqSNvicwo/rRO+wIs5HdAeOXwhte1hW4nqpkEgEEhH9C10raC7uBWSV96gsIUaPkfg0ORG91WdIT1p945mj2gomsW15mE2A X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0701MB1696; X-MS-Office365-Filtering-Correlation-Id: bd90a0a8-23af-4eea-e797-08d32bb92acb X-Microsoft-Exchange-Diagnostics: 1;CY1PR0701MB1696;20:Y06yqgQ3POqRHJdmHceLWoGK+IVNgPDj23LHFb6dtCArNZFuBBx6OdfPtsKnYPWeiWdNo5tpWybcyk5u9v/oY9YYjssIooar500BfKn2xU275rfWp8m5Q/w7/rD8adzk/tTQ++mKu0NpkPiH96M6w5EW8VPpxemz8N4CK/oHRtG7UvUf0DA827/HHsuxXDIHazeYItREZAuUpjk3L7nOahLTuC4vqzlcx1jjNfjpvmtYlplnQtrc3JV30wHgsob1MUBu8lsc521vx8CfIgE+iLrgdi3MewTUoDpZu1D7JqRMj3cMzyWbfZNbTHhDsK3to1TpOInRSX5TYl6W1jTKgwqxI9sa86lZfa2lv/zby9Fk3Ug/xfUU7tww9BI+h+yEcnd7eUTSriP8Y/lDZwMixiHh6QSF3NmOuaeBp0HIxovqAXE05rzCUxXMBaG5MB/KHj3GtjWpFZwpE5Vkvfj6os2JEKqD0yueW2SzT0sd3ypW9EXFmvanD6qoMty717P3gZPi3z5aZuw/ycZmWrkiEeYvA5bhHaraH4WO37ifV3Pu2884WnZOdDzmRnNKS2wAvtgK8VDyOKEnoo2tXgAdWILTqBoXj0bUt84sHI1slV0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:CY1PR0701MB1696;BCL:0;PCL:0;RULEID:;SRVR:CY1PR0701MB1696; X-Microsoft-Exchange-Diagnostics: 1;CY1PR0701MB1696;4:NNgUJ9kjIE6NTl5feKkEGKYOekDzvmm+cwjVe4XwSkl0nhfFyBmIN+QxzdAE8eR6JQ/luobVIfcjh9o+Xs/VpjUy7E0Im9g2xx91gba+2OHj+qOBio389VzzTyFbzV4CKkQ3aFNOK/TOGol+5rqOb4ee1q0BNqa2FZoETcpjFA2zS3ArYN1LA4pKW/i8KukdzvJEWWOF7plLYkPUMOhxoKR/DxrrqLsjpif+cCbKBNjPnnjR6EKJ9gyAudvuXQSiSrk+3VR64lN+4iT75O3J0Ebgw0LdIqVSVi7O/xlRYcl2FS4C5i4EoDS5erEpdbFq+louVUp0gjp91DnOhFxa71DN/BhWYKZ1MTFHtjNgJDIR++i/B6S1jeHCwtzUNzxJ X-Forefront-PRVS: 084080FC15 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(87976001)(229853001)(2950100001)(47776003)(189998001)(66066001)(76176999)(42186005)(50226001)(19580405001)(77096005)(5001770100001)(50986999)(4001450100002)(5004730100002)(92566002)(36756003)(586003)(19580395003)(40100003)(5008740100001)(5009440100003)(6116002)(1096002)(3846002)(3470700001)(5003940100001)(2906002)(50466002)(4326007)(33646002)(2441003)(122386002)(48376002)(2201001)(7099028)(921003)(1121003)(2101003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR0701MB1696;H:mypc.cavium.com.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR0701MB1696;23:a0RIomzynmE55rOdO6sjhIY1YXoTpn4fi25fIpW?= =?us-ascii?Q?Pqo15hrQJ9MLCTpP7cxBfS2ZOcVXn4srjP9lCv/e/YGSafipovSRLuQe/C9S?= =?us-ascii?Q?eEQ2GDeGuW74/uTcgypvJcSTO+blMzJlM30UBjNzLxj80jrCoqkB1rdQ65wi?= =?us-ascii?Q?ePcWfHRnmuwaIlJ5ri1RL0nT4cWlACzfGAcuOBPZtQoBSX0nRBU1ZEQGEHU9?= =?us-ascii?Q?6Pcs9tmtgCXOrhs674l2vu/0u7aNWa4iSK/dolHPWidL0LB+OXTdfGyWQ5Bn?= =?us-ascii?Q?llWqFgJJ5+M7Ltp2ktZL59LEHxoy/2L3llCWBsE/Rit4WwMzZdG39ttvG7wL?= =?us-ascii?Q?aiJfK3zBiDm88jxs+lV96TfH8+uGAMZSeiyylY2pwZ+UzX6e24pz/7hixABM?= =?us-ascii?Q?Bzexx8MmJ1xIftzBsWfGugoPOGZsIfgibpJ91Jygqj0f/gqSVePMtPhNWL69?= =?us-ascii?Q?/CdRbgaqlxIAq8E4x963x8yJDWYaFjR15ldyhH6E9teTQ58GOCqD5wr1I/VO?= =?us-ascii?Q?XljPYl6uOHgSCoGcM9q/7CY2l/JijYmlR9FLA7gzhI9Vhaui/foL4VW5ANFU?= =?us-ascii?Q?Fs7LUaS/Z6EPMcVwl6CPdxTsuMo8Q67n2gjDUGGzCo0DpQbPxbL1fpBYvj51?= =?us-ascii?Q?f8HaYsFtlJjOaocqMrL3HrB1RuB08QKw+3wXcznfg3/2bin69fgjt5fmZvgu?= =?us-ascii?Q?R+mU6K84mu7+SyzXZSPeoNQe2Fr3ijq7mAoPMIHyiXoTYgHkvNGC0YnjLw+S?= =?us-ascii?Q?WQ5yb/jD5j6L26XSwj38NPxDTAQN/NWwK9ulBXRYgXETuKtFXCTpdTHpJOlQ?= =?us-ascii?Q?Bz3zqHGspioXsLwBJWkARnbjusYsWzeCpB0Rw8GyZXZqxFxxCg5WZvzW+Dyy?= =?us-ascii?Q?tVOjsojDB/HTmy4b+ZJm+8Swokwyx7DcGfxCxTUW5oGlgwh1NIPbV+/O5GgP?= =?us-ascii?Q?9dXd4Ob0I02DyWA4ZiGq0oD/lEXYP+tlXce6vkuUg2ZvoCfjPET5BTpASm92?= =?us-ascii?Q?quUL0yMueqqFZZWpfh3ha5Wl3nGPMbzb4i0xTyzB5NptI/oR72fwSvuvszXX?= =?us-ascii?Q?ptJ360kERFp1aNzVmjNhfCrYJWhLs?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR0701MB1696;5:VsrDIimL1WV8iyUvq6AKyNUxESnvPSYfTJ6ruEp9OGgEaLPyYD0IUkxgTmZq1n8m8i0BSvaRxMTTRJZQ1y2+zHbM0FpgMoEYIEjJ5kkBAdpC52y+sD9GdN/OUWdOYebVOOg1UdD0k8+B48YOGMiYYg==;24:NhzRSqqa9t3p7bwzZhzYdANvYg7duVlxkBMtfFDrbUNt2tgGoMRc7NgT9g1R2zLKFxjGyiPLCw00n3J5NwEltGMeiJffr0mJKEK1r1M8bGA= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2016 10:10:55.4129 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1696 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Adding numa dt binding support for arm64 based platforms. Reviewed-by: Robert Richter Signed-off-by: Ganapatrao Kulkarni --- arch/arm64/include/asm/numa.h | 2 ++ arch/arm64/kernel/smp.c | 2 ++ arch/arm64/mm/numa.c | 17 +++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/arch/arm64/include/asm/numa.h b/arch/arm64/include/asm/numa.h index 574267f..e9b4f29 100644 --- a/arch/arm64/include/asm/numa.h +++ b/arch/arm64/include/asm/numa.h @@ -31,12 +31,14 @@ void __init arm64_numa_init(void); int __init numa_add_memblk(int nodeid, u64 start, u64 end); void __init numa_set_distance(int from, int to, int distance); void __init numa_free_distance(void); +void __init early_map_cpu_to_node(unsigned int cpu, int nid); void numa_store_cpu_info(unsigned int cpu); #else /* CONFIG_NUMA */ static inline void numa_store_cpu_info(unsigned int cpu) { } static inline void arm64_numa_init(void) { } +static inline void early_map_cpu_to_node(unsigned int cpu, int nid) { } #endif /* CONFIG_NUMA */ diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index d6e7d6a..46c45c8 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -520,6 +520,8 @@ static void __init of_parse_and_init_cpus(void) pr_debug("cpu logical map 0x%llx\n", hwid); cpu_logical_map(cpu_count) = hwid; + + early_map_cpu_to_node(cpu_count, of_node_to_nid(dn)); next: cpu_count++; } diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c index 60f19a2..7aad5d4 100644 --- a/arch/arm64/mm/numa.c +++ b/arch/arm64/mm/numa.c @@ -20,6 +20,7 @@ #include #include #include +#include struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; EXPORT_SYMBOL(node_data); @@ -122,6 +123,15 @@ void numa_store_cpu_info(unsigned int cpu) map_cpu_to_node(cpu, numa_off ? 0 : cpu_to_node_map[cpu]); } +void __init early_map_cpu_to_node(unsigned int cpu, int nid) +{ + /* fallback to node 0 */ + if (nid < 0 || nid >= MAX_NUMNODES) + nid = 0; + + cpu_to_node_map[cpu] = nid; +} + /** * numa_add_memblk - Set node id to memblk * @nid: NUMA node ID of the new memblk @@ -383,5 +393,12 @@ static int __init dummy_numa_init(void) */ void __init arm64_numa_init(void) { + if (!numa_off) { +#ifdef CONFIG_OF_NUMA + if (!numa_init(of_numa_init)) + return; +#endif + } + numa_init(dummy_numa_init); } -- 1.8.1.4 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Ganapatrao Kulkarni Subject: [PATCH v10 4/8] arm64, numa : Enable numa dt for arm64 platforms. Date: Tue, 2 Feb 2016 15:39:19 +0530 Message-ID: <1454407763-1017-5-git-send-email-gkulkarni@caviumnetworks.com> In-Reply-To: <1454407763-1017-1-git-send-email-gkulkarni@caviumnetworks.com> References: <1454407763-1017-1-git-send-email-gkulkarni@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-arch-owner@vger.kernel.org Message-ID: <20160202100919.9i_5gA2o9B2RSZyxdCAonsqIBLT0T2I8qQpcBWVpGLs@z> List-Archive: List-Post: To: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-ia64@vger.kernel.org, linux-metag@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-s390@vger.kernel.org, linux-sh@vger.kernel.org, linux-arch@vger.kernel.org, Will.Deacon@arm.com, catalin.marinas@arm.com, robh+dt@kernel.org, mark.rutland@arm.com, grant.likely@linaro.org, leif.lindholm@linaro.org, rfranz@cavium.com, ard.biesheuvel@linaro.org, msalter@redhat.com, steve.capper@linaro.org, hanjun.guo@linaro.org, al.stone@linaro.org, arnd@arndb.de, pawel.moll@arm.com, ijc+devicetree@hellion.org.uk, galak@codeaurora.org, rjw@rjwysocki.net, lenb@kernel.org, marc.zyngier@arm.com, lorenzo.pieralisi@arm.com, bhelgaas@google.com, tony.luck@intel.com, fenghua.yu@intel.com, james.hogan@imgtec.com, benh@kernel.crashing.org, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, jonathan@jonmasters.org, rrichter@cavium.com, Prasun.Kapoor@caviumnetworks.com Cc: gpkulkarni@gmail.com List-ID: Adding numa dt binding support for arm64 based platforms. Reviewed-by: Robert Richter Signed-off-by: Ganapatrao Kulkarni --- arch/arm64/include/asm/numa.h | 2 ++ arch/arm64/kernel/smp.c | 2 ++ arch/arm64/mm/numa.c | 17 +++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/arch/arm64/include/asm/numa.h b/arch/arm64/include/asm/numa.h index 574267f..e9b4f29 100644 --- a/arch/arm64/include/asm/numa.h +++ b/arch/arm64/include/asm/numa.h @@ -31,12 +31,14 @@ void __init arm64_numa_init(void); int __init numa_add_memblk(int nodeid, u64 start, u64 end); void __init numa_set_distance(int from, int to, int distance); void __init numa_free_distance(void); +void __init early_map_cpu_to_node(unsigned int cpu, int nid); void numa_store_cpu_info(unsigned int cpu); #else /* CONFIG_NUMA */ static inline void numa_store_cpu_info(unsigned int cpu) { } static inline void arm64_numa_init(void) { } +static inline void early_map_cpu_to_node(unsigned int cpu, int nid) { } #endif /* CONFIG_NUMA */ diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index d6e7d6a..46c45c8 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -520,6 +520,8 @@ static void __init of_parse_and_init_cpus(void) pr_debug("cpu logical map 0x%llx\n", hwid); cpu_logical_map(cpu_count) = hwid; + + early_map_cpu_to_node(cpu_count, of_node_to_nid(dn)); next: cpu_count++; } diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c index 60f19a2..7aad5d4 100644 --- a/arch/arm64/mm/numa.c +++ b/arch/arm64/mm/numa.c @@ -20,6 +20,7 @@ #include #include #include +#include struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; EXPORT_SYMBOL(node_data); @@ -122,6 +123,15 @@ void numa_store_cpu_info(unsigned int cpu) map_cpu_to_node(cpu, numa_off ? 0 : cpu_to_node_map[cpu]); } +void __init early_map_cpu_to_node(unsigned int cpu, int nid) +{ + /* fallback to node 0 */ + if (nid < 0 || nid >= MAX_NUMNODES) + nid = 0; + + cpu_to_node_map[cpu] = nid; +} + /** * numa_add_memblk - Set node id to memblk * @nid: NUMA node ID of the new memblk @@ -383,5 +393,12 @@ static int __init dummy_numa_init(void) */ void __init arm64_numa_init(void) { + if (!numa_off) { +#ifdef CONFIG_OF_NUMA + if (!numa_init(of_numa_init)) + return; +#endif + } + numa_init(dummy_numa_init); } -- 1.8.1.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ganapatrao Kulkarni Subject: [PATCH v10 4/8] arm64, numa : Enable numa dt for arm64 platforms. Date: Tue, 2 Feb 2016 15:39:19 +0530 Message-ID: <1454407763-1017-5-git-send-email-gkulkarni@caviumnetworks.com> References: <1454407763-1017-1-git-send-email-gkulkarni@caviumnetworks.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: In-Reply-To: <1454407763-1017-1-git-send-email-gkulkarni-M3mlKVOIwJVv6pq1l3V1OdBPR1lH4CV8@public.gmane.org> Sender: linux-metag-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-pci-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-ia64-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-metag-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-s390-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-sh-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Will.Deacon-5wv7dgnIgG8@public.gmane.org, catalin.marinas-5wv7dgnIgG8@public.gmane.org, robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, mark.rutland-5wv7dgnIgG8@public.gmane.org, grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, leif.lindholm-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, rfranz-YGCgFSpz5w/QT0dZR+AlfA@public.gmane.org, ard.biesheuvel-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, msalter-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org, steve.capper-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, hanjun.guo-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, al.stone-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, pawel.moll-5wv7dgnIgG8@public.gmane.org, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org, galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, rjw-LthD3rsA81gm4RdzfppkhA@public.gmane.org, lenb-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org, marc.zyngier-5wv7dgnIgG8@public.gmane.org, lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org, bhelgaas-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, tony.luck-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, fenghua.yu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, james.hog Cc: gpkulkarni-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org List-Id: devicetree@vger.kernel.org Adding numa dt binding support for arm64 based platforms. Reviewed-by: Robert Richter Signed-off-by: Ganapatrao Kulkarni --- arch/arm64/include/asm/numa.h | 2 ++ arch/arm64/kernel/smp.c | 2 ++ arch/arm64/mm/numa.c | 17 +++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/arch/arm64/include/asm/numa.h b/arch/arm64/include/asm/numa.h index 574267f..e9b4f29 100644 --- a/arch/arm64/include/asm/numa.h +++ b/arch/arm64/include/asm/numa.h @@ -31,12 +31,14 @@ void __init arm64_numa_init(void); int __init numa_add_memblk(int nodeid, u64 start, u64 end); void __init numa_set_distance(int from, int to, int distance); void __init numa_free_distance(void); +void __init early_map_cpu_to_node(unsigned int cpu, int nid); void numa_store_cpu_info(unsigned int cpu); #else /* CONFIG_NUMA */ static inline void numa_store_cpu_info(unsigned int cpu) { } static inline void arm64_numa_init(void) { } +static inline void early_map_cpu_to_node(unsigned int cpu, int nid) { } #endif /* CONFIG_NUMA */ diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index d6e7d6a..46c45c8 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -520,6 +520,8 @@ static void __init of_parse_and_init_cpus(void) pr_debug("cpu logical map 0x%llx\n", hwid); cpu_logical_map(cpu_count) = hwid; + + early_map_cpu_to_node(cpu_count, of_node_to_nid(dn)); next: cpu_count++; } diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c index 60f19a2..7aad5d4 100644 --- a/arch/arm64/mm/numa.c +++ b/arch/arm64/mm/numa.c @@ -20,6 +20,7 @@ #include #include #include +#include struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; EXPORT_SYMBOL(node_data); @@ -122,6 +123,15 @@ void numa_store_cpu_info(unsigned int cpu) map_cpu_to_node(cpu, numa_off ? 0 : cpu_to_node_map[cpu]); } +void __init early_map_cpu_to_node(unsigned int cpu, int nid) +{ + /* fallback to node 0 */ + if (nid < 0 || nid >= MAX_NUMNODES) + nid = 0; + + cpu_to_node_map[cpu] = nid; +} + /** * numa_add_memblk - Set node id to memblk * @nid: NUMA node ID of the new memblk @@ -383,5 +393,12 @@ static int __init dummy_numa_init(void) */ void __init arm64_numa_init(void) { + if (!numa_off) { +#ifdef CONFIG_OF_NUMA + if (!numa_init(of_numa_init)) + return; +#endif + } + numa_init(dummy_numa_init); } -- 1.8.1.4 From mboxrd@z Thu Jan 1 00:00:00 1970 From: gkulkarni@caviumnetworks.com (Ganapatrao Kulkarni) Date: Tue, 2 Feb 2016 15:39:19 +0530 Subject: [PATCH v10 4/8] arm64, numa : Enable numa dt for arm64 platforms. In-Reply-To: <1454407763-1017-1-git-send-email-gkulkarni@caviumnetworks.com> References: <1454407763-1017-1-git-send-email-gkulkarni@caviumnetworks.com> Message-ID: <1454407763-1017-5-git-send-email-gkulkarni@caviumnetworks.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Adding numa dt binding support for arm64 based platforms. Reviewed-by: Robert Richter Signed-off-by: Ganapatrao Kulkarni --- arch/arm64/include/asm/numa.h | 2 ++ arch/arm64/kernel/smp.c | 2 ++ arch/arm64/mm/numa.c | 17 +++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/arch/arm64/include/asm/numa.h b/arch/arm64/include/asm/numa.h index 574267f..e9b4f29 100644 --- a/arch/arm64/include/asm/numa.h +++ b/arch/arm64/include/asm/numa.h @@ -31,12 +31,14 @@ void __init arm64_numa_init(void); int __init numa_add_memblk(int nodeid, u64 start, u64 end); void __init numa_set_distance(int from, int to, int distance); void __init numa_free_distance(void); +void __init early_map_cpu_to_node(unsigned int cpu, int nid); void numa_store_cpu_info(unsigned int cpu); #else /* CONFIG_NUMA */ static inline void numa_store_cpu_info(unsigned int cpu) { } static inline void arm64_numa_init(void) { } +static inline void early_map_cpu_to_node(unsigned int cpu, int nid) { } #endif /* CONFIG_NUMA */ diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c index d6e7d6a..46c45c8 100644 --- a/arch/arm64/kernel/smp.c +++ b/arch/arm64/kernel/smp.c @@ -520,6 +520,8 @@ static void __init of_parse_and_init_cpus(void) pr_debug("cpu logical map 0x%llx\n", hwid); cpu_logical_map(cpu_count) = hwid; + + early_map_cpu_to_node(cpu_count, of_node_to_nid(dn)); next: cpu_count++; } diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c index 60f19a2..7aad5d4 100644 --- a/arch/arm64/mm/numa.c +++ b/arch/arm64/mm/numa.c @@ -20,6 +20,7 @@ #include #include #include +#include struct pglist_data *node_data[MAX_NUMNODES] __read_mostly; EXPORT_SYMBOL(node_data); @@ -122,6 +123,15 @@ void numa_store_cpu_info(unsigned int cpu) map_cpu_to_node(cpu, numa_off ? 0 : cpu_to_node_map[cpu]); } +void __init early_map_cpu_to_node(unsigned int cpu, int nid) +{ + /* fallback to node 0 */ + if (nid < 0 || nid >= MAX_NUMNODES) + nid = 0; + + cpu_to_node_map[cpu] = nid; +} + /** * numa_add_memblk - Set node id to memblk * @nid: NUMA node ID of the new memblk @@ -383,5 +393,12 @@ static int __init dummy_numa_init(void) */ void __init arm64_numa_init(void) { + if (!numa_off) { +#ifdef CONFIG_OF_NUMA + if (!numa_init(of_numa_init)) + return; +#endif + } + numa_init(dummy_numa_init); } -- 1.8.1.4